@shipeasy/openapi 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/{chunk-EPLLHLZN.js → chunk-LYNWK55D.js} +23 -1
  2. package/dist/chunk-LYNWK55D.js.map +1 -0
  3. package/dist/{chunk-SPH5HWCD.js → chunk-PRN4AEAM.js} +396 -187
  4. package/dist/chunk-PRN4AEAM.js.map +1 -0
  5. package/dist/{client-pVkoo3Bf.d.ts → client-DO5HTb_L.d.ts} +886 -241
  6. package/dist/client.d.ts +1 -1
  7. package/dist/client.js +7 -1
  8. package/dist/custom.d.ts +23 -1
  9. package/dist/custom.js +12 -4
  10. package/dist/custom.js.map +1 -1
  11. package/dist/index.d.ts +2 -2
  12. package/dist/index.js +8 -2
  13. package/dist/index.js.map +1 -1
  14. package/dist/schemas.d.ts +770 -104
  15. package/dist/schemas.js +57 -5
  16. package/openapi.json +2177 -775
  17. package/openapi.yaml +1373 -409
  18. package/package.json +1 -1
  19. package/spec/components/errors.yaml +30 -1
  20. package/spec/components/parameters.yaml +8 -0
  21. package/spec/components/responses.yaml +15 -0
  22. package/spec/components/schemas/common.yaml +11 -0
  23. package/spec/components/schemas/connectors.yaml +5 -11
  24. package/spec/components/schemas/errors-api.yaml +66 -3
  25. package/spec/components/schemas/experiment-api-row.yaml +293 -0
  26. package/spec/components/schemas/experiments.yaml +54 -299
  27. package/spec/components/schemas/gate-templates.yaml +41 -2
  28. package/spec/components/schemas/gates.yaml +19 -0
  29. package/spec/components/schemas/keys.yaml +2 -1
  30. package/spec/components/schemas/metrics.yaml +17 -17
  31. package/spec/components/schemas/ops.yaml +105 -2
  32. package/spec/components/schemas/projects.yaml +119 -1
  33. package/spec/components/schemas/universes.yaml +83 -1
  34. package/spec/openapi.yaml +35 -2
  35. package/spec/paths/alert-rules.yaml +11 -2
  36. package/spec/paths/attributes.yaml +14 -3
  37. package/spec/paths/configs.yaml +24 -9
  38. package/spec/paths/connectors.yaml +42 -8
  39. package/spec/paths/errors.yaml +100 -6
  40. package/spec/paths/events.yaml +19 -4
  41. package/spec/paths/experiments.yaml +45 -11
  42. package/spec/paths/gate-templates.yaml +9 -5
  43. package/spec/paths/gates.yaml +21 -6
  44. package/spec/paths/i18n.yaml +18 -5
  45. package/spec/paths/keys.yaml +3 -1
  46. package/spec/paths/killswitches.yaml +24 -6
  47. package/spec/paths/metrics.yaml +15 -3
  48. package/spec/paths/ops.yaml +114 -3
  49. package/spec/paths/projects.yaml +3 -3
  50. package/spec/paths/universes.yaml +11 -2
  51. package/dist/chunk-EPLLHLZN.js.map +0 -1
  52. package/dist/chunk-SPH5HWCD.js.map +0 -1
@@ -12,6 +12,7 @@
12
12
  - $ref: ../components/parameters.yaml#/ProjectId
13
13
  - $ref: ../components/parameters.yaml#/PaginationLimit
14
14
  - $ref: ../components/parameters.yaml#/PaginationCursor
15
+ - $ref: ../components/parameters.yaml#/Q
15
16
  responses:
16
17
  "200":
17
18
  description: List dynamic configs
@@ -160,6 +161,19 @@
160
161
  example:
161
162
  id: cfg_01j7wae5h6j7k8l9m0n1p2q3r4
162
163
  name: pricing.tiers
