Belharra Therapeutics · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Belharra Therapeutics Content API

12 actions 12 updates update extends openapi/belharra-therapeutics-content-openapi.yml
Derived by API Evangelist Built from the contracts Belharra Therapeutics publishes. Belharra Therapeutics did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-profilex-apievangelist-sourcex-apievangelist-harvestedx-apievangelist-derivedx-apievangelist-provider-publishes-openapix-apievangelist-scopex-apievangelist-excludedx-apievangelist-agent-surface

Targets 9

$.info
$.servers[0]
$.tags
$.paths..responses['200'].headers
$.paths..responses['400']
$.components.schemas
$.components.schemas.CustomPost
$.components.schemas.Error
$.components.parameters

OpenAPI Overlay

belharra-therapeutics-content-overlay.yaml Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Belharra Therapeutics Content API
  version: 1.0.0
extends: openapi/belharra-therapeutics-content-openapi.yml
x-api-evangelist:
  generated: '2026-08-06'
  method: generated
  source: >-
    Records the enhancements the API Evangelist enrichment pipeline applied on top of the WordPress
    REST route index Belharra Therapeutics publishes at https://belharratx.com/wp-json/. Belharra
    publishes no OpenAPI, so the base document is itself a derivation; this overlay captures what we
    added beyond the mechanical route-to-path mapping, so a later round can tell provider fact from
    API Evangelist judgement.
actions:
- target: $.info
  description: Stamp the independent-profile provenance on the document root.
  update:
    x-apievangelist-profile: https://apievangelist.com/
    x-apievangelist-source: https://belharratx.com/wp-json/
    x-apievangelist-harvested: '2026-08-06'
    x-apievangelist-derived: true
    x-apievangelist-provider-publishes-openapi: false

- target: $.info
  description: >-
    Record that the surface was restricted to operations verified to return data without
    credentials, and enumerate what was deliberately dropped.
  update:
    x-apievangelist-scope: anonymous-read-only
    x-apievangelist-excluded:
      write_operations: >-
        Every POST/PUT/PATCH/DELETE route in the 198-route index. None was exercised.
      auth_gated_401:
      - /wp/v2/settings
      - /wp/v2/menus
      - /wp/v2/menu-locations
      - /wp/v2/themes
      - /wp/v2/plugins
      - /wp/v2/block-types
      - /wp/v2/font-collections
      - /wp/v2/icons
      - /wp/v2/sidebars
      - /wp/v2/widget-types
      - /wp/v2/templates
      - /wp/v2/template-parts
      - /wp/v2/global-styles
      - /wp/v2/block-patterns/patterns
      - /wp/v2/block-patterns/categories
      - /wp/v2/pattern-directory/patterns
      - /wp-abilities/v1/*
      - /wp-site-health/v1/*
      - /podcastplayer/v1/*
      refused_403:
      - path: /wp/v2/comments
        code: rest_comment_disabled
      - path: /contact-form-7/v1/contact-forms
        code: wpcf7_forbidden
      admin_plugin_namespaces:
      - redirection/v1
      - duplicate-post/v1
      - wpe/cache-plugin/v1
      - wpe_sign_on_plugin/v1

- target: $.info
  description: >-
    Record the agent-surface finding explicitly, so no later round mistakes the registered
    Abilities API for a published agent endpoint.
  update:
    x-apievangelist-agent-surface:
      wp_abilities_registered: true
      wp_abilities_anonymous_status: 401
      wp_abilities_anonymous_code: rest_forbidden
      mcp_claimed: false
      note: >-
        The WordPress Abilities API (wp-abilities/v1) is registered but auth-gated. It is a core
        administrative capability registry bound to an authenticated WordPress user, not an agent
        endpoint Belharra publishes. No MCPServer pointer is emitted and no tool list is derived.

- target: $.info
  description: >-
    Record the soft-404 finding on the parked alias domain so a later round does not credit its
    blanket 200s.
  update:
    x-apievangelist-soft-404:
      host: belharratherapeutics.com
      verdict: parked-lander-catch-all
      control_path: /this-path-does-not-exist-xyz123
      control_body_bytes: 114
      note: >-
        Answers 200 on /.well-known/agent-card.json, /.well-known/agent.json, /openapi.json and
        /.well-known/security.txt with a body byte-identical to the nonsense control path. Nothing
        from this host is credited.

- target: $.servers[0]
  description: Record the deployment platform observed in response headers.
  update:
    x-apievangelist-platform:
      cms: WordPress
      hosting: WP Engine
      cdn: Cloudflare
      response_headers: [x-powered-by, x-cacheable, x-cache, x-cache-group, cf-cache-status, x-robots-tag]
      robots: 'x-robots-tag: noindex on every /wp-json response'

- target: $.tags
  description: >-
    Tag names, descriptions and the whole tag taxonomy are API Evangelist additions — the route
    index carries no grouping of any kind. The custom-types tag in particular groups Belharra's
    three site-specific post types, which WordPress registers alongside core types with no
    distinction.
  update: {}

- target: "$.paths..responses['200'].headers"
  description: >-
    X-WP-Total, X-WP-TotalPages and the RFC 8288 Link header are documented here from observed
    response headers. They are absent from the route index, which describes only request args.
  update: {}

- target: "$.paths..responses['400']"
  description: >-
    The 400 and 404 responses, and the worked error examples attached to them, were captured by
    deliberately issuing failing requests (per_page=999, posts/999999, oembed with no url) and
    recording the real bodies. The route index declares no responses at all.
  update: {}

- target: $.components.schemas
  description: >-
    Every schema is an API Evangelist reconstruction from live anonymous response bodies, not a
    provider-published model. Field sets were read from actual `context=view` responses per
    collection. The `acf` property is typed as an open object on purpose: the ACF field definitions
    are 401-gated, so any concrete shape would be invention.
  update: {}

- target: $.components.schemas.CustomPost
  description: >-
    A single schema is shared by press-release, company-news and multimedia-file because live
    responses from all three returned an identical field set. This is an API Evangelist
    consolidation; WordPress registers them as three independent types.
  update:
    x-apievangelist-consolidated-from: [press-release, company-news, multimedia-file]
    x-apievangelist-verified: >-
      Field sets compared across live anonymous context=view responses from all three collections
      on 2026-08-06 and found identical.

- target: $.components.schemas.Error
  description: >-
    Explicitly typed as the WordPress envelope, not RFC 9457. Called out because the absence of
    problem+json is a scored fact, not an omission in this document.
  update:
    x-apievangelist-rfc9457: false

- target: $.components.parameters
  description: >-
    Every parameter is copied verbatim from the `args` block the route index publishes for that
    endpoint. Descriptions and enum values are upstream WordPress; only the OpenAPI packaging and
    the per-collection examples are ours.
  update: {}

Work with this as data

Every overlay 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 openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • 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 overlay
curl "https://apis.io/api/v1/overlays/belharra-therapeutics-content-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

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

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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