Cresilon Search API

Public, unauthenticated cross-content search over Cresilon posts and pages, returning lightweight id / title / url / type / subtype records. The fastest way to resolve a Cresilon product or clinical topic to a canonical URL.

OpenAPI Specification

cresilon-search-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cresilon Search API
  version: wp/v2
  summary: Public cross-content search over cresilon.com posts and pages.
  description: Cresilon publishes its corporate website (cresilon.com) on WordPress (WordPress.com Atomic hosting, nginx) with the core WordPress REST API enabled and anonymously readable. This specification was DERIVED by discovering the live route index at https://cresilon.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. Write operations exist on the same routes but require authentication (WordPress cookie + X-WP-Nonce, or Application Passwords) and are not documented here; anonymous requests to them return HTTP 401. This is NOT a product API offered by Cresilon to customers — Cresilon is a biotechnology and medical-device manufacturer, not a software vendor. This is the content API of their marketing site, captured for discovery purposes. This document covers the WordPress core search route, which returns lightweight records spanning both the news stream and the static pages. It is the fastest way for an agent to resolve a Cresilon product or clinical topic to a canonical URL.
  contact:
    name: Cresilon
    url: https://cresilon.com/contact-us/
    email: info@cresilon.com
  license:
    name: Site content — all rights reserved, see Terms of Use
    url: https://cresilon.com/terms-of-use/
  x-apis-io-provenance:
    method: derived
    source: https://cresilon.com/wp-json/
    derived_on: '2026-08-04'
    note: Routes enumerated from the live wp-json discovery document (1,021 routes across 45 namespaces); every operation below was probed anonymously and returned HTTP 200. Schemas reflect the field set observed in live responses on 2026-08-04, including the `acf` (Advanced Custom Fields), Jetpack and `yoast_head_json` extensions this site adds. No fabricated operations or parameters.
servers:
- url: https://cresilon.com/wp-json
  description: Production
tags:
- name: Search
  description: Cross-content search over Cresilon posts and pages.
paths:
  /wp/v2/search:
    get:
      tags:
      - Search
      operationId: searchContent
      summary: Search Cresilon site content
      description: 'Cross-content search over Cresilon posts and pages, returning lightweight id / title / url / type / subtype records. Verified live 2026-08-04: `?search=gel` returned X-WP-Total: 129.'
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/perPage'
      - $ref: '#/components/parameters/search'
      - $ref: '#/components/parameters/context'
      - $ref: '#/components/parameters/fields'
      - name: type
        in: query
        description: Limit results to items of an object type.
        schema:
          type: string
          enum:
          - post
          - term
          - post-format
          default: post
      - name: subtype
        in: query
        description: Limit results to items of one or more object subtypes, e.g. `post` or `page`.
        schema:
          type: array
          items:
            type: string
      - name: exclude
        in: query
        description: Ensure result set excludes specific IDs.
        schema:
          type: array
          items:
            type: integer
      responses:
        '200':
          description: A page of search results.
          headers:
            X-WP-Total:
              $ref: '#/components/headers/XWPTotal'
            X-WP-TotalPages:
              $ref: '#/components/headers/XWPTotalPages'
            Link:
              $ref: '#/components/headers/LinkPagination'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SearchResult'
              examples:
                traumagel:
                  summary: Search for TRAUMAGEL
                  externalValue: https://cresilon.com/wp-json/wp/v2/search?search=traumagel&per_page=2
        '400':
          $ref: '#/components/responses/InvalidParam'
components:
  parameters:
    search:
      name: search
      in: query
      description: Limit results to those matching a string.
      schema:
        type: string
    perPage:
      name: per_page
      in: query
      description: 'Maximum number of items to be returned in the result set. Verified live: values outside 1-100 return HTTP 400 `rest_invalid_param`.'
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 10
    page:
      name: page
      in: query
      description: Current page of the collection. Defaults to 1.
      schema:
        type: integer
        minimum: 1
        default: 1
    fields:
      name: _fields
      in: query
      description: Comma-separated list of fields to limit the response to. Verified live, e.g. `_fields=id,slug,link,title`.
      schema:
        type: string
    context:
      name: context
      in: query
      description: Scope under which the request is made; determines fields present in the response. Only `view` and `embed` are available anonymously — `edit` returns HTTP 401.
      schema:
        type: string
        enum:
        - view
        - embed
        default: view
  headers:
    LinkPagination:
      description: RFC 8288 Link header carrying `next` and `prev` pagination relations.
      schema:
        type: string
      example: <https://cresilon.com/wp-json/wp/v2/search?search=gel&per_page=1&page=2>; rel="next"
    XWPTotalPages:
      description: Total number of pages in the collection at the current per_page.
      schema:
        type: integer
      example: 130
    XWPTotal:
      description: Total number of items in the collection.
      schema:
        type: integer
      example: 129
  schemas:
    SearchResult:
      type: object
      description: A lightweight cross-content search result. Field set observed live on 2026-08-04.
      properties:
        id:
          type: integer
        title:
          type: string
          description: Plain-text title of the matched object.
        url:
          type: string
          format: uri
        type:
          type: string
          description: Search result type, e.g. `post`.
          example: post
        subtype:
          type: string
          description: Underlying object subtype — `post` or `page`.
          example: page
        _links:
          type: object
          additionalProperties: true
          description: self / about / collection relations, with `targetHints.allow` listing permitted methods.
      required:
      - id
      - title
      - url
      - type
      - subtype
    Error:
      type: object
      description: The WordPress REST error envelope, verified live against cresilon.com. Note this is NOT RFC 9457 application/problem+json — it is served as application/json with a WordPress-specific shape.
      properties:
        code:
          type: string
          description: Machine-readable WordPress error code, e.g. `rest_post_invalid_id`.
        message:
          type: string
          description: Human-readable message.
        data:
          type: object
          properties:
            status:
              type: integer
              description: HTTP status code, repeated in the body.
            params:
              type: object
              additionalProperties:
                type: string
            details:
              type: object
              additionalProperties: true
          required:
          - status
      required:
      - code
      - message
      - data
  responses:
    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)