{
  "openapi": "3.1.0",
  "info": {
    "title": "Lexical Catalogue API",
    "version": "1.0.0",
    "summary": "Read-only public product catalogue and business facts for Lexical home appliances.",
    "description": "Lexical home appliances, made in China and quality-controlled to the German standard — wholesale, OEM and private label for distributors in 100+ countries.\n\nLexical (Yiwu Lexical Electrical Appliances Co., Ltd.) is an exporter of small electrical home appliances made in China, sold wholesale and under OEM and private label to distributors in more than 100 countries. This API gives programs and AI agents the same product catalogue and business facts the website shows a visitor who is not signed in.\n\n**Public, read-only, no key.** Every operation is a GET and needs no authentication. Prices are not published (they are quoted per order, see the quoteUrl field), and barcodes, HS codes and anything reserved for verified customers are not available through this API.\n\n**Rate limit.** About 300 requests per 10 minutes per client address. Over the limit the API answers 429 with a Retry-After header. Responses are cached for a minute, so repeating a request costs nothing.\n\n**Errors** are JSON: `{ \"error\": { \"code\", \"message\", \"hint\" } }` with code one of bad_request (400), not_found (404), rate_limited (429) or, rarely, server_error (500).\n\nAlso available: an MCP server (Streamable HTTP) at https://project-26u0v.vercel.app/.well-known/mcp, the site in plain text at https://project-26u0v.vercel.app/llms.txt, and a guide with examples at https://project-26u0v.vercel.app/developers.",
    "termsOfService": "https://project-26u0v.vercel.app/terms",
    "contact": {
      "name": "Lexical export desk",
      "email": "contact@lexical.com.cn",
      "url": "https://project-26u0v.vercel.app/contact"
    },
    "license": {
      "name": "Lexical website terms",
      "url": "https://project-26u0v.vercel.app/terms"
    }
  },
  "servers": [
    {
      "url": "https://project-26u0v.vercel.app",
      "description": "Lexical website and API"
    }
  ],
  "tags": [
    {
      "name": "Catalogue",
      "description": "Product lines and categories."
    },
    {
      "name": "Search",
      "description": "Search over products, pages and sections."
    },
    {
      "name": "Company",
      "description": "Business facts the website prints."
    }
  ],
  "externalDocs": {
    "description": "Guide with examples for developers and AI agents",
    "url": "https://project-26u0v.vercel.app/developers"
  },
  "security": [],
  "paths": {
    "/api/v1/products": {
      "get": {
        "operationId": "listProducts",
        "summary": "List products",
        "description": "Lists the public product catalogue, the same lines the website's Products page shows, in the site's order. Each line carries its SKU, name, category, page URL, photo URL and carton packing figures. Filter with category and q; page through with limit and offset (follow nextOffset until it is null). Lines without a SKU are not listed. Prices are not published.",
        "tags": [
          "Catalogue"
        ],
        "security": [],
        "parameters": [
          {
            "$ref": "#/components/parameters/Category"
          },
          {
            "$ref": "#/components/parameters/QueryFilter"
          },
          {
            "$ref": "#/components/parameters/Lang"
          },
          {
            "$ref": "#/components/parameters/ProductLimit"
          },
          {
            "$ref": "#/components/parameters/Offset"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of product lines.",
            "headers": {
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Access-Control-Allow-Origin": {
                "$ref": "#/components/headers/AccessControlAllowOrigin"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductList"
                },
                "example": {
                  "lang": "en",
                  "total": 7,
                  "count": 1,
                  "offset": 0,
                  "limit": 1,
                  "nextOffset": 1,
                  "products": [
                    {
                      "sku": "LAF-3068",
                      "name": "Air Fryer",
                      "brand": "Lexical",
                      "category": "Air Fryers",
                      "categoryLabel": "Air Fryers",
                      "url": "https://project-26u0v.vercel.app/products/air-fryer-laf-3068",
                      "photoUrl": "https://project-26u0v.vercel.app/api/image/example?w=960",
                      "carton": {
                        "piecesPerCarton": 4,
                        "netWeightKg": null,
                        "grossWeightKg": null,
                        "volumeCbm": 0.1,
                        "dimensions": null
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/products/{sku}": {
      "get": {
        "operationId": "getProduct",
        "summary": "Get one product by SKU",
        "description": "Returns one product line by its SKU: everything listProducts gives, plus the description Zoho holds for it, the New and CE-documented marks, and the link to request a quote. Answers 404 for a SKU the public catalogue does not list. Barcodes, HS codes and prices are not available.",
        "tags": [
          "Catalogue"
        ],
        "security": [],
        "parameters": [
          {
            "$ref": "#/components/parameters/Sku"
          },
          {
            "$ref": "#/components/parameters/Lang"
          }
        ],
        "responses": {
          "200": {
            "description": "The product line.",
            "headers": {
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Access-Control-Allow-Origin": {
                "$ref": "#/components/headers/AccessControlAllowOrigin"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/categories": {
      "get": {
        "operationId": "listCategories",
        "summary": "List product categories",
        "description": "Lists the product categories on sale today with how many lines each holds, most lines first. A category's name is what the category filter of listProducts takes.",
        "tags": [
          "Catalogue"
        ],
        "security": [],
        "parameters": [
          {
            "$ref": "#/components/parameters/Lang"
          }
        ],
        "responses": {
          "200": {
            "description": "The categories.",
            "headers": {
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Access-Control-Allow-Origin": {
                "$ref": "#/components/headers/AccessControlAllowOrigin"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CategoryList"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/search": {
      "get": {
        "operationId": "searchSite",
        "summary": "Search products, pages and sections",
        "description": "Searches the way the website's own search box does: products (by name, SKU or category), categories, pages and sections of pages, best match first. Each result has a title, a kind and a URL to open.",
        "tags": [
          "Search"
        ],
        "security": [],
        "parameters": [
          {
            "$ref": "#/components/parameters/SearchText"
          },
          {
            "$ref": "#/components/parameters/Lang"
          },
          {
            "$ref": "#/components/parameters/SearchLimit"
          }
        ],
        "responses": {
          "200": {
            "description": "The best matches.",
            "headers": {
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Access-Control-Allow-Origin": {
                "$ref": "#/components/headers/AccessControlAllowOrigin"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResults"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/v1/company": {
      "get": {
        "operationId": "getCompany",
        "summary": "Get Lexical's business facts",
        "description": "Returns the business facts the website prints: legal name, the head office and showroom address with its opening hours, the shop in the Yiwu International Trade City, and the ways to reach the export desk (email, phone, WhatsApp, the quote form).",
        "tags": [
          "Company"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "The business facts.",
            "headers": {
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Access-Control-Allow-Origin": {
                "$ref": "#/components/headers/AccessControlAllowOrigin"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Company"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    }
  },
  "components": {
    "headers": {
      "CacheControl": {
        "description": "Responses may be cached by a shared cache for a minute and served stale for five more while refreshed.",
        "schema": {
          "type": "string",
          "examples": [
            "public, s-maxage=60, stale-while-revalidate=300"
          ]
        }
      },
      "AccessControlAllowOrigin": {
        "description": "Any website may call this API from a browser.",
        "schema": {
          "type": "string",
          "examples": [
            "*"
          ]
        }
      },
      "RetryAfter": {
        "description": "Seconds to wait before asking again.",
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      }
    },
    "parameters": {
      "Lang": {
        "name": "lang",
        "in": "query",
        "required": false,
        "description": "Language for product and category names. English is the default; the other eight are the website's languages.",
        "schema": {
          "type": "string",
          "enum": [
            "en",
            "de",
            "es",
            "fr",
            "pt",
            "ru",
            "zh",
            "fa",
            "ar"
          ],
          "default": "en"
        }
      },
      "Category": {
        "name": "category",
        "in": "query",
        "required": false,
        "description": "Keep only lines in this category. Use a name from listCategories (English name, case does not matter).",
        "schema": {
          "type": "string",
          "maxLength": 80
        },
        "example": "Air Fryers"
      },
      "QueryFilter": {
        "name": "q",
        "in": "query",
        "required": false,
        "description": "Keep only lines whose name, SKU or category contains this text (accents and case are ignored).",
        "schema": {
          "type": "string",
          "maxLength": 100
        },
        "example": "fryer"
      },
      "ProductLimit": {
        "name": "limit",
        "in": "query",
        "required": false,
        "description": "How many lines to return, 1 to 100.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 24
        }
      },
      "Offset": {
        "name": "offset",
        "in": "query",
        "required": false,
        "description": "How many lines to skip. Pass the previous answer's nextOffset to get the next page.",
        "schema": {
          "type": "integer",
          "minimum": 0,
          "default": 0
        }
      },
      "Sku": {
        "name": "sku",
        "in": "path",
        "required": true,
        "description": "The product's SKU as printed on its carton and page, for example LAF-3068. Case does not matter.",
        "schema": {
          "type": "string",
          "minLength": 1,
          "maxLength": 64,
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
        },
        "example": "LAF-3068"
      },
      "SearchText": {
        "name": "q",
        "in": "query",
        "required": true,
        "description": "What to look for: part of a name, a SKU, a category or a page topic.",
        "schema": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "example": "air fryer"
      },
      "SearchLimit": {
        "name": "limit",
        "in": "query",
        "required": false,
        "description": "How many results to return, 1 to 25.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 25,
          "default": 10
        }
      }
    },
    "responses": {
      "BadRequest": {
        "description": "A parameter is missing or not valid.",
        "headers": {
          "Access-Control-Allow-Origin": {
            "$ref": "#/components/headers/AccessControlAllowOrigin"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "error": {
                "code": "bad_request",
                "message": "A parameter is missing or not valid.",
                "hint": "limit must be a whole number from 1 to 100."
              }
            }
          }
        }
      },
      "NotFound": {
        "description": "Nothing at this address.",
        "headers": {
          "Access-Control-Allow-Origin": {
            "$ref": "#/components/headers/AccessControlAllowOrigin"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "error": {
                "code": "not_found",
                "message": "Nothing at this address.",
                "hint": "List the SKUs the catalogue holds with GET /api/v1/products."
              }
            }
          }
        }
      },
      "ServerError": {
        "description": "The catalogue could not be read just now.",
        "headers": {
          "Access-Control-Allow-Origin": {
            "$ref": "#/components/headers/AccessControlAllowOrigin"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "error": {
                "code": "server_error",
                "message": "The catalogue could not be read just now.",
                "hint": "Try again in a minute."
              }
            }
          }
        }
      },
      "MethodNotAllowed": {
        "description": "This address only answers GET.",
        "headers": {
          "Access-Control-Allow-Origin": {
            "$ref": "#/components/headers/AccessControlAllowOrigin"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "error": {
                "code": "method_not_allowed",
                "message": "This address only answers GET.",
                "hint": "Send a GET request. The catalogue API is read-only; every operation is listed in /openapi.json."
              }
            }
          }
        }
      },
      "RateLimited": {
        "description": "Too many requests from this address.",
        "headers": {
          "Retry-After": {
            "$ref": "#/components/headers/RetryAfter"
          },
          "Access-Control-Allow-Origin": {
            "$ref": "#/components/headers/AccessControlAllowOrigin"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "error": {
                "code": "rate_limited",
                "message": "Too many requests from this address.",
                "hint": "Wait for the Retry-After seconds. The limit is about 300 requests per 10 minutes."
              }
            }
          }
        }
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "description": "Every error the API returns.",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message",
              "hint"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "bad_request",
                  "not_found",
                  "method_not_allowed",
                  "rate_limited",
                  "server_error"
                ],
                "description": "Machine-readable kind of error."
              },
              "message": {
                "type": "string",
                "description": "What went wrong, in English."
              },
              "hint": {
                "type": "string",
                "description": "What to do about it."
              }
            }
          }
        }
      },
      "Carton": {
        "type": "object",
        "description": "The master carton's packing figures as the product page prints them. A figure the catalogue does not hold yet is null (the page shows a dash).",
        "required": [
          "piecesPerCarton",
          "netWeightKg",
          "grossWeightKg",
          "volumeCbm",
          "dimensions"
        ],
        "properties": {
          "piecesPerCarton": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Pieces packed in one carton."
          },
          "netWeightKg": {
            "type": [
              "number",
              "null"
            ],
            "description": "Net weight of one carton, kg."
          },
          "grossWeightKg": {
            "type": [
              "number",
              "null"
            ],
            "description": "Gross weight of one carton, kg."
          },
          "volumeCbm": {
            "type": [
              "number",
              "null"
            ],
            "description": "Volume of one carton, cubic metres (CBM)."
          },
          "dimensions": {
            "type": [
              "string",
              "null"
            ],
            "description": "Carton length x width x height with its unit, when held."
          }
        }
      },
      "ProductSummary": {
        "type": "object",
        "description": "A product line in a list.",
        "required": [
          "sku",
          "name",
          "brand",
          "category",
          "categoryLabel",
          "url",
          "photoUrl",
          "carton"
        ],
        "properties": {
          "sku": {
            "type": "string",
            "description": "The line's SKU, its identity everywhere.",
            "examples": [
              "LAF-3068"
            ]
          },
          "name": {
            "type": "string",
            "description": "The line's name in the requested language."
          },
          "brand": {
            "type": "string",
            "examples": [
              "Lexical"
            ]
          },
          "category": {
            "type": "string",
            "description": "Category name in English, the key the category filter takes."
          },
          "categoryLabel": {
            "type": "string",
            "description": "The category's name in the requested language."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "The line's public page on the website, in the requested language."
          },
          "photoUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "A product photograph, or null when the line has none yet."
          },
          "carton": {
            "$ref": "#/components/schemas/Carton"
          }
        }
      },
      "Product": {
        "description": "One product line with everything the public product page shows.",
        "allOf": [
          {
            "$ref": "#/components/schemas/ProductSummary"
          },
          {
            "type": "object",
            "required": [
              "description",
              "isNew",
              "ceDocumented",
              "lang",
              "quoteUrl"
            ],
            "properties": {
              "description": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The line's description as the catalogue holds it (English), or null."
              },
              "isNew": {
                "type": "boolean",
                "description": "Whether the website marks the line New."
              },
              "ceDocumented": {
                "type": "boolean",
                "description": "Whether CE documentation is on file; the documents themselves go with a quotation."
              },
              "lang": {
                "type": "string",
                "enum": [
                  "en",
                  "de",
                  "es",
                  "fr",
                  "pt",
                  "ru",
                  "zh",
                  "fa",
                  "ar"
                ],
                "description": "The language the name and url are in."
              },
              "quoteUrl": {
                "type": "string",
                "format": "uri",
                "description": "Opens the website's quote form with this line filled in."
              }
            }
          }
        ]
      },
      "ProductList": {
        "type": "object",
        "required": [
          "lang",
          "total",
          "count",
          "offset",
          "limit",
          "nextOffset",
          "products"
        ],
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "de",
              "es",
              "fr",
              "pt",
              "ru",
              "zh",
              "fa",
              "ar"
            ]
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "description": "How many lines match the filters in all."
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "description": "How many are in this page."
          },
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1
          },
          "nextOffset": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The offset of the next page, or null on the last."
          },
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductSummary"
            }
          }
        }
      },
      "Category": {
        "type": "object",
        "required": [
          "name",
          "label",
          "count",
          "url"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "English name; pass it as the category filter."
          },
          "label": {
            "type": "string",
            "description": "The name in the requested language."
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "description": "Lines in the category."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "The website's Products page filtered to this category."
          }
        }
      },
      "CategoryList": {
        "type": "object",
        "required": [
          "lang",
          "count",
          "categories"
        ],
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "de",
              "es",
              "fr",
              "pt",
              "ru",
              "zh",
              "fa",
              "ar"
            ]
          },
          "count": {
            "type": "integer",
            "minimum": 0
          },
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Category"
            }
          }
        }
      },
      "SearchResult": {
        "type": "object",
        "required": [
          "kind",
          "title",
          "description",
          "url"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "product",
              "category",
              "page",
              "section",
              "link"
            ],
            "description": "What the result is."
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "The line under the title: a product's category and SKU, a page's summary."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Where to open it."
          },
          "sku": {
            "type": "string",
            "description": "Present for a product result: its SKU, to pass to getProduct."
          }
        }
      },
      "SearchResults": {
        "type": "object",
        "required": [
          "q",
          "lang",
          "count",
          "results"
        ],
        "properties": {
          "q": {
            "type": "string",
            "description": "The query as understood."
          },
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "de",
              "es",
              "fr",
              "pt",
              "ru",
              "zh",
              "fa",
              "ar"
            ]
          },
          "count": {
            "type": "integer",
            "minimum": 0
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchResult"
            }
          }
        }
      },
      "Hours": {
        "type": "object",
        "required": [
          "days",
          "opens",
          "closes",
          "text"
        ],
        "properties": {
          "days": {
            "type": "string",
            "examples": [
              "Monday – Saturday"
            ]
          },
          "opens": {
            "type": "string",
            "description": "Opening time, 24-hour HH:MM, in the place's time zone."
          },
          "closes": {
            "type": "string",
            "description": "Closing time, 24-hour HH:MM; 24:00 is midnight at the end of that day."
          },
          "text": {
            "type": "string",
            "description": "The hours as the website prints them."
          }
        }
      },
      "Place": {
        "type": "object",
        "required": [
          "description",
          "city",
          "country",
          "timeZone",
          "hours"
        ],
        "properties": {
          "description": {
            "type": "string"
          },
          "street": {
            "type": "string"
          },
          "district": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "postalCode": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "market": {
            "type": "string"
          },
          "booth": {
            "type": "string"
          },
          "gate": {
            "type": "string"
          },
          "addressZh": {
            "type": "string",
            "description": "The address as a driver in China is told it."
          },
          "latitude": {
            "type": "number"
          },
          "longitude": {
            "type": "number"
          },
          "mapUrl": {
            "type": "string",
            "format": "uri"
          },
          "timeZone": {
            "type": "string",
            "examples": [
              "Asia/Shanghai"
            ]
          },
          "hours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Hours"
            }
          }
        }
      },
      "Channel": {
        "type": [
          "object",
          "null"
        ],
        "required": [
          "label",
          "handle",
          "url"
        ],
        "properties": {
          "label": {
            "type": "string"
          },
          "handle": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "Company": {
        "type": "object",
        "description": "The business facts the website prints.",
        "required": [
          "name",
          "legalName",
          "tagline",
          "website",
          "languages",
          "headquarters",
          "tradeCity",
          "contact",
          "social"
        ],
        "properties": {
          "name": {
            "type": "string",
            "examples": [
              "Lexical"
            ]
          },
          "legalName": {
            "type": "string"
          },
          "tagline": {
            "type": "string"
          },
          "website": {
            "type": "string",
            "format": "uri"
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "en",
                "de",
                "es",
                "fr",
                "pt",
                "ru",
                "zh",
                "fa",
                "ar"
              ]
            },
            "description": "The website's languages."
          },
          "headquarters": {
            "$ref": "#/components/schemas/Place"
          },
          "tradeCity": {
            "$ref": "#/components/schemas/Place"
          },
          "contact": {
            "type": "object",
            "required": [
              "email",
              "phone",
              "whatsapp",
              "quoteForm",
              "contactPage"
            ],
            "properties": {
              "email": {
                "type": "string",
                "format": "email",
                "description": "The export desk."
              },
              "phone": {
                "type": "string"
              },
              "whatsapp": {
                "$ref": "#/components/schemas/Channel"
              },
              "quoteForm": {
                "type": "string",
                "format": "uri"
              },
              "contactPage": {
                "type": "string",
                "format": "uri"
              }
            }
          },
          "social": {
            "type": "object",
            "required": [
              "instagram",
              "facebook"
            ],
            "properties": {
              "instagram": {
                "$ref": "#/components/schemas/Channel"
              },
              "facebook": {
                "$ref": "#/components/schemas/Channel"
              }
            }
          }
        }
      }
    }
  }
}