164
+ links:
165
+ GetConfig:
166
+ operationId: getConfig
167
+ parameters: { id: $response.body#/id }
168
+ UpdateConfig:
169
+ operationId: updateConfig
170
+ parameters: { id: $response.body#/id }
171
+ PublishConfigDraft:
172
+ operationId: publishConfigDraft
173
+ parameters: { id: $response.body#/id }
174
+ DeleteConfig:
175
+ operationId: deleteConfig
176
+ parameters: { id: $response.body#/id }
163
177
  "400":
164
178
  $ref: ../components/responses.yaml#/BadRequest
165
179
  "401":
@@ -178,6 +192,7 @@
178
192
  - FORBIDDEN
179
193
  - ALREADY_EXISTS
180
194
  - VALIDATION
195
+ - PLAN_LIMIT
181
196
  x-cli:
182
197
  name: create
183
198
  positional:
@@ -199,7 +214,7 @@
199
214
  required: true
200
215
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
201
216
  schema:
202
- type: string
217
+ $ref: ../components/schemas/common.yaml#/ResourceId
203
218
  responses:
204
219
  "200":
205
220
  description: Get one config
@@ -301,7 +316,7 @@
301
316
  required: true
302
317
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
303
318
  schema:
304
- type: string
319
+ $ref: ../components/schemas/common.yaml#/ResourceId
305
320
  requestBody:
306
321
  required: true
307
322
  content:
@@ -377,7 +392,7 @@
377
392
  required: true
378
393
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
379
394
  schema:
380
- type: string
395
+ $ref: ../components/schemas/common.yaml#/ResourceId
381
396
  responses:
382
397
  "200":
383
398
  description: Delete a dynamic config
@@ -427,7 +442,7 @@
427
442
  required: true
428
443
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
429
444
  schema:
430
- type: string
445
+ $ref: ../components/schemas/common.yaml#/ResourceId
431
446
  requestBody:
432
447
  required: true
433
448
  content:
@@ -495,7 +510,7 @@
495
510
  required: true
496
511
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
497
512
  schema:
498
- type: string
513
+ $ref: ../components/schemas/common.yaml#/ResourceId
499
514
  requestBody:
500
515
  required: true
501
516
  content:
@@ -557,7 +572,7 @@
557
572
  required: true
558
573
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
559
574
  schema:
560
- type: string
575
+ $ref: ../components/schemas/common.yaml#/ResourceId
561
576
  requestBody:
562
577
  required: true
563
578
  content:
@@ -576,7 +591,7 @@
576
591
  value:
577
592
  env: prod
578
593
  responses:
579
- "201":
594
+ "200":
580
595
  description: Publish a draft
581
596
  content:
582
597
  application/json:
@@ -626,7 +641,7 @@
626
641
  required: true
627
642
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
628
643
  schema:
629
- type: string
644
+ $ref: ../components/schemas/common.yaml#/ResourceId
630
645
  - name: limit
631
646
  in: query
632
647
  required: false
@@ -690,7 +705,7 @@
690
705
  required: true
691
706
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
692
707
  schema:
693
- type: string
708
+ $ref: ../components/schemas/common.yaml#/ResourceId
694
709
  requestBody:
695
710
  required: true
696
711
  content:
@@ -12,6 +12,7 @@
12
12
  - Connectors
13
13
  parameters:
14
14
  - $ref: ../components/parameters.yaml#/ProjectId
15
+ - $ref: ../components/parameters.yaml#/Q
15
16
  responses:
16
17
  "200":
17
18
  description: List connectors
@@ -130,6 +131,19 @@
130
131
  $ref: ../components/schemas/connectors.yaml#/CreateConnectorResponse
131
132
  example:
132
133
  id: 9b0e7c2a-1f3d-4a8e-bf21-0c6a2e5d7f10
134
+ links:
135
+ GetConnector:
136
+ operationId: getConnector
137
+ parameters: { id: $response.body#/id }
138
+ UpdateConnector:
139
+ operationId: updateConnector
140
+ parameters: { id: $response.body#/id }
141
+ TestConnector:
142
+ operationId: testConnector
143
+ parameters: { id: $response.body#/id }
144
+ DeleteConnector:
145
+ operationId: deleteConnector
146
+ parameters: { id: $response.body#/id }
133
147
  "400":
134
148
  $ref: ../components/responses.yaml#/BadRequest
135
149
  "401":
@@ -165,7 +179,7 @@
165
179
  required: true
166
180
  description: Stable opaque connector id.
167
181
  schema:
168
- type: string
182
+ $ref: ../components/schemas/common.yaml#/ResourceId
169
183
  responses:
170
184
  "200":
171
185
  description: Get a connector
@@ -233,7 +247,7 @@
233
247
  required: true
234
248
  description: Stable opaque connector id.
235
249
  schema:
236
- type: string
250
+ $ref: ../components/schemas/common.yaml#/ResourceId
237
251
  requestBody:
238
252
  required: true
239
253
  content:
@@ -306,7 +320,7 @@
306
320
  required: true
307
321
  description: Stable opaque connector id.
308
322
  schema:
309
- type: string
323
+ $ref: ../components/schemas/common.yaml#/ResourceId
310
324
  responses:
311
325
  "200":
312
326
  description: Delete a connector
@@ -355,7 +369,7 @@
355
369
  required: true
356
370
  description: Stable opaque connector id.
357
371
  schema:
358
- type: string
372
+ $ref: ../components/schemas/common.yaml#/ResourceId
359
373
  requestBody:
360
374
  required: false
361
375
  content:
@@ -373,7 +387,7 @@
373
387
  text: Triage only the P0 bugs reported in the last 24h.
374
388
  responses:
375
389
  "200":
376
- description: Fire a trigger connector
390
+ description: The trigger run was successfully kicked off.
377
391
  content:
378
392
  application/json:
379
393
  schema:
@@ -392,6 +406,8 @@
392
406
  $ref: ../components/responses.yaml#/Conflict
393
407
  "422":
394
408
  $ref: ../components/responses.yaml#/UnprocessableEntity
409
+ "502":
410
+ $ref: ../components/responses.yaml#/BadGateway
395
411
  x-error-codes:
396
412
  - UNAUTHORIZED
397
413
  - FORBIDDEN
@@ -419,10 +435,10 @@
419
435
  required: true
420
436
  description: Stable opaque connector id.
421
437
  schema:
422
- type: string
438
+ $ref: ../components/schemas/common.yaml#/ResourceId
423
439
  responses:
424
440
  "200":
425
- description: Test a connector
441
+ description: The test dispatch reached the destination.
426
442
  content:
427
443
  application/json:
428
444
  schema:
@@ -442,6 +458,8 @@
442
458
  $ref: ../components/responses.yaml#/Conflict
443
459
  "422":
444
460
  $ref: ../components/responses.yaml#/UnprocessableEntity
461
+ "502":
462
+ $ref: ../components/responses.yaml#/BadGateway
445
463
  x-error-codes:
446
464
  - UNAUTHORIZED
447
465
  - FORBIDDEN
@@ -471,7 +489,7 @@
471
489
  required: true
472
490
  description: Stable opaque connector id. Its stored `provider` must match the body's `provider`.
473
491
  schema:
474
- type: string
492
+ $ref: ../components/schemas/common.yaml#/ResourceId
475
493
  requestBody:
476
494
  required: true
477
495
  content:
@@ -577,6 +595,22 @@
577
595
  $ref: ../components/schemas/connectors.yaml#/CreateConnectorResponse
578
596
  example:
579
597
  id: 9b0e7c2a-1f3d-4a8e-bf21-0c6a2e5d7f10
598
+ links:
599
+ FireConnector:
600
+ operationId: fireConnector
601
+ parameters: { id: $response.body#/id }
602
+ TestConnector:
603
+ operationId: testConnector
604
+ parameters: { id: $response.body#/id }
605
+ GetConnector:
606
+ operationId: getConnector
607
+ parameters: { id: $response.body#/id }
608
+ UpdateTriggerConnector:
609
+ operationId: updateTriggerConnector
610
+ parameters: { id: $response.body#/id }
611
+ DeleteConnector:
612
+ operationId: deleteConnector
613
+ parameters: { id: $response.body#/id }
580
614
  "400":
581
615
  $ref: ../components/responses.yaml#/BadRequest
582
616
  "401":
@@ -96,9 +96,9 @@
96
96
  operationId: getError
97
97
  summary: Get a tracked error
98
98
  description: |-
99
- Returns a single tracked error by its id, including the latest occurrence's stack, extras, and consequence. Returns `404` if no such error exists in the project.
99
+ Returns a single tracked error by its id, including the latest occurrence's stack, extras, and consequence, plus `occurrences` — the sampled per-instance detail rows behind the issue (newest first; exhaustive while the issue is small, thinned at volume, capped at 100). Returns `404` if no such error exists in the project.
100
100
 
101
- **Use case:** Drill into one issue — fetch its full stack and `seenUrls` to investigate, or to render the detail panel behind a row in the errors list.
101
+ **Use case:** Drill into one issue — fetch its full stack and `seenUrls` to investigate, or walk `occurrences` to see how the failing message/stack varies across instances.
102
102
  tags:
103
103
  - Errors
104
104
  parameters:
@@ -108,7 +108,7 @@
108
108
  required: true
109
109
  description: Stable opaque error id (`err_…`).
110
110
  schema:
111
- type: string
111
+ $ref: ../components/schemas/common.yaml#/ResourceId
112
112
  responses:
113
113
  "200":
114
114
  description: Get a tracked error
@@ -142,6 +142,31 @@
142
142
  lastSeenAt: 2026-06-28T14:55:31.000Z
143
143
  createdAt: 2026-06-20T08:11:02.000Z
144
144
  updatedAt: 2026-06-28T14:55:31.000Z
145
+ occurrences:
146
+ - id: occ_01j7w7qq0v3k9d2m5rc8t1xh4n
147
+ message: Cannot read properties of undefined (reading 'id')
148
+ stack: |-
149
+ TypeError: Cannot read properties of undefined (reading 'id')
150
+ at GateEditor (/app/gates/[id]/page.tsx:42:18)
151
+ url: https://app.example.com/dashboard/gat_01j7/edit
152
+ env: prod
153
+ side: client
154
+ sdkVersion: 6.0.0
155
+ extrasJson: '{"gateId":"gat_01j7"}'
156
+ sampleRate: 100
157
+ seenAt: 2026-06-28T14:55:31.000Z
158
+ - id: occ_01j7w7pk8s6e3f9b0zad7y5w2q
159
+ message: Cannot read properties of undefined (reading 'id')
160
+ stack: |-
161
+ TypeError: Cannot read properties of undefined (reading 'id')
162
+ at GateEditor (/app/gates/[id]/page.tsx:42:18)
163
+ url: https://app.example.com/dashboard/gat_02c4/edit
164
+ env: prod
165
+ side: client
166
+ sdkVersion: 6.0.0
167
+ extrasJson: '{"gateId":"gat_02c4"}'
168
+ sampleRate: 10
169
+ seenAt: 2026-06-24T09:12:05.000Z
145
170
  "400":
146
171
  $ref: ../components/responses.yaml#/BadRequest
147
172
  "401":
@@ -183,7 +208,7 @@
183
208
  required: true
184
209
  description: Stable opaque error id (`err_…`).
185
210
  schema:
186
- type: string
211
+ $ref: ../components/schemas/common.yaml#/ResourceId
187
212
  requestBody:
188
213
  required: true
189
214
  content:
@@ -272,7 +297,7 @@
272
297
  required: true
273
298
  description: Stable opaque error id (`err_…`).
274
299
  schema:
275
- type: string
300
+ $ref: ../components/schemas/common.yaml#/ResourceId
276
301
  responses:
277
302
  "201":
278
303
  description: File a feedback ticket for an error
@@ -303,6 +328,75 @@
303
328
  name: file
304
329
  positional:
305
330
  - id
331
+ /api/admin/errors/{id}/resolve:
332
+ post:
333
+ operationId: resolveError
334
+ summary: Resolve a tracked error
335
+ description: |-
336
+ Marks one tracked error `resolved` — the single-purpose "close out" action. Takes no body; it is `PATCH /api/admin/errors/{id}` pinned to `{ "status": "resolved" }`, exposed so tooling can close an error without being handed the full open/resolved/ignored status machine. A resolved error reopens automatically (ingestion-side) if it recurs, so resolving is always safe: a premature resolve un-does itself on the next occurrence. Returns the updated row; `404` if the error does not exist.
337
+
338
+ **Use case:** Close out a tracked error from an agent or script once its fix has shipped — e.g. after a deploy, resolve every open issue the change addressed and let recurrence reopen anything that wasn't actually fixed.
339
+ tags:
340
+ - Errors
341
+ parameters:
342
+ - $ref: ../components/parameters.yaml#/ProjectId
343
+ - name: id
344
+ in: path
345
+ required: true
346
+ description: Stable opaque error id (`err_…`).
347
+ schema:
348
+ $ref: ../components/schemas/common.yaml#/ResourceId
349
+ responses:
350
+ "200":
351
+ description: Resolve a tracked error
352
+ content:
353
+ application/json:
354
+ schema:
355
+ $ref: ../components/schemas/errors-api.yaml#/ErrorRecord
356
+ example:
357
+ id: err_01j7w7m9q4hxbf6npe6s9zr3vc
358
+ projectId: e976b15e-2f0d-4c6e-9b1a-3a7c1f2d8e90
359
+ fingerprint: 9c1f4f1f2c0c4a5fa1c2b6d3e7c8e3a1
360
+ causedByFingerprint: null
361
+ message: Cannot read properties of undefined (reading 'id')
362
+ errorType: TypeError
363
+ stack: null
364
+ source: shipeasy
365
+ url: https://app.example.com/dashboard/gat_01j7/edit
366
+ seenUrls: null
367
+ subject: gate editor
368
+ outcome: crash on load
369
+ side: client
370
+ env: prod
371
+ kind: uncaught
372
+ lastExtrasJson: null
373
+ sdkVersion: 6.0.0
374
+ count: 137
375
+ status: resolved
376
+ firstSeenAt: 2026-06-20T08:11:02.000Z
377
+ lastSeenAt: 2026-06-28T14:55:31.000Z
378
+ createdAt: 2026-06-20T08:11:02.000Z
379
+ updatedAt: 2026-06-28T15:02:10.000Z
380
+ "400":
381
+ $ref: ../components/responses.yaml#/BadRequest
382
+ "401":
383
+ $ref: ../components/responses.yaml#/Unauthorized
384
+ "403":
385
+ $ref: ../components/responses.yaml#/Forbidden
386
+ "404":
387
+ $ref: ../components/responses.yaml#/NotFound
388
+ "409":
389
+ $ref: ../components/responses.yaml#/Conflict
390
+ "422":
391
+ $ref: ../components/responses.yaml#/UnprocessableEntity
392
+ x-error-codes:
393
+ - UNAUTHORIZED
394
+ - FORBIDDEN
395
+ - NOT_FOUND
396
+ x-cli:
397
+ name: resolve
398
+ positional:
399
+ - id
306
400
  /api/admin/errors/{id}/series:
307
401
  post:
308
402
  operationId: getErrorSeries
@@ -320,7 +414,7 @@
320
414
  required: true
321
415
  description: Stable opaque error id (`err_…`).
322
416
  schema:
323
- type: string
417
+ $ref: ../components/schemas/common.yaml#/ResourceId
324
418
  requestBody:
325
419
  required: true
326
420
  content:
@@ -10,6 +10,7 @@
10
10
  - Events
11
11
  parameters:
12
12
  - $ref: ../components/parameters.yaml#/ProjectId
13
+ - $ref: ../components/parameters.yaml#/Q
13
14
  responses:
14
15
  "200":
15
16
  description: List events
@@ -95,6 +96,19 @@
95
96
  example:
96
97
  id: evt_01j7w8a1b2c3d4e5f6g7h8i9j0
97
98
  name: checkout_completed
99
+ links:
100
+ GetEvent:
101
+ operationId: getEvent
102
+ parameters: { id: $response.body#/id }
103
+ UpdateEvent:
104
+ operationId: updateEvent
105
+ parameters: { id: $response.body#/id }
106
+ ApproveEvent:
107
+ operationId: approveEvent
108
+ parameters: { id: $response.body#/id }
109
+ DeleteEvent:
110
+ operationId: deleteEvent
111
+ parameters: { id: $response.body#/id }
98
112
  "400":
99
113
  $ref: ../components/responses.yaml#/BadRequest
100
114
  "401":
@@ -113,6 +127,7 @@
113
127
  - FORBIDDEN
114
128
  - ALREADY_EXISTS
115
129
  - VALIDATION
130
+ - PLAN_LIMIT
116
131
  x-cli:
117
132
  name: create
118
133
  positional:
@@ -134,7 +149,7 @@
134
149
  required: true
135
150
  description: Stable opaque event id (`evt_…`) or the event's `name`.
136
151
  schema:
137
- type: string
152
+ $ref: ../components/schemas/common.yaml#/ResourceId
138
153
  responses:
139
154
  "200":
140
155
  description: Get an event
@@ -193,7 +208,7 @@
193
208
  required: true
194
209
  description: Stable opaque event id (`evt_…`) or the event's `name`.
195
210
  schema:
196
- type: string
211
+ $ref: ../components/schemas/common.yaml#/ResourceId
197
212
  requestBody:
198
213
  required: true
199
214
  content:
@@ -261,7 +276,7 @@
261
276
  required: true
262
277
  description: Stable opaque event id (`evt_…`) or the event's `name`.
263
278
  schema:
264
- type: string
279
+ $ref: ../components/schemas/common.yaml#/ResourceId
265
280
  responses:
266
281
  "200":
267
282
  description: Archive an event
@@ -312,7 +327,7 @@
312
327
  required: true
313
328
  description: Stable opaque event id (`evt_…`) or the event's `name`.
314
329
  schema:
315
- type: string
330
+ $ref: ../components/schemas/common.yaml#/ResourceId
316
331
  requestBody:
317
332
  required: true
318
333
  content:
@@ -12,6 +12,13 @@
12
12
  - $ref: ../components/parameters.yaml#/ProjectId
13
13
  - $ref: ../components/parameters.yaml#/PaginationLimit
14
14
  - $ref: ../components/parameters.yaml#/PaginationCursor
15
+ - name: status
16
+ in: query
17
+ required: false
18
+ description: Filter by lifecycle status. Pass `archived` to return the archive tab; any other value (or omitting it) returns the non-archived experiments.
19
+ schema:
20
+ type: string
21
+ - $ref: ../components/parameters.yaml#/Q
15
22
  responses:
16
23
  "200":
17
24
  description: List experiments
@@ -159,6 +166,25 @@
159
166
  example:
160
167
  id: exp_01j7wb12c3d4e5f6g7h8j9k0l1
161
168
  name: checkout_button_color
169
+ links:
170
+ GetExperiment:
171
+ operationId: getExperiment
172
+ parameters: { id: $response.body#/id }
173
+ UpdateExperiment:
174
+ operationId: updateExperiment
175
+ parameters: { id: $response.body#/id }
176
+ SetExperimentMetrics:
177
+ operationId: setExperimentMetrics
178
+ parameters: { id: $response.body#/id }
179
+ SetExperimentStatus:
180
+ operationId: setExperimentStatus
181
+ parameters: { id: $response.body#/id }
182
+ ReanalyzeExperiment:
183
+ operationId: reanalyzeExperiment
184
+ parameters: { id: $response.body#/id }
185
+ DeleteExperiment:
186
+ operationId: deleteExperiment
187
+ parameters: { id: $response.body#/id }
162
188
  "400":
163
189
  $ref: ../components/responses.yaml#/BadRequest
164
190
  "401":
@@ -201,7 +227,7 @@
201
227
  required: true
202
228
  description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
203
229
  schema:
204
- type: string
230
+ $ref: ../components/schemas/common.yaml#/ResourceId
205
231
  responses:
206
232
  "200":
207
233
  description: Get one experiment
@@ -281,7 +307,7 @@
281
307
  required: true
282
308
  description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
283
309
  schema:
284
- type: string
310
+ $ref: ../components/schemas/common.yaml#/ResourceId
285
311
  requestBody:
286
312
  required: true
287
313
  content:
@@ -346,6 +372,7 @@
346
372
  - GROUPS_WEIGHT_SUM
347
373
  - REFERENCED_NOT_FOUND
348
374
  - VALIDATION
375
+ - EXPERIMENT_IMMUTABLE_FIELD
349
376
  x-cli:
350
377
  name: update
351
378
  positional:
@@ -366,7 +393,7 @@
366
393
  required: true
367
394
  description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
368
395
  schema:
369
- type: string
396
+ $ref: ../components/schemas/common.yaml#/ResourceId
370
397
  responses:
371
398
  "200":
372
399
  description: Delete an experiment
@@ -427,7 +454,7 @@
427
454
  required: true
428
455
  description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
429
456
  schema:
430
- type: string
457
+ $ref: ../components/schemas/common.yaml#/ResourceId
431
458
  requestBody:
432
459
  required: true
433
460
  content:
@@ -456,7 +483,7 @@
456
483
  value:
457
484
  status: draft
458
485
  responses:
459
- "201":
486
+ "200":
460
487
  description: Transition experiment status
461
488
  content:
462
489
  application/json:
@@ -484,6 +511,12 @@
484
511
  - NOT_FOUND
485
512
  - INVALID_TRANSITION
486
513
  - VALIDATION
514
+ - PLAN_LIMIT
515
+ - EXPERIMENT_NO_GOAL_METRIC
516
+ - EXPERIMENT_ARCHIVED_RESTART
517
+ - EXPERIMENT_NOT_RUNNING
518
+ - EXPERIMENT_RUNNING_ARCHIVE
519
+ - EXPERIMENT_RESTORE_INVALID
487
520
  x-cli:
488
521
  positional:
489
522
  - id
@@ -522,7 +555,7 @@
522
555
  required: true
523
556
  description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
524
557
  schema:
525
- type: string
558
+ $ref: ../components/schemas/common.yaml#/ResourceId
526
559
  requestBody:
527
560
  required: true
528
561
  content:
@@ -545,7 +578,7 @@
545
578
  value:
546
579
  metrics: []
547
580
  responses:
548
- "201":
581
+ "200":
549
582
  description: Attach metrics
550
583
  content:
551
584
  application/json:
@@ -578,6 +611,7 @@
578
611
  - EVENT_PENDING
579
612
  - REFERENCED_NOT_FOUND
580
613
  - VALIDATION
614
+ - METRIC_UNKNOWN_ID
581
615
  x-cli:
582
616
  name: set-metrics
583
617
  positional:
@@ -599,7 +633,7 @@
599
633
  required: true
600
634
  description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
601
635
  schema:
602
- type: string
636
+ $ref: ../components/schemas/common.yaml#/ResourceId
603
637
  responses:
604
638
  "200":
605
639
  description: Get analysis results
@@ -668,7 +702,7 @@
668
702
  required: true
669
703
  description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
670
704
  schema:
671
- type: string
705
+ $ref: ../components/schemas/common.yaml#/ResourceId
672
706
  - name: metric
673
707
  in: query
674
708
  required: false
@@ -742,9 +776,9 @@
742
776
  required: true
743
777
  description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
744
778
  schema:
745
- type: string
779
+ $ref: ../components/schemas/common.yaml#/ResourceId
746
780
  responses:
747
- "201":
781
+ "200":
748
782
  description: Re-queue analysis
749
783
  content:
750
784
  application/json:
@@ -5,17 +5,19 @@
5
5
  description: |-
6
6
  Returns the merged targeting-rule template catalog — read-only **built-ins first** (the `@team`/`@owner` audience aliases, country, email-domain, region presets, …), then this project's **customer** templates. Each item carries a `rules: [{ attr, op, value }]` definition; the alias templates carry a symbol value (`email in ["@team"]`) that the SDK expands to the resolved email list at rebuild.
7
7
 
8
- **Turn "launch X in country Y" into a gated flag:** list templates (optionally with `query`), take the matching template's `rules`, substitute the concrete value(s), and pass them as the `rules` arg of `release_flags_create`.
8
+ **Turn "launch X in country Y" into a gated flag:** list templates (optionally with `q`), take the matching template's `rules`, substitute the concrete value(s), and pass them as the `rules` arg of `release_flags_create`.
9
9
 
10
10
  The catalog is small and bounded, so the full merged set is returned in one page — this endpoint is **not** paginated (`next_cursor` is always `null`; there are no `limit`/`cursor` params).
11
11
  tags:
12
12
  - Templates
13
13
  parameters:
14
14
  - $ref: ../components/parameters.yaml#/ProjectId
15
+ - $ref: ../components/parameters.yaml#/Q
15
16
  - name: query
16
17
  in: query
17
18
  required: false
18
- description: Case-insensitive substring filter over each template's `name` + `description`. Omit to return the whole catalog.
19
+ deprecated: true
20
+ description: Deprecated alias for `q`, kept working for one release. Prefer `q`.
19
21
  schema:
20
22
  type: string
21
23
  responses:
@@ -128,7 +130,7 @@
128
130
  required: true
129
131
  description: Built-in slug (`country`) or customer template id (`gtpl_…`).
130
132
  schema:
131
- type: string
133
+ $ref: ../components/schemas/common.yaml#/ResourceId
132
134
  responses:
133
135
  "200":
134
136
  description: Get one gate template
@@ -167,7 +169,7 @@
167
169
  required: true
168
170
  description: Customer template id (`gtpl_…`) or its `name`.
169
171
  schema:
170
- type: string
172
+ $ref: ../components/schemas/common.yaml#/ResourceId
171
173
  requestBody:
172
174
  required: true
173
175
  content:
@@ -231,7 +233,7 @@
231
233
  required: true
232
234
  description: Customer template id (`gtpl_…`) or its `name`.
233
235
  schema:
234
- type: string
236
+ $ref: ../components/schemas/common.yaml#/ResourceId
235
237
  responses:
236
238
  "200":
237
239
  description: Delete a gate template
@@ -251,6 +253,8 @@
251
253
  $ref: ../components/responses.yaml#/NotFound
252
254
  "409":
253
255
  $ref: ../components/responses.yaml#/Conflict
256
+ "422":
257
+ $ref: ../components/responses.yaml#/UnprocessableEntity
254
258
  x-error-codes:
255
259
  - BAD_REQUEST
256
260
  - UNAUTHORIZED