{
    "openapi": "3.0.3",
    "info": {
        "title": "WindCodex \u2014 Public Read API",
        "description": "Read-only, unauthenticated endpoints already served by this WordPress + WooCommerce site. No API key, account, or rate-limit quota is issued by this API itself \u2014 requests are subject only to standard web-server/CDN-level rate limiting, not an application-level budget documented here. `required` fields on each schema apply to the default, unfiltered response; a request using WP's `_fields` query parameter returns only the requested subset and may omit them. Full upstream schemas: https://developer.wordpress.org/rest-api/reference/ and https://github.com/woocommerce/woocommerce/wiki/Store-API",
        "version": "1.0.0"
    },
    "servers": [
        {
            "url": "https://windcodex.com/wp-json"
        }
    ],
    "tags": [
        {
            "name": "Content",
            "description": "WordPress core content (blog posts, pages, categories)."
        },
        {
            "name": "Catalog",
            "description": "WooCommerce Store API \u2014 public product catalog."
        }
    ],
    "paths": {
        "/wp/v2/posts": {
            "get": {
                "tags": [
                    "Content"
                ],
                "summary": "List published blog posts.",
                "description": "Returns published blog posts, newest first, optionally filtered by a free-text search query.",
                "operationId": "listPosts",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100
                        },
                        "description": "Items per page (max 100)."
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Free-text search against title/content."
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of post objects.",
                        "headers": {
                            "X-WP-Total": {
                                "description": "Total number of items across all pages.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-WP-TotalPages": {
                                "description": "Total number of pages at the requested per_page size.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PostList"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Structured JSON error (WordPress REST API standard error shape) \u2014 invalid query parameter.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/wp/v2/posts/{id}": {
            "get": {
                "tags": [
                    "Content"
                ],
                "summary": "Get a single blog post.",
                "description": "Returns one published post by its numeric ID.",
                "operationId": "getPost",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Numeric ID of the item to fetch.",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Post object.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Post"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Structured JSON error (WordPress REST API standard error shape) \u2014 no post exists with that ID.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/wp/v2/pages": {
            "get": {
                "tags": [
                    "Content"
                ],
                "summary": "List site pages.",
                "description": "Returns published, non-post pages (About, Contact, etc.), optionally filtered by a free-text search query.",
                "operationId": "listPages",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100
                        },
                        "description": "Items per page (max 100)."
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Free-text search against title/content."
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of page objects.",
                        "headers": {
                            "X-WP-Total": {
                                "description": "Total number of items across all pages.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-WP-TotalPages": {
                                "description": "Total number of pages at the requested per_page size.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PageList"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Structured JSON error (WordPress REST API standard error shape) \u2014 invalid query parameter.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/wp/v2/categories": {
            "get": {
                "tags": [
                    "Content"
                ],
                "summary": "List blog categories.",
                "description": "Returns all blog post categories, including their post counts.",
                "operationId": "listCategories",
                "responses": {
                    "200": {
                        "description": "Array of category objects.",
                        "headers": {
                            "X-WP-Total": {
                                "description": "Total number of items across all pages.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-WP-TotalPages": {
                                "description": "Total number of pages at the requested per_page size.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/CategoryList"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/wc/store/v1/products": {
            "get": {
                "tags": [
                    "Catalog"
                ],
                "summary": "List published products.",
                "description": "Returns the public product catalog (no API key required) \u2014 the same endpoint the storefront cart/checkout blocks call. Optionally filtered by a free-text search query.",
                "operationId": "listProducts",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100
                        },
                        "description": "Items per page (max 100)."
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Free-text search against title/content."
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of product objects.",
                        "headers": {
                            "X-WP-Total": {
                                "description": "Total number of items across all pages.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-WP-TotalPages": {
                                "description": "Total number of pages at the requested per_page size.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ProductList"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Structured JSON error (WordPress REST API standard error shape) \u2014 invalid query parameter.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/wc/store/v1/products/{id}": {
            "get": {
                "tags": [
                    "Catalog"
                ],
                "summary": "Get a single product.",
                "description": "Returns one product by its numeric ID, including pricing and stock status.",
                "operationId": "getProduct",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Numeric ID of the item to fetch.",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Product object.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Product"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Structured JSON error (WordPress REST API standard error shape) \u2014 no product exists with that ID.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/wc/store/v1/products/categories": {
            "get": {
                "tags": [
                    "Catalog"
                ],
                "summary": "List product categories.",
                "description": "Returns all WooCommerce product categories, including their product counts.",
                "operationId": "listProductCategories",
                "responses": {
                    "200": {
                        "description": "Array of product category objects.",
                        "headers": {
                            "X-WP-Total": {
                                "description": "Total number of items across all pages.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-WP-TotalPages": {
                                "description": "Total number of pages at the requested per_page size.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ProductCategoryList"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "Error": {
                "type": "object",
                "properties": {
                    "code": {
                        "type": "string",
                        "description": "Machine-readable error code.",
                        "example": "rest_post_invalid_id"
                    },
                    "message": {
                        "type": "string",
                        "description": "Human-readable error message."
                    },
                    "data": {
                        "type": "object",
                        "properties": {
                            "status": {
                                "type": "integer",
                                "description": "HTTP status code, repeated in the body.",
                                "example": 404
                            }
                        }
                    }
                }
            },
            "RenderedText": {
                "type": "object",
                "description": "WordPress's standard { rendered } wrapper used for title/content/excerpt fields.",
                "properties": {
                    "rendered": {
                        "type": "string"
                    }
                }
            },
            "Post": {
                "type": "object",
                "description": "Core fields of a WP core post object. Full schema: https://developer.wordpress.org/rest-api/reference/posts/",
                "required": [
                    "id",
                    "slug",
                    "status",
                    "type",
                    "link",
                    "title",
                    "content"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "example": 2141
                    },
                    "date": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "modified": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "slug": {
                        "type": "string",
                        "example": "ai-woocommerce-2026"
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "publish"
                        ]
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "post"
                        ]
                    },
                    "link": {
                        "type": "string",
                        "format": "uri"
                    },
                    "title": {
                        "$ref": "#/components/schemas/RenderedText"
                    },
                    "content": {
                        "type": "object",
                        "description": "rendered is the post body as HTML.",
                        "properties": {
                            "rendered": {
                                "type": "string"
                            }
                        }
                    },
                    "excerpt": {
                        "$ref": "#/components/schemas/RenderedText"
                    }
                }
            },
            "Page": {
                "type": "object",
                "description": "Core fields of a WP core page object. Full schema: https://developer.wordpress.org/rest-api/reference/pages/",
                "required": [
                    "id",
                    "slug",
                    "status",
                    "type",
                    "link",
                    "title",
                    "content"
                ],
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "date": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "modified": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "slug": {
                        "type": "string",
                        "example": "terms-conditions"
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "publish"
                        ]
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "page"
                        ]
                    },
                    "link": {
                        "type": "string",
                        "format": "uri"
                    },
                    "title": {
                        "$ref": "#/components/schemas/RenderedText"
                    },
                    "content": {
                        "type": "object",
                        "description": "rendered is the page body as HTML.",
                        "properties": {
                            "rendered": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "Category": {
                "type": "object",
                "description": "Full schema: https://developer.wordpress.org/rest-api/reference/categories/",
                "required": [
                    "id",
                    "name",
                    "slug",
                    "taxonomy",
                    "link"
                ],
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "count": {
                        "type": "integer",
                        "description": "Number of published posts in this category."
                    },
                    "description": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "taxonomy": {
                        "type": "string",
                        "enum": [
                            "category"
                        ]
                    },
                    "link": {
                        "type": "string",
                        "format": "uri"
                    },
                    "parent": {
                        "type": "integer",
                        "description": "0 if top-level."
                    }
                }
            },
            "Money": {
                "type": "object",
                "description": "WooCommerce Store API prices are minor-unit integer strings (e.g. \"9900\" = $99.00 when currency_minor_unit is 2), not floats.",
                "properties": {
                    "price": {
                        "type": "string",
                        "example": "9900"
                    },
                    "regular_price": {
                        "type": "string",
                        "example": "9900"
                    },
                    "sale_price": {
                        "type": "string",
                        "example": ""
                    },
                    "currency_code": {
                        "type": "string",
                        "example": "USD"
                    },
                    "currency_symbol": {
                        "type": "string",
                        "example": "$"
                    },
                    "currency_minor_unit": {
                        "type": "integer",
                        "example": 2
                    }
                }
            },
            "ProductImage": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "src": {
                        "type": "string",
                        "format": "uri"
                    },
                    "alt": {
                        "type": "string"
                    }
                }
            },
            "Product": {
                "type": "object",
                "description": "Core fields of a WooCommerce Store API product. Full schema: https://github.com/woocommerce/woocommerce/wiki/Store-API",
                "required": [
                    "id",
                    "name",
                    "slug",
                    "permalink",
                    "prices",
                    "is_in_stock",
                    "is_purchasable"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "example": 2116
                    },
                    "name": {
                        "type": "string",
                        "example": "ShopFeed"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "permalink": {
                        "type": "string",
                        "format": "uri"
                    },
                    "sku": {
                        "type": "string"
                    },
                    "description": {
                        "type": "string",
                        "description": "HTML."
                    },
                    "short_description": {
                        "type": "string",
                        "description": "HTML."
                    },
                    "prices": {
                        "$ref": "#/components/schemas/Money"
                    },
                    "is_in_stock": {
                        "type": "boolean"
                    },
                    "is_purchasable": {
                        "type": "boolean"
                    },
                    "average_rating": {
                        "type": "string",
                        "example": "4.50"
                    },
                    "images": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ProductImage"
                        }
                    }
                }
            },
            "ProductCategory": {
                "type": "object",
                "description": "Full schema: https://github.com/woocommerce/woocommerce/wiki/Store-API",
                "required": [
                    "id",
                    "name",
                    "slug",
                    "permalink"
                ],
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string",
                        "example": "WooCommerce"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "description": {
                        "type": "string"
                    },
                    "parent": {
                        "type": "integer"
                    },
                    "count": {
                        "type": "integer"
                    },
                    "permalink": {
                        "type": "string",
                        "format": "uri"
                    }
                }
            },
            "PostList": {
                "type": "array",
                "description": "Array of post objects, as returned by GET /wp/v2/posts.",
                "items": {
                    "$ref": "#/components/schemas/Post"
                }
            },
            "PageList": {
                "type": "array",
                "description": "Array of page objects, as returned by GET /wp/v2/pages.",
                "items": {
                    "$ref": "#/components/schemas/Page"
                }
            },
            "CategoryList": {
                "type": "array",
                "description": "Array of category objects, as returned by GET /wp/v2/categories.",
                "items": {
                    "$ref": "#/components/schemas/Category"
                }
            },
            "ProductList": {
                "type": "array",
                "description": "Array of product objects, as returned by GET /wc/store/v1/products.",
                "items": {
                    "$ref": "#/components/schemas/Product"
                }
            },
            "ProductCategoryList": {
                "type": "array",
                "description": "Array of product category objects, as returned by GET /wc/store/v1/products/categories.",
                "items": {
                    "$ref": "#/components/schemas/ProductCategory"
                }
            }
        }
    }
}