commercetools ChangeHistory API

Query the audit log of resource changes across the project.

OpenAPI Specification

commercetools-changehistory-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: commercetools Change History Carts ChangeHistory API
  description: The commercetools Change History API provides a queryable audit log of all changes made to resources within a Composable Commerce project. It records mutations applied to resources such as products, orders, customers, discounts, and carts, along with metadata about who made the change and when. The API is hosted on separate regional endpoints from the main HTTP API and supports filtering by resource type, date range, user, and API client. It is useful for compliance workflows, debugging unexpected state changes, and building audit trails for regulated industries.
  version: '1.0'
  contact:
    name: commercetools Support
    url: https://support.commercetools.com
  termsOfService: https://commercetools.com/terms-conditions
servers:
- url: https://history.{region}.commercetools.com
  description: Production Change History Server
  variables:
    region:
      default: us-central1.gcp
      enum:
      - us-central1.gcp
      - us-east-2.aws
      - europe-west1.gcp
      - eu-central-1.aws
      - australia-southeast1.gcp
      description: The deployment region.
security:
- bearerAuth: []
tags:
- name: ChangeHistory
  description: Query the audit log of resource changes across the project.
paths:
  /{projectKey}:
    get:
      operationId: listChanges
      summary: Query change history records
      description: Returns a paginated list of change history records for the project. Each record contains a list of individual changes along with metadata about the actor and timestamp. Supports filtering by resource type, date range, resource ID, user, and client.
      tags:
      - ChangeHistory
      parameters:
      - $ref: '#/components/parameters/projectKey'
      - name: date.from
        in: query
        required: false
        schema:
          type: string
        description: Start of the date range filter. Accepts ISO 8601 datetime strings or relative values like "24" (last 24 hours) or "now".
      - name: date.to
        in: query
        required: false
        schema:
          type: string
        description: End of the date range filter. Accepts ISO 8601 datetime strings or relative values like "now".
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 500
          default: 20
        description: Maximum number of records to return per page.
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          maximum: 10000
          default: 0
        description: Number of records to skip for pagination.
      - name: resourceTypes
        in: query
        required: false
        schema:
          type: string
        description: Comma-separated list of resource types to filter by (e.g., "order,product,customer").
      - name: changes
        in: query
        required: false
        schema:
          type: string
        description: Filter by specific change type name (e.g., "setCustomField", "changeOrderState").
      - name: resourceId
        in: query
        required: false
        schema:
          type: string
        description: Filter records to changes affecting a specific resource ID.
      - name: userId
        in: query
        required: false
        schema:
          type: string
        description: Filter records to changes made by a specific user ID.
      - name: clientId
        in: query
        required: false
        schema:
          type: string
        description: Filter records to changes made by a specific API client ID.
      responses:
        '200':
          description: A paged list of change history records.
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Total rate limit tokens available for the current window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Rate limit tokens remaining after this request.
            X-RateLimit-Request-Cost:
              schema:
                type: integer
              description: Number of rate limit tokens consumed by this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordPagedQueryResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /{projectKey}/{resourceType}/{id}:
    get:
      operationId: listChangesByResourceId
      summary: Query change history for a specific resource
      description: Returns a paginated list of change history records filtered to a specific resource type and resource ID. This is the most efficient way to retrieve the full change history of a single resource, such as all changes made to a specific order or product.
      tags:
      - ChangeHistory
      parameters:
      - $ref: '#/components/parameters/projectKey'
      - name: resourceType
        in: path
        required: true
        schema:
          type: string
          enum:
          - associate-roles
          - business-units
          - cart-discounts
          - categories
          - channels
          - customer-groups
          - customers
          - discount-codes
          - inventory-entries
          - key-value-documents
          - orders
          - payments
          - product-discounts
          - product-selections
          - product-types
          - products
          - quote-requests
          - quotes
          - reviews
          - shipping-methods
          - shopping-lists
          - staged-quotes
          - standalone-prices
          - states
          - stores
          - tax-categories
          - types
          - zones
        description: The resource type category to filter the change history query.
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The system-generated ID of the specific resource.
      - name: date.from
        in: query
        required: false
        schema:
          type: string
        description: Start of the date range filter.
      - name: date.to
        in: query
        required: false
        schema:
          type: string
        description: End of the date range filter.
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 500
          default: 20
        description: Maximum number of records to return.
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
        description: Number of records to skip for pagination.
      responses:
        '200':
          description: A paged list of change history records for the resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordPagedQueryResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    RecordPagedQueryResponse:
      type: object
      description: Paginated response containing a list of change history records.
      required:
      - limit
      - offset
      - count
      - total
      - results
      properties:
        limit:
          type: integer
          description: Maximum number of records returned.
        offset:
          type: integer
          description: Number of records skipped.
        count:
          type: integer
          description: Number of records in this page.
        total:
          type: integer
          description: Total number of matching records.
        results:
          type: array
          items:
            $ref: '#/components/schemas/Record'
          description: The change history records on this page.
    ModifiedBy:
      type: object
      description: Information about the actor who made the change.
      properties:
        id:
          type: string
          description: System-generated ID of the user or client.
        type:
          type: string
          enum:
          - user
          - external-user
          - customer
          - key
          description: The type of actor that made the change.
        clientId:
          type: string
          description: ID of the API client used to make the change.
        anonymousId:
          type: string
          description: Anonymous session ID if the change was made without a customer login.
        customer:
          $ref: '#/components/schemas/Reference'
        isPlatformClient:
          type: boolean
          description: Whether the change was made via the Merchant Center.
    Record:
      type: object
      description: A change history record capturing a set of changes applied to a resource in a single operation, along with actor and timestamp metadata.
      required:
      - id
      - resource
      - resourceType
      - changes
      - createdAt
      properties:
        id:
          type: string
          description: System-generated unique identifier for the record.
        resource:
          $ref: '#/components/schemas/Reference'
        resourceVersion:
          type: integer
          description: The version of the resource after these changes were applied.
        resourceType:
          type: string
          description: The type of resource that was changed.
        changes:
          type: array
          items:
            $ref: '#/components/schemas/Change'
          description: List of individual field-level changes captured in this record.
        createdAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the changes were made.
        createdBy:
          $ref: '#/components/schemas/ModifiedBy'
        label:
          type: object
          description: A label identifying the changed resource (e.g., product name, order number).
        previousVersion:
          type: integer
          description: The version of the resource before these changes were applied.
        type:
          type: string
          description: The type of modification (e.g., 'update', 'create', 'delete').
    Change:
      type: object
      description: A single field-level change within a change history record.
      required:
      - change
      - type
      properties:
        change:
          type: string
          description: The name of the update action that caused this change (e.g., 'setCustomField', 'changeOrderState').
        type:
          type: string
          description: The type identifier of this change entry.
        previousValue:
          description: The field value before the change was applied.
        nextValue:
          description: The field value after the change was applied.
    Reference:
      type: object
      description: A reference to another resource by typeId and id.
      required:
      - typeId
      - id
      properties:
        typeId:
          type: string
          description: The type identifier of the referenced resource.
        id:
          type: string
          description: The system-generated unique identifier of the referenced resource.
  responses:
    Unauthorized:
      description: The request lacked valid authentication credentials.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
              message:
                type: string
    BadRequest:
      description: The request was malformed or contained invalid parameters.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
              message:
                type: string
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
              message:
                type: string
  parameters:
    projectKey:
      name: projectKey
      in: path
      required: true
      schema:
        type: string
      description: The unique key of the commercetools project.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 Bearer token obtained from the commercetools authentication service using client credentials flow. Requires the view_audit_log scope.
externalDocs:
  description: commercetools Change History API Documentation
  url: https://docs.commercetools.com/api/history/overview