@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.
- package/dist/{chunk-EPLLHLZN.js → chunk-LYNWK55D.js} +23 -1
- package/dist/chunk-LYNWK55D.js.map +1 -0
- package/dist/{chunk-SPH5HWCD.js → chunk-PRN4AEAM.js} +396 -187
- package/dist/chunk-PRN4AEAM.js.map +1 -0
- package/dist/{client-pVkoo3Bf.d.ts → client-DO5HTb_L.d.ts} +886 -241
- package/dist/client.d.ts +1 -1
- package/dist/client.js +7 -1
- package/dist/custom.d.ts +23 -1
- package/dist/custom.js +12 -4
- package/dist/custom.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/schemas.d.ts +770 -104
- package/dist/schemas.js +57 -5
- package/openapi.json +2177 -775
- package/openapi.yaml +1373 -409
- package/package.json +1 -1
- package/spec/components/errors.yaml +30 -1
- package/spec/components/parameters.yaml +8 -0
- package/spec/components/responses.yaml +15 -0
- package/spec/components/schemas/common.yaml +11 -0
- package/spec/components/schemas/connectors.yaml +5 -11
- package/spec/components/schemas/errors-api.yaml +66 -3
- package/spec/components/schemas/experiment-api-row.yaml +293 -0
- package/spec/components/schemas/experiments.yaml +54 -299
- package/spec/components/schemas/gate-templates.yaml +41 -2
- package/spec/components/schemas/gates.yaml +19 -0
- package/spec/components/schemas/keys.yaml +2 -1
- package/spec/components/schemas/metrics.yaml +17 -17
- package/spec/components/schemas/ops.yaml +105 -2
- package/spec/components/schemas/projects.yaml +119 -1
- package/spec/components/schemas/universes.yaml +83 -1
- package/spec/openapi.yaml +35 -2
- package/spec/paths/alert-rules.yaml +11 -2
- package/spec/paths/attributes.yaml +14 -3
- package/spec/paths/configs.yaml +24 -9
- package/spec/paths/connectors.yaml +42 -8
- package/spec/paths/errors.yaml +100 -6
- package/spec/paths/events.yaml +19 -4
- package/spec/paths/experiments.yaml +45 -11
- package/spec/paths/gate-templates.yaml +9 -5
- package/spec/paths/gates.yaml +21 -6
- package/spec/paths/i18n.yaml +18 -5
- package/spec/paths/keys.yaml +3 -1
- package/spec/paths/killswitches.yaml +24 -6
- package/spec/paths/metrics.yaml +15 -3
- package/spec/paths/ops.yaml +114 -3
- package/spec/paths/projects.yaml +3 -3
- package/spec/paths/universes.yaml +11 -2
- package/dist/chunk-EPLLHLZN.js.map +0 -1
- package/dist/chunk-SPH5HWCD.js.map +0 -1
package/spec/paths/configs.yaml
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
"
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
438
|
+
$ref: ../components/schemas/common.yaml#/ResourceId
|
|
423
439
|
responses:
|
|
424
440
|
"200":
|
|
425
|
-
description:
|
|
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
|
-
|
|
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":
|
package/spec/paths/errors.yaml
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
417
|
+
$ref: ../components/schemas/common.yaml#/ResourceId
|
|
324
418
|
requestBody:
|
|
325
419
|
required: true
|
|
326
420
|
content:
|
package/spec/paths/events.yaml
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
"
|
|
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
|
-
|
|
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
|
-
"
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
779
|
+
$ref: ../components/schemas/common.yaml#/ResourceId
|
|
746
780
|
responses:
|
|
747
|
-
"
|
|
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 `
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|