Jnana Therapeutics Content API

The read-only WordPress REST content surface behind www.jnanatx.com — news posts (62), corporate pages (9), media (376), post categories (7), the `team` custom post type (9 profiles) and its `team-department` taxonomy (4 terms), cross-content search, oEmbed 1.0, Yoast SEO head metadata and Genesis theme documents. Verified anonymously reachable on 2026-08-23; an OPTIONS preflight returns `allow: GET`, and every write and administrative route answers 401/403/404 without credentials. Jnana publishes no OpenAPI or API reference for this surface — the OpenAPI here is an API Evangelist derivation of the live route index, and humanURL points at the upstream WordPress REST handbook that defines the wp/v2 contract.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/jnana-therapeutics-content-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

jnana-therapeutics-content-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Jnana Therapeutics Content API
  version: wp/v2
  summary: Anonymously readable WordPress REST content API behind www.jnanatx.com.
  description: >-
    The read-only content surface Jnana Therapeutics exposes at https://www.jnanatx.com/wp-json.
    Jnana Therapeutics is a Boston-based biotechnology company that built the RAPID (Reactive
    Affinity Probe Interaction Discovery) next-generation chemoproteomics platform for small-molecule
    drug discovery, and has been a direct subsidiary of Otsuka America, Inc. since Otsuka
    Pharmaceutical completed its acquisition of the company on 23 September 2024. It runs no
    developer program and markets no product API. This document is an API Evangelist derivation of
    the WordPress `wp/v2`, `oembed/1.0`, `genesis/v1` and `yoast/v1` route index the site publishes
    at /wp-json/, restricted to the operations that were verified to return data anonymously on
    2026-08-23. Write operations and the administrative surface — `/wp/v2/settings`,
    `/wp/v2/menu-items`, `/wp/v2/block-types`, `/wp/v2/templates`, `/wp/v2/navigation`,
    the `wp-abilities/v1`, `wp-site-health/v1`, `wp-block-editor/v1`, `contact-form-7/v1`,
    `wpe/cache-plugin/v1` and `wpe_sign_on_plugin/v1` namespaces, and `/oembed/1.0/proxy` — all
    answered 401/403/404 anonymously and are deliberately excluded. See
    x-api-evangelist-provenance.
  contact:
    name: Jnana Therapeutics
    url: https://www.jnanatx.com/contact-us/
    email: info@jnanatx.com
  x-api-evangelist-provenance: >-
    Derived by the API Evangelist enrichment pipeline from the live WordPress REST route index at
    https://www.jnanatx.com/wp-json/ (202 routes across 11 namespaces) and verified against live
    anonymous responses on 2026-08-23. Every query parameter below appears verbatim in that route
    index `args` block for the endpoint it is attached to, and every collection count in a
    description was read from the `X-WP-Total` response header on that date. Jnana Therapeutics
    publishes no OpenAPI, no developer documentation and no API reference for this surface; the
    humanURL in apis.yml points at the upstream WordPress REST handbook that defines the wp/v2
    contract. The deployment is served by WP Engine behind Cloudflare, responses carry
    `x-robots-tag: noindex` and `cache-control: max-age=600, must-revalidate`, and an OPTIONS
    preflight on /wp/v2/posts returns `allow: GET` — confirming the surface is read-only to an
    anonymous caller. Nothing here was obtained with credentials.
servers:
  - url: https://www.jnanatx.com/wp-json
    description: Production content API
