Sitefinity CMS Content API

The Sitefinity CMS Content API provides RESTful access to all content types defined in a Sitefinity instance. Developers use it to create, read, update, and delete content items, manage content translations, publish and unpublish items, and query content with filtering, sorting, and pagination. The API is organized around content type endpoints generated dynamically from the Sitefinity content model, enabling custom content types to be accessed via consistent patterns.

OpenAPI Specification

sitefinity-cms-content-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Sitefinity CMS Content API
  description: >-
    The Sitefinity CMS Content API provides RESTful access to all content types
    defined in a Sitefinity instance. It exposes endpoints for creating, reading,
    updating, deleting, publishing, and unpublishing content items across all
    dynamic content types (news items, blog posts, events, etc.) and custom types
    defined through the CMS content model. The API follows OData conventions for
    filtering, sorting, and pagination. Authentication is handled via forms-based
    authentication or token-based auth depending on the Sitefinity configuration.
  version: 'v1'
  contact:
    name: Progress Sitefinity Support
    url: https://www.progress.com/support
  termsOfService: https://www.progress.com/legal/privacy-policy
externalDocs:
  description: Sitefinity CMS REST API Documentation
  url: https://www.progress.com/documentation/sitefinity-cms/for-developers-rest-api
servers:
  - url: https://{site}.sitefinity.com/api/default
    description: Sitefinity Instance Server
    variables:
      site:
        description: The Sitefinity instance hostname
        default: your-site
tags:
  - name: News Items
    description: CRUD operations for news content items
  - name: Blog Posts
    description: CRUD operations for blog post content items
  - name: Events
    description: CRUD operations for event content items
  - name: Content Items
    description: Generic content item operations across all content types
security:
  - cookieAuth: []
paths:
  /newsitems:
    get:
      operationId: listNewsItems
      summary: List News Items
      description: >-
        Retrieves a paginated list of news items from Sitefinity CMS. Supports OData
        query options for filtering, sorting, and selecting specific fields. Returns
        news items that are visible to the authenticated user.
      tags:
        - News Items
      parameters:
        - $ref: '#/components/parameters/top'
        - $ref: '#/components/parameters/skip'
        - $ref: '#/components/parameters/filter'
        - $ref: '#/components/parameters/orderby'
        - $ref: '#/components/parameters/select'
      responses:
        '200':
          description: A list of news items
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItemListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createNewsItem
      summary: Create News Item
      description: >-
        Creates a new news item in Sitefinity CMS. The request body must contain
        the required fields for the news content type including title and content.
        The item is created in draft state by default.
      tags:
        - News Items
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateContentItemRequest'
      responses:
        '201':
          description: News item created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItem'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'

  /newsitems({id}):
    get:
      operationId: getNewsItem
      summary: Get News Item
      description: >-
        Retrieves a specific news item by its unique identifier. Returns full item
        data including all fields, metadata, and related content references.
      tags:
        - News Items
      parameters:
        - $ref: '#/components/parameters/contentId'
      responses:
        '200':
          description: News item details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItem'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateNewsItem
      summary: Update News Item
      description: >-
        Updates an existing news item. All fields in the request body replace the
        current values. Use PATCH for partial updates.
      tags:
        - News Items
      parameters:
        - $ref: '#/components/parameters/contentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateContentItemRequest'
      responses:
        '200':
          description: News item updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItem'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteNewsItem
      summary: Delete News Item
      description: >-
        Permanently deletes a news item from Sitefinity CMS. Published items must
        be unpublished before deletion in some configurations.
      tags:
        - News Items
      parameters:
        - $ref: '#/components/parameters/contentId'
      responses:
        '204':
          description: News item deleted
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'

  /newsitems({id})/operation:
    post:
      operationId: publishNewsItem
      summary: Publish or Unpublish News Item
      description: >-
        Performs a lifecycle operation on a news item, such as publishing or
        unpublishing. The operation type is specified in the request body.
      tags:
        - News Items
      parameters:
        - $ref: '#/components/parameters/contentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContentOperationRequest'
      responses:
        '200':
          description: Operation performed successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'

  /blogposts:
    get:
      operationId: listBlogPosts
      summary: List Blog Posts
      description: >-
        Retrieves a paginated list of blog post content items. Supports OData
        query options for filtering by blog, author, date range, and status.
      tags:
        - Blog Posts
      parameters:
        - $ref: '#/components/parameters/top'
        - $ref: '#/components/parameters/skip'
        - $ref: '#/components/parameters/filter'
        - $ref: '#/components/parameters/orderby'
      responses:
        '200':
          description: A list of blog posts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItemListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createBlogPost
      summary: Create Blog Post
      description: Creates a new blog post content item in draft state.
      tags:
        - Blog Posts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateContentItemRequest'
      responses:
        '201':
          description: Blog post created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItem'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'

  /events:
    get:
      operationId: listEvents
      summary: List Events
      description: >-
        Retrieves a paginated list of event content items. Supports OData filtering
        for start date, end date, location, and status.
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/top'
        - $ref: '#/components/parameters/skip'
        - $ref: '#/components/parameters/filter'
        - $ref: '#/components/parameters/orderby'
      responses:
        '200':
          description: A list of events
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItemListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createEvent
      summary: Create Event
      description: Creates a new event content item in Sitefinity CMS.
      tags:
        - Events
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateContentItemRequest'
      responses:
        '201':
          description: Event created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentItem'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'

