{
  "openapi": "3.1.0",
  "info": {
    "title": "FotoMandir Public Catalog API",
    "version": "1.0.0",
    "summary": "Public read-only catalogue endpoints for FotoMandir — India's premium personalised photo printing brand.",
    "description": "Machine-readable, read-only endpoints intended for AI agents (ChatGPT Actions, Claude tools, Perplexity, Gemini extensions, Bing Copilot plug-ins) and partner integrations.\n\nAll endpoints are unauthenticated, rate-limited, GET-only and safe to crawl. No personal or transactional data is exposed.",
    "termsOfService": "https://fotomandir.com/terms",
    "contact": {
      "name": "FotoMandir Support",
      "url": "https://fotomandir.com/contact",
      "email": "support@fotomandir.com"
    },
    "license": {
      "name": "Content may be cited and summarised; attribution preferred.",
      "url": "https://fotomandir.com/ai.txt"
    }
  },
  "servers": [
    {
      "url": "https://fotomandir.com",
      "description": "Production"
    }
  ],
  "tags": [
    { "name": "discovery", "description": "Files used by AI crawlers to discover content." },
    { "name": "catalog", "description": "Product catalogue feeds." },
    { "name": "sitemap", "description": "XML sitemaps for crawlers." },
    { "name": "blog", "description": "Editorial / RSS feeds." }
  ],
  "paths": {
    "/llms.txt": {
      "get": {
        "tags": ["discovery"],
        "summary": "LLM-friendly index of the site",
        "description": "Short, hand-curated plain-text overview of FotoMandir aimed at language models. Lists key sections, products and feeds.",
        "operationId": "getLlmsIndex",
        "responses": {
          "200": {
            "description": "Plain-text Markdown-style document.",
            "content": { "text/plain": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/llms-full.txt": {
      "get": {
        "tags": ["discovery", "catalog"],
        "summary": "Full machine-readable product catalogue (plain text)",
        "description": "Complete catalogue digest of every active, approved product — designed for ingestion by LLMs. Includes name, URL, starting price (INR), category, image, tags and short description.",
        "operationId": "getLlmsFullCatalog",
        "responses": {
          "200": {
            "description": "Plain-text catalogue.",
            "content": { "text/plain": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/ai.txt": {
      "get": {
        "tags": ["discovery"],
        "summary": "AI / LLM usage policy",
        "description": "Permissions for AI training, search, summarisation and citation.",
        "operationId": "getAiPolicy",
        "responses": {
          "200": {
            "description": "Plain-text policy file.",
            "content": { "text/plain": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/robots.txt": {
      "get": {
        "tags": ["discovery"],
        "summary": "Robots policy",
        "operationId": "getRobots",
        "responses": {
          "200": {
            "description": "Plain-text robots file.",
            "content": { "text/plain": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/sitemap.xml": {
      "get": {
        "tags": ["sitemap"],
        "summary": "Master sitemap index",
        "operationId": "getSitemapIndex",
        "responses": {
          "200": {
            "description": "XML sitemap index linking to product, image, category and blog sitemaps.",
            "content": { "application/xml": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/feeds/products.xml": {
      "get": {
        "tags": ["sitemap"],
        "summary": "Products sitemap",
        "operationId": "getProductsSitemap",
        "responses": {
          "200": {
            "description": "Sitemap listing every public product page.",
            "content": { "application/xml": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/feeds/images.xml": {
      "get": {
        "tags": ["sitemap"],
        "summary": "Images sitemap",
        "operationId": "getImagesSitemap",
        "responses": {
          "200": {
            "description": "Sitemap of product imagery for Google Images.",
            "content": { "application/xml": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/google-merchant-feed.xml": {
      "get": {
        "tags": ["catalog"],
        "summary": "Google Merchant Center product feed (XML)",
        "description": "RSS 2.0 / Google Shopping XML feed with title, description, price (INR), availability, image, brand, GTIN-status, shipping and product highlights for every active SKU.",
        "operationId": "getGoogleMerchantFeed",
        "responses": {
          "200": {
            "description": "XML product feed.",
            "content": { "application/xml": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/feeds/merchant.json": {
      "get": {
        "tags": ["catalog"],
        "summary": "Google Merchant feed (JSON)",
        "description": "Same data as the XML feed in JSON form for easier programmatic consumption.",
        "operationId": "getGoogleMerchantFeedJson",
        "responses": {
          "200": {
            "description": "JSON product feed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "store": { "type": "string", "example": "FotoMandir" },
                    "currency": { "type": "string", "example": "INR" },
                    "country": { "type": "string", "example": "IN" },
                    "generated_at": { "type": "string", "format": "date-time" },
                    "items": {
                      "type": "array",
                      "items": { "$ref": "#/components/schemas/Product" }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/meta-catalog-feed.xml": {
      "get": {
        "tags": ["catalog"],
        "summary": "Meta (Facebook / Instagram) commerce catalog feed",
        "operationId": "getMetaCatalogFeed",
        "responses": {
          "200": {
            "description": "XML catalogue feed for Meta Commerce Manager.",
            "content": { "application/xml": { "schema": { "type": "string" } } }
          }
        }
      }
    },
    "/rss.xml": {
      "get": {
        "tags": ["blog"],
        "summary": "Blog RSS feed",
        "operationId": "getBlogRss",
        "responses": {
          "200": {
            "description": "RSS 2.0 feed of latest blog posts.",
            "content": { "application/rss+xml": { "schema": { "type": "string" } } }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Product": {
        "type": "object",
        "description": "A purchasable, personalised photo product.",
        "properties": {
          "id": { "type": "string", "description": "Stable SKU / template ID." },
          "title": { "type": "string" },
          "description": { "type": "string" },
          "link": { "type": "string", "format": "uri", "description": "Public product page URL." },
          "image_link": { "type": "string", "format": "uri" },
          "additional_image_link": { "type": "array", "items": { "type": "string", "format": "uri" } },
          "price": { "type": "string", "example": "799 INR" },
          "availability": { "type": "string", "enum": ["in_stock", "out_of_stock", "preorder"] },
          "brand": { "type": "string", "example": "FotoMandir" },
          "condition": { "type": "string", "example": "new" },
          "google_product_category": { "type": "string", "example": "500044" },
          "product_type": { "type": "string" },
          "material": { "type": "string", "enum": ["Acrylic", "Canvas", "Wood", "MDF", "Paper", "Ceramic", "Metal"] },
          "color": { "type": "string" },
          "size": { "type": "string", "example": "12x18 inch" },
          "shipping_weight": { "type": "string", "example": "0.8 kg" }
        }
      }
    }
  }
}
