Bluejay Therapeutics Taxonomy API

Categories, tags and taxonomy/type/status registries.

OpenAPI Specification

bluejay-therapeutics-taxonomy-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Bluejay Therapeutics Content Taxonomy API
  version: '1.0'
  x-generated: '2026-08-07'
  x-method: derived
  x-source: https://bluejaytx.com/wp-json/
  description: 'The anonymously readable WordPress REST API behind bluejaytx.com, the corporate site of Bluejay Therapeutics — a Redwood City, California clinical-stage biopharmaceutical company developing brelovitug (BJT-778) and a hepatitis B/D portfolio, acquired by Mirum Pharmaceuticals on 26 January 2026.


    This is not a developer product Bluejay Therapeutics markets. It is the site''s own WordPress content surface, registered at /wp-json/ and verified to return data without credentials on 2026-08-07. This document is DERIVED by the API Evangelist enrichment pipeline from the route index the site itself publishes at https://bluejaytx.com/wp-json/ — 372 routes across 17 namespaces (oembed/1.0, wpe/cache-plugin/v1, wpe_sign_on_plugin/v1, aioseo/v1, code-snippets/v1, contact-form-7/v1, jupiterx-license, elementor/v1, monsterinsights/v1, elementor/v1/documents, elementor-ai/v1, elementor-pro/v1, omapp/v1, wp/v2, wp-site-health/v1, wp-block-editor/v1, wp-abilities/v1). Only the 26 operations that were individually called and returned data anonymously are modelled here; every other route returned 401, 403 or 404 and is deliberately absent.


    WHAT A CONSUMER MUST KNOW. First, the human web site no longer exists. Following the acquisition the page tree was collapsed to a SINGLE page (id 606, "New home page", served at the site root) carrying a two-sentence acquisition notice that redirects readers to mirumpharma.com; /about/, /science/, /pipeline/, /news/, /contact/ and /privacy-policy/ all return 404. The machine-readable surface, however, survived the teardown intact: the REST API still serves all 35 press releases and publication notices from 2021-08-12 through 2025-12-08 with FULL `content.rendered` bodies (up to ~15 KB of press-release prose each), plus the 99-item media library. For this company the API is now a strictly richer record of the corporate history than the web site it belongs to.


    Second, the content is Elementor-authored, so `content.rendered` on newer posts is wrapped in `div[data-elementor-type]` scaffolding around the prose; older posts render as clean `wp-block-*` markup. Third, the `pages` collection holds exactly one item and the `portfolio`, `portfolio_category`, `portfolio_tag`, `blocks` and `navigation` collections are registered but return empty arrays — they are modelled here because they answer 200 anonymously, not because they carry data.


    OMITTED ON PURPOSE. `/wp/v2/users` returns 200 anonymously with five named individuals (site administrator plus outside investor-relations and communications agency staff). Under the API Evangelist enrichment PII guardrail that collection is documented as an exposure but is NOT modelled as an operation here, and no agent skill or MCP tool is emitted for it. The exposure itself is recorded in conventions/bluejay-therapeutics-conventions.yml. The site also registers the WordPress Abilities API (`wp-abilities/v1`), an agent-facing capability registry, but every endpoint under it returns 401 rest_forbidden anonymously, so no agent surface is claimed.'
  contact:
    name: API Evangelist
    email: kin@apievangelist.com
    url: https://apievangelist.com
  x-upstream-contract: https://developer.wordpress.org/rest-api/
servers:
- url: https://bluejaytx.com/wp-json
  description: Production WordPress REST API for bluejaytx.com (WP Engine, nginx)
tags:
- name: taxonomy
  description: Categories, tags and taxonomy/type/status registries.
