-
Notifications
You must be signed in to change notification settings - Fork 0
/
state.ts
360 lines (358 loc) · 9.66 KB
/
state.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
/**
* Code generated by [commercetools RMF-Codegen](https://github.com/commercetools/rmf-codegen). DO NOT EDIT.
* Please don't change this file manually but run `rmf-codegen generate raml_file_path -o output_path -t typescript_client` to update it.
* For more information about the commercetools platform APIs, visit https://docs.commercetools.com/.
*/
import { BaseResource, CreatedBy, LastModifiedBy, LocalizedString } from './common.js'
export interface State extends BaseResource {
/**
* Unique identifier of the State.
*
*
*/
readonly id: string
/**
* Current version of the State.
*
*
*/
readonly version: number
/**
* Date and time (UTC) the State was initially created.
*
*
*/
readonly createdAt: string
/**
* Date and time (UTC) the State was last updated.
*
*
*/
readonly lastModifiedAt: string
/**
* Present on resources created after 1 February 2019 except for [events not tracked](/../api/client-logging#events-tracked).
*
*
*/
readonly lastModifiedBy?: LastModifiedBy
/**
* Present on resources created after 1 February 2019 except for [events not tracked](/../api/client-logging#events-tracked).
*
*
*/
readonly createdBy?: CreatedBy
/**
* User-defined unique identifier of the State.
*
*
*/
readonly key: string
/**
* Indicates to which resource or object types the State is assigned to.
*
*
*/
readonly type: StateTypeEnum
/**
* Name of the State.
*
*
*/
readonly name?: LocalizedString
/**
* Description of the State.
*
*
*/
readonly description?: LocalizedString
/**
* `true` for an initial State, the first State in a workflow.
*
*
*/
readonly initial: boolean
/**
* `true` for States that are an integral part of the [Project](ctp:api:type:Project). Those States cannot be deleted and their `key` cannot be changed.
*
*
*/
readonly builtIn: boolean
/**
* Roles the State can fulfill for [Reviews](ctp:api:type:Review) and [Line Items](ctp:api:type:LineItem).
*
*
*/
readonly roles?: StateRoleEnum[]
/**
* - list of States of the same `type` that the current State can be transitioned to. For example, when the current State is the _Initial_ State of [StateType](ctp:api:type:StateTypeEnum) `OrderState` and this list contains the reference to the _Shipped_ `OrderState`, the transition _Initial_ -> _Shipped_ is allowed.
* - if empty, no transitions are allowed from the current State, defining the current State as final for this workflow.
* - if not set, the validation is turned off and the current State can be transitioned to any other State of the same `type` as the current State.
*
*
*/
readonly transitions?: StateReference[]
}
export interface StateDraft {
/**
* User-defined unique identifier for the State.
*
*
*/
readonly key: string
/**
* Specify to which resource or object type the State is assigned to.
*
*
*/
readonly type: StateTypeEnum
/**
* Name of the State.
*
*
*/
readonly name?: LocalizedString
/**
* Description of the State.
*
*
*/
readonly description?: LocalizedString
/**
* Set to `false` if the State is not the first step in a workflow.
*
*
*/
readonly initial?: boolean
/**
* If suitable, assign predifined roles the State can fulfill in case the State's `type` is `LineItemState` or `ReviewState`.
*
*
*/
readonly roles?: StateRoleEnum[]
/**
* Define the list of States of the same `type` to which the current State can be transitioned to.
*
* - If, for example, the current State is the _Initial_ State of [StateType](ctp:api:type:StateTypeEnum) `OrderState` and you want to allow the transition _Initial_ -> _Shipped_, then add the [StateResourceIdentifier](ctp:api:type:StateResourceIdentifier) to the _Shipped_ `OrderState` to this list.
* - Set to empty list for not allowing any transition from the current State and defining it as final State for a workflow.
* - Do not set this field at all to turn off validation and allowing transitions to any other State of the same `type` as the current State.
*
*
*/
readonly transitions?: StateResourceIdentifier[]
}
/**
* [PagedQueryResult](/../api/general-concepts#pagedqueryresult) with `results` containing an array of [State](ctp:api:type:State).
*
*/
export interface StatePagedQueryResponse {
/**
* Number of [results requested](/../api/general-concepts#limit).
*
*
*/
readonly limit: number
/**
* Number of [elements skipped](/../api/general-concepts#offset).
*
*
*/
readonly offset: number
/**
* Actual number of results returned.
*
*
*/
readonly count: number
/**
* Total number of results matching the query.
* This number is an estimation that is not [strongly consistent](/../api/general-concepts#strong-consistency).
* This field is returned by default.
* For improved performance, calculating this field can be deactivated by using the query parameter `withTotal=false`.
* When the results are filtered with a [Query Predicate](/../api/predicates/query), `total` is subject to a [limit](/../api/limits#queries).
*
*
*/
readonly total?: number
/**
* [States](ctp:api:type:State) matching the query.
*
*
*/
readonly results: State[]
}
/**
* [Reference](ctp:api:type:Reference) to a [State](ctp:api:type:State).
*
*/
export interface StateReference {
readonly typeId: 'state'
/**
* Unique identifier of the referenced [State](ctp:api:type:State).
*
*
*/
readonly id: string
/**
* Contains the representation of the expanded State. Only present in responses to requests with [Reference Expansion](/../api/general-concepts#reference-expansion) for States.
*
*
*/
readonly obj?: State
}
/**
* [ResourceIdentifier](ctp:api:type:ResourceIdentifier) to a [State](ctp:api:type:State).
*
*/
export interface StateResourceIdentifier {
readonly typeId: 'state'
/**
* Unique identifier of the referenced [State](ctp:api:type:State). Either `id` or `key` is required.
*
*
*/
readonly id?: string
/**
* User-defined unique identifier of the referenced [State](ctp:api:type:State). Either `id` or `key` is required.
*
*
*/
readonly key?: string
}
/**
* For some resource types, a State can fulfill the following predefined roles:
*
*/
export type StateRoleEnum = 'Return' | 'ReviewIncludedInStatistics' | string
/**
* Resource or object type the State can be assigned to.
*
*/
export type StateTypeEnum =
| 'LineItemState'
| 'OrderState'
| 'PaymentState'
| 'ProductState'
| 'QuoteRequestState'
| 'QuoteState'
| 'ReviewState'
| 'StagedQuoteState'
| string
export interface StateUpdate {
/**
* Expected version of the State on which the changes should be applied. If the expected version does not match the actual version, a [ConcurrentModification](ctp:api:type:ConcurrentModificationError) error is returned.
*
*
*/
readonly version: number
/**
* Update actions to be performed on the State.
*
*
*/
readonly actions: StateUpdateAction[]
}
export type StateUpdateAction =
| StateAddRolesAction
| StateChangeInitialAction
| StateChangeKeyAction
| StateChangeTypeAction
| StateRemoveRolesAction
| StateSetDescriptionAction
| StateSetNameAction
| StateSetRolesAction
| StateSetTransitionsAction
export interface StateAddRolesAction {
readonly action: 'addRoles'
/**
* Value to append to the array.
*
*
*/
readonly roles: StateRoleEnum[]
}
export interface StateChangeInitialAction {
readonly action: 'changeInitial'
/**
* Set to `true` for defining the State as initial State in a state machine and making it the first step in a workflow.
*
*
*/
readonly initial: boolean
}
export interface StateChangeKeyAction {
readonly action: 'changeKey'
/**
* New value to set.
* Must not be empty.
*
*
*/
readonly key: string
}
export interface StateChangeTypeAction {
readonly action: 'changeType'
/**
* Resource or object types the State shall be assigned to.
* Must not be empty.
*
*
*/
readonly type: StateTypeEnum
}
export interface StateRemoveRolesAction {
readonly action: 'removeRoles'
/**
* Roles to remove from the State.
*
*
*/
readonly roles: StateRoleEnum[]
}
export interface StateSetDescriptionAction {
readonly action: 'setDescription'
/**
* Value to set.
* If empty, any existing value will be removed.
*
*
*/
readonly description: LocalizedString
}
export interface StateSetNameAction {
readonly action: 'setName'
/**
* Value to set.
* If empty, any existing value will be removed.
*
*
*/
readonly name: LocalizedString
}
export interface StateSetRolesAction {
readonly action: 'setRoles'
/**
* Value to set.
* If empty, any existing value will be removed.
*
*
*/
readonly roles: StateRoleEnum[]
}
export interface StateSetTransitionsAction {
readonly action: 'setTransitions'
/**
* Value to set.
* If empty, any existing value will be removed.
*
* Possible transformations of the current State to other States of the same `type` (for example, _Initial_ -> _Shipped_).
* When performing a `transitionState` update action and `transitions` is set, the currently referenced State must have a transition to the new State.
*
* If `transitions` is an empty list, it means the current State is a final State and no further transitions are allowed.
* If `transitions` is not set, the validation is turned off.
*
* When performing a `transitionState` update action, any other State of the same `type` can be transitioned to.
*
*
*/
readonly transitions?: StateResourceIdentifier[]
}