{
    "openapi": "3.1.0",
    "info": {
        "title": "Discount Filter Shop API",
        "version": "2026-10-28.1",
        "summary": "Catalog, cart, checkout, filter identification and shop-management endpoints for discountfiltershop.com, an online store for genuine OEM refrigerator water and air filters.",
        "description": "Discount Filter Shop (discountfiltershop.com) sells genuine OEM refrigerator water and air filters (Whirlpool everydrop, GE, Samsung, LG, Frigidaire, Bosch, Kenmore, Sub-Zero) with free US shipping and 365-day returns.\n\nThree API surfaces are exposed on this host:\n\n- **Store API** (`/wc/store/v1`, public, no credentials): browse the catalog, build a cart and check out. Cart mutations need the `Cart-Token` returned by `GET /wc/store/v1/cart`.\n- **Shop management API** (`/wc/v3`, WooCommerce REST API): orders, products and customers for integrations. Credentials are WooCommerce API keys issued with a permission scope of `read`, `write` or `read_write` (see the `WooCommerceApiKey` security scheme).\n- **Filter identification** (`/dfs/v1/water-match`): identify the replacement filter from a photo.\n\nEvery HTML page is also available as Markdown (`Accept: text/markdown`, or append `.md`). Site overview for agents: https://discountfiltershop.com/llms.txt. Authentication walkthrough: https://discountfiltershop.com/auth.md. Human documentation: https://discountfiltershop.com/developers/.\n\n## Rate limits\n\nEvery REST response carries the RateLimit-Policy and RateLimit headers of the IETF HTTPAPI draft (draft-ietf-httpapi-ratelimit-headers): clients without credentials get 600 requests per 60-second window per IP address, authenticated clients 1200 per 60-second window per account. Over quota the API answers 429 with Retry-After and the JSON error rest_too_many_requests. Details: https://discountfiltershop.com/developers/#rate-limits\n\n## Versioning and deprecation\n\nEvery API is versioned in its URL path (/wc/store/v1, /wc/v3, /dfs/v1) and a published version never receives breaking changes. When an endpoint is retired, its responses announce it at least six months ahead with the Deprecation (RFC 9745) and Sunset (RFC 8594) headers and a Link rel=\"deprecation\" to the notice. Policy: https://discountfiltershop.com/developers/#versioning",
        "termsOfService": "https://discountfiltershop.com/terms-and-conditions/",
        "contact": {
            "name": "Discount Filter Shop support",
            "url": "https://discountfiltershop.com/developers/",
            "email": "support@discountfiltershop.com"
        },
        "x-llms-txt": "https://discountfiltershop.com/llms.txt",
        "x-auth-md": "https://discountfiltershop.com/auth.md"
    },
    "externalDocs": {
        "description": "Discount Filter Shop developer resources",
        "url": "https://discountfiltershop.com/developers/"
    },
    "servers": [
        {
            "url": "https://discountfiltershop.com/wp-json",
            "description": "Production (WordPress REST API root)"
        }
    ],
    "tags": [
        {
            "name": "Store",
            "description": "Public catalog, cart and checkout (WooCommerce Store API). No credentials."
        },
        {
            "name": "Filter identification",
            "description": "Identify a replacement filter from a photo of the old filter, its box or the model sticker."
        },
        {
            "name": "Shop management",
            "description": "WooCommerce REST API v3. Requires a WooCommerce API key with the matching permission scope."
        },
        {
            "name": "MCP",
            "description": "Model Context Protocol server used by authorized staff to administer the site. OAuth 2.1 with PKCE."
        }
    ],
    "paths": {
        "/wc/store/v1/products": {
            "get": {
                "tags": [
                    "Store"
                ],
                "operationId": "listStoreProducts",
                "summary": "Search the catalog",
                "description": "Lists published products. Search by filter part number, refrigerator model family or brand (for example `EDR1RXD1`, `LT1000P`, `Samsung`). Pagination metadata is returned in the `X-WP-Total` and `X-WP-TotalPages` response headers.",
                "parameters": [
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Free-text search (part number, model family, brand).",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sku",
                        "in": "query",
                        "description": "Exact SKU, or a comma-separated list of SKUs.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "slug",
                        "in": "query",
                        "description": "Product slug (the last path segment of the product URL).",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "category",
                        "in": "query",
                        "description": "Category id or slug, comma-separated for several.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "stock_status",
                        "in": "query",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "enum": [
                                    "instock",
                                    "outofstock",
                                    "onbackorder"
                                ]
                            }
                        },
                        "style": "form",
                        "explode": true
                    },
                    {
                        "name": "orderby",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "date",
                                "modified",
                                "id",
                                "include",
                                "title",
                                "slug",
                                "price",
                                "popularity",
                                "rating",
                                "menu_order",
                                "comment_count"
                            ],
                            "default": "title"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "asc",
                                "desc"
                            ],
                            "default": "desc"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "default": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100,
                            "default": 10
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Matching products.",
                        "headers": {
                            "X-WP-Total": {
                                "description": "Total number of matching products.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-WP-TotalPages": {
                                "description": "Total number of pages.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/StoreProduct"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid parameter.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/wc/store/v1/products/{id}": {
            "get": {
                "tags": [
                    "Store"
                ],
                "operationId": "getStoreProduct",
                "summary": "Get one product",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Product id (integer) or product slug.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The product.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/StoreProduct"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Unknown product.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/wc/store/v1/products/categories": {
            "get": {
                "tags": [
                    "Store"
                ],
                "operationId": "listStoreProductCategories",
                "summary": "List product categories",
                "responses": {
                    "200": {
                        "description": "Categories.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/StoreCategory"
                                    }
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/wc/store/v1/cart": {
            "get": {
                "tags": [
                    "Store"
                ],
                "operationId": "getCart",
                "summary": "Get (or start) a cart",
                "description": "Returns the current cart. The response carries a `Cart-Token` header: send it back as the `Cart-Token` request header on every later cart or checkout call so the server can find the same cart without cookies.",
                "security": [
                    {},
                    {
                        "CartToken": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The cart.",
                        "headers": {
                            "Cart-Token": {
                                "description": "Opaque token (JWT) identifying this cart. Reuse it as the Cart-Token request header.",
                                "schema": {
                                    "type": "string"
                                }
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Cart"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/wc/store/v1/cart/add-item": {
            "post": {
                "tags": [
                    "Store"
                ],
                "operationId": "addCartItem",
                "summary": "Add a product to the cart",
                "security": [
                    {
                        "CartToken": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/AddCartItemRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Updated cart.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Cart"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Product unavailable, out of stock or invalid quantity.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Missing or invalid Cart-Token / Nonce.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/wc/store/v1/cart/items/{key}": {
            "delete": {
                "tags": [
                    "Store"
                ],
                "operationId": "removeCartItem",
                "summary": "Remove a cart line",
                "security": [
                    {
                        "CartToken": []
                    }
                ],
                "parameters": [
                    {
                        "name": "key",
                        "in": "path",
                        "required": true,
                        "description": "The item key from the cart items array.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Updated cart.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Cart"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Unknown cart item key.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/wc/store/v1/checkout": {
            "get": {
                "tags": [
                    "Store"
                ],
                "operationId": "getCheckout",
                "summary": "Checkout state for the current cart",
                "security": [
                    {
                        "CartToken": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Checkout state (order id, addresses, payment methods available).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/CheckoutResponse"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "Store"
                ],
                "operationId": "placeOrder",
                "summary": "Place the order",
                "description": "Submits the cart as an order. Shipping is free on every order and only US addresses are accepted. Card payments are processed by Stripe: pass the Stripe payment data under `payment_data` as documented at https://developer.woocommerce.com/docs/apis/store-api/resources-endpoints/checkout/. The response contains `payment_result.redirect_url` when the gateway needs a browser step.",
                "security": [
                    {
                        "CartToken": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/CheckoutRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Order created; check payment_result.payment_status.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/CheckoutResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Validation error (address, payment method, empty cart).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Missing or invalid Cart-Token.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/dfs/v1/water-match": {
            "post": {
                "tags": [
                    "Filter identification"
                ],
                "operationId": "identifyFilterFromPhoto",
                "summary": "Identify the replacement filter from a photo",
                "description": "Upload a photo of the old filter cartridge, its box or label, or the model sticker inside the refrigerator. Returns the replacement filter model code. Rate limit: 10 requests per hour per IP address.",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/WaterMatchRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Identification result.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/WaterMatchResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Missing or oversized image (code dfs_img).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    },
                    "502": {
                        "description": "Identification service unavailable (code dfs_api or dfs_parse).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/wc/v3/products": {
            "get": {
                "tags": [
                    "Shop management"
                ],
                "operationId": "listProducts",
                "summary": "List products (management view)",
                "security": [
                    {
                        "WooCommerceApiKey": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "search",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sku",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "any",
                                "draft",
                                "pending",
                                "private",
                                "publish"
                            ],
                            "default": "any"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "default": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100,
                            "default": 10
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Products.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Product"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid API key.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Key lacks the read permission.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/wc/v3/orders": {
            "get": {
                "tags": [
                    "Shop management"
                ],
                "operationId": "listOrders",
                "summary": "List orders",
                "security": [
                    {
                        "WooCommerceApiKey": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "enum": [
                                    "any",
                                    "pending",
                                    "processing",
                                    "on-hold",
                                    "completed",
                                    "cancelled",
                                    "refunded",
                                    "failed",
                                    "trash"
                                ]
                            }
                        },
                        "style": "form",
                        "explode": true
                    },
                    {
                        "name": "after",
                        "in": "query",
                        "description": "ISO 8601 date: only orders created after this date.",
                        "schema": {
                            "type": "string",
                            "format": "date-time"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "default": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100,
                            "default": 10
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Orders.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Order"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid API key.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Key lacks the read permission.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            },
            "post": {
                "tags": [
                    "Shop management"
                ],
                "operationId": "createOrder",
                "summary": "Create an order",
                "security": [
                    {
                        "WooCommerceApiKey": [
                            "write"
                        ]
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Order"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Order created.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Order"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid order payload.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid API key.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Key lacks the write permission.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/wc/v3/orders/{id}": {
            "get": {
                "tags": [
                    "Shop management"
                ],
                "operationId": "getOrder",
                "summary": "Get an order",
                "security": [
                    {
                        "WooCommerceApiKey": [
                            "read"
                        ]
                    }
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The order.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Order"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Missing or invalid API key.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Unknown order.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/stifli-flex-mcp/v1/sse": {
            "post": {
                "tags": [
                    "MCP"
                ],
                "operationId": "mcpStreamableHttp",
                "summary": "MCP endpoint (Streamable HTTP)",
                "description": "Model Context Protocol server for administering the site (content, catalog, orders). Reserved for authorized staff accounts: the OAuth 2.1 consent screen requires a WordPress login. Server metadata: https://discountfiltershop.com/.well-known/oauth-protected-resource and https://discountfiltershop.com/.well-known/oauth-authorization-server.",
                "security": [
                    {
                        "FlexMcpOAuth": [
                            "mcp"
                        ]
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/JsonRpcRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "JSON-RPC response (application/json) or event stream (text/event-stream)."
                    },
                    "401": {
                        "description": "Bearer token missing or invalid. The WWW-Authenticate header points at the RFC 9728 resource metadata.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "WooCommerceApiKey": {
                "type": "http",
                "scheme": "basic",
                "description": "WooCommerce REST API key, sent as HTTP Basic credentials over HTTPS: the consumer key is the username and the consumer secret is the password. Each key is issued with exactly one permission scope: `read` (GET only), `write` (POST/PUT/DELETE only) or `read_write`. Ask for the narrowest scope you need; `read` is enough for inventory and order lookups. Keys are issued in WooCommerce > Settings > Advanced > REST API, or through the app authorization flow at https://discountfiltershop.com/wc-auth/v1/authorize?app_name=<app>&scope=read&user_id=<your id>&return_url=<url>&callback_url=<https url> (WooCommerce posts the key to callback_url after the store owner approves). Walkthrough: https://discountfiltershop.com/auth.md.",
                "x-scopes": {
                    "read": "Read products, orders, customers and reports.",
                    "write": "Create and update products, orders and customers.",
                    "read_write": "Both."
                }
            },
            "CartToken": {
                "type": "apiKey",
                "in": "header",
                "name": "Cart-Token",
                "description": "Public cart session token. Obtain it from the Cart-Token response header of GET /wc/store/v1/cart and send it back on cart and checkout requests. It grants access to one anonymous cart only."
            },
            "FlexMcpOAuth": {
                "type": "oauth2",
                "description": "OAuth 2.1 authorization server for the MCP endpoint (PKCE S256 required, client_id metadata documents supported, dynamic client registration available at https://discountfiltershop.com/wp-json/stifli-flex-mcp/v1/oauth/register). Metadata: https://discountfiltershop.com/.well-known/oauth-authorization-server. The single scope `mcp` grants the tools the signed-in WordPress user may use; only staff accounts can complete the consent step.",
                "flows": {
                    "authorizationCode": {
                        "authorizationUrl": "https://discountfiltershop.com/?sflmcp_oauth=authorize",
                        "tokenUrl": "https://discountfiltershop.com/wp-json/stifli-flex-mcp/v1/oauth/token",
                        "refreshUrl": "https://discountfiltershop.com/wp-json/stifli-flex-mcp/v1/oauth/token",
                        "scopes": {
                            "mcp": "Access the Model Context Protocol server as the authorizing WordPress user (site administration)."
                        }
                    }
                }
            }
        },
        "schemas": {
            "Error": {
                "type": "object",
                "description": "Error envelope shared by every JSON response on this host (WordPress REST API convention, plus resolution hints): returned by every API endpoint, and by 404 and 406 responses of HTML URLs when the request carries Accept: application/json or targets an /api path.",
                "required": [
                    "code",
                    "message"
                ],
                "properties": {
                    "code": {
                        "type": "string",
                        "description": "Machine-readable error code, e.g. woocommerce_rest_product_invalid_id, rest_no_route, dfs_rate."
                    },
                    "message": {
                        "type": "string",
                        "description": "Human-readable explanation."
                    },
                    "data": {
                        "type": "object",
                        "properties": {
                            "status": {
                                "type": "integer",
                                "description": "HTTP status code, repeated in the body."
                            }
                        },
                        "additionalProperties": true
                    },
                    "hint": {
                        "type": "string",
                        "description": "How to recover: the endpoint, header or document to use instead."
                    },
                    "docs": {
                        "type": "string",
                        "format": "uri",
                        "description": "URL of this OpenAPI document."
                    },
                    "links": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string",
                            "format": "uri"
                        },
                        "description": "Related resources (store_api, api_catalog, llms, home), on 404 and 406 envelopes."
                    }
                },
                "examples": [
                    {
                        "code": "rest_no_route",
                        "message": "No route was found matching the URL and request method.",
                        "data": {
                            "status": 404
                        },
                        "hint": "No endpoint at /dfs/v1/nope. The route index is https://discountfiltershop.com/wp-json/, the documented endpoints are in https://discountfiltershop.com/openapi.json, and the public catalog is https://discountfiltershop.com/wp-json/wc/store/v1/products.",
                        "docs": "https://discountfiltershop.com/openapi.json"
                    },
                    {
                        "code": "not_found",
                        "message": "Discount Filter Shop has no resource at /api/v1/items.",
                        "data": {
                            "status": 404,
                            "path": "/api/v1/items"
                        },
                        "hint": "This host has no /api prefix: the JSON catalog is the Store API at https://discountfiltershop.com/wp-json/wc/store/v1/products (no key needed), every API is listed in https://discountfiltershop.com/.well-known/api-catalog, and any HTML page can be read as Markdown with Accept: text/markdown.",
                        "docs": "https://discountfiltershop.com/openapi.json"
                    }
                ]
            },
            "StorePrices": {
                "type": "object",
                "properties": {
                    "price": {
                        "type": "string",
                        "description": "Amount in minor units (cents) as a string, e.g. \"4699\" for $46.99. Use currency_minor_unit to place the decimal point.",
                        "examples": [
                            "4699"
                        ]
                    },
                    "regular_price": {
                        "type": "string",
                        "description": "Amount in minor units (cents) as a string, e.g. \"4699\" for $46.99. Use currency_minor_unit to place the decimal point.",
                        "examples": [
                            "4699"
                        ]
                    },
                    "sale_price": {
                        "type": "string",
                        "description": "Amount in minor units (cents) as a string, e.g. \"4699\" for $46.99. Use currency_minor_unit to place the decimal point.",
                        "examples": [
                            "4699"
                        ]
                    },
                    "currency_code": {
                        "type": "string",
                        "examples": [
                            "USD"
                        ]
                    },
                    "currency_symbol": {
                        "type": "string",
                        "examples": [
                            "$"
                        ]
                    },
                    "currency_minor_unit": {
                        "type": "integer",
                        "examples": [
                            2
                        ]
                    },
                    "currency_decimal_separator": {
                        "type": "string"
                    },
                    "currency_thousand_separator": {
                        "type": "string"
                    },
                    "currency_prefix": {
                        "type": "string"
                    },
                    "currency_suffix": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "StoreImage": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "src": {
                        "type": "string",
                        "format": "uri"
                    },
                    "thumbnail": {
                        "type": "string",
                        "format": "uri"
                    },
                    "alt": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "StoreCategory": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "parent": {
                        "type": "integer"
                    },
                    "count": {
                        "type": "integer"
                    },
                    "link": {
                        "type": "string",
                        "format": "uri"
                    }
                },
                "additionalProperties": true
            },
            "StoreProduct": {
                "type": "object",
                "required": [
                    "id",
                    "name",
                    "permalink",
                    "prices",
                    "is_purchasable",
                    "is_in_stock"
                ],
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string",
                        "examples": [
                            "Whirlpool everydrop EDR1RXD1 Genuine Refrigerator Water Filter (Filter 1)"
                        ]
                    },
                    "slug": {
                        "type": "string"
                    },
                    "permalink": {
                        "type": "string",
                        "format": "uri"
                    },
                    "sku": {
                        "type": "string"
                    },
                    "short_description": {
                        "type": "string",
                        "description": "HTML."
                    },
                    "description": {
                        "type": "string",
                        "description": "HTML. Lists the part numbers the filter replaces."
                    },
                    "on_sale": {
                        "type": "boolean"
                    },
                    "prices": {
                        "$ref": "#/components/schemas/StorePrices"
                    },
                    "images": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/StoreImage"
                        }
                    },
                    "categories": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/StoreCategory"
                        }
                    },
                    "is_purchasable": {
                        "type": "boolean"
                    },
                    "is_in_stock": {
                        "type": "boolean"
                    },
                    "is_on_backorder": {
                        "type": "boolean"
                    },
                    "sold_individually": {
                        "type": "boolean"
                    },
                    "add_to_cart": {
                        "type": "object",
                        "properties": {
                            "text": {
                                "type": "string"
                            },
                            "url": {
                                "type": "string"
                            },
                            "minimum": {
                                "type": "integer"
                            },
                            "maximum": {
                                "type": "integer"
                            }
                        },
                        "additionalProperties": true
                    }
                },
                "additionalProperties": true
            },
            "CartItem": {
                "type": "object",
                "properties": {
                    "key": {
                        "type": "string"
                    },
                    "id": {
                        "type": "integer",
                        "description": "Product id."
                    },
                    "quantity": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "sku": {
                        "type": "string"
                    },
                    "permalink": {
                        "type": "string",
                        "format": "uri"
                    },
                    "prices": {
                        "$ref": "#/components/schemas/StorePrices"
                    },
                    "totals": {
                        "type": "object",
                        "additionalProperties": true
                    }
                },
                "additionalProperties": true
            },
            "Cart": {
                "type": "object",
                "properties": {
                    "items": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/CartItem"
                        }
                    },
                    "items_count": {
                        "type": "integer"
                    },
                    "needs_payment": {
                        "type": "boolean"
                    },
                    "needs_shipping": {
                        "type": "boolean"
                    },
                    "totals": {
                        "type": "object",
                        "description": "Amounts in minor units as strings (total_items, total_shipping, total_tax, total_price, ...).",
                        "additionalProperties": true
                    },
                    "shipping_rates": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "billing_address": {
                        "$ref": "#/components/schemas/Address"
                    },
                    "shipping_address": {
                        "$ref": "#/components/schemas/Address"
                    },
                    "errors": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                },
                "additionalProperties": true
            },
            "AddCartItemRequest": {
                "type": "object",
                "required": [
                    "id",
                    "quantity"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "Product id from the Store API."
                    },
                    "quantity": {
                        "type": "integer",
                        "minimum": 1
                    },
                    "variation": {
                        "type": "array",
                        "description": "For variable products only.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "attribute": {
                                    "type": "string"
                                },
                                "value": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            },
            "Address": {
                "type": "object",
                "properties": {
                    "first_name": {
                        "type": "string"
                    },
                    "last_name": {
                        "type": "string"
                    },
                    "company": {
                        "type": "string"
                    },
                    "address_1": {
                        "type": "string"
                    },
                    "address_2": {
                        "type": "string"
                    },
                    "city": {
                        "type": "string"
                    },
                    "state": {
                        "type": "string",
                        "description": "Two-letter US state code."
                    },
                    "postcode": {
                        "type": "string"
                    },
                    "country": {
                        "type": "string",
                        "description": "ISO 3166-1 alpha-2. Only US is shipped to.",
                        "examples": [
                            "US"
                        ]
                    },
                    "email": {
                        "type": "string",
                        "format": "email"
                    },
                    "phone": {
                        "type": "string"
                    }
                },
                "additionalProperties": true
            },
            "CheckoutRequest": {
                "type": "object",
                "required": [
                    "billing_address",
                    "payment_method"
                ],
                "properties": {
                    "billing_address": {
                        "$ref": "#/components/schemas/Address"
                    },
                    "shipping_address": {
                        "$ref": "#/components/schemas/Address"
                    },
                    "customer_note": {
                        "type": "string"
                    },
                    "payment_method": {
                        "type": "string",
                        "description": "Gateway id from GET /wc/store/v1/checkout payment_methods (for example stripe)."
                    },
                    "payment_data": {
                        "type": "array",
                        "description": "Gateway-specific key/value pairs.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "key": {
                                    "type": "string"
                                },
                                "value": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                },
                "additionalProperties": true
            },
            "CheckoutResponse": {
                "type": "object",
                "properties": {
                    "order_id": {
                        "type": "integer"
                    },
                    "status": {
                        "type": "string"
                    },
                    "order_key": {
                        "type": "string"
                    },
                    "customer_id": {
                        "type": "integer"
                    },
                    "billing_address": {
                        "$ref": "#/components/schemas/Address"
                    },
                    "shipping_address": {
                        "$ref": "#/components/schemas/Address"
                    },
                    "payment_method": {
                        "type": "string"
                    },
                    "payment_result": {
                        "type": "object",
                        "properties": {
                            "payment_status": {
                                "type": "string",
                                "enum": [
                                    "success",
                                    "failure",
                                    "pending",
                                    "error"
                                ]
                            },
                            "payment_details": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "additionalProperties": true
                                }
                            },
                            "redirect_url": {
                                "type": "string"
                            }
                        },
                        "additionalProperties": true
                    }
                },
                "additionalProperties": true
            },
            "WaterMatchRequest": {
                "type": "object",
                "required": [
                    "image"
                ],
                "properties": {
                    "image": {
                        "type": "string",
                        "contentEncoding": "base64",
                        "description": "Base64 photo, about 5 MB maximum."
                    },
                    "media_type": {
                        "type": "string",
                        "enum": [
                            "image/jpeg",
                            "image/png",
                            "image/webp",
                            "image/gif"
                        ],
                        "default": "image/jpeg"
                    }
                }
            },
            "WaterMatchResponse": {
                "type": "object",
                "properties": {
                    "model_code": {
                        "type": "string",
                        "description": "Replacement filter model, or UNKNOWN.",
                        "examples": [
                            "EDR1RXD1"
                        ]
                    },
                    "brand": {
                        "type": "string"
                    },
                    "confidence": {
                        "type": "string",
                        "enum": [
                            "high",
                            "medium",
                            "low"
                        ]
                    },
                    "seen": {
                        "type": "string",
                        "description": "One sentence describing what was recognised."
                    },
                    "rfid_required": {
                        "type": "boolean",
                        "description": "True for chip-authenticated filters (GE XWFE, RPWFE): only the genuine part works."
                    },
                    "additional_models": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "additionalProperties": true
            },
            "Product": {
                "type": "object",
                "description": "WooCommerce REST API v3 product. Full schema: https://woocommerce.github.io/woocommerce-rest-api-docs/#products",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "permalink": {
                        "type": "string",
                        "format": "uri"
                    },
                    "sku": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    },
                    "price": {
                        "type": "string",
                        "description": "Decimal string, e.g. \"46.99\"."
                    },
                    "regular_price": {
                        "type": "string"
                    },
                    "stock_status": {
                        "type": "string",
                        "enum": [
                            "instock",
                            "outofstock",
                            "onbackorder"
                        ]
                    },
                    "stock_quantity": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    }
                },
                "additionalProperties": true
            },
            "Order": {
                "type": "object",
                "description": "WooCommerce REST API v3 order. Full schema: https://woocommerce.github.io/woocommerce-rest-api-docs/#orders",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "status": {
                        "type": "string"
                    },
                    "currency": {
                        "type": "string"
                    },
                    "total": {
                        "type": "string",
                        "readOnly": true
                    },
                    "date_created": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "billing": {
                        "$ref": "#/components/schemas/Address"
                    },
                    "shipping": {
                        "$ref": "#/components/schemas/Address"
                    },
                    "payment_method": {
                        "type": "string"
                    },
                    "set_paid": {
                        "type": "boolean",
                        "writeOnly": true
                    },
                    "line_items": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "product_id": {
                                    "type": "integer"
                                },
                                "quantity": {
                                    "type": "integer"
                                },
                                "name": {
                                    "type": "string",
                                    "readOnly": true
                                },
                                "total": {
                                    "type": "string",
                                    "readOnly": true
                                }
                            },
                            "additionalProperties": true
                        }
                    }
                },
                "additionalProperties": true
            },
            "JsonRpcRequest": {
                "type": "object",
                "required": [
                    "jsonrpc",
                    "method"
                ],
                "properties": {
                    "jsonrpc": {
                        "type": "string",
                        "const": "2.0"
                    },
                    "id": {
                        "type": [
                            "string",
                            "integer",
                            "null"
                        ]
                    },
                    "method": {
                        "type": "string",
                        "examples": [
                            "initialize",
                            "tools/list",
                            "tools/call"
                        ]
                    },
                    "params": {
                        "type": "object",
                        "additionalProperties": true
                    }
                }
            }
        },
        "headers": {
            "RateLimit-Policy": {
                "description": "Quota policy applying to this client (draft-ietf-httpapi-ratelimit-headers): \"anonymous\";q=600;w=60 means 600 requests per 60-second window.",
                "schema": {
                    "type": "string"
                },
                "example": "\"anonymous\";q=600;w=60"
            },
            "RateLimit": {
                "description": "Requests remaining in the current window (r) and seconds until it resets (t).",
                "schema": {
                    "type": "string"
                },
                "example": "\"anonymous\";r=599;t=42"
            },
            "Retry-After": {
                "description": "Seconds to wait before retrying; sent with 429 responses.",
                "schema": {
                    "type": "integer"
                },
                "example": 42
            },
            "Deprecation": {
                "description": "RFC 9745: the endpoint is, or will be, deprecated at this date (structured-field Date).",
                "schema": {
                    "type": "string"
                },
                "example": "@1767225600"
            },
            "Sunset": {
                "description": "RFC 8594: date after which the endpoint may stop responding.",
                "schema": {
                    "type": "string"
                },
                "example": "Thu, 01 Jul 2027 00:00:00 GMT"
            }
        },
        "responses": {
            "TooManyRequests": {
                "description": "The client used up its quota (see RateLimit-Policy). Wait Retry-After seconds, then resume at a slower pace.",
                "headers": {
                    "Retry-After": {
                        "$ref": "#/components/headers/Retry-After"
                    },
                    "RateLimit": {
                        "$ref": "#/components/headers/RateLimit"
                    },
                    "RateLimit-Policy": {
                        "$ref": "#/components/headers/RateLimit-Policy"
                    }
                },
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        },
                        "example": {
                            "code": "rest_too_many_requests",
                            "message": "Too many requests: the quota of 600 requests per 60 seconds for anonymous clients is used up. Retry in 42 seconds.",
                            "data": {
                                "status": 429,
                                "retry_after": 42,
                                "policy": "anonymous",
                                "quota": "600",
                                "window": "60"
                            },
                            "hint": "Wait the number of seconds given by Retry-After, then resume at a slower pace: the RateLimit header tells how many requests remain in the window. Policy: https://discountfiltershop.com/developers/#rate-limits.",
                            "docs": "https://discountfiltershop.com/openapi.json"
                        }
                    }
                }
            }
        }
    },
    "security": [
        {}
    ]
}
