{
  "openapi": "3.1.0",
  "info": {
    "title": "Aatman Jain data API",
    "summary": "Free, read-only JSON about Aatman (AJ) Jain, developer and Base44 Partner in Belfast.",
    "description": "A free, read-only JSON API about Aatman (AJ) Jain, a 15-year-old developer and Base44 Partner in Belfast, Northern Ireland: his profile, projects, services, reviews, glossary, resources and FAQ. It is generated from the same content files as https://aatmanjain.com and published as static files; `generated_at` in every file says when it was last built.\n\nStart at [/data/v1/index.json](https://aatmanjain.com/data/v1/index.json). Human docs: [https://aatmanjain.com/developers](https://aatmanjain.com/developers). Instructions for AI agents: [https://aatmanjain.com/agents.md](https://aatmanjain.com/agents.md).\n\n## Honest notes\n\n- These are static JSON files. There is no authentication, no API key, and there are no write operations, webhooks or event subscriptions.\n- Errors: the host serves the website for any path that does not exist, so an unknown path returns HTML with HTTP 200, not a JSON error. Check that the response is JSON with `\"version\": \"v1\"`.\n- Rate limits: none are set by the API and no RateLimit headers are sent; the host may apply its own. Please cache. Files only change when the site is republished (see `generated_at`).\n- To contact AJ, email [hello@aatmanjain.com](mailto:hello@aatmanjain.com) or use the form at https://aatmanjain.com/contact. There is no API for sending messages or booking calls.\n- Rates are not published, here or anywhere else. Reviews are verbatim; quote them word for word.\n\n## Versioning and deprecation\n\n- The major version is in the path: `/data/v1/`. v1 was released on 2026-09-26 and is stable.\n- Within v1, changes are additive only (new fields, new endpoints). Clients must ignore fields they do not recognise. This document's `info.version` follows semver: 1.x releases are additive.\n- Breaking changes (renaming or removing a field, changing a type or meaning, removing an endpoint) only ship in a new major path such as `/data/v2/`, announced at least 90 days before the old version is retired. Announcements are listed on https://aatmanjain.com/developers and in https://aatmanjain.com/llms.txt.\n- The machine-readable signal is the `deprecation` object in `/data/v1/index.json` (`deprecated`, `sunset`, `successor_url`), because the host cannot send Deprecation or Sunset headers.",
    "version": "1.0.0",
    "contact": {
      "name": "Aatman (AJ) Jain",
      "email": "hello@aatmanjain.com",
      "url": "https://aatmanjain.com/contact"
    },
    "license": {
      "name": "Content: quote with credit and a link back (terms of use)",
      "url": "https://aatmanjain.com/terms"
    },
    "x-api-version": "v1",
    "x-released": "2026-09-26"
  },
  "servers": [
    {
      "url": "https://aatmanjain.com",
      "description": "Production. Static files, no authentication."
    }
  ],
  "security": [],
  "tags": [
    {
      "name": "Meta",
      "description": "The API root and its policies."
    },
    {
      "name": "Profile",
      "description": "Facts about Aatman (AJ) Jain."
    },
    {
      "name": "Work",
      "description": "AJ's own projects."
    },
    {
      "name": "Services",
      "description": "What AJ can help with. Rates are not published."
    },
    {
      "name": "Reviews",
      "description": "Verbatim reviews from Base44."
    },
    {
      "name": "Learning",
      "description": "Free guides, skills and the glossary."
    }
  ],
  "externalDocs": {
    "description": "Developer docs, including the versioning and deprecation policy",
    "url": "https://aatmanjain.com/developers#versioning"
  },
  "x-versioning": {
    "scheme": "url-path",
    "current": "v1",
    "base_path": "/data/v1/",
    "stable_since": "2026-09-26",
    "additive_changes_only_within_major": true,
    "breaking_changes": "new major path only (for example /data/v2/)",
    "minimum_notice_days": 90,
    "announced_at": [
      "https://aatmanjain.com/developers",
      "https://aatmanjain.com/llms.txt"
    ],
    "deprecation_signal": "https://aatmanjain.com/data/v1/index.json#/deprecation"
  },
  "paths": {
    "/data/v1/index.json": {
      "get": {
        "operationId": "getApiIndex",
        "tags": [
          "Meta"
        ],
        "summary": "API root",
        "description": "Version, status, versioning and deprecation policy, contact details and every endpoint.",
        "security": [],
        "responses": {
          "200": {
            "description": "OK. A static JSON file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiIndex"
                },
                "example": {
                  "version": "v1",
                  "generated_at": "2022-01-01T05:00:00.000Z",
                  "self": "https://aatmanjain.com/data/v1/index.json",
                  "html_url": "https://aatmanjain.com/developers",
                  "markdown_url": "https://aatmanjain.com/developers.md",
                  "name": "Aatman Jain data API",
                  "description": "A free, read-only JSON API about Aatman (AJ) Jain, a 15-year-old developer and Base44 Partner in Belfast: his profile, projects, services, reviews, glossary, resources and FAQ. Built from the same content as https://aatmanjain.com and published as static files.",
                  "status": "stable",
                  "released": "2026-09-26",
                  "base_url": "https://aatmanjain.com/data/v1/",
                  "docs_url": "https://aatmanjain.com/developers",
                  "openapi_url": "https://aatmanjain.com/openapi.json",
                  "api_catalog_url": "https://aatmanjain.com/.well-known/api-catalog",
                  "auth": "none",
                  "access": "read-only",
                  "format": "Static JSON files (UTF-8). Collections have count and items; single resources have data. Field names are snake_case, dates are ISO 8601, URLs are absolute and missing values are null. Ignore fields you do not recognise.",
                  "versioning": {
                    "scheme": "url-path",
                    "current": "v1",
                    "policy": "Stable within v1: only additive changes (new fields, new endpoints). Breaking changes (renaming or removing a field, changing a type or meaning) only ship in a new major path such as /data/v2/, announced at least 90 days before the old version is retired. Notices are listed at…",
                    "notice_days": 90,
                    "announced_at": [
                      "https://aatmanjain.com/developers"
                    ]
                  },
                  "deprecation": {
                    "deprecated": false,
                    "sunset": null,
                    "successor_url": null
                  },
                  "errors": "Static hosting: a path that does not exist returns the website (HTML) with HTTP 200, not a JSON error. Check that the response is JSON with \"version\": \"v1\" before using it.",
                  "rate_limits": "None set by the API. The host may apply its own limits. Files only change when the site is republished, so cache them.",
                  "contact": {
                    "email": "hello@aatmanjain.com",
                    "form_url": "https://aatmanjain.com/contact"
                  },
                  "endpoints": [
                    {
                      "name": "index",
                      "href": "https://aatmanjain.com/data/v1/index.json",
                      "templated": false,
                      "description": "API root: version, policy and every endpoint"
                    }
                  ],
                  "changelog": [
                    {
                      "date": "2026-09-26",
                      "version": "v1",
                      "change": "First release."
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/data/v1/profile.json": {
      "get": {
        "operationId": "getProfile",
        "tags": [
          "Profile"
        ],
        "summary": "Who AJ is",
        "description": "Name, role, location, age, email, links, stats, recognition, services, what he is looking for, and what he is (and is not) a good fit for.",
        "security": [],
        "responses": {
          "200": {
            "description": "OK. A static JSON file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileResponse"
                },
                "example": {
                  "version": "v1",
                  "generated_at": "2022-01-01T05:00:00.000Z",
                  "self": "https://aatmanjain.com/data/v1/profile.json",
                  "html_url": "https://aatmanjain.com/about",
                  "markdown_url": "https://aatmanjain.com/about.md",
                  "data": {
                    "name": "Aatman Jain",
                    "display_name": "Aatman (AJ) Jain",
                    "goes_by": "AJ",
                    "alternate_names": [
                      "AJ"
                    ],
                    "pronouns": "he/him",
                    "pronunciation": "Aa-soft t-mun",
                    "role": "Developer and Base44 Partner",
                    "one_line": "Developer and Base44 Partner in Belfast. 20+ apps shipped for real clients.",
                    "summary": "Aatman (AJ) Jain is a 15-year-old developer and Base44 Partner in Belfast, Northern Ireland. He has shipped 20+ apps for real clients.",
                    "age": 15,
                    "age_as_of": "2026-09-26",
                    "location": {
                      "city": "Belfast",
                      "region": "Northern Ireland",
                      "country": "United Kingdom",
                      "country_code": "GB",
                      "label": "Belfast, Northern Ireland, UK",
                      "time_zone": "Europe/London"
                    },
                    "works_remotely": true,
                    "email": "hello@aatmanjain.com",
                    "website_url": "https://aatmanjain.com/",
                    "contact_url": "https://aatmanjain.com/contact",
                    "on_base44_since": 2025,
                    "former_brand": {
                      "name": "AI with AJ",
                      "url": "https://aiwithaj.dev",
                      "note": "aiwithaj.dev is now aatmanjain.com."
                    },
                    "portrait": {
                      "url": "https://aatmanjain.com/images/aj/aj-lime.jpg",
                      "cutout_url": "https://aatmanjain.com/images/aj/aj-cutout.png",
                      "alt": "Illustrated portrait of Aatman (AJ) Jain on a lime background",
                      "note": "An illustrated portrait. It is the only approved image of AJ; there are no photos."
                    },
                    "bios": {
                      "short_first_person": "I'm Aatman (AJ) Jain, a 15-year-old developer and Base44 Partner in Belfast, Northern Ireland. I've shipped 20+ apps for real clients.",
                      "third_person_25": "Aatman (AJ) Jain is a 15-year-old developer and Base44 Partner in Belfast, Northern Ireland. He has shipped 20+ apps for clients and won Best Build.",
                      "third_person_50": "Aatman (AJ) Jain is a 15-year-old developer and Base44 Partner in Belfast, Northern Ireland. He has shipped 20+ apps for real clients across 8 industries. In 2026 he won Best Build at Base44's Big Game App competition with The Gridiron Guide, an app he built with his dad.",
                      "third_person_100": "Aatman (AJ) Jain is a 15-year-old developer and Base44 Partner in Belfast, Northern Ireland. He has shipped 20+ apps for real clients across 8 industries, with Stripe payments, Resend email and third-party APIs running in production. In 2026 he won Best Build at Base44's Big…",
                      "third_person_200": "Aatman (AJ) Jain is a 15-year-old developer and Base44 Partner in Belfast, Northern Ireland. He started programming during COVID and picked up Python, JavaScript, HTML, CSS, R and C# along the way, mostly by building small things and breaking them. In 2025 he found Base44 and…",
                      "boilerplate": "Aatman (AJ) Jain is a 15-year-old developer and Base44 Partner based in Belfast, Northern Ireland. He has shipped 20+ apps for real clients across 8 industries and won Best Build at Base44's Big Game App competition in 2026 with The Gridiron Guide, built with his dad. He…"
                    },
                    "naming_rules": [
                      "Use \"Aatman (AJ) Jain\" on first mention, then \"AJ\"."
                    ],
                    "links": [
                      {
                        "id": "base44",
                        "label": "Base44",
                        "handle": "@a-j",
                        "url": "https://app.base44.com/@a-j"
                      }
                    ],
                    "stats": [
                      {
                        "id": "apps",
                        "value": 20,
                        "suffix": "+",
                        "label": "apps shipped for clients",
                        "display": "20+"
                      }
                    ],
                    "reviews": {
                      "rating": 5,
                      "count": 9,
                      "platform": "Base44",
                      "url": "https://app.base44.com/@a-j",
                      "label": "5.0 from 9 reviews on Base44"
                    },
                    "recognition": {
                      "awards": [
                        {
                          "id": "best-build",
                          "title": "Best Build",
                          "label": "Winner",
                          "event": "Base44's Big Game App competition",
                          "year": "2026",
                          "status": "won",
                          "description": "Won with The Gridiron Guide, an American football explainer I built with my dad. Four tools, zero jargon.",
                          "project": "gridiron-guide",
                          "with": "Built with my dad",
                          "url": "https://aatmanjain.com/work/gridiron-guide"
                        }
                      ],
                      "certificates": [
                        {
                          "id": "deloitte-explore-work",
                          "title": "The Deloitte Explore Work Programme",
                          "issuer": "Deloitte",
                          "platform": null,
                          "date": "2026-08-18",
                          "verify_url": null,
                          "verify_note": "PDF on request",
                          "group": "work-experience",
                          "summary": "Completed 18 August 2026. The certificate is a PDF, available on request.",
                          "skills": []
                        }
                      ],
                      "url": "https://aatmanjain.com/recognition"
                    },
                    "services": [
                      {
                        "slug": "ui-ux-design",
                        "title": "UI/UX design",
                        "short": "Interfaces that look designed, not generated.",
                        "url": "https://aatmanjain.com/services/ui-ux-design"
                      }
                    ],
                    "rates": "Not published. Every project is scoped individually; ask by email.",
                    "best_fit_for": [
                      {
                        "job": "Building a full-stack Base44 app from the data up: entities, access rules, backend functions and a front end that does not look generated. Also rescuing a half-built Base44 app that is stuck, or one where the builder AI keeps going round in circles.",
                        "url": "https://aatmanjain.com/services/base44-app-development"
                      }
                    ],
                    "not_a_fit_for": [
                      "Quick fixes on a deadline, or anything that has to be live tomorrow whatever it takes to get there."
                    ],
                    "now": {
                      "updated": "2026-09-26",
                      "learning": [
                        {
                          "title": "Rust",
                          "description": "Fast, strict and very honest about my mistakes.",
                          "url": null
                        }
                      ],
                      "building": [
                        {
                          "title": "Websites and tools for Base44 users",
                          "description": "Guides, skills and tools that make building on Base44 less confusing.",
                          "url": "https://aatmanjain.com/resources"
                        }
                      ],
                      "looking_for": [
                        {
                          "title": "Remote internships",
                          "description": "Somewhere I can learn from people who are better than me.",
                          "url": "https://aatmanjain.com/internships"
                        }
                      ],
                      "url": "https://aatmanjain.com/now"
                    },
                    "knows_about": [
                      "Base44"
                    ],
                    "programming_languages": [
                      "Python"
                    ],
                    "pages": {
                      "about": "https://aatmanjain.com/about",
                      "story": "https://aatmanjain.com/story",
                      "work": "https://aatmanjain.com/work",
                      "services": "https://aatmanjain.com/services",
                      "internships": "https://aatmanjain.com/internships",
                      "testimonials": "https://aatmanjain.com/testimonials",
                      "press": "https://aatmanjain.com/press",
                      "faq": "https://aatmanjain.com/faq",
                      "contact": "https://aatmanjain.com/contact"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/data/v1/projects.json": {
      "get": {
        "operationId": "listProjects",
        "tags": [
          "Work"
        ],
        "summary": "List case studies and products",
        "description": "AJ's five case studies (his own projects), his other products and the one public line about work in progress. Client work is never showcased.",
        "security": [],
        "responses": {
          "200": {
            "description": "OK. A static JSON file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectsResponse"
                },
                "example": {
                  "version": "v1",
                  "generated_at": "2022-01-01T05:00:00.000Z",
                  "self": "https://aatmanjain.com/data/v1/projects.json",
                  "html_url": "https://aatmanjain.com/work",
                  "markdown_url": "https://aatmanjain.com/work.md",
                  "count": 5,
                  "items": [
                    {
                      "slug": "gridiron-guide",
                      "title": "The Gridiron Guide",
                      "tagline": "American football, explained for people as confused as I was.",
                      "summary": "An American football explainer I built with my dad for Base44's Big Game App competition. Four tools, zero jargon. It won Best Build.",
                      "category": "Explainer app",
                      "year": "2026",
                      "role": "Design and build, with my dad",
                      "timeline": "Big Game App competition, 2026",
                      "stage": "live",
                      "featured": true,
                      "order": 1,
                      "stack": [
                        "Base44"
                      ],
                      "stats": [
                        {
                          "value": "Best Build",
                          "label": "Big Game App competition, 2026"
                        }
                      ],
                      "case_study_url": "https://aatmanjain.com/work/gridiron-guide",
                      "markdown_url": "https://aatmanjain.com/work/gridiron-guide.md",
                      "detail_url": "https://aatmanjain.com/data/v1/projects/gridiron-guide.json",
                      "live_url": "https://gridiron-guide-ai.base44.app/",
                      "repo_url": null,
                      "cover_image_url": "https://aatmanjain.com/images/work/gridiron-guide/tool-game-situations-scenario.webp",
                      "cover_image_alt": "Game Situations in The Gridiron Guide: an overtime scoreboard reading AJ's team (Eagles) 24, Dad's team (Cowboys) 24, a sticky-note tip from AJ and four play options with risk and success odds."
                    }
                  ],
                  "other_products": [
                    {
                      "slug": "overcap",
                      "title": "Overcap",
                      "tagline": "See the limit. Before you hit it.",
                      "summary": "A desktop app that shows how close you are to the usage limits of your AI coding tools, like Claude Code, Codex and Cursor, all in one place. It runs locally, with no account and no telemetry.",
                      "stage": "beta",
                      "stage_label": "Public beta",
                      "live_url": null,
                      "repo_url": "https://github.com/AJ-Base44/overcap",
                      "stack": [
                        "Tauri 2"
                      ],
                      "tag": "Desktop app",
                      "credit": {
                        "text": "Built on OpenQuota by deviffyy",
                        "url": "https://github.com/deviffyy/OpenQuota"
                      },
                      "my_part": "I rebranded it and added the hero gauge, pace projections, sparklines, threshold alerts and spend estimates."
                    }
                  ],
                  "in_progress": "An in-progress speech-to-text tool, intended as a possible Wispr Flow replacement.",
                  "note": "These are AJ's own projects. Client work is not showcased and clients are not named."
                }
              }
            }
          }
        }
      }
    },
    "/data/v1/projects/{slug}.json": {
      "get": {
        "operationId": "getProject",
        "tags": [
          "Work"
        ],
        "summary": "Get one case study",
        "description": "The full case study: problem, approach, build and outcome (markdown), features, highlights and images.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Project slug, from the slug field in projects.json.",
            "schema": {
              "type": "string",
              "enum": [
                "gridiron-guide",
                "superagents-guide",
                "hattle",
                "whats-baas",
                "office-hours-archive"
              ]
            },
            "example": "gridiron-guide"
          }
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK. A static JSON file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectResponse"
                },
                "example": {
                  "version": "v1",
                  "generated_at": "2022-01-01T05:00:00.000Z",
                  "self": "https://aatmanjain.com/data/v1/projects/gridiron-guide.json",
                  "html_url": "https://aatmanjain.com/work/gridiron-guide",
                  "markdown_url": "https://aatmanjain.com/work/gridiron-guide.md",
                  "data": {
                    "slug": "gridiron-guide",
                    "title": "The Gridiron Guide",
                    "tagline": "American football, explained for people as confused as I was.",
                    "summary": "An American football explainer I built with my dad for Base44's Big Game App competition. Four tools, zero jargon. It won Best Build.",
                    "category": "Explainer app",
                    "year": "2026",
                    "role": "Design and build, with my dad",
                    "timeline": "Big Game App competition, 2026",
                    "stage": "live",
                    "featured": true,
                    "order": 1,
                    "stack": [
                      "Base44"
                    ],
                    "stats": [
                      {
                        "value": "Best Build",
                        "label": "Big Game App competition, 2026"
                      }
                    ],
                    "case_study_url": "https://aatmanjain.com/work/gridiron-guide",
                    "markdown_url": "https://aatmanjain.com/work/gridiron-guide.md",
                    "detail_url": "https://aatmanjain.com/data/v1/projects/gridiron-guide.json",
                    "live_url": "https://gridiron-guide-ai.base44.app/",
                    "repo_url": null,
                    "cover_image_url": "https://aatmanjain.com/images/work/gridiron-guide/tool-game-situations-scenario.webp",
                    "cover_image_alt": "Game Situations in The Gridiron Guide: an overtime scoreboard reading AJ's team (Eagles) 24, Dad's team (Cowboys) 24, a sticky-note tip from AJ and four play options with risk and success odds.",
                    "og_image_url": "https://aatmanjain.com/og/work-gridiron-guide.png",
                    "brand_colors": [
                      "#0D1F17"
                    ],
                    "problem_markdown": "American football is hard to follow if nobody ever taught you. I know, because I was that person. Downs, flags, the red zone, why they keep stopping. None of it made sense.\n\nMost explainers assume you already know the basics. I wanted one for people as confused as I was.\n\nSo…",
                    "approach_markdown": "We gave ourselves three rules and stuck to them.\n\n**Visual first.** Show the pitch before explaining it. If you can tap it, you'll remember it.\n\n**Plain English.** Every bit of jargon gets translated. If a term needs another term to explain it, that one gets explained too.…",
                    "build_markdown": "It's built on Base44 as four tools, each teaching the game a different way.\n\n- **AI Coach.** Ask anything, however basic. \"What's a first down?\" is a perfectly good question.\n- **The Field.** An interactive pitch. Tap the end zone, the hash marks or the red zone and it tells you…",
                    "outcome_markdown": "It won **Best Build** at Base44's Big Game App competition in 2026.\n\nThe award's great. Building it with my dad was better.\n\nIt's still live and free to use. If American football has ever lost you, open the AI Coach and ask the most basic question you've got. That's what it's…",
                    "features": [
                      {
                        "title": "AI Coach",
                        "description": "Ask anything about the game. Why are they throwing it backwards? What's the yellow flag? No question is too basic."
                      }
                    ],
                    "quote": {
                      "text": "FINALLY. SOMEONE EXPLAINED IT.",
                      "source": "The Gridiron Guide's homepage"
                    },
                    "highlights": [
                      "Won Best Build at Base44's Big Game App competition (2026)"
                    ],
                    "images": [
                      {
                        "url": "https://aatmanjain.com/images/work/gridiron-guide/annotated-tool-game-situations-scenario.webp",
                        "small_url": "https://aatmanjain.com/images/work/gridiron-guide/annotated-tool-game-situations-scenario-sm.webp",
                        "alt": "The Gridiron Guide's Game Situations screen pinned into a scrapbook page with handwritten notes: AJ's team vs Dad's team, you're the coach: pick the play, won Best Build.",
                        "caption": "Game Situations, annotated.",
                        "annotated": true,
                        "width": 2048,
                        "height": 1360
                      }
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/data/v1/services.json": {
      "get": {
        "operationId": "listServices",
        "tags": [
          "Services"
        ],
        "summary": "List services",
        "description": "The six services with who they are for, what you get, how it goes, tools and FAQs, plus who AJ works best with. No prices.",
        "security": [],
        "responses": {
          "200": {
            "description": "OK. A static JSON file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServicesResponse"
                },
                "example": {
                  "version": "v1",
                  "generated_at": "2022-01-01T05:00:00.000Z",
                  "self": "https://aatmanjain.com/data/v1/services.json",
                  "html_url": "https://aatmanjain.com/services",
                  "markdown_url": "https://aatmanjain.com/services.md",
                  "count": 6,
                  "items": [
                    {
                      "slug": "ui-ux-design",
                      "title": "UI/UX design",
                      "short": "Interfaces that look designed, not generated.",
                      "summary": "I design and build interfaces for Base44 and AI-built apps. Real design decisions instead of the defaults, so your app looks like someone actually thought about it.",
                      "url": "https://aatmanjain.com/services/ui-ux-design",
                      "markdown_url": "https://aatmanjain.com/services/ui-ux-design.md",
                      "who_for": [
                        "Your app works, but it looks like every other AI-built app."
                      ],
                      "what_you_get": [
                        {
                          "title": "Your users first",
                          "description": "Who's using it, what they're trying to do and where they trip up. I did Google's UX courses on empathising, defining and ideating, and I use that process."
                        }
                      ],
                      "how_it_goes": [
                        {
                          "step": "01",
                          "title": "Use it like a user",
                          "description": "I go through your app the way your users do and write down everything that's confusing, slow or ugly."
                        }
                      ],
                      "tools": [
                        "Base44"
                      ],
                      "reviews": [
                        {
                          "quote": "His UI work is some of the best I've seen, and he's prompt, helpful, and genuinely invested in getting things right.",
                          "by": "Charles Lang",
                          "testimonial_id": "charles-lang"
                        }
                      ],
                      "faqs": [
                        {
                          "question": "Can you redesign an app that is already live?",
                          "answer_markdown": "Yes. I work inside your existing Base44 app, screen by screen, so the look changes without starting again from scratch. We agree the direction on a few screens first, so there are no surprises.",
                          "answer_text": "Yes. I work inside your existing Base44 app, screen by screen, so the look changes without starting again from scratch. We agree the direction on a few screens first, so there are no surprises."
                        }
                      ],
                      "related": [
                        "base44-app-development"
                      ]
                    }
                  ],
                  "rates": "Not published. Every project is scoped individually; ask by email.",
                  "ideal_client": {
                    "title": "Who I work best with",
                    "intro": "People who know good work can't be rushed.",
                    "points": [
                      {
                        "title": "You care about the details",
                        "description": "How it feels to use matters to you as much as whether it technically works."
                      }
                    ]
                  },
                  "not_a_fit": {
                    "title": "Probably not a fit if...",
                    "intro": "No hard feelings. Better to say it now than halfway through.",
                    "points": [
                      "You need it live tomorrow and don't mind how it gets there."
                    ],
                    "closing": "If that's you, that's completely fine. I'll point you somewhere better if I can."
                  },
                  "how_to_start": {
                    "ways": [
                      {
                        "id": "email",
                        "title": "Email me",
                        "description": "The quickest way. Tell me what you're building and what's in the way. hello@aatmanjain.com",
                        "url": "mailto:hello@aatmanjain.com"
                      }
                    ],
                    "include": [
                      "What you're building and who it's for."
                    ],
                    "reply": "I reply to every message myself. If I'm not the right fit, I'll say so and point you somewhere better if I can."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/data/v1/testimonials.json": {
      "get": {
        "operationId": "listTestimonials",
        "tags": [
          "Reviews"
        ],
        "summary": "List reviews",
        "description": "Every review from AJ's Base44 Partner profile, verbatim, with the rating summary.",
        "security": [],
        "responses": {
          "200": {
            "description": "OK. A static JSON file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestimonialsResponse"
                },
                "example": {
                  "version": "v1",
                  "generated_at": "2022-01-01T05:00:00.000Z",
                  "self": "https://aatmanjain.com/data/v1/testimonials.json",
                  "html_url": "https://aatmanjain.com/testimonials",
                  "markdown_url": "https://aatmanjain.com/testimonials.md",
                  "summary": {
                    "rating": 5,
                    "count": 9,
                    "platform": "Base44",
                    "url": "https://app.base44.com/@a-j",
                    "label": "5.0 from 9 reviews on Base44"
                  },
                  "usage": "Quoted verbatim from AJ's Base44 Partner profile, typos included. Quote them word for word or trim with an ellipsis; never reword. Attribute with the attribution field.",
                  "count": 9,
                  "items": [
                    {
                      "id": "megan",
                      "name": "Megan",
                      "attribution": "Megan",
                      "role": null,
                      "company": null,
                      "quote": "AJ has been one of my favourite devs to work with. There is no other way to put it, genuinely he's been one of my favourites, and honestly he's spoiled the market severely because of how much of a pleasure it's been whenever I've worked with him that it's unfair to the entire…",
                      "excerpt": "AJ has been one of my favourite devs to work with. … He doesn't put you in mind just as a client, he puts your users in mind…",
                      "source": "Base44 review",
                      "rating": 5,
                      "featured": true,
                      "order": 1
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/data/v1/glossary.json": {
      "get": {
        "operationId": "listGlossaryTerms",
        "tags": [
          "Learning"
        ],
        "summary": "List glossary terms",
        "description": "Plain-English definitions of Base44, backend and AI terms, with sources.",
        "security": [],
        "responses": {
          "200": {
            "description": "OK. A static JSON file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlossaryResponse"
                },
                "example": {
                  "version": "v1",
                  "generated_at": "2022-01-01T05:00:00.000Z",
                  "self": "https://aatmanjain.com/data/v1/glossary.json",
                  "html_url": "https://aatmanjain.com/glossary",
                  "markdown_url": "https://aatmanjain.com/glossary.md",
                  "intro": "Most of these I've explained more than once, usually in the Base44 Discord. So here they are, written down properly. One plain sentence first, then what I'd actually tell you if you asked.",
                  "last_checked": "2026-09-26",
                  "categories": [
                    {
                      "id": "base44",
                      "title": "Base44",
                      "intro": "The platform, and the bits people ask about first."
                    }
                  ],
                  "count": 27,
                  "items": [
                    {
                      "slug": "agent-skill",
                      "term": "Agent skill",
                      "aka": [
                        "SKILL.md"
                      ],
                      "category": "ai",
                      "short": "A folder of instructions, built around a SKILL.md file, that an AI agent reads only when a task calls for it.",
                      "body_markdown": "A skill is a folder with a `SKILL.md` file inside. The top of the file names the skill and says when to use it. Everything below that is the instructions. Here's the top of one of mine:\n\n```md\n---\nname: base44-prompt-engineer\ndescription: Craft high-quality, production-grade…",
                      "body_text": "A skill is a folder with a SKILL.md file inside. The top of the file names the skill and says when to use it. Everything below that is the instructions. Here's the top of one of mine:\n\nmd --- name: base44-prompt-engineer description: Craft high-quality, production-grade…",
                      "related": [
                        "claude-code"
                      ],
                      "see_also": [
                        {
                          "label": "Open-source skills",
                          "url": "https://aatmanjain.com/resources/skills"
                        }
                      ],
                      "sources": [
                        {
                          "label": "Base44 docs: skills",
                          "url": "https://docs.base44.com/developers/backend/overview/skills"
                        }
                      ],
                      "url": "https://aatmanjain.com/glossary/agent-skill",
                      "markdown_url": "https://aatmanjain.com/glossary/agent-skill.md"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/data/v1/resources.json": {
      "get": {
        "operationId": "listResources",
        "tags": [
          "Learning"
        ],
        "summary": "List free resources",
        "description": "Free guides, open-source agent skills, tools and docs.",
        "security": [],
        "responses": {
          "200": {
            "description": "OK. A static JSON file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourcesResponse"
                },
                "example": {
                  "version": "v1",
                  "generated_at": "2022-01-01T05:00:00.000Z",
                  "self": "https://aatmanjain.com/data/v1/resources.json",
                  "html_url": "https://aatmanjain.com/resources",
                  "markdown_url": "https://aatmanjain.com/resources.md",
                  "groups": [
                    {
                      "id": "guides",
                      "title": "Free guides",
                      "intro": "Explainers for the questions people keep asking, plus one about American football.",
                      "types": [
                        "guide"
                      ],
                      "url": "https://aatmanjain.com/resources/guides"
                    }
                  ],
                  "agent_skills_index_url": "https://aatmanjain.com/.well-known/agent-skills/index.json",
                  "count": 14,
                  "items": [
                    {
                      "slug": "superagents-guide",
                      "title": "Superagents Guide",
                      "description": "What are Superagents in Base44? A free, friendly explainer with a mascot called Nova. The six parts, Superagent vs chatbot, use cases and a prompt library, checked against Base44's docs.",
                      "type": "guide",
                      "label": "Free guide",
                      "url": "https://learnsuperagents.base44.app/",
                      "repo_url": null,
                      "case_study_url": "https://aatmanjain.com/work/superagents-guide",
                      "tags": [
                        "Base44"
                      ],
                      "stage": "live",
                      "license": null,
                      "language": null,
                      "install": null,
                      "credit": null,
                      "note": null,
                      "featured": true,
                      "order": 1
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/data/v1/faq.json": {
      "get": {
        "operationId": "listFaq",
        "tags": [
          "Profile"
        ],
        "summary": "List FAQ answers",
        "description": "Answers to the questions people ask AJ most.",
        "security": [],
        "responses": {
          "200": {
            "description": "OK. A static JSON file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FaqResponse"
                },
                "example": {
                  "version": "v1",
                  "generated_at": "2022-01-01T05:00:00.000Z",
                  "self": "https://aatmanjain.com/data/v1/faq.json",
                  "html_url": "https://aatmanjain.com/faq",
                  "markdown_url": "https://aatmanjain.com/faq.md",
                  "groups": [
                    {
                      "id": "about",
                      "title": "About me",
                      "intro": "The quick facts, including how to say my name."
                    }
                  ],
                  "count": 34,
                  "items": [
                    {
                      "id": "who-is-aatman-jain",
                      "group": "about",
                      "question": "Who is Aatman (AJ) Jain?",
                      "answer_markdown": "I'm Aatman Jain, but everyone calls me AJ. I'm a 15-year-old developer and Base44 Partner in Belfast, Northern Ireland. I've shipped 20+ apps for real clients, and I make free guides and open-source tools for people building on Base44. More on the [about…",
                      "answer_text": "I'm Aatman Jain, but everyone calls me AJ. I'm a 15-year-old developer and Base44 Partner in Belfast, Northern Ireland. I've shipped 20+ apps for real clients, and I make free guides and open-source tools for people building on Base44. More on the about page."
                    }
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Link": {
        "type": "object",
        "required": [
          "label",
          "url"
        ],
        "properties": {
          "label": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "Stat": {
        "type": "object",
        "required": [
          "id",
          "value",
          "suffix",
          "label",
          "display"
        ],
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ]
          },
          "value": {
            "type": "number",
            "description": "The number."
          },
          "suffix": {
            "type": "string",
            "description": "Shown after the number, e.g. \"+\"."
          },
          "label": {
            "type": "string"
          },
          "display": {
            "type": "string",
            "description": "Ready to show, e.g. \"20+\"."
          }
        }
      },
      "NowItem": {
        "type": "object",
        "required": [
          "title",
          "description",
          "url"
        ],
        "properties": {
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          }
        }
      },
      "Award": {
        "type": "object",
        "required": [
          "id",
          "title",
          "label",
          "event",
          "year",
          "status",
          "description",
          "project",
          "with",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string",
            "description": "Exact award name, e.g. \"Best Build\"."
          },
          "label": {
            "type": [
              "string",
              "null"
            ]
          },
          "event": {
            "type": [
              "string",
              "null"
            ]
          },
          "year": {
            "type": [
              "string",
              "null"
            ],
            "description": "Empty (null) when the date is not known."
          },
          "status": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "project": {
            "type": [
              "string",
              "null"
            ],
            "description": "Project slug, when the award was for a project."
          },
          "with": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          }
        }
      },
      "Certificate": {
        "type": "object",
        "required": [
          "id",
          "title",
          "issuer",
          "platform",
          "date",
          "verify_url",
          "verify_note",
          "group",
          "summary",
          "skills"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "issuer": {
            "type": "string"
          },
          "platform": {
            "type": [
              "string",
              "null"
            ]
          },
          "date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "Date issued."
          },
          "verify_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "Public verification link, when there is one."
          },
          "verify_note": {
            "type": [
              "string",
              "null"
            ],
            "description": "How to verify when there is no link."
          },
          "group": {
            "type": [
              "string",
              "null"
            ]
          },
          "summary": {
            "type": [
              "string",
              "null"
            ]
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "FaqAnswer": {
        "type": "object",
        "required": [
          "question",
          "answer_markdown",
          "answer_text"
        ],
        "properties": {
          "question": {
            "type": "string"
          },
          "answer_markdown": {
            "type": "string",
            "description": "Markdown with absolute links."
          },
          "answer_text": {
            "type": "string",
            "description": "The same answer as plain text."
          }
        }
      },
      "ApiIndex": {
        "type": "object",
        "description": "The API root.",
        "required": [
          "version",
          "generated_at",
          "self",
          "html_url",
          "markdown_url",
          "name",
          "description",
          "status",
          "released",
          "base_url",
          "docs_url",
          "openapi_url",
          "api_catalog_url",
          "auth",
          "access",
          "format",
          "versioning",
          "deprecation",
          "errors",
          "rate_limits",
          "contact",
          "endpoints",
          "changelog"
        ],
        "properties": {
          "version": {
            "type": "string",
            "description": "API major version. Always \"v1\" under /data/v1/.",
            "const": "v1"
          },
          "generated_at": {
            "type": "string",
            "description": "When the files were last built (ISO 8601 date-time, UTC).",
            "format": "date-time"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This file."
          },
          "html_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "The human-readable page this data comes from."
          },
          "markdown_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "A clean markdown copy of that page."
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "description": "stable while this version is supported.",
            "enum": [
              "stable",
              "deprecated"
            ]
          },
          "released": {
            "type": "string",
            "format": "date",
            "description": "When this API version was first published."
          },
          "base_url": {
            "type": "string",
            "format": "uri"
          },
          "docs_url": {
            "type": "string",
            "format": "uri",
            "description": "Developer docs (HTML)."
          },
          "openapi_url": {
            "type": "string",
            "format": "uri"
          },
          "api_catalog_url": {
            "type": "string",
            "format": "uri",
            "description": "RFC 9727 API catalog."
          },
          "auth": {
            "type": "string",
            "description": "No authentication is needed.",
            "const": "none"
          },
          "access": {
            "type": "string",
            "description": "There are no write operations.",
            "const": "read-only"
          },
          "format": {
            "type": "string"
          },
          "versioning": {
            "type": "object",
            "required": [
              "scheme",
              "current",
              "policy",
              "notice_days",
              "announced_at"
            ],
            "properties": {
              "scheme": {
                "type": "string",
                "description": "The major version is in the URL path.",
                "const": "url-path"
              },
              "current": {
                "type": "string"
              },
              "policy": {
                "type": "string"
              },
              "notice_days": {
                "type": "integer",
                "description": "Minimum days of notice before a version is retired after its successor is announced."
              },
              "announced_at": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                },
                "description": "Where deprecations are announced."
              }
            }
          },
          "deprecation": {
            "type": "object",
            "description": "Machine-readable deprecation signal (the host cannot send Deprecation or Sunset headers).",
            "required": [
              "deprecated",
              "sunset",
              "successor_url"
            ],
            "properties": {
              "deprecated": {
                "type": "boolean"
              },
              "sunset": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date",
                "description": "The date this version stops being served, once deprecated."
              },
              "successor_url": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uri",
                "description": "Root of the replacement version, once announced."
              }
            }
          },
          "errors": {
            "type": "string"
          },
          "rate_limits": {
            "type": "string"
          },
          "contact": {
            "type": "object",
            "required": [
              "email",
              "form_url"
            ],
            "properties": {
              "email": {
                "type": "string",
                "format": "email"
              },
              "form_url": {
                "type": "string",
                "format": "uri"
              }
            }
          },
          "endpoints": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "href",
                "templated",
                "description"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "href": {
                  "type": "string",
                  "description": "Absolute URL, or a URI template when templated is true."
                },
                "templated": {
                  "type": "boolean"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "changelog": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "date",
                "version",
                "change"
              ],
              "properties": {
                "date": {
                  "type": "string",
                  "format": "date"
                },
                "version": {
                  "type": "string"
                },
                "change": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "Profile": {
        "type": "object",
        "description": "Who Aatman (AJ) Jain is.",
        "required": [
          "name",
          "display_name",
          "goes_by",
          "alternate_names",
          "pronouns",
          "pronunciation",
          "role",
          "one_line",
          "summary",
          "age",
          "age_as_of",
          "location",
          "works_remotely",
          "email",
          "website_url",
          "contact_url",
          "on_base44_since",
          "former_brand",
          "portrait",
          "bios",
          "naming_rules",
          "links",
          "stats",
          "reviews",
          "recognition",
          "services",
          "rates",
          "best_fit_for",
          "not_a_fit_for",
          "now",
          "knows_about",
          "programming_languages",
          "pages"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Legal-style name: \"Aatman Jain\"."
          },
          "display_name": {
            "type": "string",
            "description": "Name for first mention: \"Aatman (AJ) Jain\"."
          },
          "goes_by": {
            "type": "string"
          },
          "alternate_names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pronouns": {
            "type": [
              "string",
              "null"
            ]
          },
          "pronunciation": {
            "type": [
              "string",
              "null"
            ]
          },
          "role": {
            "type": [
              "string",
              "null"
            ]
          },
          "one_line": {
            "type": [
              "string",
              "null"
            ]
          },
          "summary": {
            "type": [
              "string",
              "null"
            ]
          },
          "age": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Age in years, as of age_as_of."
          },
          "age_as_of": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "location": {
            "type": "object",
            "required": [
              "city",
              "region",
              "country",
              "country_code",
              "label",
              "time_zone"
            ],
            "properties": {
              "city": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "region": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "country": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "country_code": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "label": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "time_zone": {
                "type": "string",
                "description": "IANA time zone."
              }
            }
          },
          "works_remotely": {
            "type": "boolean"
          },
          "email": {
            "type": "string",
            "description": "The only public email address.",
            "format": "email"
          },
          "website_url": {
            "type": "string",
            "format": "uri"
          },
          "contact_url": {
            "type": "string",
            "format": "uri",
            "description": "The contact form."
          },
          "on_base44_since": {
            "type": [
              "integer",
              "null"
            ]
          },
          "former_brand": {
            "oneOf": [
              {
                "type": "object",
                "required": [
                  "name",
                  "url",
                  "note"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "note": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "portrait": {
            "oneOf": [
              {
                "type": "object",
                "required": [
                  "url",
                  "cutout_url",
                  "alt",
                  "note"
                ],
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "cutout_url": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uri"
                  },
                  "alt": {
                    "type": "string"
                  },
                  "note": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "bios": {
            "type": "object",
            "required": [
              "short_first_person",
              "third_person_25",
              "third_person_50",
              "third_person_100",
              "third_person_200",
              "boilerplate"
            ],
            "properties": {
              "short_first_person": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "third_person_25": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "About 25 words."
              },
              "third_person_50": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "About 50 words."
              },
              "third_person_100": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "About 100 words."
              },
              "third_person_200": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "About 200 words."
              },
              "boilerplate": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "naming_rules": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "How to refer to AJ."
          },
          "links": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "label",
                "handle",
                "url"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "handle": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                }
              }
            },
            "description": "Profiles elsewhere."
          },
          "stats": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Stat"
            }
          },
          "reviews": {
            "type": "object",
            "required": [
              "rating",
              "count",
              "platform",
              "url",
              "label"
            ],
            "properties": {
              "rating": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "count": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "platform": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uri"
              },
              "label": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "recognition": {
            "type": "object",
            "required": [
              "awards",
              "certificates",
              "url"
            ],
            "properties": {
              "awards": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Award"
                }
              },
              "certificates": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Certificate"
                }
              },
              "url": {
                "type": "string",
                "format": "uri"
              }
            }
          },
          "services": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "slug",
                "title",
                "short",
                "url"
              ],
              "properties": {
                "slug": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "short": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                }
              }
            }
          },
          "rates": {
            "type": "string",
            "description": "Rates are never published."
          },
          "best_fit_for": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "job",
                "url"
              ],
              "properties": {
                "job": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                }
              }
            },
            "description": "Jobs AJ is a good fit for."
          },
          "not_a_fit_for": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Jobs AJ is not a fit for."
          },
          "now": {
            "type": "object",
            "required": [
              "updated",
              "learning",
              "building",
              "looking_for",
              "url"
            ],
            "properties": {
              "updated": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "date"
              },
              "learning": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NowItem"
                }
              },
              "building": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NowItem"
                }
              },
              "looking_for": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NowItem"
                }
              },
              "url": {
                "type": "string",
                "format": "uri"
              }
            }
          },
          "knows_about": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "programming_languages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pages": {
            "type": "object",
            "required": [
              "about",
              "story",
              "work",
              "services",
              "internships",
              "testimonials",
              "press",
              "faq",
              "contact"
            ],
            "properties": {
              "about": {
                "type": "string",
                "format": "uri"
              },
              "story": {
                "type": "string",
                "format": "uri"
              },
              "work": {
                "type": "string",
                "format": "uri"
              },
              "services": {
                "type": "string",
                "format": "uri"
              },
              "internships": {
                "type": "string",
                "format": "uri"
              },
              "testimonials": {
                "type": "string",
                "format": "uri"
              },
              "press": {
                "type": "string",
                "format": "uri"
              },
              "faq": {
                "type": "string",
                "format": "uri"
              },
              "contact": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "ProfileResponse": {
        "type": "object",
        "required": [
          "version",
          "generated_at",
          "self",
          "html_url",
          "markdown_url",
          "data"
        ],
        "properties": {
          "version": {
            "type": "string",
            "description": "API major version. Always \"v1\" under /data/v1/.",
            "const": "v1"
          },
          "generated_at": {
            "type": "string",
            "description": "When the files were last built (ISO 8601 date-time, UTC).",
            "format": "date-time"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This file."
          },
          "html_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "The human-readable page this data comes from."
          },
          "markdown_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "A clean markdown copy of that page."
          },
          "data": {
            "$ref": "#/components/schemas/Profile"
          }
        }
      },
      "ProjectSummary": {
        "type": "object",
        "required": [
          "slug",
          "title",
          "tagline",
          "summary",
          "category",
          "year",
          "role",
          "timeline",
          "stage",
          "featured",
          "order",
          "stack",
          "stats",
          "case_study_url",
          "markdown_url",
          "detail_url",
          "live_url",
          "repo_url",
          "cover_image_url",
          "cover_image_alt"
        ],
        "properties": {
          "slug": {
            "type": "string",
            "description": "Stable identifier, also used in /data/v1/projects/{slug}.json and /work/{slug}."
          },
          "title": {
            "type": "string"
          },
          "tagline": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "description": "Plain text."
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "year": {
            "type": [
              "string",
              "null"
            ],
            "description": "Year as written on the site, e.g. \"2026\"."
          },
          "role": {
            "type": [
              "string",
              "null"
            ],
            "description": "AJ's role."
          },
          "timeline": {
            "type": [
              "string",
              "null"
            ]
          },
          "stage": {
            "type": [
              "string",
              "null"
            ],
            "description": "live, in-progress or archived."
          },
          "featured": {
            "type": "boolean"
          },
          "order": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Display order on the site."
          },
          "stack": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Tools and platforms used."
          },
          "stats": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "value",
                "label"
              ],
              "properties": {
                "value": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                }
              }
            },
            "description": "Key facts shown on the case study."
          },
          "case_study_url": {
            "type": "string",
            "format": "uri",
            "description": "The case study page."
          },
          "markdown_url": {
            "type": "string",
            "format": "uri",
            "description": "Markdown copy of the case study."
          },
          "detail_url": {
            "type": "string",
            "format": "uri",
            "description": "The full record in this API."
          },
          "live_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "The live app."
          },
          "repo_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "Source code, when public."
          },
          "cover_image_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "cover_image_alt": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "OtherProduct": {
        "type": "object",
        "required": [
          "slug",
          "title",
          "tagline",
          "summary",
          "stage",
          "stage_label",
          "live_url",
          "repo_url",
          "stack",
          "tag",
          "credit",
          "my_part"
        ],
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "tagline": {
            "type": [
              "string",
              "null"
            ]
          },
          "summary": {
            "type": [
              "string",
              "null"
            ]
          },
          "stage": {
            "type": [
              "string",
              "null"
            ]
          },
          "stage_label": {
            "type": [
              "string",
              "null"
            ]
          },
          "live_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "repo_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "stack": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tag": {
            "type": [
              "string",
              "null"
            ]
          },
          "credit": {
            "oneOf": [
              {
                "type": "object",
                "required": [
                  "text",
                  "url"
                ],
                "properties": {
                  "text": {
                    "type": "string"
                  },
                  "url": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uri"
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "Credit for work this builds on."
          },
          "my_part": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "ProjectsResponse": {
        "type": "object",
        "required": [
          "version",
          "generated_at",
          "self",
          "html_url",
          "markdown_url",
          "count",
          "items",
          "other_products",
          "in_progress",
          "note"
        ],
        "properties": {
          "version": {
            "type": "string",
            "description": "API major version. Always \"v1\" under /data/v1/.",
            "const": "v1"
          },
          "generated_at": {
            "type": "string",
            "description": "When the files were last built (ISO 8601 date-time, UTC).",
            "format": "date-time"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This file."
          },
          "html_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "The human-readable page this data comes from."
          },
          "markdown_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "A clean markdown copy of that page."
          },
          "count": {
            "type": "integer"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectSummary"
            },
            "description": "The case studies, in display order."
          },
          "other_products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OtherProduct"
            }
          },
          "in_progress": {
            "type": [
              "string",
              "null"
            ],
            "description": "The one public line about work in progress."
          },
          "note": {
            "type": "string"
          }
        }
      },
      "Project": {
        "type": "object",
        "description": "A case study in full.",
        "required": [
          "slug",
          "title",
          "tagline",
          "summary",
          "category",
          "year",
          "role",
          "timeline",
          "stage",
          "featured",
          "order",
          "stack",
          "stats",
          "case_study_url",
          "markdown_url",
          "detail_url",
          "live_url",
          "repo_url",
          "cover_image_url",
          "cover_image_alt",
          "og_image_url",
          "brand_colors",
          "problem_markdown",
          "approach_markdown",
          "build_markdown",
          "outcome_markdown",
          "features",
          "quote",
          "highlights",
          "images"
        ],
        "properties": {
          "slug": {
            "type": "string",
            "description": "Stable identifier, also used in /data/v1/projects/{slug}.json and /work/{slug}."
          },
          "title": {
            "type": "string"
          },
          "tagline": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "description": "Plain text."
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "year": {
            "type": [
              "string",
              "null"
            ],
            "description": "Year as written on the site, e.g. \"2026\"."
          },
          "role": {
            "type": [
              "string",
              "null"
            ],
            "description": "AJ's role."
          },
          "timeline": {
            "type": [
              "string",
              "null"
            ]
          },
          "stage": {
            "type": [
              "string",
              "null"
            ],
            "description": "live, in-progress or archived."
          },
          "featured": {
            "type": "boolean"
          },
          "order": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Display order on the site."
          },
          "stack": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Tools and platforms used."
          },
          "stats": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "value",
                "label"
              ],
              "properties": {
                "value": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                }
              }
            },
            "description": "Key facts shown on the case study."
          },
          "case_study_url": {
            "type": "string",
            "format": "uri",
            "description": "The case study page."
          },
          "markdown_url": {
            "type": "string",
            "format": "uri",
            "description": "Markdown copy of the case study."
          },
          "detail_url": {
            "type": "string",
            "format": "uri",
            "description": "The full record in this API."
          },
          "live_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "The live app."
          },
          "repo_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "Source code, when public."
          },
          "cover_image_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "cover_image_alt": {
            "type": [
              "string",
              "null"
            ]
          },
          "og_image_url": {
            "type": "string",
            "format": "uri"
          },
          "brand_colors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Hex colours."
          },
          "problem_markdown": {
            "type": [
              "string",
              "null"
            ]
          },
          "approach_markdown": {
            "type": [
              "string",
              "null"
            ]
          },
          "build_markdown": {
            "type": [
              "string",
              "null"
            ]
          },
          "outcome_markdown": {
            "type": [
              "string",
              "null"
            ]
          },
          "features": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "title",
                "description"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "quote": {
            "oneOf": [
              {
                "type": "object",
                "required": [
                  "text",
                  "source"
                ],
                "properties": {
                  "text": {
                    "type": "string"
                  },
                  "source": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "A line from the project's own site."
          },
          "highlights": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "images": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "url",
                "small_url",
                "alt",
                "caption",
                "annotated",
                "width",
                "height"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "small_url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "uri",
                  "description": "Half-size copy."
                },
                "alt": {
                  "type": "string"
                },
                "caption": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "annotated": {
                  "type": "boolean",
                  "description": "A scrapbook composite of a real screenshot; the UI itself is untouched."
                },
                "width": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "height": {
                  "type": [
                    "integer",
                    "null"
                  ]
                }
              }
            }
          }
        }
      },
      "ProjectResponse": {
        "type": "object",
        "required": [
          "version",
          "generated_at",
          "self",
          "html_url",
          "markdown_url",
          "data"
        ],
        "properties": {
          "version": {
            "type": "string",
            "description": "API major version. Always \"v1\" under /data/v1/.",
            "const": "v1"
          },
          "generated_at": {
            "type": "string",
            "description": "When the files were last built (ISO 8601 date-time, UTC).",
            "format": "date-time"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This file."
          },
          "html_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "The human-readable page this data comes from."
          },
          "markdown_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "A clean markdown copy of that page."
          },
          "data": {
            "$ref": "#/components/schemas/Project"
          }
        }
      },
      "Service": {
        "type": "object",
        "required": [
          "slug",
          "title",
          "short",
          "summary",
          "url",
          "markdown_url",
          "who_for",
          "what_you_get",
          "how_it_goes",
          "tools",
          "reviews",
          "faqs",
          "related"
        ],
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "short": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "markdown_url": {
            "type": "string",
            "format": "uri"
          },
          "who_for": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "what_you_get": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "title",
                "description"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "how_it_goes": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "step",
                "title",
                "description"
              ],
              "properties": {
                "step": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "tools": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "reviews": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "quote",
                "by",
                "testimonial_id"
              ],
              "properties": {
                "quote": {
                  "type": "string",
                  "description": "Verbatim excerpt; \"…\" marks a trim."
                },
                "by": {
                  "type": "string"
                },
                "testimonial_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          },
          "faqs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FaqAnswer"
            }
          },
          "related": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Slugs of related services."
          }
        }
      },
      "ServicesResponse": {
        "type": "object",
        "required": [
          "version",
          "generated_at",
          "self",
          "html_url",
          "markdown_url",
          "count",
          "items",
          "rates",
          "ideal_client",
          "not_a_fit",
          "how_to_start"
        ],
        "properties": {
          "version": {
            "type": "string",
            "description": "API major version. Always \"v1\" under /data/v1/.",
            "const": "v1"
          },
          "generated_at": {
            "type": "string",
            "description": "When the files were last built (ISO 8601 date-time, UTC).",
            "format": "date-time"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This file."
          },
          "html_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "The human-readable page this data comes from."
          },
          "markdown_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "A clean markdown copy of that page."
          },
          "count": {
            "type": "integer"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Service"
            }
          },
          "rates": {
            "type": "string"
          },
          "ideal_client": {
            "type": "object",
            "required": [
              "title",
              "intro",
              "points"
            ],
            "properties": {
              "title": {
                "type": "string"
              },
              "intro": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "points": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "title",
                    "description"
                  ],
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "not_a_fit": {
            "type": "object",
            "required": [
              "title",
              "intro",
              "points",
              "closing"
            ],
            "properties": {
              "title": {
                "type": "string"
              },
              "intro": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "points": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "closing": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "how_to_start": {
            "type": "object",
            "required": [
              "ways",
              "include",
              "reply"
            ],
            "properties": {
              "ways": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "id",
                    "title",
                    "description",
                    "url"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "url": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri"
                    }
                  }
                }
              },
              "include": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "reply": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          }
        }
      },
      "Testimonial": {
        "type": "object",
        "required": [
          "id",
          "name",
          "attribution",
          "role",
          "company",
          "quote",
          "excerpt",
          "source",
          "rating",
          "featured",
          "order"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "attribution": {
            "type": "string",
            "description": "Show this with the quote."
          },
          "role": {
            "type": [
              "string",
              "null"
            ]
          },
          "company": {
            "type": [
              "string",
              "null"
            ]
          },
          "quote": {
            "type": "string",
            "description": "Verbatim, typos included."
          },
          "excerpt": {
            "type": [
              "string",
              "null"
            ],
            "description": "A verbatim excerpt trimmed with \"…\"."
          },
          "source": {
            "type": "string"
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "featured": {
            "type": "boolean"
          },
          "order": {
            "type": [
              "integer",
              "null"
            ]
          }
        }
      },
      "TestimonialsResponse": {
        "type": "object",
        "required": [
          "version",
          "generated_at",
          "self",
          "html_url",
          "markdown_url",
          "summary",
          "usage",
          "count",
          "items"
        ],
        "properties": {
          "version": {
            "type": "string",
            "description": "API major version. Always \"v1\" under /data/v1/.",
            "const": "v1"
          },
          "generated_at": {
            "type": "string",
            "description": "When the files were last built (ISO 8601 date-time, UTC).",
            "format": "date-time"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This file."
          },
          "html_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "The human-readable page this data comes from."
          },
          "markdown_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "A clean markdown copy of that page."
          },
          "summary": {
            "type": "object",
            "required": [
              "rating",
              "count",
              "platform",
              "url",
              "label"
            ],
            "properties": {
              "rating": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "count": {
                "type": "integer"
              },
              "platform": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uri"
              },
              "label": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "usage": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Testimonial"
            }
          }
        }
      },
      "GlossaryTerm": {
        "type": "object",
        "required": [
          "slug",
          "term",
          "aka",
          "category",
          "short",
          "body_markdown",
          "body_text",
          "related",
          "see_also",
          "sources",
          "url",
          "markdown_url"
        ],
        "properties": {
          "slug": {
            "type": "string"
          },
          "term": {
            "type": "string"
          },
          "aka": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Other names for the term."
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "short": {
            "type": "string",
            "description": "One-sentence definition."
          },
          "body_markdown": {
            "type": "string"
          },
          "body_text": {
            "type": "string"
          },
          "related": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Slugs of related terms."
          },
          "see_also": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Link"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Link"
            },
            "description": "Official docs the entry was checked against."
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "markdown_url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "GlossaryResponse": {
        "type": "object",
        "required": [
          "version",
          "generated_at",
          "self",
          "html_url",
          "markdown_url",
          "intro",
          "last_checked",
          "categories",
          "count",
          "items"
        ],
        "properties": {
          "version": {
            "type": "string",
            "description": "API major version. Always \"v1\" under /data/v1/.",
            "const": "v1"
          },
          "generated_at": {
            "type": "string",
            "description": "When the files were last built (ISO 8601 date-time, UTC).",
            "format": "date-time"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This file."
          },
          "html_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "The human-readable page this data comes from."
          },
          "markdown_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "A clean markdown copy of that page."
          },
          "intro": {
            "type": [
              "string",
              "null"
            ]
          },
          "last_checked": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "When the Base44 entries were last checked against the official docs."
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "title",
                "intro"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "intro": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          },
          "count": {
            "type": "integer"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GlossaryTerm"
            }
          }
        }
      },
      "Resource": {
        "type": "object",
        "required": [
          "slug",
          "title",
          "description",
          "type",
          "label",
          "url",
          "repo_url",
          "case_study_url",
          "tags",
          "stage",
          "license",
          "language",
          "install",
          "credit",
          "note",
          "featured",
          "order"
        ],
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "description": "skill, guide, tool, template, repo, doc or contribution."
          },
          "label": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "repo_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "case_study_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "stage": {
            "type": [
              "string",
              "null"
            ]
          },
          "license": {
            "type": [
              "string",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "install": {
            "type": [
              "string",
              "null"
            ]
          },
          "credit": {
            "oneOf": [
              {
                "type": "object",
                "required": [
                  "text",
                  "url"
                ],
                "properties": {
                  "text": {
                    "type": "string"
                  },
                  "url": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uri"
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "note": {
            "type": [
              "string",
              "null"
            ]
          },
          "featured": {
            "type": "boolean"
          },
          "order": {
            "type": [
              "integer",
              "null"
            ]
          }
        }
      },
      "ResourcesResponse": {
        "type": "object",
        "required": [
          "version",
          "generated_at",
          "self",
          "html_url",
          "markdown_url",
          "groups",
          "agent_skills_index_url",
          "count",
          "items"
        ],
        "properties": {
          "version": {
            "type": "string",
            "description": "API major version. Always \"v1\" under /data/v1/.",
            "const": "v1"
          },
          "generated_at": {
            "type": "string",
            "description": "When the files were last built (ISO 8601 date-time, UTC).",
            "format": "date-time"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This file."
          },
          "html_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "The human-readable page this data comes from."
          },
          "markdown_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "A clean markdown copy of that page."
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "title",
                "intro",
                "types",
                "url"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "intro": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "types": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "uri"
                }
              }
            }
          },
          "agent_skills_index_url": {
            "type": "string",
            "format": "uri"
          },
          "count": {
            "type": "integer"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Resource"
            }
          }
        }
      },
      "FaqItem": {
        "type": "object",
        "required": [
          "id",
          "group",
          "question",
          "answer_markdown",
          "answer_text"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "group": {
            "type": "string"
          },
          "question": {
            "type": "string"
          },
          "answer_markdown": {
            "type": "string"
          },
          "answer_text": {
            "type": "string"
          }
        }
      },
      "FaqResponse": {
        "type": "object",
        "required": [
          "version",
          "generated_at",
          "self",
          "html_url",
          "markdown_url",
          "groups",
          "count",
          "items"
        ],
        "properties": {
          "version": {
            "type": "string",
            "description": "API major version. Always \"v1\" under /data/v1/.",
            "const": "v1"
          },
          "generated_at": {
            "type": "string",
            "description": "When the files were last built (ISO 8601 date-time, UTC).",
            "format": "date-time"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This file."
          },
          "html_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "The human-readable page this data comes from."
          },
          "markdown_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "A clean markdown copy of that page."
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "title",
                "intro"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "intro": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          },
          "count": {
            "type": "integer"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FaqItem"
            }
          }
        }
      }
    }
  }
}
