{
  "service": "route4me",
  "displayName": "Route4Me",
  "categories": [
    "Location",
    "Productivity"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "ROUTE4ME_API_KEY",
      "description": "Route4Me API key passed as the api_key query parameter.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://route4me.com",
  "actions": [
    {
      "id": "route4me.create_optimization",
      "service": "route4me",
      "name": "create_optimization",
      "description": "Create a Route4Me optimization problem from parameters and destination addresses.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "parameters": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The optimization parameters object accepted by Route4Me."
          },
          "addresses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "address": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The destination address or label accepted by Route4Me."
                }
              },
              "additionalProperties": true,
              "description": "One Route4Me destination object."
            },
            "description": "The destination list to optimize.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "description": "The input payload for creating a Route4Me optimization problem."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "optimizationProblemId": {
            "type": "string",
            "minLength": 1,
            "description": "The optimization problem identifier."
          },
          "state": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The Route4Me optimization state when present."
              },
              {
                "type": "null"
              }
            ]
          },
          "routeIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "The route IDs returned inside the optimization response."
          },
          "routeCount": {
            "type": "integer",
            "minimum": 0,
            "description": "The number of routes included in the optimization response."
          },
          "addressCount": {
            "type": "integer",
            "minimum": 0,
            "description": "The number of addresses included in the optimization response."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw optimization object returned by Route4Me."
          }
        },
        "additionalProperties": false,
        "description": "A normalized Route4Me optimization summary."
      }
    },
    {
      "id": "route4me.delete_optimizations",
      "service": "route4me",
      "name": "delete_optimizations",
      "description": "Delete one or more Route4Me optimization problems by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "optimizationProblemIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One Route4Me optimization problem ID."
            },
            "description": "The optimization problem IDs to delete.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "description": "The input payload for deleting Route4Me optimization problems."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "boolean",
            "description": "Whether Route4Me reported a successful deletion."
          },
          "removed": {
            "type": "integer",
            "minimum": 0,
            "description": "The number of optimization problems removed by Route4Me."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw deletion response returned by Route4Me."
          }
        },
        "additionalProperties": false,
        "description": "The normalized Route4Me optimization deletion response."
      }
    },
    {
      "id": "route4me.list_optimizations",
      "service": "route4me",
      "name": "list_optimizations",
      "description": "List Route4Me optimization problems, or fetch one optimization by its ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "optimizationProblemId": {
            "type": "string",
            "minLength": 1,
            "description": "The optimization problem ID to fetch directly."
          },
          "state": {
            "type": "integer",
            "minimum": 0,
            "maximum": 6,
            "description": "The optimization state filter documented by Route4Me."
          },
          "limit": {
            "type": "integer",
            "minimum": 0,
            "description": "The maximum number of optimization problems to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "The result offset used for pagination."
          },
          "startDate": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "An ISO date string in YYYY-MM-DD format."
          },
          "endDate": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "An ISO date string in YYYY-MM-DD format."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing Route4Me optimization problems."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "optimizations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "optimizationProblemId": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The optimization problem identifier."
                },
                "state": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The Route4Me optimization state when present."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "routeIds": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": "The route IDs returned inside the optimization response."
                },
                "routeCount": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "The number of routes included in the optimization response."
                },
                "addressCount": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "The number of addresses included in the optimization response."
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw optimization object returned by Route4Me."
                }
              },
              "additionalProperties": false,
              "description": "A normalized Route4Me optimization summary."
            },
            "description": "The optimization summaries returned by Route4Me."
          }
        },
        "additionalProperties": false,
        "description": "The normalized Route4Me optimization list response."
      }
    }
  ]
}
