Cresilon Discovery API

Public, unauthenticated site, content-type, taxonomy, status and author metadata — the self-describing route index (45 namespaces, 1,021 routes) that makes the whole Cresilon content surface machine-readable.

OpenAPI Specification

cresilon-discovery-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cresilon Discovery API
  version: wp/v2
  summary: Self-describing site, content-type, taxonomy, status and author metadata for cresilon.com.
  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 route index and the metadata routes that make the whole Cresilon content surface machine-readable, plus the anonymously-readable authors collection. The route index is the single best entry point for an agent: it names the site, its timezone, its registered namespaces and every route with its arguments.'
  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: Discovery
  description: Route index and site/content-type/taxonomy/status metadata.
paths:
  /:
    get:
      tags:
      - Discovery
      operationId: getRouteIndex
      summary: Get the WordPress REST route index
      description: 'Returns the self-describing API index for cresilon.com — site name, description, URL, timezone offset, the full list of registered namespaces and every route with its methods, args and endpoint metadata. Verified live 2026-08-04: 45 namespaces and 1,021 routes; `authentication` advertises WordPress Application Passwords with the authorization endpoint at https://cresilon.com/wp-admin/authorize-application.php.'
      parameters:
      - $ref: '#/components/parameters/context'
      - name: namespace
        in: query
        description: Limit the index to a single namespace, e.g. `wp/v2`.
        schema:
          type: string
      - $ref: '#/components/parameters/fields'
      responses:
        '200':
          description: The route index.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouteIndex'
              examples:
                live:
                  summary: Live route index
                  externalValue: https://cresilon.com/wp-json/
  /wp/v2/types:
    get:
      tags:
      - Discovery
      operationId: listTypes
      summary: List registered content types
      description: Returns every registered post type with its REST base, taxonomies, supports map and capability hints.
      parameters:
      - $ref: '#/components/parameters/context'
      responses:
        '200':
          description: A map of post types keyed by type slug.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
  /wp/v2/types/{type}:
    get:
      tags:
      - Discovery
      operationId: getType
      summary: Get a content type
      description: Returns a single registered post type by slug, e.g. `post`, `page`, `attachment`.
      parameters:
      - name: type
        in: path
        required: true
        description: Post type slug.
        schema:
          type: string
      - $ref: '#/components/parameters/context'
      responses:
        '200':
          description: The requested post type.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/taxonomies:
    get:
      tags:
      - Discovery
      operationId: listTaxonomies
      summary: List registered taxonomies
      description: Returns every registered taxonomy with its REST base and the post types it applies to.
      parameters:
      - $ref: '#/components/parameters/context'
      - name: type
        in: query
        description: Limit results to taxonomies associated with a post type.
        schema:
          type: string
      responses:
        '200':
          description: A map of taxonomies keyed by taxonomy slug.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
  /wp/v2/taxonomies/{taxonomy}:
    get:
      tags:
      - Discovery
      operationId: getTaxonomy
      summary: Get a taxonomy
      description: Returns a single registered taxonomy by slug, e.g. `category`, `post_tag`.
      parameters:
      - name: taxonomy
        in: path
        required: true
        description: Taxonomy slug.
        schema:
          type: string
      - $ref: '#/components/parameters/context'
      responses:
        '200':
          description: The requested taxonomy.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/statuses:
    get:
      tags:
      - Discovery
      operationId: listStatuses
      summary: List publication statuses
      description: Returns the publication statuses visible anonymously — `publish` only.
      parameters:
      - $ref: '#/components/parameters/context'
      responses:
        '200':
          description: A map of statuses keyed by status slug.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
components:
  responses:
    NotFound:
      description: The requested object does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: rest_post_invalid_id
            message: Invalid post ID.
            data:
              status: 404
  parameters:
    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
  schemas:
    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
    RouteIndex:
      type: object
      description: The WordPress REST API self-description document served at the API root.
      properties:
        name:
          type: string
          example: Cresilon
        description:
          type: string
          example: Stops bleeding in seconds
        url:
          type: string
          format: uri
          example: https://cresilon.com
        home:
          type: string
          format: uri
          example: https://cresilon.com
        gmt_offset:
          type:
          - number
          - string
          example: -4
        timezone_string:
          type: string
        site_logo:
          type: integer
          example: 16942
          description: Media attachment ID of the site logo.
        namespaces:
          type: array
          items:
            type: string
          description: Registered namespaces. 45 observed on 2026-08-04, including wp/v2, oembed/1.0, yoast/v1, jetpack/v4, wpdm and wpdmpp/v1.
        authentication:
          type: object
          additionalProperties: true
          description: 'Advertised authentication methods. Observed: `application-passwords` with the authorization endpoint.'
        routes:
          type: object
          additionalProperties: true
          description: Every registered route keyed by path pattern, with methods, args and endpoint metadata. 1,021 observed.
        _links:
          type: object
          additionalProperties: true
      required:
      - name
      - description
      - url
      - namespaces
      - routes