AATKit SDK plugin for Ionic
npm install @addapptr/aatkit-ionic-pluginAATKit SDK plugin for Ionic
``bash`
npm install @addapptr/aatkit-ionic-plugin
npx cap sync
* initialize(...)
* reconfigure(...)
* setCollapsibleBannerOptions(...)
* setLogLevel(...)
* setIsChildDirected(...)
* configureDebugScreen(...)
* enableDebugScreen()
* disableDebugScreen()
* showConsentDialogIfNeeded()
* showConsentDialogIfNeededOrRejected(...)
* editConsent()
* reloadConsent()
* createPlacement(...)
* createRewardedVideoPlacement(...)
* createAppOpenAdPlacement(...)
* reloadPlacement(...)
* reloadPlacementForced(...)
* startPlacementAutoReload(...)
* stopPlacementAutoReload(...)
* showPlacement(...)
* addPlacementToView(...)
* removePlacementFromView(...)
* setPlacementAlignment(...)
* setPlacementAlignmentWithOffset(...)
* isTablet()
* maximumBannerSizeLandscape()
* maximumBannerSizePortrait()
* fittingBannerSizesPortrait()
* fittingBannerSizesLandscape()
* setNetworkEnabled(...)
* isNetworkEnabled(...)
* setContentGravity(...)
* addAdNetworkForKeywordTargeting(...)
* removeAdNetworkForKeywordTargeting(...)
* setTargetingInfo(...)
* setTargetingInfoForPlacement(...)
* setContentTargetingUrl(...)
* setContentTargetingUrlForPlacement(...)
* setMultiContentTargetingUrlsForPlacement(...)
* setUserTargeting(...)
* hasAdForPlacement(...)
* isFrequencyCapReachedForPlacement(...)
* muteVideoAds(...)
* isConsentOptIn()
* getAdInfo(...)
* enableCreativeHistory(...)
* Interfaces
`typescript`
initialize(options: AATKitConfiguration) => Promise
Initializes the AATKit library. Should be called once during application initialization before any other calls to AATKit.
| Param | Type |
| ------------- | ------------------------------------------------------------------- |
| options | AATKitConfiguration |
--------------------
`typescript`
reconfigure(options: AATKitRuntimeConfiguration) => Promise
Update AATKit consent arguments after the AATKit is already initialized.
| Param | Type |
| ------------- | --------------------------------------------------------------------------------- |
| options | AATKitRuntimeConfiguration |
--------------------
`typescript`
setCollapsibleBannerOptions(_: { placementName: string; collapsibleBannerOptions: AATKitCollapsibleBannerOptions; }) => Promise
Allows to set collapsible banner options for given placement
| Param | Type | Description |
| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| _ | { placementName: string; collapsibleBannerOptions: AATKitCollapsibleBannerOptions; } | Contains placement name and collapsible banner options |
--------------------
`typescript`
setLogLevel(options: { level: string; }) => Promise
Allows to set log level from code.
| Param | Type | Description |
| ------------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| options | { level: string; } | Allows to set log level from code. Possible values of the level: "debug", "error", "info", "verbose", "warn" |
--------------------
`typescript`
setIsChildDirected(options: { isChildDirected: boolean; }) => Promise
Allows to set if app should be treated as child-directed.
| Param | Type | Description |
| ------------- | ------------------------------------------ | ----------------------------------------------------------------- |
| options | { isChildDirected: boolean; } | isChildDirected – True if app is child directed, false otherwise. |
--------------------
`typescript`
configureDebugScreen(configuration: AATKitDebugScreenConfiguration) => Promise
Sets debug screen configuration.
| Param | Type |
| ------------------- | ----------------------------------------------------------------------------------------- |
| configuration | AATKitDebugScreenConfiguration |
--------------------
`typescript`
enableDebugScreen() => Promise
Enables debug screen that will show after shaking the device. It is already enabled by default.
--------------------
`typescript`
disableDebugScreen() => Promise
Disables the debug screen appearing after shaking the device. It is enabled by default.
--------------------
`typescript`
showConsentDialogIfNeeded() => Promise
Presents the consent screen only if it is required by the used CMP (for example if no user consent has been set yet).
It is advised to always call this method when the app starts.
--------------------
`typescript`
showConsentDialogIfNeededOrRejected(options: { daysAgo: number; }) => Promise
Presents the consent screen if it is required by the used CMP (i.e. no user consent has been set yet) or the user has rejected the consent.
| Param | Type |
| ------------- | --------------------------------- |
| options | { daysAgo: number; } |
--------------------
`typescript`
editConsent() => Promise
Presents the consent screen, allowing the user to change consent settings.
--------------------
`typescript`
reloadConsent() => Promise
Tells the CMP to reload. Does not need to be used unless some error occurs.
--------------------
`typescript`
createPlacement(options: { placementName: string; placementSize: string; }) => Promise
Creates placement with given name and size and adds it to the view.
| Param | Type | Description |
| ------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| options | { placementName: string; placementSize: string; } | object containing placement name and its size. Possible values of the size: "Fullscreen", "Banner320x53", "Banner320x50", "Banner768x90", "Banner300x250", "Banner468x60" |
--------------------
`typescript`
createRewardedVideoPlacement(options: { placementName: string; }) => Promise
Creates Rewarded Video placement with given name.
| Param | Type | Description |
| ------------- | --------------------------------------- | --------------------------------- |
| options | { placementName: string; } | object containing placement name. |
--------------------
`typescript`
createAppOpenAdPlacement(options: { placementName: string; }) => Promise
Creates a new App Open Ad with given name.
| Param | Type | Description |
| ------------- | --------------------------------------- | --------------------------------- |
| options | { placementName: string; } | object containing placement name. |
--------------------
`typescript`
reloadPlacement(options: { placementName: string; }) => Promise
Requests placement reload. Works only if automatic reloading is disabled.
| Param | Type | Description |
| ------------- | --------------------------------------- | --------------------------------- |
| options | { placementName: string; } | object containing placement name. |
Returns: Promise<boolean>
--------------------
`typescript`
reloadPlacementForced(options: { placementName: string; forced: boolean; }) => Promise
Requests placement reload. Works only if automatic reloading is disabled.
| Param | Type | Description |
| ------------- | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| options | { placementName: string; forced: boolean; } | object containing placement name and forced value – if true, the placement will be reloaded even if other requirements like the minimum display time are not met. |
Returns: Promise<boolean>
--------------------
`typescript`
startPlacementAutoReload(options: { placementName: string; }) => Promise
Enables automatic reloading of placement.
Auto-reloader will use reload time configured on gravite.net account or fallback to default 30L seconds.
| Param | Type | Description |
| ------------- | --------------------------------------- | --------------------------------- |
| options | { placementName: string; } | object containing placement name. |
--------------------
`typescript`
stopPlacementAutoReload(options: { placementName: string; }) => Promise
Disables automatic reloading of placement.
| Param | Type | Description |
| ------------- | --------------------------------------- | --------------------------------- |
| options | { placementName: string; } | object containing placement name. |
--------------------
`typescript`
showPlacement(options: { placementName: string; }) => Promise
Shows interstitial ad if ad is ready.
| Param | Type | Description |
| ------------- | --------------------------------------- | --------------------------------- |
| options | { placementName: string; } | object containing placement name. |
Returns: Promise<boolean>
--------------------
`typescript`
addPlacementToView(options: { placementName: string; }) => Promise
Adds placement to view. Works only for banner placements.
| Param | Type | Description |
| ------------- | --------------------------------------- | --------------------------------- |
| options | { placementName: string; } | object containing placement name. |
--------------------
`typescript`
removePlacementFromView(options: { placementName: string; }) => Promise
Removes placement from view. Works only for banner placements.
| Param | Type | Description |
| ------------- | --------------------------------------- | --------------------------------- |
| options | { placementName: string; } | object containing placement name. |
--------------------
`typescript`
setPlacementAlignment(options: { placementName: string; bannerAlignment: string; }) => Promise
Sets banner placement position on the screen.
| Param | Type | Description |
| ------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| options | { placementName: string; bannerAlignment: string; } | object containing placement name and banner alignment with possible values: "topLeft", "topCenter", "topRight", "bottomLeft", "bottomCenter", "bottomRight" |
--------------------
`typescript`
setPlacementAlignmentWithOffset(options: { placementName: string; bannerAlignment: string; x: number; y: number; }) => Promise
Sets banner placement position on the screen with defined offset.
| Param | Type | Description |
| ------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| options | { placementName: string; bannerAlignment: string; x: number; y: number; } | object containing: – placement name, – banner alignment with possible values: "topLeft", "topCenter", "topRight", "bottomLeft", "bottomCenter", "bottomRight" – x value of the banner offset. When this value is positive the banner is moved to the right, when it is negative the banner is moved to the left. – y value of the banner offset. When this value is positive the banner is moved to the bottom, when it is negative the banner is moved to the top. |
--------------------
`typescript`
isTablet() => Promise
Checks if AATKit recognizes given device as tablet.
Returns: Promise<boolean>
--------------------
`typescript`
maximumBannerSizeLandscape() => Promise
Returns the banner size with maximum width that will fit on a given device in portrait screen orientation.
Returns: Promise<String>
--------------------
`typescript`
maximumBannerSizePortrait() => Promise
Returns the banner size with maximum width that will fit on a given device in portrait screen orientation.
Returns: Promise<String>
--------------------
`typescript`
fittingBannerSizesPortrait() => Promise
Returns the list of baner sizes that will fit on a given device in portrait screen orientation.
Returns: Promise<string[]>
--------------------
`typescript`
fittingBannerSizesLandscape() => Promise
Returns the list of [BannerSize] that will fit on a given device in landscape screen orientation.
Returns: Promise<string[]>
--------------------
`typescript`
setNetworkEnabled(options: { network: string; enabled: boolean; }) => Promise
Allows to enable or disable selected ad networks. By default all networks are enabled
| Param | Type | Description |
| ------------- | --------------------------------------------------- | --------------------------------------------------------------------------- |
| options | { network: string; enabled: boolean; } | Contains network name and enabled value – True to enable, false to disable. |
--------------------
`typescript`
isNetworkEnabled(options: { network: string; }) => Promise
Returns true if ad network is enabled, false otherwise.
| Param | Type | Description |
| ------------- | --------------------------------- | ---------------------- |
| options | { network: string; } | Contains network name. |
Returns: Promise<boolean>
--------------------
`typescript`
setContentGravity(options: { placementName: string; gravity: string; }) => Promise
Sets gravity for ads that don't fill entire placement area.
| Param | Type | Description |
| ------------- | -------------------------------------------------------- | ------------------------------------------------------------------------- |
| options | { placementName: string; gravity: string; } | Contains placement name and gravity value of "top", "bottom" or "center". |
--------------------
`typescript`
addAdNetworkForKeywordTargeting(options: { network: string; }) => Promise
Adds an ad network to the list of ad networks that receive targeting keywords (if any set).
If no ad networks are added, any set keywords will be delivered to all ad networks supporting keyword targeting.
| Param | Type | Description |
| ------------- | --------------------------------- | ---------------------- |
| options | { network: string; } | Contains network name. |
--------------------
`typescript`
removeAdNetworkForKeywordTargeting(options: { network: string; }) => Promise
Removes an ad network from the list of ad networks that receive targeting keywords (if any set).
If no ad networks are added to the list, any set keywords will be delivered to all ad networks supporting keyword targeting.
| Param | Type | Description |
| ------------- | --------------------------------- | ---------------------- |
| options | { network: string; } | Contains network name. |
--------------------
`typescript`
setTargetingInfo(options: { info: { [key: string]: string[]; }; }) => Promise
Sets the targeting information for the application. This information will be used only if no placement-specific targeting is available.
| Param | Type | Description |
| ------------- | ---------------------------------------------------- | ------------------------ |
| options | { info: { [key: string]: string[]; }; } | Contains targeting info. |
--------------------
`typescript`
setTargetingInfoForPlacement(options: { placementName: string; info: { [key: string]: string[]; }; }) => Promise
Sets the targeting information for the specific placement.
| Param | Type | Description |
| ------------- | --------------------------------------------------------------------------- | ------------------------------------------- |
| options | { placementName: string; info: { [key: string]: string[]; }; } | Contains placement name and targeting info. |
--------------------
`typescript`
setContentTargetingUrl(options: { url: string; }) => Promise
Sets the content targeting url for the application.
This information will be used only if no placement-specific targeting is available.
| Param | Type | Description |
| ------------- | ----------------------------- | --------------------- |
| options | { url: string; } | Contains content url. |
--------------------
`typescript`
setContentTargetingUrlForPlacement(options: { placementName: string; url: string; }) => Promise
Sets the content targeting url for the specific placement.
| Param | Type | Description |
| ------------- | ---------------------------------------------------- | ---------------------------------------- |
| options | { placementName: string; url: string; } | Contains placement name and content url. |
--------------------
`typescript`
setMultiContentTargetingUrlsForPlacement(options: { placementName: string; urls: string[]; }) => Promise
Sets the multi content targeting url for the application. Not all ad-networks supports multiple urls.
| Param | Type | Description |
| ------------- | ------------------------------------------------------- | --------------------------------------------- |
| options | { placementName: string; urls: string[]; } | Contains placement name and the list of urls. |
--------------------
`typescript`
setUserTargeting(options: { userId?: string; gender?: string; yearOfBirth?: number; keywords?: string[]; }) => Promise
Sets the user targeting information for the application.
| Param | Type | Description |
| ------------- | --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| options | { userId?: string; gender?: string; yearOfBirth?: number; keywords?: string[]; } | targeting information, "gender" parameter takes "male", "female" or "other" value. |
--------------------
`typescript`
hasAdForPlacement(options: { placementName: string; }) => Promise
Returns true if there is an ad loaded for given placement.
| Param | Type | Description |
| ------------- | --------------------------------------- | ------------------------ |
| options | { placementName: string; } | Contains placement name. |
Returns: Promise<boolean>
--------------------
`typescript`
isFrequencyCapReachedForPlacement(options: { placementName: string; }) => Promise
Checks if desired impression cap (set on Gravite Dashboard) is reached for given fullscreen or rewarded video placement. Note: this method will ALWAYS return false for other placement types.
| Param | Type | Description |
| ------------- | --------------------------------------- | ------------------------ |
| options | { placementName: string; } | Contains placement name. |
Returns: Promise<boolean>
--------------------
`typescript`
muteVideoAds(options: { mute: boolean; }) => Promise
Allows to mute video ads.
| Param | Type | Description |
| ------------- | ------------------------------- | ------------------------------------------- |
| options | { mute: boolean; } | True to enable, false to disable ad muting. |
--------------------
`typescript`
isConsentOptIn() => Promise
Returns "consent opt-in status" returned by our server rules. Only returns meaningful information after the rules are downloaded.
Returns: Promise<boolean>
--------------------
`typescript`
getAdInfo(options: { placementName: string; }) => Promise
After loading an ad, allows to access the loaded ad information by accessing the adInfo property of the fullscreen or rewarded video placement.
| Param | Type |
| ------------- | --------------------------------------- |
| options | { placementName: string; } |
Returns: Promise<AATKitAdInfo>
--------------------
`typescript`
enableCreativeHistory(options: { placementName: string; size: number; }) => Promise
Enables the banner creative history.
| Param | Type |
| ------------- | ----------------------------------------------------- |
| options | { placementName: string; size: number; } |
--------------------
#### AATKitConfiguration
| Prop | Type |
| ------------------------------------------ | ------------------------------------------------------------------------- |
| alternativeBundleId | string |
| initialRules | string |
| shouldCacheRules | boolean |
| shouldSkipRules | boolean |
| shouldReportUsingAlternativeBundleId | boolean |
| testModeAccountId | number |
| useAutomaticPPID | boolean |
| useDebugShake | boolean |
| platform | string |
| consent | AATKitConsent |
| adNetworkOptions | AATKitAdNetworkOptions |
#### AATKitConsent
| Prop | Type |
| ----------------------------------- | --------------------- |
| type | string |
| nonIABConsent | string |
| vendorConsentObtainedNetworks | string[] |
| noConsentNetworkStopSet | string[] |
| consentForAddapptr | string |
| showIfNeededSetting | string |
| accountId | number |
| propertyId | number |
| propertyName | string |
| pmId | string |
| appConsentAppKey | string |
| appConsentForceGDPR | boolean |
| appConsentFullscreen | boolean |
#### AATKitAdNetworkOptions
| Prop | Type |
| ------------------------- | ------------------------------------------------------------------------------- |
| appNexusOptions | AATKitAppNexusOptions |
| feedAdOptions | AATKitFeedAdOptions |
| adMobOptions | AATKitAdMobOptions |
| dfpOptions | AATKitDFPOptions |
| metaBiddingOptions | AATKitMetaBiddingOptions |
| superAwesomeOptions | AATKitSuperAwesomeOptions |
| graviteRTBOptions | AATKitGraviteRTBOptions |
| displayIOOptions | AATKitDisplayIOOptions |
#### AATKitAppNexusOptions
| Prop | Type |
| ------------------------- | -------------------- |
| autoCloseTime | number |
| supportNativeBanner | boolean |
| supportVideoBanner | boolean |
#### AATKitFeedAdOptions
| Prop | Type |
| -------------------- | -------------------- |
| shutterColor | number |
| disableSpinner | boolean |
#### AATKitAdMobOptions
| Prop | Type |
| --------------------------- | ------------------- |
| inlineBannerMaxHeight | number |
#### AATKitDFPOptions
| Prop | Type |
| --------------------------- | ------------------- |
| inlineBannerMaxHeight | number |
#### AATKitMetaBiddingOptions
| Prop | Type |
| ---------------- | ------------------- |
| platformId | string |
#### AATKitSuperAwesomeOptions
| Prop | Type |
| --------------------------- | ----------------------------------------------------------------------------------------------------------- |
| bannerOptions | AATKitSuperAwesomeBannerOptions |
| interstitialAdOptions | AATKitSuperAwesomeInterstitialAdOptions |
| rewardedVideoOptions | AATKitSuperAwesomeRewardedVideOptions |
#### AATKitSuperAwesomeBannerOptions
| Prop | Type |
| ----------------------------- | -------------------- |
| parentalGateEnabled | boolean |
| bumperPageEnabled | boolean |
| bumperPageCustomAppName | string |
#### AATKitSuperAwesomeInterstitialAdOptions
| Prop | Type | Description |
| ---------------------- | ------------------- | -------------------------------------------------------- |
| orientation | string | Possible values: "any", "portrait", "landscape" |
| closeButtonState | string | Possible values: "enabled", "enablednodelay", "disabled" |
#### AATKitSuperAwesomeRewardedVideOptions
| Prop | Type |
| ------------------------------- | -------------------- |
| closeButtonAtEnd | boolean |
| smallClickEnabled | boolean |
| closeButtonWarningEnabled | boolean |
#### AATKitGraviteRTBOptions
| Prop | Type |
| ------------------------------ | -------------------- |
| forceCloseButtonForMraid | boolean |
#### AATKitDisplayIOOptions
| Prop | Type |
| ---------------------------- | -------------------- |
| interscrollerHeight | number |
| interscrollerTopOffset | number |
| showSoundControl | boolean |
#### AATKitRuntimeConfiguration
| Prop | Type |
| --------------------- | -------------------- |
| consentRequired | boolean |
| useGeoLocation | boolean |
#### AATKitCollapsibleBannerOptions
| Prop | Type |
| ----------------------- | ------------------- |
| minDelayInSeconds | number |
| position | string |
#### AATKitDebugScreenConfiguration
| Prop | Type |
| ----------------------------------- | -------------------- |
| title | string |
| showBundleId | boolean |
| showTestMode | boolean |
| showLoadedAndLoadingAds | boolean |
| showAvailableNetworks | boolean |
| showDisabledNetworks | boolean |
| showRemovedNetworkSDKs | boolean |
| showUnsupportedNetworks | boolean |
| showExtraSDKs | boolean |
| showConsent | boolean |
| showAdvertisingId | boolean |
| showDeviceType | boolean |
| showDebugLogsToggle | boolean |
| showDeviceFilteredRulesToggle | boolean |
| showCloseButton | boolean |
#### String
Allows manipulation and formatting of text strings and determination and location of substrings within strings.
| Prop | Type | Description |
| ------------ | ------------------- | ------------------------------------------------------------ |
| length | number | Returns the length of a String object. |
| Method | Signature | Description |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| toString | () => string | Returns a string representation of a string. |
| charAt | (pos: number) => string | Returns the character at the specified index. |
| charCodeAt | (index: number) => number | Returns the Unicode value of the character at the specified location. |
| concat | (...strings: string[]) => string | Returns a string that contains the concatenation of two or more strings. |
| indexOf | (searchString: string, position?: number \| undefined) => number | Returns the position of the first occurrence of a substring. |
| lastIndexOf | (searchString: string, position?: number \| undefined) => number | Returns the last occurrence of a substring in the string. |
| localeCompare | (that: string) => number | Determines whether two strings are equivalent in the current locale. |
| match | (regexp: string \| RegExp) => RegExpMatchArray \| null | Matches a string with a regular expression, and returns an array containing the results of that search. |
| replace | (searchValue: string \| RegExp, replaceValue: string) => string | Replaces text in a string, using a regular expression or search string. |
| replace | (searchValue: string \| RegExp, replacer: (substring: string, ...args: any[]) => string) => string | Replaces text in a string, using a regular expression or search string. |
| search | (regexp: string \| RegExp) => number | Finds the first substring match in a regular expression search. |
| slice | (start?: number \| undefined, end?: number \| undefined) => string | Returns a section of a string. |
| split | (separator: string \| RegExp, limit?: number \| undefined) => string[] | Split a string into substrings using the specified separator and return them as an array. |
| substring | (start: number, end?: number \| undefined) => string | Returns the substring at the specified location within a String object. |
| toLowerCase | () => string | Converts all the alphabetic characters in a string to lowercase. |
| toLocaleLowerCase | (locales?: string \| string[] \| undefined) => string | Converts all alphabetic characters to lowercase, taking into account the host environment's current locale. |
| toUpperCase | () => string | Converts all the alphabetic characters in a string to uppercase. |
| toLocaleUpperCase | (locales?: string \| string[] \| undefined) => string | Returns a string where all alphabetic characters have been converted to uppercase, taking into account the host environment's current locale. |
| trim | () => string | Removes the leading and trailing white space and line terminator characters from a string. |
| substr | (from: number, length?: number \| undefined) => string | Gets a substring beginning at the specified location and having the specified length. |
| valueOf | () => string | Returns the primitive value of the specified object. |
#### RegExpMatchArray
| Prop | Type |
| ----------- | ------------------- |
| index | number |
| input | string |
#### RegExp
| Prop | Type | Description |
| ---------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| source | string | Returns a copy of the text of the regular expression pattern. Read-only. The regExp argument is a Regular expression object. It can be a variable name or a literal. |
| global | boolean | Returns a Boolean value indicating the state of the global flag (g) used with a regular expression. Default is false. Read-only. |
| ignoreCase | boolean | Returns a Boolean value indicating the state of the ignoreCase flag (i) used with a regular expression. Default is false. Read-only. |
| multiline | boolean | Returns a Boolean value indicating the state of the multiline flag (m) used with a regular expression. Default is false. Read-only. |
| lastIndex | number | |
| Method | Signature | Description |
| ----------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| exec | (string: string) => RegExpExecArray \| null | Executes a search on a string using a regular expression pattern, and returns an array containing the results of that search. |
| test | (string: string) => boolean | Returns a Boolean value that indicates whether or not a pattern exists in a searched string. |
| compile | () => this | |
#### RegExpExecArray
| Prop | Type |
| ----------- | ------------------- |
| index | number |
| input | string |
#### AATKitAdInfo
| Prop | Type |
| ------------------ | ------------------- |
| price | number |
| currencyCode | string |
| precision` | string |