{
  "service": "geoapify",
  "displayName": "Geoapify",
  "categories": [
    "Location",
    "Developer Tools"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "GEOAPIFY_API_KEY",
      "description": "Geoapify API key sent as the apiKey query parameter. Create it on the Geoapify MyProjects page: https://myprojects.geoapify.com/."
    }
  ],
  "homepageUrl": "https://www.geoapify.com",
  "actions": [
    {
      "id": "geoapify.address_autocomplete",
      "service": "geoapify",
      "name": "address_autocomplete",
      "description": "Return address autocomplete suggestions from Geoapify.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "description": "The free-form text query sent to Geoapify."
          },
          "lang": {
            "type": "string",
            "minLength": 2,
            "description": "The result language code in ISO 639-1 format."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of results to return."
          },
          "type": {
            "type": "string",
            "enum": [
              "country",
              "state",
              "city",
              "postcode",
              "street",
              "amenity",
              "locality"
            ],
            "description": "The Geoapify place type filter."
          },
          "filter": {
            "type": "string",
            "minLength": 1,
            "description": "The Geoapify boundary or country filter expression."
          },
          "bias": {
            "type": "string",
            "minLength": 1,
            "description": "The Geoapify bias expression used to prioritize results."
          },
          "format": {
            "type": "string",
            "enum": [
              "geojson",
              "json"
            ],
            "description": "The response format returned by Geoapify."
          }
        },
        "additionalProperties": false,
        "required": [
          "text"
        ],
        "description": "Input parameters for Geoapify address autocomplete."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The top-level GeoJSON type returned by Geoapify."
          },
          "features": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Geoapify GeoJSON feature."
            },
            "description": "The GeoJSON features returned by Geoapify."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Geoapify geocoding result."
            },
            "description": "The geocoding results returned by Geoapify JSON format."
          },
          "query": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The query metadata returned by Geoapify when available."
          }
        },
        "additionalProperties": true,
        "description": "The Geoapify geocoding response."
      }
    },
    {
      "id": "geoapify.forward_geocode",
      "service": "geoapify",
      "name": "forward_geocode",
      "description": "Convert free-form text into geocoding results with Geoapify.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "description": "The free-form text query sent to Geoapify."
          },
          "lang": {
            "type": "string",
            "minLength": 2,
            "description": "The result language code in ISO 639-1 format."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of results to return."
          },
          "type": {
            "type": "string",
            "enum": [
              "country",
              "state",
              "city",
              "postcode",
              "street",
              "amenity",
              "locality"
            ],
            "description": "The Geoapify place type filter."
          },
          "filter": {
            "type": "string",
            "minLength": 1,
            "description": "The Geoapify boundary or country filter expression."
          },
          "bias": {
            "type": "string",
            "minLength": 1,
            "description": "The Geoapify bias expression used to prioritize results."
          },
          "format": {
            "type": "string",
            "enum": [
              "geojson",
              "json"
            ],
            "description": "The response format returned by Geoapify."
          }
        },
        "additionalProperties": false,
        "required": [
          "text"
        ],
        "description": "Input parameters for Geoapify forward geocoding."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The top-level GeoJSON type returned by Geoapify."
          },
          "features": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Geoapify GeoJSON feature."
            },
            "description": "The GeoJSON features returned by Geoapify."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Geoapify geocoding result."
            },
            "description": "The geocoding results returned by Geoapify JSON format."
          },
          "query": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The query metadata returned by Geoapify when available."
          }
        },
        "additionalProperties": true,
        "description": "The Geoapify geocoding response."
      }
    },
    {
      "id": "geoapify.get_route",
      "service": "geoapify",
      "name": "get_route",
      "description": "Calculate a route between waypoints with the Geoapify Routing API.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "waypoints": {
            "type": "array",
            "items": {
              "type": "array",
              "prefixItems": [
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "description": "The longitude value in decimal degrees."
                },
                {
                  "type": "number",
                  "minimum": -90,
                  "maximum": 90,
                  "description": "The latitude value in decimal degrees."
                }
              ],
              "items": false,
              "minItems": 2,
              "maxItems": 2,
              "description": "A `[longitude, latitude]` coordinate pair."
            },
            "description": "The ordered route waypoints as `[longitude, latitude]` pairs.",
            "minItems": 2
          },
          "mode": {
            "type": "string",
            "minLength": 1,
            "description": "The Geoapify routing mode."
          },
          "type": {
            "type": "string",
            "minLength": 1,
            "description": "The Geoapify route preference."
          },
          "units": {
            "type": "string",
            "minLength": 1,
            "description": "The distance unit system."
          },
          "lang": {
            "type": "string",
            "minLength": 2,
            "description": "The language for route instructions."
          },
          "details": {
            "type": "string",
            "minLength": 1,
            "description": "The extra route details to include."
          },
          "traffic": {
            "type": "string",
            "minLength": 1,
            "description": "The traffic model used for the route."
          },
          "max_speed": {
            "type": "number",
            "minimum": 10,
            "maximum": 252,
            "description": "The maximum vehicle speed in kilometers per hour."
          },
          "avoid": {
            "type": "string",
            "minLength": 1,
            "description": "The route avoid expression used by Geoapify."
          },
          "format": {
            "type": "string",
            "enum": [
              "geojson",
              "json"
            ],
            "description": "The response format returned by Geoapify."
          }
        },
        "additionalProperties": false,
        "required": [
          "waypoints"
        ],
        "description": "Input parameters for Geoapify route calculation."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The top-level GeoJSON type returned by Geoapify."
          },
          "features": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Geoapify route feature."
            },
            "description": "The route features returned by Geoapify."
          },
          "properties": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The top-level route metadata returned by Geoapify."
          }
        },
        "additionalProperties": true,
        "description": "The Geoapify routing response."
      }
    },
    {
      "id": "geoapify.get_route_matrix",
      "service": "geoapify",
      "name": "get_route_matrix",
      "description": "Calculate a travel matrix between sources and targets with Geoapify.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "location": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "description": "The longitude value in decimal degrees."
                    },
                    {
                      "type": "number",
                      "minimum": -90,
                      "maximum": 90,
                      "description": "The latitude value in decimal degrees."
                    }
                  ],
                  "items": false,
                  "minItems": 2,
                  "maxItems": 2,
                  "description": "A `[longitude, latitude]` coordinate pair."
                }
              },
              "additionalProperties": false,
              "required": [
                "location"
              ],
              "description": "One route matrix waypoint definition."
            },
            "description": "The source waypoints used for the route matrix.",
            "minItems": 1
          },
          "targets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "location": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "description": "The longitude value in decimal degrees."
                    },
                    {
                      "type": "number",
                      "minimum": -90,
                      "maximum": 90,
                      "description": "The latitude value in decimal degrees."
                    }
                  ],
                  "items": false,
                  "minItems": 2,
                  "maxItems": 2,
                  "description": "A `[longitude, latitude]` coordinate pair."
                }
              },
              "additionalProperties": false,
              "required": [
                "location"
              ],
              "description": "One route matrix waypoint definition."
            },
            "description": "The target waypoints used for the route matrix.",
            "minItems": 1
          },
          "mode": {
            "type": "string",
            "minLength": 1,
            "description": "The Geoapify routing mode."
          },
          "type": {
            "type": "string",
            "minLength": 1,
            "description": "The Geoapify route preference."
          },
          "units": {
            "type": "string",
            "minLength": 1,
            "description": "The distance unit system."
          },
          "traffic": {
            "type": "string",
            "minLength": 1,
            "description": "The traffic model used for the route."
          },
          "max_speed": {
            "type": "number",
            "minimum": 10,
            "maximum": 252,
            "description": "The maximum vehicle speed in kilometers per hour."
          },
          "avoid": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The avoided road or feature type."
                },
                "importance": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "description": "The importance of the avoid rule."
                }
              },
              "additionalProperties": false,
              "required": [
                "type"
              ],
              "description": "One avoid rule object."
            },
            "description": "The list of avoid rules applied to the route matrix."
          }
        },
        "additionalProperties": false,
        "required": [
          "sources",
          "targets"
        ],
        "description": "Input parameters for Geoapify route matrix calculation."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "description": "The travel mode used for the route matrix."
          },
          "type": {
            "type": "string",
            "description": "The route preference used for the route matrix."
          },
          "units": {
            "type": "string",
            "description": "The unit system used for the route matrix."
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "One normalized source."
            },
            "description": "The normalized route matrix sources."
          },
          "targets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "One normalized target."
            },
            "description": "The normalized route matrix targets."
          },
          "sources_to_targets": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "One matrix cell entry."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "description": "One matrix row."
            },
            "description": "The source-to-target travel matrix returned by Geoapify."
          }
        },
        "additionalProperties": true,
        "description": "The Geoapify route matrix response."
      }
    },
    {
      "id": "geoapify.reverse_geocode",
      "service": "geoapify",
      "name": "reverse_geocode",
      "description": "Convert latitude and longitude into place results with Geoapify.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "The latitude of the location to reverse geocode."
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "The longitude of the location to reverse geocode."
          },
          "lang": {
            "type": "string",
            "minLength": 2,
            "description": "The result language code in ISO 639-1 format."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of results to return."
          },
          "type": {
            "type": "string",
            "enum": [
              "country",
              "state",
              "city",
              "postcode",
              "street",
              "amenity",
              "locality"
            ],
            "description": "The Geoapify place type filter."
          },
          "filter": {
            "type": "string",
            "minLength": 1,
            "description": "The Geoapify boundary or country filter expression."
          },
          "bias": {
            "type": "string",
            "minLength": 1,
            "description": "The Geoapify bias expression used to prioritize results."
          },
          "format": {
            "type": "string",
            "enum": [
              "geojson",
              "json"
            ],
            "description": "The response format returned by Geoapify."
          }
        },
        "additionalProperties": false,
        "required": [
          "lat",
          "lon"
        ],
        "description": "Input parameters for Geoapify reverse geocoding."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The top-level GeoJSON type returned by Geoapify."
          },
          "features": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Geoapify GeoJSON feature."
            },
            "description": "The GeoJSON features returned by Geoapify."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Geoapify geocoding result."
            },
            "description": "The geocoding results returned by Geoapify JSON format."
          },
          "query": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The query metadata returned by Geoapify when available."
          }
        },
        "additionalProperties": true,
        "description": "The Geoapify geocoding response."
      }
    }
  ]
}