components:
  securitySchemes:
    cookieAuth:
      type: apiKey
      in: cookie
      name: .ASPXAUTH
      description: >-
        Sitefinity CMS uses ASP.NET forms authentication. Authenticate via the
        /Sitefinity/Authenticate/SWT endpoint to obtain a token, or use the
        /api/default/Authenticate endpoint for REST token-based auth.

  parameters:
    contentId:
      name: id
      in: path
      description: The unique GUID identifier of the content item
      required: true
      schema:
        type: string
        format: uuid
    top:
      name: $top
      in: query
      description: Maximum number of items to return (OData $top)
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 1000
        default: 50
    skip:
      name: $skip
      in: query
      description: Number of items to skip for pagination (OData $skip)
      required: false
      schema:
        type: integer
        minimum: 0
        default: 0
    filter:
      name: $filter
      in: query
      description: OData filter expression (e.g., Status eq 'Published')
      required: false
      schema:
        type: string
    orderby:
      name: $orderby
      in: query
      description: OData orderby clause (e.g., PublicationDate desc)
      required: false
      schema:
        type: string
    select:
      name: $select
      in: query
      description: Comma-separated list of fields to return
      required: false
      schema:
        type: string

  responses:
    Unauthorized:
      description: Authentication is required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: The request body or parameters are invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The requested content item was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'

  schemas:
    ContentItem:
      type: object
      description: A Sitefinity CMS content item
      properties:
        Id:
          type: string
          format: uuid
          description: Unique identifier of the content item
        Title:
          type: string
          description: Title of the content item
        Content:
          type: string
          description: Main content body (HTML)
        Summary:
          type: string
          description: Short summary or lead paragraph
        Status:
          type: string
          description: Publication status of the item
          enum:
            - Draft
            - Published
            - Unpublished
        PublicationDate:
          type: string
          format: date-time
          description: When the item was or should be published
        LastModified:
          type: string
          format: date-time
          description: When the item was last modified
        Author:
          type: string
          description: Author of the content item
        UrlName:
          type: string
          description: URL-friendly name used in page routing
        Tags:
          type: array
          items:
            type: string
          description: Tags associated with the content item
        Category:
          type: array
          items:
            type: string
          description: Categories assigned to the content item

    ContentItemListResponse:
      type: object
      description: A paginated list of content items
      properties:
        value:
          type: array
          items:
            $ref: '#/components/schemas/ContentItem'
          description: Array of content items
        "@odata.count":
          type: integer
          description: Total count of items matching the query

    CreateContentItemRequest:
      type: object
      description: Request body for creating or updating a content item
      required:
        - Title
      properties:
        Title:
          type: string
          description: Title of the content item
        Content:
          type: string
          description: Main content body in HTML
        Summary:
          type: string
          description: Short summary or excerpt
        UrlName:
          type: string
          description: URL-friendly name for routing
        PublicationDate:
          type: string
          format: date-time
          description: Scheduled publication date

    ContentOperationRequest:
      type: object
      description: Request body for content lifecycle operations
      required:
        - operation
      properties:
        operation:
          type: string
          enum:
            - Publish
            - Unpublish
          description: The lifecycle operation to perform

    ErrorResponse:
      type: object
      description: Error response
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Error code
            message:
              type: string
              description: Human-readable error message