States
The commercetools Platform allows you to model States of Orders, Line Items, Products, Reviews, and Payments to define finite state machines reflecting the business logic you'd like to implement.
States can be combined together by defining transitions between each State. transitionState update actions are validated to ensure the transition complies with the workflow definition.
If the transitions field is not set, no validation is performed. This is useful when an external system executes the workflow and the current State is to be saved.
By default, each Project has a builtin, initial, and LineItemState defined for LineItems and CustomLineItems.
Representations
State
idString | Unique ID of the State. |
versionInt | Current version of the State. |
keyString | User-defined unique identifier for the State. |
createdAt | Date and time (UTC) the State was initially created. |
createdByBETA | Present on resources created after 1 February 2019 except for events not tracked. |
lastModifiedAt | Date and time (UTC) the State was last updated. |
lastModifiedByBETA | Present on resources created after 1 February 2019 except for events not tracked. |
type | Indicates to which resource or object types the State is assigned to. |
name | Name of the State. |
description | Description of the State. |
initialBoolean |
|
builtInBoolean |
|
rolesArray of StateRoleEnum | Roles the State can fulfill for Reviews and Line Items. |
transitionsArray of StateReference |
|
StateDraft
keyString | User-defined unique identifier for the State. |
type | Specify to which resource or object type the State is assigned to. |
name | Name of the State. |
description | Description of the State. |
initialBoolean | Set to true |
rolesArray of StateRoleEnum | If suitable, assign predifined roles the State can fulfill in case the State's |
transitionsArray of StateResourceIdentifier | Define the list of States of the same
|
StatePagedQueryResponse
PagedQueryResult with results containing an array of State.
limitInt | Number of results requested in the query request. |
offsetInt | Offset supplied by the client or the server default. It is the number of elements skipped, not a page number. |
countInt | Actual number of results returned. |
totalInt | Total number of results matching the query.
This number is an estimation that is not strongly consistent.
This field is returned by default.
For improved performance, calculating this field can be deactivated by using the query parameter |
resultsArray of State | States matching the query. |
StateReference
idString | Unique ID of the referenced State. |
typeIdString | "state" |
obj | Contains the representation of the expanded State. Only present in responses to requests with Reference Expansion for State. |
StateResourceIdentifier
ResourceIdentifier to a State.
StateTypeEnum
Resource or object type the State can be assigned to.
OrderStateUsed by Orders.
LineItemStateUsed by LineItems and CustomLineItems in Carts and Orders.
ProductStateUsed by Products.
ReviewStateUsed by Reviews.
PaymentStateUsed by PaymentStatus in Payments.
StateRoleEnum
For some resource types, a State can fulfill the following predefined roles:
ReviewIncludedInStatisticsIf a Review's
statehas this role itsratingis taken into account for ReviewRatingStatistics. This role only applies for theReviewStateStateTypeEnum.ReturnUsed by Orders in the update action transitionLineItemState. This role only applies for the
LineItemStateStateTypeEnum.
Get State
Get State by ID
Deprecated OAuth 2.0 scope: view_orders:{projectKey}
view_states:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
idString |
|
expand | The parameter can be passed multiple times. |
200State
curl -X GET https://api.{region}.commercetools.com/{projectKey}/states/{id} -i \--header 'Authorization: Bearer ${BEARER_TOKEN}'
Get State by Key
Deprecated OAuth 2.0 scope: view_orders:{projectKey}
view_states:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
keyString |
|
expand | The parameter can be passed multiple times. |
200State
curl -X GET https://api.{region}.commercetools.com/{projectKey}/states/key={key} -i \--header 'Authorization: Bearer ${BEARER_TOKEN}'
Query States
Deprecated OAuth 2.0 scope: view_orders:{projectKey}
view_states:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
where | The parameter can be passed multiple times. |
/^var[.][a-zA-Z0-9]+$/Any string parameter matching this regular expression | Predicate parameter values. The parameter can be passed multiple times. |
sort | The parameter can be passed multiple times. |
expand | The parameter can be passed multiple times. |
limitInt | Number of results returned. |
offsetInt | Number of results skipped. |
withTotalBoolean | Controls the calculation of the total number of query results. Set to |
curl -X GET https://api.{region}.commercetools.com/{projectKey}/states -i \--header 'Authorization: Bearer ${BEARER_TOKEN}'
Create State
Deprecated OAuth 2.0 scope: manage_orders:{projectKey}
manage_states:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
expand | The parameter can be passed multiple times. |
201State
curl -X POST https://api.{region}.commercetools.com/{projectKey}/states -i \--header 'Authorization: Bearer ${BEARER_TOKEN}' \--header 'Content-Type: application/json' \--data-binary @- << DATA{"key" : "test-state","type" : "ProductState","roles" : [ ],"initial" : true}DATA
Update State
Update State by ID
Deprecated OAuth 2.0 scope: manage_orders:{projectKey}
manage_states:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
idString |
|
expand | The parameter can be passed multiple times. |
versionInt | Expected version of the State on which the changes should be applied. If the expected version does not match the actual version, a 409 Conflict will be returned. |
actionsArray of StateUpdateAction | Update actions to be performed on the State. |
200State
curl -X POST https://api.{region}.commercetools.com/{projectKey}/states/{id} -i \--header 'Authorization: Bearer ${BEARER_TOKEN}' \--header 'Content-Type: application/json' \--data-binary @- << DATA{"version" : 1,"actions" : [ {"action" : "setName","name" : {"en" : "New Name"}} ]}DATA
Update State by Key
Deprecated OAuth 2.0 scope: manage_orders:{projectKey}
manage_states:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
keyString |
|
expand | The parameter can be passed multiple times. |
versionInt | Expected version of the State on which the changes should be applied. If the expected version does not match the actual version, a 409 Conflict will be returned. |
actionsArray of StateUpdateAction | Update actions to be performed on the State. |
200State
curl -X POST https://api.{region}.commercetools.com/{projectKey}/states/key={key} -i \--header 'Authorization: Bearer ${BEARER_TOKEN}' \--header 'Content-Type: application/json' \--data-binary @- << DATA{"version" : 1,"actions" : [ {"action" : "setName","name" : {"en" : "New Name"}} ]}DATA
Update actions
Change State key
keyString | New value to set. Must not be empty. |
actionString | "changeKey" |
{"action" : "changeKey","key" : "ChangedStateKey"}
Set State name
actionString | "setName" |
name | Value to set. If empty, any existing value will be removed. |
{"action" : "setName","name" : {"de" : "State Name","en" : "State name"}}
Set State description
actionString | "setDescription" |
description | Value to set. If empty, any existing value will be removed. |
{"action" : "setDescription","description" : {"de" : "State Beschreibung","en" : "State description"}}
Change State type
actionString | "changeType" |
type | Resource or object types the State shall be assigned to. Must not be empty. |
{"action" : "changeType","type" : "ReviewState"}
Change initial State
actionString | "changeInitial" |
initialBoolean | Set to |
{"action" : "changeInitial","initial" : false}
Set transitions
actionString | "setTransitions" |
transitionsArray of StateResourceIdentifier | Value to set. If empty, any existing value will be removed. Possible transformations of the current State to other States of the same If When performing a |
{"action" : "setTransitions","transitions" : [ {"typeId" : "state","id" : "{{state-id}}"}, {"typeId" : "state","id" : "{{state-id2}}"} ]}
Set State roles
actionString | "setRoles" |
rolesArray of StateRoleEnum | Value to set. If empty, any existing value will be removed. |
{"action" : "setRoles","roles" : [ "ReviewIncludedInStatistics" ]}
Add State roles
actionString | "addRoles" |
rolesArray of StateRoleEnum | Value to append to the array. |
{"action" : "addRoles","roles" : [ "ReviewIncludedInStatistics" ]}
Remove State roles
actionString | "removeRoles" |
rolesArray of StateRoleEnum | Roles to remove from the State. |
{"action" : "removeRoles","roles" : [ "ReviewIncludedInStatistics" ]}
Delete State
Delete State by ID
Deprecated OAuth 2.0 scope: manage_orders:{projectKey}
manage_states:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
idString |
|
expand | The parameter can be passed multiple times. |
versionInt | Last seen version of the resource. |
200State
curl -X DELETE https://api.{region}.commercetools.com/{projectKey}/states/{id}?version={version} -i \--header 'Authorization: Bearer ${BEARER_TOKEN}'
Delete State by Key
Deprecated OAuth 2.0 scope: manage_orders:{projectKey}
manage_states:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
keyString |
|
expand | The parameter can be passed multiple times. |
versionInt | Last seen version of the resource. |
200State
curl -X DELETE https://api.{region}.commercetools.com/{projectKey}/states/key={key}?version={version} -i \--header 'Authorization: Bearer ${BEARER_TOKEN}'