tags:
  - name: discovery
    description: Route, type, taxonomy and status discovery documents.
  - name: posts
    description: >-
      News archive — press releases, in-the-news coverage, presentations and insights
      (62 published at harvest time).
  - name: pages
    description: Corporate pages — home, RAPID platform, programs, team, join us, news, contact,
      privacy policy, terms of use (9 published at harvest time).
  - name: media
    description: Media library (376 attachments at harvest time).
  - name: taxonomy
    description: >-
      Post categories (7 registered — press-releases 43, in-the-news 16, presentations 3,
      insights 2, publications 0, blogs 0, videos 0) and team departments (4 registered).
      The core `post_tag` taxonomy is not exposed — /wp/v2/tags returns rest_no_route.
  - name: team
    description: >-
      `team` custom post type — leadership, board and scientific advisory profiles
      (9 published at harvest time).
  - name: comments
    description: Comment collection. Registered and reachable, but empty — no post carries comments.
  - name: users
    description: >-
      Author collection (4 records). Anonymously readable, exposing WordPress author display names
      and slugs. Flagged in conventions/ as an exposure worth reviewing, not a documented product.
  - name: search
    description: Cross-content search across published objects (73 indexed at harvest time).
  - name: oembed
    description: oEmbed 1.0 provider endpoint for www.jnanatx.com URLs.
  - name: seo
    description: Yoast SEO head-metadata document for a given site URL.
  - name: theme
    description: Genesis theme reading-settings and breadcrumb documents.
