DTN

DTN Image API

Allows generation of custom tailored map images

Operations 2

GET /image Returns static image with or without basemap #
POST /image Returns static image #

Documentation

📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-weather-conditions-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-observation-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-precipitation-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Other%20APIs/financial-market-data/documentation
📖
Documentation
https://devportal.dtn.com/catalog/WebSocket/agency-bulletin-websocket-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-agency-bulletin-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-alerting-API/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Other%20APIs/dtn-astronomical-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-climatology-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Other%20APIs/dtn-developer-portal-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-energy-event-index-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Aviation/dtn-enhanced-flight-hazards-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-lightning-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/WebSocket/dtn-lightning-websocket/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Aviation/dtn-metars-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-map-tile-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-marine-weather-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Aviation/dtn-notams-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Aviation/dtn-pireps-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/pavement-conditions-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-probabilistic-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Refined%20Fuels/dtn-refined-fuels-demand/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-renewables-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Aviation/dtn-sigmets-airmets/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Marine%20and%20Offshore/dtn-shipping-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Agriculture/dtn-soil-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-storm-impact-analytics/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-storm-risk-analytics-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Aviation/dtn-tafs-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/dtn-tropical-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/WebSocket/dtn-websocket-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Aviation/dtn-windsaloft-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Refined%20Fuels/digital-commerce-orders/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Refined%20Fuels/energy-digital-commerce-integrations-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Agriculture/farm-intel-api/documentation
📖
Documentation
https://devportal.dtn.com/catalog/Weather/radarscope-radar-products/documentation

Specifications

Other Resources

🔗
Reference
https://devportal.dtn.com/catalog/Weather/dtn-weather-conditions-api/documentation
🔗
Portal
https://devportal.dtn.com/
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-weather-conditions-api/postman-collection/2.2.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-weather-conditions-api/release-notes/2.2.0
🔗
Portal
https://api.weather.mg/
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-observation-api/postman-collection/2.0.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-observation-api/release-notes/2.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-precipitation-api/postman-collection/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/financial-market-data/postman-collection/1.0.2
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/agency-bulletin-websocket-api/release-notes/1.0.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-agency-bulletin-api/release-notes/2.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-astronomical-api/postman-collection/2.0.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-astronomical-api/release-notes/2.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-climatology-api/postman-collection/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-developer-portal-api/postman-collection/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-energy-event-index-api/postman-collection/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-enhanced-flight-hazards-api/postman-collection/1.10.2
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-enhanced-flight-hazards-api/release-notes/1.10.2
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-lightning-websocket/release-notes/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-metars-api/postman-collection/1.9.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-metars-api/release-notes/1.9.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-map-tile-api/postman-collection/2.0.16
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-map-tile-api/release-notes/2.0.16
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-marine-weather-api/postman-collection/1.0.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-marine-weather-api/release-notes/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-notams-api/postman-collection/1.10.1
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-notams-api/release-notes/1.10.1
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-pireps-api/postman-collection/1.9.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-pireps-api/release-notes/1.9.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/pavement-conditions-api/release-notes/2.0.2
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-probabilistic-api/postman-collection/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-renewables-api/postman-collection/1.0.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-renewables-api/release-notes/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-sigmets-airmets/postman-collection/1.9.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-sigmets-airmets/release-notes/1.9.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-soil-api/postman-collection/1.0.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-soil-api/release-notes/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-storm-impact-analytics/postman-collection/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-storm-risk-analytics-api/postman-collection/1.0.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-storm-risk-analytics-api/release-notes/1.0.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-tafs-api/postman-collection/1.9.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-tafs-api/release-notes/1.9.0
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-tropical-api/postman-collection/1.0.6
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-tropical-api/release-notes/1.0.6
🔗
Postman
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-windsaloft-api/postman-collection/1.9.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/dtn-windsaloft-api/release-notes/1.9.0
🔗
ReleaseNotes
https://dev-portal-api.prd.coreservices.zones.dtn.com/v1/apis/digital-commerce-orders/release-notes/1.0.0

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dtn-image-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dtn-image-api-openapi.yml Raw ↑
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.<br/>\nThe EPSG code being used must be present in the supportedEPSGs metadata attribute for each of the layers requested.<br/> \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.<br/>

        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.<br/>

        Defaults to English (en-US) if unsupported locale is specified.<br/>

        <b>If provided, overrides the Accept-Language header.</b><br/>

        '
      schema:
        type: string
        pattern: ^(en|es)-[A-Z]{2}$
        default: en-US
      examples:
        en-*:
          description: English<br/>Sample values include `en-US`, `en-AU`, `en-GB`
        es-*:
          description: Spanish<br/>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 <br/>\n- lon,lat,zoom\n  <br/>lon should be between -180 and 180, lat between -90 and 90, zoom between 0 and 22\n- minLon,minLat,maxLon,maxLat\n  <br/>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  <br/>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.<br/>

        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: <br/>\n- lon,lat,zoom\n  <br/>lon should be between -180 and 180, lat between -90 and 90, zoom between 0 and 22\n- minLon,minLat,maxLon,maxLat\n  <br/>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.<br/>

        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.<br/>

        Defaults to English (en-US) if unsupported locale is specified.<br/>

        '
      schema:
        type: string
        pattern: ^(en|es)-[A-Z]{2}$
        default: en-US
      examples:
        en-*:
          description: English<br/>Sample values include `en-US`, `en-AU`, `en-GB`
        es-*:
          description: Spanish<br/>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.<br/>

                  Values may be a string or a number. When the value is a number, the decimal separator (if any) must be a "." (dot).<br/>

                  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.<br/>

                  Available values are <i>none, low, medium, high</i>. 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 

# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dtn/refs/heads/main/openapi/dtn-image-api-openapi.yml