openapi: 3.1.0 info: title: Ascend Advanced Therapies Content API (WordPress REST) Careers Pages 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: Pages description: Static site pages. paths: /wp/v2/pages: get: tags: - Pages operationId: listPages summary: List site pages parameters: - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/perPage' - $ref: '#/components/parameters/search' - $ref: '#/components/parameters/context' responses: '200': description: A page of pages 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/Page' '400': $ref: '#/components/responses/InvalidParam' /wp/v2/pages/{id}: get: tags: - Pages operationId: getPage summary: Get a page by ID parameters: - $ref: '#/components/parameters/idPath' - $ref: '#/components/parameters/context' responses: '200': description: The page content: application/json: schema: $ref: '#/components/schemas/Page' '404': $ref: '#/components/responses/NotFound' components: schemas: RenderedText: type: object properties: rendered: type: string protected: type: boolean Page: type: object properties: id: type: integer date: type: string format: date-time modified: type: string format: date-time slug: type: string status: type: string type: type: string link: type: string format: uri title: $ref: '#/components/schemas/RenderedText' content: $ref: '#/components/schemas/RenderedText' excerpt: $ref: '#/components/schemas/RenderedText' parent: type: integer description: ID of the parent page. author: type: integer featured_media: type: integer menu_order: 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 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 context: name: context in: query description: Scope under which the request is made; determines fields present in the response. schema: type: string enum: - view - embed - edit default: view 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 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.