Optimizely Content API

Manage content items including articles and other content types within the CMP content repository.

Operations 27

GET /content List content #
POST /content Import content #
GET /content/{contentId} Get a content item #
GET /api/v2/content/PageByType #
GET /api/v2/content/PagesByParent #
GET /api/v2/content/PageByUrl #
GET /api/v2/content/PageUrlByType #
GET /api/v2/content/GetNodeIdForPageName #
GET /api/v2/content/Theme #
GET /content/{contentId}/children Get content children #
GET /content/{contentId}/ancestors Get content ancestors #
POST / Create a content item #
GET /{contentGuid} Get content by GUID #
PUT /{contentGuid} Update content by GUID #
PATCH /{contentGuid} Partially update content by GUID #
DELETE /{contentGuid} Delete content by GUID #
POST /{contentGuid}/move Move content #
GET /{contentReference} Get content by reference #
GET /api/episerver/v3.0/content/{contentIdentifier} Get content by given content reference or unique identifier and language. #
GET /api/episerver/v3.0/content/{contentIdentifier}/children Get the children of the content item by given content reference or unique identifier and language. #
GET /api/episerver/v3.0/content/{contentIdentifier}/ancestors Get the ancestors of the content item by given content reference or unique identifier and language. #
GET /api/episerver/v3.0/content Get content by given content url or by list of GUID/Reference with given language #
POST /content/_filter Search content #
GET /content/{id} Fetch content by ID #
PATCH /content/{id} Update content #
GET /content/{id}/sections List content sections #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/optimizely-content-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

optimizely-content-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Optimizely Content API
  version: '1.0'
  description: 'Operations tagged Content across 6 of this provider''s published API definitions: optimizely-cmp-openapi.yml, optimizely-configured-commerce-storefront-api-v2-openapi.json, optimizely-content-delivery-openapi.yml, optimizely-content-management-openapi.yml, optimizely-content-management-system-episervercontentapidocs-openapi.json, optimizely-recommendations-public-api-spec-openapi.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.cmp.optimizely.com/v0
  description: Optimizely CMP API Server
- url: https://dogfood.commerce.insitesandbox.com
- url: '{siteUrl}/api/episerver/v3.0'
  description: Optimizely CMS Content Delivery API endpoint
  variables:
    siteUrl:
      default: https://www.example.com
      description: The base URL of the Optimizely CMS site
- url: '{siteUrl}/api/episerver/v3.0/contentmanagement'
  description: Optimizely CMS Content Management API endpoint
  variables:
    siteUrl:
      default: https://www.example.com
      description: The base URL of the Optimizely CMS site
- url: https://{hostname}/1.0
  description: Primary API server
  variables:
    hostname:
      default: api.usea01.idio.episerver.net
      enum:
      - api.apac01.idio.episerver.net
      - api.caea01.idio.episerver.net
      - api.emea01.idio.episerver.net
      - api.usea01.idio.episerver.net
tags:
- name: Content
  description: Manage content items including articles and other content types within the CMP content repository.
