{
  "components": {
    "schemas": {
      "CatalogPage": {
        "additionalProperties": false,
        "properties": {
          "demo": {
            "title": "Demo",
            "type": "boolean"
          },
          "generated_at": {
            "format": "date-time",
            "title": "Generated At",
            "type": "string"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "products": {
            "items": {
              "$ref": "#/components/schemas/ProductView"
            },
            "title": "Products",
            "type": "array"
          },
          "snapshot_id": {
            "title": "Snapshot Id",
            "type": "string"
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/SourceView"
            },
            "title": "Sources",
            "type": "array"
          },
          "stale": {
            "title": "Stale",
            "type": "boolean"
          },
          "total": {
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "snapshot_id",
          "generated_at",
          "demo",
          "stale",
          "sources",
          "total",
          "products",
          "next_cursor"
        ],
        "title": "CatalogPage",
        "type": "object"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "title": "Detail",
            "type": "array"
          }
        },
        "title": "HTTPValidationError",
        "type": "object"
      },
      "Price": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "title": "Amount",
            "type": "string"
          },
          "currency": {
            "const": "RUB",
            "default": "RUB",
            "title": "Currency",
            "type": "string"
          }
        },
        "required": [
          "amount"
        ],
        "title": "Price",
        "type": "object"
      },
      "PriceVariant": {
        "additionalProperties": false,
        "properties": {
          "amount": {
            "title": "Amount",
            "type": "string"
          },
          "currency": {
            "const": "RUB",
            "default": "RUB",
            "title": "Currency",
            "type": "string"
          },
          "kind": {
            "enum": [
              "standard",
              "with_vat"
            ],
            "title": "Kind",
            "type": "string"
          },
          "vat_included": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vat Included"
          }
        },
        "required": [
          "amount",
          "kind",
          "vat_included"
        ],
        "title": "PriceVariant",
        "type": "object"
      },
      "ProductView": {
        "additionalProperties": false,
        "properties": {
          "availability": {
            "enum": [
              "available",
              "unavailable",
              "on_order"
            ],
            "title": "Availability",
            "type": "string"
          },
          "brand": {
            "title": "Brand",
            "type": "string"
          },
          "category": {
            "title": "Category",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "offer_id": {
            "title": "Offer Id",
            "type": "string"
          },
          "price": {
            "$ref": "#/components/schemas/Price"
          },
          "prices": {
            "items": {
              "$ref": "#/components/schemas/PriceVariant"
            },
            "title": "Prices",
            "type": "array"
          },
          "product_id": {
            "title": "Product Id",
            "type": "string"
          },
          "source": {
            "enum": [
              "in_stock",
              "on_order"
            ],
            "title": "Source",
            "type": "string"
          },
          "source_updated_at": {
            "format": "date-time",
            "title": "Source Updated At",
            "type": "string"
          },
          "stock": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stock"
          },
          "vat_included": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vat Included"
          }
        },
        "required": [
          "product_id",
          "offer_id",
          "name",
          "brand",
          "category",
          "source",
          "price",
          "prices",
          "stock",
          "availability",
          "vat_included",
          "source_updated_at"
        ],
        "title": "ProductView",
        "type": "object"
      },
      "SourceView": {
        "additionalProperties": false,
        "properties": {
          "available": {
            "title": "Available",
            "type": "boolean"
          },
          "build_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Build Id"
          },
          "source": {
            "enum": [
              "in_stock",
              "on_order"
            ],
            "title": "Source",
            "type": "string"
          },
          "source_updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Updated At"
          },
          "stale": {
            "title": "Stale",
            "type": "boolean"
          }
        },
        "required": [
          "source",
          "available",
          "stale"
        ],
        "title": "SourceView",
        "type": "object"
      },
      "ValidationError": {
        "properties": {
          "ctx": {
            "title": "Context",
            "type": "object"
          },
          "input": {
            "title": "Input"
          },
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "title": "Location",
            "type": "array"
          },
          "msg": {
            "title": "Message",
            "type": "string"
          },
          "type": {
            "title": "Error Type",
            "type": "string"
          }
        },
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError",
        "type": "object"
      }
    },
    "securitySchemes": {
      "HTTPBearer": {
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "title": "КВАНТУМ — партнёрский API",
    "version": "0.1.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/v1/catalog/status": {
      "get": {
        "operationId": "catalog_status_v1_catalog_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Catalog Status V1 Catalog Status Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Catalog Status",
        "tags": [
          "Catalog"
        ]
      }
    },
    "/v1/products": {
      "get": {
        "operationId": "products_v1_products_get",
        "parameters": [
          {
            "in": "query",
            "name": "source",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Source"
            }
          },
          {
            "in": "query",
            "name": "brand",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Brand"
            }
          },
          {
            "in": "query",
            "name": "category",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Category"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Search"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogPage"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Products",
        "tags": [
          "Catalog"
        ]
      }
    },
    "/v1/products/{product_id}": {
      "get": {
        "operationId": "product_v1_products__product_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "product_id",
            "required": true,
            "schema": {
              "title": "Product Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogPage"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "summary": "Product",
        "tags": [
          "Catalog"
        ]
      }
    }
  }
}
