Workflows is an Enterprise feature
Workflows is available to customers on an Enterprise plan. To learn more, read about our pricing. To upgrade your plan, contact Sales.
A workflow is a set of actions that you can schedule in advance to make changes to a feature flag at a future date and time. You can also include approval requests at different stages of a workflow. To learn more, read Workflows.
The actions supported are as follows:
ON
or OFF
You can create multiple stages of a flag release workflow. Unique stages are defined by their conditions: either approvals and/or scheduled changes.
Several of the endpoints in the workflows API require a workflow ID or one or more member IDs. The workflow ID is returned as part of the Create workflow and Get workflows responses. It is the _id
field, or the _id
field of each element in the items
array. The member ID is returned as part of the List account members response. It is the _id
field of each element in the items
array.
Display workflows associated with a feature flag.
Workflows collection response
Invalid access token
Forbidden
Invalid resource identifier
Rate limited
{- "items": [
- {
- "_id": "12ab3c4d5ef1a2345bcde67f",
- "_version": 1,
- "_conflicts": [
- {
- "stageId": "12ab3c4d5ef1a2345bcde67f",
- "message": "string"
}
], - "_creationDate": 0,
- "_maintainerId": "12ab3c45de678910abc12345",
- "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "name": "Progressive rollout starting in two days",
- "description": "Turn flag on for 10% of customers each day",
- "kind": "custom",
- "stages": [
- {
- "_id": "12ab3c45de678910abc12345",
- "name": "10% rollout on day 1",
- "conditions": [
- {
- "_execution": {
- "status": "completed"
}, - "id": "12ab3c45de678910abc12345",
- "kind": "schedule",
- "scheduleKind": "relative",
- "waitDuration": 2,
- "waitDurationUnit": "calendarDay"
}
], - "action": {
- "kind": "patch",
- "instructions": [
- {
- "property1": null,
- "property2": null
}
]
}, - "_execution": {
- "status": "completed",
- "stopDate": 0
}
}
], - "_execution": {
- "status": "completed",
- "stopDate": 0
}, - "meta": {
- "parameters": [
- {
- "_id": "string",
- "path": "string",
- "default": {
- "value": null,
- "booleanVariationValue": true,
- "ruleClause": {
- "attribute": null,
- "op": null,
- "negate": null
}
}, - "valid": true
}
]
}, - "templateKey": "example-workflow-template"
}
], - "totalCount": 1,
- "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}
}
Create a workflow for a feature flag. You can create a workflow directly, or you can apply a template to create a new workflow.
You can use the create workflow endpoint to create a workflow directly by adding a stages
array to the request body.
For each stage, define the name
, conditions
when the stage should be executed, and action
that describes the stage.
Example request body
{
"name": "Progressive rollout starting in two days",
"description": "Turn flag targeting on and increase feature rollout in 10% increments each day",
"stages": [
{
"name": "10% rollout on day 1",
"conditions": [
{
"kind": "schedule",
"scheduleKind": "relative", // or "absolute"
// If "scheduleKind" is "absolute", set "executionDate";
// "waitDuration" and "waitDurationUnit" will be ignored
"waitDuration": 2,
"waitDurationUnit": "calendarDay"
},
{
"kind": "ld-approval",
"notifyMemberIds": [ "507f1f77bcf86cd799439011" ],
"notifyTeamKeys": [ "team-key-123abc" ]
}
],
"action": {
"instructions": [
{
"kind": "turnFlagOn"
},
{
"kind": "updateFallthroughVariationOrRollout",
"rolloutWeights": {
"452f5fb5-7320-4ba3-81a1-8f4324f79d49": 90000,
"fc15f6a4-05d3-4aa4-a997-446be461345d": 10000
}
}
]
}
}
]
}
You can also create a workflow by applying a workflow template. If you pass a valid workflow template key as the templateKey
query parameter with the request, the API will attempt to create a new workflow with the stages defined in the workflow template with the corresponding key.
Templates are created in the context of a particular flag in a particular environment in a particular project. However, because workflows created from a template can be applied to any project, environment, and flag, some steps of the workflow may need to be updated in order to be applicable for the target resource.
You can pass a dryRun
query parameter to tell the API to return a report of which steps of the workflow template are applicable in the target project/environment/flag, and which will need to be updated. When the dryRun
query parameter is present the response body includes a meta
property that holds a list of parameters that could potentially be inapplicable for the target resource. Each of these parameters will include a valid
field. You will need to update any invalid parameters in order to create the new workflow. You can do this using the parameters
property, which overrides the workflow template parameters.
You can use the parameters
property in the request body to tell the API to override the specified workflow template parameters with new values that are specific to your target project/environment/flag.
Example request body
{
"name": "workflow created from my-template",
"description": "description of my workflow",
"parameters": [
{
"_id": "62cf2bc4cadbeb7697943f3b",
"path": "/clauses/0/values",
"default": {
"value": ["updated-segment"]
}
},
{
"_id": "62cf2bc4cadbeb7697943f3d",
"path": "/variationId",
"default": {
"value": "abcd1234-abcd-1234-abcd-1234abcd12"
}
}
]
}
If there are any steps in the template that are not applicable to the target resource, the workflow will not be created, and the meta
property will be included in the response body detailing which parameters need to be updated.
Workflow response
Invalid request
Invalid access token
Forbidden
Invalid resource identifier
Rate limited
{- "description": "Turn flag on for 10% of customers each day",
- "name": "Progressive rollout starting in two days",
- "stages": [
- {
- "action": {
- "instructions": [
- {
- "kind": "turnFlagOn"
}, - {
- "kind": "updateFallthroughVariationOrRollout",
- "rolloutWeights": {
- "452f5fb5-7320-4ba3-81a1-8f4324f79d49": 90000,
- "fc15f6a4-05d3-4aa4-a997-446be461345d": 10000
}
}
]
}, - "conditions": [
- {
- "kind": "schedule",
- "scheduleKind": "relative",
- "waitDuration": 2,
- "waitDurationUnit": "calendarDay"
}
], - "name": "10% rollout on day 1"
}
]
}
{- "_id": "12ab3c4d5ef1a2345bcde67f",
- "_version": 1,
- "_conflicts": [
- {
- "stageId": "12ab3c4d5ef1a2345bcde67f",
- "message": "string"
}
], - "_creationDate": 0,
- "_maintainerId": "12ab3c45de678910abc12345",
- "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "name": "Progressive rollout starting in two days",
- "description": "Turn flag on for 10% of customers each day",
- "kind": "custom",
- "stages": [
- {
- "_id": "12ab3c45de678910abc12345",
- "name": "10% rollout on day 1",
- "conditions": [
- {
- "_execution": {
- "status": "completed"
}, - "id": "12ab3c45de678910abc12345",
- "kind": "schedule",
- "scheduleKind": "relative",
- "waitDuration": 2,
- "waitDurationUnit": "calendarDay"
}
], - "action": {
- "kind": "patch",
- "instructions": [
- {
- "property1": null,
- "property2": null
}
]
}, - "_execution": {
- "status": "completed",
- "stopDate": 0
}
}
], - "_execution": {
- "status": "completed",
- "stopDate": 0
}, - "meta": {
- "parameters": [
- {
- "_id": "string",
- "path": "string",
- "default": {
- "value": null,
- "booleanVariationValue": true,
- "ruleClause": {
- "attribute": "string",
- "op": "in",
- "negate": true
}
}, - "valid": true
}
]
}, - "templateKey": "example-workflow-template"
}
Get a specific workflow by ID.
Workflow response
Invalid access token
Forbidden
Invalid resource identifier
Rate limited
{- "_id": "12ab3c4d5ef1a2345bcde67f",
- "_version": 1,
- "_conflicts": [
- {
- "stageId": "12ab3c4d5ef1a2345bcde67f",
- "message": "string"
}
], - "_creationDate": 0,
- "_maintainerId": "12ab3c45de678910abc12345",
- "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "name": "Progressive rollout starting in two days",
- "description": "Turn flag on for 10% of customers each day",
- "kind": "custom",
- "stages": [
- {
- "_id": "12ab3c45de678910abc12345",
- "name": "10% rollout on day 1",
- "conditions": [
- {
- "_execution": {
- "status": "completed"
}, - "id": "12ab3c45de678910abc12345",
- "kind": "schedule",
- "scheduleKind": "relative",
- "waitDuration": 2,
- "waitDurationUnit": "calendarDay"
}
], - "action": {
- "kind": "patch",
- "instructions": [
- {
- "property1": null,
- "property2": null
}
]
}, - "_execution": {
- "status": "completed",
- "stopDate": 0
}
}
], - "_execution": {
- "status": "completed",
- "stopDate": 0
}, - "meta": {
- "parameters": [
- {
- "_id": "string",
- "path": "string",
- "default": {
- "value": null,
- "booleanVariationValue": true,
- "ruleClause": {
- "attribute": "string",
- "op": "in",
- "negate": true
}
}, - "valid": true
}
]
}, - "templateKey": "example-workflow-template"
}
Delete a workflow from a feature flag.
Action completed successfully
Invalid request
Invalid access token
Forbidden
Invalid resource identifier
Rate limited
{- "code": "invalid_request",
- "message": "Invalid request body"
}