{
  "components": {
    "schemas": {
      "AsdaProductsSearchCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "asda.products.search"
            ],
            "type": "string"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "asda"
            ],
            "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": [
                      {
                        "avg_rating": 4.179,
                        "brand": "ASDA",
                        "category": "Chilled Food > Milk, Butter, Cream & Eggs > Fresh Milk > Semi Skimmed Milk",
                        "cin": "165468",
                        "currency": "GBP",
                        "gtin": "20337087",
                        "id": "20504",
                        "image_id": "20337087",
                        "image_url": "https://asdagroceries.scene7.com/is/image/asdagroceries/20337087",
                        "in_stock": true,
                        "name": "British Milk Semi Skimmed 4 Pints",
                        "pack_size": "4 PINT",
                        "price": 1.65,
                        "price_per_uom": "72.6p/LT",
                        "rating_count": 1039,
                        "sales_type": "Each",
                        "status": "A",
                        "taxonomy": {
                          "AISLE_ID": "1215339434886",
                          "AISLE_NAME": "Fresh Milk",
                          "CAT_ID": "1215660378320",
                          "CAT_NAME": "Chilled Food",
                          "DEPT_ID": "1215339432024",
                          "DEPT_NAME": "Milk, Butter, Cream & Eggs",
                          "SHELF_ID": "1215339438036",
                          "SHELF_NAME": "Semi Skimmed Milk"
                        },
                        "url": "https://www.asda.com/groceries/product/165468",
                        "was_price": 1.65
                      },
                      {
                        "avg_rating": 4.1786,
                        "brand": "ASDA",
                        "category": "Chilled Food > Milk, Butter, Cream & Eggs > Fresh Milk > Whole Milk",
                        "cin": "165426",
                        "currency": "GBP",
                        "gtin": "20332167",
                        "id": "20502",
                        "image_id": "20332167",
                        "image_url": "https://asdagroceries.scene7.com/is/image/asdagroceries/20332167",
                        "in_stock": true,
                        "name": "Whole British Milk 4 Pints",
                        "pack_size": "4 PINT",
                        "price": 1.65,
                        "price_per_uom": "72.6p/LT",
                        "rating_count": 543,
                        "sales_type": "Each",
                        "status": "A",
                        "taxonomy": {
                          "AISLE_ID": "1215339434886",
                          "AISLE_NAME": "Fresh Milk",
                          "CAT_ID": "1215660378320",
                          "CAT_NAME": "Chilled Food",
                          "DEPT_ID": "1215339432024",
                          "DEPT_NAME": "Milk, Butter, Cream & Eggs",
                          "SHELF_ID": "1215339437949",
                          "SHELF_NAME": "Whole Milk"
                        },
                        "url": "https://www.asda.com/groceries/product/165426",
                        "was_price": 1.65
                      },
                      {
                        "avg_rating": 4.1781,
                        "brand": "ASDA",
                        "category": "Chilled Food > Milk, Butter, Cream & Eggs > Fresh Milk > Semi Skimmed Milk",
                        "cin": "166556",
                        "currency": "GBP",
                        "gtin": "20353629",
                        "id": "20506",
                        "image_id": "20353629",
                        "image_url": "https://asdagroceries.scene7.com/is/image/asdagroceries/20353629",
                        "in_stock": true,
                        "name": "British Milk Semi Skimmed 6 Pints",
                        "pack_size": "6 PINT",
                        "price": 2.4,
                        "price_per_uom": "70.4p/LT",
                        "rating_count": 421,
                        "sales_type": "Each",
                        "status": "A",
                        "taxonomy": {
                          "AISLE_ID": "1215339434886",
                          "AISLE_NAME": "Fresh Milk",
                          "CAT_ID": "1215660378320",
                          "CAT_NAME": "Chilled Food",
                          "DEPT_ID": "1215339432024",
                          "DEPT_NAME": "Milk, Butter, Cream & Eggs",
                          "SHELF_ID": "1215339438036",
                          "SHELF_NAME": "Semi Skimmed Milk"
                        },
                        "url": "https://www.asda.com/groceries/product/166556",
                        "was_price": 2.4
                      }
                    ],
                    "page": {
                      "algolia_page": 0,
                      "hits_per_page": 5,
                      "nb_hits": 409,
                      "nb_pages": 82,
                      "page": 1
                    },
                    "raw": {
                      "exhaustive": {
                        "nbHits": true,
                        "typo": true
                      },
                      "exhaustiveNbHits": true,
                      "exhaustiveTypo": true,
                      "extensions": {
                        "queryCategorization": {
                          "autofiltering": {
                            "enabled": true,
                            "facetFilters": [],
                            "maxDepth": 5,
                            "optionalFilters": [
                              "PRIMARY_TAXONOMY.CAT_NAME:Chilled Food",
                              "PRIMARY_TAXONOMY.DEPT_NAME:Milk, Butter, Cream & Eggs",
                              "PRIMARY_TAXONOMY.AISLE_NAME:Fresh Milk"
                            ]
                          },
                          "count": 747268,
                          "normalizedQuery": "milk"
                        }
                      },
                      "hits": [
                        {
                          "AVG_RATING": 4.179,
                          "BRAND": "ASDA",
                          "CIN": "165468",
                          "CS_YES": false,
                          "END_DATE": 1924948800,
                          "ICONS": [
                            {
                              "CLICKABLE": false,
                              "END_DATE": 1551873600,
                              "ICON_NAME": "801_NoShellfish",
                              "ID": "51000002",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_000_Icon?&$Icon-wapp$",
                              "PRIORITY": 10440,
                              "START_DATE": 1551700800
                            },
                            {
                              "CLICKABLE": true,
                              "END_DATE": 1604275200,
                              "ICON_NAME": "_923_LiveBetter",
                              "ID": "53500014",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_923_LiveBetter?&$Icon-wapp$",
                              "PRIORITY": -83,
                              "START_DATE": 1575072060
                            },
                            {
                              "CLICKABLE": false,
                              "END_DATE": 1600171200,
                              "ICON_NAME": "_151_UnionFlag",
                              "ID": "55000003",
                              "IMAGE_URL": "https://ui.assets-asda.comtest.jpg",
                              "PRIORITY": 10427,
                              "START_DATE": 1594728000
                            },
                            {
                              "CLICKABLE": true,
                              "ICON_NAME": "Live Better",
                              "ID": "55100004",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_923_LiveBetter_Update?",
                              "PRIORITY": 875,
                              "START_DATE": 1596283200
                            },
                            {
                              "CLICKABLE": true,
                              "END_DATE": 1682510400,
                              "ICON_NAME": "_008_RedTractorAUTO",
                              "ID": "55200006",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_008_redtractor?&$icon-wapp$",
                              "PRIORITY": 5354,
                              "START_DATE": 1609329600
                            },
                            {
                              "CLICKABLE": false,
                              "END_DATE": 1608292800,
                              "ICON_NAME": "_555_CrackersIcon",
                              "ID": "56100010",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_555_CrackersIcon?&$icon-wapp$",
                              "PRIORITY": 251
                            },
                            {
                              "CLICKABLE": true,
                              "END_DATE": 1912161600,
                              "ICON_NAME": "Typically fresh for 5 days",
                              "ID": "59600046",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/produce-5-days-icon?",
                              "PRIORITY": 39,
                              "START_DATE": 1625227200
                            },
                            {
                              "CLICKABLE": true,
                              "END_DATE": 1682510400,
                              "ICON_NAME": "_043_British",
                              "ID": "1215429129918",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_043_british?",
                              "PRIORITY": 5435
                            },
                            {
                              "CLICKABLE": true,
                              "END_DATE": 1682510400,
                              "ICON_NAME": "_122_farmerowned",
                              "ID": "1215559958453",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_122_farmerowned?",
                              "PRIORITY": 1562
                            }
                          ],
                          "ID": "20504",
                          "IMAGE_ID": "20337087",
                          "IS_BWS": false,
                          "IS_FROZEN": false,
                          "IS_FTO": false,
                          "IS_SPONSORED": false,
                          "LABEL": "",
                          "MAX_QTY": 24,
                          "NAME": "British Milk Semi Skimmed 4 Pints",
                          "PACK_SIZE": "4 PINT",
                          "PHARMACY_RESTRICTED": false,
                          "PRICES": {
                            "EN": {
                              "OFFER": "Dropped",
                              "PRICE": 1.65,
                              "PRICEPERUOM": 0.72591,
                              "PRICEPERUOMFORMATTED": "72.6p/LT",
                              "WASPRICE": 1.65
                            }
                          },
                          "PRIMARY_TAXONOMY": {
                            "AISLE_ID": "1215339434886",
                            "AISLE_NAME": "Fresh Milk",
                            "CAT_ID": "1215660378320",
                            "CAT_NAME": "Chilled Food",
                            "DEPT_ID": "1215339432024",
                            "DEPT_NAME": "Milk, Butter, Cream & Eggs",
                            "SHELF_ID": "1215339438036",
                            "SHELF_NAME": "Semi Skimmed Milk"
                          },
                          "PRODUCT_TYPE": "STANDARD",
                          "RATING_COUNT": 1039,
                          "SALES_TYPE": "Each",
                          "SHOW_PRICE_CS": true,
                          "START_DATE": -1893412800,
                          "STATUS": "A",
                          "STOCK": {
                            "4565": 999
                          },
                          "_highlightResult": {
                            "BRAND": {
                              "matchLevel": "none",
                              "matchedWords": [],
                              "value": "ASDA"
                            },
                            "CIN": {
                              "matchLevel": "none",
                              "matchedWords": [],
                              "value": "165468"
                            },
                            "ID": {
                              "matchLevel": "none",
                              "matchedWords": [],
                              "value": "20504"
                            },
                            "NAME": {
                              "fullyHighlighted": false,
                              "matchLevel": "full",
                              "matchedWords": [
                                "milk"
                              ],
                              "value": "British <em>Milk</em> Semi Skimmed 4 Pints"
                            },
                            "PRIMARY_TAXONOMY": {
                              "AISLE_NAME": {
                                "fullyHighlighted": false,
                                "matchLevel": "full",
                                "matchedWords": [
                                  "milk"
                                ],
                                "value": "Fresh <em>Milk</em>"
                              },
                              "SHELF_NAME": {
                                "fullyHighlighted": false,
                                "matchLevel": "full",
                                "matchedWords": [
                                  "milk"
                                ],
                                "value": "Semi Skimmed <em>Milk</em>"
                              }
                            }
                          },
                          "objectID": "165468"
                        },
                        {
                          "AVG_RATING": 4.1786,
                          "BRAND": "ASDA",
                          "CIN": "165426",
                          "CS_YES": false,
                          "END_DATE": 1924948800,
                          "ICONS": [
                            {
                              "CLICKABLE": false,
                              "END_DATE": 1551873600,
                              "ICON_NAME": "801_NoShellfish",
                              "ID": "51000002",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_000_Icon?&$Icon-wapp$",
                              "PRIORITY": 10440,
                              "START_DATE": 1551700800
                            },
                            {
                              "CLICKABLE": false,
                              "END_DATE": 1600171200,
                              "ICON_NAME": "_151_UnionFlag",
                              "ID": "55000003",
                              "IMAGE_URL": "https://ui.assets-asda.comtest.jpg",
                              "PRIORITY": 10427,
                              "START_DATE": 1594728000
                            },
                            {
                              "CLICKABLE": true,
                              "END_DATE": 1682510400,
                              "ICON_NAME": "_008_RedTractorAUTO",
                              "ID": "55200006",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_008_redtractor?&$icon-wapp$",
                              "PRIORITY": 5354,
                              "START_DATE": 1609329600
                            },
                            {
                              "CLICKABLE": true,
                              "END_DATE": 1912161600,
                              "ICON_NAME": "Typically fresh for 5 days",
                              "ID": "59600046",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/produce-5-days-icon?",
                              "PRIORITY": 39,
                              "START_DATE": 1625227200
                            },
                            {
                              "CLICKABLE": true,
                              "END_DATE": 1682510400,
                              "ICON_NAME": "_043_British",
                              "ID": "1215429129918",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_043_british?",
                              "PRIORITY": 5435
                            },
                            {
                              "CLICKABLE": true,
                              "END_DATE": 1682510400,
                              "ICON_NAME": "_122_farmerowned",
                              "ID": "1215559958453",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_122_farmerowned?",
                              "PRIORITY": 1562
                            }
                          ],
                          "ID": "20502",
                          "IMAGE_ID": "20332167",
                          "IS_BWS": false,
                          "IS_FROZEN": false,
                          "IS_FTO": false,
                          "IS_SPONSORED": false,
                          "LABEL": "",
                          "MAX_QTY": 24,
                          "NAME": "Whole British Milk 4 Pints",
                          "PACK_SIZE": "4 PINT",
                          "PHARMACY_RESTRICTED": false,
                          "PRICES": {
                            "EN": {
                              "OFFER": "Dropped",
                              "PRICE": 1.65,
                              "PRICEPERUOM": 0.72591,
                              "PRICEPERUOMFORMATTED": "72.6p/LT",
                              "WASPRICE": 1.65
                            }
                          },
                          "PRIMARY_TAXONOMY": {
                            "AISLE_ID": "1215339434886",
                            "AISLE_NAME": "Fresh Milk",
                            "CAT_ID": "1215660378320",
                            "CAT_NAME": "Chilled Food",
                            "DEPT_ID": "1215339432024",
                            "DEPT_NAME": "Milk, Butter, Cream & Eggs",
                            "SHELF_ID": "1215339437949",
                            "SHELF_NAME": "Whole Milk"
                          },
                          "PRODUCT_TYPE": "STANDARD",
                          "RATING_COUNT": 543,
                          "SALES_TYPE": "Each",
                          "SHOW_PRICE_CS": true,
                          "START_DATE": -2208945600,
                          "STATUS": "A",
                          "STOCK": {
                            "4565": 999
                          },
                          "_highlightResult": {
                            "BRAND": {
                              "matchLevel": "none",
                              "matchedWords": [],
                              "value": "ASDA"
                            },
                            "CIN": {
                              "matchLevel": "none",
                              "matchedWords": [],
                              "value": "165426"
                            },
                            "ID": {
                              "matchLevel": "none",
                              "matchedWords": [],
                              "value": "20502"
                            },
                            "KEYWORDS": {
                              "fullyHighlighted": false,
                              "matchLevel": "full",
                              "matchedWords": [
                                "milk"
                              ],
                              "value": "blue <em>milk</em>,mulk,molk"
                            },
                            "LIFESTYLES": [
                              {
                                "matchLevel": "none",
                                "matchedWords": [],
                                "value": "Suitable for Vegetarians"
                              }
                            ],
                            "NAME": {
                              "fullyHighlighted": false,
                              "matchLevel": "full",
                              "matchedWords": [
                                "milk"
                              ],
                              "value": "Whole British <em>Milk</em> 4 Pints"
                            },
                            "PRIMARY_TAXONOMY": {
                              "AISLE_NAME": {
                                "fullyHighlighted": false,
                                "matchLevel": "full",
                                "matchedWords": [
                                  "milk"
                                ],
                                "value": "Fresh <em>Milk</em>"
                              },
                              "SHELF_NAME": {
                                "fullyHighlighted": false,
                                "matchLevel": "full",
                                "matchedWords": [
                                  "milk"
                                ],
                                "value": "Whole <em>Milk</em>"
                              }
                            }
                          },
                          "objectID": "165426"
                        },
                        {
                          "AVG_RATING": 4.1781,
                          "BRAND": "ASDA",
                          "CIN": "166556",
                          "CS_YES": false,
                          "END_DATE": 1924948800,
                          "ICONS": [
                            {
                              "CLICKABLE": false,
                              "END_DATE": 1551873600,
                              "ICON_NAME": "801_NoShellfish",
                              "ID": "51000002",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_000_Icon?&$Icon-wapp$",
                              "PRIORITY": 10440,
                              "START_DATE": 1551700800
                            },
                            {
                              "CLICKABLE": true,
                              "END_DATE": 1604275200,
                              "ICON_NAME": "_923_LiveBetter",
                              "ID": "53500014",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_923_LiveBetter?&$Icon-wapp$",
                              "PRIORITY": -83,
                              "START_DATE": 1575072060
                            },
                            {
                              "CLICKABLE": true,
                              "ICON_NAME": "Live Better",
                              "ID": "55100004",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_923_LiveBetter_Update?",
                              "PRIORITY": 875,
                              "START_DATE": 1596283200
                            },
                            {
                              "CLICKABLE": true,
                              "END_DATE": 1682510400,
                              "ICON_NAME": "_008_RedTractorAUTO",
                              "ID": "55200006",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_008_redtractor?&$icon-wapp$",
                              "PRIORITY": 5354,
                              "START_DATE": 1609329600
                            },
                            {
                              "CLICKABLE": true,
                              "END_DATE": 1912161600,
                              "ICON_NAME": "Typically fresh for 5 days",
                              "ID": "59600046",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/produce-5-days-icon?",
                              "PRIORITY": 39,
                              "START_DATE": 1625227200
                            },
                            {
                              "CLICKABLE": true,
                              "END_DATE": 1682510400,
                              "ICON_NAME": "_043_British",
                              "ID": "1215429129918",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_043_british?",
                              "PRIORITY": 5435
                            },
                            {
                              "CLICKABLE": true,
                              "END_DATE": 1682510400,
                              "ICON_NAME": "_122_farmerowned",
                              "ID": "1215559958453",
                              "IMAGE_URL": "https://ui.assets-asda.com/dm/_122_farmerowned?",
                              "PRIORITY": 1562
                            }
                          ],
                          "ID": "20506",
                          "IMAGE_ID": "20353629",
                          "IS_BWS": false,
                          "IS_FROZEN": false,
                          "IS_FTO": false,
                          "IS_SPONSORED": false,
                          "LABEL": "",
                          "MAX_QTY": 24,
                          "NAME": "British Milk Semi Skimmed 6 Pints",
                          "PACK_SIZE": "6 PINT",
                          "PHARMACY_RESTRICTED": false,
                          "PRICES": {
                            "EN": {
                              "OFFER": "Dropped",
                              "PRICE": 2.4,
                              "PRICEPERUOM": 0.70381,
                              "PRICEPERUOMFORMATTED": "70.4p/LT",
                              "WASPRICE": 2.4
                            }
                          },
                          "PRIMARY_TAXONOMY": {
                            "AISLE_ID": "1215339434886",
                            "AISLE_NAME": "Fresh Milk",
                            "CAT_ID": "1215660378320",
                            "CAT_NAME": "Chilled Food",
                            "DEPT_ID": "1215339432024",
                            "DEPT_NAME": "Milk, Butter, Cream & Eggs",
                            "SHELF_ID": "1215339438036",
                            "SHELF_NAME": "Semi Skimmed Milk"
                          },
                          "PRODUCT_TYPE": "STANDARD",
                          "RATING_COUNT": 421,
                          "SALES_TYPE": "Each",
                          "SHOW_PRICE_CS": true,
                          "START_DATE": 1597752000,
                          "STATUS": "A",
                          "STOCK": {
                            "4565": 999
                          },
                          "_highlightResult": {
                            "BRAND": {
                              "matchLevel": "none",
                              "matchedWords": [],
                              "value": "ASDA"
                            },
                            "CIN": {
                              "matchLevel": "none",
                              "matchedWords": [],
                              "value": "166556"
                            },
                            "ID": {
                              "matchLevel": "none",
                              "matchedWords": [],
                              "value": "20506"
                            },
                            "KEYWORDS": {
                              "fullyHighlighted": false,
                              "matchLevel": "full",
                              "matchedWords": [
                                "milk"
                              ],
                              "value": "green <em>milk</em>,mulk,molk"
                            },
                            "LIFESTYLES": [
                              {
                                "matchLevel": "none",
                                "matchedWords": [],
                                "value": "Suitable for Vegetarians"
                              }
                            ],
                            "NAME": {
                              "fullyHighlighted": false,
                              "matchLevel": "full",
                              "matchedWords": [
                                "milk"
                              ],
                              "value": "British <em>Milk</em> Semi Skimmed 6 Pints"
                            },
                            "PRIMARY_TAXONOMY": {
                              "AISLE_NAME": {
                                "fullyHighlighted": false,
                                "matchLevel": "full",
                                "matchedWords": [
                                  "milk"
                                ],
                                "value": "Fresh <em>Milk</em>"
                              },
                              "SHELF_NAME": {
                                "fullyHighlighted": false,
                                "matchLevel": "full",
                                "matchedWords": [
                                  "milk"
                                ],
                                "value": "Semi Skimmed <em>Milk</em>"
                              }
                            }
                          },
                          "objectID": "166556"
                        }
                      ],
                      "hitsPerPage": 5,
                      "nbHits": 409,
                      "nbPages": 82,
                      "page": 0,
                      "params": "attributesToRetrieve=%5B%22STATUS%22%2C%22BRAND%22%2C%22CIN%22%2C%22NAME%22%2C%22AVG_RATING%22%2C%22RATING_COUNT%22%2C%22ICONS%22%2C%22PRICES.EN%22%2C%22SALES_TYPE%22%2C%22MAX_QTY%22%2C%22STOCK.4565%22%2C%22IS_FROZEN%22%2C%22IS_BWS%22%2C%22PROMOS.EN%22%2C%22LABEL%22%2C%22LABEL_START_DATE%22%2C%22LABEL_END_DATE%22%2C%22IS_SPONSORED%22%2C%22PRODUCT_TYPE%22%2C%22CIN_ID%22%2C%22PRIMARY_TAXONOMY%22%2C%22IMAGE_ID%22%2C%22PACK_SIZE%22%2C%22PHARMACY_RESTRICTED%22%2C%22CS_YES%22%2C%22CS_TEXT%22%2C%22IS_FTO%22%2C%22PURCHASE_START_DATE_FTO%22%2C%22PURCHASE_END_DATE_FTO%22%2C%22DELIVERY_SLOT_START_DATE_FTO%22%2C%22END_DATE%22%2C%22START_DATE%22%2C%22SIZE_DESC%22%2C%22REWARDS%22%2C%22SHOW_PRICE_CS%22%2C%22ID%22%5D&hitsPerPage=5&optionalFilters=%5B%22STOCK.4565%3A1%3Cscore%3D50000%3E%22%5D&page=0&query=milk&analyticsTags=%5B%22ext-alg%23query-category%3Aquery-matched%22%2C%22ext-alg%23auto-filter%3Ahas-boosts%22%2C%22ext-alg%23auto-filter%3Aenabled%22%5D&optionalFilters=%5B%22PRIMARY_TAXONOMY.CAT_NAME%3AChilled+Food%22%2C%22PRIMARY_TAXONOMY.DEPT_NAME%3AMilk%2C+Butter%2C+Cream+%26+Eggs%22%2C%22PRIMARY_TAXONOMY.AISLE_NAME%3AFresh+Milk%22%5D&enableReRanking=true&filters=%22PRIMARY_TAXONOMY.DEPT_NAME%22%3A%22Milk%2C+Butter%2C+Cream+%26+Eggs%22&optionalFilters=%5B%5B%22PRICES.EN.OFFER%3Adropped+%22%2C%22PRICES.NI.OFFER%3Adropped+%22%2C%22PRICES.SC.OFFER%3Adropped+%22%5D%2C%5B%22PRICES.EN.OFFER%3Arollback+%22%2C%22PRICES.NI.OFFER%3Arollback+%22%2C%22PRICES.SC.OFFER%3Arollback+%22%5D%5D",
                      "processingTimeMS": 3,
                      "processingTimingsMS": {
                        "_request": {
                          "roundTrip": 19
                        },
                        "extensions": 1,
                        "extractDocsToPromoteDetails": {
                          "pinRetrieval": {
                            "total": 1
                          },
                          "total": 1
                        },
                        "total": 4
                      },
                      "query": "milk",
                      "renderingContent": {},
                      "serverTimeMS": 4
                    }
                  }
                },
                "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"
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "results",
          "billing",
          "stats"
        ],
        "type": "object"
      },
      "AsdaProductsSearchExecuteRequest": {
        "additionalProperties": false,
        "example": {
          "capability": "asda.products.search",
          "input": {
            "hits_per_page": 5,
            "page": 1,
            "query": "milk",
            "store_id": "4565"
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "asda.products.search"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/AsdaProductsSearchInput"
          },
          "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"
      },
      "AsdaProductsSearchInput": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "hits_per_page": {
            "default": 24,
            "maximum": 60,
            "minimum": 1,
            "type": "integer"
          },
          "limit": {
            "minimum": 1,
            "type": "integer"
          },
          "max_records": {
            "minimum": 1,
            "type": "integer"
          },
          "page": {
            "description": "1-based results page",
            "minimum": 1,
            "type": "integer"
          },
          "query": {
            "minLength": 1,
            "type": "string"
          },
          "store_id": {
            "default": "4565",
            "description": "Asda store id used for stock boosting and in_stock flags",
            "pattern": "^[0-9]{1,6}$",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "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"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "ExecuteAcceptedResponse": {
        "additionalProperties": false,
        "properties": {
          "capability": {
            "enum": [
              "asda.products.search"
            ],
            "type": "string"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "asda"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "state": {
            "const": "queued",
            "type": "string"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state"
        ],
        "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"
      },
      "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": [
              "asda.products.search"
            ],
            "type": "string"
          },
          "error": {},
          "idempotent_replay": {
            "const": true,
            "type": "boolean"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "asda"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {},
          "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"
      },
      "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"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "InternalError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "internal_error",
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "JobBilling": {
        "additionalProperties": false,
        "properties": {
          "credits_charged": {
            "anyOf": [
              {
                "description": "Actual credits charged. Null only when retained historical facts cannot establish the amount.",
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "credits_per_unit": {
            "anyOf": [
              {
                "description": "Snapshotted price for one billed unit. Zero only for historical free work; null when unknown.",
                "minimum": 0,
                "type": "integer"
              },
              {
                "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"
          },
          "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",
          "pricing"
        ],
        "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"
          }
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object"
      },
      "JobFailedResponse": {
        "additionalProperties": false,
        "properties": {
          "capability": {
            "enum": [
              "asda.products.search"
            ],
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/JobErrorObject"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "asda"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "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"
        ],
        "type": "object"
      },
      "JobPendingResponse": {
        "additionalProperties": false,
        "properties": {
          "capability": {
            "enum": [
              "asda.products.search"
            ],
            "type": "string"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "asda"
            ],
            "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"
      },
      "JobStats": {
        "additionalProperties": false,
        "properties": {
          "duration_ms": {
            "anyOf": [
              {
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "failed": {
            "const": 0,
            "type": "integer"
          },
          "passed": {
            "const": 1,
            "type": "integer"
          },
          "total": {
            "const": 1,
            "type": "integer"
          }
        },
        "required": [
          "total",
          "passed",
          "failed",
          "duration_ms"
        ],
        "type": "object"
      },
      "NotFoundError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "not_found",
                "type": "string"
              },
              "message": {
                "const": "job not found",
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "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"
              }
            },
            "required": [
              "error"
            ],
            "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"
              }
            },
            "required": [
              "error"
            ],
            "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"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "UnauthorizedError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "unauthorized",
                "type": "string"
              },
              "message": {
                "enum": [
                  "authentication required",
                  "invalid bearer token",
                  "missing bearer token"
                ],
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "ValidationErrors": {
        "additionalProperties": false,
        "properties": {
          "errors": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          }
        },
        "required": [
          "errors"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "bearerFormat": "API Key",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "Scraper for Asda Groceries UK product search, category taxonomy, and product detail, backed by Asda's public Algolia catalog index.\nThis spec includes only the live `Asda` capabilities exposed by Upscrape.\nExecution uses the generic `POST /execute` endpoint and job polling uses `GET /jobs/{id}`.\nSupported capabilities: `asda.products.search`\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": "Asda API",
    "version": "v0.1.3"
  },
  "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": "asda_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": "Request synchronous completion. Use `wait=N` to hold the connection up to N seconds (max 300). 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": "asda.products.search",
                "input": {
                  "hits_per_page": 5,
                  "page": 1,
                  "query": "milk",
                  "store_id": "4565"
                }
              },
              "schema": {
                "$ref": "#/components/schemas/AsdaProductsSearchExecuteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AsdaProductsSearchCompletedJob"
                    },
                    {
                      "$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": "asda.products.search",
                  "job_id": "00000000-0000-0000-0000-000000000001",
                  "platform": "asda",
                  "request_id": "00000000-0000-0000-0000-000000000001",
                  "state": "queued",
                  "success": false
                },
                "schema": {
                  "$ref": "#/components/schemas/ExecuteAcceptedResponse"
                }
              }
            },
            "description": "Job accepted and queued.",
            "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."
          },
          "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"
                    }
                  ]
                }
              }
            },
            "description": "The request body failed validation."
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "rate_limited",
                    "message": "rate limit exceeded",
                    "retry_after_ms": 4200
                  }
                },
                "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"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Queue a Asda capability run",
        "tags": [
          "Execution"
        ]
      }
    },
    "/jobs/{id}": {
      "get": {
        "description": "Get job status and result",
        "operationId": "asda_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/AsdaProductsSearchCompletedJob"
                    },
                    {
                      "$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": "asda.products.search",
                  "job_id": "00000000-0000-0000-0000-000000000001",
                  "platform": "asda",
                  "request_id": "00000000-0000-0000-0000-000000000001",
                  "state": "running",
                  "success": false
                },
                "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
                  }
                },
                "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 Asda job",
        "tags": [
          "Jobs"
        ]
      }
    },
    "/jobs/{id}/result": {
      "get": {
        "description": "Backward-compatible alias for `/jobs/{id}`.",
        "operationId": "asda_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/AsdaProductsSearchCompletedJob"
                    },
                    {
                      "$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": "asda.products.search",
                  "job_id": "00000000-0000-0000-0000-000000000001",
                  "platform": "asda",
                  "request_id": "00000000-0000-0000-0000-000000000001",
                  "state": "running",
                  "success": false
                },
                "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
                  }
                },
                "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 Asda 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"
    }
  ]
}