openapi: 3.2.0
info:
description: '# Introduction
DTN API for consuming mapping services
# Map Tile API Playground
A tool that can be used to easily view the layers you have access to using your obtained credentials. It also serves as a simple reference implementation of an interactive map viewer based on the Map Tile API.
Access the Map Tile API Playground [here](https://map.api.dtn.com/static/html/v2/map.html).
If you are migrating from V1 to V2 of the DTN Map Tile API, please refer to our [V2 Migration Guide](https://map.api.dtn.com/static/html/v2/migration_guide.pdf)'
version: 2.0.16
title: DTN Map Tile Image API
servers:
- url: https://map.api.dtn.com/v2
description: Version 2 of our mapping API
security:
- clientCredentials: []
tags:
- name: Image
description: Allows generation of custom tailored map images
paths:
/image:
get:
tags:
- Image
summary: Returns static image with or without basemap
externalDocs:
description: Mapbox style API
url: https://docs.mapbox.com/api/maps/styles/
operationId: getImage
parameters:
- $ref: '#/components/parameters/accept-language'
- $ref: '#/components/parameters/accept-image'
- $ref: '#/components/parameters/image-layers'
- $ref: '#/components/parameters/image-opacities'
- $ref: '#/components/parameters/image-smoothing-profiles'
- $ref: '#/components/parameters/image-width'
- $ref: '#/components/parameters/image-height'
- $ref: '#/components/parameters/image-timestamp'
- $ref: '#/components/parameters/image-basemap-style-url'
- $ref: '#/components/parameters/image-basemap-visibility-overrides'
- $ref: '#/components/parameters/image-get-viewport'
- $ref: '#/components/parameters/image-logo-position'
- $ref: '#/components/parameters/unit'
- $ref: '#/components/parameters/locale'
- $ref: '#/components/parameters/epsg'
- $ref: '#/components/parameters/layer-parameters'
responses:
'200':
$ref: '#/components/responses/image'
'401':
$ref: '#/components/responses/unauthenticated'
'406':
$ref: '#/components/responses/not-acceptable'
'422':
$ref: '#/components/responses/unprocessable-entity'
default:
$ref: '#/components/responses/error'
post:
tags:
- Image
summary: Returns static image
description: Render static images with out without a basemap, using more controls, like adding custom styles or specifying run times and timestamps
operationId: postImage
externalDocs:
description: Mapbox style API
url: https://docs.mapbox.com/api/maps/styles/
parameters:
- $ref: '#/components/parameters/accept-language'
- $ref: '#/components/parameters/accept-image'
- $ref: '#/components/parameters/image-width'
- $ref: '#/components/parameters/image-height'
- $ref: '#/components/parameters/image-basemap-style-url'
- $ref: '#/components/parameters/image-basemap-visibility-overrides'
- $ref: '#/components/parameters/image-post-viewport'
- $ref: '#/components/parameters/image-logo-position'
- $ref: '#/components/parameters/unit'
- $ref: '#/components/parameters/locale'
- $ref: '#/components/parameters/epsg'
requestBody:
$ref: '#/components/requestBodies/image-request'
responses:
'200':
$ref: '#/components/responses/image'
'401':
$ref: '#/components/responses/unauthenticated'
'406':
$ref: '#/components/responses/not-acceptable'
'422':
$ref: '#/components/responses/unprocessable-entity'
default:
$ref: '#/components/responses/error'
components:
parameters:
epsg:
in: query
name: epsg
description: "Specifies the projection to be used, as defined by an EPSG code.
\nThe EPSG code being used must be present in the supportedEPSGs metadata attribute for each of the layers requested.
\nWhen using a basemap style url, make sure to reference one using the same EPSG.\n\nExample values: \n- 3857 - Web Mercator\n- 3031 - Antarctic Polar Stereographic\n- 3995 - Arctic Polar Stereographic\n"
schema:
type: number
enum:
- 3857
- 3031
- 3995
default: 3857
locale:
in: query
name: locale
description: 'Specifies the desired language and country code for language translation and formatting conventions.
Supported languages are English (en) and Spanish (es). However, any 2-letter ISO country code is supported as locale. See [here](https://www.iso.org/obp/ui/#search/code) for a list of country codes.
Defaults to English (en-US) if unsupported locale is specified.
If provided, overrides the Accept-Language header.
'
schema:
type: string
pattern: ^(en|es)-[A-Z]{2}$
default: en-US
examples:
en-*:
description: English
Sample values include `en-US`, `en-AU`, `en-GB`
es-*:
description: Spanish
Sample values include `es-ES`, `es-US`
image-smoothing-profiles:
in: query
name: smoothingProfiles
description: Comma separated list of smoothing profiles to apply to each of the requested layers, in the same order as in the layerIds attribute. Layers with no matching smoothing profile will not be smoothed.
schema:
type: array
minItems: 0
maxItems: 10
items:
type: string
enum:
- none
- low
- medium
- high
example: low, high
image-layers:
in: query
name: layerIds
description: Comma separated list of layer ids to render in stacking order.
schema:
type: array
minItems: 0
maxItems: 10
items:
type: string
example: radar-base-ref-precip-type-na-contours,sevwx-lightning-global-plot
image-logo-position:
in: query
name: dtnLogoPosition
description: indicates position for DTN logo
schema:
type: string
enum:
- top-right
- top-left
- bottom-right
- bottom-left
default: top-right
image-post-viewport:
in: query
name: viewport
description: "Defines the area to be rendered using comma separated numbers. Area can be defined either through
\n- lon,lat,zoom\n
lon should be between -180 and 180, lat between -90 and 90, zoom between 0 and 22\n- minLon,minLat,maxLon,maxLat\n
minLon and maxLon should be between -360 and 360, minLat and maxLat between -90 and 90, zoom between 0 and 22, minLon < maxLon, minLat < maxLat\n\nWhen doing POST with a style holding a geojson payload in the sources section, the viewport can be automatically adjusted to the incoming features, padding can be optionally added.\n- auto\n- auto,paddingInDegrees\n
paddingInDegrees should be between 0 and 10\n"
required: true
schema:
oneOf:
- type: array
items:
type: number
format: float
minItems: 4
maxItems: 4
- type: array
items:
type: number
format: float
minItems: 3
maxItems: 3
- type: string
example: auto
enum:
- auto
- type: array
items:
type: object
properties:
firstItem:
type: string
example: auto
enum:
- auto
secondItem:
type: number
format: float
accept-image:
in: header
name: Accept
required: true
description: Indicates response media types that are acceptable.
schema:
type: string
enum:
- image/png
- image/jpeg
- image/gif
- image/webp
image-opacities:
in: query
name: opacities
description: Comma separated list of opacities to apply to each of the requested layers, in the same order as in the layerIds attribute. Layers with no matching opacity will use the default one being used in its style. Valid values from 0 to 1 inclusive.
schema:
type: array
minItems: 0
maxItems: 10
items:
type: number
example: .1, 0.5
image-basemap-style-url:
in: query
name: basemapStyleURL
description: 'URL for a Mapbox data driven style defining a base map.
When using a custom one, please provide an access token.
- Streets: mapbox://styles/dtn-mapbox/ckwv1d32r4vsw14poxf2forep
- Dark: mapbox://styles/dtn-mapbox/ckwv21klw3k2v15pi0igs3uk1
- Light: mapbox://styles/dtn-mapbox/ckwv1z6fh5prn14pcdx8xqrja
- Outdoors: mapbox://styles/dtn-mapbox/ckwv1rso35jf614mn4mc9fq82
- Satellite: mapbox://styles/dtn-mapbox/ckwv24fqs3k5e15pihmf9qtrc
- Navigation-day: mapbox://styles/dtn-mapbox/ckwv2ch170bul14qg6xneqxri
- Navigation-night: mapbox://styles/dtn-mapbox/ckwv2jjos05v215pcse1xqjw8
If using EPSG code of 3031 (Antarctic Polar Stereographic), the following styles must be use
- 3031 Streets: https://map.api.dtn.com/static/layers/basemaps/3031/styles/street/style.json
- 3031 Dark: https://map.api.dtn.com/static/layers/basemaps/3031/styles/dark/style.json
- 3031 Light: https://map.api.dtn.com/static/layers/basemaps/3031/styles/light/style.json
If using EPSG code of 3995 (Arctic Polar Stereographic), the following styles must be use
- 3995 Streets: https://map.api.dtn.com/static/layers/basemaps/3995/styles/street/style.json
- 3995 Dark: https://map.api.dtn.com/static/layers/basemaps/3995/styles/dark/style.json
- 3995 Light: https://map.api.dtn.com/static/layers/basemaps/3995/styles/light/style.json
'
required: false
schema:
type: string
example: https://api.mapbox.com/styles/v1/mapbox/outdoors-v11?access_token=ABC...
unit:
in: query
name: unit
description: Unit system (with or without industry specific overrides) to use when returning data.
schema:
type: string
enum:
- metric
- metric-aviation
- metric-marine
- imperial
- imperial-aviation
- imperial-marine
default: imperial
image-width:
in: query
name: width
description: Width of the rendered image in pixels
required: true
schema:
type: number
example: 1024
minimum: 256
maximum: 4096
image-basemap-visibility-overrides:
in: query
name: basemapVisibilityOverrides
description: Comma separated string of pairs like "layerId:true|false" defining layout visibility overrides for the basemap provided by the basemapStyleURL parameter. Wildcards are allowed in the layerId.
required: false
schema:
type: string
example: land:false,*road*:false
layer-parameters:
in: query
name: parameters
description: 'Key-value pair list, separated by semicolons, representing each of the desired parameter ids and values to use against this endpoint. When available, parameters are defined in the metadata endpoint for each given layer.
'
required: false
schema:
type: string
example: id-1:value-1;id-2:value-2
image-get-viewport:
in: query
name: viewport
description: "Defines the area to be rendered using comma separated numbers. Area can be defined either through:
\n- lon,lat,zoom\n
lon should be between -180 and 180, lat between -90 and 90, zoom between 0 and 22\n- minLon,minLat,maxLon,maxLat\n
minLon and maxLon should be between -360 and 360, minLat and maxLat between -90 and 90, zoom between 0 and 22, minLon < maxLon, minLat < maxLat\n"
required: true
schema:
oneOf:
- type: array
items:
type: number
format: float
minItems: 4
maxItems: 4
- type: array
items:
type: number
format: float
minItems: 3
maxItems: 3
image-height:
in: query
name: height
description: Height of the rendered image in pixels
required: true
schema:
type: number
example: 768
minimum: 256
maximum: 4096
accept-language:
in: header
name: Accept-Language
description: 'Specifies the desired language and country code for language translation and formatting conventions.
Supported languages are English (en) and Spanish (es). However, any 2-letter ISO country code is supported as locale. See [here](https://www.iso.org/obp/ui/#search/code) for a list of country codes.
Defaults to English (en-US) if unsupported locale is specified.
'
schema:
type: string
pattern: ^(en|es)-[A-Z]{2}$
default: en-US
examples:
en-*:
description: English
Sample values include `en-US`, `en-AU`, `en-GB`
es-*:
description: Spanish
Sample values include `es-ES`, `es-US`
image-timestamp:
in: query
name: time
description: Timestamp in UTC and ISO 8601 format. It indicates the time the image should be valid for.
schema:
type: string
format: date-time
description: Timestamp for which the tile should be valid, defaults to current time
example: '2022-09-28T12:45:00Z'
responses:
unprocessable-entity:
description: The server understands the content type of the request entity, and the syntax of the request entity is correct, but it was unable to process the contained instructions.
headers:
X-Request-ID:
$ref: '#/components/headers/x-request-id'
Content-Encoding:
$ref: '#/components/headers/content-encoding'
Content-Language:
$ref: '#/components/headers/content-language'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/general-error'
example:
type: https://maps.dtn.com/error-details/invalid-object
title: Invalid object in request body
detail: 'Error in Query: The object '''' contains forbidden keys: ''param'''
status: 422
instance: urn:dtn:maps:api:timestamps/sevwx-nws-alert-zones:requestId:341af5d9-022b-4451-b06d-64ef2f2a5964
error:
description: error response
headers:
X-Request-ID:
$ref: '#/components/headers/x-request-id'
Content-Encoding:
$ref: '#/components/headers/content-encoding'
Content-Language:
$ref: '#/components/headers/content-language'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/general-error'
example:
type: https://map.api.dtn.com/v1/error-details/not-found
title: resource not found
detail: The layer you requested could not be found.
status: 404
instance: urn:dtn:maps:api:catalog:requestId:123e4567-e89b-12d3-a456-526614176000
not-acceptable:
description: The server cannot produce a response matching the list of acceptable values defined in the request's proactive content negotiation headers, and that the server is unwilling to supply a default representation.
headers:
X-Request-ID:
$ref: '#/components/headers/x-request-id'
Content-Encoding:
$ref: '#/components/headers/content-encoding'
Content-Language:
$ref: '#/components/headers/content-language'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/general-error'
example:
type: https://map.api.dtn.com/v1/error-details/not-allowed
title: not allowed
detail: Either the accept header is missing or none of the values are acceptable.
status: 406
instance: urn:dtn:maps:api:catalog:requestId:123e4567-e89b-12d3-a458-426614176000
image:
description: image response
headers:
X-Request-ID:
$ref: '#/components/headers/x-request-id'
Content-Encoding:
$ref: '#/components/headers/content-encoding'
Content-Language:
$ref: '#/components/headers/content-language'
content:
image/png:
schema:
type: string
format: binary
example: base64 encoded string
image/jpeg:
schema:
type: string
format: binary
example: base64 encoded string
image/gif:
schema:
type: string
format: binary
example: base64 encoded string
image/webp:
schema:
type: string
format: binary
example: base64 encoded string
unauthenticated:
description: unauthenticated error response
headers:
X-Request-ID:
$ref: '#/components/headers/x-request-id'
Content-Encoding:
$ref: '#/components/headers/content-encoding'
Content-Language:
$ref: '#/components/headers/content-language'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/general-error'
example:
type: https://map.api.dtn.com/v1/error-details/unauthenticated
title: unauthorized
detail: Bearer token either not provided or unauthorized.
status: 401
instance: urn:dtn:maps:api:catalog:requestId:123e4567-e89b-12d3-a456-426614176000
schemas:
general-error:
type: object
properties:
detail:
type: string
description: A human-readable description of the specific error.
type:
type: string
format: uri
description: A URL to a document describing the error condition.
title:
type: string
description: A short, human-readable title for the general error type.
status:
type: number
description: HTTP status code
instance:
type: string
format: uri
description: URL with the id for the specific error; this will often point to an error log for that specific response.
additionalProperties: true
image-request:
type: object
required:
- overlays
properties:
overlays:
description: List of overlays to render, it can be a mix of DTN layers and other custom MapBox data driven styles
type: array
minItems: 0
maxItems: 10
items:
type: object
required:
- tileSetId
properties:
layerId:
type: string
description: LayerId from DTN's catalog.
opacity:
type: number
description: Applies to DTN layers, controls its opacity, will be ignored if the style property is defined
minimum: 0
maximum: 1
example: 0.8
tileSetId:
type: string
description: Applies to all DTN layers. It has to match a tileSetId returned by the timestamp endpoint. It indicates the moment in time the layerId is valid for
example: 46c63648-397c-469d-97a7-622825c58437
filters:
type: array
description: Applies to DTN layers for which there are filters defined. Will be ignored if the style property is defined
items:
type: string
style:
description: Style configuration for the overlay
oneOf:
- type: object
description: Mapbox data driven style. Allows to provide custom overlays or override the default style for a given DTN layer
additionalProperties: true
- type: string
description: URL for a mapbox data driven style
format: uri
insertBeforeLayerId:
type: string
description: Layer ID associated with either the specified base map or with another layer ID in the overlay list which determines the placement of the overlay. Allows the integration of weather layers with the base map or the reorganization of overlays on the map.
visibilityOverrides:
type: array
description: Applies to either DTN layers or custom style defined in the overlay. It allows to override the layout visibility property for the data driven style by indicating pairs of settings like "layerId:true|false:" to modify visibility of selected layers. Wildcards can be used in the layerId.
items:
type: string
example:
- land:false
- '*label*:false'
paletteOverride:
type: string
description: 'Value-color pair list separated by semicolons, denoting the custom color palette for the given layer.
Values may be a string or a number. When the value is a number, the decimal separator (if any) must be a "." (dot).
Colors may be hexadecimal color codes, or in RGB/RGBA notation. When using RGBA notation, the alpha value must be a float between 0 and 1.
'
example: 0:#FF0000;10:rgb(0,255,0);20:rgba(0,0,255,0.5);30:#00FF0080;40.0:#FFF;50.1:#000F
smoothingProfile:
type: string
description: 'The smoothing profile to use when rendering the layer.
Available values are none, low, medium, high. Defaults to `none` if not specified.
'
example:
overlays:
- layerId: sevwx-nws-alert-zones
opacity: 0.8
tileSetId: 46c63648-397c-469d-97a7-622825c58437
filters:
- nws-coastal-flood-alerts
- nws-winter-alerts
- layerId: fcst-manta-mean-sea-level-pressure-isolines
tileSetId: 46c63648-397c-469d-97a7-622825c58437
opacity: 0.5
insertBeforeLayerId: admin-0-boundary
- style:
version: 8
name: Custom style with GeoJSON
sources:
geojson:
type: geojson
data:
type: Feature
properties: {}
geometry:
type: Point
coordinates:
- -77.0323
- 38.9131
layers:
- id: circle
type: circle
source: geojson
paint:
circle-color: red
- style: mapbox://styles/dtn-mapbox/ckdj45sf20erl1intlu0zoonf
visibilityOverrides:
- '*label*:false'
headers:
content-language:
description: Describe the language(s) intended for the audience.
schema:
type: string
default: en-US
x-request-id:
description: UUID compliant with RFC 4122 that uniquely identifies the request.
schema:
type: string
content-encoding:
description: Lists any encodings that have been applied to the returned payload.
schema:
type: string
requestBodies:
image-request:
description: A JSON object Image request
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/image-request'
securitySchemes:
clientCredentials:
type: oauth2
x-receive-token-in: request-body
flows:
clientCredentials:
tokenUrl: https://api.auth.dtn.com/v1/tokens/authorize
description: "# Using DAIS for M2M/API Auth\nYou have been given a Client ID and a Client Secret, which are used to request a DTN Access Token. DTN Access Tokens are required when making calls to each and every DTN API endpoint. The following information provides additional details on these tokens and how they are generated.\n## What is an Access Token and how is it different from an API Key?\nAn API Key is a random string of characters that an API uses to authorize whether or not a calling client has approved access to an endpoint. These keys are a non-standard approach to API authorization and are generally issued on a per-API basis.\n\nAn Access Token is also a string of characters but is a base-64 encoded JavaScript Object Notation Web Token, or JWT. JWTs are a widely accepted standard that use OAuth concepts and approaches. \n\nBoth API Keys and Access Tokens are used in an Authorization Request Header as a Bearer, meaning there is no difference in where you put this string of characters when you make calls to DTN APIs.\n## How to generate an Access Token?\nWhen requested, an Access Token is generated for your specific Client (ID/Secret) and for a specific API. The DTN Auth and Identity Service (DAIS) generates new Access Tokens for your client. The DAIS endpoint is `POST https://api.auth.dtn.com/v1/tokens/authorize`.\n\nThis endpoint takes two Header parameters:\n * `Content-Type: application/json`\n * `Accept: application/json`\n\nThis endpoint takes four parameters in the Request Body:\n * `grant_type`: this should always be client_credentials for generating machine-to-machine tokens.\n * `client_id`: this is the Client ID or Application ID using the token and is given to you by DTN's Identity Team. This ID will never change for your client/application.\n * `client_secret`: this is the Client Secret that is associated with the Application ID and is given to you by DTN's Identity Team. This key is subject to rotation for security purposes but always with the client's knowledge.\n * `audience`: this is the API for which this Access Token will be used. For the DTN Map Tile API, you need to use the following audience: https://map.api.dtn.com\n\nYou can use this CURL command template as a reference for obtaining an access token:\n ```\n curl --location --request POST 'https://api.auth.dtn.com/v1/tokens/authorize' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n\"grant_type\": \"client_credentials\",\n\"client_id\": \"insert your client id here\",\n\"client_secret\": \"insert your client secret here\",\n\"audience\": \"insert your audience here\"\n}' \n ```\n\n*This document, for demonstration purposes, supplies a client_id and client_secret in all code examples. This client/application is for a fictitious API and cannot be used in practice to gain unauthorized access to any other DTN API.*\nUpon generating a new Access Token, you should receive an HTTP Response from DAIS similar to this:\n ```\n {\n \"data\": {\n \"access_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InpfX21pZW13NGhoTmdvQWQxR3N6ciJ9.eyJodHRwczovL2F1dGguZHRuLmNvbS9jdXN0b21lcklkIjoiMTIzNDU2Nzg5MERlbW8iLCJodHRwczovL2F1dGguZHRuLmNvbS9wcm9kdWN0Q29kZSI6IkRlbW9BcGlQIiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vcmVxdWVzdGVySXAiOiIxOC4yMTMuMTc0LjI3IiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vcnBzIjoiMTAwIiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vdGllciI6IkJhc2ljIiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vcXVvdGEiOiI5OTk5OTkiLCJpc3MiOiJodHRwczovL2lkLmF1dGguZHRuLmNvbS8iLCJzdWIiOiJuZnlPM0tpS1BSOE4wREtSNUNMOGpTOUdGQkNEZXlGTUBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZW1vLWFwaS5hdXRoLmR0bi5jb20vIiwiaWF0IjoxNjU2MDk5MDY4LCJleHAiOjE2NTYwOTkxNTgsImF6cCI6Im5meU8zS2lLUFI4TjBES1I1Q0w4alM5R0ZCQ0RleUZNIiwic2NvcGUiOiJyZWFkOmRlbW8gY3JlYXRlOmRlbW8gdXBkYXRlOmRlbW8iLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJwZXJtaXNzaW9ucyI6WyJyZWFkOmRlbW8iLCJjcmVhdGU6ZGVtbyIsInVwZGF0ZTpkZW1vIl19.0VHdyp1w9PPFVI0FPheAwuKZwb5C25rwP-LPMXcSNoRmouvga1DZtNLA67ZzE_sAlc_VpaDRr6daLKr_Alw4347mw9sdjP8wKR27kCZa9JZK5PGQMmXHscATbzBEJYpCPklfyGaajgymqTBGnedcv8F0UvlRzQPsFeRPnVoX7BWOSXpMbyToGiXWkQLBQT7r96KAmLZOPJFZspPtjw-wH2mSL2WNa_nkB4j5vMGhGxlKiNRsKb30TH_WAel2hsxNlcPK3XHCmrMTYsNnu7HNqOTMn2i0__0rvBrhSWEw-_grqQDmWFJuWd7Qhi1q81AaJcdqgoSa_efz93QFclJUNw\",\n \"scope\": \"read:demo create:demo update:demo\",\n \"expires_in\": 90,\n \"token_type\": \"Bearer\"\n },\n \"meta\": {\n \"date_time\": \"2022-06-24T19:09:42.963Z\",\n \"name\": \"v1.tokens.authorize\",\n \"uuid\": \"ee6f9feb-dcf8-4421-a6fd-efd6beabdaa9\",\n \"start_timestamp\": 1656097782509,\n \"end_timestamp\": 1656097782963,\n \"execution_time\": 454\n }\n }\n ```\nLooking at this Response, you will see:\n * `access_token`: contains the JWT Access Token string you will use as your Bearer token.\n * `scope`: contains the scopes that this Access Token gives you permissions to access.\n * `expires_in`: contains the length of time before this Access Token will expire, in seconds.\n * `token_type`: verifies that this Access Token should be used as a Bearer token.\n\n## How to use an Access Token after one is generated?\nOnce a new Access Token is obtained, it is used in each call to a DTN API endpoint as a Bearer token in an Authorization Request Header. For example:\n ```\n Header: 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InpfX21pZW13NGhoTmdvQWQxR3N6ciJ9.eyJodHRwczovL2F1dGguZHRuLmNvbS9jdXN0b21lcklkIjoiMTIzNDU2Nzg5MERlbW8iLCJodHRwczovL2F1dGguZHRuLmNvbS9wcm9kdWN0Q29kZSI6IkRlbW9BcGlQIiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vcmVxdWVzdGVySXAiOiIxOC4yMTMuMTc0LjI3IiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vcnBzIjoiMTAwIiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vdGllciI6IkJhc2ljIiwiaHR0cHM6Ly9hdXRoLmR0bi5jb20vcXVvdGEiOiI5OTk5OTkiLCJpc3MiOiJodHRwczovL2lkLmF1dGguZHRuLmNvbS8iLCJzdWIiOiJuZnlPM0tpS1BSOE4wREtSNUNMOGpTOUdGQkNEZXlGTUBjbGllbnRzIiwiYXVkIjoiaHR0cHM6Ly9kZW1vLWFwaS5hdXRoLmR0bi5jb20vIiwiaWF0IjoxNjU2MDk5MDY4LCJleHAiOjE2NTYwOTkxNTgsImF6cCI6Im5meU8zS2lLUFI4TjBES1I1Q0w4alM5R0ZCQ0RleUZNIiwic2NvcGUiOiJyZWFkOmRlbW8gY3JlYXRlOmRlbW8gdXBkYXRlOmRlbW8iLCJndHkiOiJjbGllbnQtY3JlZGVudGlhbHMiLCJwZXJtaXNzaW9ucyI6WyJyZWFkOmRlbW8iLCJjcmVhdGU6ZGVtbyIsInVwZGF0ZTpkZW1vIl19.0VHdyp1w9PPFVI0FPheAwuKZwb5C25rwP-LPMXcSNoRmouvga1DZtNLA67ZzE_sAlc_VpaDRr6daLKr_Alw4347mw9sdjP8wKR27kCZa9JZK5PGQMmXHscATbzBEJYpCPklfyGaajgymqTBGnedcv8F0UvlRzQPsFeRPnVoX7BWOSXpMbyToGiXWkQLBQT7r96KAmLZOPJFZspPtjw-wH2mSL2WNa_nkB4j5vMGhGxlKiNRsKb30TH_WAel2hsxNlcPK3XHCmrMTYsNnu7HNqOTMn2i0__0rvBrhSWEw-_grqQDmWFJuWd7Qhi1q81AaJcdqgoSa_efz93QFclJUNw'\n ```\n\n## Deconstructing the Access Token\nA DTN Access Token carries information within its JWT Body that is available on every API call. By deconstructing the JWT token, our Access Tokens will resemble:\n ```\n {\n \"https://auth.dtn.com/customerId\": \"1234567890Demo\",\n \"https://auth.dtn.com/productCode\": \"DemoApiP\",\n \"https://auth.dtn.com/requesterIp\": \"18.213.174.27\",\n \"https://auth.dtn.com/rps\": \"100\",\n \"https://auth.dtn.com/tier\": \"Basic\",\n \"https://auth.dtn.com/quota\": \"999999\",\n \"iss\": \"https://id.auth.dtn.com/\",\n \"sub\": \"nfyO3KiKPR8N0DKR5CL8jS9GFBCDeyFM@clients\",\n \"aud\": \"https://demo-api.auth.dtn.com/\",\n \"iat\": 1656099068,\n \"exp\": 1656099158,\n \"azp\": \"nfyO3KiKPR8N0DKR5CL8jS9GFBCDeyFM\",\n \"scope\": \"read:demo create:demo update:demo\",\n \"gty\": \"client-credentials\",\n \"permissions\": [\n \"read:demo\",\n \"create:demo\",\n \"update:demo\"\n ]\n }\n ```\n### Description of Claims\n\n | Claim | Type | Description |\n | -----------------------------------| --------------------------------------------| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n | `https://auth.dtn.com/customerId` | String | Custom DTN claim containing the Customer ID found in the DTN Order Management/Salesforce system associated with this token. |\n | `https://auth.dtn.com/productCode` | String | Custom DTN claim containing the Identity product code associated with this token. |\n | `https://auth.dtn.com/requesterIp` | String | Custom DTN claim containing the IP address of the requesting client. |\n | `https://auth.dtn.com/rps` | String | Custom DTN claim containing the maximum rate per second this customer is authorized to utilize. |\n | `https://auth.dtn.com/tier` | String | Custom DTN claim containing the data tier the customer purchased for the requested access. |\n | `https://auth.dtn.com/quota` | String | Custom DTN claim containing the maximum yearly quota the customer purchased for calling DTN endpoints for the specific product. |\n | `iss` | String (URI) | The Security Token Service (STS) that issues and returns the token. If this value is not from `https://id.auth.dtn.com/`, the token should not be considered trusted. |\n | `sub` | String (URI) | The principle about which the token asserts information (the User ID or Client ID within the Identity Provider). A User ID will start with a prefix of `auth0\\|`, while the Client ID will end with the suffix `@clients`. |\n | `aud` | String \\| Array (Strings) (URI \\| [URI, …]) | Identifies the intended recipient(s) of the token – its audience. The token should be rejected if the audience does not contain values expected by the calling application. |\n | `iat` | Number (Timestamp) | “Issued At” indicates when the authentication for this token occurred. |\n | `exp` | Number (Timestamp) | The “expiration time” on or after which the JWT must not be accepted for processing. |\n | `azp` | String | The application/client ID of the client using the token. The application can cat as itself or on behalf of a user. |\n | `gty` | String (Space-delimited) | The grant type that was used to request the token – not an RFC 7519 registered claim (Auth0-specific). |\n | `permissions` | Array (Strings) | The grant type that was used to request the token – not an RFC 7519 registered claim (Auth0-specific). |\n\n "