paths:
  /:
    get:
      tags: [discovery]
      operationId: getApiIndex
      summary: Get the REST API index
      description: >-
        Site identity plus the full route index — 202 routes across 11 namespaces
        (oembed/1.0, wpe/cache-plugin/v1, wpe_sign_on_plugin/v1, contact-form-7/v1, yoast/v1,
        genesis-custom-blocks, genesis/v1, wp/v2, wp-site-health/v1, wp-block-editor/v1,
        wp-abilities/v1).
      parameters:
        - { name: context, in: query, required: false, schema: { type: string, enum: [view, embed, edit], default: view } }
        - { name: namespace, in: query, required: false, schema: { type: string } }
      responses:
        '200':
          description: The API index document.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ApiIndex' }
  /wp/v2/posts:
    get:
      tags: [posts]
      operationId: listPosts
      summary: List news posts
      description: Press releases, in-the-news coverage, presentations and insights. 62 published at harvest time.
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/After'
        - $ref: '#/components/parameters/Before'
        - $ref: '#/components/parameters/ModifiedAfter'
        - $ref: '#/components/parameters/ModifiedBefore'
        - $ref: '#/components/parameters/Exclude'
        - $ref: '#/components/parameters/Include'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Order'
        - { name: orderby, in: query, required: false, schema: { type: string, enum: [author, date, id, include, modified, parent, relevance, slug, include_slugs, title], default: date } }
        - $ref: '#/components/parameters/Slug'
        - { name: author, in: query, required: false, schema: { type: array, items: { type: integer } } }
        - { name: author_exclude, in: query, required: false, schema: { type: array, items: { type: integer } } }
        - { name: categories, in: query, required: false, description: 'Limit to posts in these category IDs (5 press-releases, 6 in-the-news, 7 insights, 12 publications, 13 presentations, 14 blogs, 15 videos).', schema: { type: array, items: { type: integer } } }
        - { name: categories_exclude, in: query, required: false, schema: { type: array, items: { type: integer } } }
        - { name: sticky, in: query, required: false, schema: { type: boolean } }
        - { name: ignore_sticky, in: query, required: false, schema: { type: boolean, default: false } }
        - { name: format, in: query, required: false, schema: { type: array, items: { type: string } } }
        - { name: search_columns, in: query, required: false, schema: { type: array, items: { type: string, enum: [post_title, post_content, post_excerpt] } } }
        - { name: search_semantics, in: query, required: false, schema: { type: string, enum: [exact] } }
        - { name: tax_relation, in: query, required: false, schema: { type: string, enum: [AND, OR] } }
        - { name: status, in: query, required: false, description: 'Anonymous callers may only request `publish`; any other value returns 401.', schema: { type: array, items: { type: string }, default: [publish] } }
      responses:
        '200':
          description: A page of posts. `X-WP-Total` and `X-WP-TotalPages` carry the collection size; `Link` carries rel=next/prev.
          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/Post' } }
        '400':
          $ref: '#/components/responses/InvalidParam'
        '401':
          $ref: '#/components/responses/Forbidden'
  /wp/v2/posts/{id}:
    get:
      tags: [posts]
      operationId: getPost
      summary: Get a single news post
      parameters:
        - $ref: '#/components/parameters/IdPath'
        - $ref: '#/components/parameters/Context'
        - { name: password, in: query, required: false, schema: { type: string } }
      responses:
        '200':
          description: The post.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Post' }
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/pages:
    get:
      tags: [pages]
      operationId: listPages
      summary: List corporate pages
      description: 9 published at harvest time — home, rapid-platform, programs, team, join-us, news, contact-us, privacy-policy, terms-of-use.
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Order'
        - $ref: '#/components/parameters/Slug'
        - { name: parent, in: query, required: false, schema: { type: array, items: { type: integer } } }
        - { name: menu_order, in: query, required: false, schema: { type: integer } }
      responses:
        '200':
          description: A page of pages.
          headers:
            X-WP-Total: { $ref: '#/components/headers/XWPTotal' }
            X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' }
          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 single corporate page
      parameters:
        - $ref: '#/components/parameters/IdPath'
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The page.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Page' }
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/media:
    get:
      tags: [media]
      operationId: listMedia
      summary: List media attachments
      description: 376 attachments at harvest time.
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Order'
        - $ref: '#/components/parameters/Slug'
        - { name: media_type, in: query, required: false, schema: { type: string, enum: [image, video, text, application, audio] } }
        - { name: mime_type, in: query, required: false, schema: { type: string } }
        - { name: parent, in: query, required: false, schema: { type: array, items: { type: integer } } }
      responses:
        '200':
          description: A page of attachments.
          headers:
            X-WP-Total: { $ref: '#/components/headers/XWPTotal' }
            X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' }
          content:
            application/json:
              schema: { type: array, items: { $ref: '#/components/schemas/MediaItem' } }
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/media/{id}:
    get:
      tags: [media]
      operationId: getMediaItem
      summary: Get a single media attachment
      parameters:
        - $ref: '#/components/parameters/IdPath'
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The attachment.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/MediaItem' }
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/team:
    get:
      tags: [team]
      operationId: listTeamMembers
      summary: List team profiles
      description: >-
        The `team` custom post type — leadership, board and scientific advisers.
        9 published at harvest time, filed under 4 `team-department` terms.
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Order'
        - $ref: '#/components/parameters/Slug'
        - { name: team-department, in: query, required: false, description: 'Limit to these team-department term IDs.', schema: { type: array, items: { type: integer } } }
        - { name: team-department_exclude, in: query, required: false, schema: { type: array, items: { type: integer } } }
      responses:
        '200':
          description: A page of team profiles.
          headers:
            X-WP-Total: { $ref: '#/components/headers/XWPTotal' }
            X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' }
          content:
            application/json:
              schema: { type: array, items: { $ref: '#/components/schemas/TeamMember' } }
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/team/{id}:
    get:
      tags: [team]
      operationId: getTeamMember
      summary: Get a single team profile
      parameters:
        - $ref: '#/components/parameters/IdPath'
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The team profile.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/TeamMember' }
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/categories:
    get:
      tags: [taxonomy]
      operationId: listCategories
      summary: List post categories
      description: 7 categories registered at harvest time.
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Order'
        - $ref: '#/components/parameters/Slug'
        - { name: hide_empty, in: query, required: false, schema: { type: boolean, default: false } }
        - { name: parent, in: query, required: false, schema: { type: integer } }
        - { name: post, in: query, required: false, schema: { type: integer } }
      responses:
        '200':
          description: A page of categories.
          headers:
            X-WP-Total: { $ref: '#/components/headers/XWPTotal' }
            X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' }
          content:
            application/json:
              schema: { type: array, items: { $ref: '#/components/schemas/Term' } }
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/categories/{id}:
    get:
      tags: [taxonomy]
      operationId: getCategory
      summary: Get a single category
      parameters:
        - $ref: '#/components/parameters/IdPath'
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The category term.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Term' }
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/team-department:
    get:
      tags: [taxonomy]
      operationId: listTeamDepartments
      summary: List team departments
      description: 4 department terms registered at harvest time, including Leadership (5 members).
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Slug'
        - { name: hide_empty, in: query, required: false, schema: { type: boolean, default: false } }
        - { name: post, in: query, required: false, schema: { type: integer } }
      responses:
        '200':
          description: A page of department terms.
          headers:
            X-WP-Total: { $ref: '#/components/headers/XWPTotal' }
            X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' }
          content:
            application/json:
              schema: { type: array, items: { $ref: '#/components/schemas/Term' } }
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/team-department/{id}:
    get:
      tags: [taxonomy]
      operationId: getTeamDepartment
      summary: Get a single team department
      parameters:
        - $ref: '#/components/parameters/IdPath'
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The department term.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Term' }
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/comments:
    get:
      tags: [comments]
      operationId: listComments
      summary: List comments
      description: Registered and anonymously reachable, but empty — X-WP-Total was 0 at harvest time.
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Order'
        - { name: post, in: query, required: false, schema: { type: array, items: { type: integer } } }
        - { name: parent, in: query, required: false, schema: { type: array, items: { type: integer } } }
      responses:
        '200':
          description: A page of comments (empty on this deployment).
          headers:
            X-WP-Total: { $ref: '#/components/headers/XWPTotal' }
            X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' }
          content:
            application/json:
              schema: { type: array, items: { type: object } }
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/users:
    get:
      tags: [users]
      operationId: listUsers
      summary: List authors
      description: >-
        4 author records at harvest time. Anonymously readable and returns WordPress account display
        names and slugs. Recorded because it is served, not because it is documented — see
        conventions/jnana-therapeutics-conventions.yml.
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Order'
        - $ref: '#/components/parameters/Slug'
        - { name: has_published_posts, in: query, required: false, schema: { type: boolean } }
      responses:
        '200':
          description: A page of author records.
          headers:
            X-WP-Total: { $ref: '#/components/headers/XWPTotal' }
            X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' }
          content:
            application/json:
              schema: { type: array, items: { $ref: '#/components/schemas/User' } }
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/users/{id}:
    get:
      tags: [users]
      operationId: getUser
      summary: Get a single author
      parameters:
        - $ref: '#/components/parameters/IdPath'
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The author record.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/User' }
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/search:
    get:
      tags: [search]
      operationId: searchContent
      summary: Search published content
      description: Cross-content search across published objects. 73 objects indexed at harvest time.
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - { name: type, in: query, required: false, schema: { type: string, enum: [post, term, post-format], default: post } }
        - { name: subtype, in: query, required: false, schema: { type: array, items: { type: string }, default: [any] } }
      responses:
        '200':
          description: A page of search results.
          headers:
            X-WP-Total: { $ref: '#/components/headers/XWPTotal' }
            X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' }
          content:
            application/json:
              schema: { type: array, items: { $ref: '#/components/schemas/SearchResult' } }
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/types:
    get:
      tags: [discovery]
      operationId: listTypes
      summary: List registered post types
      description: >-
        12 types registered — post, page, attachment, nav_menu_item, wp_block, wp_template,
        wp_template_part, wp_global_styles, wp_navigation, wp_font_family, wp_font_face and the
        custom `team` type.
      parameters:
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: A map of post types keyed by slug.
          content:
            application/json:
              schema: { type: object, additionalProperties: { $ref: '#/components/schemas/PostType' } }
  /wp/v2/types/{type}:
    get:
      tags: [discovery]
      operationId: getType
      summary: Get a single post type
      parameters:
        - { name: type, in: path, required: true, schema: { type: string } }
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The post type document.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/PostType' }
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/taxonomies:
    get:
      tags: [discovery]
      operationId: listTaxonomies
      summary: List registered taxonomies
      description: 4 taxonomies registered — category, nav_menu, wp_pattern_category and the custom team-department.
      parameters:
        - $ref: '#/components/parameters/Context'
        - { name: type, in: query, required: false, schema: { type: string } }
      responses:
        '200':
          description: A map of taxonomies keyed by slug.
          content:
            application/json:
              schema: { type: object, additionalProperties: { type: object } }
  /wp/v2/statuses:
    get:
      tags: [discovery]
      operationId: listStatuses
      summary: List registered post statuses
      parameters:
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: A map of post statuses keyed by slug.
          content:
            application/json:
              schema: { type: object, additionalProperties: { type: object } }
  /oembed/1.0/embed:
    get:
      tags: [oembed]
      operationId: getOembed
      summary: Get an oEmbed 1.0 response for a site URL
      description: oEmbed 1.0 rich provider response for any www.jnanatx.com URL.
      parameters:
        - { name: url, in: query, required: true, schema: { type: string, format: uri } }
        - { name: format, in: query, required: false, schema: { type: string, enum: [json, xml], default: json } }
        - { name: maxwidth, in: query, required: false, schema: { type: integer, default: 600 } }
      responses:
        '200':
          description: The oEmbed document.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Oembed' }
        '404':
          $ref: '#/components/responses/NotFound'
  /yoast/v1/get_head:
    get:
      tags: [seo]
      operationId: getYoastHead
      summary: Get the Yoast SEO head metadata for a URL
      description: >-
        Returns the rendered `<head>` SEO block Yoast SEO (v28.3 at harvest time) emits for the
        given site URL — title, robots directives, canonical, Open Graph, Twitter card and
        schema.org JSON-LD.
      parameters:
        - { name: url, in: query, required: true, schema: { type: string, format: uri } }
      responses:
        '200':
          description: The head metadata document.
          content:
            application/json:
              schema:
                type: object
                properties:
                  html: { type: string }
                  json: { type: object }
        '404':
          $ref: '#/components/responses/NotFound'
  /genesis/v1/reading-settings:
    get:
      tags: [theme]
      operationId: getGenesisReadingSettings
      summary: Get the Genesis reading settings
      description: Front-page configuration — show_on_front, page_on_front, page_for_posts.
      responses:
        '200':
          description: The reading settings document.
          content:
            application/json:
              schema:
                type: object
                properties:
                  show_on_front: { type: string }
                  page_on_front: { type: integer }
                  page_for_posts: { type: integer }
  /genesis/v1/breadcrumbs:
    get:
      tags: [theme]
      operationId: getGenesisBreadcrumbs
      summary: Get the Genesis breadcrumb trail
      description: Returns an empty array on this deployment.
      responses:
        '200':
          description: The breadcrumb array.
          content:
            application/json:
              schema: { type: array, items: { type: object } }
