{
  "service": "geocodio",
  "displayName": "Geocodio",
  "categories": [
    "Location",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "GEOCODIO_API_KEY",
      "description": "Geocodio API key used as the api_key query parameter. Create or manage it at https://dash.geocod.io/apikey."
    }
  ],
  "homepageUrl": "https://www.geocod.io",
  "actions": [
    {
      "id": "geocodio.batch_reverse_geocode",
      "service": "geocodio",
      "name": "batch_reverse_geocode",
      "description": "Reverse geocode multiple coordinate pairs in one batch request and return Geocodio batch results.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "coordinates": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One `latitude,longitude` coordinate string."
            },
            "description": "The coordinate strings to reverse geocode in one batch request.",
            "minItems": 1,
            "maxItems": 10000
          },
          "fields": {
            "type": "string",
            "minLength": 1,
            "description": "A comma-separated list of Geocodio data append codes."
          },
          "limit": {
            "type": "integer",
            "minimum": 0,
            "description": "The maximum number of results per coordinate."
          }
        },
        "additionalProperties": false,
        "required": [
          "coordinates"
        ],
        "description": "The input payload for batch reverse geocoding coordinate pairs with Geocodio."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "query": {
                  "type": "string",
                  "description": "The original query string from the batch request."
                },
                "response": {
                  "type": "object",
                  "additionalProperties": {
                    "description": "A property value in a JSON-like object."
                  },
                  "description": "A JSON-like object with arbitrary string keys."
                }
              },
              "additionalProperties": true,
              "description": "One batch geocoding or reverse geocoding result."
            },
            "description": "The ordered batch response items."
          }
        },
        "additionalProperties": false,
        "required": [
          "results"
        ],
        "description": "The Geocodio response for a batch geocoding request."
      }
    },
    {
      "id": "geocodio.geocode_batch",
      "service": "geocodio",
      "name": "geocode_batch",
      "description": "Geocode multiple addresses in one batch request and return Geocodio batch results.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "addresses": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One address string to geocode."
            },
            "description": "The address strings to geocode in one batch request.",
            "minItems": 1,
            "maxItems": 10000
          },
          "fields": {
            "type": "string",
            "minLength": 1,
            "description": "A comma-separated list of Geocodio data append codes."
          },
          "limit": {
            "type": "integer",
            "minimum": 0,
            "description": "The maximum number of results per address."
          }
        },
        "additionalProperties": false,
        "required": [
          "addresses"
        ],
        "description": "The input payload for batch geocoding addresses with Geocodio."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "query": {
                  "type": "string",
                  "description": "The original query string from the batch request."
                },
                "response": {
                  "type": "object",
                  "additionalProperties": {
                    "description": "A property value in a JSON-like object."
                  },
                  "description": "A JSON-like object with arbitrary string keys."
                }
              },
              "additionalProperties": true,
              "description": "One batch geocoding or reverse geocoding result."
            },
            "description": "The ordered batch response items."
          }
        },
        "additionalProperties": false,
        "required": [
          "results"
        ],
        "description": "The Geocodio response for a batch geocoding request."
      }
    },
    {
      "id": "geocodio.single_geocode",
      "service": "geocodio",
      "name": "single_geocode",
      "description": "Geocode a single address and return the official Geocodio response payload.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "minLength": 1,
            "description": "The full address string to geocode."
          },
          "street": {
            "type": "string",
            "minLength": 1,
            "description": "The street address component."
          },
          "street2": {
            "type": "string",
            "minLength": 1,
            "description": "The secondary street address component."
          },
          "city": {
            "type": "string",
            "minLength": 1,
            "description": "The city name used for the lookup."
          },
          "state": {
            "type": "string",
            "minLength": 1,
            "description": "The state or province code used for the lookup."
          },
          "postal_code": {
            "type": "string",
            "minLength": 1,
            "description": "The postal or ZIP code used for the lookup."
          },
          "country": {
            "type": "string",
            "minLength": 1,
            "description": "The country context for the lookup."
          },
          "county": {
            "type": "string",
            "minLength": 1,
            "description": "The county name used for the lookup."
          },
          "fields": {
            "type": "string",
            "minLength": 1,
            "description": "A comma-separated list of Geocodio data append codes."
          },
          "limit": {
            "type": "integer",
            "minimum": 0,
            "description": "The maximum number of results to return."
          },
          "format": {
            "const": "simple",
            "type": "string",
            "description": "Return Geocodio's simplified single-result response format."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for geocoding a single address with Geocodio."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "input": {
            "type": "object",
            "additionalProperties": {
              "description": "A property value in a JSON-like object."
            },
            "description": "A JSON-like object with arbitrary string keys."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "formatted_address": {
                  "type": "string",
                  "description": "The full formatted address."
                },
                "location": {
                  "type": "object",
                  "properties": {
                    "lat": {
                      "type": "number",
                      "description": "The latitude coordinate."
                    },
                    "lng": {
                      "type": "number",
                      "description": "The longitude coordinate."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Latitude and longitude returned by Geocodio."
                },
                "accuracy": {
                  "type": "number",
                  "description": "The match accuracy score from 0.0 to 1.0."
                },
                "accuracy_type": {
                  "type": "string",
                  "description": "The Geocodio accuracy type for the match."
                },
                "source": {
                  "type": "string",
                  "description": "The source dataset for the match."
                },
                "address_components": {
                  "type": "object",
                  "additionalProperties": {
                    "description": "A property value in a JSON-like object."
                  },
                  "description": "A JSON-like object with arbitrary string keys."
                },
                "address_lines": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "One formatted address line."
                  },
                  "description": "Formatted address lines."
                },
                "fields": {
                  "type": "object",
                  "additionalProperties": {
                    "description": "A property value in a JSON-like object."
                  },
                  "description": "A JSON-like object with arbitrary string keys."
                }
              },
              "additionalProperties": true,
              "description": "A single Geocodio geocoding result."
            },
            "description": "The ordered geocoding match results."
          },
          "lat": {
            "type": "number",
            "description": "The latitude returned by Geocodio simple format."
          },
          "lng": {
            "type": "number",
            "description": "The longitude returned by Geocodio simple format."
          },
          "address": {
            "type": "string",
            "description": "The address returned by Geocodio simple format."
          },
          "source": {
            "type": "string",
            "description": "The source returned by Geocodio simple format."
          }
        },
        "additionalProperties": true,
        "description": "The Geocodio response for a single geocode or reverse geocode request."
      }
    },
    {
      "id": "geocodio.single_reverse_geocode",
      "service": "geocodio",
      "name": "single_reverse_geocode",
      "description": "Reverse geocode a single latitude and longitude pair and return the official Geocodio response payload.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "The latitude to reverse geocode."
          },
          "lng": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "The longitude to reverse geocode."
          },
          "fields": {
            "type": "string",
            "minLength": 1,
            "description": "A comma-separated list of Geocodio data append codes."
          },
          "limit": {
            "type": "integer",
            "minimum": 0,
            "description": "The maximum number of results to return."
          },
          "format": {
            "const": "simple",
            "type": "string",
            "description": "Return Geocodio's simplified single-result response format."
          }
        },
        "additionalProperties": false,
        "required": [
          "lat",
          "lng"
        ],
        "description": "The input payload for reverse geocoding a single latitude and longitude pair."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "input": {
            "type": "object",
            "additionalProperties": {
              "description": "A property value in a JSON-like object."
            },
            "description": "A JSON-like object with arbitrary string keys."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "formatted_address": {
                  "type": "string",
                  "description": "The full formatted address."
                },
                "location": {
                  "type": "object",
                  "properties": {
                    "lat": {
                      "type": "number",
                      "description": "The latitude coordinate."
                    },
                    "lng": {
                      "type": "number",
                      "description": "The longitude coordinate."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Latitude and longitude returned by Geocodio."
                },
                "accuracy": {
                  "type": "number",
                  "description": "The match accuracy score from 0.0 to 1.0."
                },
                "accuracy_type": {
                  "type": "string",
                  "description": "The Geocodio accuracy type for the match."
                },
                "source": {
                  "type": "string",
                  "description": "The source dataset for the match."
                },
                "address_components": {
                  "type": "object",
                  "additionalProperties": {
                    "description": "A property value in a JSON-like object."
                  },
                  "description": "A JSON-like object with arbitrary string keys."
                },
                "address_lines": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "One formatted address line."
                  },
                  "description": "Formatted address lines."
                },
                "fields": {
                  "type": "object",
                  "additionalProperties": {
                    "description": "A property value in a JSON-like object."
                  },
                  "description": "A JSON-like object with arbitrary string keys."
                }
              },
              "additionalProperties": true,
              "description": "A single Geocodio geocoding result."
            },
            "description": "The ordered geocoding match results."
          },
          "lat": {
            "type": "number",
            "description": "The latitude returned by Geocodio simple format."
          },
          "lng": {
            "type": "number",
            "description": "The longitude returned by Geocodio simple format."
          },
          "address": {
            "type": "string",
            "description": "The address returned by Geocodio simple format."
          },
          "source": {
            "type": "string",
            "description": "The source returned by Geocodio simple format."
          }
        },
        "additionalProperties": true,
        "description": "The Geocodio response for a single geocode or reverse geocode request."
      }
    }
  ]
}
