Flare Therapeutics Content API

The anonymously readable WordPress REST content API behind www.flaretx.com — the 42-item corporate news archive, 14 corporate pages, a 419-item media library, the category taxonomy, cross-content search, type/taxonomy/status discovery documents and an oEmbed 1.0 provider endpoint. Flare Therapeutics publishes no OpenAPI for it; the specification in this repo is an API Evangelist derivation of the live route index, restricted to operations verified to return data anonymously on 2026-08-12.

OpenAPI Specification

flare-therapeutics-content-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Flare Therapeutics Content API
  version: wp/v2
  summary: Anonymously readable WordPress REST content API behind www.flaretx.com.
  description: >-
    The read-only content surface Flare Therapeutics exposes at https://www.flaretx.com/wp-json.
    Flare Therapeutics is a clinical-stage biotechnology company at 400 Technology Square,
    Cambridge, Massachusetts, developing small-molecule precision medicines against transcription
    factors — historically "undruggable" targets — using a switch-site discovery platform. Its lead
    programs are FX-909 in advanced urothelial cancer and FX-111 in prostate cancer, and it runs a
    discovery collaboration with Roche. It operates no developer program and markets no product API.
    This document is an API Evangelist derivation of the WordPress `wp/v2` and `oembed/1.0` route
    index the site publishes at /wp-json/, restricted to the operations verified to return data
    anonymously on 2026-08-12. Write operations, `/wp/v2/users`, `/wp/v2/settings`, `/wp/v2/menus`,
    `/wp/v2/themes`, `/wp/v2/plugins`, `/wp/v2/block-types`, `/wp/v2/font-collections`,
    `/wp/v2/icons`, the `wp-abilities/v1` namespace, the `aiarc/v1`, `wpe_sign_on_plugin/v1`,
    `google-site-kit/v1`, `yoast/v1`, `wpgmza/v1`, `akismet/v1`, `post-duplicator/v1`,
    `mtphrSettings/v1` and `gosmtp-smtp` plugin namespaces and the whole plugin-administration
    surface all require authentication or are administrative and are deliberately excluded — see
    x-api-evangelist-provenance.
  contact:
    name: Flare Therapeutics
    url: https://www.flaretx.com/
    email: contact@flaretx.com
  x-api-evangelist-provenance: >-
    Derived by the API Evangelist enrichment pipeline from the live WordPress REST route index at
    https://www.flaretx.com/wp-json/ (259 routes across 16 namespaces) and verified against live
    anonymous responses on 2026-08-12. Every parameter below appears verbatim in the route index
    `args` for that endpoint, and every collection count in a description was read from the
    `X-WP-Total` response header on that date. Flare Therapeutics publishes no OpenAPI, no developer
    documentation and no API reference for this surface; the humanURL in apis.yml points at the
    upstream WordPress REST handbook that defines the wp/v2 contract. The deployment is served by WP
    Engine (nginx, x-powered-by WP Engine) and API responses carry `x-robots-tag: noindex`. Nothing
    here was obtained with credentials.
servers:
  - url: https://www.flaretx.com/wp-json
    description: Production content API
