{
  "components": {
    "schemas": {
      "SwiggyCategoriesCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "swiggy.categories"
            ],
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "When the source data was read and the job completed (ISO 8601 UTC). This is the observation time for the returned data, to the job's precision, not a per-item upstream timestamp. Null unless the job completed.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "outcome": {
            "description": "Truthful module completion detail; status is complete unless the module reports partial or incomplete output.",
            "type": "object"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Raw capability output. Its shape may evolve with the upstream source; the example is illustrative, not a compatibility guarantee.",
                  "example": {
                    "items": [
                      {
                        "entity_id": "swiggy://explore?query=Rolls",
                        "id": "600995",
                        "image_id": "rng/md/carousel/production/3df4fca020027e89b89c733cdffc4966",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/rng/md/carousel/production/3df4fca020027e89b89c733cdffc4966",
                        "latitude": 12.9121181,
                        "link": "swiggy://explore?query=Rolls",
                        "longitude": 77.6445548,
                        "query": "Rolls",
                        "rank": 1,
                        "section": "Popular Cuisines"
                      },
                      {
                        "entity_id": "swiggy://explore?query=Pizza",
                        "id": "600813",
                        "image_id": "rng/md/carousel/production/5dd234f7decdac4b4f71a2ff1408e10f",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/rng/md/carousel/production/5dd234f7decdac4b4f71a2ff1408e10f",
                        "latitude": 12.9121181,
                        "link": "swiggy://explore?query=Pizza",
                        "longitude": 77.6445548,
                        "query": "Pizza",
                        "rank": 2,
                        "section": "Popular Cuisines"
                      },
                      {
                        "entity_id": "swiggy://explore?query=Tea",
                        "id": "601016",
                        "image_id": "rng/md/carousel/production/87664acb0f9dd95d10a549bb8190ab27",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/rng/md/carousel/production/87664acb0f9dd95d10a549bb8190ab27",
                        "latitude": 12.9121181,
                        "link": "swiggy://explore?query=Tea",
                        "longitude": 77.6445548,
                        "query": "Tea",
                        "rank": 3,
                        "section": "Popular Cuisines"
                      }
                    ],
                    "summary": {
                      "latitude": 12.9121181,
                      "longitude": 77.6445548,
                      "total_items": 12
                    }
                  }
                },
                "error": {
                  "type": "null"
                },
                "index": {
                  "const": 0,
                  "type": "integer"
                },
                "url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "url",
                "data",
                "error"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "started_at": {
            "anyOf": [
              {
                "description": "When the job began executing (ISO 8601 UTC), or null if it never ran.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "started_at",
          "completed_at",
          "results",
          "billing",
          "stats",
          "outcome"
        ],
        "type": "object"
      },
      "SwiggyListAllRestaurantsInput": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "required": [
              "latitude",
              "longitude"
            ]
          },
          {
            "properties": {
              "latitude": {
                "type": "null"
              },
              "longitude": {
                "type": "null"
              }
            }
          }
        ],
        "properties": {
          "latitude": {
            "description": "Latitude; supply together with longitude, or omit both for the default delivery area.",
            "maximum": 90,
            "minimum": -90,
            "type": "number"
          },
          "longitude": {
            "description": "Longitude; supply together with latitude, or omit both for the default delivery area.",
            "maximum": 180,
            "minimum": -180,
            "type": "number"
          },
          "max_pages": {
            "description": "Kept for compatibility. Swiggy serves one listing page per location, so one page is fetched; a larger value is applied as 1 and noted in summary.warnings. It still sets the default max_restaurants (page_limit x max_pages).",
            "type": "integer"
          },
          "max_restaurants": {
            "description": "Maximum restaurants to return.",
            "type": "integer"
          },
          "offset": {
            "description": "Not supported: Swiggy serves one listing page per location, so there is no next page to continue. Omit it; any value is rejected as invalid_input.",
            "maxLength": 16384,
            "type": "string"
          },
          "page_limit": {
            "description": "Requested source page size. Swiggy returns its whole first listing page (about 26 restaurants) whatever this asks for; use max_restaurants to cap results.",
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      },
      "SwiggyAreaRestaurantsCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "swiggy.area.restaurants"
            ],
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "When the source data was read and the job completed (ISO 8601 UTC). This is the observation time for the returned data, to the job's precision, not a per-item upstream timestamp. Null unless the job completed.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "outcome": {
            "description": "Truthful module completion detail; status is complete unless the module reports partial or incomplete output.",
            "type": "object"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Raw capability output. Its shape may evolve with the upstream source; the example is illustrative, not a compatibility guarantee.",
                  "example": {
                    "items": [
                      {
                        "area_name": "HSR Layout",
                        "cell_id": "cell-0001",
                        "cell_latitude": 12.903109,
                        "cell_longitude": 77.635312,
                        "cell_rank": 1,
                        "cloudinary_image_id": "RX_THUMBNAIL/IMAGES/VENDOR/2026/6/15/[redacted:token].JPG",
                        "cost_for_two_minor": 30000,
                        "cost_for_two_text": "₹300 for two",
                        "crawl_id": "370dccd0-c950-4726-8152-edb5499068ed",
                        "cuisines": [
                          "Pizzas"
                        ],
                        "cuisines_text": "Pizzas",
                        "delivery_time_minutes": 29,
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/RX_THUMBNAIL/IMAGES/VENDOR/2026/6/15/[redacted:token].JPG",
                        "is_open": true,
                        "last_mile_travel_km": 1.7,
                        "last_mile_travel_text": "1.7 km",
                        "latitude": 12.903109,
                        "locality": "14th Main",
                        "longitude": 77.635312,
                        "name": "Pizza Hut",
                        "offer_headers": [
                          "50% OFF"
                        ],
                        "offer_text": "50% OFF",
                        "parent_id": "721",
                        "rating": 4,
                        "rating_text": "4.0",
                        "restaurant_id": "10581",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/[redacted:token]",
                        "serviceability": "SERVICEABLE",
                        "sla_text": "25-30 mins",
                        "total_ratings_text": "21K+"
                      },
                      {
                        "area_name": "HSR Layout",
                        "cell_id": "cell-0001",
                        "cell_latitude": 12.903109,
                        "cell_longitude": 77.635312,
                        "cell_rank": 1,
                        "cloudinary_image_id": "RX_THUMBNAIL/IMAGES/VENDOR/2024/11/7/[redacted:token].jpg",
                        "cost_for_two_minor": 20000,
                        "cost_for_two_text": "₹200 for two",
                        "crawl_id": "370dccd0-c950-4726-8152-edb5499068ed",
                        "cuisines": [
                          "Bubble Tea",
                          "Burger",
                          "Korean"
                        ],
                        "cuisines_text": "Bubble Tea, Burger, Korean, Beverages, Fast Food, Juice and shake",
                        "delivery_time_minutes": 34,
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/RX_THUMBNAIL/IMAGES/VENDOR/2024/11/7/[redacted:token].jpg",
                        "is_open": true,
                        "last_mile_travel_km": 2.8,
                        "last_mile_travel_text": "2.8 km",
                        "latitude": 12.903109,
                        "locality": "5TH SECTOR",
                        "longitude": 77.635312,
                        "name": "Boba Bhai - Bubble Tea & Korean Street Food",
                        "offer_headers": [
                          "60% OFF"
                        ],
                        "offer_text": "60% OFF",
                        "parent_id": "361235",
                        "rating": 4.2,
                        "rating_text": "4.2",
                        "restaurant_id": "819617",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/[redacted:token]",
                        "serviceability": "SERVICEABLE",
                        "sla_text": "30-35 mins",
                        "total_ratings_text": "1.2K+"
                      },
                      {
                        "area_name": "HSR Layout",
                        "cell_id": "cell-0001",
                        "cell_latitude": 12.903109,
                        "cell_longitude": 77.635312,
                        "cell_rank": 1,
                        "cloudinary_image_id": "RX_THUMBNAIL/IMAGES/VENDOR/2026/6/18/[redacted:token].JPG",
                        "cost_for_two_minor": 40000,
                        "cost_for_two_text": "₹400 for two",
                        "crawl_id": "370dccd0-c950-4726-8152-edb5499068ed",
                        "cuisines": [
                          "Burgers",
                          "Beverages",
                          "Cafe"
                        ],
                        "cuisines_text": "Burgers, Beverages, Cafe, Desserts",
                        "delivery_time_minutes": 26,
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/RX_THUMBNAIL/IMAGES/VENDOR/2026/6/18/[redacted:token].JPG",
                        "is_open": true,
                        "last_mile_travel_km": 1.4,
                        "last_mile_travel_text": "1.4 km",
                        "latitude": 12.903109,
                        "locality": "HSR Layout",
                        "longitude": 77.635312,
                        "name": "McDonald's",
                        "offer_headers": [
                          "ITEMS"
                        ],
                        "offer_text": "ITEMS",
                        "parent_id": "630",
                        "rating": 4.3,
                        "rating_text": "4.3",
                        "restaurant_id": "23682",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/mcdonalds-hsr-layout-rest23682",
                        "serviceability": "SERVICEABLE",
                        "sla_text": "25-30 mins",
                        "total_ratings_text": "79K+"
                      }
                    ],
                    "summary": {
                      "cells": 2,
                      "crawl_id": "370dccd0-c950-4726-8152-edb5499068ed",
                      "has_more": true,
                      "pages_fetched": 2,
                      "stop_reason": "first_page_only",
                      "total_items": 26,
                      "truncated": true
                    }
                  }
                },
                "error": {
                  "type": "null"
                },
                "index": {
                  "const": 0,
                  "type": "integer"
                },
                "url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "url",
                "data",
                "error"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "started_at": {
            "anyOf": [
              {
                "description": "When the job began executing (ISO 8601 UTC), or null if it never ran.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "started_at",
          "completed_at",
          "results",
          "billing",
          "stats",
          "outcome"
        ],
        "type": "object"
      },
      "SwiggyListRestaurantsExecuteRequest": {
        "additionalProperties": false,
        "description": "Stream restaurant rows from Swiggy's first listing page near a location.",
        "example": {
          "capability": "swiggy.list.restaurants",
          "input": {
            "latitude": 12.9121181,
            "limit": 5,
            "longitude": 77.6445548
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "swiggy.list.restaurants"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/SwiggyListRestaurantsInput"
          },
          "max_credits": {
            "description": "Optional credit ceiling. The job is refused with `credit_limit_exceeded` before acceptance when its published price is higher. Takes precedence over the `X-Max-Credits` header.",
            "minimum": 1,
            "type": "integer"
          },
          "network": {
            "$ref": "#/components/schemas/ExecuteNetwork"
          },
          "timeout_ms": {
            "description": "Optional request timeout in milliseconds. Values above the capability timeout are rejected.",
            "maximum": 30000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "capability",
          "input"
        ],
        "type": "object"
      },
      "SwiggySearchDishesCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "swiggy.search.dishes"
            ],
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "When the source data was read and the job completed (ISO 8601 UTC). This is the observation time for the returned data, to the job's precision, not a per-item upstream timestamp. Null unless the job completed.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "outcome": {
            "description": "Truthful module completion detail; status is complete unless the module reports partial or incomplete output.",
            "type": "object"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Raw capability output. Its shape may evolve with the upstream source; the example is illustrative, not a compatibility guarantee.",
                  "example": {
                    "items": [
                      {
                        "category": "Savouries",
                        "description": "Julian cuts of veggies filling stuffed in lamnited puff sheets and baked perfect",
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2025/7/24/[redacted:token].jpg",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2025/7/24/[redacted:token].jpg",
                        "in_stock": true,
                        "is_veg": true,
                        "item_id": "37867971",
                        "name": "Veg Roll",
                        "price_minor": 4857,
                        "query": "rolls",
                        "rank": 1,
                        "rating": 4.4,
                        "rating_count": "998 ratings",
                        "restaurant_area_name": "HSR",
                        "restaurant_city": "1",
                        "restaurant_cuisines": [
                          "Bakery",
                          " Desserts",
                          " Cakes & Pastries"
                        ],
                        "restaurant_cuisines_text": "Bakery,  Desserts,  Cakes & Pastries,  Snacks",
                        "restaurant_id": "154991",
                        "restaurant_locality": "4th Sector",
                        "restaurant_name": "Cakewala",
                        "restaurant_rating": 4.5,
                        "restaurant_rating_text": "4.5",
                        "restaurant_url": "https://www.swiggy.com/city/1/cakewala-hsr-hsr-rest154991"
                      },
                      {
                        "category": "Savouries",
                        "description": "A rich yeast based dough stuffed with veg filling, deep fried to golden brown colour",
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2025/7/24/[redacted:token].jpg",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2025/7/24/[redacted:token].jpg",
                        "in_stock": true,
                        "is_veg": true,
                        "item_id": "38328091",
                        "name": "Special Roll",
                        "price_minor": 5524,
                        "query": "rolls",
                        "rank": 2,
                        "rating": 4.5,
                        "rating_count": "782 ratings",
                        "restaurant_area_name": "HSR",
                        "restaurant_city": "1",
                        "restaurant_cuisines": [
                          "Bakery",
                          " Desserts",
                          " Cakes & Pastries"
                        ],
                        "restaurant_cuisines_text": "Bakery,  Desserts,  Cakes & Pastries,  Snacks",
                        "restaurant_id": "154991",
                        "restaurant_locality": "4th Sector",
                        "restaurant_name": "Cakewala",
                        "restaurant_rating": 4.5,
                        "restaurant_rating_text": "4.5",
                        "restaurant_url": "https://www.swiggy.com/city/1/cakewala-hsr-hsr-rest154991"
                      },
                      {
                        "addon_group_count": 1,
                        "addon_group_names": [
                          "Extra"
                        ],
                        "addon_group_names_text": "Extra",
                        "category": "Rolls",
                        "description": "Deliciously succulent, this non-veg roll is a flavorful combination of tender chicken, enveloped in a soft, warm wrap.",
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2025/8/11/[redacted:token].jpeg",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2025/8/11/[redacted:token].jpeg",
                        "in_stock": true,
                        "item_id": "90095957",
                        "name": "Chicken Roll",
                        "price_minor": 11000,
                        "query": "rolls",
                        "rank": 3,
                        "rating": 4.2,
                        "rating_count": "101 ratings",
                        "restaurant_area_name": "Hsr Layout",
                        "restaurant_city": "1",
                        "restaurant_cuisines": [
                          "Indian",
                          "Chinese",
                          "Snacks"
                        ],
                        "restaurant_cuisines_text": "Indian, Chinese, Snacks, Biryani",
                        "restaurant_id": "524998",
                        "restaurant_locality": "3rd Sector",
                        "restaurant_name": "Ande Ka Funda",
                        "restaurant_rating": 4.2,
                        "restaurant_rating_text": "4.2",
                        "restaurant_url": "https://www.swiggy.com/city/1/ande-ka-funda-hsr-hsr-rest524998"
                      }
                    ],
                    "summary": {
                      "latitude": 12.9121181,
                      "longitude": 77.6445548,
                      "query": "rolls",
                      "total_items": 10
                    }
                  }
                },
                "error": {
                  "type": "null"
                },
                "index": {
                  "const": 0,
                  "type": "integer"
                },
                "url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "url",
                "data",
                "error"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "started_at": {
            "anyOf": [
              {
                "description": "When the job began executing (ISO 8601 UTC), or null if it never ran.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "started_at",
          "completed_at",
          "results",
          "billing",
          "stats",
          "outcome"
        ],
        "type": "object"
      },
      "JobPendingResponse": {
        "additionalProperties": false,
        "properties": {
          "capability": {
            "enum": [
              "swiggy.ads.list",
              "swiggy.area.menu_items",
              "swiggy.area.restaurants",
              "swiggy.categories",
              "swiggy.list",
              "swiggy.list.all_restaurants",
              "swiggy.list.restaurants",
              "swiggy.menu",
              "swiggy.menu.area_items",
              "swiggy.menu.items",
              "swiggy.search.dishes",
              "swiggy.search.restaurants"
            ],
            "type": "string"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "poll_after_ms": {
            "description": "Wait at least this long before polling.",
            "minimum": 0,
            "type": "integer"
          },
          "poll_url": {
            "description": "GET this URL with the same API key to read the job.",
            "format": "uri",
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "state": {
            "enum": [
              "queued",
              "running",
              "retrying"
            ],
            "type": "string"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state"
        ],
        "type": "object"
      },
      "SwiggyListExecuteRequest": {
        "additionalProperties": false,
        "description": "List restaurants with prices, ratings and offers from Swiggy's first listing page near a delivery location.",
        "example": {
          "capability": "swiggy.list",
          "input": {
            "latitude": 12.9121181,
            "limit": 5,
            "longitude": 77.6445548
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "swiggy.list"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/SwiggyListInput"
          },
          "max_credits": {
            "description": "Optional credit ceiling. The job is refused with `credit_limit_exceeded` before acceptance when its published price is higher. Takes precedence over the `X-Max-Credits` header.",
            "minimum": 1,
            "type": "integer"
          },
          "network": {
            "$ref": "#/components/schemas/ExecuteNetwork"
          },
          "timeout_ms": {
            "description": "Optional request timeout in milliseconds. Values above the capability timeout are rejected.",
            "maximum": 30000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "capability",
          "input"
        ],
        "type": "object"
      },
      "SwiggyListInput": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "required": [
              "latitude",
              "longitude"
            ]
          },
          {
            "properties": {
              "latitude": {
                "type": "null"
              },
              "longitude": {
                "type": "null"
              }
            }
          }
        ],
        "properties": {
          "latitude": {
            "description": "Latitude; supply together with longitude, or omit both for the default delivery area.",
            "maximum": 90,
            "minimum": -90,
            "type": "number"
          },
          "limit": {
            "description": "Maximum number of results, taken from Swiggy's first listing page.",
            "type": "integer"
          },
          "longitude": {
            "description": "Longitude; supply together with latitude, or omit both for the default delivery area.",
            "maximum": 180,
            "minimum": -180,
            "type": "number"
          },
          "offset": {
            "description": "Not supported: Swiggy serves one listing page per location, so there is no next page to continue. Omit it; any value is rejected as invalid_input.",
            "maxLength": 16384,
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "SwiggyAdsListCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "swiggy.ads.list"
            ],
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "When the source data was read and the job completed (ISO 8601 UTC). This is the observation time for the returned data, to the job's precision, not a per-item upstream timestamp. Null unless the job completed.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "outcome": {
            "description": "Truthful module completion detail; status is complete unless the module reports partial or incomplete output.",
            "type": "object"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Raw capability output. Its shape may evolve with the upstream source; the example is illustrative, not a compatibility guarantee.",
                  "example": {
                    "items": [
                      {
                        "area_name": "HSR Layout",
                        "captured_at": "2026-08-01T10:58:26Z",
                        "cuisines": [
                          "Pizzas"
                        ],
                        "cuisines_text": "Pizzas",
                        "delivery_time_minutes": 25,
                        "is_promoted": false,
                        "latitude": 12.9121181,
                        "locality": "14th Main",
                        "longitude": 77.6445548,
                        "offer_text": "50% OFF",
                        "rank": 1,
                        "rating": 4,
                        "rating_text": "4.0",
                        "restaurant_id": "10581",
                        "restaurant_name": "Pizza Hut",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/[redacted:token]",
                        "run_id": "521ec12e-e52a-45ee-8029-c5018509e3fe",
                        "sla_text": "25-30 mins",
                        "surface": "list",
                        "total_ratings_text": "21K+"
                      },
                      {
                        "area_name": "HSR Layout",
                        "captured_at": "2026-08-01T10:58:26Z",
                        "cuisines": [
                          "Bubble Tea",
                          "Burger",
                          "Korean"
                        ],
                        "cuisines_text": "Bubble Tea, Burger, Korean, Beverages, Fast Food, Juice and shake",
                        "delivery_time_minutes": 22,
                        "is_promoted": false,
                        "latitude": 12.9121181,
                        "locality": "5TH SECTOR",
                        "longitude": 77.6445548,
                        "offer_text": "60% OFF",
                        "rank": 2,
                        "rating": 4.2,
                        "rating_text": "4.2",
                        "restaurant_id": "819617",
                        "restaurant_name": "Boba Bhai - Bubble Tea & Korean Street Food",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/[redacted:token]",
                        "run_id": "521ec12e-e52a-45ee-8029-c5018509e3fe",
                        "sla_text": "20-25 mins",
                        "surface": "list",
                        "total_ratings_text": "1.2K+"
                      },
                      {
                        "area_name": "HSR Layout",
                        "captured_at": "2026-08-01T10:58:26Z",
                        "cuisines": [
                          "Burgers",
                          "Beverages",
                          "Cafe"
                        ],
                        "cuisines_text": "Burgers, Beverages, Cafe, Desserts",
                        "delivery_time_minutes": 26,
                        "is_promoted": false,
                        "latitude": 12.9121181,
                        "locality": "HSR Layout",
                        "longitude": 77.6445548,
                        "offer_text": "ITEMS",
                        "rank": 3,
                        "rating": 4.3,
                        "rating_text": "4.3",
                        "restaurant_id": "23682",
                        "restaurant_name": "McDonald's",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/mcdonalds-hsr-layout-rest23682",
                        "run_id": "521ec12e-e52a-45ee-8029-c5018509e3fe",
                        "sla_text": "25-30 mins",
                        "surface": "list",
                        "total_ratings_text": "79K+"
                      }
                    ],
                    "summary": {
                      "captured_at": "2026-08-01T10:58:26Z",
                      "has_more": true,
                      "latitude": 12.9121181,
                      "longitude": 77.6445548,
                      "pages_fetched": 1,
                      "run_id": "521ec12e-e52a-45ee-8029-c5018509e3fe",
                      "stop_reason": "limit",
                      "surface": "list",
                      "total_items": 5,
                      "truncated": true
                    }
                  }
                },
                "error": {
                  "type": "null"
                },
                "index": {
                  "const": 0,
                  "type": "integer"
                },
                "url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "url",
                "data",
                "error"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "started_at": {
            "anyOf": [
              {
                "description": "When the job began executing (ISO 8601 UTC), or null if it never ran.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "started_at",
          "completed_at",
          "results",
          "billing",
          "stats",
          "outcome"
        ],
        "type": "object"
      },
      "SwiggyMenuItemsCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "swiggy.menu.items"
            ],
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "When the source data was read and the job completed (ISO 8601 UTC). This is the observation time for the returned data, to the job's precision, not a per-item upstream timestamp. Null unless the job completed.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "outcome": {
            "description": "Truthful module completion detail; status is complete unless the module reports partial or incomplete output.",
            "type": "object"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Raw capability output. Its shape may evolve with the upstream source; the example is illustrative, not a compatibility guarantee.",
                  "example": {
                    "items": [
                      {
                        "addon_group_count": 4,
                        "addon_group_names": [
                          "Choose Your Burger",
                          "Choose Your Side",
                          "Choose Your_Beverage"
                        ],
                        "addon_group_names_text": "Choose Your Burger | Choose Your Side | Choose Your_Beverage | Best Seller Add-ons",
                        "category": "Mix'N'Match- Your Way (upto 50% OFF)",
                        "default_price_minor": 25500,
                        "description": "Build Your Own Meal. Save upto 38%..",
                        "final_price_minor": 15900,
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2025/12/15/[redacted:token].jpg_compressed",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2025/12/15/[redacted:token].jpg_compressed",
                        "in_stock": true,
                        "is_veg": true,
                        "item_id": "189380929",
                        "name": "Value Meal for 1- Make it Your Way (Veg)",
                        "offer_ids": [
                          "de772201-cfe9-4ac8-9657-f922c7131c68"
                        ],
                        "offer_ids_text": "de772201-cfe9-4ac8-9657-f922c7131c68",
                        "price_minor": 25500,
                        "rating": 3.8,
                        "rating_count": "3 ratings",
                        "restaurant_area_name": "Shivaji Nagar",
                        "restaurant_city": "Bangalore",
                        "restaurant_cuisines": [
                          "Burgers",
                          "American"
                        ],
                        "restaurant_cuisines_text": "Burgers, American",
                        "restaurant_id": "5938",
                        "restaurant_locality": "Tasker Town",
                        "restaurant_name": "Burger King",
                        "restaurant_rating": 4.2,
                        "restaurant_rating_text": "4.2",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/burger-king-central-bangalore-rest5938"
                      },
                      {
                        "addon_group_count": 11,
                        "addon_group_names": [
                          "Say Cheese",
                          "Selected - Grill Chicken Whopper Deluxe",
                          "Selected - Grill_Chicken_Whopper_Deluxe"
                        ],
                        "addon_group_names_text": "Say Cheese | Selected - Grill Chicken Whopper Deluxe | Selected - Grill_Chicken_Whopper_Deluxe | Choose Your Side (Any) | Choose Your Beverage (Any) | Best Seller Add-on | Choose_Your_Side | Choose_Your_Beverage | Choose Your_Beverage (Any 1) | Choose Your Dessert | Best Seller Add_ons",
                        "category": "New Whopper Deluxe",
                        "default_price_minor": 19900,
                        "description": "Reg. Size premium glaze bun with 7 layers of taste: Flame Grill Chicken patty, fresh onion, crispy lettuce, juicy tomatoes (seasonal), tangy gherkins, creamy & smoky sauces.\nQty: 168 gms| Kcal: 327 | Carbs: 35 gms| Sugar: 1 gms| Fat: 14 gms| Saturated fat: 3 gms| Protein: 15 gms|",
                        "final_price_minor": 15900,
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2025/7/5/[redacted:token].jpg",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2025/7/5/[redacted:token].jpg",
                        "in_stock": true,
                        "item_id": "175726657",
                        "name": "Grill Chicken Whopper Deluxe.",
                        "offer_ids": [
                          "de772201-cfe9-4ac8-9657-f922c7131c68"
                        ],
                        "offer_ids_text": "de772201-cfe9-4ac8-9657-f922c7131c68",
                        "price_minor": 19900,
                        "rating": 3.3,
                        "rating_count": "12 ratings",
                        "restaurant_area_name": "Shivaji Nagar",
                        "restaurant_city": "Bangalore",
                        "restaurant_cuisines": [
                          "Burgers",
                          "American"
                        ],
                        "restaurant_cuisines_text": "Burgers, American",
                        "restaurant_id": "5938",
                        "restaurant_locality": "Tasker Town",
                        "restaurant_name": "Burger King",
                        "restaurant_rating": 4.2,
                        "restaurant_rating_text": "4.2",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/burger-king-central-bangalore-rest5938",
                        "variant_group_count": 1,
                        "variant_group_names": [
                          "Customized"
                        ],
                        "variant_group_names_text": "Customized"
                      },
                      {
                        "addon_group_count": 11,
                        "addon_group_names": [
                          "Selected - Cheese Whopper Deluxe",
                          "Say Cheese",
                          "Selected - Cheese_Whopper_Deluxe"
                        ],
                        "addon_group_names_text": "Selected - Cheese Whopper Deluxe | Say Cheese | Selected - Cheese_Whopper_Deluxe | Choose Your Side (Any) | Choose Your Beverage (Any) | Best Seller Add-on | Choose_Your_Side | Choose_Your_Beverage | Choose Your_Beverage (Any 1) | Choose Your Dessert | Best Seller Add_ons",
                        "category": "New Whopper Deluxe",
                        "default_price_minor": 19900,
                        "description": "Reg. Size premium glaze bun with 7 layers of taste: Molten Cheese Lava patty, fresh onion, crispy lettuce, juicy tomatoes (seasonal), tangy gherkins, creamy & smoky sauces.\nQty: 230 gms| Kcal: 765 | Carbs: 35 gms| Sugar: 10 gms| Fat: 54 gms| Saturated fat: 20 gms| Protein: 35 gms|",
                        "final_price_minor": 15900,
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2025/7/5/[redacted:token].jpg",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2025/7/5/[redacted:token].jpg",
                        "in_stock": true,
                        "is_veg": true,
                        "item_id": "175726656",
                        "name": "Cheese Whopper Deluxe.",
                        "offer_ids": [
                          "de772201-cfe9-4ac8-9657-f922c7131c68"
                        ],
                        "offer_ids_text": "de772201-cfe9-4ac8-9657-f922c7131c68",
                        "price_minor": 19900,
                        "rating": 3.3,
                        "rating_count": "6 ratings",
                        "restaurant_area_name": "Shivaji Nagar",
                        "restaurant_city": "Bangalore",
                        "restaurant_cuisines": [
                          "Burgers",
                          "American"
                        ],
                        "restaurant_cuisines_text": "Burgers, American",
                        "restaurant_id": "5938",
                        "restaurant_locality": "Tasker Town",
                        "restaurant_name": "Burger King",
                        "restaurant_rating": 4.2,
                        "restaurant_rating_text": "4.2",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/burger-king-central-bangalore-rest5938",
                        "variant_group_count": 1,
                        "variant_group_names": [
                          "Customized"
                        ],
                        "variant_group_names_text": "Customized"
                      }
                    ],
                    "summary": {
                      "restaurant_id": "5938",
                      "total_items": 5
                    }
                  }
                },
                "error": {
                  "type": "null"
                },
                "index": {
                  "const": 0,
                  "type": "integer"
                },
                "url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "url",
                "data",
                "error"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "started_at": {
            "anyOf": [
              {
                "description": "When the job began executing (ISO 8601 UTC), or null if it never ran.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "started_at",
          "completed_at",
          "results",
          "billing",
          "stats",
          "outcome"
        ],
        "type": "object"
      },
      "SwiggyMenuItemsExecuteRequest": {
        "additionalProperties": false,
        "description": "Stream flat Swiggy menu items by restaurant ID or city restaurant URL. Use swiggy.menu for nested add-ons and variant pricing.",
        "example": {
          "capability": "swiggy.menu.items",
          "input": {
            "latitude": 12.9716,
            "limit": 5,
            "longitude": 77.5946,
            "restaurant_id": "5938"
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "swiggy.menu.items"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/SwiggyMenuItemsInput"
          },
          "max_credits": {
            "description": "Optional credit ceiling. The job is refused with `credit_limit_exceeded` before acceptance when its published price is higher. Takes precedence over the `X-Max-Credits` header.",
            "minimum": 1,
            "type": "integer"
          },
          "network": {
            "$ref": "#/components/schemas/ExecuteNetwork"
          },
          "timeout_ms": {
            "description": "Optional request timeout in milliseconds. Values above the capability timeout are rejected.",
            "maximum": 60000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "capability",
          "input"
        ],
        "type": "object"
      },
      "JobBilling": {
        "additionalProperties": false,
        "properties": {
          "credits_charged": {
            "anyOf": [
              {
                "description": "Actual credits charged, which may be a part of a credit such as 0.25. Null only when retained historical facts cannot establish the amount.",
                "minimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "credits_per_unit": {
            "anyOf": [
              {
                "description": "Snapshotted price for one billed unit, which may be a part of a credit such as 0.25. Zero only for historical free work; null when unknown.",
                "minimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "model": {
            "enum": [
              "per_request",
              "per_record",
              "free",
              "unknown"
            ],
            "type": "string"
          },
          "pricing": {
            "additionalProperties": false,
            "properties": {
              "rule_id": {
                "anyOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "scope": {
                "anyOf": [
                  {
                    "enum": [
                      "module",
                      "platform",
                      "capability"
                    ],
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "source": {
                "enum": [
                  "manifest",
                  "price_book"
                ],
                "type": "string"
              },
              "version": {
                "anyOf": [
                  {
                    "minimum": 1,
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "source",
              "scope",
              "version",
              "rule_id"
            ],
            "type": "object"
          },
          "settlement": {
            "description": "Why this job did or did not produce a credit debit. `cache_hit` means the same request was answered again from a recent result, and `credits_charged` is 0. A zero charge is not implicitly described as free.",
            "enum": [
              "prepaid_credits",
              "included_subscription",
              "out_of_band_contract",
              "free",
              "cache_hit",
              "not_billable",
              "zero_charge_requires_review",
              "unknown"
            ],
            "type": "string"
          },
          "units": {
            "anyOf": [
              {
                "description": "Billed units under the stated model. Null when units do not apply or cannot be established.",
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "model",
          "units",
          "credits_per_unit",
          "credits_charged",
          "settlement",
          "pricing"
        ],
        "type": "object"
      },
      "UnauthorizedError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "unauthorized",
                "type": "string"
              },
              "message": {
                "enum": [
                  "authentication required",
                  "invalid or revoked API key; check it under API keys in the console, sent as Authorization: Bearer <your key>",
                  "missing API key; send it as the header Authorization: Bearer <your key>"
                ],
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "request_id": {
            "description": "Safe Upscrape HTTP request identifier, also returned in the x-request-id header. For accepted jobs, job_id is the durable execution identifier.",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "error",
          "request_id"
        ],
        "type": "object"
      },
      "SwiggyListAllRestaurantsCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "swiggy.list.all_restaurants"
            ],
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "When the source data was read and the job completed (ISO 8601 UTC). This is the observation time for the returned data, to the job's precision, not a per-item upstream timestamp. Null unless the job completed.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "outcome": {
            "description": "Truthful module completion detail; status is complete unless the module reports partial or incomplete output.",
            "type": "object"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Raw capability output. Its shape may evolve with the upstream source; the example is illustrative, not a compatibility guarantee.",
                  "example": {
                    "items": [
                      {
                        "area_name": "HSR Layout",
                        "cloudinary_image_id": "RX_THUMBNAIL/IMAGES/VENDOR/2026/6/15/[redacted:token].JPG",
                        "cost_for_two_minor": 30000,
                        "cost_for_two_text": "₹300 for two",
                        "cuisines": [
                          "Pizzas"
                        ],
                        "cuisines_text": "Pizzas",
                        "delivery_time_minutes": 25,
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/RX_THUMBNAIL/IMAGES/VENDOR/2026/6/15/[redacted:token].JPG",
                        "is_open": true,
                        "last_mile_travel_km": 0.9,
                        "last_mile_travel_text": "0.9 km",
                        "latitude": 12.9121181,
                        "locality": "14th Main",
                        "longitude": 77.6445548,
                        "name": "Pizza Hut",
                        "offer_headers": [
                          "50% OFF"
                        ],
                        "offer_text": "50% OFF",
                        "parent_id": "721",
                        "rating": 4,
                        "rating_text": "4.0",
                        "restaurant_id": "10581",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/[redacted:token]",
                        "serviceability": "SERVICEABLE",
                        "sla_text": "25-30 mins",
                        "total_ratings_text": "21K+"
                      },
                      {
                        "area_name": "HSR Layout",
                        "cloudinary_image_id": "RX_THUMBNAIL/IMAGES/VENDOR/2024/11/7/[redacted:token].jpg",
                        "cost_for_two_minor": 20000,
                        "cost_for_two_text": "₹200 for two",
                        "cuisines": [
                          "Bubble Tea",
                          "Burger",
                          "Korean"
                        ],
                        "cuisines_text": "Bubble Tea, Burger, Korean, Beverages, Fast Food, Juice and shake",
                        "delivery_time_minutes": 22,
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/RX_THUMBNAIL/IMAGES/VENDOR/2024/11/7/[redacted:token].jpg",
                        "is_open": true,
                        "last_mile_travel_km": 0.6,
                        "last_mile_travel_text": "0.6 km",
                        "latitude": 12.9121181,
                        "locality": "5TH SECTOR",
                        "longitude": 77.6445548,
                        "name": "Boba Bhai - Bubble Tea & Korean Street Food",
                        "offer_headers": [
                          "60% OFF"
                        ],
                        "offer_text": "60% OFF",
                        "parent_id": "361235",
                        "rating": 4.2,
                        "rating_text": "4.2",
                        "restaurant_id": "819617",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/[redacted:token]",
                        "serviceability": "SERVICEABLE",
                        "sla_text": "20-25 mins",
                        "total_ratings_text": "1.2K+"
                      },
                      {
                        "area_name": "HSR Layout",
                        "cloudinary_image_id": "RX_THUMBNAIL/IMAGES/VENDOR/2026/6/18/[redacted:token].JPG",
                        "cost_for_two_minor": 40000,
                        "cost_for_two_text": "₹400 for two",
                        "cuisines": [
                          "Burgers",
                          "Beverages",
                          "Cafe"
                        ],
                        "cuisines_text": "Burgers, Beverages, Cafe, Desserts",
                        "delivery_time_minutes": 26,
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/RX_THUMBNAIL/IMAGES/VENDOR/2026/6/18/[redacted:token].JPG",
                        "is_open": true,
                        "last_mile_travel_km": 1.4,
                        "last_mile_travel_text": "1.4 km",
                        "latitude": 12.9121181,
                        "locality": "HSR Layout",
                        "longitude": 77.6445548,
                        "name": "McDonald's",
                        "offer_headers": [
                          "ITEMS"
                        ],
                        "offer_text": "ITEMS",
                        "parent_id": "630",
                        "rating": 4.3,
                        "rating_text": "4.3",
                        "restaurant_id": "23682",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/mcdonalds-hsr-layout-rest23682",
                        "serviceability": "SERVICEABLE",
                        "sla_text": "25-30 mins",
                        "total_ratings_text": "79K+"
                      }
                    ],
                    "summary": {
                      "has_more": true,
                      "latitude": 12.9121181,
                      "longitude": 77.6445548,
                      "pages_fetched": 1,
                      "stop_reason": "max_restaurants",
                      "total_items": 5,
                      "truncated": true
                    }
                  }
                },
                "error": {
                  "type": "null"
                },
                "index": {
                  "const": 0,
                  "type": "integer"
                },
                "url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "url",
                "data",
                "error"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "started_at": {
            "anyOf": [
              {
                "description": "When the job began executing (ISO 8601 UTC), or null if it never ran.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "started_at",
          "completed_at",
          "results",
          "billing",
          "stats",
          "outcome"
        ],
        "type": "object"
      },
      "JobStats": {
        "additionalProperties": false,
        "properties": {
          "attempts": {
            "description": "Number of execution attempts made for the job.",
            "minimum": 0,
            "type": "integer"
          },
          "duration_ms": {
            "anyOf": [
              {
                "description": "Duration of the final execution attempt.",
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "failed": {
            "const": 0,
            "type": "integer"
          },
          "passed": {
            "const": 1,
            "type": "integer"
          },
          "processing_duration_ms": {
            "anyOf": [
              {
                "description": "Total job processing time, including retries and retry backoff.",
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "queue_duration_ms": {
            "anyOf": [
              {
                "description": "Time between job acceptance and the first execution attempt.",
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "run_duration_ms": {
            "anyOf": [
              {
                "description": "Canonical run time from job acceptance to completion. Use this for customer-facing timing.",
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "const": 1,
            "type": "integer"
          }
        },
        "required": [
          "total",
          "passed",
          "failed",
          "run_duration_ms",
          "duration_ms",
          "processing_duration_ms",
          "queue_duration_ms",
          "attempts"
        ],
        "type": "object"
      },
      "SwiggyMenuExecuteRequest": {
        "additionalProperties": false,
        "description": "Fetch a Swiggy restaurant menu by ID or city restaurant URL, including add-ons and variant combination prices in paise.",
        "example": {
          "capability": "swiggy.menu",
          "input": {
            "latitude": 12.9716,
            "limit": 5,
            "longitude": 77.5946,
            "restaurant_id": "5938"
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "swiggy.menu"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/SwiggyMenuInput"
          },
          "max_credits": {
            "description": "Optional credit ceiling. The job is refused with `credit_limit_exceeded` before acceptance when its published price is higher. Takes precedence over the `X-Max-Credits` header.",
            "minimum": 1,
            "type": "integer"
          },
          "network": {
            "$ref": "#/components/schemas/ExecuteNetwork"
          },
          "timeout_ms": {
            "description": "Optional request timeout in milliseconds. Values above the capability timeout are rejected.",
            "maximum": 30000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "capability",
          "input"
        ],
        "type": "object"
      },
      "UnavailableError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "temporarily_unavailable",
                "type": "string"
              },
              "message": {
                "const": "this capability is temporarily unavailable; try again later or use another capability",
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "request_id": {
            "description": "Safe Upscrape HTTP request identifier, also returned in the x-request-id header. For accepted jobs, job_id is the durable execution identifier.",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "error",
          "request_id"
        ],
        "type": "object"
      },
      "SwiggySearchDishesExecuteRequest": {
        "additionalProperties": false,
        "description": "Search Swiggy dishes by keyword near an Indian delivery location, with menu item, price in paise and restaurant identity.",
        "example": {
          "capability": "swiggy.search.dishes",
          "input": {
            "latitude": 12.9121181,
            "limit": 10,
            "longitude": 77.6445548,
            "query": "rolls"
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "swiggy.search.dishes"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/SwiggySearchDishesInput"
          },
          "max_credits": {
            "description": "Optional credit ceiling. The job is refused with `credit_limit_exceeded` before acceptance when its published price is higher. Takes precedence over the `X-Max-Credits` header.",
            "minimum": 1,
            "type": "integer"
          },
          "network": {
            "$ref": "#/components/schemas/ExecuteNetwork"
          },
          "timeout_ms": {
            "description": "Optional request timeout in milliseconds. Values above the capability timeout are rejected.",
            "maximum": 60000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "capability",
          "input"
        ],
        "type": "object"
      },
      "InternalError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "internal_error",
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "request_id": {
            "description": "Safe Upscrape HTTP request identifier, also returned in the x-request-id header. For accepted jobs, job_id is the durable execution identifier.",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "error",
          "request_id"
        ],
        "type": "object"
      },
      "CredentialsRequiredError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "credentials_required",
                "type": "string"
              },
              "message": {
                "const": "this capability requires authentication credentials; save them via POST /credentials",
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "request_id": {
            "description": "Safe Upscrape HTTP request identifier, also returned in the x-request-id header. For accepted jobs, job_id is the durable execution identifier.",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "error",
          "request_id"
        ],
        "type": "object"
      },
      "SwiggyListCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "swiggy.list"
            ],
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "When the source data was read and the job completed (ISO 8601 UTC). This is the observation time for the returned data, to the job's precision, not a per-item upstream timestamp. Null unless the job completed.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "outcome": {
            "description": "Truthful module completion detail; status is complete unless the module reports partial or incomplete output.",
            "type": "object"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Raw capability output. Its shape may evolve with the upstream source; the example is illustrative, not a compatibility guarantee.",
                  "example": {
                    "count": 5,
                    "has_more": true,
                    "latitude": 12.9121181,
                    "longitude": 77.6445548,
                    "raw_meta": {
                      "offset": ""
                    },
                    "results": [
                      {
                        "area_name": "HSR Layout",
                        "avg_rating": 4,
                        "avg_rating_string": "4.0",
                        "cloudinary_image_id": "RX_THUMBNAIL/IMAGES/VENDOR/2026/6/15/[redacted:token].JPG",
                        "cost_for_two": 30000,
                        "cost_for_two_message": "₹300 for two",
                        "cuisines": [
                          "Pizzas"
                        ],
                        "delivery_time_minutes": 25,
                        "id": "10581",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/RX_THUMBNAIL/IMAGES/VENDOR/2026/6/15/[redacted:token].JPG",
                        "is_open": true,
                        "last_mile_travel_km": 0.9,
                        "last_mile_travel_string": "0.9 km",
                        "locality": "14th Main",
                        "name": "Pizza Hut",
                        "offers": [
                          {
                            "discount_tag": "FLAT DEAL",
                            "header": "50% OFF",
                            "offer_tag": "FLAT DEAL"
                          }
                        ],
                        "parent_id": "721",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/[redacted:token]",
                        "serviceability": "SERVICEABLE",
                        "sla_string": "25-30 mins",
                        "total_ratings_string": "21K+"
                      },
                      {
                        "area_name": "HSR Layout",
                        "avg_rating": 4.2,
                        "avg_rating_string": "4.2",
                        "cloudinary_image_id": "RX_THUMBNAIL/IMAGES/VENDOR/2024/11/7/[redacted:token].jpg",
                        "cost_for_two": 20000,
                        "cost_for_two_message": "₹200 for two",
                        "cuisines": [
                          "Bubble Tea",
                          "Burger",
                          "Korean"
                        ],
                        "delivery_time_minutes": 22,
                        "id": "819617",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/RX_THUMBNAIL/IMAGES/VENDOR/2024/11/7/[redacted:token].jpg",
                        "is_open": true,
                        "last_mile_travel_km": 0.6,
                        "last_mile_travel_string": "0.6 km",
                        "locality": "5TH SECTOR",
                        "name": "Boba Bhai - Bubble Tea & Korean Street Food",
                        "offers": [
                          {
                            "header": "60% OFF",
                            "sub_header": "UPTO ₹120"
                          }
                        ],
                        "parent_id": "361235",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/[redacted:token]",
                        "serviceability": "SERVICEABLE",
                        "sla_string": "20-25 mins",
                        "total_ratings_string": "1.2K+"
                      },
                      {
                        "area_name": "HSR Layout",
                        "avg_rating": 4.3,
                        "avg_rating_string": "4.3",
                        "cloudinary_image_id": "RX_THUMBNAIL/IMAGES/VENDOR/2026/6/18/[redacted:token].JPG",
                        "cost_for_two": 40000,
                        "cost_for_two_message": "₹400 for two",
                        "cuisines": [
                          "Burgers",
                          "Beverages",
                          "Cafe"
                        ],
                        "delivery_time_minutes": 26,
                        "id": "23682",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/RX_THUMBNAIL/IMAGES/VENDOR/2026/6/18/[redacted:token].JPG",
                        "is_open": true,
                        "last_mile_travel_km": 1.4,
                        "last_mile_travel_string": "1.4 km",
                        "locality": "HSR Layout",
                        "name": "McDonald's",
                        "offers": [
                          {
                            "header": "ITEMS",
                            "sub_header": "AT ₹64"
                          }
                        ],
                        "parent_id": "630",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/mcdonalds-hsr-layout-rest23682",
                        "serviceability": "SERVICEABLE",
                        "sla_string": "25-30 mins",
                        "total_ratings_string": "79K+"
                      }
                    ],
                    "stop_reason": "limit",
                    "truncated": true
                  }
                },
                "error": {
                  "type": "null"
                },
                "index": {
                  "const": 0,
                  "type": "integer"
                },
                "url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "url",
                "data",
                "error"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "started_at": {
            "anyOf": [
              {
                "description": "When the job began executing (ISO 8601 UTC), or null if it never ran.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "started_at",
          "completed_at",
          "results",
          "billing",
          "stats",
          "outcome"
        ],
        "type": "object"
      },
      "JobErrorObject": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "description": "Machine-readable error code (e.g. forbidden, not_found, invalid_input, upstream_timeout, upstream_error).",
            "type": "string"
          },
          "message": {
            "description": "Human-readable error description.",
            "type": "string"
          },
          "reason": {
            "description": "A stable machine-readable reason when the code alone is not specific enough, for example country_unverified on a forbidden response where the requested country could not be verified. Present only for reviewed reasons; never a raw upstream diagnostic.",
            "type": "string"
          }
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object"
      },
      "SwiggySearchRestaurantsCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "swiggy.search.restaurants"
            ],
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "When the source data was read and the job completed (ISO 8601 UTC). This is the observation time for the returned data, to the job's precision, not a per-item upstream timestamp. Null unless the job completed.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "outcome": {
            "description": "Truthful module completion detail; status is complete unless the module reports partial or incomplete output.",
            "type": "object"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Raw capability output. Its shape may evolve with the upstream source; the example is illustrative, not a compatibility guarantee.",
                  "example": {
                    "items": [
                      {
                        "ad_tracking_id": "cid=00132c9a-9bfd-43b9-b49c-cfe0163ad5c9~p=0~adgrpid=00132c9a-9bfd-43b9-b49c-cfe0163ad5c9#ag1~mp=SWIGGY_IN~bl=FOOD~aet=RESTAURANT~aeid=856738~plpr=SEARCH#RESTAURANT~st=roll~eid=f86ed38e-6fd1-4e67-a1e5-17de83917b4b~srvts=1785581883805",
                        "area_name": "HSR",
                        "city": "1",
                        "cloudinary_image_id": "FOOD_CATALOG/IMAGES/CMS/2025/4/10/[redacted:token].jpeg",
                        "cost_for_two_minor": 30000,
                        "cost_for_two_text": "₹300 FOR TWO",
                        "cuisines": [
                          "Burgers",
                          "Cafe"
                        ],
                        "cuisines_text": "Burgers, Cafe",
                        "delivery_time_minutes": 19,
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2025/4/10/[redacted:token].jpeg",
                        "is_open": true,
                        "last_mile_travel_km": 0.9,
                        "last_mile_travel_text": "0.9 km",
                        "latitude": 12.9121181,
                        "locality": "HSR Layout",
                        "longitude": 77.6445548,
                        "name": "Olive Street Food Cafe",
                        "offer_headers": [
                          "ITEMS"
                        ],
                        "offer_text": "ITEMS",
                        "parent_id": "12754",
                        "promoted": true,
                        "query": "rolls",
                        "rating": 4.4,
                        "rating_text": "4.4",
                        "restaurant_id": "856738",
                        "restaurant_url": "https://www.swiggy.com/city/1/[redacted:token]",
                        "serviceability": "SERVICEABLE",
                        "sla_text": "15-20 MINS",
                        "slug": "olive-street-food-cafe-hsr-hsr",
                        "total_ratings_text": "1.6K+"
                      },
                      {
                        "area_name": "HSR Layout",
                        "city": "1",
                        "cloudinary_image_id": "FOOD_CATALOG/IMAGES/CMS/2025/4/21/[redacted:token].jpeg",
                        "cost_for_two_minor": 20000,
                        "cost_for_two_text": "₹200 FOR TWO",
                        "cuisines": [
                          "Wraps",
                          "rolls",
                          "Fast Food"
                        ],
                        "cuisines_text": "Wraps, rolls, Fast Food, Burger, shawarma, Rice Bowls",
                        "delivery_time_minutes": 21,
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2025/4/21/[redacted:token].jpeg",
                        "is_open": true,
                        "last_mile_travel_km": 1.5,
                        "last_mile_travel_text": "1.5 km",
                        "latitude": 12.9121181,
                        "locality": "Sector 2, 27th Main Road",
                        "longitude": 77.6445548,
                        "name": "Faasos - Wraps, Rolls & Shawarma",
                        "offer_headers": [
                          "ITEMS"
                        ],
                        "offer_text": "ITEMS",
                        "parent_id": "21809",
                        "query": "rolls",
                        "rating": 4.1,
                        "rating_text": "4.1",
                        "restaurant_id": "17750",
                        "restaurant_url": "https://www.swiggy.com/city/1/faasos-hsr-rest17750",
                        "serviceability": "SERVICEABLE",
                        "sla_text": "20-25 MINS",
                        "slug": "faasos-hsr",
                        "total_ratings_text": "25K+"
                      },
                      {
                        "ad_tracking_id": "cid=22942f0f-f634-40b7-bd1a-8ac78670b898~p=2~adgrpid=22942f0f-f634-40b7-bd1a-8ac78670b898#ag1~mp=SWIGGY_IN~bl=FOOD~aet=RESTAURANT~aeid=494751~plpr=SEARCH#RESTAURANT~st=roll~eid=43108c0b-c61f-4580-b98a-ba7783f4041f~srvts=1785581883805",
                        "area_name": "Sarjapur Road",
                        "city": "1",
                        "cloudinary_image_id": "FOOD_CATALOG/IMAGES/CMS/2026/7/30/[redacted:token].jpg",
                        "cost_for_two_minor": 30000,
                        "cost_for_two_text": "₹300 FOR TWO",
                        "cuisines": [
                          "Rolls & Wraps",
                          "Fast Food",
                          "Snacks"
                        ],
                        "cuisines_text": "Rolls & Wraps, Fast Food, Snacks, Beverages, North Indian",
                        "delivery_time_minutes": 47,
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2026/7/30/[redacted:token].jpg",
                        "is_open": true,
                        "last_mile_travel_km": 6.2,
                        "last_mile_travel_text": "6.2 km",
                        "latitude": 12.9121181,
                        "locality": "Daddakanahalli",
                        "longitude": 77.6445548,
                        "name": "Rollsking",
                        "offer_headers": [
                          "ITEMS"
                        ],
                        "offer_text": "ITEMS",
                        "parent_id": "4697",
                        "promoted": true,
                        "query": "rolls",
                        "rating": 4.1,
                        "rating_text": "4.1",
                        "restaurant_id": "494751",
                        "restaurant_url": "https://www.swiggy.com/city/1/[redacted:token]",
                        "serviceability": "SERVICEABLE",
                        "sla_text": "45-55 MINS",
                        "slug": "rolls-king-bellandur-sarjapur-bellandur-sarjapur",
                        "total_ratings_text": "6.7K+"
                      }
                    ],
                    "summary": {
                      "latitude": 12.9121181,
                      "longitude": 77.6445548,
                      "query": "rolls",
                      "total_items": 5
                    }
                  }
                },
                "error": {
                  "type": "null"
                },
                "index": {
                  "const": 0,
                  "type": "integer"
                },
                "url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "url",
                "data",
                "error"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "started_at": {
            "anyOf": [
              {
                "description": "When the job began executing (ISO 8601 UTC), or null if it never ran.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "started_at",
          "completed_at",
          "results",
          "billing",
          "stats",
          "outcome"
        ],
        "type": "object"
      },
      "SwiggyMenuAreaItemsCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "swiggy.menu.area_items"
            ],
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "When the source data was read and the job completed (ISO 8601 UTC). This is the observation time for the returned data, to the job's precision, not a per-item upstream timestamp. Null unless the job completed.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "outcome": {
            "description": "Truthful module completion detail; status is complete unless the module reports partial or incomplete output.",
            "type": "object"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Raw capability output. Its shape may evolve with the upstream source; the example is illustrative, not a compatibility guarantee.",
                  "example": {
                    "items": [
                      {
                        "category": "Hut Café",
                        "default_price_minor": 19800,
                        "description": "Get any 2 mocktails at Rs 189. For nutritional data of this meal, refer to individual products.",
                        "final_price_minor": 18900,
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2026/1/5/[redacted:token].jpg",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2026/1/5/[redacted:token].jpg",
                        "in_stock": true,
                        "is_veg": true,
                        "item_id": "187073896",
                        "name": "Double the Fizz!",
                        "offer_ids": [
                          "b1033082-58df-4382-a0a9-c76b7040acb5",
                          "2a41f40c-6fbe-4ce5-8c15-35cf6ef311ff"
                        ],
                        "offer_ids_text": "b1033082-58df-4382-a0a9-c76b7040acb5 | 2a41f40c-6fbe-4ce5-8c15-35cf6ef311ff",
                        "offer_tags": [
                          "70% OFF"
                        ],
                        "offer_tags_text": "70% OFF",
                        "restaurant_area_name": "HSR Layout",
                        "restaurant_city": "Bangalore",
                        "restaurant_cuisines": [
                          "Pizzas"
                        ],
                        "restaurant_cuisines_text": "Pizzas",
                        "restaurant_id": "10581",
                        "restaurant_locality": "14th Main",
                        "restaurant_name": "Pizza Hut",
                        "restaurant_rating": 4,
                        "restaurant_rating_text": "4.0",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/pizza-hut-sector-7-hsr-rest10581",
                        "variant_group_count": 2,
                        "variant_group_names": [
                          "Choose 1st Mixology",
                          "Choose 2nd Mixology"
                        ],
                        "variant_group_names_text": "Choose 1st Mixology | Choose 2nd Mixology"
                      },
                      {
                        "addon_group_count": 4,
                        "addon_group_names": [
                          "Extra Cheese Topping",
                          "Add More Veg Toppings Personal",
                          "Make it a Meal."
                        ],
                        "addon_group_names_text": "Extra Cheese Topping | Add More Veg Toppings Personal | Make it a Meal. | Add More Non-Veg Toppings Personal",
                        "category": "Flat 299",
                        "description": "Amazingly flavourful Chicken Malai Tikka, Herbed Onion & Green Capsicum, spicy Red Paprika with flavourful pan sauce and mozzarella cheese. (PAN Per-269Kcal/100g). Contains Cereals containing Gluten (Wheat), Soya and Milk & Milk Products.",
                        "final_price_minor": 29900,
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2025/4/17/[redacted:token].jpg_compressed",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2025/4/17/[redacted:token].jpg_compressed",
                        "in_stock": true,
                        "item_id": "128413487",
                        "name": "Murg Malai Chicken - Personal",
                        "offer_ids": [
                          "1dccf2be-0d17-4d74-88a1-4fc94344b2dc"
                        ],
                        "offer_ids_text": "1dccf2be-0d17-4d74-88a1-4fc94344b2dc",
                        "price_minor": 41900,
                        "rating": 4.3,
                        "rating_count": "43 ratings",
                        "restaurant_area_name": "HSR Layout",
                        "restaurant_city": "Bangalore",
                        "restaurant_cuisines": [
                          "Pizzas"
                        ],
                        "restaurant_cuisines_text": "Pizzas",
                        "restaurant_id": "10581",
                        "restaurant_locality": "14th Main",
                        "restaurant_name": "Pizza Hut",
                        "restaurant_rating": 4,
                        "restaurant_rating_text": "4.0",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/pizza-hut-sector-7-hsr-rest10581"
                      },
                      {
                        "addon_group_count": 4,
                        "addon_group_names": [
                          "Extra Cheese Topping",
                          "Add More Veg Toppings Personal",
                          "Make it a Meal."
                        ],
                        "addon_group_names_text": "Extra Cheese Topping | Add More Veg Toppings Personal | Make it a Meal. | Add More Non-Veg Toppings Personal",
                        "category": "Flat 299",
                        "description": "Dhaba style chicken keema masala, with green chiili, crunchy onion with flavourful pan sauce, 100 % mozzarella cheese & a generous drizzle of mint mayo (PAN Per-270Kcal/100g). Contains Cereals containing Gluten (Wheat), Soya and Milk & Milk Products.",
                        "final_price_minor": 29900,
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2025/4/16/[redacted:token].jpg_compressed",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2025/4/16/[redacted:token].jpg_compressed",
                        "in_stock": true,
                        "item_id": "128413486",
                        "name": "Dhabe Da Keema - Personal",
                        "offer_ids": [
                          "1dccf2be-0d17-4d74-88a1-4fc94344b2dc"
                        ],
                        "offer_ids_text": "1dccf2be-0d17-4d74-88a1-4fc94344b2dc",
                        "price_minor": 33900,
                        "rating": 4.7,
                        "rating_count": "13 ratings",
                        "restaurant_area_name": "HSR Layout",
                        "restaurant_city": "Bangalore",
                        "restaurant_cuisines": [
                          "Pizzas"
                        ],
                        "restaurant_cuisines_text": "Pizzas",
                        "restaurant_id": "10581",
                        "restaurant_locality": "14th Main",
                        "restaurant_name": "Pizza Hut",
                        "restaurant_rating": 4,
                        "restaurant_rating_text": "4.0",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/pizza-hut-sector-7-hsr-rest10581"
                      }
                    ],
                    "summary": {
                      "has_more": true,
                      "latitude": 12.9121181,
                      "longitude": 77.6445548,
                      "pages_fetched": 1,
                      "stop_reason": "max_restaurants",
                      "total_items": 10,
                      "truncated": true
                    }
                  }
                },
                "error": {
                  "type": "null"
                },
                "index": {
                  "const": 0,
                  "type": "integer"
                },
                "url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "url",
                "data",
                "error"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "started_at": {
            "anyOf": [
              {
                "description": "When the job began executing (ISO 8601 UTC), or null if it never ran.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "started_at",
          "completed_at",
          "results",
          "billing",
          "stats",
          "outcome"
        ],
        "type": "object"
      },
      "ValidationErrors": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "description": "The standard error envelope, as on every other failure. Branch on `error.code`.",
            "properties": {
              "code": {
                "const": "invalid_input",
                "type": "string"
              },
              "fields": {
                "additionalProperties": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "description": "Failed fields and their messages.",
                "type": "object"
              },
              "message": {
                "description": "One-line summary of the failed fields.",
                "type": "string"
              }
            },
            "required": [
              "code",
              "message",
              "fields"
            ],
            "type": "object"
          },
          "errors": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "description": "Retained for compatibility: the same field map as `error.fields`. New integrations should read `error`.",
            "type": "object"
          },
          "request_id": {
            "description": "Safe Upscrape HTTP request identifier, also returned in the x-request-id header. For accepted jobs, job_id is the durable execution identifier.",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "errors",
          "error",
          "request_id"
        ],
        "type": "object"
      },
      "SwiggyAreaMenuItemsExecuteRequest": {
        "additionalProperties": false,
        "description": "Crawl a Swiggy area grid, one first listing page per cell, and stream deduplicated menu items.",
        "example": {
          "capability": "swiggy.area.menu_items",
          "input": {
            "center_latitude": 12.9121181,
            "center_longitude": 77.6445548,
            "continue_on_menu_failures": true,
            "max_cells": 1,
            "max_pages_per_cell": 1,
            "max_restaurants": 2,
            "menu_item_limit": 5,
            "page_limit": 10,
            "radius_km": 1,
            "step_km": 1
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "swiggy.area.menu_items"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/SwiggyAreaMenuItemsInput"
          },
          "max_credits": {
            "description": "Optional credit ceiling. The job is refused with `credit_limit_exceeded` before acceptance when its published price is higher. Takes precedence over the `X-Max-Credits` header.",
            "minimum": 1,
            "type": "integer"
          },
          "network": {
            "$ref": "#/components/schemas/ExecuteNetwork"
          },
          "timeout_ms": {
            "description": "Optional request timeout in milliseconds. Values above the capability timeout are rejected.",
            "maximum": 120000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "capability",
          "input"
        ],
        "type": "object"
      },
      "SwiggyListRestaurantsInput": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "required": [
              "latitude",
              "longitude"
            ]
          },
          {
            "properties": {
              "latitude": {
                "type": "null"
              },
              "longitude": {
                "type": "null"
              }
            }
          }
        ],
        "properties": {
          "latitude": {
            "description": "Latitude; supply together with longitude, or omit both for the default delivery area.",
            "maximum": 90,
            "minimum": -90,
            "type": "number"
          },
          "limit": {
            "description": "Maximum number of results, taken from Swiggy's first listing page.",
            "type": "integer"
          },
          "longitude": {
            "description": "Longitude; supply together with latitude, or omit both for the default delivery area.",
            "maximum": 180,
            "minimum": -180,
            "type": "number"
          },
          "offset": {
            "description": "Not supported: Swiggy serves one listing page per location, so there is no next page to continue. Omit it; any value is rejected as invalid_input.",
            "maxLength": 16384,
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "QuotaError": {
        "oneOf": [
          {
            "additionalProperties": false,
            "properties": {
              "error": {
                "additionalProperties": false,
                "properties": {
                  "code": {
                    "const": "account_inactive",
                    "type": "string"
                  },
                  "message": {
                    "const": "an active paid account is required",
                    "type": "string"
                  }
                },
                "required": [
                  "code",
                  "message"
                ],
                "type": "object"
              },
              "request_id": {
                "description": "Safe Upscrape HTTP request identifier, also returned in the x-request-id header. For accepted jobs, job_id is the durable execution identifier.",
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "error",
              "request_id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "error": {
                "additionalProperties": false,
                "properties": {
                  "code": {
                    "const": "quota_exhausted",
                    "type": "string"
                  },
                  "message": {
                    "const": "request quota exhausted for current billing period",
                    "type": "string"
                  }
                },
                "required": [
                  "code",
                  "message"
                ],
                "type": "object"
              },
              "request_id": {
                "description": "Safe Upscrape HTTP request identifier, also returned in the x-request-id header. For accepted jobs, job_id is the durable execution identifier.",
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "error",
              "request_id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "error": {
                "additionalProperties": false,
                "properties": {
                  "code": {
                    "const": "quota_exhausted",
                    "type": "string"
                  },
                  "message": {
                    "const": "not enough credits for this request; buy credits at https://app.upscrape.com/app/billing to continue",
                    "type": "string"
                  }
                },
                "required": [
                  "code",
                  "message"
                ],
                "type": "object"
              },
              "request_id": {
                "description": "Safe Upscrape HTTP request identifier, also returned in the x-request-id header. For accepted jobs, job_id is the durable execution identifier.",
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "error",
              "request_id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "error": {
                "additionalProperties": false,
                "properties": {
                  "code": {
                    "const": "account_inactive",
                    "type": "string"
                  },
                  "message": {
                    "const": "this account is not active; buy credits at https://app.upscrape.com/app/billing to activate it, or contact support if it was suspended",
                    "type": "string"
                  }
                },
                "required": [
                  "code",
                  "message"
                ],
                "type": "object"
              },
              "request_id": {
                "description": "Safe Upscrape HTTP request identifier, also returned in the x-request-id header. For accepted jobs, job_id is the durable execution identifier.",
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "error",
              "request_id"
            ],
            "type": "object"
          }
        ]
      },
      "SwiggyCategoriesExecuteRequest": {
        "additionalProperties": false,
        "description": "List Swiggy food categories and cuisine shortcuts for a location.",
        "example": {
          "capability": "swiggy.categories",
          "input": {
            "latitude": 12.9121181,
            "limit": 20,
            "longitude": 77.6445548
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "swiggy.categories"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/SwiggyCategoriesInput"
          },
          "max_credits": {
            "description": "Optional credit ceiling. The job is refused with `credit_limit_exceeded` before acceptance when its published price is higher. Takes precedence over the `X-Max-Credits` header.",
            "minimum": 1,
            "type": "integer"
          },
          "network": {
            "$ref": "#/components/schemas/ExecuteNetwork"
          },
          "timeout_ms": {
            "description": "Optional request timeout in milliseconds. Values above the capability timeout are rejected.",
            "maximum": 30000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "capability",
          "input"
        ],
        "type": "object"
      },
      "SwiggyMenuInput": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "required": [
              "latitude",
              "longitude"
            ]
          },
          {
            "properties": {
              "latitude": {
                "type": "null"
              },
              "longitude": {
                "type": "null"
              }
            }
          }
        ],
        "properties": {
          "latitude": {
            "description": "Latitude; supply together with longitude, or omit both for the default delivery area.",
            "maximum": 90,
            "minimum": -90,
            "type": "number"
          },
          "limit": {
            "description": "Maximum number of menu items.",
            "type": "integer"
          },
          "longitude": {
            "description": "Longitude; supply together with latitude, or omit both for the default delivery area.",
            "maximum": 180,
            "minimum": -180,
            "type": "number"
          },
          "restaurant_id": {
            "description": "Positive numeric Swiggy restaurant ID, supplied as a string.",
            "pattern": "^[1-9][0-9]*$",
            "type": "string"
          },
          "restaurant_url": {
            "description": "HTTPS swiggy.com or www.swiggy.com city restaurant URL ending in -rest<ID>. If restaurant_id is also supplied, both must agree. Short links and other URL paths are unsupported.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "JobFailedResponse": {
        "additionalProperties": false,
        "properties": {
          "capability": {
            "enum": [
              "swiggy.ads.list",
              "swiggy.area.menu_items",
              "swiggy.area.restaurants",
              "swiggy.categories",
              "swiggy.list",
              "swiggy.list.all_restaurants",
              "swiggy.list.restaurants",
              "swiggy.menu",
              "swiggy.menu.area_items",
              "swiggy.menu.items",
              "swiggy.search.dishes",
              "swiggy.search.restaurants"
            ],
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "When the source data was read and the job completed (ISO 8601 UTC). This is the observation time for the returned data, to the job's precision, not a per-item upstream timestamp. Null unless the job completed.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "$ref": "#/components/schemas/JobErrorObject"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "type": "null"
          },
          "started_at": {
            "anyOf": [
              {
                "description": "When the job began executing (ISO 8601 UTC), or null if it never ran.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "const": "failed",
            "type": "string"
          },
          "stats": {
            "type": "null"
          },
          "success": {
            "const": false,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "error",
          "results",
          "stats",
          "started_at",
          "completed_at"
        ],
        "type": "object"
      },
      "CreditLimitError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "credit_limit_exceeded",
                "type": "string"
              },
              "message": {
                "const": "published job price exceeds the requested maximum credits",
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "request_id": {
            "description": "Safe Upscrape HTTP request identifier, also returned in the x-request-id header. For accepted jobs, job_id is the durable execution identifier.",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "error",
          "request_id"
        ],
        "type": "object"
      },
      "ExecuteNetwork": {
        "additionalProperties": false,
        "properties": {
          "session_id": {
            "description": "Optional explicit session identifier.",
            "minLength": 1,
            "type": "string"
          },
          "session_key": {
            "description": "Optional stable key used to derive a reusable session.",
            "minLength": 1,
            "type": "string"
          },
          "sticky": {
            "description": "Whether the request should reuse the resolved session.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "SwiggyAdsListExecuteRequest": {
        "additionalProperties": false,
        "description": "Track ad placements and promoted restaurants on Swiggy's first listing page for a delivery location.",
        "example": {
          "capability": "swiggy.ads.list",
          "input": {
            "latitude": 12.9121181,
            "limit": 5,
            "longitude": 77.6445548
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "swiggy.ads.list"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/SwiggyAdsListInput"
          },
          "max_credits": {
            "description": "Optional credit ceiling. The job is refused with `credit_limit_exceeded` before acceptance when its published price is higher. Takes precedence over the `X-Max-Credits` header.",
            "minimum": 1,
            "type": "integer"
          },
          "network": {
            "$ref": "#/components/schemas/ExecuteNetwork"
          },
          "timeout_ms": {
            "description": "Optional request timeout in milliseconds. Values above the capability timeout are rejected.",
            "maximum": 30000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "capability",
          "input"
        ],
        "type": "object"
      },
      "ExecuteAcceptedResponse": {
        "additionalProperties": false,
        "properties": {
          "capability": {
            "enum": [
              "swiggy.ads.list",
              "swiggy.area.menu_items",
              "swiggy.area.restaurants",
              "swiggy.categories",
              "swiggy.list",
              "swiggy.list.all_restaurants",
              "swiggy.list.restaurants",
              "swiggy.menu",
              "swiggy.menu.area_items",
              "swiggy.menu.items",
              "swiggy.search.dishes",
              "swiggy.search.restaurants"
            ],
            "type": "string"
          },
          "coalesced": {
            "type": "boolean"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "poll_after_ms": {
            "description": "Wait at least this long before polling.",
            "minimum": 0,
            "type": "integer"
          },
          "poll_url": {
            "description": "GET this URL with the same API key to read the job.",
            "format": "uri",
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "state": {
            "const": "queued",
            "type": "string"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state"
        ],
        "type": "object"
      },
      "SwiggyMenuCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "swiggy.menu"
            ],
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "When the source data was read and the job completed (ISO 8601 UTC). This is the observation time for the returned data, to the job's precision, not a per-item upstream timestamp. Null unless the job completed.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "outcome": {
            "description": "Truthful module completion detail; status is complete unless the module reports partial or incomplete output.",
            "type": "object"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Raw capability output. Its shape may evolve with the upstream source; the example is illustrative, not a compatibility guarantee.",
                  "example": {
                    "count": 5,
                    "items": [
                      {
                        "addons": [
                          {
                            "choices": [
                              {
                                "id": "145594759",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Crispy Veg Burger"
                              },
                              {
                                "id": "145594770",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Veg Makhani Burst Burger",
                                "price": 900
                              },
                              {
                                "id": "145594764",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Veg Crunchy Taco",
                                "price": 900
                              }
                            ],
                            "group_id": "279926769",
                            "group_name": "Choose Your Burger",
                            "max_addons": 1,
                            "min_addons": 1
                          },
                          {
                            "choices": [
                              {
                                "id": "145594836",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Fries(Regular)"
                              },
                              {
                                "id": "145594834",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Fries(M)",
                                "price": 3000
                              },
                              {
                                "id": "145594833",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Fries(L)",
                                "price": 4000
                              }
                            ],
                            "group_id": "279926770",
                            "group_name": "Choose Your Side",
                            "max_addons": 1,
                            "min_addons": 1
                          },
                          {
                            "choices": [
                              {
                                "id": "145594812",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Coke"
                              },
                              {
                                "id": "147296620",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Masala Fizz",
                                "price": 1900
                              },
                              {
                                "id": "147296616",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Tropical Fizz",
                                "price": 1900
                              }
                            ],
                            "group_id": "279926771",
                            "group_name": "Choose Your_Beverage",
                            "max_addons": 1,
                            "min_addons": 1
                          }
                        ],
                        "category": "Mix'N'Match- Your Way (upto 50% OFF)",
                        "default_price": 25500,
                        "description": "Build Your Own Meal. Save upto 38%..",
                        "final_price": 15900,
                        "id": "189380929",
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2025/12/15/[redacted:token].jpg_compressed",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2025/12/15/[redacted:token].jpg_compressed",
                        "in_stock": true,
                        "is_veg": true,
                        "name": "Value Meal for 1- Make it Your Way (Veg)",
                        "offer_ids": [
                          "de772201-cfe9-4ac8-9657-f922c7131c68"
                        ],
                        "price": 25500,
                        "rating": 3.8,
                        "rating_count": "3 ratings",
                        "source_restaurant_id": "5938"
                      },
                      {
                        "addons": [
                          {
                            "choices": [
                              {
                                "id": "148221208",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Cheese Slice",
                                "price": 2500
                              }
                            ],
                            "group_id": "299917420",
                            "group_name": "Say Cheese",
                            "max_addons": 1
                          },
                          {
                            "choices": [
                              {
                                "id": "145028785",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Grill Chicken Whopper Deluxe"
                              }
                            ],
                            "group_id": "299917421",
                            "group_name": "Selected - Grill Chicken Whopper Deluxe",
                            "max_addons": 1,
                            "min_addons": 1
                          },
                          {
                            "choices": [
                              {
                                "id": "148767003",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Grill Chicken Whopper Deluxe,"
                              }
                            ],
                            "group_id": "299917422",
                            "group_name": "Selected - Grill_Chicken_Whopper_Deluxe",
                            "max_addons": 1,
                            "min_addons": 1
                          }
                        ],
                        "category": "New Whopper Deluxe",
                        "default_price": 19900,
                        "description": "Reg. Size premium glaze bun with 7 layers of taste: Flame Grill Chicken patty, fresh onion, crispy lettuce, juicy tomatoes (seasonal), tangy gherkins, creamy & smoky sauces.\nQty: 168 gms| Kcal: 327 | Carbs: 35 gms| Sugar: 1 gms| Fat: 14 gms| Saturated fat: 3 gms| Protein: 15 gms|",
                        "final_price": 15900,
                        "id": "175726657",
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2025/7/5/[redacted:token].jpg",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2025/7/5/[redacted:token].jpg",
                        "in_stock": true,
                        "name": "Grill Chicken Whopper Deluxe.",
                        "offer_ids": [
                          "de772201-cfe9-4ac8-9657-f922c7131c68"
                        ],
                        "price": 19900,
                        "rating": 3.3,
                        "rating_count": "12 ratings",
                        "source_restaurant_id": "5938",
                        "variants": [
                          {
                            "group_id": "76738817",
                            "group_name": "Customized",
                            "options": [
                              {
                                "default": true,
                                "id": "223490703",
                                "name": "Burger Only"
                              },
                              {
                                "id": "223490704",
                                "name": "Reg Meal- Fries(R)+Coke (36% OFF)"
                              },
                              {
                                "id": "223490705",
                                "name": "Shake Meal- Fries(R)+Shake (29% OFF)"
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "addons": [
                          {
                            "choices": [
                              {
                                "id": "145028777",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Cheese Whopper Deluxe"
                              }
                            ],
                            "group_id": "299917410",
                            "group_name": "Selected - Cheese Whopper Deluxe",
                            "max_addons": 1,
                            "min_addons": 1
                          },
                          {
                            "choices": [
                              {
                                "id": "148221208",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Cheese Slice",
                                "price": 2500
                              }
                            ],
                            "group_id": "299917409",
                            "group_name": "Say Cheese",
                            "max_addons": 1
                          },
                          {
                            "choices": [
                              {
                                "id": "148767002",
                                "in_stock": true,
                                "is_veg": true,
                                "name": "Cheese Whopper Deluxe,"
                              }
                            ],
                            "group_id": "299917411",
                            "group_name": "Selected - Cheese_Whopper_Deluxe",
                            "max_addons": 1,
                            "min_addons": 1
                          }
                        ],
                        "category": "New Whopper Deluxe",
                        "default_price": 19900,
                        "description": "Reg. Size premium glaze bun with 7 layers of taste: Molten Cheese Lava patty, fresh onion, crispy lettuce, juicy tomatoes (seasonal), tangy gherkins, creamy & smoky sauces.\nQty: 230 gms| Kcal: 765 | Carbs: 35 gms| Sugar: 10 gms| Fat: 54 gms| Saturated fat: 20 gms| Protein: 35 gms|",
                        "final_price": 15900,
                        "id": "175726656",
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2025/7/5/[redacted:token].jpg",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2025/7/5/[redacted:token].jpg",
                        "in_stock": true,
                        "is_veg": true,
                        "name": "Cheese Whopper Deluxe.",
                        "offer_ids": [
                          "de772201-cfe9-4ac8-9657-f922c7131c68"
                        ],
                        "price": 19900,
                        "rating": 3.3,
                        "rating_count": "6 ratings",
                        "source_restaurant_id": "5938",
                        "variants": [
                          {
                            "group_id": "76738816",
                            "group_name": "Customized",
                            "options": [
                              {
                                "default": true,
                                "id": "223490699",
                                "name": "Burger Only"
                              },
                              {
                                "id": "223490700",
                                "name": "Reg Meal- Fries(R)+Coke (36% OFF)"
                              },
                              {
                                "id": "223490701",
                                "name": "Shake Meal- Fries(R)+Shake (29% OFF)"
                              }
                            ]
                          }
                        ]
                      }
                    ],
                    "restaurant": {
                      "address": "Unit no 111/4, and 8/2, Asha Gallary, Opposite to west side , Commercial Street, Bangalore-  5600001",
                      "area_name": "Shivaji Nagar",
                      "avg_rating": 4.2,
                      "avg_rating_string": "4.2",
                      "city": "Bangalore",
                      "cloudinary_image_id": "RX_THUMBNAIL/IMAGES/VENDOR/2025/6/18/[redacted:token].jpg",
                      "cost_for_two": 35000,
                      "cost_for_two_message": "₹350 for two",
                      "cuisines": [
                        "Burgers",
                        "American"
                      ],
                      "delivery_time_minutes": 33,
                      "id": "5938",
                      "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/RX_THUMBNAIL/IMAGES/VENDOR/2025/6/18/[redacted:token].jpg",
                      "is_open": true,
                      "last_mile_travel_km": 2.6,
                      "last_mile_travel_string": "2.6 km",
                      "locality": "Tasker Town",
                      "name": "Burger King",
                      "offers": [
                        {
                          "header": "Get items under 59"
                        },
                        {
                          "header": "99 store",
                          "sub_header": "FinalPrice"
                        },
                        {
                          "header": "70% Off | Use DELULU4FOOD",
                          "sub_header": "Percentage"
                        }
                      ],
                      "parent_id": "166",
                      "restaurant_url": "https://www.swiggy.com/city/bangalore/burger-king-central-bangalore-rest5938",
                      "serviceability": "SERVICEABLE",
                      "sla_string": "30-35 MINS",
                      "slug": "burger-king-central-bangalore",
                      "total_ratings_string": "41K+ ratings"
                    }
                  }
                },
                "error": {
                  "type": "null"
                },
                "index": {
                  "const": 0,
                  "type": "integer"
                },
                "url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "url",
                "data",
                "error"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "started_at": {
            "anyOf": [
              {
                "description": "When the job began executing (ISO 8601 UTC), or null if it never ran.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "started_at",
          "completed_at",
          "results",
          "billing",
          "stats",
          "outcome"
        ],
        "type": "object"
      },
      "SwiggyListAllRestaurantsExecuteRequest": {
        "additionalProperties": false,
        "description": "Stream the deduplicated restaurants of Swiggy's whole first listing page at a location.",
        "example": {
          "capability": "swiggy.list.all_restaurants",
          "input": {
            "latitude": 12.9121181,
            "longitude": 77.6445548,
            "max_pages": 1,
            "max_restaurants": 5,
            "page_limit": 5
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "swiggy.list.all_restaurants"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/SwiggyListAllRestaurantsInput"
          },
          "max_credits": {
            "description": "Optional credit ceiling. The job is refused with `credit_limit_exceeded` before acceptance when its published price is higher. Takes precedence over the `X-Max-Credits` header.",
            "minimum": 1,
            "type": "integer"
          },
          "network": {
            "$ref": "#/components/schemas/ExecuteNetwork"
          },
          "timeout_ms": {
            "description": "Optional request timeout in milliseconds. Values above the capability timeout are rejected.",
            "maximum": 120000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "capability",
          "input"
        ],
        "type": "object"
      },
      "SwiggyCategoriesInput": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "latitude": {
            "description": "Latitude of the location.",
            "type": "number"
          },
          "limit": {
            "description": "Maximum number of categories.",
            "type": "integer"
          },
          "longitude": {
            "description": "Longitude of the location.",
            "type": "number"
          }
        },
        "required": [],
        "type": "object"
      },
      "SwiggyAreaRestaurantsInput": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "center_latitude": {
            "description": "Center latitude for radius mode.",
            "type": "number"
          },
          "center_longitude": {
            "description": "Center longitude for radius mode.",
            "type": "number"
          },
          "city": {
            "description": "City name.",
            "type": "string"
          },
          "concurrency": {
            "description": "Number of concurrent requests.",
            "type": "integer"
          },
          "max_cells": {
            "default": 10,
            "description": "Grid cells to crawl, one listing page each (default 10, at most 25). Larger values are rejected.",
            "maximum": 25,
            "minimum": 1,
            "type": "integer"
          },
          "max_latitude": {
            "description": "Maximum latitude of bounding box.",
            "type": "number"
          },
          "max_longitude": {
            "description": "Maximum longitude of bounding box.",
            "type": "number"
          },
          "max_pages_per_cell": {
            "description": "Kept for compatibility. Swiggy serves one listing page per location, so one page is fetched per cell; a larger value is applied as 1 and noted in summary.warnings.",
            "type": "integer"
          },
          "max_restaurants": {
            "description": "Maximum restaurants to return.",
            "type": "integer"
          },
          "min_latitude": {
            "description": "Minimum latitude of bounding box.",
            "type": "number"
          },
          "min_longitude": {
            "description": "Minimum longitude of bounding box.",
            "type": "number"
          },
          "page_limit": {
            "description": "Requested source page size. Swiggy returns its whole first listing page (about 26 restaurants) whatever this asks for; use max_restaurants to cap results.",
            "type": "integer"
          },
          "radius_km": {
            "description": "Radius in kilometers.",
            "type": "number"
          },
          "step_km": {
            "description": "Grid step size in kilometers.",
            "type": "number"
          }
        },
        "required": [],
        "type": "object"
      },
      "SwiggyAreaMenuItemsCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "swiggy.area.menu_items"
            ],
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "When the source data was read and the job completed (ISO 8601 UTC). This is the observation time for the returned data, to the job's precision, not a per-item upstream timestamp. Null unless the job completed.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "outcome": {
            "description": "Truthful module completion detail; status is complete unless the module reports partial or incomplete output.",
            "type": "object"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Raw capability output. Its shape may evolve with the upstream source; the example is illustrative, not a compatibility guarantee.",
                  "example": {
                    "items": [
                      {
                        "variant_group_names_text": "Choice of Cheese",
                        "restaurant_locality": "5TH SECTOR",
                        "variant_group_count": 1,
                        "category": "Korean Burgers",
                        "rating": 4.5,
                        "restaurant_city": "Bangalore",
                        "restaurant_cuisines_text": "Bubble Tea, Burger",
                        "restaurant_rating_text": "4.2",
                        "rating_count": "25 ratings",
                        "addon_group_names": [
                          "Select Your Pickle"
                        ],
                        "restaurant_rating": 4.2,
                        "final_price_minor": 15800,
                        "item_id": "149623609",
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2024/10/24/[redacted:token].jpg_compressed",
                        "in_stock": true,
                        "restaurant_name": "Boba Bhai - Bubble Tea & Korean Street Food",
                        "default_price_minor": 28900,
                        "description": "The Golden Fried Veg Patty Topped with our in house burger sauce, onions, Lettuce and freshly baked bun. We do not add Tomatoes in our burger.",
                        "name": "The OG Veggie Burger",
                        "cell_id": "cell-0001",
                        "restaurant_id": "819617",
                        "offer_ids": [
                          "ced9fdd2-3b85-4772-a459-1a9f2a3eb833"
                        ],
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/boba-bhai-5th-sector-hsr-rest819617",
                        "cell_longitude": 77.635312,
                        "is_veg": true,
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2024/10/24/[redacted:token].jpg_compressed",
                        "restaurant_area_name": "HSR Layout",
                        "crawl_id": "050786af-f034-4ef9-bbf6-0a6ef9baed94",
                        "addon_group_count": 1,
                        "variant_group_names": [
                          "Choice of Cheese"
                        ],
                        "offer_ids_text": "ced9fdd2-3b85-4772-a459-1a9f2a3eb833",
                        "cell_rank": 1,
                        "cell_latitude": 12.903109,
                        "restaurant_cuisines": [
                          "Bubble Tea",
                          "Burger"
                        ],
                        "addon_group_names_text": "Select Your Pickle"
                      },
                      {
                        "variant_group_names_text": "Choice of Cheese",
                        "restaurant_locality": "5TH SECTOR",
                        "variant_group_count": 1,
                        "category": "Korean Burgers",
                        "rating": 4.7,
                        "restaurant_city": "Bangalore",
                        "restaurant_cuisines_text": "Bubble Tea, Burger",
                        "restaurant_rating_text": "4.2",
                        "rating_count": "19 ratings",
                        "addon_group_names": [
                          "Select Your Pickle"
                        ],
                        "restaurant_rating": 4.2,
                        "final_price_minor": 15800,
                        "item_id": "149623583",
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2024/10/24/[redacted:token].jpg",
                        "in_stock": true,
                        "restaurant_name": "Boba Bhai - Bubble Tea & Korean Street Food",
                        "default_price_minor": 28900,
                        "description": "Minced Chicken Patty fried to perfection topped with House Mayo, Lettuce and Tangy Chipotle Sauce on Fresh warm bun.",
                        "name": "Crispy Chicken Burger (VR)",
                        "cell_id": "cell-0001",
                        "restaurant_id": "819617",
                        "offer_ids": [
                          "ced9fdd2-3b85-4772-a459-1a9f2a3eb833"
                        ],
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/boba-bhai-5th-sector-hsr-rest819617",
                        "cell_longitude": 77.635312,
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2024/10/24/[redacted:token].jpg",
                        "restaurant_area_name": "HSR Layout",
                        "crawl_id": "050786af-f034-4ef9-bbf6-0a6ef9baed94",
                        "addon_group_count": 1,
                        "variant_group_names": [
                          "Choice of Cheese"
                        ],
                        "offer_ids_text": "ced9fdd2-3b85-4772-a459-1a9f2a3eb833",
                        "cell_rank": 1,
                        "cell_latitude": 12.903109,
                        "restaurant_cuisines": [
                          "Bubble Tea",
                          "Burger"
                        ],
                        "addon_group_names_text": "Select Your Pickle"
                      },
                      {
                        "addon_group_count": 1,
                        "addon_group_names": [
                          "Choice of Dip"
                        ],
                        "addon_group_names_text": "Choice of Dip",
                        "category": "New & Trending",
                        "cell_id": "cell-0001",
                        "cell_latitude": 12.903109,
                        "cell_longitude": 77.635312,
                        "cell_rank": 1,
                        "crawl_id": "050786af-f034-4ef9-bbf6-0a6ef9baed94",
                        "description": "Crispy golden rings coated with a crunchy breadcrumb crust and filled with rich, gooey melted cheese inside — perfectly fried to deliver a satisfying crunch on the outside and a creamy, cheesy burst in every bite.",
                        "final_price_minor": 19900,
                        "image_id": "FOOD_CATALOG/IMAGES/CMS/2026/6/25/[redacted:token].jpg",
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/FOOD_CATALOG/IMAGES/CMS/2026/6/25/[redacted:token].jpg",
                        "in_stock": true,
                        "is_veg": true,
                        "item_id": "203754873",
                        "name": "Crispy Cheese Rings",
                        "offer_ids": [
                          "cc992051-e5ad-4be3-a6bc-2a429a49ab42"
                        ],
                        "offer_ids_text": "cc992051-e5ad-4be3-a6bc-2a429a49ab42",
                        "price_minor": 24900,
                        "restaurant_area_name": "HSR Layout",
                        "restaurant_city": "Bangalore",
                        "restaurant_cuisines": [
                          "Bubble Tea",
                          "Burger"
                        ],
                        "restaurant_cuisines_text": "Bubble Tea, Burger",
                        "restaurant_id": "819617",
                        "restaurant_locality": "5TH SECTOR",
                        "restaurant_name": "Boba Bhai - Bubble Tea & Korean Street Food",
                        "restaurant_rating": 4.2,
                        "restaurant_rating_text": "4.2",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/boba-bhai-5th-sector-hsr-rest819617"
                      }
                    ],
                    "summary": {
                      "cells": 1,
                      "crawl_id": "050786af-f034-4ef9-bbf6-0a6ef9baed94",
                      "has_more": true,
                      "pages_fetched": 1,
                      "stop_reason": "max_restaurants",
                      "total_items": 10,
                      "truncated": true
                    }
                  }
                },
                "error": {
                  "type": "null"
                },
                "index": {
                  "const": 0,
                  "type": "integer"
                },
                "url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "url",
                "data",
                "error"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "started_at": {
            "anyOf": [
              {
                "description": "When the job began executing (ISO 8601 UTC), or null if it never ran.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "started_at",
          "completed_at",
          "results",
          "billing",
          "stats",
          "outcome"
        ],
        "type": "object"
      },
      "RateLimitError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "rate_limited",
                "type": "string"
              },
              "message": {
                "const": "rate limit exceeded",
                "type": "string"
              },
              "retry_after_ms": {
                "description": "Milliseconds until the rolling window resets enough to retry. The `retry-after` response header carries the same value rounded up to seconds.",
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "code",
              "message",
              "retry_after_ms"
            ],
            "type": "object"
          },
          "request_id": {
            "description": "Safe Upscrape HTTP request identifier, also returned in the x-request-id header. For accepted jobs, job_id is the durable execution identifier.",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "error",
          "request_id"
        ],
        "type": "object"
      },
      "ExecuteReplayResponse": {
        "additionalProperties": false,
        "description": "Replayed response matching the original job's current state (completed, failed, or pending).",
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "swiggy.ads.list",
              "swiggy.area.menu_items",
              "swiggy.area.restaurants",
              "swiggy.categories",
              "swiggy.list",
              "swiggy.list.all_restaurants",
              "swiggy.list.restaurants",
              "swiggy.menu",
              "swiggy.menu.area_items",
              "swiggy.menu.items",
              "swiggy.search.dishes",
              "swiggy.search.restaurants"
            ],
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "When the source data was read and the job completed (ISO 8601 UTC). This is the observation time for the returned data, to the job's precision, not a per-item upstream timestamp. Null unless the job completed.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {},
          "idempotent_replay": {
            "const": true,
            "type": "boolean"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "poll_after_ms": {
            "minimum": 0,
            "type": "integer"
          },
          "poll_url": {
            "format": "uri",
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {},
          "started_at": {
            "anyOf": [
              {
                "description": "When the job began executing (ISO 8601 UTC), or null if it never ran.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "enum": [
              "queued",
              "running",
              "retrying",
              "completed",
              "failed"
            ],
            "type": "string"
          },
          "stats": {},
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "idempotent_replay"
        ],
        "type": "object"
      },
      "SwiggySearchDishesInput": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "latitude": {
            "description": "Latitude of the location.",
            "type": "number"
          },
          "limit": {
            "description": "Maximum number of results.",
            "type": "integer"
          },
          "longitude": {
            "description": "Longitude of the location.",
            "type": "number"
          },
          "metadata": {
            "description": "Additional metadata.",
            "type": "string"
          },
          "query": {
            "description": "Search keyword.",
            "type": "string"
          },
          "query_unique_id": {
            "description": "Unique query identifier.",
            "type": "string"
          },
          "tracking_id": {
            "description": "Tracking identifier.",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "NotFoundError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "not_found",
                "type": "string"
              },
              "message": {
                "enum": [
                  "job not found",
                  "monitor not found",
                  "monitors are not available for this account"
                ],
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "request_id": {
            "description": "Safe Upscrape HTTP request identifier, also returned in the x-request-id header. For accepted jobs, job_id is the durable execution identifier.",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "error",
          "request_id"
        ],
        "type": "object"
      },
      "SwiggyAreaRestaurantsExecuteRequest": {
        "additionalProperties": false,
        "description": "Crawl a Swiggy area grid, one first listing page per cell, and stream deduplicated restaurant rows.",
        "example": {
          "capability": "swiggy.area.restaurants",
          "input": {
            "center_latitude": 12.9121181,
            "center_longitude": 77.6445548,
            "max_cells": 2,
            "max_pages_per_cell": 1,
            "max_restaurants": 50,
            "page_limit": 20,
            "radius_km": 1,
            "step_km": 1
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "swiggy.area.restaurants"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/SwiggyAreaRestaurantsInput"
          },
          "max_credits": {
            "description": "Optional credit ceiling. The job is refused with `credit_limit_exceeded` before acceptance when its published price is higher. Takes precedence over the `X-Max-Credits` header.",
            "minimum": 1,
            "type": "integer"
          },
          "network": {
            "$ref": "#/components/schemas/ExecuteNetwork"
          },
          "timeout_ms": {
            "description": "Optional request timeout in milliseconds. Values above the capability timeout are rejected.",
            "maximum": 120000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "capability",
          "input"
        ],
        "type": "object"
      },
      "SwiggyAdsListInput": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "required": [
              "latitude",
              "longitude"
            ]
          },
          {
            "properties": {
              "latitude": {
                "type": "null"
              },
              "longitude": {
                "type": "null"
              }
            }
          }
        ],
        "properties": {
          "latitude": {
            "description": "Latitude; supply together with longitude, or omit both for the default delivery area.",
            "maximum": 90,
            "minimum": -90,
            "type": "number"
          },
          "limit": {
            "description": "Maximum number of results, taken from Swiggy's first listing page.",
            "type": "integer"
          },
          "longitude": {
            "description": "Longitude; supply together with latitude, or omit both for the default delivery area.",
            "maximum": 180,
            "minimum": -180,
            "type": "number"
          },
          "offset": {
            "description": "Not supported: Swiggy serves one listing page per location, so there is no next page to continue. Omit it; any value is rejected as invalid_input.",
            "maxLength": 16384,
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "IdempotencyConflictError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "idempotency_conflict",
                "type": "string"
              },
              "message": {
                "const": "idempotency key has already been used for a different request",
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "request_id": {
            "description": "Safe Upscrape HTTP request identifier, also returned in the x-request-id header. For accepted jobs, job_id is the durable execution identifier.",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "error",
          "request_id"
        ],
        "type": "object"
      },
      "SwiggyMenuItemsInput": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "required": [
              "latitude",
              "longitude"
            ]
          },
          {
            "properties": {
              "latitude": {
                "type": "null"
              },
              "longitude": {
                "type": "null"
              }
            }
          }
        ],
        "properties": {
          "latitude": {
            "description": "Latitude; supply together with longitude, or omit both for the default delivery area.",
            "maximum": 90,
            "minimum": -90,
            "type": "number"
          },
          "limit": {
            "description": "Maximum number of menu items.",
            "type": "integer"
          },
          "longitude": {
            "description": "Longitude; supply together with latitude, or omit both for the default delivery area.",
            "maximum": 180,
            "minimum": -180,
            "type": "number"
          },
          "restaurant_id": {
            "description": "Positive numeric Swiggy restaurant ID, supplied as a string.",
            "pattern": "^[1-9][0-9]*$",
            "type": "string"
          },
          "restaurant_url": {
            "description": "HTTPS swiggy.com or www.swiggy.com city restaurant URL ending in -rest<ID>. If restaurant_id is also supplied, both must agree. Short links and other URL paths are unsupported.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SwiggyListRestaurantsCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "swiggy.list.restaurants"
            ],
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "description": "When the source data was read and the job completed (ISO 8601 UTC). This is the observation time for the returned data, to the job's precision, not a per-item upstream timestamp. Null unless the job completed.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "outcome": {
            "description": "Truthful module completion detail; status is complete unless the module reports partial or incomplete output.",
            "type": "object"
          },
          "platform": {
            "enum": [
              "swiggy"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Raw capability output. Its shape may evolve with the upstream source; the example is illustrative, not a compatibility guarantee.",
                  "example": {
                    "items": [
                      {
                        "area_name": "HSR Layout",
                        "cloudinary_image_id": "RX_THUMBNAIL/IMAGES/VENDOR/2026/6/15/[redacted:token].JPG",
                        "cost_for_two_minor": 30000,
                        "cost_for_two_text": "₹300 for two",
                        "cuisines": [
                          "Pizzas"
                        ],
                        "cuisines_text": "Pizzas",
                        "delivery_time_minutes": 25,
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/RX_THUMBNAIL/IMAGES/VENDOR/2026/6/15/[redacted:token].JPG",
                        "is_open": true,
                        "last_mile_travel_km": 0.9,
                        "last_mile_travel_text": "0.9 km",
                        "latitude": 12.9121181,
                        "locality": "14th Main",
                        "longitude": 77.6445548,
                        "name": "Pizza Hut",
                        "offer_headers": [
                          "50% OFF"
                        ],
                        "offer_text": "50% OFF",
                        "parent_id": "721",
                        "rating": 4,
                        "rating_text": "4.0",
                        "restaurant_id": "10581",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/[redacted:token]",
                        "serviceability": "SERVICEABLE",
                        "sla_text": "25-30 mins",
                        "total_ratings_text": "21K+"
                      },
                      {
                        "area_name": "HSR Layout",
                        "cloudinary_image_id": "RX_THUMBNAIL/IMAGES/VENDOR/2024/11/7/[redacted:token].jpg",
                        "cost_for_two_minor": 20000,
                        "cost_for_two_text": "₹200 for two",
                        "cuisines": [
                          "Bubble Tea",
                          "Burger",
                          "Korean"
                        ],
                        "cuisines_text": "Bubble Tea, Burger, Korean, Beverages, Fast Food, Juice and shake",
                        "delivery_time_minutes": 22,
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/RX_THUMBNAIL/IMAGES/VENDOR/2024/11/7/[redacted:token].jpg",
                        "is_open": true,
                        "last_mile_travel_km": 0.6,
                        "last_mile_travel_text": "0.6 km",
                        "latitude": 12.9121181,
                        "locality": "5TH SECTOR",
                        "longitude": 77.6445548,
                        "name": "Boba Bhai - Bubble Tea & Korean Street Food",
                        "offer_headers": [
                          "60% OFF"
                        ],
                        "offer_text": "60% OFF",
                        "parent_id": "361235",
                        "rating": 4.2,
                        "rating_text": "4.2",
                        "restaurant_id": "819617",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/[redacted:token]",
                        "serviceability": "SERVICEABLE",
                        "sla_text": "20-25 mins",
                        "total_ratings_text": "1.2K+"
                      },
                      {
                        "area_name": "HSR Layout",
                        "cloudinary_image_id": "RX_THUMBNAIL/IMAGES/VENDOR/2026/6/18/[redacted:token].JPG",
                        "cost_for_two_minor": 40000,
                        "cost_for_two_text": "₹400 for two",
                        "cuisines": [
                          "Burgers",
                          "Beverages",
                          "Cafe"
                        ],
                        "cuisines_text": "Burgers, Beverages, Cafe, Desserts",
                        "delivery_time_minutes": 26,
                        "image_url": "https://media-assets.swiggy.com/swiggy/image/upload/RX_THUMBNAIL/IMAGES/VENDOR/2026/6/18/[redacted:token].JPG",
                        "is_open": true,
                        "last_mile_travel_km": 1.4,
                        "last_mile_travel_text": "1.4 km",
                        "latitude": 12.9121181,
                        "locality": "HSR Layout",
                        "longitude": 77.6445548,
                        "name": "McDonald's",
                        "offer_headers": [
                          "ITEMS"
                        ],
                        "offer_text": "ITEMS",
                        "parent_id": "630",
                        "rating": 4.3,
                        "rating_text": "4.3",
                        "restaurant_id": "23682",
                        "restaurant_url": "https://www.swiggy.com/city/bangalore/mcdonalds-hsr-layout-rest23682",
                        "serviceability": "SERVICEABLE",
                        "sla_text": "25-30 mins",
                        "total_ratings_text": "79K+"
                      }
                    ],
                    "summary": {
                      "has_more": true,
                      "latitude": 12.9121181,
                      "longitude": 77.6445548,
                      "pages_fetched": 1,
                      "stop_reason": "limit",
                      "total_items": 5,
                      "truncated": true
                    }
                  }
                },
                "error": {
                  "type": "null"
                },
                "index": {
                  "const": 0,
                  "type": "integer"
                },
                "url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "url",
                "data",
                "error"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "started_at": {
            "anyOf": [
              {
                "description": "When the job began executing (ISO 8601 UTC), or null if it never ran.",
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "started_at",
          "completed_at",
          "results",
          "billing",
          "stats",
          "outcome"
        ],
        "type": "object"
      },
      "SwiggySearchRestaurantsExecuteRequest": {
        "additionalProperties": false,
        "description": "Search Swiggy restaurants by keyword near an Indian delivery location, with ratings, cuisines, cost for two and delivery time.",
        "example": {
          "capability": "swiggy.search.restaurants",
          "input": {
            "latitude": 12.9121181,
            "limit": 5,
            "longitude": 77.6445548,
            "query": "rolls"
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "swiggy.search.restaurants"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/SwiggySearchRestaurantsInput"
          },
          "max_credits": {
            "description": "Optional credit ceiling. The job is refused with `credit_limit_exceeded` before acceptance when its published price is higher. Takes precedence over the `X-Max-Credits` header.",
            "minimum": 1,
            "type": "integer"
          },
          "network": {
            "$ref": "#/components/schemas/ExecuteNetwork"
          },
          "timeout_ms": {
            "description": "Optional request timeout in milliseconds. Values above the capability timeout are rejected.",
            "maximum": 60000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "capability",
          "input"
        ],
        "type": "object"
      },
      "SwiggyAreaMenuItemsInput": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "center_latitude": {
            "description": "Center latitude for radius mode.",
            "type": "number"
          },
          "center_longitude": {
            "description": "Center longitude for radius mode.",
            "type": "number"
          },
          "city": {
            "description": "City name.",
            "type": "string"
          },
          "concurrency": {
            "description": "Number of concurrent requests.",
            "type": "integer"
          },
          "continue_on_menu_failures": {
            "description": "Continue if a menu fetch fails.",
            "type": "boolean"
          },
          "max_cells": {
            "default": 5,
            "description": "Grid cells to crawl, one listing page each (default 5, at most 5). Larger values are rejected.",
            "maximum": 5,
            "minimum": 1,
            "type": "integer"
          },
          "max_latitude": {
            "description": "Maximum latitude of bounding box.",
            "type": "number"
          },
          "max_longitude": {
            "description": "Maximum longitude of bounding box.",
            "type": "number"
          },
          "max_pages_per_cell": {
            "description": "Kept for compatibility. Swiggy serves one listing page per location, so one page is fetched per cell; a larger value is applied as 1 and noted in summary.warnings.",
            "type": "integer"
          },
          "max_restaurants": {
            "default": 10,
            "description": "Restaurants whose menus are read (default 10, at most 10). Larger values are rejected.",
            "maximum": 10,
            "minimum": 1,
            "type": "integer"
          },
          "menu_item_limit": {
            "description": "Maximum menu items per restaurant.",
            "type": "integer"
          },
          "min_latitude": {
            "description": "Minimum latitude of bounding box.",
            "type": "number"
          },
          "min_longitude": {
            "description": "Minimum longitude of bounding box.",
            "type": "number"
          },
          "page_limit": {
            "description": "Requested source page size. Swiggy returns its whole first listing page (about 26 restaurants) whatever this asks for; use max_restaurants to cap results.",
            "type": "integer"
          },
          "radius_km": {
            "description": "Radius in kilometers.",
            "type": "number"
          },
          "step_km": {
            "description": "Grid step size in kilometers.",
            "type": "number"
          }
        },
        "required": [],
        "type": "object"
      },
      "SwiggyMenuAreaItemsExecuteRequest": {
        "additionalProperties": false,
        "description": "Discover restaurants on Swiggy's first listing page near a location and stream their menu items.",
        "example": {
          "capability": "swiggy.menu.area_items",
          "input": {
            "continue_on_menu_failures": true,
            "latitude": 12.9121181,
            "longitude": 77.6445548,
            "max_pages": 1,
            "max_restaurants": 2,
            "menu_item_limit": 5,
            "page_limit": 3
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "swiggy.menu.area_items"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/SwiggyMenuAreaItemsInput"
          },
          "max_credits": {
            "description": "Optional credit ceiling. The job is refused with `credit_limit_exceeded` before acceptance when its published price is higher. Takes precedence over the `X-Max-Credits` header.",
            "minimum": 1,
            "type": "integer"
          },
          "network": {
            "$ref": "#/components/schemas/ExecuteNetwork"
          },
          "timeout_ms": {
            "description": "Optional request timeout in milliseconds. Values above the capability timeout are rejected.",
            "maximum": 120000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "capability",
          "input"
        ],
        "type": "object"
      },
      "SwiggySearchRestaurantsInput": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "latitude": {
            "description": "Latitude of the location.",
            "type": "number"
          },
          "limit": {
            "description": "Maximum number of results.",
            "type": "integer"
          },
          "longitude": {
            "description": "Longitude of the location.",
            "type": "number"
          },
          "metadata": {
            "description": "Additional metadata.",
            "type": "string"
          },
          "query": {
            "description": "Search keyword.",
            "type": "string"
          },
          "query_unique_id": {
            "description": "Unique query identifier.",
            "type": "string"
          },
          "selected_tab": {
            "description": "Selected search tab.",
            "type": "string"
          },
          "tracking_id": {
            "description": "Tracking identifier.",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "SwiggyMenuAreaItemsInput": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "required": [
              "latitude",
              "longitude"
            ]
          },
          {
            "properties": {
              "latitude": {
                "type": "null"
              },
              "longitude": {
                "type": "null"
              }
            }
          }
        ],
        "properties": {
          "continue_on_menu_failures": {
            "description": "Continue if a menu fetch fails.",
            "type": "boolean"
          },
          "latitude": {
            "description": "Latitude; supply together with longitude, or omit both for the default delivery area.",
            "maximum": 90,
            "minimum": -90,
            "type": "number"
          },
          "longitude": {
            "description": "Longitude; supply together with latitude, or omit both for the default delivery area.",
            "maximum": 180,
            "minimum": -180,
            "type": "number"
          },
          "max_pages": {
            "description": "Kept for compatibility. Swiggy serves one listing page per location, so one page is fetched; a larger value is applied as 1 and noted in summary.warnings. It still sets the default max_restaurants (page_limit x max_pages).",
            "type": "integer"
          },
          "max_restaurants": {
            "description": "Maximum restaurants to discover.",
            "type": "integer"
          },
          "menu_item_limit": {
            "description": "Maximum menu items per restaurant.",
            "type": "integer"
          },
          "offset": {
            "description": "Not supported: Swiggy serves one listing page per location, so there is no next page to continue. Omit it; any value is rejected as invalid_input.",
            "maxLength": 16384,
            "type": "string"
          },
          "page_limit": {
            "description": "Requested source page size. Swiggy returns its whole first listing page (about 26 restaurants) whatever this asks for; use max_restaurants to cap results.",
            "type": "integer"
          }
        },
        "required": [],
        "type": "object"
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "bearerFormat": "API Key",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "See which restaurants Swiggy shows at any delivery location, with ratings, cost for two and delivery time, then pull each menu with item prices, add-ons and stock. Send coordinates or a restaurant link, get JSON back.\nThis spec includes only the live `Swiggy` capabilities exposed by Upscrape.\nExecution uses the generic `POST /execute` endpoint and job polling uses `GET /jobs/{id}`.\nSupported capabilities: `swiggy.ads.list`, `swiggy.area.menu_items`, `swiggy.area.restaurants`, `swiggy.categories`, `swiggy.list`, `swiggy.list.all_restaurants`, `swiggy.list.restaurants`, `swiggy.menu`, `swiggy.menu.area_items`, `swiggy.menu.items`, `swiggy.search.dishes`, `swiggy.search.restaurants`\n## Rate limiting\n\nRequests are rate-limited per API key at **1200 requests per minute** on a rolling window. Every response includes `x-ratelimit-limit`, `x-ratelimit-remaining`, and `x-ratelimit-reset` (Unix ms) headers so clients can self-pace. When the limit is exceeded the API returns `429` with a `rate_limited` error body and a `retry-after` header in seconds plus a `retry_after_ms` field on the body for finer-grained backoff.",
    "title": "Swiggy API",
    "version": "1.0.0"
  },
  "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "openapi": "3.1.0",
  "paths": {
    "/execute": {
      "post": {
        "description": "All executions are asynchronous. Submit a capability-specific payload to `POST /execute`, then poll the returned `job_id`.",
        "operationId": "swiggy_execute",
        "parameters": [
          {
            "description": "Optional idempotency key. Reusing the same key with the same request replays the original job.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "description": "Optional credit ceiling for this job, as a positive integer. The request is refused with `422 credit_limit_exceeded` before acceptance when the published price for the submitted input is higher. The body field `max_credits` takes precedence when both are sent. It never changes the price.",
            "in": "header",
            "name": "X-Max-Credits",
            "required": false,
            "schema": {
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Request synchronous completion. Use `wait=N` to hold the connection up to N seconds (max 30). If the job completes within the window, the response is `200` with full results (same shape as `GET /jobs/{id}`). If not, the response is the normal `202` with a `job_id` for polling. Omit this header for default asynchronous behavior.",
            "examples": {
              "wait30": {
                "summary": "Wait up to 30 seconds",
                "value": "wait=30"
              },
              "wait5": {
                "summary": "Wait up to 5 seconds",
                "value": "wait=5"
              }
            },
            "in": "header",
            "name": "Prefer",
            "required": false,
            "schema": {
              "example": "wait=30",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "capability": "swiggy.ads.list",
                "input": {
                  "latitude": 12.9121181,
                  "limit": 5,
                  "longitude": 77.6445548
                }
              },
              "schema": {
                "discriminator": {
                  "mapping": {
                    "swiggy.ads.list": "#/components/schemas/SwiggyAdsListExecuteRequest",
                    "swiggy.area.menu_items": "#/components/schemas/SwiggyAreaMenuItemsExecuteRequest",
                    "swiggy.area.restaurants": "#/components/schemas/SwiggyAreaRestaurantsExecuteRequest",
                    "swiggy.categories": "#/components/schemas/SwiggyCategoriesExecuteRequest",
                    "swiggy.list": "#/components/schemas/SwiggyListExecuteRequest",
                    "swiggy.list.all_restaurants": "#/components/schemas/SwiggyListAllRestaurantsExecuteRequest",
                    "swiggy.list.restaurants": "#/components/schemas/SwiggyListRestaurantsExecuteRequest",
                    "swiggy.menu": "#/components/schemas/SwiggyMenuExecuteRequest",
                    "swiggy.menu.area_items": "#/components/schemas/SwiggyMenuAreaItemsExecuteRequest",
                    "swiggy.menu.items": "#/components/schemas/SwiggyMenuItemsExecuteRequest",
                    "swiggy.search.dishes": "#/components/schemas/SwiggySearchDishesExecuteRequest",
                    "swiggy.search.restaurants": "#/components/schemas/SwiggySearchRestaurantsExecuteRequest"
                  },
                  "propertyName": "capability"
                },
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/SwiggyAdsListExecuteRequest"
                  },
                  {
                    "$ref": "#/components/schemas/SwiggyAreaMenuItemsExecuteRequest"
                  },
                  {
                    "$ref": "#/components/schemas/SwiggyAreaRestaurantsExecuteRequest"
                  },
                  {
                    "$ref": "#/components/schemas/SwiggyCategoriesExecuteRequest"
                  },
                  {
                    "$ref": "#/components/schemas/SwiggyListExecuteRequest"
                  },
                  {
                    "$ref": "#/components/schemas/SwiggyListAllRestaurantsExecuteRequest"
                  },
                  {
                    "$ref": "#/components/schemas/SwiggyListRestaurantsExecuteRequest"
                  },
                  {
                    "$ref": "#/components/schemas/SwiggyMenuExecuteRequest"
                  },
                  {
                    "$ref": "#/components/schemas/SwiggyMenuAreaItemsExecuteRequest"
                  },
                  {
                    "$ref": "#/components/schemas/SwiggyMenuItemsExecuteRequest"
                  },
                  {
                    "$ref": "#/components/schemas/SwiggySearchDishesExecuteRequest"
                  },
                  {
                    "$ref": "#/components/schemas/SwiggySearchRestaurantsExecuteRequest"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/SwiggyAdsListCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyAreaMenuItemsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyAreaRestaurantsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyCategoriesCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyListCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyListAllRestaurantsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyListRestaurantsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyMenuCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyMenuAreaItemsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyMenuItemsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggySearchDishesCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggySearchRestaurantsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/ExecuteReplayResponse"
                    },
                    {
                      "$ref": "#/components/schemas/JobFailedResponse"
                    }
                  ]
                }
              }
            },
            "description": "Job completed within the `Prefer: wait` window, or existing job replayed via idempotency key.",
            "headers": {
              "Preference-Applied": {
                "description": "Present when the server honored the `Prefer: wait` preference.",
                "schema": {
                  "example": "wait=30",
                  "type": "string"
                }
              },
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          },
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "capability": "swiggy.ads.list",
                  "job_id": "00000000-0000-0000-0000-000000000001",
                  "platform": "swiggy",
                  "poll_after_ms": 2000,
                  "poll_url": "https://data.upscrape.com/jobs/00000000-0000-0000-0000-000000000001",
                  "request_id": "00000000-0000-0000-0000-000000000001",
                  "state": "queued"
                },
                "schema": {
                  "$ref": "#/components/schemas/ExecuteAcceptedResponse"
                }
              }
            },
            "description": "Job accepted and queued, or attached to an identical active keyless request.",
            "headers": {
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description": "Unauthorized"
          },
          "402": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotaError"
                }
              }
            },
            "description": "The authenticated account cannot execute the request."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobFailedResponse"
                }
              }
            },
            "description": "The requested public data is unavailable or access is denied. Confirmed account privacy and sign-in requirements include a safe reason."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobFailedResponse"
                }
              }
            },
            "description": "The upstream source confirms that the requested resource was not found. The response retains the job identity."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdempotencyConflictError"
                }
              }
            },
            "description": "Idempotency conflict"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationErrors"
                    },
                    {
                      "$ref": "#/components/schemas/CredentialsRequiredError"
                    },
                    {
                      "$ref": "#/components/schemas/CreditLimitError"
                    }
                  ]
                }
              }
            },
            "description": "The request body failed validation."
          },
          "424": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobFailedResponse"
                }
              }
            },
            "description": "A durable job reached a terminal upstream dependency failure within the Prefer wait window. The body retains job_id and request_id for diagnosis."
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "rate_limited",
                    "message": "rate limit exceeded",
                    "retry_after_ms": 4200
                  },
                  "request_id": "safe-http-request-id"
                },
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            },
            "description": "The per-API-key rate limit has been exceeded. Clients should back off until `retry_after_ms` has elapsed (or `retry-after` seconds).",
            "headers": {
              "retry-after": {
                "description": "Seconds until the client may retry (ceiling of `retry_after_ms`).",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "description": "Unexpected server error"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "description": "The capability cannot be served right now. Do not retry immediately; try again later."
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Queue a Swiggy capability run",
        "tags": [
          "Execution"
        ]
      }
    },
    "/jobs/{id}": {
      "get": {
        "description": "Get job status and result",
        "operationId": "swiggy_getJob",
        "parameters": [
          {
            "description": "The job ID returned by `POST /execute`.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/SwiggyAdsListCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyAreaMenuItemsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyAreaRestaurantsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyCategoriesCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyListCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyListAllRestaurantsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyListRestaurantsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyMenuCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyMenuAreaItemsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyMenuItemsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggySearchDishesCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggySearchRestaurantsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/JobFailedResponse"
                    }
                  ]
                }
              }
            },
            "description": "Completed or terminal job state.",
            "headers": {
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          },
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "capability": "swiggy.ads.list",
                  "job_id": "00000000-0000-0000-0000-000000000001",
                  "platform": "swiggy",
                  "poll_after_ms": 2000,
                  "poll_url": "https://data.upscrape.com/jobs/00000000-0000-0000-0000-000000000001",
                  "request_id": "00000000-0000-0000-0000-000000000001",
                  "state": "running"
                },
                "schema": {
                  "$ref": "#/components/schemas/JobPendingResponse"
                }
              }
            },
            "description": "Job is still queued, running, or retrying.",
            "headers": {
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            },
            "description": "Job not found"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "rate_limited",
                    "message": "rate limit exceeded",
                    "retry_after_ms": 4200
                  },
                  "request_id": "safe-http-request-id"
                },
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            },
            "description": "The per-API-key rate limit has been exceeded. Clients should back off until `retry_after_ms` has elapsed (or `retry-after` seconds).",
            "headers": {
              "retry-after": {
                "description": "Seconds until the client may retry (ceiling of `retry_after_ms`).",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Poll a Swiggy job",
        "tags": [
          "Jobs"
        ]
      }
    },
    "/jobs/{id}/result": {
      "get": {
        "description": "Backward-compatible alias for `/jobs/{id}`.",
        "operationId": "swiggy_getJobResult",
        "parameters": [
          {
            "description": "The job ID returned by `POST /execute`.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/SwiggyAdsListCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyAreaMenuItemsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyAreaRestaurantsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyCategoriesCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyListCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyListAllRestaurantsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyListRestaurantsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyMenuCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyMenuAreaItemsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggyMenuItemsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggySearchDishesCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/SwiggySearchRestaurantsCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/JobFailedResponse"
                    }
                  ]
                }
              }
            },
            "description": "Completed or terminal job state.",
            "headers": {
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          },
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "capability": "swiggy.ads.list",
                  "job_id": "00000000-0000-0000-0000-000000000001",
                  "platform": "swiggy",
                  "poll_after_ms": 2000,
                  "poll_url": "https://data.upscrape.com/jobs/00000000-0000-0000-0000-000000000001",
                  "request_id": "00000000-0000-0000-0000-000000000001",
                  "state": "running"
                },
                "schema": {
                  "$ref": "#/components/schemas/JobPendingResponse"
                }
              }
            },
            "description": "Job is still queued, running, or retrying.",
            "headers": {
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            },
            "description": "Job not found"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "rate_limited",
                    "message": "rate limit exceeded",
                    "retry_after_ms": 4200
                  },
                  "request_id": "safe-http-request-id"
                },
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            },
            "description": "The per-API-key rate limit has been exceeded. Clients should back off until `retry_after_ms` has elapsed (or `retry-after` seconds).",
            "headers": {
              "retry-after": {
                "description": "Seconds until the client may retry (ceiling of `retry_after_ms`).",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Poll a Swiggy job",
        "tags": [
          "Jobs"
        ]
      }
    }
  },
  "servers": [
    {
      "url": "https://data.upscrape.com"
    }
  ],
  "tags": [
    {
      "description": "Submit asynchronous capability runs.",
      "name": "Execution"
    },
    {
      "description": "Poll queued jobs for status and results.",
      "name": "Jobs"
    }
  ]
}