NiKang Therapeutics · OpenAPI Overlay 1.0.0

NiKang Therapeutics content API — API Evangelist enhancements

10 actions 2 updates update extends openapi/
Generated by API Evangelist Written by API Evangelist tooling for NiKang Therapeutics's API. It is a proposal applied on top of the contract, not a document NiKang Therapeutics publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-api-evangelist-provenanceurl

Targets 10

$.info
$.servers
$.info.contact
$.paths[*][*].responses
$.paths[*].get.responses['200'].headers
$.paths[*][*].operationId
$.paths[*][*].description
$.components.parameters.PerPage
$.components.schemas
$.tags

OpenAPI Overlay

nikang-therapeutics-content-overlay.yaml Raw ↑
overlay: 1.0.0
info:
  title: NiKang Therapeutics content API — API Evangelist enhancements
  version: 1.0.0
  summary: >-
    The enhancements API Evangelist applied on top of the raw WordPress route index when deriving
    openapi/nikang-therapeutics-*-openapi.yml. NiKang Therapeutics publishes no OpenAPI, so there is no
    upstream document to extend — this Overlay records what we ADDED, so a reader can separate the
    provider's contract from our contribution and reapply it after any re-harvest.
  x-generated: '2026-08-26'
  x-method: generated
  x-source: >-
    Authored by the API Evangelist enrichment pipeline against the specs in openapi/, which were
    themselves derived from https://www.nikangtx.com/wp-json on 2026-08-26.
extends: openapi/
x-applies-to:
- openapi/nikang-therapeutics-posts-api-openapi.yml
- openapi/nikang-therapeutics-pages-api-openapi.yml
- openapi/nikang-therapeutics-team-api-openapi.yml
- openapi/nikang-therapeutics-media-api-openapi.yml
- openapi/nikang-therapeutics-taxonomy-api-openapi.yml
- openapi/nikang-therapeutics-search-api-openapi.yml
- openapi/nikang-therapeutics-discovery-api-openapi.yml
- openapi/nikang-therapeutics-comments-api-openapi.yml
- openapi/nikang-therapeutics-oembed-api-openapi.yml
actions:
- target: $.info
  description: >-
    Attach provenance naming the exact source, the harvest date, the route and namespace counts, and
    the fact that NiKang publishes no OpenAPI of its own — so the document can never be mistaken for a
    provider-authored contract.
  update:
    x-api-evangelist-provenance: >-
      Derived from the live WordPress REST route index at https://www.nikangtx.com/wp-json (210 routes
      across 17 namespaces), verified against live anonymous responses on 2026-08-26.
- target: $.servers
  description: >-
    The route index publishes no servers block. Added the production base URL read from the index's own
    `url` field, annotated with the observed edge topology (Cloudflare in front of WP Engine).
  update:
    url: https://www.nikangtx.com/wp-json
- target: $.info.contact
  description: >-
    Added a contact block using info@nikangtx.com, read from the site footer on 2026-08-26. Note this
    is NiKang's general enquiry address, not a developer support channel — none exists.
- target: $.paths[*][*].responses
  description: >-
    The route index declares no responses at all. Added 200 response schemas modelled from live payload
    keys, plus the 400 and 404 error responses captured verbatim from the deployment, so consumers can
    handle failure without guessing.
- target: $.paths[*].get.responses['200'].headers
  description: >-
    Added X-WP-Total, X-WP-TotalPages and Link as declared response headers on every collection
    operation. These are the pagination contract and they are invisible in the route index.
- target: $.paths[*][*].operationId
  description: >-
    The route index has no operation identifiers. Assigned stable camelCase operationIds
    (listPosts, getPost, listTeamMembers, searchContent, ...) so the operations can be referenced from
    skills/, mcp/ and the tool crosswalk.
- target: $.paths[*][*].description
  description: >-
    Enriched descriptions with live cardinality read from X-WP-Total on 2026-08-26 — 16 posts, 9 pages,
    67 media items, 10 team members, 3 categories, 0 tags, 0 comments — so a consumer knows which
    registered collections actually carry data before calling them.
- target: $.components.parameters.PerPage
  description: >-
    Recorded the real bound (1..100) and that exceeding it returns 400 rest_invalid_param rather than
    clamping. Verified live on per_page=200.
- target: $.components.schemas
  description: >-
    Added named schemas (Post, Page, TeamMember, MediaItem, Term, Taxonomy, PostType, Status, Comment,
    SearchResult, ApiIndex, Oembed, Error) built from live response keys, including the deployment's
    theme and plugin extensions — acf, cp_meta_data, class_list — which are absent from the core
    WordPress contract.
- target: $.tags
  description: >-
    Split the single 210-route index into nine tagged documents along resource families, so each API
    entry in apis.yml points at a document a consumer can actually read.
x-exclusions:
  description: >-
    Deliberately NOT represented in openapi/, and recorded here so the omission is a decision rather
    than a gap.
  excluded:
  - Every write method (POST, PUT, PATCH, DELETE) — all require an authenticated WordPress user.
  - Routes returning 401 anonymously — /wp/v2/users, /wp/v2/settings, /wp/v2/block-types,
    wp-abilities/v1, wp-site-health/v1, /oembed/1.0/proxy (the last is kept, but documented as gated).
  - The plugin administration namespaces — wpe/cache-plugin, wpe_sign_on_plugin, wordfence,
    wordfence-login-security, ninja-forms-submissions, ninja-forms-views, duplicate-post, nps-survey,
    ultimate-vc, uavc, cooltimeline, the7 — which are site operations, not a content contract.
  - Namespaces registered but unrouted anonymously — the7/v1 and nps-survey/v1 concrete paths return
    rest_no_route.