openapi: 3.2.0 info: title: Arbor Biotechnologies Content API (WordPress REST) Taxonomies 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: taxonomies description: Categories and tags applied to posts, plus taxonomy metadata. paths: /wp/v2/categories: get: operationId: listCategories summary: List categories description: List post categories. 11 observed on 2026-07-31 — a `press-release` category with 57 posts plus per-year archive categories 2018 through 2026. tags: - taxonomies parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/perPage' - $ref: '#/components/parameters/search' - $ref: '#/components/parameters/slug' - $ref: '#/components/parameters/fields' responses: '200': description: A page of categories. headers: X-WP-Total: $ref: '#/components/headers/XWPTotal' X-WP-TotalPages: $ref: '#/components/headers/XWPTotalPages' content: application/json: schema: type: array items: $ref: '#/components/schemas/Term' '400': $ref: '#/components/responses/InvalidParam' /wp/v2/categories/{id}: get: operationId: getCategory summary: Get a category tags: - taxonomies parameters: - $ref: '#/components/parameters/idPath' - $ref: '#/components/parameters/fields' responses: '200': description: The category. content: application/json: schema: $ref: '#/components/schemas/Term' '404': $ref: '#/components/responses/InvalidTermId' /wp/v2/tags: get: operationId: listTags summary: List tags description: List post tags. The `post_tag` taxonomy is registered and the route is public, but the collection was empty (X-WP-Total 0) on 2026-07-31 — this site classifies with categories only. tags: - taxonomies parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/perPage' - $ref: '#/components/parameters/search' - $ref: '#/components/parameters/slug' - $ref: '#/components/parameters/fields' responses: '200': description: A page of tags. Empty on this site. headers: X-WP-Total: $ref: '#/components/headers/XWPTotal' content: application/json: schema: type: array items: $ref: '#/components/schemas/Term' '400': $ref: '#/components/responses/InvalidParam' /wp/v2/tags/{id}: get: operationId: getTag summary: Get a tag description: Declared public in the live route index. Not exercised against real data because the tag collection is empty on this site. tags: - taxonomies parameters: - $ref: '#/components/parameters/idPath' - $ref: '#/components/parameters/fields' responses: '200': description: The tag. content: application/json: schema: $ref: '#/components/schemas/Term' '404': $ref: '#/components/responses/InvalidTermId' 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 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 Term: type: object description: A taxonomy term — a category or tag. properties: id: type: integer count: type: integer description: Number of posts assigned to this 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: Parent term id. Categories are hierarchical; tags are not. meta: type: object _links: $ref: '#/components/schemas/Links' parameters: 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 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 XWPTotal: description: Total number of items in the collection, before pagination. schema: type: integer responses: InvalidTermId: description: No term exists with that id. content: application/json: schema: $ref: '#/components/schemas/Error' example: code: rest_term_invalid message: Term does not exist. 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/