openapi: 3.2.0 info: version: V3 title: Optimizely CMP Open API Documentation Workflows API servers: - url: https://api.cmp.optimizely.com/v3 description: v3 version of Optimizely CMP Open API security: - OAuth2: - openid - profile - offline_access tags: - name: Workflows paths: /workflows: get: operationId: listWorkflows tags: - Workflows summary: GET /workflows description: Experimental Get a list of workflows. parameters: - $ref: '#/components/parameters/offset' - $ref: '#/components/parameters/page_size' responses: '200': description: List of fetched workflows content: application/json: schema: type: object additionalProperties: false properties: data: description: List of workflows type: array items: $ref: '#/components/schemas/WorkflowListResponseItem' pagination: allOf: - $ref: '#/components/schemas/Pagination' - type: object properties: next: type: - string - 'null' example: https://api.cmp.optimizely.com/v3/workflows?offset=10&page_size=10 required: - data - pagination '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' /workflows/{workflow_id}: get: operationId: getWorkflow tags: - Workflows summary: GET /workflows/{workflow_id} description: Experimental Get a workflow by ID. parameters: - name: workflow_id in: path required: true schema: type: string description: Unique identifier of the workflow example: 5fe4925ef8a9378056bf4e37 responses: '200': description: Fetched workflow content: application/json: schema: $ref: '#/components/schemas/WorkflowResponse' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' components: responses: Forbidden: description: Permission error content: application/json: schema: $ref: '#/components/schemas/Error' example: message: You do not have the permission to perform this operation NotFound: description: Not found error content: application/json: schema: $ref: '#/components/schemas/Error' example: message: Resource not found Unauthorized: description: Authorization error content: application/json: schema: $ref: '#/components/schemas/Error' example: message: Unauthorized schemas: WorkflowResponse: type: object additionalProperties: false properties: id: type: string description: Unique identifier of the workflow example: 6e7f910551b00a722e04188 name: type: string description: Name of the workflow example: The awesome workflow description: type: - string - 'null' description: Description of the workflow example: Nice description is_active: type: boolean description: Indicates whether the workflow is active example: true is_flexible: type: boolean description: Indicates whether the workflow is flexible example: true is_smart_duration_enabled: type: boolean description: Indicates whether the smart duration of a workflow is enabled example: true is_asset_approval_enabled: type: boolean description: Indicates whether the asset approval of a workflow is enabled example: true is_resource_management_enabled: type: boolean description: Indicates whether the resource management of a workflow is enabled example: true steps: type: array description: List of steps items: type: object properties: id: type: string description: Identifier of the step example: 6e7f910551b00a722e04181 name: type: string description: Name of the step example: Step 1 sub_steps: type: array description: List of sub-steps items: type: object properties: id: type: string description: Identifier of the sub-step example: 6e7f910551b00a722e04182 name: type: string description: Name of the sub-step example: Step 1 Substep 1 actions: type: array description: List of actions of a sub-step example: - name: Approve - name: Find Content - name: Write/Edit Content - name: Publish - name: Set Publish Destination - name: Edit Fields - name: Set Publish Date - name: Write/Edit Share - name: Select Image items: type: object properties: name: type: string description: Name of the action example: Approve required: - name type: type: string description: Type of the sub-step enum: - default - external example: default assignees: type: array description: List of assignees of a sub-step items: type: object properties: id: type: string description: Identifier of the sub-step assignee example: 6e7f910551b00a722e04182 name: type: string description: Name of the assignee example: Ned Stark type: type: string description: Type of the assignee enum: - user - team example: user links: type: object description: Meta links properties: self: type: string description: URL of the assignee example: https://api.cmp.optimizely.com/v3/users/6e7f910551b00a722e04182 required: - self required: - id - name - type - links required: - id - name - actions - type - assignees required: - id - name - sub_steps fields: type: array description: List of fields items: $ref: '#/components/schemas/ObjectFieldCreateResponse' required: - id - name - description - is_active - is_flexible - is_smart_duration_enabled - is_asset_approval_enabled - is_resource_management_enabled - steps - fields FieldTypeCommon: allOf: - $ref: '#/components/schemas/FieldBaseType' - type: object FieldTypeRadio: allOf: - $ref: '#/components/schemas/FieldBaseType' - type: object properties: choices: type: array description: Choices of the radio button items: type: object properties: id: type: string description: Identifier of the choice example: 6ceee2f4fa3411ecb37802420ac8001b name: type: string description: Name of the choice example: Radio 1 Choice 1 required: - id - name - color required: - choices FieldTypeDropdown: allOf: - $ref: '#/components/schemas/FieldBaseType' - type: object properties: is_multi_select: type: boolean description: Select multiple values from the dropdown choices: type: array description: Choices of the dropdown items: type: object properties: id: type: string description: Identifier of the choice example: 6ceee2f4fa3411ecb37802420ac8001b name: type: string description: Name of the choice example: Dropdown 1 Choice 1 required: - id - name required: - is_multi_select - choices FieldTypeLabel: allOf: - $ref: '#/components/schemas/FieldBaseType' - type: object properties: is_multi_select: type: boolean description: Select multiple values from the label choices: type: array description: Choices of the label items: type: object properties: id: type: string description: Identifier of the choice example: 6ceee2f4fa3411ecb37802420ac8001b name: type: string description: Name of the choice example: Label 1 Choice 1 required: - id - name - color required: - is_multi_select - choices FieldTypeSimpleNumber: allOf: - $ref: '#/components/schemas/FieldBaseType' - type: object properties: has_thousand_separator: type: boolean description: Whether the numerical field has a thousand separator example: true decimal_places: type: - integer - 'null' description: Decimal place of the numerical field example: 2 required: - has_thousand_separator - decimal_places Error: type: object additionalProperties: true description: Error payload properties: message: type: string description: Message describing the error example: Not found errors: type: object description: Additional information additionalProperties: true properties: {} required: - message ObjectFieldCreateResponse: type: object additionalProperties: false oneOf: - $ref: '#/components/schemas/FieldTypeCommon' - $ref: '#/components/schemas/FieldTypeLabel' - $ref: '#/components/schemas/FieldTypeDropdown' - $ref: '#/components/schemas/FieldTypeRadio' - $ref: '#/components/schemas/FieldTypeCheckbox' - $ref: '#/components/schemas/FieldTypeSimpleNumber' - $ref: '#/components/schemas/FieldTypePercentageNumber' - $ref: '#/components/schemas/FieldTypeCurrencyNumber' discriminator: propertyName: type mapping: checkbox: '#/components/schemas/FieldTypeCheckbox' currency_number: '#/components/schemas/FieldTypeCurrencyNumber' date: '#/components/schemas/FieldTypeCommon' dropdown: '#/components/schemas/FieldTypeDropdown' image: '#/components/schemas/FieldTypeCommon' label: '#/components/schemas/FieldTypeLabel' percentage_number: '#/components/schemas/FieldTypePercentageNumber' radio_button: '#/components/schemas/FieldTypeRadio' rich_text: '#/components/schemas/FieldTypeCommon' simple_number: '#/components/schemas/FieldTypeSimpleNumber' text: '#/components/schemas/FieldTypeCommon' text_area: '#/components/schemas/FieldTypeCommon' video: '#/components/schemas/FieldTypeCommon' Pagination: type: object additionalProperties: false description: Pagination related information properties: next: type: - string - 'null' description: URL to the next page example: https://api.cmp.optimizely.com/?offset=10&page_size=10 previous: type: - string - 'null' description: URL to the previous page example: null required: - next - previous FieldTypeCurrencyNumber: allOf: - $ref: '#/components/schemas/FieldBaseType' - type: object properties: has_thousand_separator: type: boolean description: Whether the numerical field has a thousand separator example: true decimal_places: type: - integer - 'null' description: Decimal place of the numerical field example: 2 currency_code: type: string description: Currency code of the numerical field example: USD required: - has_thousand_separator - decimal_places - currency_code FieldTypeCheckbox: allOf: - $ref: '#/components/schemas/FieldBaseType' - type: object properties: choices: type: array description: Choices of the checkbox items: type: object properties: id: type: string description: Identifier of the choice example: 6ceee2f4fa3411ecb37802420ac8001b name: type: string description: Name of the choice example: Checkbox 1 Choice 1 required: - id - name - color required: - choices WorkflowListResponseItem: type: object additionalProperties: false properties: id: type: string description: Unique identifier of the workflow example: 6e7f910551b00a722e04188 name: type: string description: Name of the workflow example: The awesome workflow description: type: - string - 'null' description: Description of the workflow example: Nice description is_flexible: type: boolean description: Indicates whether the workflow is flexible example: true required: - id - name - description - is_flexible FieldBaseType: type: object additionalProperties: false properties: id: type: string description: Identifier of the field example: 64be245ec0d79e79fdf1ad84 name: type: string description: Name of the field example: Dropdown 101 values: type: array description: List of selected values or from user input items: type: string type: type: string description: Type of the field example: text required: - id - name - type - values FieldTypePercentageNumber: allOf: - $ref: '#/components/schemas/FieldBaseType' - type: object properties: decimal_places: type: - integer - 'null' description: Decimal place of the numerical field example: 2 required: - decimal_places parameters: page_size: name: page_size in: query description: Number of results to return per page schema: type: integer minimum: 1 maximum: 100 default: 10 example: 15 offset: name: offset in: query description: Starting index of results (zero indexed) schema: type: integer minimum: 0 default: 0 example: 5 securitySchemes: OAuth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://accounts.cmp.optimizely.com/o/oauth2/v1/auth tokenUrl: https://accounts.cmp.optimizely.com/o/oauth2/v1/token scopes: openid: Grants the ability to receive a unique identifier for the user. profile: Grants access to user profile information. offline_access: Grants the ability to refresh access_token using the refresh token even when user is not present (not logged in). clientCredentials: tokenUrl: https://accounts.cmp.optimizely.com/o/oauth2/v1/token scopes: {} x-tagGroups: - name: API tags: - Uploader - Library - Labels - Brand Compliance - Tasks - Task Step - Campaigns - Publishing - Templates - Users - Work Requests - Structured Contents - Assets - Milestones - Teams - Settings - Workflows - Fields - Events