Gotham Greens Pages API

Public, unauthenticated read access to the static marketing pages of gothamgreens.com (Our Story, Our Farms, Our Products, Find Us, FAQ, Careers) via the WordPress core REST API.

OpenAPI Specification

gotham-greens-pages-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Gotham Greens Pages API
  version: wp/v2
  summary: Public read surface of the static marketing pages on gothamgreens.com.
  description: >-
    The `page` type behind gothamgreens.com — Our Story, Our Farms, Our Products, Find Us, FAQ,
    Careers, Recent Press, Terms of Use and Privacy Policy — exposed anonymously through the
    WordPress core REST API. Derived from the live route index and verified with anonymous
    probes returning HTTP 200. Write operations on these routes require authentication and are
    not documented here.
  contact:
    name: Gotham Greens
    url: https://www.gothamgreens.com/contact/
  license:
    name: Site content — all rights reserved, see Terms of Use
    url: https://www.gothamgreens.com/terms-of-use/
  x-apis-io-provenance:
    method: derived
    source: https://www.gothamgreens.com/wp-json/
    derived_on: '2026-08-01'
    note: >-
      Routes enumerated from the live wp-json discovery document (406 routes across 17
      namespaces); each operation below was probed anonymously and returned HTTP 200. Schemas
      reflect the fields observed in live responses on 2026-08-01. No fabricated operations.
servers:
- url: https://www.gothamgreens.com/wp-json
  description: Production
tags:
- name: Pages
  description: Static marketing and legal pages of the Gotham Greens corporate site.
paths:
  /wp/v2/pages:
    get:
      tags:
      - Pages
      operationId: listPages
      summary: List site pages
      description: >-
        Returns a paginated collection of published pages. Total item and page counts come back
        in the X-WP-Total and X-WP-TotalPages headers.
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/perPage'
      - $ref: '#/components/parameters/search'
      - $ref: '#/components/parameters/order'
      - $ref: '#/components/parameters/orderby'
      - $ref: '#/components/parameters/context'
      - name: slug
        in: query
        description: Limit results to pages with one of the given slugs.
        schema:
          type: array
          items:
            type: string
      - name: parent
        in: query
        description: Limit results to pages with the given parent page IDs.
        schema:
          type: array
          items:
            type: integer
      - name: menu_order
        in: query
        description: Limit results to pages with a specific menu_order value.
        schema:
          type: integer
      responses:
        '200':
          description: A page of site pages.
          headers:
            X-WP-Total:
              $ref: '#/components/headers/XWPTotal'
            X-WP-TotalPages:
              $ref: '#/components/headers/XWPTotalPages'
            Link:
              $ref: '#/components/headers/LinkPagination'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Page'
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/pages/{id}:
    get:
      tags:
      - Pages
      operationId: getPage
      summary: Get a site page
      description: Returns a single published page by its numeric WordPress page ID.
      parameters:
      - $ref: '#/components/parameters/id'
      - $ref: '#/components/parameters/context'
      responses:
        '200':
          description: The requested page.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Page'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    id:
      name: id
      in: path
      required: true
      description: Unique numeric identifier for the object.
      schema:
        type: integer
    page:
      name: page
      in: query
      description: Current page of the collection. Defaults to 1.
      schema:
        type: integer
        minimum: 1
        default: 1
    perPage:
      name: per_page
      in: query
      description: >-
        Maximum number of items to be returned in the result set. Verified live: values outside
        1-100 return HTTP 400 `rest_invalid_param`.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 10
    search:
      name: search
      in: query
      description: Limit results to those matching a string.
      schema:
        type: string
    order:
      name: order
      in: query
      description: Order sort attribute ascending or descending.
      schema:
        type: string
        enum: [asc, desc]
    orderby:
      name: orderby
      in: query
      description: Sort collection by object attribute.
      schema:
        type: string
    context:
      name: context
      in: query
      description: >-
        Scope under which the request is made; determines fields present in the response. Only
        `view` and `embed` are available anonymously.
      schema:
        type: string
        enum: [view, embed]
        default: view
  headers:
    XWPTotal:
      description: Total number of items in the collection.
      schema:
        type: integer
    XWPTotalPages:
      description: Total number of pages in the collection at the current per_page.
      schema:
        type: integer
    LinkPagination:
      description: RFC 8288 Link header carrying `next` and `prev` pagination relations.
      schema:
        type: string
  responses:
    NotFound:
      description: The requested object does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: rest_no_route
            message: No route was found matching the URL and request method.
            data:
              status: 404
    InvalidParam:
      description: One or more query parameters failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: rest_invalid_param
            message: 'Invalid parameter(s): per_page'
            data:
              status: 400
              params:
                per_page: per_page must be between 1 (inclusive) and 100 (inclusive)
    Unauthorized:
      description: >-
        The route exists but is not readable anonymously. Verified live on the users, settings,
        themes, plugins, menus, block-types and revisions routes.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: rest_forbidden
            message: Sorry, you are not allowed to do that.
            data:
              status: 401
  schemas:
    RenderedText:
      type: object
      description: WordPress rendered-text object.
      properties:
        rendered:
          type: string
      required: [rendered]
    Error:
      type: object
      description: >-
        The WordPress REST error envelope, verified live. Note this is NOT RFC 9457
        application/problem+json — it is served as application/json with a WordPress-specific shape.
      properties:
        code:
          type: string
        message:
          type: string
        data:
          type: object
          properties:
            status:
              type: integer
            params:
              type: object
              additionalProperties:
                type: string
            details:
              type: object
              additionalProperties: true
          required: [status]
      required: [code, message, data]
    Page:
      type: object
      description: A WordPress page as returned anonymously in `view` context.
      properties:
        id:
          type: integer
        date:
          type: string
          format: date-time
        date_gmt:
          type: string
          format: date-time
        guid:
          $ref: '#/components/schemas/RenderedText'
        modified:
          type: string
          format: date-time
        modified_gmt:
          type: string
          format: date-time
        slug:
          type: string
        status:
          type: string
        type:
          type: string
          const: page
        link:
          type: string
          format: uri
        title:
          $ref: '#/components/schemas/RenderedText'
        content:
          type: object
          properties:
            rendered:
              type: string
            protected:
              type: boolean
        excerpt:
          type: object
          properties:
            rendered:
              type: string
            protected:
              type: boolean
        author:
          type: integer
        featured_media:
          type: integer
        parent:
          type: integer
          description: ID of the parent page, or 0 for a top-level page.
        menu_order:
          type: integer
        comment_status:
          type: string
        ping_status:
          type: string
        template:
          type: string
        meta:
          type: object
          additionalProperties: true
        class_list:
          type: array
          items:
            type: string
        acf:
          description: Advanced Custom Fields payload for this page.
          oneOf:
          - type: object
            additionalProperties: true
          - type: array
        yoast_head:
          type: string
        yoast_head_json:
          type: object
          additionalProperties: true
        _links:
          type: object
          additionalProperties: true
      required: [id, slug, type, link, title, content]