{
  "openapi": "3.1.0",
  "info": {
    "title": "server-shop.ua configurator API",
    "version": "1.4.1",
    "summary": "Find configurable servers, list their options, price a build and get links for the user.",
    "description": "Read-only JSON API for AI agents and bots. Flow: servers -> configurator -> quote. The quote returns product_url (product page with the build preselected) and cart_url (opens the user's cart with the build added). Give these links to the human user. Prices in UAH, final after a manager confirms the order. Guide: https://server-shop.ua/llms.txt",
    "contact": {
      "name": "server-shop.ua",
      "email": "info@server-shop.ua",
      "url": "https://server-shop.ua/"
    }
  },
  "servers": [
    {
      "url": "https://server-shop.ua/connectors8jCd7"
    }
  ],
  "paths": {
    "/agent_api.php?action=servers": {
      "get": {
        "operationId": "listServers",
        "summary": "List or search configurable servers",
        "parameters": [
          {
            "$ref": "#/components/parameters/lang"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Words to find in the name or article, e.g. R740 8SFF",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "vendor",
            "in": "query",
            "description": "Vendor name, e.g. DELL, HP, Lenovo",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Default: server, workstation and pc; any includes components with their own configurator",
            "schema": {
              "type": "string",
              "enum": [
                "server",
                "workstation",
                "pc",
                "other",
                "any"
              ]
            }
          },
          {
            "name": "form_factor",
            "in": "query",
            "description": "1u, 2u, 4u, tower, blade, sff, mff, usff",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cpu_sockets",
            "in": "query",
            "description": "Minimum CPU sockets",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "min_drive_bays",
            "in": "query",
            "description": "Minimum drive bays",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "max_price",
            "in": "query",
            "description": "Maximum 'price from' in UAH without VAT",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "available",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "any",
                "in_stock",
                "all"
              ],
              "default": "any"
            },
            "description": "any = in stock or on order, all = also out of stock"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Servers",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServersResponse"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/agent_api.php?action=configurator": {
      "get": {
        "operationId": "getConfigurator",
        "summary": "Option groups of a server with prices and availability, plus the default build",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/lang"
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Comma separated option fields to return (id is always included), e.g. name,price_ex,status,specs",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Configurator",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfiguratorResponse"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/agent_api.php?action=quote": {
      "get": {
        "operationId": "quoteBuild",
        "summary": "Validate and price a build, get product_url and cart_url",
        "description": "Radio groups need exactly one option; omitted radio groups keep the default. Checkbox qty 0..1, number and drive qty 0..max. Prefix an option id with group_id if it is in several groups.",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/lang"
          },
          {
            "name": "o",
            "in": "query",
            "required": true,
            "description": "Comma separated option_id:qty, optionally group_id.option_id:qty. Example: 14658:1,17849:1,20567:2",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Quote",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "422": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },
    "/agent_api.php?action=match": {
      "get": {
        "operationId": "matchBuilds",
        "summary": "Cheapest builds that meet requirements, across all servers",
        "description": "Picks the cheapest CPU, RAM, RAID controller, NIC and drives (with drive trays) that satisfy the requirements on every server, other groups keep site defaults. Returns up to limit builds sorted by price with product_url, cart_url and a quote link to adjust.",
        "parameters": [
          {
            "$ref": "#/components/parameters/lang"
          },
          {
            "name": "type",
            "in": "query",
            "description": "Default server",
            "schema": {
              "type": "string",
              "enum": [
                "server",
                "workstation",
                "pc"
              ]
            }
          },
          {
            "name": "form_factor",
            "in": "query",
            "description": "1u, 2u, 4u, tower, blade, sff, mff, usff",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "vendor",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Words in name",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "min_cores",
            "in": "query",
            "description": "Total cores of all CPUs",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cpu_count",
            "in": "query",
            "description": "Exact number of CPUs",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "min_ram_gb",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "raid",
            "in": "query",
            "description": "1 = hardware RAID controller",
            "schema": {
              "type": "integer",
              "enum": [
                0,
                1
              ]
            }
          },
          {
            "name": "storage_tb",
            "in": "query",
            "description": "Total raw drive capacity to reach",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "media",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string",
              "enum": [
                "ssd",
                "hdd",
                "any"
              ]
            }
          },
          {
            "name": "interface",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string",
              "enum": [
                "sata",
                "sas",
                "nvme",
                "any"
              ]
            }
          },
          {
            "name": "min_nic_gbps",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "in_stock",
            "in": "query",
            "description": "1 = only parts in stock",
            "schema": {
              "type": "integer",
              "enum": [
                0,
                1
              ]
            }
          },
          {
            "name": "max_price",
            "in": "query",
            "description": "UAH without VAT",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "maximum": 10,
              "default": 5
            }
          },
          {
            "name": "raid_level",
            "in": "query",
            "description": "0, 1, 5, 6 or 10: storage_tb becomes usable capacity; any level (also 0) requires a hardware RAID controller. Other values are ignored.",
            "schema": {
              "type": "integer",
              "enum": [
                0,
                1,
                5,
                6,
                10
              ]
            }
          },
          {
            "name": "nic_connector",
            "in": "query",
            "description": "SFP28, SFP+, RJ45, QSFP28...",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "allow_infiniband",
            "in": "query",
            "description": "1 = allow InfiniBand NICs",
            "schema": {
              "type": "integer",
              "enum": [
                0,
                1
              ]
            }
          },
          {
            "name": "min_cache_mb",
            "in": "query",
            "description": "RAID controller cache",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "battery",
            "in": "query",
            "description": "1 = controller with battery/flash backup",
            "schema": {
              "type": "integer",
              "enum": [
                0,
                1
              ]
            }
          },
          {
            "name": "drive_class",
            "in": "query",
            "description": "enterprise or any",
            "schema": {
              "type": "string",
              "enum": [
                "enterprise",
                "consumer",
                "nas",
                "any"
              ]
            }
          },
          {
            "name": "endurance",
            "in": "query",
            "description": "ri, mu or wi",
            "schema": {
              "type": "string",
              "enum": [
                "ri",
                "mu",
                "wi"
              ]
            }
          },
          {
            "name": "ram_balanced",
            "in": "query",
            "description": "0 = do not prefer channel-balanced RAM not slower than the CPU",
            "schema": {
              "type": "integer",
              "enum": [
                0,
                1
              ],
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Builds",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatchResponse"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    }
  },
  "components": {
    "parameters": {
      "lang": {
        "name": "lang",
        "in": "query",
        "description": "uk - Ukrainian (default), ru - Russian",
        "schema": {
          "type": "string",
          "enum": [
            "uk",
            "ru"
          ],
          "default": "uk"
        }
      },
      "id": {
        "name": "id",
        "in": "query",
        "required": true,
        "description": "Server product id (from listServers)",
        "schema": {
          "type": "integer"
        }
      }
    },
    "responses": {
      "Error": {
        "description": "Error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "RateLimited": {
        "description": "Too many requests, wait Retry-After seconds",
        "headers": {
          "Retry-After": {
            "schema": {
              "type": "integer"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      }
    },
    "schemas": {
      "Meta": {
        "type": "object",
        "properties": {
          "api": {
            "type": "string"
          },
          "lang": {
            "type": "string"
          },
          "currency": {
            "type": "string",
            "const": "UAH"
          },
          "generated_at": {
            "type": "string",
            "format": "date-time"
          },
          "docs": {
            "type": "string"
          }
        }
      },
      "Vat": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "added",
              "included",
              "added_manager_review"
            ],
            "description": "added: +20% for cashless payment with VAT; included: VAT in price; added_manager_review: normally not sold with VAT, +20% and a manager may adjust price and terms"
          },
          "rate": {
            "type": "number"
          },
          "note": {
            "type": "string"
          }
        }
      },
      "Availability": {
        "type": "string",
        "enum": [
          "in_stock",
          "on_order",
          "out_of_stock"
        ],
        "description": "on_order: ordered from supplier, about 30 days"
      },
      "ServerItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "vendor": {
            "type": [
              "string",
              "null"
            ]
          },
          "article": {
            "type": [
              "string",
              "null"
            ]
          },
          "condition": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "new",
              "refurbished",
              null
            ]
          },
          "price_from_ex": {
            "type": "number",
            "description": "Cheapest in-stock build, UAH without VAT"
          },
          "price_from_inc": {
            "type": "number"
          },
          "vat_mode": {
            "type": "string"
          },
          "availability": {
            "$ref": "#/components/schemas/Availability"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "configurator": {
            "type": "string",
            "format": "uri"
          },
          "limits": {
            "type": "object",
            "properties": {
              "cpu_sockets": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "ram_slots": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "drive_bays": {
                "type": [
                  "integer",
                  "null"
                ]
              }
            }
          },
          "type": {
            "type": "string"
          },
          "form_factor": {
            "type": [
              "string",
              "null"
            ]
          },
          "cpu_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "drive_bays_spec": {
            "type": [
              "string",
              "null"
            ]
          },
          "max_cores": {
            "type": [
              "integer",
              "null"
            ]
          },
          "max_memory": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "ServersResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "data": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer"
              },
              "limit": {
                "type": "integer"
              },
              "offset": {
                "type": "integer"
              },
              "items": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ServerItem"
                }
              },
              "not_listed": {
                "type": "array",
                "description": "Only when q finds nothing: matching products and why they are not listed",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer"
                    },
                    "article": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "reasons": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "Option": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "option_id for quote"
          },
          "name": {
            "type": "string"
          },
          "max": {
            "type": "integer"
          },
          "discount": {
            "type": [
              "string",
              "null"
            ],
            "description": "Price modifier applied to the whole build, e.g. -10% means +10% (extended warranty)"
          },
          "price_ex": {
            "type": "number"
          },
          "price_inc": {
            "type": "number"
          },
          "status": {
            "$ref": "#/components/schemas/Availability"
          },
          "lead_time_days": {
            "type": "integer"
          },
          "specs": {
            "$ref": "#/components/schemas/Specs"
          },
          "local_stock": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Pieces in the local warehouse. New items: not a limit, the rest comes from another warehouse. Refurbished: real maximum."
          },
          "condition": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "new",
              "refurbished",
              null
            ]
          }
        }
      },
      "Group": {
        "type": "object",
        "properties": {
          "group_id": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "radio",
              "checkbox",
              "number",
              "drive"
            ]
          },
          "title": {
            "type": "string"
          },
          "required": {
            "type": "boolean"
          },
          "hidden": {
            "type": "boolean",
            "description": "Hidden on the site, keep the default"
          },
          "default": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "option_id": {
                  "type": "integer"
                },
                "qty": {
                  "type": "integer"
                }
              }
            }
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Option"
            }
          },
          "role": {
            "type": "string",
            "enum": [
              "cpu",
              "ram",
              "controller",
              "nic",
              "psu",
              "drives",
              "trays",
              "gpu",
              "os",
              "rails",
              "management",
              "warranty",
              "extras",
              "other"
            ]
          },
          "attach": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "embedded",
              "flexiblelom",
              "ndc",
              "ocp",
              "pcie",
              null
            ],
            "description": "NIC groups only: physical position of the group. Several NIC groups in one server are different positions (e.g. HP Gen10 embedded base adapter + FlexibleLOM slot), not duplicates."
          }
        }
      },
      "Quote": {
        "type": "object",
        "properties": {
          "valid": {
            "type": "boolean"
          },
          "defaults_applied": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Radio groups filled with the site default"
          },
          "selection": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "group_id": {
                  "type": "string"
                },
                "group": {
                  "type": "string"
                },
                "kind": {
                  "type": "string"
                },
                "option_id": {
                  "type": "integer"
                },
                "name": {
                  "type": "string"
                },
                "qty": {
                  "type": "integer"
                },
                "unit_price_ex": {
                  "type": "number"
                },
                "line_ex": {
                  "type": "number"
                },
                "discount": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "status": {
                  "$ref": "#/components/schemas/Availability"
                },
                "lead_time_days": {
                  "type": "integer"
                },
                "line_inc": {
                  "type": "number",
                  "description": "Line total with VAT for cashless payment with VAT"
                },
                "vat_mode": {
                  "type": "string",
                  "enum": [
                    "added",
                    "included",
                    "added_manager_review"
                  ]
                },
                "role": {
                  "type": "string"
                },
                "specs": {
                  "$ref": "#/components/schemas/Specs"
                }
              }
            }
          },
          "price": {
            "type": "object",
            "properties": {
              "total_ex": {
                "type": "number"
              },
              "total_inc": {
                "type": "number"
              },
              "currency": {
                "type": "string"
              },
              "vat": {
                "$ref": "#/components/schemas/Vat"
              },
              "note": {
                "type": "string"
              }
            }
          },
          "availability": {
            "type": "object",
            "properties": {
              "status": {
                "$ref": "#/components/schemas/Availability"
              },
              "lead_time_days": {
                "type": "integer"
              },
              "on_order_items": {
                "type": "array",
                "items": {
                  "type": "integer"
                }
              }
            }
          },
          "product_options": {
            "type": "string"
          },
          "product_url": {
            "type": "string",
            "format": "uri",
            "description": "Product page with the build preselected"
          },
          "cart_url": {
            "type": "string",
            "format": "uri",
            "description": "For the human user's browser: adds the build to their cart and opens it. Do not call server-side."
          },
          "cart_url_expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Warning"
            }
          }
        }
      },
      "QuoteResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "data": {
            "$ref": "#/components/schemas/Quote"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "ConfiguratorResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "data": {
            "type": "object",
            "properties": {
              "product": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer"
                  },
                  "name": {
                    "type": "string"
                  },
                  "vendor": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "article": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "base_price_ex": {
                    "type": "number"
                  },
                  "price_from_ex": {
                    "type": "number"
                  },
                  "vat": {
                    "$ref": "#/components/schemas/Vat"
                  },
                  "status": {
                    "$ref": "#/components/schemas/Availability"
                  },
                  "limits": {
                    "type": "object",
                    "properties": {
                      "cpu_sockets": {
                        "type": [
                          "integer",
                          "null"
                        ]
                      },
                      "ram_slots": {
                        "type": [
                          "integer",
                          "null"
                        ]
                      },
                      "drive_bays": {
                        "type": [
                          "integer",
                          "null"
                        ]
                      }
                    }
                  }
                }
              },
              "groups": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Group"
                }
              },
              "default_quote": {
                "$ref": "#/components/schemas/Quote"
              },
              "how_to_quote": {
                "type": "string"
              }
            }
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false
          },
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "examples": [
                  "bad_request",
                  "bad_format",
                  "not_found",
                  "invalid_selection",
                  "rate_limited"
                ]
              },
              "message": {
                "type": "string"
              },
              "details": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string",
                      "examples": [
                        "unknown_option",
                        "ambiguous_option",
                        "qty_over_max",
                        "one_per_group",
                        "required_group",
                        "bad_qty"
                      ]
                    },
                    "option_id": {
                      "type": "integer"
                    },
                    "group_id": {
                      "type": "string"
                    },
                    "max": {
                      "type": "integer"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "Specs": {
        "type": "object",
        "description": "Parsed from the option name, keys depend on the group role. cpu: cpu_count, cores_per_cpu, total_cores, base_ghz, turbo_ghz, tdp_w, family, memory. ram: total_gb, modules, module_gb, type, speed_mhz, ecc, registered. controller: raid, mode (raid|hba), cache_mb, battery, sas_gbps. nic: ports[{count, speed_gbps, connector}], max_speed_gbps. psu: count, watts. drives: capacity_gb, media (ssd|hdd), interface (sata|sas|nvme), form (2.5|3.5), rpm, condition. trays: is_tray, form. warranty: months. gpu: memory_gb. Any role: none=true for 'without' options. nic also: attach (embedded|flexiblelom|ndc|ocp|pcie). drives also: class (enterprise|consumer|nas), endurance (ri|mu|wi), form_assumed. cpu also: memory_channels (per CPU), memory_mhz. nic also: protocol (ethernet|infiniband).",
        "additionalProperties": true
      },
      "Warning": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "trays_required",
              "too_many_drives",
              "ram_speed_limited",
              "drive_does_not_fit",
              "partly_from_other_warehouse",
              "exceeds_stock",
              "ram_unbalanced",
              "ram_slower_than_cpu",
              "drive_needs_adapter"
            ]
          },
          "message": {
            "type": "string"
          },
          "drives": {
            "type": "integer"
          },
          "trays": {
            "type": "integer"
          },
          "drive_bays": {
            "type": "integer"
          },
          "suggested": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "group_id": {
                "type": "string"
              },
              "option_id": {
                "type": "integer"
              },
              "qty": {
                "type": "integer"
              }
            }
          },
          "severity": {
            "type": "string",
            "enum": [
              "warning",
              "info"
            ],
            "description": "warning = real problem of the build, info = performance advice"
          }
        }
      },
      "MatchResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "data": {
            "type": "object",
            "properties": {
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "server": {
                      "type": "object"
                    },
                    "price": {
                      "type": "object"
                    },
                    "availability": {
                      "type": "object"
                    },
                    "components": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "role": {
                            "type": "string"
                          },
                          "option_id": {
                            "type": "integer"
                          },
                          "name": {
                            "type": "string"
                          },
                          "qty": {
                            "type": "integer"
                          },
                          "specs": {
                            "$ref": "#/components/schemas/Specs"
                          },
                          "status": {
                            "type": "string"
                          },
                          "group": {
                            "type": "string"
                          },
                          "line_ex": {
                            "type": "number"
                          },
                          "line_inc": {
                            "type": "number"
                          },
                          "vat_mode": {
                            "type": "string"
                          },
                          "chosen_for_requirements": {
                            "type": "boolean"
                          }
                        }
                      }
                    },
                    "warnings": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Warning"
                      }
                    },
                    "product_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "cart_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "quote": {
                      "type": "string",
                      "format": "uri"
                    },
                    "storage": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "drives": {
                          "type": "integer"
                        },
                        "raw_tb": {
                          "type": "number"
                        },
                        "raid_level": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "usable_tb": {
                          "type": [
                            "number",
                            "null"
                          ]
                        }
                      }
                    }
                  }
                }
              },
              "checked": {
                "type": "integer"
              },
              "matched": {
                "type": "integer"
              },
              "rejected": {
                "type": "object",
                "description": "Count of servers rejected per reason, e.g. no_matching_ram, over_budget"
              },
              "not_indexed": {
                "type": "integer"
              },
              "note": {
                "type": "string"
              }
            }
          }
        }
      }
    }
  }
}
