{
  "openapi": "3.1.0",
  "info": {
    "title": "Creative DTC read-only catalog",
    "version": "4.1.0",
    "description": "Public static editorial data. No auth or pagination. Query parameters are ignored: filter locally. Unknown price and stock are not offers. HTTP error, cache and CORS behavior describes the bundled Node server; verify these on other hosts."
  },
  "servers": [
    {
      "url": "/",
      "description": "Resolve against the origin serving this document"
    }
  ],
  "paths": {
    "/api/products.json": {
      "get": {
        "operationId": "listProducts",
        "summary": "Complete catalog",
        "security": [],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Complete catalog",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catalog"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged. Empty body; reuse your cached representation.",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Unsupported method",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Server read failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{slug}.json": {
      "get": {
        "operationId": "getProduct",
        "summary": "One product",
        "security": [],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9-]+$"
            },
            "example": "memobottle"
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "One product",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged. Empty body; reuse your cached representation.",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Unsupported method",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Server read failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/products/{slug}.md": {
      "get": {
        "operationId": "getProductMarkdown",
        "summary": "One product as Markdown",
        "security": [],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9-]+$"
            },
            "example": "memobottle"
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "One product as Markdown",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged. Empty body; reuse your cached representation.",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Unsupported method",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Server read failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/tags.json": {
      "get": {
        "operationId": "listTags",
        "summary": "Editorial design lenses",
        "security": [],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Editorial design lenses",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tags"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged. Empty body; reuse your cached representation.",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Unsupported method",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Server read failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/articles.json": {
      "get": {
        "operationId": "listArticles",
        "summary": "Editorial article manifest",
        "security": [],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Editorial article manifest",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "version",
                    "kind",
                    "count",
                    "articles"
                  ],
                  "properties": {
                    "version": {
                      "type": "string"
                    },
                    "kind": {
                      "const": "editorial_design_analysis"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "articles": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "slug",
                          "title",
                          "description",
                          "date",
                          "url",
                          "markdown",
                          "diagram",
                          "products"
                        ],
                        "properties": {
                          "slug": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "date": {
                            "type": "string",
                            "format": "date"
                          },
                          "url": {
                            "type": "string"
                          },
                          "markdown": {
                            "type": "string"
                          },
                          "diagram": {
                            "type": "string"
                          },
                          "products": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "304": {
            "description": "Unchanged. Empty body; reuse your cached representation.",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Unsupported method",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Server read failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/categories.json": {
      "get": {
        "operationId": "listCategories",
        "summary": "Category IDs and counts",
        "security": [],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Category IDs and counts",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Categories"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged. Empty body; reuse your cached representation.",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Unsupported method",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Server read failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/catalog.schema.json": {
      "get": {
        "operationId": "getCatalogSchema",
        "summary": "JSON Schema 2020-12",
        "security": [],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "JSON Schema 2020-12",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged. Empty body; reuse your cached representation.",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Unsupported method",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Server read failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/agent-guide.md": {
      "get": {
        "operationId": "getAgentGuide",
        "summary": "Agent guide",
        "security": [],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Agent guide",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged. Empty body; reuse your cached representation.",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Unsupported method",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Server read failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "operationId": "getOrientation",
        "summary": "Machine orientation",
        "security": [],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Machine orientation",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged. Empty body; reuse your cached representation.",
            "headers": {
              "ETag": {
                "description": "Opaque validator; resend verbatim in If-None-Match.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown resource",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Unsupported method",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Server read failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/content-index.json": {
      "get": {
        "operationId": "listContent",
        "summary": "Every public document and its Markdown alternative",
        "security": [],
        "responses": {
          "200": {
            "description": "Every public document and its Markdown alternative",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "version",
                    "count",
                    "pages"
                  ],
                  "properties": {
                    "version": {
                      "type": "string"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "pages": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "title",
                          "summary",
                          "url",
                          "markdown",
                          "kind"
                        ],
                        "properties": {
                          "title": {
                            "type": "string"
                          },
                          "summary": {
                            "type": "string"
                          },
                          "url": {
                            "type": "string"
                          },
                          "markdown": {
                            "type": "string"
                          },
                          "kind": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/guides.json": {
      "get": {
        "operationId": "listGuides",
        "summary": "Curated guides and comparisons",
        "security": [],
        "responses": {
          "200": {
            "description": "Curated guides and comparisons",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "version",
                    "count",
                    "items"
                  ],
                  "properties": {
                    "version": {
                      "type": "string"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "slug",
                          "title",
                          "products",
                          "html",
                          "markdown"
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/client.mjs": {
      "get": {
        "operationId": "getDiscoveryClient",
        "summary": "Read-only JavaScript client",
        "security": [],
        "responses": {
          "200": {
            "description": "Read-only JavaScript client",
            "content": {
              "text/javascript": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/llms-full.txt": {
      "get": {
        "operationId": "getFullText",
        "summary": "Complete plain-text public content",
        "security": [],
        "responses": {
          "200": {
            "description": "Complete plain-text public content",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/brands.json": {
      "get": {
        "operationId": "listBrands",
        "summary": "Brand research directory with evidence levels",
        "security": [],
        "responses": {
          "200": {
            "description": "Brand research directory with evidence levels",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "version",
                    "count",
                    "revision",
                    "brands"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "brands": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "slug",
                          "name",
                          "evidence",
                          "ranking",
                          "dtc_native"
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/creativity-methodology.json": {
      "get": {
        "operationId": "getCreativityMethodology",
        "summary": "Creativity criteria and provisional review policy",
        "security": [],
        "responses": {
          "200": {
            "description": "Creativity criteria and provisional review policy",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "version",
                    "status",
                    "dimensions",
                    "eligibility"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/rankings.json": {
      "get": {
        "operationId": "getCreativeRankings",
        "summary": "Provisional creative scores with source-linked rationales",
        "security": [],
        "responses": {
          "200": {
            "description": "Provisional creative scores with source-linked rationales",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "scope",
                    "entries",
                    "methodology_version"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/creative-selection.json": {
      "get": {
        "operationId": "getCreativeSelection",
        "summary": "Current source-backed creative selection and selection methodology",
        "security": [],
        "responses": {
          "200": {
            "description": "Current source-backed creative selection and selection methodology",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "version",
                    "methodology",
                    "cases"
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Catalog": {
        "title": "Creative DTC editorial catalog",
        "type": "object",
        "required": [
          "version",
          "revision",
          "count",
          "freshness",
          "products"
        ],
        "properties": {
          "version": {
            "const": "4.1.0"
          },
          "revision": {
            "type": "string",
            "pattern": "^[0-9a-f]{16}$"
          },
          "count": {
            "type": "integer",
            "minimum": 1
          },
          "freshness": {
            "type": "object",
            "required": [
              "kind",
              "catalog_date",
              "update_schedule",
              "live_inventory"
            ],
            "properties": {
              "kind": {
                "const": "editorial_snapshot"
              },
              "catalog_date": {
                "type": "string",
                "format": "date"
              },
              "update_schedule": {
                "const": "manual"
              },
              "live_inventory": {
                "const": false
              }
            }
          },
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Product"
            }
          },
          "verified_on": {
            "type": "string",
            "format": "date",
            "description": "Legacy snapshot date, not independent verification of every claim. Use per-source checked_at."
          }
        }
      },
      "Product": {
        "type": "object",
        "required": [
          "id",
          "slug",
          "name",
          "brand",
          "category",
          "form",
          "tldr",
          "tags",
          "availability",
          "price",
          "catalog_date",
          "sources",
          "unknown_fields",
          "url",
          "credit_page",
          "hook",
          "img",
          "claim_status"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1
          },
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$"
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "brand": {
            "type": "string",
            "minLength": 1
          },
          "category": {
            "type": "string"
          },
          "form": {
            "type": "string"
          },
          "tldr": {
            "type": "array",
            "minItems": 3,
            "maxItems": 3,
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "enum": [
                "solid",
                "refill",
                "reuse",
                "compact",
                "concentrate",
                "screen-free",
                "transform",
                "material"
              ]
            }
          },
          "availability": {
            "const": "unknown"
          },
          "price": {
            "type": "null"
          },
          "catalog_date": {
            "type": "string",
            "format": "date"
          },
          "sources": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "object",
              "required": [
                "url",
                "kind",
                "checked_at"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "kind": {
                  "type": "string"
                },
                "checked_at": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          },
          "unknown_fields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "credit_page": {
            "type": "string",
            "format": "uri"
          },
          "img_src_url": {
            "type": "string",
            "format": "uri"
          },
          "hook": {
            "type": "string",
            "minLength": 1
          },
          "why": {
            "type": "string",
            "minLength": 1
          },
          "gap": {
            "type": "string",
            "minLength": 1
          },
          "img": {
            "type": "string",
            "minLength": 1
          },
          "claim_status": {
            "const": "editorial_summary"
          },
          "editor_rank": {
            "type": "integer",
            "minimum": 1
          }
        }
      },
      "Tags": {
        "type": "object",
        "required": [
          "version",
          "kind",
          "semantics",
          "tags"
        ],
        "properties": {
          "version": {
            "type": "string"
          },
          "kind": {
            "const": "editorial_design_lenses"
          },
          "semantics": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "label",
                "short",
                "description",
                "count"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "short": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "count": {
                  "type": "integer",
                  "minimum": 0
                }
              }
            }
          }
        }
      },
      "Categories": {
        "type": "object",
        "required": [
          "version",
          "categories"
        ],
        "properties": {
          "version": {
            "type": "string"
          },
          "categories": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "label",
                "color",
                "count"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "color": {
                  "type": "string"
                },
                "count": {
                  "type": "integer",
                  "minimum": 0
                }
              }
            }
          }
        }
      },
      "Error": {
        "type": "object",
        "required": [
          "error",
          "catalog"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "enum": [
                  "not_found",
                  "bad_request",
                  "method_not_allowed",
                  "internal_error"
                ]
              },
              "message": {
                "type": "string"
              }
            }
          },
          "catalog": {
            "const": "/api/products.json"
          }
        }
      }
    }
  }
}
