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