paths:
  /wp/v2/categories:
    get:
      operationId: listCategories
      tags:
      - taxonomy
      summary: List categories
      description: Returns the four registered categories — Press Release (26 posts), Publication (8), Presentation (0) and Uncategorized (1).
      parameters:
      - $ref: '#/components/parameters/Context'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PerPage'
      - $ref: '#/components/parameters/Search'
      - $ref: '#/components/parameters/Exclude'
      - $ref: '#/components/parameters/Include'
      - $ref: '#/components/parameters/Order'
      - $ref: '#/components/parameters/OrderByTerm'
      - $ref: '#/components/parameters/SlugFilter'
      - $ref: '#/components/parameters/Fields'
      - name: hide_empty
        in: query
        description: Omit terms with no assigned posts.
        schema:
          type: boolean
          default: false
      - name: parent
        in: query
        description: Limit to direct children of the given term id.
        schema:
          type: integer
      - name: post
        in: query
        description: Limit to terms assigned to the given post id.
        schema:
          type: integer
      responses:
        '200':
          description: A page of category terms.
          headers:
            X-WP-Total:
              schema:
                type: integer
            X-WP-TotalPages:
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Term'
  /wp/v2/categories/{id}:
    get:
      operationId: getCategory
      tags:
      - taxonomy
      summary: Get a single category term
      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/tags:
    get:
      operationId: listTags
      tags:
      - taxonomy
      summary: List tags
      description: Returns the single registered tag, "Corporate Presentation" (1 post).
      parameters:
      - $ref: '#/components/parameters/Context'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PerPage'
      - $ref: '#/components/parameters/Search'
      - $ref: '#/components/parameters/Exclude'
      - $ref: '#/components/parameters/Include'
      - $ref: '#/components/parameters/Offset'
      - $ref: '#/components/parameters/Order'
      - $ref: '#/components/parameters/OrderByTerm'
      - $ref: '#/components/parameters/SlugFilter'
      - $ref: '#/components/parameters/Fields'
      - name: hide_empty
        in: query
        schema:
          type: boolean
          default: false
      - name: post
        in: query
        description: Limit to terms assigned to the given post id.
        schema:
          type: integer
      responses:
        '200':
          description: A page of tag terms.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Term'
  /wp/v2/tags/{id}:
    get:
      operationId: getTag
      tags:
      - taxonomy
      summary: Get a single tag term
      parameters:
      - $ref: '#/components/parameters/IdPath'
      - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The tag term.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Term'
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/types:
    get:
      operationId: listTypes
      tags:
      - taxonomy
      summary: List registered post types
      description: Returns the 19 registered post types and their REST bases. Alongside the WordPress core types this exposes the site's theme and page-builder types (`elementor_library`, `elementor_snippet`, `e-floating-buttons`, `jupiterx-codes`, `jupiterx-fonts`, `jupiterx-icons`, `jupiterx-popups`) and a `portfolio` type with its own taxonomies.
      parameters:
      - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: A map of post type slug to definition.
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/PostType'
  /wp/v2/types/{type}:
    get:
      operationId: getType
      tags:
      - taxonomy
      summary: Get a single post type definition
      parameters:
      - name: type
        in: path
        required: true
        description: The post type slug, e.g. `post`.
        schema:
          type: string
      - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The post type definition.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostType'
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/taxonomies:
    get:
      operationId: listTaxonomies
      tags:
      - taxonomy
      summary: List registered taxonomies
      parameters:
      - $ref: '#/components/parameters/Context'
      - name: type
        in: query
        description: Limit to taxonomies associated with a given post type.
        schema:
          type: string
      responses:
        '200':
          description: A map of taxonomy slug to definition.
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/Taxonomy'
  /wp/v2/taxonomies/{taxonomy}:
    get:
      operationId: getTaxonomy
      tags:
      - taxonomy
      summary: Get a single taxonomy definition
      parameters:
      - name: taxonomy
        in: path
        required: true
        description: The taxonomy slug, e.g. `category`.
        schema:
          type: string
      - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The taxonomy definition.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Taxonomy'
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/statuses:
    get:
      operationId: listStatuses
      tags:
      - taxonomy
      summary: List publicly queryable post statuses
      description: Anonymously this returns two statuses — `publish` and `acf-disabled`.
      parameters:
      - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: A map of status slug to definition.
          content:
            application/json:
              schema:
                type: object
  /wp/v2/statuses/{status}:
    get:
      operationId: getStatus
      tags:
      - taxonomy
      summary: Get a single post status definition
      parameters:
      - name: status
        in: path
        required: true
        description: The status slug, e.g. `publish`.
        schema:
          type: string
      - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The status definition.
          content:
            application/json:
              schema:
                type: object
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Error:
      type: object
      description: The WordPress REST error envelope. NOT RFC 9457 — the media type is application/json, not application/problem+json, and the field names are WordPress-specific.
      properties:
        code:
          type: string
          description: Machine-readable error slug, e.g. `rest_post_invalid_id`, `rest_forbidden`.
        message:
          type: string
          description: Human-readable message.
        data:
          type: object
          properties:
            status:
              type: integer
              description: The HTTP status code, repeated inside the body.
            params:
              type: object
              description: Present on validation errors; maps parameter name to the failure reason.
      required:
      - code
      - message
    HalLinks:
      type: object
      description: HAL-style hypermedia block. Carries `self`, `collection`, `about`, `author`, `wp:featuredmedia`, `wp:attachment`, `wp:term`, `curies` and — on collection responses — `next`/`prev` page links. This is how the API is meant to be traversed.
      additionalProperties: true
    Taxonomy:
      type: object
      properties:
        name:
          type: string
        slug:
          type: string
        description:
          type: string
        hierarchical:
          type: boolean
        rest_base:
          type: string
        rest_namespace:
          type: string
        types:
          type: array
          items:
            type: string
        _links:
          $ref: '#/components/schemas/HalLinks'
    Term:
      type: object
      properties:
        id:
          type: integer
        count:
          type: integer
          description: Number of published posts assigned to the term.
        description:
          type: string
        link:
          type: string
          format: uri
        name:
          type: string
        slug:
          type: string
        taxonomy:
          type: string
          enum:
          - category
          - post_tag
        parent:
          type: integer
          description: Present on hierarchical taxonomies only.
        meta:
          type: object
        _links:
          $ref: '#/components/schemas/HalLinks'
    PostType:
      type: object
      properties:
        name:
          type: string
        slug:
          type: string
        description:
          type: string
        hierarchical:
          type: boolean
        has_archive:
          type: boolean
        rest_base:
          type: string
          description: The collection path segment under the namespace.
        rest_namespace:
          type: string
        icon:
          type: string
        taxonomies:
          type: array
          items:
            type: string
        _links:
          $ref: '#/components/schemas/HalLinks'
  parameters:
    OrderByTerm:
      name: orderby
      in: query
      description: Sort terms by attribute.
      schema:
        type: string
        enum:
        - id
        - include
        - name
        - slug
        - include_slugs
        - term_group
        - description
        - count
        default: name
    Offset:
      name: offset
      in: query
      description: Offset the result set by a specific number of items.
      schema:
        type: integer
        minimum: 0
    PerPage:
      name: per_page
      in: query
      description: Maximum number of items to be returned in the result set.
      schema:
        type: integer
        default: 10
        minimum: 1
        maximum: 100
    Exclude:
      name: exclude
      in: query
      description: Ensure result set excludes specific ids.
      schema:
        type: array
        items:
          type: integer
    Page:
      name: page
      in: query
      description: Current page of the collection.
      schema:
        type: integer
        default: 1
        minimum: 1
    Context:
      name: context
      in: query
      description: Scope under which the request is made; determines which fields are present in the response. `edit` requires authentication.
      schema:
        type: string
        enum:
        - view
        - embed
        - edit
        default: view
    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
    SlugFilter:
      name: slug
      in: query
      description: Limit result set to items with one or more specific slugs.
      schema:
        type: array
        items:
          type: string
    Include:
      name: include
      in: query
      description: Limit result set to specific ids.
      schema:
        type: array
        items:
          type: integer
    Fields:
      name: _fields
      in: query
      description: Comma-separated list of fields to return, e.g. `id,slug,title,link`. Not declared in the route index but honoured globally by the WordPress REST controller; strongly recommended because full post bodies run to ~15 KB each.
      schema:
        type: string
    IdPath:
      name: id
      in: path
      required: true
      description: Unique identifier for the object.
      schema:
        type: integer
  responses:
    NotFound:
      description: No object matched the identifier.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'