components:
  headers:
    XWPTotal:
      description: Total number of items in the collection.
      schema: { type: integer }
    XWPTotalPages:
      description: Total number of pages available at the current per_page.
      schema: { type: integer }
    LinkPagination:
      description: RFC 8288 Link header carrying rel="next" and rel="prev".
      schema: { type: string }
  parameters:
    Context:
      name: context
      in: query
      required: false
      description: Scope under which the request is made; determines fields present in the response. `edit` requires authentication.
      schema: { type: string, enum: [view, embed, edit], default: view }
    Page:
      name: page
      in: query
      required: false
      schema: { type: integer, minimum: 1, default: 1 }
    PerPage:
      name: per_page
      in: query
      required: false
      schema: { type: integer, minimum: 1, maximum: 100, default: 10 }
    Search:
      name: search
      in: query
      required: false
      schema: { type: string }
    Slug:
      name: slug
      in: query
      required: false
      schema: { type: array, items: { type: string } }
    Order:
      name: order
      in: query
      required: false
      schema: { type: string, enum: [asc, desc], default: desc }
    Offset:
      name: offset
      in: query
      required: false
      schema: { type: integer }
    Exclude:
      name: exclude
      in: query
      required: false
      schema: { type: array, items: { type: integer } }
    Include:
      name: include
      in: query
      required: false
      schema: { type: array, items: { type: integer } }
    After:
      name: after
      in: query
      required: false
      schema: { type: string, format: date-time }
    Before:
      name: before
      in: query
      required: false
      schema: { type: string, format: date-time }
    ModifiedAfter:
      name: modified_after
      in: query
      required: false
      schema: { type: string, format: date-time }
    ModifiedBefore:
      name: modified_before
      in: query
      required: false
      schema: { type: string, format: date-time }
    IdPath:
      name: id
      in: path
      required: true
      description: Unique identifier for the object.
      schema: { type: integer }
  responses:
    InvalidParam:
      description: A supplied parameter failed validation.
      content:
        application/json:
          schema: { $ref: '#/components/schemas/Error' }
          examples:
            invalidParam:
              value:
                code: rest_invalid_param
                message: 'Invalid parameter(s): per_page'
                data: { status: 400 }
    Forbidden:
      description: The caller is not permitted to perform this request anonymously.
      content:
        application/json:
          schema: { $ref: '#/components/schemas/Error' }
          examples:
            forbidden:
              value:
                code: rest_forbidden
                message: 'Sorry, you are not allowed to do that.'
                data: { status: 401 }
    NotFound:
      description: No route matched, or the object does not exist.
      content:
        application/json:
          schema: { $ref: '#/components/schemas/Error' }
          examples:
            noRoute:
              value:
                code: rest_no_route
                message: 'No route was found matching the URL and request method.'
                data: { status: 404 }
  schemas:
    Error:
      type: object
      description: The WordPress REST error envelope. Not RFC 9457 — see errors/jnana-therapeutics-problem-types.yml.
      required: [code, message, data]
      properties:
        code: { type: string, description: Machine-readable error slug. }
        message: { type: string, description: Human-readable message. }
        data:
          type: object
          properties:
            status: { type: integer }
            params: { type: object }
            details: { type: object }
    RenderedText:
      type: object
      properties:
        rendered: { type: string }
        protected: { type: boolean }
    ApiIndex:
      type: object
      properties:
        name: { type: string }
        description: { type: string }
        url: { type: string, format: uri }
        home: { type: string, format: uri }
        gmt_offset: { type: number }
        timezone_string: { type: string }
        namespaces: { type: array, items: { type: string } }
        authentication: { type: object }
        routes: { type: object }
        site_icon_url: { type: string, format: uri }
    Post:
      type: object
      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: post }
        link: { type: string, format: uri }
        title: { $ref: '#/components/schemas/RenderedText' }
        content: { $ref: '#/components/schemas/RenderedText' }
        excerpt: { $ref: '#/components/schemas/RenderedText' }
        author: { type: integer, description: 'User id — see /wp/v2/users/{id}.' }
        featured_media: { type: integer, description: 'Attachment id — see /wp/v2/media/{id}.' }
        categories: { type: array, items: { type: integer }, description: 'Category term ids — see /wp/v2/categories/{id}.' }
        yoast_head: { type: string }
        yoast_head_json: { type: object }
        _links: { type: object }
    Page:
      type: object
      properties:
        id: { type: integer }
        date: { type: string, format: date-time }
        modified: { 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: { $ref: '#/components/schemas/RenderedText' }
        excerpt: { $ref: '#/components/schemas/RenderedText' }
        author: { type: integer }
        parent: { type: integer, description: 'Parent pa

# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/jnana-therapeutics/refs/heads/main/openapi/jnana-therapeutics-content-openapi.yml