{
  "service": "tomtom",
  "displayName": "TomTom",
  "categories": [
    "Location",
    "Developer Tools"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "TOMTOM_API_KEY",
      "description": "TomTom API key sent as the key query parameter. Create and manage keys at https://developer.tomtom.com/how-to-get-tomtom-api-key.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://developer.tomtom.com",
  "actions": [
    {
      "id": "tomtom.autocomplete",
      "service": "tomtom",
      "name": "autocomplete",
      "description": "Return autocomplete suggestions from the TomTom Search API.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "The partial text query used for autocomplete suggestions."
          },
          "language": {
            "type": "string",
            "minLength": 1,
            "description": "The IETF language tag for results."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "description": "The maximum number of autocomplete results to return."
          },
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "The latitude in decimal degrees."
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "The longitude in decimal degrees."
          },
          "radius": {
            "type": "number",
            "exclusiveMinimum": 0,
            "description": "The search radius in meters."
          },
          "countrySet": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 3,
              "description": "One ISO 3166 country code used to filter results."
            },
            "description": "The country filters applied to the TomTom request.",
            "minItems": 1
          },
          "resultSet": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One autocomplete segment type such as brand or category."
            },
            "description": "The autocomplete segment types included in the response.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "query",
          "language"
        ],
        "description": "Input parameters for TomTom autocomplete."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "context": {
            "type": "object",
            "properties": {
              "inputQuery": {
                "type": "string",
                "description": "The original autocomplete query text."
              }
            },
            "additionalProperties": true,
            "description": "The autocomplete context metadata returned by TomTom."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "One TomTom result object."
            },
            "description": "The TomTom search results returned by the endpoint."
          }
        },
        "additionalProperties": true,
        "description": "The TomTom autocomplete response."
      }
    },
    {
      "id": "tomtom.fuzzy_search",
      "service": "tomtom",
      "name": "fuzzy_search",
      "description": "Search addresses or places with the TomTom Search API fuzzy search endpoint.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "The free-form text query sent to TomTom."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The maximum number of results to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based result offset used for pagination."
          },
          "countrySet": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 3,
              "description": "One ISO 3166 country code used to filter results."
            },
            "description": "The country filters applied to the TomTom request.",
            "minItems": 1
          },
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "The latitude in decimal degrees."
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "The longitude in decimal degrees."
          },
          "radius": {
            "type": "number",
            "exclusiveMinimum": 0,
            "description": "The search radius in meters."
          },
          "language": {
            "type": "string",
            "minLength": 1,
            "description": "The IETF language tag for results."
          },
          "categorySet": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "description": "One TomTom POI category identifier."
            },
            "description": "The POI category filters applied to the request.",
            "minItems": 1
          },
          "brandSet": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One brand name used to filter POI results."
            },
            "description": "The brand filters applied to the request.",
            "minItems": 1
          },
          "entityTypeSet": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One TomTom entity type value."
            },
            "description": "The entity type filters applied to the request.",
            "minItems": 1
          },
          "view": {
            "type": "string",
            "minLength": 1,
            "description": "The geopolitical view applied to results."
          }
        },
        "additionalProperties": false,
        "required": [
          "query"
        ],
        "description": "Input parameters for TomTom fuzzy search."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "object",
            "properties": {
              "query": {
                "type": "string",
                "description": "The original query echoed by TomTom when available."
              },
              "queryTime": {
                "type": "number",
                "description": "The time spent processing the query in milliseconds."
              },
              "numResults": {
                "type": "integer",
                "description": "The number of results returned in this page."
              },
              "offset": {
                "type": "integer",
                "description": "The zero-based offset of the current page."
              },
              "totalResults": {
                "type": "integer",
                "description": "The total number of matching results."
              },
              "fuzzyLevel": {
                "type": "integer",
                "description": "The fuzzy matching level used by TomTom."
              }
            },
            "additionalProperties": true,
            "description": "The summary metadata returned by TomTom search endpoints."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "One TomTom result object."
            },
            "description": "The TomTom search results returned by the endpoint."
          }
        },
        "additionalProperties": true,
        "description": "The TomTom fuzzy search response."
      }
    },
    {
      "id": "tomtom.geocode",
      "service": "tomtom",
      "name": "geocode",
      "description": "Convert an address into geographic search results with the TomTom Geocoding API.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "The address or place query to geocode."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The maximum number of results to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based result offset used for pagination."
          },
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "The latitude in decimal degrees."
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "The longitude in decimal degrees."
          },
          "radius": {
            "type": "number",
            "exclusiveMinimum": 0,
            "description": "The search radius in meters."
          },
          "countrySet": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 3,
              "description": "One ISO 3166 country code used to filter results."
            },
            "description": "The country filters applied to the TomTom request.",
            "minItems": 1
          },
          "language": {
            "type": "string",
            "minLength": 1,
            "description": "The IETF language tag for results."
          },
          "view": {
            "type": "string",
            "minLength": 1,
            "description": "The geopolitical view applied to results."
          },
          "entityTypeSet": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One TomTom entity type value."
            },
            "description": "The entity type filters applied to the request.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "query"
        ],
        "description": "Input parameters for TomTom geocoding."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "object",
            "properties": {
              "query": {
                "type": "string",
                "description": "The original query echoed by TomTom when available."
              },
              "queryTime": {
                "type": "number",
                "description": "The time spent processing the query in milliseconds."
              },
              "numResults": {
                "type": "integer",
                "description": "The number of results returned in this page."
              },
              "offset": {
                "type": "integer",
                "description": "The zero-based offset of the current page."
              },
              "totalResults": {
                "type": "integer",
                "description": "The total number of matching results."
              },
              "fuzzyLevel": {
                "type": "integer",
                "description": "The fuzzy matching level used by TomTom."
              }
            },
            "additionalProperties": true,
            "description": "The summary metadata returned by TomTom search endpoints."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "One TomTom result object."
            },
            "description": "The TomTom search results returned by the endpoint."
          }
        },
        "additionalProperties": true,
        "description": "The TomTom fuzzy search response."
      }
    },
    {
      "id": "tomtom.nearby_search",
      "service": "tomtom",
      "name": "nearby_search",
      "description": "Search for nearby places of interest around a coordinate with TomTom.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "The latitude in decimal degrees."
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "The longitude in decimal degrees."
          },
          "radius": {
            "type": "number",
            "exclusiveMinimum": 0,
            "description": "The search radius in meters."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The maximum number of results to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based result offset used for pagination."
          },
          "countrySet": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 3,
              "description": "One ISO 3166 country code used to filter results."
            },
            "description": "The country filters applied to the TomTom request.",
            "minItems": 1
          },
          "language": {
            "type": "string",
            "minLength": 1,
            "description": "The IETF language tag for results."
          },
          "categorySet": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "description": "One TomTom POI category identifier."
            },
            "description": "The POI category filters applied to the request.",
            "minItems": 1
          },
          "brandSet": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One brand name used to filter POI results."
            },
            "description": "The brand filters applied to the request.",
            "minItems": 1
          },
          "view": {
            "type": "string",
            "minLength": 1,
            "description": "The geopolitical view applied to results."
          }
        },
        "additionalProperties": false,
        "required": [
          "lat",
          "lon"
        ],
        "description": "Input parameters for TomTom nearby search."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "object",
            "properties": {
              "query": {
                "type": "string",
                "description": "The original query echoed by TomTom when available."
              },
              "queryTime": {
                "type": "number",
                "description": "The time spent processing the query in milliseconds."
              },
              "numResults": {
                "type": "integer",
                "description": "The number of results returned in this page."
              },
              "offset": {
                "type": "integer",
                "description": "The zero-based offset of the current page."
              },
              "totalResults": {
                "type": "integer",
                "description": "The total number of matching results."
              },
              "fuzzyLevel": {
                "type": "integer",
                "description": "The fuzzy matching level used by TomTom."
              }
            },
            "additionalProperties": true,
            "description": "The summary metadata returned by TomTom search endpoints."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "One TomTom result object."
            },
            "description": "The TomTom search results returned by the endpoint."
          }
        },
        "additionalProperties": true,
        "description": "The TomTom fuzzy search response."
      }
    },
    {
      "id": "tomtom.reverse_geocode",
      "service": "tomtom",
      "name": "reverse_geocode",
      "description": "Convert a coordinate into human-readable address candidates with the TomTom Reverse Geocoding API.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "The latitude in decimal degrees."
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "The longitude in decimal degrees."
          },
          "radius": {
            "type": "number",
            "exclusiveMinimum": 0,
            "description": "The search radius in meters."
          },
          "entityType": {
            "type": "string",
            "minLength": 1,
            "description": "The TomTom entity type used to shape reverse geocoding results."
          },
          "language": {
            "type": "string",
            "minLength": 1,
            "description": "The IETF language tag for results."
          },
          "returnMatchType": {
            "type": "boolean",
            "description": "Whether TomTom should include the match type metadata."
          },
          "view": {
            "type": "string",
            "minLength": 1,
            "description": "The geopolitical view applied to results."
          }
        },
        "additionalProperties": false,
        "required": [
          "lat",
          "lon"
        ],
        "description": "Input parameters for TomTom reverse geocoding."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "object",
            "properties": {
              "query": {
                "type": "string",
                "description": "The original query echoed by TomTom when available."
              },
              "queryTime": {
                "type": "number",
                "description": "The time spent processing the query in milliseconds."
              },
              "numResults": {
                "type": "integer",
                "description": "The number of results returned in this page."
              },
              "offset": {
                "type": "integer",
                "description": "The zero-based offset of the current page."
              },
              "totalResults": {
                "type": "integer",
                "description": "The total number of matching results."
              },
              "fuzzyLevel": {
                "type": "integer",
                "description": "The fuzzy matching level used by TomTom."
              }
            },
            "additionalProperties": true,
            "description": "The summary metadata returned by TomTom search endpoints."
          },
          "addresses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "One reverse geocoding address object."
            },
            "description": "The reverse geocoding address results returned by TomTom."
          }
        },
        "additionalProperties": true,
        "description": "The TomTom reverse geocoding response."
      }
    }
  ]
}
