openapi: 3.2.0 info: title: Circle Pharma Content API (WordPress REST API) Search API version: wp/v2 description: Anonymously readable content API for circlepharma.com, derived from the WordPress REST API route index the site publishes at https://circlepharma.com/wp-json/. It exposes Circle Pharma press releases, publications, in-the-news items and pages (posts/pages), the media library, the leadership/board roster (team + member_type), the events calendar (all_events + event_type), and site search. Circle Pharma does not publish a developer program or a hand-authored specification; this document is a faithful derivation of the routes, parameters and defaults the site itself advertises, restricted to the read operations verified to return HTTP 200 without credentials. Write operations exist on the same routes but are authenticated administrative endpoints, not a public API offering, and are deliberately not modelled here. contact: name: Circle Pharma email: info@circlepharma.com url: https://circlepharma.com/contact-us x-derived-from: https://circlepharma.com/wp-json/ x-derived-on: '2026-08-01' x-api-evangelist-note: Derived by the API Evangelist enrichment pipeline from the provider-published WordPress REST route index; not authored or endorsed by Circle Pharma. servers: - url: https://circlepharma.com/wp-json description: Production security: - {} tags: - name: Search description: Cross-content search paths: /wp/v2/search: get: operationId: search tags: - Search summary: Search across public content parameters: - name: context in: query required: false schema: type: string enum: - view - embed default: view description: Scope under which the request is made; determines fields present in response. - name: exclude in: query required: false schema: type: array default: [] items: type: integer description: Ensure result set excludes specific IDs. - name: include in: query required: false schema: type: array default: [] items: type: integer description: Limit result set to specific IDs. - name: page in: query required: false schema: type: integer default: 1 minimum: 1 description: Current page of the collection. - name: per_page in: query required: false schema: type: integer default: 10 minimum: 1 maximum: 100 description: Maximum number of items to be returned in result set. - name: search in: query required: false schema: type: string description: Limit results to those matching a string. - name: subtype in: query required: false schema: type: array default: any items: type: string enum: - post - page - e-floating-buttons - elementor_library - team - all_events - category - post_tag - member_type - event_type - any description: Limit results to items of one or more object subtypes. - name: type in: query required: false schema: type: string enum: - post - term - post-format default: post description: Limit results to items of an object type. security: - {} responses: '200': description: Result content: application/json: schema: type: array items: $ref: '#/components/schemas/SearchResult' '400': $ref: '#/components/responses/Error' components: schemas: SearchResult: type: object properties: id: type: integer title: type: string url: type: string format: uri type: type: string subtype: type: string _links: type: object Error: type: object required: - code - message properties: code: type: string description: Machine-readable WordPress error code. message: type: string description: Human-readable error message. data: type: object properties: status: type: integer description: HTTP status code. params: type: object details: type: object responses: Error: description: WordPress REST error envelope content: application/json: schema: $ref: '#/components/schemas/Error' example: code: rest_post_invalid_id message: Invalid post ID. data: status: 404 securitySchemes: applicationPassword: type: http scheme: basic description: WordPress Application Passwords (RFC 7617 Basic over TLS). Required only for write and administrative routes, which are out of scope for this document — every operation modelled here is anonymous.