openapi: 3.2.0 info: title: Arbor Biotechnologies Content API (WordPress REST) Pages API version: 1.0.0 summary: Read-only, anonymously accessible content API served by the Arbor Biotechnologies corporate site. description: 'Arbor Biotechnologies publishes no product or developer API. This document was DERIVED by API Evangelist from the live WordPress REST route index at https://arbor.bio/wp-json (18 namespaces, 341 declared routes) on 2026-07-31, and reduced to only those operations that were individually probed WITHOUT credentials and observed returning HTTP 200. It is an incidental content-management surface, not a supported API product: Arbor issues no keys, publishes no developer documentation, offers no support channel for it, and its terms of use do not mention API access. Every write, administrative and site-configuration route declared in the route index is excluded here because anonymous callers receive 401 (`rest_forbidden`, `rest_cannot_view_plugins`, `rest_cannot_view_themes`, `rest_user_cannot_view`) or 403 (`rest_comment_disabled`). Observed collection sizes on 2026-07-31: 59 posts (press releases, 2018-2026), 11 pages, 11 categories, 0 tags, 394 media items reported by X-WP-Total of which 4 are returned to anonymous callers, 60 searchable objects, 1 contact form.' contact: name: Arbor Biotechnologies url: https://arbor.bio/get-in-touch/ license: name: Proprietary — see Arbor Biotechnologies Terms of Use url: https://arbor.bio/terms-of-use/ x-derived-by: API Evangelist enrichment pipeline x-derived-from: https://arbor.bio/wp-json x-derived-on: '2026-07-31' x-provider-published: false x-api-posture: incidental-cms-surface servers: - url: https://arbor.bio/wp-json description: Production WordPress REST API on the Arbor Biotechnologies corporate site. security: [] tags: - name: pages description: Static site pages — pipeline, what we do, who we are, clinical trial, policies. paths: /wp/v2/pages: get: operationId: listPages summary: List site pages description: List published pages. 11 observed on 2026-07-31 — clinical-trial, pipeline, what-we-do, who-we-are, inside-arbor, stay-updated, get-in-touch, site-map, privacy-policy, terms-of-use and the home page. tags: - pages parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/perPage' - $ref: '#/components/parameters/search' - $ref: '#/components/parameters/order' - $ref: '#/components/parameters/slug' - $ref: '#/components/parameters/fields' - $ref: '#/components/parameters/embed' - name: parent in: query description: Limit to children of these page ids. schema: type: array items: type: integer style: form explode: false responses: '200': description: A page of pages. headers: X-WP-Total: $ref: '#/components/headers/XWPTotal' X-WP-TotalPages: $ref: '#/components/headers/XWPTotalPages' Link: $ref: '#/components/headers/Link' content: application/json: schema: type: array items: $ref: '#/components/schemas/Page' '400': $ref: '#/components/responses/InvalidParam' /wp/v2/pages/{id}: get: operationId: getPage summary: Get a site page description: Retrieve a single published page by its integer id. tags: - pages parameters: - $ref: '#/components/parameters/idPath' - $ref: '#/components/parameters/fields' - $ref: '#/components/parameters/embed' responses: '200': description: The page. content: application/json: schema: $ref: '#/components/schemas/Page' '404': $ref: '#/components/responses/InvalidPostId' components: schemas: Error: type: object description: The WordPress REST error envelope. This is NOT RFC 9457 Problem Details — the media type is application/json, there is no `type` URI, and the HTTP status is repeated inside `data.status`. required: - code - message - data properties: code: type: string description: Machine-readable error code e.g. rest_post_invalid_id.: null message: type: string description: Human-readable message. data: type: object properties: status: type: integer params: type: object details: type: object Page: type: object description: A static site page. properties: id: type: integer date: type: string format: date-time modified: type: string format: date-time slug: type: string status: type: string enum: - publish 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 featured_media: type: integer parent: type: integer description: Parent page id 0 for top level. All 11 pages are top level on this site.: null menu_order: type: integer template: type: string meta: type: object acf: type: - object - array yoast_head: type: string yoast_head_json: type: object _links: $ref: '#/components/schemas/Links' Links: type: object description: HAL-style relation map (self, collection, about, author, wp:featuredmedia, wp:attachment, wp:term, replies). Appending `_embed` inlines these under `_embedded`. additionalProperties: type: array items: type: object properties: href: type: string format: uri embeddable: type: boolean templated: type: boolean RenderedText: type: object description: WordPress renders text fields into an object with a `rendered` HTML string. properties: rendered: type: string parameters: embed: name: _embed in: query description: Inline linked resources (author, featured media, terms) under `_embedded`, resolving relationships in one round trip. schema: type: boolean search: name: search in: query description: Limit results to those matching a string. schema: type: string perPage: name: per_page in: query description: Items per page. The server rejects values outside 1-100 with HTTP 400. schema: type: integer minimum: 1 maximum: 100 default: 10 order: name: order in: query schema: type: string enum: - asc - desc default: desc idPath: name: id in: path required: true description: Integer object id. schema: type: integer page: name: page in: query description: 1-based page number. schema: type: integer minimum: 1 default: 1 fields: name: _fields in: query description: Comma-separated allowlist of response fields. Strongly recommended — a full post object carries rendered HTML content plus a `yoast_head` block and is large. schema: type: string example: id,date,slug,link,title slug: name: slug in: query description: Limit results to one or more slugs. schema: type: array items: type: string style: form explode: false headers: XWPTotalPages: description: Total number of pages available at the current per_page. schema: type: integer Link: description: RFC 8288 pagination links (rel=next, rel=prev). schema: type: string XWPTotal: description: Total number of items in the collection, before pagination. schema: type: integer responses: InvalidPostId: description: No object exists with that id, or it is not publicly readable. content: application/json: schema: $ref: '#/components/schemas/Error' example: code: rest_post_invalid_id message: Invalid post ID. data: status: 404 InvalidParam: description: A query parameter failed validation. content: application/json: schema: $ref: '#/components/schemas/Error' example: code: rest_invalid_param message: 'Invalid parameter(s): per_page' data: status: 400 params: per_page: per_page must be between 1 (inclusive) and 100 (inclusive) securitySchemes: applicationPassword: type: http scheme: basic description: WordPress application passwords (HTTP Basic per RFC 7617), advertised by the site's own route index. Required only for the write and administrative routes, none of which appear in this document. Arbor Biotechnologies issues no public credentials, so this scheme is declared by the platform but unreachable for third parties. externalDocs: description: WordPress REST API handbook — the upstream reference for these routes and parameters. url: https://developer.wordpress.org/rest-api/reference/