{
  "x-generator": "scripts/build-openapi.mjs — do not edit by hand. Run `yarn build:openapi` to regenerate from dynamic-routes.js.",
  "openapi": "3.1.0",
  "info": {
    "title": "Whatagraph Content API",
    "summary": "Public read-only access to whatagraph.com marketing content (blog, templates, integrations, careers, webinars, etc.) served by a Strapi 5 backend.",
    "description": "This API powers the public-facing whatagraph.com website. All endpoints are anonymous-readable; no API key is required.\nREST conventions follow [Strapi 5](https://docs.strapi.io/cms/api/rest).\nCommon query params: `fields`, `populate`, `filters`, `pagination`, `sort`, `locale`.\n\nPopulate behaviour matches Strapi 5 (nested `=true`, dynamic-zone `on[]`, `pLevel` / legacy `populate=deep`).\nSee the `populate` parameter description and `website-frontend/utils/strapi-populate/` for patterns used by the Nuxt app.\n\nAuto-generated from `website-frontend/dynamic-routes.js`. Run `yarn build:openapi` to regenerate. Do not edit by hand.",
    "version": "1.0.0",
    "contact": {
      "name": "Whatagraph",
      "url": "https://whatagraph.com/book-a-call"
    },
    "license": {
      "name": "Proprietary — Whatagraph",
      "url": "https://whatagraph.com/terms-and-conditions"
    }
  },
  "servers": [
    {
      "url": "https://whatadmin.whatagraph.com",
      "description": "Production Strapi backend"
    }
  ],
  "tags": [
    {
      "name": "Collections",
      "description": "Strapi collection types — paginated lists of entries with rich query support."
    },
    {
      "name": "Single types",
      "description": "Strapi single types — one document per type, returned as a single object."
    },
    {
      "name": "Singletons",
      "description": "Bespoke read-only endpoints with a fixed shape."
    }
  ],
  "paths": {
    "/api/pages": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List generic content pages (catch-all routes)",
        "operationId": "listPages",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/pages/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get generic content page by id",
        "operationId": "getPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/articles": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List blog articles",
        "operationId": "listArticles",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/articles/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get blog article by id",
        "operationId": "getArticle",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/article-categories": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List blog article categories",
        "operationId": "listArticleCategories",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/article-categories/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get blog article category by id",
        "operationId": "getArticleCategory",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/authors": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List blog authors",
        "operationId": "listAuthors",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/authors/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get blog author by id",
        "operationId": "getAuthor",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/guides": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List long-form guides",
        "operationId": "listGuides",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/guides/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get guide by id",
        "operationId": "getGuide",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/templates": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List report templates",
        "operationId": "listTemplates",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/templates/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get report template by id",
        "operationId": "getTemplate",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/iq-use-cases": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List IQ Agents use cases",
        "operationId": "listIqUseCases",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/iq-use-cases/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get IQ Agents use case by id",
        "operationId": "getIqUseCase",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/departments": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List career departments",
        "operationId": "listDepartments",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/departments/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get career department by id",
        "operationId": "getDepartment",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/job-offers": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List open job offers",
        "operationId": "listJobOffers",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/job-offers/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get job offer by id",
        "operationId": "getJobOffer",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/integration-pages": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List per-integration landing pages",
        "operationId": "listIntegrationPages",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/integration-pages/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get integration page by id",
        "operationId": "getIntegrationPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/etls": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List data-transfer (ETL) destinations",
        "operationId": "listEtls",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/etls/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get ETL destination by id",
        "operationId": "getEtl",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/etl-integrations": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List per-source ETL integration pages",
        "operationId": "listEtlIntegrations",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/etl-integrations/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get ETL integration page by id",
        "operationId": "getEtlIntegration",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/webinars": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List webinars (upcoming and recorded)",
        "operationId": "listWebinars",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/webinars/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get webinar by id",
        "operationId": "getWebinar",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/case-studies": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List customer case studies",
        "operationId": "listCaseStudies",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/case-studies/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get case study by id",
        "operationId": "getCaseStudy",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/free-marketing-tools": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List free marketing tool pages",
        "operationId": "listFreeMarketingTools",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/free-marketing-tools/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get free marketing tool page by id",
        "operationId": "getFreeMarketingTool",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/thank-yous": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List thank-you pages",
        "operationId": "listThankYous",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/thank-yous/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get thank-you page by id",
        "operationId": "getThankYou",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/tool-reviews": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "List third-party tool reviews",
        "operationId": "listToolReviews",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Filters"
          },
          {
            "$ref": "#/components/parameters/PaginationPage"
          },
          {
            "$ref": "#/components/parameters/PaginationPageSize"
          },
          {
            "$ref": "#/components/parameters/PaginationLimit"
          },
          {
            "$ref": "#/components/parameters/Sort"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiCollection"
          },
          "400": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/tool-reviews/{id}": {
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get tool review by id",
        "operationId": "getToolReview",
        "parameters": [
          {
            "$ref": "#/components/parameters/Id"
          },
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/home-v4": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the homepage content",
        "operationId": "getHomePage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/blog": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the blog index page content",
        "operationId": "getBlogPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/career": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the careers index page content",
        "operationId": "getCareerPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/features-wg3-5": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the features page content",
        "operationId": "getFeaturesPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/integrations-page": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the integrations index page content",
        "operationId": "getIntegrationsPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/marketing-annual-report": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the marketing annual report page content",
        "operationId": "getMarketingAnnualReportPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/templates-core": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the templates index page content",
        "operationId": "getTemplatesPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/iq-use-cases-page": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the IQ Agents use-case library content",
        "operationId": "getIqUseCasesPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/webinar-page": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the webinars index page content",
        "operationId": "getWebinarsPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/book-a-demo": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the book-a-call page content",
        "operationId": "getBookADemoPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/agency-hub": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the agency hub page content",
        "operationId": "getAgencyHubPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/case-study-page": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the case studies index page content",
        "operationId": "getCaseStudiesPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/free-marketing-tools-page": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the free marketing tools index page content",
        "operationId": "getFreeMarketingToolsPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/tool-reviews-page": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the tool reviews index page content",
        "operationId": "getToolReviewsPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/pricing2": {
      "get": {
        "tags": [
          "Single types"
        ],
        "summary": "Get the pricing page content",
        "operationId": "getPricingPage",
        "parameters": [
          {
            "$ref": "#/components/parameters/Fields"
          },
          {
            "$ref": "#/components/parameters/Populate"
          },
          {
            "$ref": "#/components/parameters/Locale"
          },
          {
            "$ref": "#/components/parameters/PublicationState"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/StrapiEntity"
          },
          "404": {
            "$ref": "#/components/responses/StrapiError"
          }
        }
      }
    },
    "/api/redirect": {
      "get": {
        "tags": [
          "Singletons"
        ],
        "summary": "List configured site redirects",
        "description": "Returns the active set of from/to redirects used by the Nuxt site to filter prerendered URLs and produce vercel.json redirect rules. Hit with `?populate[0]=redirect` to expand the redirect array.",
        "operationId": "getRedirects",
        "parameters": [
          {
            "$ref": "#/components/parameters/Populate"
          }
        ],
        "responses": {
          "200": {
            "description": "Redirect document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "integer"
                        },
                        "redirect": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "from": {
                                "type": "string",
                                "examples": [
                                  "/old-path"
                                ]
                              },
                              "to": {
                                "type": "string",
                                "examples": [
                                  "/new-path"
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "parameters": {
      "Id": {
        "name": "id",
        "in": "path",
        "required": true,
        "description": "Entry identifier. Strapi 5 prefers `documentId` (string) for `GET /api/{type}/{id}`; numeric `id` may return 404. The Nuxt app usually queries collections with `?filters[id][$eq]=…` or `?filters[slug][$eq]=…` instead.",
        "schema": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 1
            },
            {
              "type": "string"
            }
          ]
        }
      },
      "Fields": {
        "name": "fields",
        "in": "query",
        "description": "Restrict returned attributes. Indexed array syntax: `?fields[0]=slug&fields[1]=title`.",
        "schema": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "style": "deepObject",
        "explode": true
      },
      "Populate": {
        "name": "populate",
        "in": "query",
        "description": "Populate relations, media, components, and dynamic zones. See [Strapi 5 populate](https://docs.strapi.io/cms/api/rest/populate-select).\n\n**Strapi 5 (supported)**\n- One level: `?populate=*` or `?populate[0]=cover_image&populate[1]=author`.\n- Nested: `?populate[author][populate][avatar]=true` (use `=true`, not `=*`, on components).\n- Dynamic zones: `?populate[content][on][sections.hero][populate][image]=true`.\n- Field selection: `?populate[seo][fields][0]=metaTitle` alongside nested populate.\n\n**Deep populate** ([`strapi-v5-plugin-populate-deep`](https://github.com/NEDDL/strapi-v5-plugin-populate-deep))\n- Native: `?pLevel` or `?pLevel=5` (default depth 5).\n- Legacy (frontend): `?populate=deep` or `?populate=deep,N` — mapped to `pLevel` by backend middleware.\n\n**Not supported on Strapi 5 (v4-only; returns 400)**\n- Comma lists: `?populate[content][populate][0]=items.media,CTA,cta,…`.\n- Dot paths with field picks: `?populate[7]=banners.bottom_banner.image.url`, `?populate[3]=author.avatar`.\n- `populate[relation]=*` on some components (use explicit nested keys).\n\n**Frontend query builders** (canonical S5 strings): `website-frontend/utils/strapi-populate/` — `getCompetitorPopulateParams()`, `getTemplatePopulateParams()`, `getArticlePopulateParams()`, etc.\n\nPrefer explicit populate over deep/`pLevel` when possible; deep queries are heavier.",
        "schema": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "object",
              "additionalProperties": true
            }
          ]
        },
        "examples": {
          "shallowWildcard": {
            "summary": "One-level wildcard",
            "value": "*"
          },
          "nestedRelation": {
            "summary": "Nested relation (Strapi 5)",
            "value": {
              "author": {
                "populate": {
                  "avatar": true
                }
              }
            }
          },
          "dynamicZone": {
            "summary": "Dynamic zone component (Strapi 5)",
            "value": {
              "content": {
                "on": {
                  "sections.hero": {
                    "populate": {
                      "image": true
                    }
                  }
                }
              }
            }
          },
          "deepLegacy": {
            "summary": "Legacy deep populate (mapped to pLevel)",
            "value": "deep,5"
          },
          "pLevel": {
            "summary": "Deep populate plugin (Strapi 5)",
            "value": "5"
          },
          "arrayForm": {
            "summary": "Indexed top-level relations",
            "value": [
              "cover_image",
              "article_category"
            ]
          }
        }
      },
      "Filters": {
        "name": "filters",
        "in": "query",
        "description": "Filter results. Object syntax: `?filters[slug][$eq]=foo`. See Strapi REST docs for the full operator list.",
        "schema": {
          "type": "object",
          "additionalProperties": true
        }
      },
      "PaginationPage": {
        "name": "pagination[page]",
        "in": "query",
        "description": "1-indexed page number.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "default": 1
        }
      },
      "PaginationPageSize": {
        "name": "pagination[pageSize]",
        "in": "query",
        "description": "Page size; defaults to 25.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 25
        }
      },
      "PaginationLimit": {
        "name": "pagination[limit]",
        "in": "query",
        "description": "Hard cap on returned items. Use `-1` to request all entries (use sparingly).",
        "schema": {
          "type": "integer",
          "minimum": -1
        }
      },
      "Sort": {
        "name": "sort",
        "in": "query",
        "description": "Sort by attribute. Examples: `?sort=publishedAt:desc`, `?sort[0]=title:asc&sort[1]=id:asc`.",
        "schema": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        }
      },
      "Locale": {
        "name": "locale",
        "in": "query",
        "description": "Strapi i18n locale code. The Whatagraph backend currently serves English content only.",
        "schema": {
          "type": "string",
          "default": "en"
        }
      },
      "PublicationState": {
        "name": "publicationState",
        "in": "query",
        "description": "`live` returns published entries only (default). `preview` returns drafts too — typically requires authentication.",
        "schema": {
          "type": "string",
          "enum": [
            "live",
            "preview"
          ],
          "default": "live"
        }
      }
    },
    "responses": {
      "StrapiCollection": {
        "description": "Strapi collection response — paginated array of entries with metadata.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "data",
                "meta"
              ],
              "properties": {
                "data": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StrapiEntry"
                  }
                },
                "meta": {
                  "$ref": "#/components/schemas/StrapiCollectionMeta"
                }
              }
            }
          }
        }
      },
      "StrapiEntity": {
        "description": "Strapi single-entry response.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "data"
              ],
              "properties": {
                "data": {
                  "$ref": "#/components/schemas/StrapiEntry"
                },
                "meta": {
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "StrapiError": {
        "description": "Strapi error envelope.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/StrapiError"
            }
          }
        }
      }
    },
    "schemas": {
      "StrapiEntry": {
        "type": "object",
        "required": [
          "id"
        ],
        "additionalProperties": true,
        "description": "A Strapi content entry. Responses include `id`, `documentId`, and attributes at the top level (flat shape, not wrapped in `attributes`). Which keys appear depends on `fields` and `populate`.",
        "properties": {
          "id": {
            "type": "integer",
            "examples": [
              1729
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "publishedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },
      "StrapiCollectionMeta": {
        "type": "object",
        "properties": {
          "pagination": {
            "$ref": "#/components/schemas/StrapiPagination"
          }
        }
      },
      "StrapiPagination": {
        "type": "object",
        "required": [
          "page",
          "pageSize",
          "pageCount",
          "total"
        ],
        "properties": {
          "page": {
            "type": "integer",
            "examples": [
              1
            ]
          },
          "pageSize": {
            "type": "integer",
            "examples": [
              25
            ]
          },
          "pageCount": {
            "type": "integer",
            "examples": [
              12
            ]
          },
          "total": {
            "type": "integer",
            "examples": [
              291
            ]
          }
        }
      },
      "StrapiError": {
        "type": "object",
        "required": [
          "data",
          "error"
        ],
        "properties": {
          "data": {
            "type": [
              "object",
              "array",
              "null"
            ]
          },
          "error": {
            "type": "object",
            "required": [
              "status",
              "name",
              "message"
            ],
            "properties": {
              "status": {
                "type": "integer",
                "examples": [
                  404
                ]
              },
              "name": {
                "type": "string",
                "examples": [
                  "NotFoundError"
                ]
              },
              "message": {
                "type": "string",
                "examples": [
                  "Not Found"
                ]
              },
              "details": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    }
  }
}