paths:
  /content:
    get:
      operationId: listContent
      summary: List content
      description: Returns a list of content items in the CMP content repository.
      tags:
      - Content
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: Successfully retrieved the list of content
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    description: List of content items
                    items:
                      $ref: '#/components/schemas/CmpContent'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          description: Authentication credentials are missing or invalid
      security:
      - oauth2: []
    post:
      operationId: contentImport
      summary: Import content
      description: Import a content item using a URL. The URL is queued for processing.
      tags:
      - Content
      requestBody:
        required: true
        description: A content URL
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContentURL'
      responses:
        '202':
          description: Content URL is queued for processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Message'
              example:
                message: The Content has been queued for importing
      security:
      - oauth2: []
    servers:
    - url: https://api.cmp.optimizely.com/v0
      description: Optimizely CMP API Server
  /content/{contentId}:
    get:
      operationId: getContent
      summary: Get a content item
      description: Retrieves the details of a specific content item.
      tags:
      - Content
      parameters:
      - $ref: '#/components/parameters/contentId'
      responses:
        '200':
          description: Successfully retrieved the content item
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CmpContent'
        '401':
          description: Authentication credentials are missing or invalid
        '404':
          description: Content not found
      security:
      - oauth2: []
    servers:
    - url: https://api.cmp.optimizely.com/v0
      description: Optimizely CMP API Server
  /api/v2/content/PageByType:
    get:
      tags:
      - Content
      operationId: Content_PageByType
      parameters:
      - name: type
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Insite.Spire.Services.RetrievePageResult'
            text/json:
              schema:
                $ref: '#/components/schemas/Insite.Spire.Services.RetrievePageResult'
            application/xml:
              schema:
                $ref: '#/components/schemas/Insite.Spire.Services.RetrievePageResult'
            text/xml:
              schema:
                $ref: '#/components/schemas/Insite.Spire.Services.RetrievePageResult'
            text/html:
              schema:
                $ref: '#/components/schemas/Insite.Spire.Services.RetrievePageResult'
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /api/v2/content/PagesByParent:
    get:
      tags:
      - Content
      operationId: Content_PagesByParent
      parameters:
      - name: parentNodeId
        in: query
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
            text/json:
              schema:
                type: object
            application/xml:
              schema:
                type: object
            text/xml:
              schema:
                type: object
            text/html:
              schema:
                type: object
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /api/v2/content/PageByUrl:
    get:
      tags:
      - Content
      operationId: Content_PageByUrl
      parameters:
      - name: url
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Insite.Spire.Services.RetrievePageResult'
            text/json:
              schema:
                $ref: '#/components/schemas/Insite.Spire.Services.RetrievePageResult'
            application/xml:
              schema:
                $ref: '#/components/schemas/Insite.Spire.Services.RetrievePageResult'
            text/xml:
              schema:
                $ref: '#/components/schemas/Insite.Spire.Services.RetrievePageResult'
            text/html:
              schema:
                $ref: '#/components/schemas/Insite.Spire.Services.RetrievePageResult'
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /api/v2/content/PageUrlByType:
    get:
      tags:
      - Content
      operationId: Content_PageUrlByType
      parameters:
      - name: type
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
            text/json:
              schema:
                type: string
            application/xml:
              schema:
                type: string
            text/xml:
              schema:
                type: string
            text/html:
              schema:
                type: string
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /api/v2/content/PageLinks:
    get:
      tags:
      - Content
      operationId: Content_PageLinks
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insite.Spire.Models.PageLinkModel'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insite.Spire.Models.PageLinkModel'
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insite.Spire.Models.PageLinkModel'
            text/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insite.Spire.Models.PageLinkModel'
            text/html:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insite.Spire.Models.PageLinkModel'
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /api/v2/content/GetNodeIdForPageName:
    get:
      tags:
      - Content
      operationId: Content_GetNodeIdForPageName
      parameters:
      - name: pageName
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
            text/json:
              schema:
                type: object
            application/xml:
              schema:
                type: object
            text/xml:
              schema:
                type: object
            text/html:
              schema:
                type: object
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /api/v2/content/Theme:
    get:
      tags:
      - Content
      operationId: Content_ThemeAsync
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
            text/json:
              schema:
                type: object
                additionalProperties:
                  type: object
            application/xml:
              schema:
                type: object
                additionalProperties:
                  type: object
            text/xml:
              schema:
                type: object
                additionalProperties:
                  type: object
            text/html:
              schema:
                type: object
                additionalProperties:
                  type: object
    servers:
    - url: https://dogfood.commerce.insitesandbox.com
  /content/{contentId}/children:
    get:
      operationId: getContentChildren
      summary: Get content children
      description: Retrieves the child content items of a specific content item. Useful for navigating content hierarchies such as page trees.
      tags:
      - Content
      parameters:
      - $ref: '#/components/parameters/contentId_2'
      - $ref: '#/components/parameters/language'
      - $ref: '#/components/parameters/expand'
      - $ref: '#/components/parameters/top'
      - $ref: '#/components/parameters/skip'
      responses:
        '200':
          description: Successfully retrieved child content items
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    description: List of child content items
                    items:
                      $ref: '#/components/schemas/ContentItem'
                  totalMatching:
                    type: integer
                    description: Total number of child content items
        '401':
          description: Authentication credentials are missing or invalid
        '404':
          description: Parent content item not found
      security:
      - bearerAuth: []
      - anonymous: []
    servers:
    - url: '{siteUrl}/api/episerver/v3.0'
      description: Optimizely CMS Content Delivery API endpoint
      variables:
        siteUrl:
          default: https://www.example.com
          description: The base URL of the Optimizely CMS site
  /content/{contentId}/ancestors:
    get:
      operationId: getContentAncestors
      summary: Get content ancestors
      description: Retrieves the ancestor content items of a specific content item, representing the path from the root to the content item.
      tags:
      - Content
      parameters:
      - $ref: '#/components/parameters/contentId_2'
      - $ref: '#/components/parameters/language'
      - $ref: '#/components/parameters/expand'
      responses:
        '200':
          description: Successfully retrieved ancestor content items
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ContentItem'
        '401':
          description: Authentication credentials are missing or invalid
        '404':
          description: Content item not found
      security:
      - bearerAuth: []
      - anonymous: []
    servers:
    - url: '{siteUrl}/api/episerver/v3.0'
      description: Optimizely CMS Content Delivery API endpoint
      variables:
        siteUrl:
          default: https://www.example.com
          description: The base URL of the Optimizely CMS site
  /:
    post:
      operationId: createContent
      summary: Create a content item
      description: Creates a new content item of the specified type under a parent content node. Can also be used to create a language branch for existing content. For media content, use a multipart/form-data request with a content part (JSON) and a file part (binary).
      tags:
      - Content
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContentInput'
          multipart/form-data:
            schema:
              type: object
              properties:
                content:
                  type: string
                  description: JSON-encoded content properties
                file:
                  type: string
                  format: binary
                  description: Media file binary data
      responses:
        '201':
          description: Content item successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItem_2'
        '400':
          description: Invalid request body
        '401':
          description: Authentication credentials are missing or invalid
      security:
      - bearerAuth: []
    servers:
    - url: '{siteUrl}/api/episerver/v3.0/contentmanagement'
      description: Optimizely CMS Content Management API endpoint
      variables:
        siteUrl:
          default: https://www.example.com
          description: The base URL of the Optimizely CMS site
  /{contentGuid}:
    get:
      operationId: getContentByGuid
      summary: Get content by GUID
      description: Retrieves the primary draft or latest published version of a content item by its GUID.
      tags:
      - Content
      parameters:
      - $ref: '#/components/parameters/contentGuid'
      responses:
        '200':
          description: Successfully retrieved the content item
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItem_2'
        '401':
          description: Authentication credentials are missing or invalid
        '404':
          description: Content item not found
      security:
      - bearerAuth: []
    put:
      operationId: updateContentByGuid
      summary: Update content by GUID
      description: Updates a content item identified by its GUID. If the content does not exist, a new content item is created.
      tags:
      - Content
      parameters:
      - $ref: '#/components/parameters/contentGuid'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContentInput'
      responses:
        '200':
          description: Content item successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItem_2'
        '201':
          description: Content item created (did not previously exist)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItem_2'
        '400':
          description: Invalid request body
        '401':
          description: Authentication credentials are missing or invalid
      security:
      - bearerAuth: []
    patch:
      operationId: patchContentByGuid
      summary: Partially update content by GUID
      description: Partially updates a content item identified by its GUID, sending only the fields that need updating.
      tags:
      - Content
      parameters:
      - $ref: '#/components/parameters/contentGuid'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContentPatch'
      responses:
        '200':
          description: Content item successfully patched
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItem_2'
        '400':
          description: Invalid request body
        '401':
          description: Authentication credentials are missing or invalid
        '404':
          description: Content item not found
      security:
      - bearerAuth: []
    delete:
      operationId: deleteContentByGuid
      summary: Delete content by GUID
      description: Moves the content item identified by its GUID to the trash bin or permanently deletes it.
      tags:
      - Content
      parameters:
      - $ref: '#/components/parameters/contentGuid'
      - name: permanent
        in: query
        required: false
        description: Whether to permanently delete instead of moving to trash
        schema:
          type: boolean
          default: false
      responses:
        '204':
          description: Content item successfully deleted
        '401':
          description: Authentication credentials are missing or invalid
        '404':
          description: Content item not found
      security:
      - bearerAuth: []
    servers:
    - url: '{siteUrl}/api/episerver/v3.0/contentmanagement'
      description: Optimizely CMS Content Management API endpoint
      variables:
        siteUrl:
          default: https://www.example.com
          description: The base URL of the Optimizely CMS site
  /{contentGuid}/move:
    post:
      operationId: moveContent
      summary: Move content
      description: Moves a content item to become a child of the specified target content node.
      tags:
      - Content
      parameters:
      - $ref: '#/components/parameters/contentGuid'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - destination
              properties:
                destination:
                  type: integer
                  description: Content ID of the destination parent
      responses:
        '200':
          description: Content item successfully moved
        '400':
          description: Invalid move destination
        '401':
          description: Authentication credentials are missing or invalid
        '404':
          description: Content item or destination not found
      security:
      - bearerAuth: []
    servers:
    - url: '{siteUrl}/api/episerver/v3.0/contentmanagement'
      description: Optimizely CMS Content Management API endpoint
      variables:
        siteUrl:
          default: https://www.example.com
          description: The base URL of the Optimizely CMS site
  /{contentReference}:
    get:
      operationId: getContentByReference
      summary: Get content by reference
      description: Retrieves a content item by its numeric content reference.
      tags:
      - Content
      parameters:
      - $ref: '#/components/parameters/contentReference'
      responses:
        '200':
          description: Successfully retrieved the content item
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItem_2'
        '401':
          description: Authentication credentials are missing or invalid
        '404':
          description: Content item not found
      security:
      - bearerAuth: []
    servers:
    - url: '{siteUrl}/api/episerver/v3.0/contentmanagement'
      description: Optimizely CMS Content Management API endpoint
      variables:
        siteUrl:
          default: https://www.example.com
          description: The base URL of the Optimizely CMS site
  /api/episerver/v3.0/content/{contentIdentifier}:
    get:
      tags:
      - Content
      summary: Get content by given content reference or unique identifier and language.
      operationId: Content_GetByContentIdentifier
      parameters:
      - name: contentIdentifier
        in: path
        description: Content reference or unique identifier to retrieve data.
        required: true
        schema:
          type: string
      - name: Accept-Language
        in: header
        description: 'Determines in which language the content should be retrieved. Example: ''en'' or ''sv''. Does not support fallback.'
        schema:
          type: string
      - name: expand
        in: query
        description: List of properties needed to be expanded. The list is separated by comma
        schema:
          type: string
          default: ''
      - name: select
        in: query
        description: List of properties needed to be returned. The list is separated by comma. Default are all properties returned
        schema:
          type: string
          default: ''
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/content'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemDetails'
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemDetails'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemDetails'
  /api/episerver/v3.0/content/{contentIdentifier}/children:
    get:
      tags:
      - Content
      summary: Get the children of the content item by given content reference or unique identifier and language.
      operationId: Content_GetChildren
      parameters:
      - name: contentIdentifier
        in: path
        description: Parent's content reference or parent's unique identifier.
        required: true
        schema:
          type: string
      - name: Accept-Language
        in: header
        description: 'Determines in which language the content should be retrieved. Example: ''en'' or ''sv''. Does not support fallback.'
        schema:
          type: string
      - name: expand
        in: query
        description: List of properties needed to be expanded. The list is separated by comma
        schema:
          type: string
          default: ''
      - name: select
        in: query
        description: List of properties needed to be returned. The list is separated by comma. Default are all properties returned
        schema:
          type: string
          default: ''
      - name: top
        in: query
        description: The max number of children to return.
        schema:
          type: integer
          format: int32
      - name: x-epi-continuation
        in: header
        description: The max number of children to return.
        schema:
          type: string
          default: ''
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/content'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemDetails'
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemDetails'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemDetails'
  /api/episerver/v3.0/content/{contentIdentifier}/ancestors:
    get:
      tags:
      - Content
      summary: Get the ancestors of the content item by given content reference or unique identifier and language.
      operationId: Content_GetAncestors
      parameters:
      - name: contentIdentifier
        in: path
        description: Content reference or unique identifier to retrieve parents.
        required: true
        schema:
          type: string
      - name: Accept-Language
        in: header
        description: 'Determines in which language the content should be retrieved. Example: ''en'' or ''sv''. Does not support fallback.'
        schema:
          type: string
      - name: expand
        in: query
        description: List of properties needed to be expanded. The list is separated by comma
        schema:
          type: string
          default: ''
      - name: select
        in: query
        description: List of properties needed to be returned. The list is separated by comma. Default are all properties returned
        schema:
          type: string
          default: ''
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/content'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemDetails'
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemDetails'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemDetails'
  /api/episerver/v3.0/content:
    get:
      tags:
      - Content
      summary: Get content by given content url or by list of GUID/Reference with given language
      operationId: Content_QueryContent
      parameters:
      - name: Accept-Language
        in: header
        description: 'Determines in which language the content should be retrieved. Example: ''en'' or ''sv''. Does not support fallback.'
        schema:
          type: string
      - name: ContentUrl
        in: query
        description: The absolute url to the content
        schema:
          type: string
      - name: Guids
        in: query
        description: List of GUID separated by ','.
        schema:
          type: string
      - name: References
        in: query
        description: List of ContentReference separated by ','.
        schema:
          type: string
      - name: Expand
        in: query
        description: List of properties needed to be expanded. The list is separated by comma.
        schema:
          type: string
      - name: Select
        in: query
        description: List of properties needed to be returned. The list is separated by comma. Default are all properties returned.
        schema:
          type: string
      - name: MatchExact
        in: query
        description: Indicates if the specified 'contentUrl' should match url of the content exactly, that is no additional segments are allowed.
        schema:
          type: boolean
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/content'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemDetails'
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemDetails'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemDetails'
  /content/_filter:
    post:
      operationId: contentSearch
      summary: Search content
      description: Retrieve a paginated list of content items matching a Lucene query.
      tags:
      - Content
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/rpp'
      - $ref: '#/components/parameters/topics'
      requestBody:
        required: true
        description: Lucene query
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContentQuery'
      responses:
        '200':
          $ref: '#/components/responses/ContentList'
        '204':
          description: No content matches the query
      security:
      - key: []
    servers:
    - url: https://{hostname}/1.0
      description: Primary API server
      variables:
        hostname:
          default: api.usea01.idio.episerver.net
          enum:
          - api.apac01.idio.episerver.net
          - api.caea01.idio.episerver.net
          - api.emea01.idio.episerver.net
          - api.usea01.idio.episerver.net
  /content/{id}:
    parameters:
    - $ref: '#/components/parameters/contentID'
    get:
      operationId: contentGet
      summary: Fetch content by ID
      description: Get detailed information about a specific content item.
      tags:
      - Content
      responses:
        '200':
          $ref: '#/components/responses/ContentItem'
        '404':
          description: Content does not exist
      security:
      - key: []
    patch:
      operationId: contentUpdate
      summary: Update content
      description: Update specific fields of a content item. Only 'Approved' and 'Featured' fields can be modified.
      tags:
      - Content
      requestBody:
        required: true
        description: Map of fields to update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContentItemPartial'
      responses:
        '200':
          description: Confirmation of successful update.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Message'
              example:
                message: Content updated successfully
        '404':
          description: Content does not exist
      security:
      - key: []
    servers:
    - url: https://{hostname}/1.0
      description: Primary API server
      variables:
        hostname:
          default: api.usea01.idio.episerver.net
          enum:
          - api.apac01.idio.episerver.net
          - api.caea01.idio.episerver.net
          - api.emea01.idio.episerver.net
          - api.usea01.idio.episerver.net
  /content/{id}/sections:
    parameters:
    - $ref: '#/components/parameters/contentID'
    get:
      operationId: contentSectionsList
      summary: List content sections
      description: Retrieve all sections containing the specified content item.
      tags:
      - Content
      responses:
        '200':
          description: List of sections assigned to the content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentSectionList'
        '404':
          description: Content does not exist
      security:
      - key: []
    servers:
    - url: https://{hostname}/1.0
      description: Primary API server
      variables:
        hostname:
          default: api.

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