{
  "openapi": "3.1.1",
  "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "info": {
    "title": "Khetsi International Public Catalogue API",
    "version": "1.0.0",
    "description": "Unauthenticated GET/HEAD research interface. All other methods return 405 with Allow: GET, HEAD. Unknown/duplicate parameters are rejected. Search responses never contain prices, live stock, private enquiries or clinical instructions. Company records repeat published information; they are not a registry-verification service. Hosting/WAF errors outside the origin handler may not use this JSON format.",
    "contact": {
      "url": "https://khetsiinternational.com/contact/",
      "email": "exports@khetsiinternational.com"
    }
  },
  "servers": [
    {
      "url": "https://khetsiinternational.com/api/v1"
    }
  ],
  "security": [],
  "paths": {
    "/collections": {
      "get": {
        "operationId": "listCollections",
        "summary": "List the eight published healthcare collections.",
        "description": "Public read-only catalogue/reference information. No authentication is required. Public catalogue reference information only. Prices, availability, minimum quantities, lead times, packing, documentation and final specifications require confirmation for the selected product and destination. This API is not clinical guidance and does not submit enquiries or orders.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Public English reference data.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CollectionsResponse"
                },
                "example": {
                  "api_version": "1.0.0",
                  "catalogue_version": "2026-09",
                  "language": "en",
                  "disclaimer": "Public catalogue reference information only. Prices, availability, minimum quantities, lead times, packing, documentation and final specifications require confirmation for the selected product and destination. This API is not clinical guidance and does not submit enquiries or orders.",
                  "data": [
                    {
                      "id": "infusion",
                      "name": "Infusion & critical care",
                      "description": "Infusion consumables and critical-care essentials.",
                      "product_count": 13,
                      "url": "https://khetsiinternational.com/collections/infusion/"
                    },
                    {
                      "id": "surgery",
                      "name": "Operating theatre",
                      "description": "Surgical and operating-theatre consumables.",
                      "product_count": 3,
                      "url": "https://khetsiinternational.com/collections/surgery/"
                    },
                    {
                      "id": "respiratory",
                      "name": "Anaesthesia & respiratory",
                      "description": "Airway, oxygen-delivery and respiratory-care products.",
                      "product_count": 9,
                      "url": "https://khetsiinternational.com/collections/respiratory/"
                    },
                    {
                      "id": "urology",
                      "name": "Urology",
                      "description": "Catheters, urine collection and monitoring products.",
                      "product_count": 3,
                      "url": "https://khetsiinternational.com/collections/urology/"
                    },
                    {
                      "id": "orthopaedics",
                      "name": "Orthopaedics & rehabilitation",
                      "description": "Supports, braces and rehabilitation products.",
                      "product_count": 27,
                      "url": "https://khetsiinternational.com/collections/orthopaedics/"
                    },
                    {
                      "id": "maternal",
                      "name": "Maternal & neonatal",
                      "description": "Delivery and newborn-care essentials.",
                      "product_count": 4,
                      "url": "https://khetsiinternational.com/collections/maternal/"
                    },
                    {
                      "id": "infection",
                      "name": "Infection prevention",
                      "description": "Gloves, protective apparel and preparation products.",
                      "product_count": 9,
                      "url": "https://khetsiinternational.com/collections/infection/"
                    },
                    {
                      "id": "wound",
                      "name": "Wound care & dressings",
                      "description": "Dressings, tapes, bandages and casting products.",
                      "product_count": 14,
                      "url": "https://khetsiinternational.com/collections/wound/"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Problem400"
          },
          "404": {
            "$ref": "#/components/responses/Problem404"
          },
          "405": {
            "$ref": "#/components/responses/Problem405"
          },
          "406": {
            "$ref": "#/components/responses/Problem406"
          },
          "503": {
            "$ref": "#/components/responses/Problem503"
          }
        }
      },
      "head": {
        "summary": "Read response headers without a response body.",
        "description": "Same status and representation headers as GET; no response body.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "400": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "404": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "405": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              },
              "Allow": {
                "schema": {
                  "type": "string",
                  "const": "GET, HEAD"
                }
              }
            }
          },
          "406": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "503": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "string",
                  "const": "300"
                }
              }
            }
          }
        }
      }
    },
    "/products": {
      "get": {
        "operationId": "listProducts",
        "summary": "Search and page the published product catalogue.",
        "description": "Public read-only catalogue/reference information. No authentication is required. Public catalogue reference information only. Prices, availability, minimum quantities, lead times, packing, documentation and final specifications require confirmation for the selected product and destination. This API is not clinical guidance and does not submit enquiries or orders.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Case-insensitive substring search across public product names, references, collection names, summaries and specification prompts. Maximum 120 Unicode code points; C0 and DEL control characters are not accepted.",
            "schema": {
              "type": "string",
              "maxLength": 120,
              "pattern": "^(?![\\s\\S]*[\\u0000-\\u001F\\u007F])[\\s\\S]*$"
            }
          },
          {
            "name": "collection",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "infusion",
                "surgery",
                "respiratory",
                "urology",
                "orthopaedics",
                "maternal",
                "infection",
                "wound"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public English reference data.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductsResponse"
                },
                "example": {
                  "api_version": "1.0.0",
                  "catalogue_version": "2026-09",
                  "language": "en",
                  "disclaimer": "Public catalogue reference information only. Prices, availability, minimum quantities, lead times, packing, documentation and final specifications require confirmation for the selected product and destination. This API is not clinical guidance and does not submit enquiries or orders.",
                  "data": [
                    {
                      "id": "m006",
                      "reference": "KI-M006",
                      "name": "Three-way stopcock",
                      "collection_id": "infusion",
                      "collection_name": "Infusion & critical care",
                      "summary": "Infusion consumables and critical-care essentials.",
                      "specification_prompt": "Preferences to confirm: standard or high-pressure model, required pressure rating, connector and packing.",
                      "url": "https://khetsiinternational.com/product/m006-three-way-stopcock/",
                      "image_url": "https://khetsiinternational.com/wp-content/themes/khetsi-international/assets/products/m006.webp",
                      "source": {
                        "catalogue": "Healthcare catalogue",
                        "page": 6,
                        "url": "https://khetsiinternational.com/wp-content/themes/khetsi-international/assets/healthcare-catalogue.pdf#page=6",
                        "reviewed": "2026-10-02"
                      }
                    },
                    {
                      "id": "m007",
                      "reference": "KI-M007",
                      "name": "Three-way stopcock with extension line",
                      "collection_id": "infusion",
                      "collection_name": "Infusion & critical care",
                      "summary": "Infusion consumables and critical-care essentials.",
                      "specification_prompt": "Preferences to confirm: extension length, tube bore, Luer Lock connection and pack format.",
                      "url": "https://khetsiinternational.com/product/m007-three-way-stopcock-with-extension-line/",
                      "image_url": "https://khetsiinternational.com/wp-content/themes/khetsi-international/assets/products/m007.webp",
                      "source": {
                        "catalogue": "Healthcare catalogue",
                        "page": 7,
                        "url": "https://khetsiinternational.com/wp-content/themes/khetsi-international/assets/healthcare-catalogue.pdf#page=7",
                        "reviewed": "2026-10-02"
                      }
                    }
                  ],
                  "pagination": {
                    "limit": 2,
                    "offset": 0,
                    "total": 82,
                    "returned": 2
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Problem400"
          },
          "404": {
            "$ref": "#/components/responses/Problem404"
          },
          "405": {
            "$ref": "#/components/responses/Problem405"
          },
          "406": {
            "$ref": "#/components/responses/Problem406"
          },
          "503": {
            "$ref": "#/components/responses/Problem503"
          }
        }
      },
      "head": {
        "summary": "Read response headers without a response body.",
        "description": "Same status and representation headers as GET; no response body.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Case-insensitive substring search across public product names, references, collection names, summaries and specification prompts. Maximum 120 Unicode code points; C0 and DEL control characters are not accepted.",
            "schema": {
              "type": "string",
              "maxLength": 120,
              "pattern": "^(?![\\s\\S]*[\\u0000-\\u001F\\u007F])[\\s\\S]*$"
            }
          },
          {
            "name": "collection",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "infusion",
                "surgery",
                "respiratory",
                "urology",
                "orthopaedics",
                "maternal",
                "infection",
                "wound"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "400": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "404": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "405": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              },
              "Allow": {
                "schema": {
                  "type": "string",
                  "const": "GET, HEAD"
                }
              }
            }
          },
          "406": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "503": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "string",
                  "const": "300"
                }
              }
            }
          }
        }
      }
    },
    "/products/{id}": {
      "get": {
        "operationId": "getProduct",
        "summary": "Read one product and its published catalogue specifications.",
        "description": "Public read-only catalogue/reference information. No authentication is required. Public catalogue reference information only. Prices, availability, minimum quantities, lead times, packing, documentation and final specifications require confirmation for the selected product and destination. This API is not clinical guidance and does not submit enquiries or orders.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[mw][0-9]{3}$"
            },
            "description": "Case-sensitive public catalogue ID, for example m009. Unknown IDs return 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Public English reference data.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResponse"
                },
                "example": {
                  "api_version": "1.0.0",
                  "catalogue_version": "2026-09",
                  "language": "en",
                  "disclaimer": "Public catalogue reference information only. Prices, availability, minimum quantities, lead times, packing, documentation and final specifications require confirmation for the selected product and destination. This API is not clinical guidance and does not submit enquiries or orders.",
                  "data": {
                    "id": "m009",
                    "reference": "KI-M009",
                    "name": "IV cannula",
                    "collection_id": "infusion",
                    "collection_name": "Infusion & critical care",
                    "summary": "Infusion consumables and critical-care essentials.",
                    "specification_prompt": "Preferences to confirm: cannula gauge, catheter length, injection port, wings and blister packing.",
                    "url": "https://khetsiinternational.com/product/m009-iv-cannula/",
                    "image_url": "https://khetsiinternational.com/wp-content/themes/khetsi-international/assets/products/m009.webp",
                    "source": {
                      "catalogue": "Healthcare catalogue",
                      "page": 9,
                      "url": "https://khetsiinternational.com/wp-content/themes/khetsi-international/assets/healthcare-catalogue.pdf#page=9",
                      "reviewed": "2026-10-02"
                    },
                    "specifications": {
                      "fields": [
                        {
                          "label": "Catheter material",
                          "value": "Radiopaque FEP (Teflon)"
                        },
                        {
                          "label": "Needle material",
                          "value": "Siliconized stainless steel"
                        },
                        {
                          "label": "Design",
                          "value": "Injection port, flexible wings and transparent flashback chamber"
                        },
                        {
                          "label": "Sterility & packing",
                          "value": "Sterile; individually packed in peel-open blister packaging"
                        }
                      ],
                      "table": {
                        "caption": "Sizes listed in the catalogue",
                        "headers": [
                          "Gauge",
                          "Hub colour",
                          "Catheter length",
                          "Listed flow rate"
                        ],
                        "rows": [
                          [
                            "14G",
                            "Orange",
                            "45 mm",
                            "270 ml/min"
                          ],
                          [
                            "16G",
                            "Grey",
                            "45 mm",
                            "200 ml/min"
                          ],
                          [
                            "17G",
                            "White",
                            "45 mm",
                            "125 ml/min"
                          ],
                          [
                            "18G",
                            "Green",
                            "45 mm",
                            "90 ml/min"
                          ],
                          [
                            "20G",
                            "Pink",
                            "32 mm",
                            "55 ml/min"
                          ],
                          [
                            "22G",
                            "Blue",
                            "25 mm",
                            "36 ml/min"
                          ],
                          [
                            "24G",
                            "Yellow",
                            "19 mm",
                            "18 ml/min"
                          ],
                          [
                            "26G",
                            "Violet",
                            "19 mm",
                            "13 ml/min"
                          ]
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Problem400"
          },
          "404": {
            "$ref": "#/components/responses/ProductNotFound"
          },
          "405": {
            "$ref": "#/components/responses/Problem405"
          },
          "406": {
            "$ref": "#/components/responses/Problem406"
          },
          "503": {
            "$ref": "#/components/responses/Problem503"
          }
        }
      },
      "head": {
        "summary": "Read response headers without a response body.",
        "description": "Same status and representation headers as GET; no response body.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[mw][0-9]{3}$"
            },
            "description": "Case-sensitive public catalogue ID, for example m009. Unknown IDs return 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "400": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "404": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "405": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              },
              "Allow": {
                "schema": {
                  "type": "string",
                  "const": "GET, HEAD"
                }
              }
            }
          },
          "406": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "503": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "string",
                  "const": "300"
                }
              }
            }
          }
        }
      }
    },
    "/company": {
      "get": {
        "operationId": "getCompany",
        "summary": "Read published company identity and contact information.",
        "description": "Public read-only catalogue/reference information. No authentication is required. Public catalogue reference information only. Prices, availability, minimum quantities, lead times, packing, documentation and final specifications require confirmation for the selected product and destination. This API is not clinical guidance and does not submit enquiries or orders.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Public English reference data.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyResponse"
                },
                "example": {
                  "api_version": "1.0.0",
                  "catalogue_version": "2026-09",
                  "language": "en",
                  "disclaimer": "Public catalogue reference information only. Prices, availability, minimum quantities, lead times, packing, documentation and final specifications require confirmation for the selected product and destination. This API is not clinical guidance and does not submit enquiries or orders.",
                  "data": {
                    "name": "Khetsi International",
                    "legal_name": "Khetsi International LLP",
                    "tagline": "Indian Roots. Global Standards.",
                    "url": "https://khetsiinternational.com/",
                    "contact_url": "https://khetsiinternational.com/contact/",
                    "email": "exports@khetsiinternational.com",
                    "contacts": [
                      {
                        "label": "Sourcing enquiries",
                        "phone": "+91 99301 57927",
                        "phone_uri": "tel:+919930157927",
                        "whatsapp_url": "https://wa.me/919930157927"
                      },
                      {
                        "label": "Business profile contact",
                        "phone": "+91 99304 29768",
                        "phone_uri": "tel:+919930429768",
                        "whatsapp_url": "https://wa.me/919930429768"
                      }
                    ],
                    "office_address": {
                      "lines": [
                        "304, Cosmos Heritage Society",
                        "Tikuji Ni Wadi Road, Manpada",
                        "Thane West, Thane, Maharashtra 400610",
                        "India"
                      ],
                      "notice": "Meetings by appointment only"
                    },
                    "founders": [
                      {
                        "name": "Jeet Gadhvi",
                        "role": "Founder & Export Director"
                      },
                      {
                        "name": "Devansh Katira",
                        "role": "Co-founder & Export Sourcing Manager"
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Problem400"
          },
          "404": {
            "$ref": "#/components/responses/Problem404"
          },
          "405": {
            "$ref": "#/components/responses/Problem405"
          },
          "406": {
            "$ref": "#/components/responses/Problem406"
          },
          "503": {
            "$ref": "#/components/responses/Problem503"
          }
        }
      },
      "head": {
        "summary": "Read response headers without a response body.",
        "description": "Same status and representation headers as GET; no response body.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "400": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "404": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "405": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              },
              "Allow": {
                "schema": {
                  "type": "string",
                  "const": "GET, HEAD"
                }
              }
            }
          },
          "406": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            }
          },
          "503": {
            "description": "Same status/headers as GET; body omitted.",
            "headers": {
              "Cache-Control": {
                "description": "Read-only responses are not stored in shared caches.",
                "schema": {
                  "type": "string",
                  "const": "private, no-store, max-age=0"
                }
              },
              "Vary": {
                "schema": {
                  "type": "string",
                  "const": "Accept"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "string",
                  "const": "300"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Collection": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "infusion",
              "surgery",
              "respiratory",
              "urology",
              "orthopaedics",
              "maternal",
              "infection",
              "wound"
            ]
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": "string",
            "minLength": 1
          },
          "product_count": {
            "type": "integer",
            "minimum": 0
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "product_count",
          "url"
        ],
        "additionalProperties": false
      },
      "CatalogueSource": {
        "type": "object",
        "properties": {
          "catalogue": {
            "type": "string",
            "minLength": 1
          },
          "page": {
            "type": "integer",
            "minimum": 1
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "reviewed": {
            "type": "string",
            "format": "date"
          }
        },
        "required": [
          "catalogue",
          "page",
          "url",
          "reviewed"
        ],
        "additionalProperties": false
      },
      "SpecificationField": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1
          },
          "value": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "label",
          "value"
        ],
        "additionalProperties": false
      },
      "VariantTable": {
        "type": "object",
        "properties": {
          "caption": {
            "type": "string",
            "minLength": 1
          },
          "headers": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "rows": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1
              }
            }
          }
        },
        "required": [
          "caption",
          "headers",
          "rows"
        ],
        "additionalProperties": false
      },
      "Specifications": {
        "type": "object",
        "properties": {
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SpecificationField"
            }
          },
          "table": {
            "$ref": "#/components/schemas/VariantTable"
          }
        },
        "required": [
          "fields"
        ],
        "additionalProperties": false
      },
      "Contact": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1
          },
          "phone": {
            "type": "string",
            "minLength": 1
          },
          "phone_uri": {
            "type": "string",
            "pattern": "^tel:\\+[0-9]+$"
          },
          "whatsapp_url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "label",
          "phone",
          "phone_uri",
          "whatsapp_url"
        ],
        "additionalProperties": false
      },
      "OfficeAddress": {
        "type": "object",
        "properties": {
          "lines": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "notice": {
            "type": "string",
            "const": "Meetings by appointment only"
          }
        },
        "required": [
          "lines",
          "notice"
        ],
        "additionalProperties": false
      },
      "Founder": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "role": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "name",
          "role"
        ],
        "additionalProperties": false
      },
      "ProductSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[mw][0-9]{3}$"
          },
          "reference": {
            "type": "string",
            "pattern": "^KI-[MW][0-9]{3}$"
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "collection_id": {
            "type": "string",
            "enum": [
              "infusion",
              "surgery",
              "respiratory",
              "urology",
              "orthopaedics",
              "maternal",
              "infection",
              "wound"
            ]
          },
          "collection_name": {
            "type": "string",
            "minLength": 1
          },
          "summary": {
            "type": "string",
            "minLength": 1
          },
          "specification_prompt": {
            "type": "string",
            "minLength": 1
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "image_url": {
            "type": "string",
            "format": "uri"
          },
          "source": {
            "$ref": "#/components/schemas/CatalogueSource"
          }
        },
        "required": [
          "id",
          "reference",
          "name",
          "collection_id",
          "collection_name",
          "summary",
          "specification_prompt",
          "url",
          "image_url",
          "source"
        ],
        "additionalProperties": false
      },
      "ProductDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[mw][0-9]{3}$"
          },
          "reference": {
            "type": "string",
            "pattern": "^KI-[MW][0-9]{3}$"
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "collection_id": {
            "type": "string",
            "enum": [
              "infusion",
              "surgery",
              "respiratory",
              "urology",
              "orthopaedics",
              "maternal",
              "infection",
              "wound"
            ]
          },
          "collection_name": {
            "type": "string",
            "minLength": 1
          },
          "summary": {
            "type": "string",
            "minLength": 1
          },
          "specification_prompt": {
            "type": "string",
            "minLength": 1
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "image_url": {
            "type": "string",
            "format": "uri"
          },
          "source": {
            "$ref": "#/components/schemas/CatalogueSource"
          },
          "specifications": {
            "$ref": "#/components/schemas/Specifications"
          }
        },
        "required": [
          "id",
          "reference",
          "name",
          "collection_id",
          "collection_name",
          "summary",
          "specification_prompt",
          "url",
          "image_url",
          "source",
          "specifications"
        ],
        "additionalProperties": false
      },
      "Company": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "const": "Khetsi International"
          },
          "legal_name": {
            "type": "string",
            "const": "Khetsi International LLP"
          },
          "tagline": {
            "type": "string",
            "minLength": 1
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "contact_url": {
            "type": "string",
            "format": "uri"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "contacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Contact"
            }
          },
          "office_address": {
            "$ref": "#/components/schemas/OfficeAddress"
          },
          "founders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Founder"
            }
          }
        },
        "required": [
          "name",
          "legal_name",
          "tagline",
          "url",
          "contact_url",
          "email",
          "contacts",
          "office_address",
          "founders"
        ],
        "additionalProperties": false
      },
      "Pagination": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "total": {
            "type": "integer",
            "minimum": 0
          },
          "returned": {
            "type": "integer",
            "minimum": 0,
            "maximum": 50
          }
        },
        "required": [
          "limit",
          "offset",
          "total",
          "returned"
        ],
        "additionalProperties": false
      },
      "CollectionsResponse": {
        "type": "object",
        "properties": {
          "api_version": {
            "type": "string",
            "const": "1.0.0"
          },
          "catalogue_version": {
            "type": "string",
            "minLength": 1
          },
          "language": {
            "type": "string",
            "const": "en"
          },
          "disclaimer": {
            "type": "string",
            "minLength": 1
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Collection"
            }
          }
        },
        "required": [
          "api_version",
          "catalogue_version",
          "language",
          "disclaimer",
          "data"
        ],
        "additionalProperties": false
      },
      "ProductsResponse": {
        "type": "object",
        "properties": {
          "api_version": {
            "type": "string",
            "const": "1.0.0"
          },
          "catalogue_version": {
            "type": "string",
            "minLength": 1
          },
          "language": {
            "type": "string",
            "const": "en"
          },
          "disclaimer": {
            "type": "string",
            "minLength": 1
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductSummary"
            }
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "required": [
          "api_version",
          "catalogue_version",
          "language",
          "disclaimer",
          "data",
          "pagination"
        ],
        "additionalProperties": false
      },
      "ProductResponse": {
        "type": "object",
        "properties": {
          "api_version": {
            "type": "string",
            "const": "1.0.0"
          },
          "catalogue_version": {
            "type": "string",
            "minLength": 1
          },
          "language": {
            "type": "string",
            "const": "en"
          },
          "disclaimer": {
            "type": "string",
            "minLength": 1
          },
          "data": {
            "$ref": "#/components/schemas/ProductDetail"
          }
        },
        "required": [
          "api_version",
          "catalogue_version",
          "language",
          "disclaimer",
          "data"
        ],
        "additionalProperties": false
      },
      "CompanyResponse": {
        "type": "object",
        "properties": {
          "api_version": {
            "type": "string",
            "const": "1.0.0"
          },
          "catalogue_version": {
            "type": "string",
            "minLength": 1
          },
          "language": {
            "type": "string",
            "const": "en"
          },
          "disclaimer": {
            "type": "string",
            "minLength": 1
          },
          "data": {
            "$ref": "#/components/schemas/Company"
          }
        },
        "required": [
          "api_version",
          "catalogue_version",
          "language",
          "disclaimer",
          "data"
        ],
        "additionalProperties": false
      },
      "ParameterError": {
        "type": "object",
        "properties": {
          "parameter": {
            "type": "string",
            "enum": [
              "query",
              "q",
              "collection",
              "limit",
              "offset"
            ]
          },
          "code": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_]*$"
          },
          "message": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "parameter",
          "code",
          "message"
        ],
        "additionalProperties": false
      },
      "Problem": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "about:blank"
          },
          "title": {
            "type": "string",
            "enum": [
              "Bad Request",
              "Not Found",
              "Method Not Allowed",
              "Not Acceptable",
              "Service Unavailable"
            ]
          },
          "status": {
            "type": "integer",
            "enum": [
              400,
              404,
              405,
              406,
              503
            ]
          },
          "detail": {
            "type": "string",
            "minLength": 1
          },
          "code": {
            "type": "string",
            "enum": [
              "INVALID_QUERY",
              "INVALID_PARAMETER",
              "RESOURCE_NOT_FOUND",
              "PRODUCT_NOT_FOUND",
              "METHOD_NOT_ALLOWED",
              "NOT_ACCEPTABLE",
              "CATALOGUE_UNAVAILABLE"
            ]
          },
          "resolution_hint": {
            "type": "string",
            "minLength": 1
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParameterError"
            }
          }
        },
        "required": [
          "type",
          "title",
          "status",
          "detail",
          "code",
          "resolution_hint"
        ],
        "additionalProperties": false
      }
    },
    "responses": {
      "Problem400": {
        "description": "RFC 9457 Problem Details. No query values, private records or diagnostic traces are reflected.",
        "headers": {
          "Cache-Control": {
            "description": "Read-only responses are not stored in shared caches.",
            "schema": {
              "type": "string",
              "const": "private, no-store, max-age=0"
            }
          },
          "Vary": {
            "schema": {
              "type": "string",
              "const": "Accept"
            }
          },
          "X-Content-Type-Options": {
            "schema": {
              "type": "string",
              "const": "nosniff"
            }
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            },
            "example": {
              "type": "about:blank",
              "title": "Bad Request",
              "status": 400,
              "detail": "One or more query parameters are invalid.",
              "code": "INVALID_PARAMETER",
              "resolution_hint": "Use the documented parameter types and bounds, then retry.",
              "errors": [
                {
                  "parameter": "limit",
                  "code": "out_of_range",
                  "message": "Use an integer from 1 to 50."
                }
              ]
            }
          }
        }
      },
      "Problem404": {
        "description": "RFC 9457 Problem Details. No query values, private records or diagnostic traces are reflected.",
        "headers": {
          "Cache-Control": {
            "description": "Read-only responses are not stored in shared caches.",
            "schema": {
              "type": "string",
              "const": "private, no-store, max-age=0"
            }
          },
          "Vary": {
            "schema": {
              "type": "string",
              "const": "Accept"
            }
          },
          "X-Content-Type-Options": {
            "schema": {
              "type": "string",
              "const": "nosniff"
            }
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            },
            "example": {
              "type": "about:blank",
              "title": "Not Found",
              "status": 404,
              "detail": "The requested API resource is not available.",
              "code": "RESOURCE_NOT_FOUND",
              "resolution_hint": "Use a documented /api/v1 resource from /openapi.json."
            }
          }
        }
      },
      "Problem405": {
        "description": "RFC 9457 Problem Details. No query values, private records or diagnostic traces are reflected.",
        "headers": {
          "Cache-Control": {
            "description": "Read-only responses are not stored in shared caches.",
            "schema": {
              "type": "string",
              "const": "private, no-store, max-age=0"
            }
          },
          "Vary": {
            "schema": {
              "type": "string",
              "const": "Accept"
            }
          },
          "X-Content-Type-Options": {
            "schema": {
              "type": "string",
              "const": "nosniff"
            }
          },
          "Allow": {
            "schema": {
              "type": "string",
              "const": "GET, HEAD"
            }
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            },
            "example": {
              "type": "about:blank",
              "title": "Method Not Allowed",
              "status": 405,
              "detail": "This public API supports read-only GET and HEAD requests.",
              "code": "METHOD_NOT_ALLOWED",
              "resolution_hint": "Retry with GET or HEAD. Use the website for a reviewed and explicitly approved enquiry."
            }
          }
        }
      },
      "Problem406": {
        "description": "RFC 9457 Problem Details. No query values, private records or diagnostic traces are reflected.",
        "headers": {
          "Cache-Control": {
            "description": "Read-only responses are not stored in shared caches.",
            "schema": {
              "type": "string",
              "const": "private, no-store, max-age=0"
            }
          },
          "Vary": {
            "schema": {
              "type": "string",
              "const": "Accept"
            }
          },
          "X-Content-Type-Options": {
            "schema": {
              "type": "string",
              "const": "nosniff"
            }
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            },
            "example": {
              "type": "about:blank",
              "title": "Not Acceptable",
              "status": 406,
              "detail": "This resource is available as application/json.",
              "code": "NOT_ACCEPTABLE",
              "resolution_hint": "Send Accept: application/json or an acceptable wildcard."
            }
          }
        }
      },
      "Problem503": {
        "description": "RFC 9457 Problem Details. No query values, private records or diagnostic traces are reflected.",
        "headers": {
          "Cache-Control": {
            "description": "Read-only responses are not stored in shared caches.",
            "schema": {
              "type": "string",
              "const": "private, no-store, max-age=0"
            }
          },
          "Vary": {
            "schema": {
              "type": "string",
              "const": "Accept"
            }
          },
          "X-Content-Type-Options": {
            "schema": {
              "type": "string",
              "const": "nosniff"
            }
          },
          "Retry-After": {
            "schema": {
              "type": "string",
              "const": "300"
            }
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            },
            "example": {
              "type": "about:blank",
              "title": "Service Unavailable",
              "status": 503,
              "detail": "The public catalogue reference data is temporarily unavailable.",
              "code": "CATALOGUE_UNAVAILABLE",
              "resolution_hint": "Retry later or use the website contact page."
            }
          }
        }
      },
      "ProductNotFound": {
        "description": "The product ID is not in the public catalogue.",
        "headers": {
          "Cache-Control": {
            "description": "Read-only responses are not stored in shared caches.",
            "schema": {
              "type": "string",
              "const": "private, no-store, max-age=0"
            }
          },
          "Vary": {
            "schema": {
              "type": "string",
              "const": "Accept"
            }
          },
          "X-Content-Type-Options": {
            "schema": {
              "type": "string",
              "const": "nosniff"
            }
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            },
            "example": {
              "type": "about:blank",
              "title": "Not Found",
              "status": 404,
              "detail": "The product is not in the public catalogue.",
              "code": "PRODUCT_NOT_FOUND",
              "resolution_hint": "Search /api/v1/products or use a published product ID from the catalogue."
            }
          }
        }
      }
    }
  },
  "externalDocs": {
    "description": "Khetsi International agent and developer guide",
    "url": "https://khetsiinternational.com/developers/"
  }
}
