@shipeasy/openapi 2.1.0 → 2.2.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-643YSMLU.js} +1 -1
- package/dist/{chunk-EPLLHLZN.js.map → chunk-643YSMLU.js.map} +1 -1
- package/dist/{chunk-SPH5HWCD.js → chunk-MRW3DJ57.js} +147 -88
- package/dist/chunk-MRW3DJ57.js.map +1 -0
- package/dist/{client-pVkoo3Bf.d.ts → client-K0ShmsC7.d.ts} +196 -98
- package/dist/client.d.ts +1 -1
- package/dist/client.js +1 -1
- package/dist/custom.d.ts +23 -1
- package/dist/custom.js +8 -0
- package/dist/custom.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/schemas.d.ts +85 -32
- package/dist/schemas.js +17 -1
- package/openapi.json +533 -96
- package/openapi.yaml +390 -92
- package/package.json +1 -1
- package/spec/components/parameters.yaml +8 -0
- package/spec/components/responses.yaml +15 -0
- package/spec/components/schemas/common.yaml +5 -0
- package/spec/components/schemas/connectors.yaml +5 -11
- package/spec/components/schemas/gate-templates.yaml +41 -2
- package/spec/components/schemas/ops.yaml +4 -2
- package/spec/openapi.yaml +21 -2
- package/spec/paths/alert-rules.yaml +10 -2
- package/spec/paths/attributes.yaml +14 -3
- package/spec/paths/configs.yaml +23 -9
- package/spec/paths/connectors.yaml +42 -8
- package/spec/paths/errors.yaml +4 -4
- package/spec/paths/events.yaml +18 -4
- package/spec/paths/experiments.yaml +37 -11
- package/spec/paths/gate-templates.yaml +9 -5
- package/spec/paths/gates.yaml +20 -6
- package/spec/paths/i18n.yaml +18 -5
- package/spec/paths/keys.yaml +2 -1
- package/spec/paths/killswitches.yaml +23 -6
- package/spec/paths/metrics.yaml +14 -3
- package/spec/paths/ops.yaml +3 -3
- package/spec/paths/projects.yaml +1 -1
- package/spec/paths/universes.yaml +10 -2
- package/dist/chunk-SPH5HWCD.js.map +0 -1
package/openapi.yaml
CHANGED
|
@@ -21,9 +21,26 @@ security:
|
|
|
21
21
|
- bearerSdkKey: []
|
|
22
22
|
tags:
|
|
23
23
|
- name: Release
|
|
24
|
-
summary: Feature delivery
|
|
24
|
+
summary: Feature delivery — flags, kill switches, dynamic configs, A/B experiments, and the universes they bucket in.
|
|
25
25
|
kind: nav
|
|
26
|
-
description:
|
|
26
|
+
description: |-
|
|
27
|
+
Release: the feature-delivery surface. One roof over the five resources
|
|
28
|
+
that decide which code path a user gets — feature gates (flags), kill
|
|
29
|
+
switches, dynamic configs, A/B/n experiments, and the universes that bucket
|
|
30
|
+
them — each exposed as its own subcommand group.
|
|
31
|
+
|
|
32
|
+
**Groups.**
|
|
33
|
+
- `flags` — boolean feature gates: AND-combined targeting rules + a percentage rollout (basis points), evaluated on the SDK hot path.
|
|
34
|
+
- `killswitch` (`ks`) — per-env boolean overrides for incident response; no rules, no rollout, versioned per environment.
|
|
35
|
+
- `configs` — JSON-Schema-validated structured values with a draft → publish workflow, delivered per environment.
|
|
36
|
+
- `experiments` — randomised A/B/n assignment plus the analysis pipeline (t-test, sequential testing, SRM detection); `universes` hold the shared bucketing space and holdouts the experiments draw from.
|
|
37
|
+
|
|
38
|
+
**Delivery model.** Every write rebuilds the project's KV blob and purges
|
|
39
|
+
the CDN — SDKs poll at the plan interval and never touch the database on
|
|
40
|
+
the hot path. The destructive verb is `archive` (soft-delete), never
|
|
41
|
+
`delete`.
|
|
42
|
+
|
|
43
|
+
Run `shipeasy release <group> --help` for the full contract of each group.
|
|
27
44
|
- name: Flags
|
|
28
45
|
parent: Release
|
|
29
46
|
description: |-
|
|
@@ -229,6 +246,7 @@ paths:
|
|
|
229
246
|
- $ref: '#/components/parameters/ProjectId'
|
|
230
247
|
- $ref: '#/components/parameters/PaginationLimit'
|
|
231
248
|
- $ref: '#/components/parameters/PaginationCursor'
|
|
249
|
+
- $ref: '#/components/parameters/Q'
|
|
232
250
|
responses:
|
|
233
251
|
'200':
|
|
234
252
|
description: List feature gates
|
|
@@ -380,6 +398,23 @@ paths:
|
|
|
380
398
|
example:
|
|
381
399
|
id: gat_01j7w7m9q4hxbf6npe6s9zr3vc
|
|
382
400
|
name: checkout_v2
|
|
401
|
+
links:
|
|
402
|
+
UpdateGate:
|
|
403
|
+
operationId: updateGate
|
|
404
|
+
parameters:
|
|
405
|
+
id: $response.body#/id
|
|
406
|
+
EnableGate:
|
|
407
|
+
operationId: enableGate
|
|
408
|
+
parameters:
|
|
409
|
+
id: $response.body#/id
|
|
410
|
+
DisableGate:
|
|
411
|
+
operationId: disableGate
|
|
412
|
+
parameters:
|
|
413
|
+
id: $response.body#/id
|
|
414
|
+
DeleteGate:
|
|
415
|
+
operationId: deleteGate
|
|
416
|
+
parameters:
|
|
417
|
+
id: $response.body#/id
|
|
383
418
|
'400':
|
|
384
419
|
$ref: '#/components/responses/BadRequest'
|
|
385
420
|
'401':
|
|
@@ -428,7 +463,7 @@ paths:
|
|
|
428
463
|
required: true
|
|
429
464
|
description: Stable opaque gate id (`gat_…`) or the gate's `name`.
|
|
430
465
|
schema:
|
|
431
|
-
|
|
466
|
+
$ref: '#/components/schemas/ResourceId'
|
|
432
467
|
requestBody:
|
|
433
468
|
required: true
|
|
434
469
|
content:
|
|
@@ -534,7 +569,7 @@ paths:
|
|
|
534
569
|
required: true
|
|
535
570
|
description: Stable opaque gate id (`gat_…`) or the gate's `name`.
|
|
536
571
|
schema:
|
|
537
|
-
|
|
572
|
+
$ref: '#/components/schemas/ResourceId'
|
|
538
573
|
responses:
|
|
539
574
|
'200':
|
|
540
575
|
description: Delete a feature gate
|
|
@@ -583,9 +618,9 @@ paths:
|
|
|
583
618
|
required: true
|
|
584
619
|
description: Stable opaque gate id (`gat_…`) or the gate's `name`.
|
|
585
620
|
schema:
|
|
586
|
-
|
|
621
|
+
$ref: '#/components/schemas/ResourceId'
|
|
587
622
|
responses:
|
|
588
|
-
'
|
|
623
|
+
'200':
|
|
589
624
|
description: Enable a gate
|
|
590
625
|
content:
|
|
591
626
|
application/json:
|
|
@@ -633,9 +668,9 @@ paths:
|
|
|
633
668
|
required: true
|
|
634
669
|
description: Stable opaque gate id (`gat_…`) or the gate's `name`.
|
|
635
670
|
schema:
|
|
636
|
-
|
|
671
|
+
$ref: '#/components/schemas/ResourceId'
|
|
637
672
|
responses:
|
|
638
|
-
'
|
|
673
|
+
'200':
|
|
639
674
|
description: Disable a gate
|
|
640
675
|
content:
|
|
641
676
|
application/json:
|
|
@@ -680,6 +715,13 @@ paths:
|
|
|
680
715
|
- $ref: '#/components/parameters/ProjectId'
|
|
681
716
|
- $ref: '#/components/parameters/PaginationLimit'
|
|
682
717
|
- $ref: '#/components/parameters/PaginationCursor'
|
|
718
|
+
- name: status
|
|
719
|
+
in: query
|
|
720
|
+
required: false
|
|
721
|
+
description: Filter by lifecycle status. Pass `archived` to return the archive tab; any other value (or omitting it) returns the non-archived experiments.
|
|
722
|
+
schema:
|
|
723
|
+
type: string
|
|
724
|
+
- $ref: '#/components/parameters/Q'
|
|
683
725
|
responses:
|
|
684
726
|
'200':
|
|
685
727
|
description: List experiments
|
|
@@ -827,6 +869,31 @@ paths:
|
|
|
827
869
|
example:
|
|
828
870
|
id: exp_01j7wb12c3d4e5f6g7h8j9k0l1
|
|
829
871
|
name: checkout_button_color
|
|
872
|
+
links:
|
|
873
|
+
GetExperiment:
|
|
874
|
+
operationId: getExperiment
|
|
875
|
+
parameters:
|
|
876
|
+
id: $response.body#/id
|
|
877
|
+
UpdateExperiment:
|
|
878
|
+
operationId: updateExperiment
|
|
879
|
+
parameters:
|
|
880
|
+
id: $response.body#/id
|
|
881
|
+
SetExperimentMetrics:
|
|
882
|
+
operationId: setExperimentMetrics
|
|
883
|
+
parameters:
|
|
884
|
+
id: $response.body#/id
|
|
885
|
+
SetExperimentStatus:
|
|
886
|
+
operationId: setExperimentStatus
|
|
887
|
+
parameters:
|
|
888
|
+
id: $response.body#/id
|
|
889
|
+
ReanalyzeExperiment:
|
|
890
|
+
operationId: reanalyzeExperiment
|
|
891
|
+
parameters:
|
|
892
|
+
id: $response.body#/id
|
|
893
|
+
DeleteExperiment:
|
|
894
|
+
operationId: deleteExperiment
|
|
895
|
+
parameters:
|
|
896
|
+
id: $response.body#/id
|
|
830
897
|
'400':
|
|
831
898
|
$ref: '#/components/responses/BadRequest'
|
|
832
899
|
'401':
|
|
@@ -869,7 +936,7 @@ paths:
|
|
|
869
936
|
required: true
|
|
870
937
|
description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
|
|
871
938
|
schema:
|
|
872
|
-
|
|
939
|
+
$ref: '#/components/schemas/ResourceId'
|
|
873
940
|
responses:
|
|
874
941
|
'200':
|
|
875
942
|
description: Get one experiment
|
|
@@ -949,7 +1016,7 @@ paths:
|
|
|
949
1016
|
required: true
|
|
950
1017
|
description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
|
|
951
1018
|
schema:
|
|
952
|
-
|
|
1019
|
+
$ref: '#/components/schemas/ResourceId'
|
|
953
1020
|
requestBody:
|
|
954
1021
|
required: true
|
|
955
1022
|
content:
|
|
@@ -1034,7 +1101,7 @@ paths:
|
|
|
1034
1101
|
required: true
|
|
1035
1102
|
description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
|
|
1036
1103
|
schema:
|
|
1037
|
-
|
|
1104
|
+
$ref: '#/components/schemas/ResourceId'
|
|
1038
1105
|
responses:
|
|
1039
1106
|
'200':
|
|
1040
1107
|
description: Delete an experiment
|
|
@@ -1095,7 +1162,7 @@ paths:
|
|
|
1095
1162
|
required: true
|
|
1096
1163
|
description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
|
|
1097
1164
|
schema:
|
|
1098
|
-
|
|
1165
|
+
$ref: '#/components/schemas/ResourceId'
|
|
1099
1166
|
requestBody:
|
|
1100
1167
|
required: true
|
|
1101
1168
|
content:
|
|
@@ -1124,7 +1191,7 @@ paths:
|
|
|
1124
1191
|
value:
|
|
1125
1192
|
status: draft
|
|
1126
1193
|
responses:
|
|
1127
|
-
'
|
|
1194
|
+
'200':
|
|
1128
1195
|
description: Transition experiment status
|
|
1129
1196
|
content:
|
|
1130
1197
|
application/json:
|
|
@@ -1190,7 +1257,7 @@ paths:
|
|
|
1190
1257
|
required: true
|
|
1191
1258
|
description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
|
|
1192
1259
|
schema:
|
|
1193
|
-
|
|
1260
|
+
$ref: '#/components/schemas/ResourceId'
|
|
1194
1261
|
requestBody:
|
|
1195
1262
|
required: true
|
|
1196
1263
|
content:
|
|
@@ -1213,7 +1280,7 @@ paths:
|
|
|
1213
1280
|
value:
|
|
1214
1281
|
metrics: []
|
|
1215
1282
|
responses:
|
|
1216
|
-
'
|
|
1283
|
+
'200':
|
|
1217
1284
|
description: Attach metrics
|
|
1218
1285
|
content:
|
|
1219
1286
|
application/json:
|
|
@@ -1267,7 +1334,7 @@ paths:
|
|
|
1267
1334
|
required: true
|
|
1268
1335
|
description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
|
|
1269
1336
|
schema:
|
|
1270
|
-
|
|
1337
|
+
$ref: '#/components/schemas/ResourceId'
|
|
1271
1338
|
responses:
|
|
1272
1339
|
'200':
|
|
1273
1340
|
description: Get analysis results
|
|
@@ -1336,7 +1403,7 @@ paths:
|
|
|
1336
1403
|
required: true
|
|
1337
1404
|
description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
|
|
1338
1405
|
schema:
|
|
1339
|
-
|
|
1406
|
+
$ref: '#/components/schemas/ResourceId'
|
|
1340
1407
|
- name: metric
|
|
1341
1408
|
in: query
|
|
1342
1409
|
required: false
|
|
@@ -1410,9 +1477,9 @@ paths:
|
|
|
1410
1477
|
required: true
|
|
1411
1478
|
description: Stable opaque experiment id (`exp_…`) or the experiment's `name`.
|
|
1412
1479
|
schema:
|
|
1413
|
-
|
|
1480
|
+
$ref: '#/components/schemas/ResourceId'
|
|
1414
1481
|
responses:
|
|
1415
|
-
'
|
|
1482
|
+
'200':
|
|
1416
1483
|
description: Re-queue analysis
|
|
1417
1484
|
content:
|
|
1418
1485
|
application/json:
|
|
@@ -1457,6 +1524,7 @@ paths:
|
|
|
1457
1524
|
- $ref: '#/components/parameters/ProjectId'
|
|
1458
1525
|
- $ref: '#/components/parameters/PaginationLimit'
|
|
1459
1526
|
- $ref: '#/components/parameters/PaginationCursor'
|
|
1527
|
+
- $ref: '#/components/parameters/Q'
|
|
1460
1528
|
responses:
|
|
1461
1529
|
'200':
|
|
1462
1530
|
description: List dynamic configs
|
|
@@ -1605,6 +1673,23 @@ paths:
|
|
|
1605
1673
|
example:
|
|
1606
1674
|
id: cfg_01j7wae5h6j7k8l9m0n1p2q3r4
|
|
1607
1675
|
name: pricing.tiers
|
|
1676
|
+
links:
|
|
1677
|
+
GetConfig:
|
|
1678
|
+
operationId: getConfig
|
|
1679
|
+
parameters:
|
|
1680
|
+
id: $response.body#/id
|
|
1681
|
+
UpdateConfig:
|
|
1682
|
+
operationId: updateConfig
|
|
1683
|
+
parameters:
|
|
1684
|
+
id: $response.body#/id
|
|
1685
|
+
PublishConfigDraft:
|
|
1686
|
+
operationId: publishConfigDraft
|
|
1687
|
+
parameters:
|
|
1688
|
+
id: $response.body#/id
|
|
1689
|
+
DeleteConfig:
|
|
1690
|
+
operationId: deleteConfig
|
|
1691
|
+
parameters:
|
|
1692
|
+
id: $response.body#/id
|
|
1608
1693
|
'400':
|
|
1609
1694
|
$ref: '#/components/responses/BadRequest'
|
|
1610
1695
|
'401':
|
|
@@ -1644,7 +1729,7 @@ paths:
|
|
|
1644
1729
|
required: true
|
|
1645
1730
|
description: Stable opaque config id (`cfg_…`) or the config's `name`.
|
|
1646
1731
|
schema:
|
|
1647
|
-
|
|
1732
|
+
$ref: '#/components/schemas/ResourceId'
|
|
1648
1733
|
responses:
|
|
1649
1734
|
'200':
|
|
1650
1735
|
description: Get one config
|
|
@@ -1746,7 +1831,7 @@ paths:
|
|
|
1746
1831
|
required: true
|
|
1747
1832
|
description: Stable opaque config id (`cfg_…`) or the config's `name`.
|
|
1748
1833
|
schema:
|
|
1749
|
-
|
|
1834
|
+
$ref: '#/components/schemas/ResourceId'
|
|
1750
1835
|
requestBody:
|
|
1751
1836
|
required: true
|
|
1752
1837
|
content:
|
|
@@ -1822,7 +1907,7 @@ paths:
|
|
|
1822
1907
|
required: true
|
|
1823
1908
|
description: Stable opaque config id (`cfg_…`) or the config's `name`.
|
|
1824
1909
|
schema:
|
|
1825
|
-
|
|
1910
|
+
$ref: '#/components/schemas/ResourceId'
|
|
1826
1911
|
responses:
|
|
1827
1912
|
'200':
|
|
1828
1913
|
description: Delete a dynamic config
|
|
@@ -1872,7 +1957,7 @@ paths:
|
|
|
1872
1957
|
required: true
|
|
1873
1958
|
description: Stable opaque config id (`cfg_…`) or the config's `name`.
|
|
1874
1959
|
schema:
|
|
1875
|
-
|
|
1960
|
+
$ref: '#/components/schemas/ResourceId'
|
|
1876
1961
|
requestBody:
|
|
1877
1962
|
required: true
|
|
1878
1963
|
content:
|
|
@@ -1940,7 +2025,7 @@ paths:
|
|
|
1940
2025
|
required: true
|
|
1941
2026
|
description: Stable opaque config id (`cfg_…`) or the config's `name`.
|
|
1942
2027
|
schema:
|
|
1943
|
-
|
|
2028
|
+
$ref: '#/components/schemas/ResourceId'
|
|
1944
2029
|
requestBody:
|
|
1945
2030
|
required: true
|
|
1946
2031
|
content:
|
|
@@ -2002,7 +2087,7 @@ paths:
|
|
|
2002
2087
|
required: true
|
|
2003
2088
|
description: Stable opaque config id (`cfg_…`) or the config's `name`.
|
|
2004
2089
|
schema:
|
|
2005
|
-
|
|
2090
|
+
$ref: '#/components/schemas/ResourceId'
|
|
2006
2091
|
requestBody:
|
|
2007
2092
|
required: true
|
|
2008
2093
|
content:
|
|
@@ -2021,7 +2106,7 @@ paths:
|
|
|
2021
2106
|
value:
|
|
2022
2107
|
env: prod
|
|
2023
2108
|
responses:
|
|
2024
|
-
'
|
|
2109
|
+
'200':
|
|
2025
2110
|
description: Publish a draft
|
|
2026
2111
|
content:
|
|
2027
2112
|
application/json:
|
|
@@ -2071,7 +2156,7 @@ paths:
|
|
|
2071
2156
|
required: true
|
|
2072
2157
|
description: Stable opaque config id (`cfg_…`) or the config's `name`.
|
|
2073
2158
|
schema:
|
|
2074
|
-
|
|
2159
|
+
$ref: '#/components/schemas/ResourceId'
|
|
2075
2160
|
- name: limit
|
|
2076
2161
|
in: query
|
|
2077
2162
|
required: false
|
|
@@ -2135,7 +2220,7 @@ paths:
|
|
|
2135
2220
|
required: true
|
|
2136
2221
|
description: Stable opaque config id (`cfg_…`) or the config's `name`.
|
|
2137
2222
|
schema:
|
|
2138
|
-
|
|
2223
|
+
$ref: '#/components/schemas/ResourceId'
|
|
2139
2224
|
requestBody:
|
|
2140
2225
|
required: true
|
|
2141
2226
|
content:
|
|
@@ -2201,6 +2286,7 @@ paths:
|
|
|
2201
2286
|
- $ref: '#/components/parameters/ProjectId'
|
|
2202
2287
|
- $ref: '#/components/parameters/PaginationLimit'
|
|
2203
2288
|
- $ref: '#/components/parameters/PaginationCursor'
|
|
2289
|
+
- $ref: '#/components/parameters/Q'
|
|
2204
2290
|
responses:
|
|
2205
2291
|
'200':
|
|
2206
2292
|
description: List killswitches
|
|
@@ -2303,6 +2389,27 @@ paths:
|
|
|
2303
2389
|
example:
|
|
2304
2390
|
id: ksw_01j7w9d8h2k4m6n8p0q2r4s6t8
|
|
2305
2391
|
name: payments.checkout
|
|
2392
|
+
links:
|
|
2393
|
+
GetKillswitch:
|
|
2394
|
+
operationId: getKillswitch
|
|
2395
|
+
parameters:
|
|
2396
|
+
id: $response.body#/id
|
|
2397
|
+
UpdateKillswitch:
|
|
2398
|
+
operationId: updateKillswitch
|
|
2399
|
+
parameters:
|
|
2400
|
+
id: $response.body#/id
|
|
2401
|
+
SetKillswitchSwitch:
|
|
2402
|
+
operationId: setKillswitchSwitch
|
|
2403
|
+
parameters:
|
|
2404
|
+
id: $response.body#/id
|
|
2405
|
+
SetKillswitchValue:
|
|
2406
|
+
operationId: setKillswitchValue
|
|
2407
|
+
parameters:
|
|
2408
|
+
id: $response.body#/id
|
|
2409
|
+
DeleteKillswitch:
|
|
2410
|
+
operationId: deleteKillswitch
|
|
2411
|
+
parameters:
|
|
2412
|
+
id: $response.body#/id
|
|
2306
2413
|
'400':
|
|
2307
2414
|
$ref: '#/components/responses/BadRequest'
|
|
2308
2415
|
'401':
|
|
@@ -2342,7 +2449,7 @@ paths:
|
|
|
2342
2449
|
required: true
|
|
2343
2450
|
description: Stable opaque killswitch id (`ksw_…`) or the killswitch's `name`.
|
|
2344
2451
|
schema:
|
|
2345
|
-
|
|
2452
|
+
$ref: '#/components/schemas/ResourceId'
|
|
2346
2453
|
responses:
|
|
2347
2454
|
'200':
|
|
2348
2455
|
description: Get one killswitch
|
|
@@ -2414,7 +2521,7 @@ paths:
|
|
|
2414
2521
|
required: true
|
|
2415
2522
|
description: Stable opaque killswitch id (`ksw_…`) or the killswitch's `name`.
|
|
2416
2523
|
schema:
|
|
2417
|
-
|
|
2524
|
+
$ref: '#/components/schemas/ResourceId'
|
|
2418
2525
|
requestBody:
|
|
2419
2526
|
required: true
|
|
2420
2527
|
content:
|
|
@@ -2491,7 +2598,7 @@ paths:
|
|
|
2491
2598
|
required: true
|
|
2492
2599
|
description: Stable opaque killswitch id (`ksw_…`) or the killswitch's `name`.
|
|
2493
2600
|
schema:
|
|
2494
|
-
|
|
2601
|
+
$ref: '#/components/schemas/ResourceId'
|
|
2495
2602
|
responses:
|
|
2496
2603
|
'200':
|
|
2497
2604
|
description: Delete a killswitch
|
|
@@ -2544,7 +2651,7 @@ paths:
|
|
|
2544
2651
|
required: true
|
|
2545
2652
|
description: Stable opaque killswitch id (`ksw_…`) or the killswitch's `name`.
|
|
2546
2653
|
schema:
|
|
2547
|
-
|
|
2654
|
+
$ref: '#/components/schemas/ResourceId'
|
|
2548
2655
|
requestBody:
|
|
2549
2656
|
required: true
|
|
2550
2657
|
content:
|
|
@@ -2618,7 +2725,7 @@ paths:
|
|
|
2618
2725
|
required: true
|
|
2619
2726
|
description: Stable opaque killswitch id (`ksw_…`) or the killswitch's `name`.
|
|
2620
2727
|
schema:
|
|
2621
|
-
|
|
2728
|
+
$ref: '#/components/schemas/ResourceId'
|
|
2622
2729
|
requestBody:
|
|
2623
2730
|
required: true
|
|
2624
2731
|
content:
|
|
@@ -2687,7 +2794,7 @@ paths:
|
|
|
2687
2794
|
required: true
|
|
2688
2795
|
description: Stable opaque killswitch id (`ksw_…`) or the killswitch's `name`.
|
|
2689
2796
|
schema:
|
|
2690
|
-
|
|
2797
|
+
$ref: '#/components/schemas/ResourceId'
|
|
2691
2798
|
requestBody:
|
|
2692
2799
|
required: true
|
|
2693
2800
|
content:
|
|
@@ -2758,6 +2865,7 @@ paths:
|
|
|
2758
2865
|
- $ref: '#/components/parameters/ProjectId'
|
|
2759
2866
|
- $ref: '#/components/parameters/PaginationLimit'
|
|
2760
2867
|
- $ref: '#/components/parameters/PaginationCursor'
|
|
2868
|
+
- $ref: '#/components/parameters/Q'
|
|
2761
2869
|
responses:
|
|
2762
2870
|
'200':
|
|
2763
2871
|
description: List universes
|
|
@@ -2846,6 +2954,15 @@ paths:
|
|
|
2846
2954
|
example:
|
|
2847
2955
|
id: uni_01j7w8a1b2c3d4e5f6g7h8i9j0
|
|
2848
2956
|
name: primary_users
|
|
2957
|
+
links:
|
|
2958
|
+
UpdateUniverse:
|
|
2959
|
+
operationId: updateUniverse
|
|
2960
|
+
parameters:
|
|
2961
|
+
id: $response.body#/id
|
|
2962
|
+
DeleteUniverse:
|
|
2963
|
+
operationId: deleteUniverse
|
|
2964
|
+
parameters:
|
|
2965
|
+
id: $response.body#/id
|
|
2849
2966
|
'400':
|
|
2850
2967
|
$ref: '#/components/responses/BadRequest'
|
|
2851
2968
|
'401':
|
|
@@ -2891,7 +3008,7 @@ paths:
|
|
|
2891
3008
|
required: true
|
|
2892
3009
|
description: Stable opaque universe id (`uni_…`) or the universe's `name`.
|
|
2893
3010
|
schema:
|
|
2894
|
-
|
|
3011
|
+
$ref: '#/components/schemas/ResourceId'
|
|
2895
3012
|
requestBody:
|
|
2896
3013
|
required: true
|
|
2897
3014
|
content:
|
|
@@ -2959,7 +3076,7 @@ paths:
|
|
|
2959
3076
|
required: true
|
|
2960
3077
|
description: Stable opaque universe id (`uni_…`) or the universe's `name`.
|
|
2961
3078
|
schema:
|
|
2962
|
-
|
|
3079
|
+
$ref: '#/components/schemas/ResourceId'
|
|
2963
3080
|
responses:
|
|
2964
3081
|
'200':
|
|
2965
3082
|
description: Delete a universe
|
|
@@ -2998,17 +3115,19 @@ paths:
|
|
|
2998
3115
|
description: |-
|
|
2999
3116
|
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.
|
|
3000
3117
|
|
|
3001
|
-
**Turn "launch X in country Y" into a gated flag:** list templates (optionally with `
|
|
3118
|
+
**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`.
|
|
3002
3119
|
|
|
3003
3120
|
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).
|
|
3004
3121
|
tags:
|
|
3005
3122
|
- Templates
|
|
3006
3123
|
parameters:
|
|
3007
3124
|
- $ref: '#/components/parameters/ProjectId'
|
|
3125
|
+
- $ref: '#/components/parameters/Q'
|
|
3008
3126
|
- name: query
|
|
3009
3127
|
in: query
|
|
3010
3128
|
required: false
|
|
3011
|
-
|
|
3129
|
+
deprecated: true
|
|
3130
|
+
description: Deprecated alias for `q`, kept working for one release. Prefer `q`.
|
|
3012
3131
|
schema:
|
|
3013
3132
|
type: string
|
|
3014
3133
|
responses:
|
|
@@ -3120,7 +3239,7 @@ paths:
|
|
|
3120
3239
|
required: true
|
|
3121
3240
|
description: Built-in slug (`country`) or customer template id (`gtpl_…`).
|
|
3122
3241
|
schema:
|
|
3123
|
-
|
|
3242
|
+
$ref: '#/components/schemas/ResourceId'
|
|
3124
3243
|
responses:
|
|
3125
3244
|
'200':
|
|
3126
3245
|
description: Get one gate template
|
|
@@ -3158,7 +3277,7 @@ paths:
|
|
|
3158
3277
|
required: true
|
|
3159
3278
|
description: Customer template id (`gtpl_…`) or its `name`.
|
|
3160
3279
|
schema:
|
|
3161
|
-
|
|
3280
|
+
$ref: '#/components/schemas/ResourceId'
|
|
3162
3281
|
requestBody:
|
|
3163
3282
|
required: true
|
|
3164
3283
|
content:
|
|
@@ -3221,7 +3340,7 @@ paths:
|
|
|
3221
3340
|
required: true
|
|
3222
3341
|
description: Customer template id (`gtpl_…`) or its `name`.
|
|
3223
3342
|
schema:
|
|
3224
|
-
|
|
3343
|
+
$ref: '#/components/schemas/ResourceId'
|
|
3225
3344
|
responses:
|
|
3226
3345
|
'200':
|
|
3227
3346
|
description: Delete a gate template
|
|
@@ -3241,6 +3360,8 @@ paths:
|
|
|
3241
3360
|
$ref: '#/components/responses/NotFound'
|
|
3242
3361
|
'409':
|
|
3243
3362
|
$ref: '#/components/responses/Conflict'
|
|
3363
|
+
'422':
|
|
3364
|
+
$ref: '#/components/responses/UnprocessableEntity'
|
|
3244
3365
|
x-error-codes:
|
|
3245
3366
|
- BAD_REQUEST
|
|
3246
3367
|
- UNAUTHORIZED
|
|
@@ -3263,6 +3384,7 @@ paths:
|
|
|
3263
3384
|
- Attributes
|
|
3264
3385
|
parameters:
|
|
3265
3386
|
- $ref: '#/components/parameters/ProjectId'
|
|
3387
|
+
- $ref: '#/components/parameters/Q'
|
|
3266
3388
|
responses:
|
|
3267
3389
|
'200':
|
|
3268
3390
|
description: List targeting attributes
|
|
@@ -3329,6 +3451,19 @@ paths:
|
|
|
3329
3451
|
example:
|
|
3330
3452
|
id: attr_01j7w8a1b2c3
|
|
3331
3453
|
name: plan
|
|
3454
|
+
links:
|
|
3455
|
+
GetAttribute:
|
|
3456
|
+
operationId: getAttribute
|
|
3457
|
+
parameters:
|
|
3458
|
+
id: $response.body#/id
|
|
3459
|
+
UpdateAttribute:
|
|
3460
|
+
operationId: updateAttribute
|
|
3461
|
+
parameters:
|
|
3462
|
+
id: $response.body#/id
|
|
3463
|
+
DeleteAttribute:
|
|
3464
|
+
operationId: deleteAttribute
|
|
3465
|
+
parameters:
|
|
3466
|
+
id: $response.body#/id
|
|
3332
3467
|
'400':
|
|
3333
3468
|
$ref: '#/components/responses/BadRequest'
|
|
3334
3469
|
'401':
|
|
@@ -3368,7 +3503,7 @@ paths:
|
|
|
3368
3503
|
required: true
|
|
3369
3504
|
description: The attribute id.
|
|
3370
3505
|
schema:
|
|
3371
|
-
|
|
3506
|
+
$ref: '#/components/schemas/ResourceId'
|
|
3372
3507
|
responses:
|
|
3373
3508
|
'200':
|
|
3374
3509
|
description: Get a targeting attribute
|
|
@@ -3422,7 +3557,7 @@ paths:
|
|
|
3422
3557
|
required: true
|
|
3423
3558
|
description: The attribute id.
|
|
3424
3559
|
schema:
|
|
3425
|
-
|
|
3560
|
+
$ref: '#/components/schemas/ResourceId'
|
|
3426
3561
|
requestBody:
|
|
3427
3562
|
required: true
|
|
3428
3563
|
content:
|
|
@@ -3481,7 +3616,7 @@ paths:
|
|
|
3481
3616
|
required: true
|
|
3482
3617
|
description: The attribute id.
|
|
3483
3618
|
schema:
|
|
3484
|
-
|
|
3619
|
+
$ref: '#/components/schemas/ResourceId'
|
|
3485
3620
|
responses:
|
|
3486
3621
|
'200':
|
|
3487
3622
|
description: Archive a targeting attribute
|
|
@@ -3524,6 +3659,7 @@ paths:
|
|
|
3524
3659
|
- Metrics
|
|
3525
3660
|
parameters:
|
|
3526
3661
|
- $ref: '#/components/parameters/ProjectId'
|
|
3662
|
+
- $ref: '#/components/parameters/Q'
|
|
3527
3663
|
responses:
|
|
3528
3664
|
'200':
|
|
3529
3665
|
description: List metrics
|
|
@@ -3625,6 +3761,19 @@ paths:
|
|
|
3625
3761
|
example:
|
|
3626
3762
|
id: met_01j7w8a1b2c3d4e5f6g7h8i9j0
|
|
3627
3763
|
name: checkouts
|
|
3764
|
+
links:
|
|
3765
|
+
GetMetric:
|
|
3766
|
+
operationId: getMetric
|
|
3767
|
+
parameters:
|
|
3768
|
+
id: $response.body#/id
|
|
3769
|
+
UpdateMetric:
|
|
3770
|
+
operationId: updateMetric
|
|
3771
|
+
parameters:
|
|
3772
|
+
id: $response.body#/id
|
|
3773
|
+
DeleteMetric:
|
|
3774
|
+
operationId: deleteMetric
|
|
3775
|
+
parameters:
|
|
3776
|
+
id: $response.body#/id
|
|
3628
3777
|
'400':
|
|
3629
3778
|
$ref: '#/components/responses/BadRequest'
|
|
3630
3779
|
'401':
|
|
@@ -3666,7 +3815,7 @@ paths:
|
|
|
3666
3815
|
required: true
|
|
3667
3816
|
description: Stable opaque metric id (`met_…`) or the metric's `name`.
|
|
3668
3817
|
schema:
|
|
3669
|
-
|
|
3818
|
+
$ref: '#/components/schemas/ResourceId'
|
|
3670
3819
|
responses:
|
|
3671
3820
|
'200':
|
|
3672
3821
|
description: Get a metric
|
|
@@ -3725,7 +3874,7 @@ paths:
|
|
|
3725
3874
|
required: true
|
|
3726
3875
|
description: Stable opaque metric id (`met_…`) or the metric's `name`.
|
|
3727
3876
|
schema:
|
|
3728
|
-
|
|
3877
|
+
$ref: '#/components/schemas/ResourceId'
|
|
3729
3878
|
requestBody:
|
|
3730
3879
|
required: true
|
|
3731
3880
|
content:
|
|
@@ -3784,7 +3933,7 @@ paths:
|
|
|
3784
3933
|
required: true
|
|
3785
3934
|
description: Stable opaque metric id (`met_…`) or the metric's `name`.
|
|
3786
3935
|
schema:
|
|
3787
|
-
|
|
3936
|
+
$ref: '#/components/schemas/ResourceId'
|
|
3788
3937
|
responses:
|
|
3789
3938
|
'200':
|
|
3790
3939
|
description: Archive a metric
|
|
@@ -3828,6 +3977,7 @@ paths:
|
|
|
3828
3977
|
- Events
|
|
3829
3978
|
parameters:
|
|
3830
3979
|
- $ref: '#/components/parameters/ProjectId'
|
|
3980
|
+
- $ref: '#/components/parameters/Q'
|
|
3831
3981
|
responses:
|
|
3832
3982
|
'200':
|
|
3833
3983
|
description: List events
|
|
@@ -3913,6 +4063,23 @@ paths:
|
|
|
3913
4063
|
example:
|
|
3914
4064
|
id: evt_01j7w8a1b2c3d4e5f6g7h8i9j0
|
|
3915
4065
|
name: checkout_completed
|
|
4066
|
+
links:
|
|
4067
|
+
GetEvent:
|
|
4068
|
+
operationId: getEvent
|
|
4069
|
+
parameters:
|
|
4070
|
+
id: $response.body#/id
|
|
4071
|
+
UpdateEvent:
|
|
4072
|
+
operationId: updateEvent
|
|
4073
|
+
parameters:
|
|
4074
|
+
id: $response.body#/id
|
|
4075
|
+
ApproveEvent:
|
|
4076
|
+
operationId: approveEvent
|
|
4077
|
+
parameters:
|
|
4078
|
+
id: $response.body#/id
|
|
4079
|
+
DeleteEvent:
|
|
4080
|
+
operationId: deleteEvent
|
|
4081
|
+
parameters:
|
|
4082
|
+
id: $response.body#/id
|
|
3916
4083
|
'400':
|
|
3917
4084
|
$ref: '#/components/responses/BadRequest'
|
|
3918
4085
|
'401':
|
|
@@ -3952,7 +4119,7 @@ paths:
|
|
|
3952
4119
|
required: true
|
|
3953
4120
|
description: Stable opaque event id (`evt_…`) or the event's `name`.
|
|
3954
4121
|
schema:
|
|
3955
|
-
|
|
4122
|
+
$ref: '#/components/schemas/ResourceId'
|
|
3956
4123
|
responses:
|
|
3957
4124
|
'200':
|
|
3958
4125
|
description: Get an event
|
|
@@ -4011,7 +4178,7 @@ paths:
|
|
|
4011
4178
|
required: true
|
|
4012
4179
|
description: Stable opaque event id (`evt_…`) or the event's `name`.
|
|
4013
4180
|
schema:
|
|
4014
|
-
|
|
4181
|
+
$ref: '#/components/schemas/ResourceId'
|
|
4015
4182
|
requestBody:
|
|
4016
4183
|
required: true
|
|
4017
4184
|
content:
|
|
@@ -4079,7 +4246,7 @@ paths:
|
|
|
4079
4246
|
required: true
|
|
4080
4247
|
description: Stable opaque event id (`evt_…`) or the event's `name`.
|
|
4081
4248
|
schema:
|
|
4082
|
-
|
|
4249
|
+
$ref: '#/components/schemas/ResourceId'
|
|
4083
4250
|
responses:
|
|
4084
4251
|
'200':
|
|
4085
4252
|
description: Archive an event
|
|
@@ -4130,7 +4297,7 @@ paths:
|
|
|
4130
4297
|
required: true
|
|
4131
4298
|
description: Stable opaque event id (`evt_…`) or the event's `name`.
|
|
4132
4299
|
schema:
|
|
4133
|
-
|
|
4300
|
+
$ref: '#/components/schemas/ResourceId'
|
|
4134
4301
|
requestBody:
|
|
4135
4302
|
required: true
|
|
4136
4303
|
content:
|
|
@@ -4357,7 +4524,7 @@ paths:
|
|
|
4357
4524
|
required: true
|
|
4358
4525
|
description: Per-project item number (e.g. `7`) or the full ops item id.
|
|
4359
4526
|
schema:
|
|
4360
|
-
|
|
4527
|
+
$ref: '#/components/schemas/ResourceId'
|
|
4361
4528
|
responses:
|
|
4362
4529
|
'200':
|
|
4363
4530
|
description: Get one queue item
|
|
@@ -4416,7 +4583,7 @@ paths:
|
|
|
4416
4583
|
required: true
|
|
4417
4584
|
description: Per-project item number (e.g. `7`) or the full ops item id.
|
|
4418
4585
|
schema:
|
|
4419
|
-
|
|
4586
|
+
$ref: '#/components/schemas/ResourceId'
|
|
4420
4587
|
requestBody:
|
|
4421
4588
|
required: true
|
|
4422
4589
|
content:
|
|
@@ -4484,7 +4651,7 @@ paths:
|
|
|
4484
4651
|
required: true
|
|
4485
4652
|
description: Per-project item number (e.g. `7`) or the full ops item id.
|
|
4486
4653
|
schema:
|
|
4487
|
-
|
|
4654
|
+
$ref: '#/components/schemas/ResourceId'
|
|
4488
4655
|
requestBody:
|
|
4489
4656
|
required: true
|
|
4490
4657
|
content:
|
|
@@ -4637,6 +4804,7 @@ paths:
|
|
|
4637
4804
|
- Alerts
|
|
4638
4805
|
parameters:
|
|
4639
4806
|
- $ref: '#/components/parameters/ProjectId'
|
|
4807
|
+
- $ref: '#/components/parameters/Q'
|
|
4640
4808
|
responses:
|
|
4641
4809
|
'200':
|
|
4642
4810
|
description: List alert rules
|
|
@@ -4730,6 +4898,15 @@ paths:
|
|
|
4730
4898
|
$ref: '#/components/schemas/CreateAlertRuleResponse'
|
|
4731
4899
|
example:
|
|
4732
4900
|
id: ar_01j7w8a1b2c3d4e5f6g7h8i9j0
|
|
4901
|
+
links:
|
|
4902
|
+
UpdateAlertRule:
|
|
4903
|
+
operationId: updateAlertRule
|
|
4904
|
+
parameters:
|
|
4905
|
+
id: $response.body#/id
|
|
4906
|
+
DeleteAlertRule:
|
|
4907
|
+
operationId: deleteAlertRule
|
|
4908
|
+
parameters:
|
|
4909
|
+
id: $response.body#/id
|
|
4733
4910
|
'400':
|
|
4734
4911
|
$ref: '#/components/responses/BadRequest'
|
|
4735
4912
|
'401':
|
|
@@ -4773,7 +4950,7 @@ paths:
|
|
|
4773
4950
|
required: true
|
|
4774
4951
|
description: Stable opaque alert-rule id (`ar_…`) or the rule's `name`.
|
|
4775
4952
|
schema:
|
|
4776
|
-
|
|
4953
|
+
$ref: '#/components/schemas/ResourceId'
|
|
4777
4954
|
requestBody:
|
|
4778
4955
|
required: true
|
|
4779
4956
|
content:
|
|
@@ -4844,7 +5021,7 @@ paths:
|
|
|
4844
5021
|
required: true
|
|
4845
5022
|
description: Stable opaque alert-rule id (`ar_…`) or the rule's `name`.
|
|
4846
5023
|
schema:
|
|
4847
|
-
|
|
5024
|
+
$ref: '#/components/schemas/ResourceId'
|
|
4848
5025
|
responses:
|
|
4849
5026
|
'200':
|
|
4850
5027
|
description: Delete an alert rule
|
|
@@ -5018,7 +5195,7 @@ paths:
|
|
|
5018
5195
|
required: true
|
|
5019
5196
|
description: Stable opaque project id. Must match the caller's own project.
|
|
5020
5197
|
schema:
|
|
5021
|
-
|
|
5198
|
+
$ref: '#/components/schemas/ResourceId'
|
|
5022
5199
|
requestBody:
|
|
5023
5200
|
required: true
|
|
5024
5201
|
content:
|
|
@@ -5157,6 +5334,11 @@ paths:
|
|
|
5157
5334
|
example:
|
|
5158
5335
|
id: i18n_01j7w8a1b2c4
|
|
5159
5336
|
name: fr:prod
|
|
5337
|
+
links:
|
|
5338
|
+
PublishI18nProfile:
|
|
5339
|
+
operationId: publishI18nProfile
|
|
5340
|
+
parameters:
|
|
5341
|
+
profileId: $response.body#/id
|
|
5160
5342
|
'400':
|
|
5161
5343
|
$ref: '#/components/responses/BadRequest'
|
|
5162
5344
|
'401':
|
|
@@ -5204,9 +5386,10 @@ paths:
|
|
|
5204
5386
|
- name: q
|
|
5205
5387
|
in: query
|
|
5206
5388
|
required: false
|
|
5207
|
-
description: Free-text search — matches keys whose name OR
|
|
5389
|
+
description: Free-text search — matches keys whose name, value, OR description contains this substring (case-insensitive). Use it to find the key behind a piece of on-screen copy.
|
|
5208
5390
|
schema:
|
|
5209
5391
|
type: string
|
|
5392
|
+
maxLength: 100
|
|
5210
5393
|
- name: limit
|
|
5211
5394
|
in: query
|
|
5212
5395
|
required: false
|
|
@@ -5215,6 +5398,14 @@ paths:
|
|
|
5215
5398
|
type: integer
|
|
5216
5399
|
minimum: 1
|
|
5217
5400
|
maximum: 500
|
|
5401
|
+
- name: offset
|
|
5402
|
+
in: query
|
|
5403
|
+
required: false
|
|
5404
|
+
description: Number of keys to skip before returning `limit` rows (offset pagination).
|
|
5405
|
+
schema:
|
|
5406
|
+
type: integer
|
|
5407
|
+
minimum: 0
|
|
5408
|
+
default: 0
|
|
5218
5409
|
responses:
|
|
5219
5410
|
'200':
|
|
5220
5411
|
description: List i18n keys
|
|
@@ -5319,7 +5510,7 @@ paths:
|
|
|
5319
5510
|
required: true
|
|
5320
5511
|
description: The key's id.
|
|
5321
5512
|
schema:
|
|
5322
|
-
|
|
5513
|
+
$ref: '#/components/schemas/ResourceId'
|
|
5323
5514
|
requestBody:
|
|
5324
5515
|
required: true
|
|
5325
5516
|
content:
|
|
@@ -5467,7 +5658,7 @@ paths:
|
|
|
5467
5658
|
required: true
|
|
5468
5659
|
description: The draft id to update.
|
|
5469
5660
|
schema:
|
|
5470
|
-
|
|
5661
|
+
$ref: '#/components/schemas/ResourceId'
|
|
5471
5662
|
requestBody:
|
|
5472
5663
|
required: true
|
|
5473
5664
|
content:
|
|
@@ -5525,7 +5716,7 @@ paths:
|
|
|
5525
5716
|
required: true
|
|
5526
5717
|
description: The profile id to publish.
|
|
5527
5718
|
schema:
|
|
5528
|
-
|
|
5719
|
+
$ref: '#/components/schemas/ResourceId'
|
|
5529
5720
|
requestBody:
|
|
5530
5721
|
required: true
|
|
5531
5722
|
content:
|
|
@@ -5535,7 +5726,7 @@ paths:
|
|
|
5535
5726
|
example:
|
|
5536
5727
|
chunk: default
|
|
5537
5728
|
responses:
|
|
5538
|
-
'
|
|
5729
|
+
'200':
|
|
5539
5730
|
description: Publish a profile chunk
|
|
5540
5731
|
content:
|
|
5541
5732
|
application/json:
|
|
@@ -5736,7 +5927,7 @@ paths:
|
|
|
5736
5927
|
required: true
|
|
5737
5928
|
description: Stable opaque error id (`err_…`).
|
|
5738
5929
|
schema:
|
|
5739
|
-
|
|
5930
|
+
$ref: '#/components/schemas/ResourceId'
|
|
5740
5931
|
responses:
|
|
5741
5932
|
'200':
|
|
5742
5933
|
description: Get a tracked error
|
|
@@ -5811,7 +6002,7 @@ paths:
|
|
|
5811
6002
|
required: true
|
|
5812
6003
|
description: Stable opaque error id (`err_…`).
|
|
5813
6004
|
schema:
|
|
5814
|
-
|
|
6005
|
+
$ref: '#/components/schemas/ResourceId'
|
|
5815
6006
|
requestBody:
|
|
5816
6007
|
required: true
|
|
5817
6008
|
content:
|
|
@@ -5900,7 +6091,7 @@ paths:
|
|
|
5900
6091
|
required: true
|
|
5901
6092
|
description: Stable opaque error id (`err_…`).
|
|
5902
6093
|
schema:
|
|
5903
|
-
|
|
6094
|
+
$ref: '#/components/schemas/ResourceId'
|
|
5904
6095
|
responses:
|
|
5905
6096
|
'201':
|
|
5906
6097
|
description: File a feedback ticket for an error
|
|
@@ -5948,7 +6139,7 @@ paths:
|
|
|
5948
6139
|
required: true
|
|
5949
6140
|
description: Stable opaque error id (`err_…`).
|
|
5950
6141
|
schema:
|
|
5951
|
-
|
|
6142
|
+
$ref: '#/components/schemas/ResourceId'
|
|
5952
6143
|
requestBody:
|
|
5953
6144
|
required: true
|
|
5954
6145
|
content:
|
|
@@ -6022,6 +6213,7 @@ paths:
|
|
|
6022
6213
|
- Connectors
|
|
6023
6214
|
parameters:
|
|
6024
6215
|
- $ref: '#/components/parameters/ProjectId'
|
|
6216
|
+
- $ref: '#/components/parameters/Q'
|
|
6025
6217
|
responses:
|
|
6026
6218
|
'200':
|
|
6027
6219
|
description: List connectors
|
|
@@ -6140,6 +6332,23 @@ paths:
|
|
|
6140
6332
|
$ref: '#/components/schemas/CreateConnectorResponse'
|
|
6141
6333
|
example:
|
|
6142
6334
|
id: 9b0e7c2a-1f3d-4a8e-bf21-0c6a2e5d7f10
|
|
6335
|
+
links:
|
|
6336
|
+
GetConnector:
|
|
6337
|
+
operationId: getConnector
|
|
6338
|
+
parameters:
|
|
6339
|
+
id: $response.body#/id
|
|
6340
|
+
UpdateConnector:
|
|
6341
|
+
operationId: updateConnector
|
|
6342
|
+
parameters:
|
|
6343
|
+
id: $response.body#/id
|
|
6344
|
+
TestConnector:
|
|
6345
|
+
operationId: testConnector
|
|
6346
|
+
parameters:
|
|
6347
|
+
id: $response.body#/id
|
|
6348
|
+
DeleteConnector:
|
|
6349
|
+
operationId: deleteConnector
|
|
6350
|
+
parameters:
|
|
6351
|
+
id: $response.body#/id
|
|
6143
6352
|
'400':
|
|
6144
6353
|
$ref: '#/components/responses/BadRequest'
|
|
6145
6354
|
'401':
|
|
@@ -6175,7 +6384,7 @@ paths:
|
|
|
6175
6384
|
required: true
|
|
6176
6385
|
description: Stable opaque connector id.
|
|
6177
6386
|
schema:
|
|
6178
|
-
|
|
6387
|
+
$ref: '#/components/schemas/ResourceId'
|
|
6179
6388
|
responses:
|
|
6180
6389
|
'200':
|
|
6181
6390
|
description: Get a connector
|
|
@@ -6243,7 +6452,7 @@ paths:
|
|
|
6243
6452
|
required: true
|
|
6244
6453
|
description: Stable opaque connector id.
|
|
6245
6454
|
schema:
|
|
6246
|
-
|
|
6455
|
+
$ref: '#/components/schemas/ResourceId'
|
|
6247
6456
|
requestBody:
|
|
6248
6457
|
required: true
|
|
6249
6458
|
content:
|
|
@@ -6316,7 +6525,7 @@ paths:
|
|
|
6316
6525
|
required: true
|
|
6317
6526
|
description: Stable opaque connector id.
|
|
6318
6527
|
schema:
|
|
6319
|
-
|
|
6528
|
+
$ref: '#/components/schemas/ResourceId'
|
|
6320
6529
|
responses:
|
|
6321
6530
|
'200':
|
|
6322
6531
|
description: Delete a connector
|
|
@@ -6365,7 +6574,7 @@ paths:
|
|
|
6365
6574
|
required: true
|
|
6366
6575
|
description: Stable opaque connector id.
|
|
6367
6576
|
schema:
|
|
6368
|
-
|
|
6577
|
+
$ref: '#/components/schemas/ResourceId'
|
|
6369
6578
|
requestBody:
|
|
6370
6579
|
required: false
|
|
6371
6580
|
content:
|
|
@@ -6383,7 +6592,7 @@ paths:
|
|
|
6383
6592
|
text: Triage only the P0 bugs reported in the last 24h.
|
|
6384
6593
|
responses:
|
|
6385
6594
|
'200':
|
|
6386
|
-
description:
|
|
6595
|
+
description: The trigger run was successfully kicked off.
|
|
6387
6596
|
content:
|
|
6388
6597
|
application/json:
|
|
6389
6598
|
schema:
|
|
@@ -6402,6 +6611,8 @@ paths:
|
|
|
6402
6611
|
$ref: '#/components/responses/Conflict'
|
|
6403
6612
|
'422':
|
|
6404
6613
|
$ref: '#/components/responses/UnprocessableEntity'
|
|
6614
|
+
'502':
|
|
6615
|
+
$ref: '#/components/responses/BadGateway'
|
|
6405
6616
|
x-error-codes:
|
|
6406
6617
|
- UNAUTHORIZED
|
|
6407
6618
|
- FORBIDDEN
|
|
@@ -6429,10 +6640,10 @@ paths:
|
|
|
6429
6640
|
required: true
|
|
6430
6641
|
description: Stable opaque connector id.
|
|
6431
6642
|
schema:
|
|
6432
|
-
|
|
6643
|
+
$ref: '#/components/schemas/ResourceId'
|
|
6433
6644
|
responses:
|
|
6434
6645
|
'200':
|
|
6435
|
-
description:
|
|
6646
|
+
description: The test dispatch reached the destination.
|
|
6436
6647
|
content:
|
|
6437
6648
|
application/json:
|
|
6438
6649
|
schema:
|
|
@@ -6452,6 +6663,8 @@ paths:
|
|
|
6452
6663
|
$ref: '#/components/responses/Conflict'
|
|
6453
6664
|
'422':
|
|
6454
6665
|
$ref: '#/components/responses/UnprocessableEntity'
|
|
6666
|
+
'502':
|
|
6667
|
+
$ref: '#/components/responses/BadGateway'
|
|
6455
6668
|
x-error-codes:
|
|
6456
6669
|
- UNAUTHORIZED
|
|
6457
6670
|
- FORBIDDEN
|
|
@@ -6481,7 +6694,7 @@ paths:
|
|
|
6481
6694
|
required: true
|
|
6482
6695
|
description: Stable opaque connector id. Its stored `provider` must match the body's `provider`.
|
|
6483
6696
|
schema:
|
|
6484
|
-
|
|
6697
|
+
$ref: '#/components/schemas/ResourceId'
|
|
6485
6698
|
requestBody:
|
|
6486
6699
|
required: true
|
|
6487
6700
|
content:
|
|
@@ -6587,6 +6800,27 @@ paths:
|
|
|
6587
6800
|
$ref: '#/components/schemas/CreateConnectorResponse'
|
|
6588
6801
|
example:
|
|
6589
6802
|
id: 9b0e7c2a-1f3d-4a8e-bf21-0c6a2e5d7f10
|
|
6803
|
+
links:
|
|
6804
|
+
FireConnector:
|
|
6805
|
+
operationId: fireConnector
|
|
6806
|
+
parameters:
|
|
6807
|
+
id: $response.body#/id
|
|
6808
|
+
TestConnector:
|
|
6809
|
+
operationId: testConnector
|
|
6810
|
+
parameters:
|
|
6811
|
+
id: $response.body#/id
|
|
6812
|
+
GetConnector:
|
|
6813
|
+
operationId: getConnector
|
|
6814
|
+
parameters:
|
|
6815
|
+
id: $response.body#/id
|
|
6816
|
+
UpdateTriggerConnector:
|
|
6817
|
+
operationId: updateTriggerConnector
|
|
6818
|
+
parameters:
|
|
6819
|
+
id: $response.body#/id
|
|
6820
|
+
DeleteConnector:
|
|
6821
|
+
operationId: deleteConnector
|
|
6822
|
+
parameters:
|
|
6823
|
+
id: $response.body#/id
|
|
6590
6824
|
'400':
|
|
6591
6825
|
$ref: '#/components/responses/BadRequest'
|
|
6592
6826
|
'401':
|
|
@@ -6783,6 +7017,7 @@ paths:
|
|
|
6783
7017
|
- $ref: '#/components/parameters/ProjectId'
|
|
6784
7018
|
- $ref: '#/components/parameters/PaginationLimit'
|
|
6785
7019
|
- $ref: '#/components/parameters/PaginationCursor'
|
|
7020
|
+
- $ref: '#/components/parameters/Q'
|
|
6786
7021
|
responses:
|
|
6787
7022
|
'200':
|
|
6788
7023
|
description: List API keys
|
|
@@ -6917,7 +7152,7 @@ paths:
|
|
|
6917
7152
|
required: true
|
|
6918
7153
|
description: Stable opaque key id (UUID) returned by `create` / `list`.
|
|
6919
7154
|
schema:
|
|
6920
|
-
|
|
7155
|
+
$ref: '#/components/schemas/ResourceId'
|
|
6921
7156
|
responses:
|
|
6922
7157
|
'200':
|
|
6923
7158
|
description: Revoke an API key
|
|
@@ -7042,6 +7277,14 @@ components:
|
|
|
7042
7277
|
description: Opaque cursor returned in the previous page's `next_cursor`. Omit for the first page.
|
|
7043
7278
|
schema:
|
|
7044
7279
|
type: string
|
|
7280
|
+
Q:
|
|
7281
|
+
name: q
|
|
7282
|
+
in: query
|
|
7283
|
+
required: false
|
|
7284
|
+
description: Case-insensitive substring filter across the resource's human-readable text columns (e.g. `name`, `title`, `description`). OR-matched across those columns; omit to return everything.
|
|
7285
|
+
schema:
|
|
7286
|
+
type: string
|
|
7287
|
+
maxLength: 100
|
|
7045
7288
|
schemas:
|
|
7046
7289
|
ListGatesResponse:
|
|
7047
7290
|
type: object
|
|
@@ -7690,6 +7933,11 @@ components:
|
|
|
7690
7933
|
- id
|
|
7691
7934
|
- name
|
|
7692
7935
|
additionalProperties: false
|
|
7936
|
+
ResourceId:
|
|
7937
|
+
type: string
|
|
7938
|
+
minLength: 1
|
|
7939
|
+
maxLength: 128
|
|
7940
|
+
description: A resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long value can never name a real row.
|
|
7693
7941
|
DeleteGateResponse:
|
|
7694
7942
|
type: object
|
|
7695
7943
|
properties:
|
|
@@ -9729,7 +9977,7 @@ components:
|
|
|
9729
9977
|
required:
|
|
9730
9978
|
- id
|
|
9731
9979
|
additionalProperties: false
|
|
9732
|
-
|
|
9980
|
+
GateTemplateRuleResponse:
|
|
9733
9981
|
type: object
|
|
9734
9982
|
properties:
|
|
9735
9983
|
attr:
|
|
@@ -9760,9 +10008,8 @@ components:
|
|
|
9760
10008
|
required:
|
|
9761
10009
|
- attr
|
|
9762
10010
|
- op
|
|
9763
|
-
- value
|
|
9764
10011
|
additionalProperties: false
|
|
9765
|
-
description: Single targeting predicate
|
|
10012
|
+
description: Single targeting predicate as returned by the API. `value` is optional here — read-only built-in templates (e.g. `@owner`, or presets whose operand is supplied at substitution time) legitimately omit it. Request bodies still require `value`.
|
|
9766
10013
|
GateTemplate:
|
|
9767
10014
|
type: object
|
|
9768
10015
|
description: 'A reusable targeting-rule template. Built-ins are read-only (`builtin: true`, stable slug `id`); per-project customer templates are `builtin: false` with a `gtpl_…` id.'
|
|
@@ -9796,7 +10043,7 @@ components:
|
|
|
9796
10043
|
rules:
|
|
9797
10044
|
type: array
|
|
9798
10045
|
items:
|
|
9799
|
-
$ref: '#/components/schemas/
|
|
10046
|
+
$ref: '#/components/schemas/GateTemplateRuleResponse'
|
|
9800
10047
|
description: The rule definition — copy, substitute the value(s), pass as `rules`.
|
|
9801
10048
|
createdAt:
|
|
9802
10049
|
anyOf:
|
|
@@ -9832,6 +10079,46 @@ components:
|
|
|
9832
10079
|
- data
|
|
9833
10080
|
- next_cursor
|
|
9834
10081
|
additionalProperties: false
|
|
10082
|
+
GateTemplateRule:
|
|
10083
|
+
type: object
|
|
10084
|
+
properties:
|
|
10085
|
+
attr:
|
|
10086
|
+
type: string
|
|
10087
|
+
description: Attribute key on the evaluation context (e.g. `country`, `plan`, `email`). Matched case-sensitively against `Shipeasy.checkGate(user, name)` input. May be empty on a built-in template whose attribute is supplied at substitution time (e.g. the `exp_in` "in any experiment" preset — you fill in the experiment name).
|
|
10088
|
+
op:
|
|
10089
|
+
type: string
|
|
10090
|
+
enum:
|
|
10091
|
+
- eq
|
|
10092
|
+
- neq
|
|
10093
|
+
- in
|
|
10094
|
+
- not_in
|
|
10095
|
+
- gt
|
|
10096
|
+
- gte
|
|
10097
|
+
- lt
|
|
10098
|
+
- lte
|
|
10099
|
+
- contains
|
|
10100
|
+
- regex
|
|
10101
|
+
- semver_gt
|
|
10102
|
+
- semver_gte
|
|
10103
|
+
- semver_lt
|
|
10104
|
+
- semver_lte
|
|
10105
|
+
- gate_pass
|
|
10106
|
+
- exp_in
|
|
10107
|
+
description: 'Comparison operator. Equality: `eq`/`neq`. Set membership: `in`/`not_in` (value is an array). Numeric order: `gt`/`gte`/`lt`/`lte`. Semver order: `semver_gt`/`semver_gte`/`semver_lt`/`semver_lte`. String: `contains` (substring), `regex` (JS-flavour pattern). Cross-resource: `gate_pass` (value is another gate''s name), `exp_in` (attr is an experiment name, value is a variant / `"$holdout"` / `"$any"`).'
|
|
10108
|
+
value:
|
|
10109
|
+
description: 'Operand. Shape depends on `op`: scalar for `eq/neq/gt/gte/lt/lte/contains/semver_*`; array of scalars for `in/not_in`; string pattern for `regex`; referenced gate name for `gate_pass`; variant selector for `exp_in`. Required on every request rule (value-ops need it; the valueless built-in presets are read-only and never created via the API).'
|
|
10110
|
+
anyOf:
|
|
10111
|
+
- type: string
|
|
10112
|
+
- type: number
|
|
10113
|
+
- type: boolean
|
|
10114
|
+
- type: array
|
|
10115
|
+
items: {}
|
|
10116
|
+
required:
|
|
10117
|
+
- attr
|
|
10118
|
+
- op
|
|
10119
|
+
- value
|
|
10120
|
+
additionalProperties: false
|
|
10121
|
+
description: Single targeting predicate. Copy a template's rules, substitute the concrete `value`(s), and pass them as the `rules` arg of `release_flags_create`.
|
|
9835
10122
|
CreateGateTemplateRequest:
|
|
9836
10123
|
type: object
|
|
9837
10124
|
description: Body for `POST /api/admin/gate-templates`. Creates a per-project (customer) template. At minimum supply `name` + `rules`.
|
|
@@ -11907,8 +12194,10 @@ components:
|
|
|
11907
12194
|
items:
|
|
11908
12195
|
type: string
|
|
11909
12196
|
href:
|
|
11910
|
-
description: Dashboard-relative deep link to the related item.
|
|
11911
|
-
|
|
12197
|
+
description: Dashboard-relative deep link to the related item. `null` is accepted and treated as "no link".
|
|
12198
|
+
anyOf:
|
|
12199
|
+
- type: string
|
|
12200
|
+
- type: 'null'
|
|
11912
12201
|
dedupeKey:
|
|
11913
12202
|
description: Stable per-escalation key (e.g. `feedback:7`) so re-runs dedupe to one row.
|
|
11914
12203
|
type: string
|
|
@@ -13478,33 +13767,27 @@ components:
|
|
|
13478
13767
|
properties:
|
|
13479
13768
|
ok:
|
|
13480
13769
|
type: boolean
|
|
13481
|
-
description:
|
|
13482
|
-
error:
|
|
13483
|
-
type: string
|
|
13484
|
-
description: Failure reason. Present only when `ok` is `false` — the fire reached the handler but the underlying dispatch to the provider failed.
|
|
13770
|
+
description: Always `true` — a successful fire returns HTTP 200. A dispatch failure returns HTTP 502 with the `Error` envelope, not this body.
|
|
13485
13771
|
required:
|
|
13486
13772
|
- ok
|
|
13487
13773
|
additionalProperties: false
|
|
13488
|
-
description: 'Result of
|
|
13774
|
+
description: 'Result of a successful trigger fire: `{ ok: true }`. When the downstream dispatch fails the endpoint returns HTTP 502 (see the `Error` response), never `ok: false`.'
|
|
13489
13775
|
TestConnectorResponse:
|
|
13490
13776
|
type: object
|
|
13491
13777
|
properties:
|
|
13492
13778
|
ok:
|
|
13493
13779
|
type: boolean
|
|
13494
|
-
description:
|
|
13780
|
+
description: Always `true` — a successful test returns HTTP 200. A dispatch failure returns HTTP 502 with the `Error` envelope, not this body.
|
|
13495
13781
|
issueUrl:
|
|
13496
13782
|
anyOf:
|
|
13497
13783
|
- type: string
|
|
13498
13784
|
- type: 'null'
|
|
13499
|
-
description: URL of the artifact the test produced (e.g. the GitHub Issue created by a `github` connector), or `null` when the provider produces no linkable artifact
|
|
13500
|
-
error:
|
|
13501
|
-
type: string
|
|
13502
|
-
description: Failure reason. Present only when `ok` is `false` — the test reached the handler but the underlying dispatch to the provider failed.
|
|
13785
|
+
description: URL of the artifact the test produced (e.g. the GitHub Issue created by a `github` connector), or `null` when the provider produces no linkable artifact.
|
|
13503
13786
|
required:
|
|
13504
13787
|
- ok
|
|
13505
13788
|
- issueUrl
|
|
13506
13789
|
additionalProperties: false
|
|
13507
|
-
description: 'Result of
|
|
13790
|
+
description: 'Result of a successful connector test: `{ ok: true, issueUrl }`. When the downstream dispatch fails the endpoint returns HTTP 502 (see the `Error` response), never `ok: false`.'
|
|
13508
13791
|
UpdateClaudeTriggerRequest:
|
|
13509
13792
|
type: object
|
|
13510
13793
|
properties:
|
|
@@ -13977,3 +14260,18 @@ components:
|
|
|
13977
14260
|
value:
|
|
13978
14261
|
error: The referenced event is still pending review and cannot back a metric yet.
|
|
13979
14262
|
code: EVENT_PENDING
|
|
14263
|
+
BadGateway:
|
|
14264
|
+
description: |-
|
|
14265
|
+
The request was well-formed and the resource exists, but a downstream provider
|
|
14266
|
+
the endpoint delegates to (e.g. a connector's Slack/GitHub/cloud-agent dispatch)
|
|
14267
|
+
failed. The failure is upstream of this API, not a client error. No stable
|
|
14268
|
+
`ErrorCode` is assigned to upstream failures, so `code` is omitted.
|
|
14269
|
+
content:
|
|
14270
|
+
application/json:
|
|
14271
|
+
schema:
|
|
14272
|
+
$ref: '#/components/schemas/Error'
|
|
14273
|
+
examples:
|
|
14274
|
+
UPSTREAM_FAILURE:
|
|
14275
|
+
summary: Downstream provider dispatch failed
|
|
14276
|
+
value:
|
|
14277
|
+
error: 'GitHub API responded 403: resource not accessible by integration.'
|