tags:
  - name: posts
    description: >-
      News archive — press releases, news coverage and scientific presentations, 2021-05-13 (Series A
      launch) to 2026-06-30 (Series C and CEO appointment). 42 published at harvest time.
  - name: pages
    description: >-
      Corporate pages (14 published at harvest time) — home, about, science, pipeline, fx-909,
      fx-111, publications, news, press-releases, join-us, contact, privacy-policy, terms-of-use,
      flaretx.
  - name: media
    description: >-
      Media library (419 attachments at harvest time — 400 images, 19 application/* documents, 0
      video).
  - name: taxonomy
    description: >-
      Categories and tags. Four categories are registered (News 36, Press Release 8, FlareTx 3,
      Uncategorized 3); the post_tag taxonomy is registered but empty.
  - name: comments
    description: Comment collection. Registered and reachable, but empty — no post on this deployment carries comments.
  - name: patterns
    description: >-
      Reusable block patterns and their categories. Registered and anonymously reachable, but both
      report zero published items.
  - name: search
    description: Cross-content search across published objects.
  - name: discovery
    description: Route, type, taxonomy and status discovery documents.
  - name: oembed
    description: oEmbed 1.0 provider endpoint for www.flaretx.com URLs.
paths:
  /:
    get:
      tags: [discovery]
      operationId: getApiIndex
      summary: Get the REST API index
      description: >-
        The root discovery document. Returns the site name, description, URL, the registered
        namespaces, the full route table with per-endpoint `args`, and the `authentication` block.
        This is the only machine-readable contract Flare Therapeutics publishes.
      responses:
        '200':
          description: Route index.
          content:
            application/json:
              schema:
                type: object
                properties:
                  name: { type: string }
                  description: { type: string }
                  url: { type: string, format: uri }
                  home: { type: string, format: uri }
                  gmt_offset: { type: number }
                  timezone_string: { type: string }
                  namespaces:
                    type: array
                    items: { type: string }
                  authentication: { type: object }
                  routes: { type: object }
                  _links: { type: object }
  /wp/v2:
    get:
      tags: [discovery]
      operationId: getNamespaceIndex
      summary: Get the wp/v2 namespace index
      description: The route table scoped to the wp/v2 namespace (106 routes at harvest time).
      parameters:
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: Namespace index.
          content:
            application/json:
              schema:
                type: object
                properties:
                  namespace: { type: string }
                  routes: { type: object }
                  _links: { type: object }
  /wp/v2/posts:
    get:
      tags: [posts]
      operationId: listPosts
      summary: List news posts
      description: >-
        The company news archive — press releases, news coverage and scientific presentations. 42
        published items at harvest time (2026-08-12), spanning 2021-05-13 to 2026-06-30.
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/After'
        - $ref: '#/components/parameters/Before'
        - $ref: '#/components/parameters/ModifiedAfter'
        - $ref: '#/components/parameters/ModifiedBefore'
        - $ref: '#/components/parameters/Exclude'
        - $ref: '#/components/parameters/Include'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Order'
        - name: orderby
          in: query
          description: Sort collection by object attribute.
          schema:
            type: string
            default: date
            enum: [author, date, id, include, modified, parent, relevance, slug, include_slugs, title]
        - name: slug
          in: query
          description: Limit result set to posts with one or more specific slugs.
          schema:
            type: array
            items: { type: string }
        - name: status
          in: query
          description: >-
            Limit result set to posts assigned one or more statuses. Only `publish` is readable
            anonymously; any other value returns 400 rest_invalid_param.
          schema:
            type: array
            items: { type: string }
            default: [publish]
        - name: categories
          in: query
          description: Limit result set to items assigned to specific category term ids.
          schema:
            type: array
            items: { type: integer }
        - name: categories_exclude
          in: query
          description: Exclude items assigned to specific category term ids.
          schema:
            type: array
            items: { type: integer }
        - name: tags
          in: query
          description: Limit result set to items assigned to specific post_tag term ids. Always empty on this deployment.
          schema:
            type: array
            items: { type: integer }
        - name: sticky
          in: query
          description: Limit result set to items that are sticky.
          schema: { type: boolean }
        - $ref: '#/components/parameters/Fields'
        - $ref: '#/components/parameters/Embed'
      responses:
        '200':
          description: A page of posts.
          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/Post' }
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/posts/{id}:
    get:
      tags: [posts]
      operationId: getPost
      summary: Get one news post
      parameters:
        - $ref: '#/components/parameters/PathId'
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Fields'
        - $ref: '#/components/parameters/Embed'
      responses:
        '200':
          description: The post.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Post' }
        '404':
          $ref: '#/components/responses/InvalidPostId'
  /wp/v2/pages:
    get:
      tags: [pages]
      operationId: listPages
      summary: List corporate pages
      description: 14 published pages at harvest time.
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/After'
        - $ref: '#/components/parameters/Before'
        - $ref: '#/components/parameters/ModifiedAfter'
        - $ref: '#/components/parameters/ModifiedBefore'
        - $ref: '#/components/parameters/Exclude'
        - $ref: '#/components/parameters/Include'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Order'
        - name: orderby
          in: query
          schema:
            type: string
            default: date
            enum: [author, date, id, include, modified, parent, relevance, slug, include_slugs, title, menu_order]
        - name: slug
          in: query
          schema:
            type: array
            items: { type: string }
        - name: parent
          in: query
          description: Limit result set to items with particular parent ids. The page tree is flat on this deployment.
          schema:
            type: array
            items: { type: integer }
        - name: menu_order
          in: query
          schema: { type: integer }
        - $ref: '#/components/parameters/Fields'
        - $ref: '#/components/parameters/Embed'
      responses:
        '200':
          description: A page of 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' }
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/pages/{id}:
    get:
      tags: [pages]
      operationId: getPage
      summary: Get one corporate page
      parameters:
        - $ref: '#/components/parameters/PathId'
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Fields'
        - $ref: '#/components/parameters/Embed'
      responses:
        '200':
          description: The page.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Page' }
        '404':
          $ref: '#/components/responses/InvalidPostId'
  /wp/v2/media:
    get:
      tags: [media]
      operationId: listMedia
      summary: List media library attachments
      description: >-
        419 attachments at harvest time — 400 with media_type `image` and 19 with media_type
        `application` (documents such as posters and publications). No video.
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/After'
        - $ref: '#/components/parameters/Before'
        - $ref: '#/components/parameters/ModifiedAfter'
        - $ref: '#/components/parameters/ModifiedBefore'
        - $ref: '#/components/parameters/Exclude'
        - $ref: '#/components/parameters/Include'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Order'
        - name: orderby
          in: query
          schema:
            type: string
            default: date
            enum: [author, date, id, include, modified, parent, relevance, slug, include_slugs, title]
        - name: slug
          in: query
          schema:
            type: array
            items: { type: string }
        - name: parent
          in: query
          description: Limit result set to attachments uploaded to particular post ids.
          schema:
            type: array
            items: { type: integer }
        - name: media_type
          in: query
          description: Limit result set to attachments of a particular media type.
          schema:
            type: string
            enum: [image, video, text, application, audio]
        - name: mime_type
          in: query
          description: Limit result set to attachments of a particular MIME type.
          schema: { type: string }
        - $ref: '#/components/parameters/Fields'
        - $ref: '#/components/parameters/Embed'
      responses:
        '200':
          description: A page of media items.
          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/MediaItem' }
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/media/{id}:
    get:
      tags: [media]
      operationId: getMediaItem
      summary: Get one media attachment
      parameters:
        - $ref: '#/components/parameters/PathId'
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          description: The media item.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/MediaItem' }
        '404':
          $ref: '#/components/responses/InvalidPostId'
  /wp/v2/categories:
    get:
      tags: [taxonomy]
      operationId: listCategories
      summary: List categories
      description: >-
        Four registered categories at harvest time — News (36 posts), Press Release (8), FlareTx (3),
        Uncategorized (3).
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Exclude'
        - $ref: '#/components/parameters/Include'
        - $ref: '#/components/parameters/Order'
        - name: orderby
          in: query
          schema:
            type: string
            default: name
            enum: [id, include, name, slug, include_slugs, term_group, description, count]
        - name: hide_empty
          in: query
          description: Whether to hide terms not assigned to any posts.
          schema: { type: boolean, default: false }
        - name: parent
          in: query
          schema: { type: integer }
        - name: post
          in: query
          description: Limit result set to terms assigned to a specific post.
          schema: { type: integer }
        - name: slug
          in: query
          schema:
            type: array
            items: { type: string }
        - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          description: A page of category terms.
          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/Term' }
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/categories/{id}:
    get:
      tags: [taxonomy]
      operationId: getCategory
      summary: Get one category term
      parameters:
        - $ref: '#/components/parameters/PathId'
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The category term.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Term' }
        '404':
          $ref: '#/components/responses/InvalidTerm'
  /wp/v2/tags:
    get:
      tags: [taxonomy]
      operationId: listTags
      summary: List post tags
      description: >-
        The post_tag taxonomy is registered and reachable but empty on this deployment (X-WP-Total 0
        at harvest time).
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Order'
        - name: orderby
          in: query
          schema:
            type: string
            default: name
            enum: [id, include, name, slug, include_slugs, term_group, description, count]
        - name: hide_empty
          in: query
          schema: { type: boolean, default: false }
        - name: post
          in: query
          schema: { type: integer }
        - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          description: A page of tag terms. Empty on this deployment.
          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/Term' }
  /wp/v2/tags/{id}:
    get:
      tags: [taxonomy]
      operationId: getTag
      summary: Get one tag term
      parameters:
        - $ref: '#/components/parameters/PathId'
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The tag term.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Term' }
        '404':
          $ref: '#/components/responses/InvalidTerm'
  /wp/v2/comments:
    get:
      tags: [comments]
      operationId: listComments
      summary: List comments
      description: Registered and reachable but empty on this deployment (X-WP-Total 0 at harvest time).
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/After'
        - $ref: '#/components/parameters/Before'
        - $ref: '#/components/parameters/Order'
        - name: orderby
          in: query
          schema:
            type: string
            default: date_gmt
            enum: [date, date_gmt, id, include, post, parent, type]
        - name: post
          in: query
          description: Limit result set to comments assigned to specific post ids.
          schema:
            type: array
            items: { type: integer }
        - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          description: A page of comments. Empty on this deployment.
          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/Comment' }
  /wp/v2/comments/{id}:
    get:
      tags: [comments]
      operationId: getComment
      summary: Get one comment
      parameters:
        - $ref: '#/components/parameters/PathId'
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The comment.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Comment' }
        '404':
          $ref: '#/components/responses/InvalidCommentId'
  /wp/v2/blocks:
    get:
      tags: [patterns]
      operationId: listReusableBlocks
      summary: List reusable block patterns
      description: >-
        The wp_block post type. Registered and anonymously reachable but empty on this deployment
        (X-WP-Total 0 at harvest time).
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          description: A page of reusable blocks. Empty on this deployment.
          headers:
            X-WP-Total: { $ref: '#/components/headers/XWPTotal' }
            X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' }
          content:
            application/json:
              schema:
                type: array
                items: { type: object }
  /wp/v2/wp_pattern_category:
    get:
      tags: [patterns]
      operationId: listPatternCategories
      summary: List block-pattern categories
      description: Registered and anonymously reachable but empty on this deployment (X-WP-Total 0 at harvest time).
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: A page of pattern-category terms. Empty on this deployment.
          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/Term' }
  /wp/v2/search:
    get:
      tags: [search]
      operationId: searchContent
      summary: Search across all published content
      description: >-
        Cross-content search returning lightweight pointers (id, title, url, type, subtype) that must
        be resolved back to the full object. A search for "flare" returned 49 hits at harvest time.
      parameters:
        - $ref: '#/components/parameters/Context'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PerPage'
        - $ref: '#/components/parameters/Search'
        - name: type
          in: query
          description: Limit results to items of an object type.
          schema: { type: string, default: post, enum: [post, term, 'post-format'] }
        - name: subtype
          in: query
          description: Limit results to items of one or more object subtypes.
          schema:
            type: array
            items: { type: string }
            default: [any]
        - name: exclude
          in: query
          schema:
            type: array
            items: { type: integer }
        - name: include
          in: query
          schema:
            type: array
            items: { type: integer }
        - $ref: '#/components/parameters/Embed'
      responses:
        '200':
          description: A page of search results.
          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/SearchResult' }
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/types:
    get:
      tags: [discovery]
      operationId: listPostTypes
      summary: List registered post types
      description: >-
        Eleven post types are registered at harvest time — post, page, attachment, nav_menu_item,
        wp_block, wp_template, wp_template_part, wp_global_styles, wp_navigation, wp_font_family and
        wp_font_face. No company-specific custom post type is exposed over REST.
      parameters:
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: Map of post type slug to type object.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: { $ref: '#/components/schemas/PostType' }
  /wp/v2/types/{type}:
    get:
      tags: [discovery]
      operationId: getPostType
      summary: Get one registered post type
      parameters:
        - name: type
          in: path
          required: true
          description: An alphanumeric identifier for the post type.
          schema: { type: string }
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The post type.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/PostType' }
        '404':
          $ref: '#/components/responses/NoRoute'
  /wp/v2/taxonomies:
    get:
      tags: [discovery]
      operationId: listTaxonomies
      summary: List registered taxonomies
      description: >-
        Four taxonomies registered at harvest time — category, post_tag (also attached to an
        unexposed `team_member` post type), nav_menu and wp_pattern_category.
      parameters:
        - $ref: '#/components/parameters/Context'
        - name: type
          in: query
          description: Limit results to taxonomies associated with a specific post type.
          schema: { type: string }
      responses:
        '200':
          description: Map of taxonomy slug to taxonomy object.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: { $ref: '#/components/schemas/Taxonomy' }
  /wp/v2/taxonomies/{taxonomy}:
    get:
      tags: [discovery]
      operationId: getTaxonomy
      summary: Get one registered taxonomy
      parameters:
        - name: taxonomy
          in: path
          required: true
          schema: { type: string }
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The taxonomy.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Taxonomy' }
        '404':
          $ref: '#/components/responses/NoRoute'
  /wp/v2/statuses:
    get:
      tags: [discovery]
      operationId: listStatuses
      summary: List registered post statuses
      description: Anonymously only the public `publish` status is returned.
      parameters:
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: Map of status slug to status object.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: { $ref: '#/components/schemas/Status' }
  /wp/v2/statuses/{status}:
    get:
      tags: [discovery]
      operationId: getStatus
      summary: Get one registered post status
      parameters:
        - name: status
          in: path
          required: true
          schema: { type: string }
        - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: The status.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Status' }
        '404':
          $ref: '#/components/responses/NoRoute'
  /oembed/1.0/embed:
    get:
      tags: [oembed]
      operationId: getOembed
      summary: Get the oEmbed response for a www.flaretx.com URL
      description: >-
        oEmbed 1.0 provider endpoint. Returns provider_name "Flare Therapeutics", the resolved
        title, author, thumbnail and an iframe embed for any URL on this site.
      parameters:
        - name: url
          in: query
          required: true
          description: The URL of the resource for which to fetch oEmbed data.
          schema: { type: string, format: uri }
        - name: format
          in: query
          schema: { type: string, default: json, enum: [json, xml] }
        - name: maxwidth
          in: query
          schema: { type: integer, default: 600 }
      responses:
        '200':
          description: The oEmbed rich response.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Oembed' }
        '404':
          description: The requested URL is not a resource on this site.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Error' }
components:
  parameters:
    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 401.
      schema: { type: string, default: view, enum: [view, embed, edit] }
    Page:
      name: page
      in: query
      description: Current page of the collection (1-based).
      schema: { type: integer, default: 1, minimum: 1 }
    PerPage:
      name: per_page
      in: query
      description: Maximum number of items to be returned in the result set.
      schema: { type: integer, default: 10, minimum: 1, maximum: 100 }
    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 }
    After:
      name: after
      in: query
      description: Limit response to posts published after a given ISO 8601 compliant date.
      schema: { type: string, format: date-time }
    Before:
      name: before
      in: query
      description: Limit response to posts published before a given ISO 8601 compliant date.
      schema: { type: string, format: date-time }
    ModifiedAfter:
      name: modified_after
      in: query
      description: Limit response to posts modified after a given ISO 8601 compliant date. The incremental-sync key.
      schema: { type: string, format: date-time }
    ModifiedBefore:
      name: modified_before
      in: query
      description: Limit response to posts modified before a given ISO 8601 compliant date.
      schema: { type: string, format: date-time }
    Exclude:
      name: exclude
      in: query
      description: Ensure result set excludes specific ids.
      schema:
        type: array
        items: { type: integer }
    Include:
      name: include
      in: query
      description: Limit result set to specific ids.
      schema:
        type: array
        items: { type: integer }
    Order:
      name: order
      in: query
      description: Order sort attribute ascending or descending.
      schema: { type: string, default: desc, enum: [asc, desc] }
    Fields:
      name: _fields
      in: query
      description: Comma-separated allow-list of top-level response fields to return.
      schema: { type: string }
    Embed:
      name: _embed
      in: query
      description: Inline embeddable resources (author, featured media, terms) under `_embedded`.
      schema: { type: string }
    PathId:
      name: id
      in: path
      req

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/flare-therapeutics/refs/heads/main/openapi/flare-therapeutics-content-openapi.yml