{
  "openapi": "3.1.0",
  "info": {
    "title": "ScaleUp Content API",
    "version": "1.0.0",
    "summary": "Read-only access to tryscaleup.org content as markdown.",
    "description": "tryscaleup.org is the marketing and documentation site for ScaleUp, a Google Ads conversion tracking app for Shopify. It has no write API and no accounts: this specification describes the read-only content surface an agent can fetch. Every documentation page is available as markdown, either by appending `.md` to its path or by sending `Accept: text/markdown`. All endpoints are public and unauthenticated. The ScaleUp product itself is a Shopify app installed from the Shopify App Store; it is not operated through this site.",
    "contact": {
      "name": "ScaleUp",
      "url": "https://tryscaleup.org/about",
      "email": "support@tryscaleup.org"
    },
    "license": {
      "name": "Content is proprietary. Readable by agents, not relicensed.",
      "identifier": "LicenseRef-Proprietary"
    }
  },
  "servers": [
    {
      "url": "https://tryscaleup.org",
      "description": "Production"
    }
  ],
  "externalDocs": {
    "description": "llms.txt — index of every page with its markdown URL",
    "url": "https://tryscaleup.org/llms.txt"
  },
  "tags": [
    {
      "name": "discovery",
      "description": "Entry points that enumerate the whole site."
    },
    {
      "name": "content",
      "description": "Documentation pages as markdown."
    },
    {
      "name": "feeds",
      "description": "RSS feeds per content section."
    }
  ],
  "paths": {
    "/llms.txt": {
      "get": {
        "operationId": "getLlmsIndex",
        "tags": [
          "discovery"
        ],
        "summary": "Index of every page with its markdown URL",
        "description": "Start here. A short overview of what ScaleUp does, followed by every content page grouped by section, each linking to its `.md` twin. Cheapest way to see the whole site before fetching anything.",
        "responses": {
          "200": {
            "description": "llms.txt index.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No such resource. Body lists the discovery entry points.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/llms-full.txt": {
      "get": {
        "operationId": "getLlmsFullText",
        "tags": [
          "discovery"
        ],
        "summary": "Full text of all content in one response",
        "description": "Every page's text concatenated into a single document. Use when you want the whole corpus in one fetch instead of crawling per page.",
        "responses": {
          "200": {
            "description": "Concatenated site content.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No such resource. Body lists the discovery entry points.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/agent.txt": {
      "get": {
        "operationId": "getAgentInstructions",
        "tags": [
          "discovery"
        ],
        "summary": "What this site covers and when to use it",
        "description": "Plain-text statement of which questions this site can answer, which it cannot, and how to fetch content.",
        "responses": {
          "200": {
            "description": "Agent instructions.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No such resource. Body lists the discovery entry points.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/sitemap.xml": {
      "get": {
        "operationId": "getSitemap",
        "tags": [
          "discovery"
        ],
        "summary": "Every page in every locale",
        "description": "Standard XML sitemap with hreflang cross-references for all 6 locales.",
        "responses": {
          "200": {
            "description": "XML sitemap.",
            "content": {
              "application/xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No such resource. Body lists the discovery entry points.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/{section}/{slug}.md": {
      "get": {
        "operationId": "getArticleMarkdown",
        "tags": [
          "content"
        ],
        "summary": "Fetch one article as markdown",
        "description": "Returns the default-locale (en) article at `/{section}/{slug}` as markdown. For another locale, prefix the path with its code (`/es/blog/{slug}.md`). Equivalent to requesting `/{section}/{slug}` with `Accept: text/markdown`. Enumerate valid section/slug pairs from `/llms.txt` rather than guessing them.",
        "parameters": [
          {
            "name": "section",
            "in": "path",
            "required": true,
            "description": "Content section.",
            "schema": {
              "type": "string",
              "enum": [
                "blog",
                "guides",
                "comparisons",
                "resources",
                "glossary",
                "features",
                "integrations"
              ]
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Article slug, without the .md suffix. Listed in /llms.txt.",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9-]+$"
            },
            "example": "cookieless-tracking-shopify-2026"
          }
        ],
        "responses": {
          "200": {
            "description": "Article as markdown.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No such resource. Body lists the discovery entry points.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/{page}.md": {
      "get": {
        "operationId": "getPageMarkdown",
        "tags": [
          "content"
        ],
        "summary": "Fetch a standalone page as markdown",
        "description": "Top-level pages that are not part of a content section. Locale-prefixed forms work the same way (`/es/about.md`).",
        "parameters": [
          {
            "name": "page",
            "in": "path",
            "required": true,
            "description": "Standalone page name. Use `index` for the homepage via `/{locale}/index.md`.",
            "schema": {
              "type": "string",
              "enum": [
                "about",
                "contact",
                "faq",
                "glossary",
                "privacy",
                "terms",
                "resources",
                "technical-overview"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Page as markdown.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No such resource. Body lists the discovery entry points.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/{locale}/index.md": {
      "get": {
        "operationId": "getHomeMarkdown",
        "tags": [
          "content"
        ],
        "summary": "Fetch the homepage as markdown",
        "description": "Overview of what ScaleUp does, how setup works, features, pricing, and common questions.",
        "parameters": [
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "description": "Locale code.",
            "schema": {
              "type": "string",
              "enum": [
                "en",
                "es",
                "de",
                "fr",
                "pt",
                "ja"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Homepage as markdown.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No such resource. Body lists the discovery entry points.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/{section}/rss.xml": {
      "get": {
        "operationId": "getSectionFeed",
        "tags": [
          "feeds"
        ],
        "summary": "RSS feed for a content section",
        "description": "Use to detect new or changed articles without re-crawling the section.",
        "parameters": [
          {
            "name": "section",
            "in": "path",
            "required": true,
            "description": "Section with a feed.",
            "schema": {
              "type": "string",
              "enum": [
                "blog",
                "guides",
                "comparisons",
                "resources"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "RSS 2.0 feed.",
            "content": {
              "application/rss+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No such resource. Body lists the discovery entry points.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {}
  },
  "security": []
}
