Cresilon Pages API

Public, unauthenticated read access to the static marketing, product and legal pages of cresilon.com — Our Story, TRAUMAGEL, VETIGEL, Instructions For Use, Clinical Publications, Case Studies, Management, Media and the legal set — via the WordPress core REST API. Verified live at 53 published pages.

OpenAPI Specification

cresilon-pages-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cresilon Pages API
  version: wp/v2
  summary: Public read surface of the static marketing and product pages of 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 `page` type — Our Story, TRAUMAGEL, VETIGEL, Instructions For Use (IFU), Clinical Publications, Case Studies, Management, Media, Contact Us, the Distributor Portal landing page and the legal pages (Terms of Use, Privacy Policy, Return Policy, Standard Terms and Conditions of Sale). At time of capture the collection held 53 published pages.
  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: Pages
  description: Static marketing, product and legal pages of cresilon.com.
paths:
  /wp/v2/pages:
    get:
      tags:
      - Pages
      operationId: listPages
      summary: List Cresilon site pages
      description: 'Returns a paginated collection of published pages on cresilon.com — product pages (TRAUMAGEL, VETIGEL), Instructions For Use, clinical publications, case studies, management, media, distributor portal and legal pages. Verified live 2026-08-04: X-WP-Total: 53.'
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/perPage'
      - $ref: '#/components/parameters/search'
      - $ref: '#/components/parameters/order'
      - $ref: '#/components/parameters/orderby'
      - $ref: '#/components/parameters/context'
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/embed'
      - $ref: '#/components/parameters/include'
      - $ref: '#/components/parameters/exclude'
      - $ref: '#/components/parameters/offset'
      - $ref: '#/components/parameters/slugParam'
      - name: parent
        in: query
        description: Limit results to pages with the given parent IDs.
        schema:
          type: array
          items:
            type: integer
      - name: menu_order
        in: query
        description: Limit results to pages with a specific menu_order value.
        schema:
          type: integer
      responses:
        '200':
          description: A page of site pages.
          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/Page'
              examples:
                firstPage:
                  summary: First page of site pages
                  externalValue: https://cresilon.com/wp-json/wp/v2/pages?per_page=1
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/pages/{id}:
    get:
      tags:
      - Pages
      operationId: getPage
      summary: Get a Cresilon site page
      description: 'Returns a single published page by its numeric WordPress page ID. Verified live: id 15982 is the cresilon.com home page.'
      parameters:
      - $ref: '#/components/parameters/id'
      - $ref: '#/components/parameters/context'
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/embed'
      responses:
        '200':
          description: The requested page.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Page'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Page:
      type: object
      description: A Cresilon static site page as returned anonymously in `view` context. Field set observed live on 2026-08-04.
      properties:
        id:
          type: integer
        date:
          type: string
          format: date-time
          description: Publication date in the site's local timezone (UTC-4 observed).
        date_gmt:
          type: string
          format: date-time
        guid:
          $ref: '#/components/schemas/RenderedText'
        modified:
          type: string
          format: date-time
        modified_gmt:
          type: string
          format: date-time
        slug:
          type: string
        status:
          type: string
          description: Publication status; anonymously only `publish` is returned.
        type:
          type: string
          const: page
        link:
          type: string
          format: uri
        title:
          $ref: '#/components/schemas/RenderedText'
        content:
          allOf:
          - $ref: '#/components/schemas/RenderedText'
          - type: object
            properties:
              protected:
                type: boolean
        excerpt:
          allOf:
          - $ref: '#/components/schemas/RenderedText'
          - type: object
            properties:
              protected:
                type: boolean
        author:
          type: integer
          description: Author user ID. The users collection IS anonymously readable on this site (1 author).
        featured_media:
          type: integer
          description: Media (attachment) ID of the featured image, or 0 when unset.
        comment_status:
          type: string
          enum:
          - open
          - closed
        ping_status:
          type: string
          enum:
          - open
          - closed
        template:
          type: string
        meta:
          type: object
          additionalProperties: true
        class_list:
          type: array
          items:
            type: string
        acf:
          description: Advanced Custom Fields payload exposed by the site's ACF configuration.
          oneOf:
          - type: object
            additionalProperties: true
          - type: array
        jetpack_shortlink:
          type: string
          format: uri
        jetpack_likes_enabled:
          type: boolean
        jetpack_sharing_enabled:
          type: boolean
        yoast_head:
          type: string
          description: Rendered Yoast SEO head HTML for this object.
        yoast_head_json:
          type: object
          additionalProperties: true
          description: Structured Yoast SEO metadata, including the JSON-LD `schema` graph.
        _links:
          type: object
          additionalProperties: true
          description: HAL-style link relations (self, collection, author, wp:term, wp:attachment, replies).
        parent:
          type: integer
          description: ID of the parent page, or 0.
        menu_order:
          type: integer
          description: Ordering position of the page.
      required:
      - id
      - date
      - slug
      - type
      - link
      - title
      - content
    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
    RenderedText:
      type: object
      description: WordPress rendered-text object.
      properties:
        rendered:
          type: string
          description: HTML-rendered value.
      required:
      - rendered
  parameters:
    orderby:
      name: orderby
      in: query
      description: Sort collection by object attribute.
      schema:
        type: string
        enum:
        - author
        - date
        - id
        - include
        - modified
        - parent
        - relevance
        - slug
        - include_slugs
        - title
        default: date
    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
    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
    exclude:
      name: exclude
      in: query
      description: Ensure result set excludes specific IDs.
      schema:
        type: array
        items:
          type: integer
    page:
      name: page
      in: query
      description: Current page of the collection. Defaults to 1.
      schema:
        type: integer
        minimum: 1
        default: 1
    order:
      name: order
      in: query
      description: Order sort attribute ascending or descending.
      schema:
        type: string
        enum:
        - asc
        - desc
        default: desc
    slugParam:
      name: slug
      in: query
      description: Limit results to items with one of the given slugs.
      schema:
        type: array
        items:
          type: string
    offset:
      name: offset
      in: query
      description: Offset the result set by a specific number of items.
      schema:
        type: integer
    search:
      name: search
      in: query
      description: Limit results to those matching a string.
      schema:
        type: string
    embed:
      name: _embed
      in: query
      description: Embed linked resources (author, featured media, terms) into the response.
      schema:
        type: boolean
    id:
      name: id
      in: path
      required: true
      description: Unique numeric identifier for the object.
      schema:
        type: integer
    include:
      name: include
      in: query
      description: Limit result set to specific IDs.
      schema:
        type: array
        items:
          type: integer
  headers:
    XWPTotal:
      description: Total number of items in the collection.
      schema:
        type: integer
      example: 53
    XWPTotalPages:
      description: Total number of pages in the collection at the current per_page.
      schema:
        type: integer
      example: 6
    LinkPagination:
      description: RFC 8288 Link header carrying `next` and `prev` pagination relations.
      schema:
        type: string
      example: <https://cresilon.com/wp-json/wp/v2/pages?per_page=10&page=2>; rel="next"
  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)
    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