Generated by API Evangelist
Written by API Evangelist tooling for Nacuity Pharmaceuticals's API. It is a proposal applied on top of the contract, not a document Nacuity Pharmaceuticals publishes.
overlay: 1.0.0
info:
title: API Evangelist enhancements for the Nacuity Pharmaceuticals Content API
version: '1.0.0'
x-description: >-
An OpenAPI Overlay 1.0.0 document recording the enhancements API Evangelist applied on top of
the bare WordPress route index published at https://www.nacuity.com/wp-json/. The route index is
a machine-readable list of paths, methods and argument names — it carries no summaries, no
descriptions, no response schemas, no examples, no tags and no operationIds. Everything this
overlay adds is either an observation from a live anonymous probe on 2026-08-04 or editorial
context; no capability is asserted that the API does not have.
x-generated: '2026-08-04'
x-method: generated
x-source: openapi/nacuity-pharmaceuticals-content-openapi.yml
extends: ./../openapi/nacuity-pharmaceuticals-content-openapi.yml
actions:
- target: $.info
description: >-
Name the surface, state plainly that Nacuity Pharmaceuticals runs no developer program, and
carry the provenance of the derivation. The route index supplies only a site name and
description.
update:
x-overlay-note: Provenance and framing added by API Evangelist; not published by the provider.
- target: $.servers
description: Declare the production server. The route index has no servers construct.
update:
x-overlay-note: Server URL taken from the `url` field of the /wp-json/ index document.
- target: $.tags
description: >-
Group 22 operations into nine functional tags — pages, posts, media, portfolio, taxonomy,
search, discovery, oembed, seo — and annotate each with the count actually observed, so a reader
learns immediately that posts, portfolio and tags are empty.
update:
x-overlay-note: Tags and their observed counts added by API Evangelist.
- target: $.paths.*.get
description: >-
Add operationId, summary and description to every operation. WordPress publishes none of these;
an agent binding tools to this API has nothing to name them with otherwise.
update:
x-overlay-note: operationId/summary/description authored by API Evangelist.
- target: $.paths['/wp/v2/pages/{id}'].get
description: >-
Record the single most consequential finding of the probe — content.rendered and
excerpt.rendered are empty strings on all 29 published pages, because the bodies live in
page-builder post meta. A consumer must fetch the HTML `link` for text. Nothing in the route
index reveals this; it is only visible from a live response.
update:
x-overlay-note: Empty-content finding, verified on pages 23, 80 and 630 on 2026-08-04.
- target: $.paths['/wp/v2/posts'].get
description: Record that the posts collection is registered but empty (X-WP-Total 0) — press releases are pages under parent 99.
update:
x-overlay-note: Emptiness verified via X-WP-Total on 2026-08-04.
- target: $.paths['/wp/v2/portfolio'].get
description: Record that the theme-registered `portfolio` custom post type is empty (X-WP-Total 0).
update:
x-overlay-note: Emptiness verified via X-WP-Total on 2026-08-04.
- target: $.paths['/yoast/v1/get_head'].get
description: >-
Include the one anonymously readable operation in the yoast/v1 namespace and mark the other 40
as gated, so a reader does not treat the namespace as open.
update:
x-overlay-note: Anonymous readability verified per-endpoint on 2026-08-04.
- target: $.components.schemas
description: >-
Author twelve response schemas — ApiIndex, Page, Post, MediaItem, Term, SearchResult, PostType,
Taxonomy, Oembed, YoastHead, RenderedText, Error — from observed response bodies. The route
index describes request arguments only and says nothing about what comes back.
update:
x-overlay-note: Response schemas derived from live response bodies, not from a provider document.
- target: $.components.schemas.Page.properties.yoast_head_json
description: >-
Document the Yoast block as the only per-page descriptive text the API returns, including the
schema.org @graph. This is what makes the surface useful despite the empty content fields.
update:
x-overlay-note: See json-ld/nacuity-pharmaceuticals-organization.jsonld for the graph, saved verbatim.
- target: $.components.schemas.Error
description: >-
Document the WordPress {code, message, data} envelope and state explicitly that it is NOT
RFC 9457 problem+json, so a client does not build against the wrong error contract.
update:
x-overlay-note: Envelope and every error slug captured verbatim from live 400/401/403/404 responses.
- target: $.components.headers
description: Declare X-WP-Total, X-WP-TotalPages and the RFC 8288 Link header as documented response headers.
update:
x-overlay-note: Pagination totals are header-only; the response body is a bare array.
- target: $.paths
description: >-
RESTRICT the surface. The live route index registers 211 routes across nine namespaces, most of
them write operations or administrative endpoints that refuse anonymous callers. This document
models only the 22 GET operations verified to return 200 without credentials. Everything
excluded is itemised in authentication/nacuity-pharmaceuticals-authentication.yml with the
status and error slug it actually returned.
update:
x-overlay-note: 22 of 211 routes modelled — a deliberate restriction, not an omission.