openapi: 3.1.0 info: title: Ascend Advanced Therapies Content API (WordPress REST) Careers Taxonomy API version: wp/v2 summary: Public read surface of the Ascend Advanced Therapies corporate site content API. description: Ascend Advanced Therapies publishes its corporate website (ascend-adv.com) on WordPress with the core WordPress REST API enabled and anonymously readable. This specification was DERIVED by discovering the live route index at https://www.ascend-adv.com/wp-json/ and probing each route for anonymous access; only routes verified to return HTTP 200 without credentials are documented here as public operations. The surface exposes the company's News & Insights posts, site pages, media library, taxonomy (categories and tags), site search, content-type and taxonomy metadata, and the `awsm_job_openings` custom post type that backs the Careers listings. Write operations exist on the same routes but require authentication (WordPress Application Passwords) and are not documented here. This is not a product API offered by Ascend to customers; it is the content API of their marketing site, captured for discovery purposes. contact: name: Ascend Advanced Therapies url: https://www.ascend-adv.com/contact-us/ email: hello@www.ascend-adv.com x-apis-io-provenance: method: derived source: https://www.ascend-adv.com/wp-json/ derived_on: '2026-07-19' note: Routes enumerated from the live wp-json discovery document (328 routes across 12 namespaces); each operation below was probed anonymously and returned 200. Schemas reflect fields observed in live responses. No fabricated operations. servers: - url: https://www.ascend-adv.com/wp-json description: Production tags: - name: Taxonomy description: Categories and tags. paths: /wp/v2/categories: get: tags: - Taxonomy operationId: listCategories summary: List categories description: Lists the `category` taxonomy terms applied to posts. On this site the categories include news, articles, blogs, and webinar. parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/perPage' - $ref: '#/components/parameters/search' - name: slug in: query schema: type: array items: type: string 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: tags: - Taxonomy operationId: getCategory summary: Get a category by ID parameters: - $ref: '#/components/parameters/idPath' responses: '200': description: The category term content: application/json: schema: $ref: '#/components/schemas/Term' '404': $ref: '#/components/responses/NotFound' /wp/v2/tags: get: tags: - Taxonomy operationId: listTags summary: List tags parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/perPage' - $ref: '#/components/parameters/search' responses: '200': description: A page of tags 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/tags/{id}: get: tags: - Taxonomy operationId: getTag summary: Get a tag by ID parameters: - $ref: '#/components/parameters/idPath' responses: '200': description: The tag term content: application/json: schema: $ref: '#/components/schemas/Term' '404': $ref: '#/components/responses/NotFound' components: parameters: page: name: page in: query description: Current page of the collection. schema: type: integer minimum: 1 default: 1 perPage: name: per_page in: query description: Maximum number of items to return per page. schema: type: integer minimum: 1 maximum: 100 default: 10 search: name: search in: query description: Limit results to those matching a string. schema: type: string idPath: name: id in: path required: true description: Unique identifier for the resource. schema: type: integer schemas: Term: type: object properties: id: type: integer count: type: integer description: type: string link: type: string format: uri name: type: string slug: type: string taxonomy: type: string parent: type: integer _links: type: object Error: type: object description: The WordPress REST error envelope. Not RFC 9457 problem+json; errors are returned as application/json with a machine-readable `code`, a human `message`, and a `data` object carrying the HTTP status and any per-parameter validation details. required: - code - message - data properties: code: type: string description: Machine-readable error code. examples: - rest_no_route - rest_post_invalid_id - rest_invalid_param - rest_forbidden message: type: string description: Human-readable error message. data: type: object properties: status: type: integer params: type: object additionalProperties: type: string details: type: object responses: NotFound: description: The requested resource does not exist. content: application/json: schema: $ref: '#/components/schemas/Error' example: code: rest_post_invalid_id message: Invalid post ID. data: status: 404 InvalidParam: description: One or more query parameters 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) headers: XWPTotalPages: description: Total number of pages available at the current per_page size. schema: type: integer example: 55 XWPTotal: description: Total number of items in the unpaginated collection. schema: type: integer example: 55 securitySchemes: applicationPassword: type: http scheme: basic description: WordPress Application Passwords. Advertised by the API index at `authentication.application-passwords`, authorized at https://www.ascend-adv.com/wp-admin/authorize-application.php. Required only for write operations and for privileged reads (for example /wp/v2/settings, which returns 401 anonymously). All operations documented in this specification are anonymously readable.