{
  "openapi": "3.1.1",
  "info": {
    "title": "Pagemage public kit discovery",
    "version": "1.0.0",
    "description": "Read-only public individual-kit metadata and server-reported prices. No purchase or payment actions are described. Catalog prices are reference-only; final product-page and checkout verification remain authoritative."
  },
  "servers": [
    {
      "url": "https://www.pagemage.tech"
    }
  ],
  "security": [],
  "paths": {
    "/offers.json": {
      "get": {
        "operationId": "getIndividualKitCatalog",
        "summary": "Discover individual digital kits",
        "description": "Public task, audience, worksheet titles, editions, formats, preview links, and unverified reference prices. Static availability is unknown.",
        "responses": {
          "200": {
            "description": "Deterministic public kit catalog.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShoppingCatalog"
                }
              }
            }
          }
        }
      }
    },
    "/api/products": {
      "get": {
        "operationId": "getServerReportedPrices",
        "summary": "Read configured offer prices",
        "description": "Mixed offer types, including kits, licenses, packs, and subscriptions. Match exactly one tier to an id in offers.json. Require live mode, configured true, no pricingUnavailable/deliveryUnavailable flag, positive safe-integer USD minor units, recurring false, and interval null for an individual kit. Eligible active configured price lookups may be cached for up to five minutes. No purchase is reserved.",
        "responses": {
          "200": {
            "description": "Configured price rows, or an unconfigured/partially unavailable catalog. A missing row is not a zero price.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductPrices"
                }
              }
            }
          },
          "5XX": {
            "description": "Pricing could not be read; keep price and availability unknown and use the product page or retry."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ReferencePrice": {
        "type": "object",
        "properties": {
          "amountUsd": {
            "type": "number",
            "exclusiveMinimum": 0,
            "multipleOf": 0.01,
            "description": "Static USD catalog reference, not a verified current price."
          },
          "currency": {
            "const": "USD",
            "type": "string"
          },
          "verification": {
            "const": "unverified",
            "type": "string"
          },
          "use": {
            "const": "reference-only",
            "type": "string"
          }
        },
        "required": [
          "amountUsd",
          "currency",
          "verification",
          "use"
        ],
        "additionalProperties": false
      },
      "IndividualKit": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "about-page",
              "assessment-rubric",
              "async-update",
              "beta-reader",
              "birthday-party",
              "blog-article",
              "book-club-event",
              "brand-identity-brief",
              "brand-voice",
              "bundle-catalog",
              "business-travel",
              "campaign-retrospective",
              "capacity-planning",
              "career-direction",
              "case-study",
              "catalog-merchandising",
              "character-workbook",
              "client-boundaries",
              "client-offboarding",
              "client-onboarding",
              "committee-meeting",
              "community-consultation",
              "community-handover",
              "community-newsletter",
              "community-onboarding",
              "community-project",
              "competitor-review",
              "concept-test",
              "content-audit",
              "content-repurpose",
              "cover-letter",
              "craft-market",
              "creative-brief",
              "creative-portfolio-review",
              "creative-project-review",
              "creator-asset-library",
              "creator-batch-day",
              "customer-discovery",
              "customer-support",
              "decision-log",
              "decision-workbook",
              "declutter-room",
              "design-critique",
              "design-feedback",
              "design-system-audit",
              "digital-course-outline",
              "digital-declutter",
              "digital-launch",
              "dinner-party",
              "donor-update",
              "download-delivery",
              "ebook-editorial",
              "email-launch",
              "event-access",
              "event-photo-brief",
              "event-retrospective",
              "experiment-design",
              "family-calendar",
              "faq-builder",
              "feedback-triage",
              "field-trip",
              "first-month",
              "focus-blocks",
              "form-planner",
              "freelance-quote",
              "fundraising-event",
              "grocery-routine",
              "group-trip",
              "guest-hosting",
              "habit-experiment",
              "handover-at-work",
              "home-inventory",
              "home-maintenance",
              "home-project-brief",
              "homepage-planner",
              "interview-article",
              "interview-questions",
              "issue-escalation",
              "job-search",
              "knowledge-base",
              "landing-page-copy",
              "lead-magnet",
              "learning-portfolio",
              "lesson-planner",
              "listing-copy",
              "livestream-runbook",
              "local-marketing",
              "logo-delivery",
              "maker-pricing",
              "media-kit",
              "meeting-notes",
              "moodboard",
              "moving-home",
              "museum-day",
              "networking-conversation",
              "newsletter-system",
              "office-move",
              "online-class",
              "packing-station",
              "packing-system",
              "pantry-reset",
              "peer-feedback",
              "performance-review",
              "personal-admin",
              "personal-essay",
              "photo-archive",
              "photo-assistant",
              "photo-backup",
              "photo-client-gallery",
              "photo-culling",
              "photo-location-scout",
              "photo-personal-project",
              "photo-portfolio",
              "photo-print",
              "podcast-production",
              "pop-up-event",
              "portfolio-case",
              "portrait-session",
              "potluck-coordinator",
              "presentation-story",
              "print-brief",
              "problem-prioritization",
              "process-handoff",
              "product-bundle",
              "product-idea-screen",
              "product-license-brief",
              "product-photography",
              "product-preview",
              "product-support",
              "product-update",
              "professional-learning",
              "project-breakdown",
              "project-profit",
              "project-rescue",
              "proposal-follow-up",
              "quarterly-reflection",
              "reading-discussion",
              "reading-notes",
              "recipe-organizer",
              "referral-program",
              "rental-stay",
              "research-recruitment",
              "research-repository",
              "research-synthesis",
              "resume-evidence",
              "retainer-planning",
              "retro-meeting",
              "returns-triage",
              "reunion",
              "revision-calendar",
              "road-trip",
              "scene-revision",
              "scope-control",
              "service-menu",
              "shared-house",
              "short-story",
              "short-video",
              "sitemap-planner",
              "sku-system",
              "small-event",
              "social-template-brief",
              "sop-writer",
              "speaker-coordination",
              "sponsorship-pitch",
              "staycation",
              "stock-planner",
              "study-sprint",
              "subcontractor-brief",
              "supplier-comparison",
              "survey-design",
              "team-onboarding",
              "template-product",
              "testimonial-interview",
              "training-needs",
              "travel-journal",
              "travel-photo-list",
              "tutor-intake",
              "usability-test",
              "vendor-onboarding",
              "volunteer-event",
              "volunteer-onboarding",
              "volunteer-recognition",
              "volunteer-rota",
              "wardrobe-edit",
              "website-brief",
              "website-content-migration",
              "website-handover",
              "website-image-audit",
              "website-launch",
              "website-review",
              "wedding-vendor",
              "weekend-trip",
              "weekly-meal-plan",
              "weekly-reset",
              "wholesale-line-sheet",
              "workshop-facilitator",
              "worldbuilding",
              "writing-group",
              "writing-prompts",
              "youtube-production"
            ]
          },
          "name": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "audience": {
            "type": "string"
          },
          "blurb": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "previewUrl": {
            "type": "string",
            "format": "uri"
          },
          "sampleUrl": {
            "type": "string",
            "format": "uri"
          },
          "worksheetTitles": {
            "type": "array",
            "minItems": 5,
            "maxItems": 5,
            "items": {
              "type": "string"
            }
          },
          "edition": {
            "type": "string",
            "pattern": "^\\d+\\.\\d+\\.\\d+$"
          },
          "formats": {
            "type": "array",
            "minItems": 3,
            "items": {
              "type": "string"
            }
          },
          "referencePrice": {
            "$ref": "#/components/schemas/ReferencePrice"
          },
          "availability": {
            "const": "unknown",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "category",
          "audience",
          "blurb",
          "url",
          "worksheetTitles",
          "edition",
          "formats",
          "referencePrice",
          "availability"
        ],
        "additionalProperties": false
      },
      "ShoppingCatalog": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "const": 1,
            "type": "integer"
          },
          "kind": {
            "const": "pagemage-shopping-catalog",
            "type": "string"
          },
          "scope": {
            "const": "individual-digital-kits",
            "type": "string"
          },
          "sourcePage": {
            "type": "string",
            "format": "uri"
          },
          "catalogUrl": {
            "type": "string",
            "format": "uri"
          },
          "browseUrl": {
            "type": "string",
            "format": "uri"
          },
          "livePricesUrl": {
            "type": "string",
            "format": "uri"
          },
          "termsUrl": {
            "type": "string",
            "format": "uri"
          },
          "refundsUrl": {
            "type": "string",
            "format": "uri"
          },
          "rights": {
            "type": "string"
          },
          "rules": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "offers": {
            "type": "array",
            "minItems": 1,
            "maxItems": 200,
            "items": {
              "$ref": "#/components/schemas/IndividualKit"
            }
          }
        },
        "required": [
          "schemaVersion",
          "kind",
          "scope",
          "sourcePage",
          "catalogUrl",
          "browseUrl",
          "livePricesUrl",
          "termsUrl",
          "refundsUrl",
          "rights",
          "rules",
          "offers"
        ],
        "additionalProperties": false
      },
      "ProductPrice": {
        "type": "object",
        "properties": {
          "tier": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "blurb": {
            "type": "string"
          },
          "recommended": {
            "type": "boolean"
          },
          "amount": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991,
            "description": "Amount in the currency minor unit; current store offers use USD cents."
          },
          "currency": {
            "type": "string",
            "pattern": "^[a-z]{3}$"
          },
          "recurring": {
            "type": "boolean"
          },
          "interval": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "month",
              "year",
              null
            ]
          }
        },
        "required": [
          "tier",
          "name",
          "blurb",
          "recommended",
          "amount",
          "currency",
          "recurring",
          "interval"
        ],
        "additionalProperties": true
      },
      "ProductPrices": {
        "type": "object",
        "properties": {
          "tiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductPrice"
            }
          },
          "configured": {
            "type": "boolean"
          },
          "mode": {
            "type": "string",
            "enum": [
              "live",
              "test"
            ]
          },
          "pricingUnavailable": {
            "type": "boolean"
          },
          "deliveryUnavailable": {
            "type": "boolean"
          }
        },
        "required": [
          "tiers",
          "configured"
        ],
        "additionalProperties": true
      }
    }
  }
}
