@shipeasy/openapi 2.2.0 → 2.4.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-643YSMLU.js → chunk-4QSU744W.js} +183 -1
- package/dist/chunk-4QSU744W.js.map +1 -0
- package/dist/{chunk-MRW3DJ57.js → chunk-ZPKHTUVV.js} +1238 -335
- package/dist/chunk-ZPKHTUVV.js.map +1 -0
- package/dist/{client-K0ShmsC7.d.ts → client-WGNXT4xl.d.ts} +5818 -2647
- package/dist/client.d.ts +1 -1
- package/dist/client.js +51 -1
- package/dist/custom.js +4 -4
- package/dist/custom.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +52 -2
- package/dist/index.js.map +1 -1
- package/dist/schemas.d.ts +3538 -534
- package/dist/schemas.js +253 -5
- package/openapi.json +12914 -7158
- package/openapi.yaml +7672 -3742
- package/package.json +1 -1
- package/spec/components/errors.yaml +33 -1
- package/spec/components/schemas/alerts.yaml +138 -0
- package/spec/components/schemas/attributes.yaml +53 -3
- package/spec/components/schemas/common.yaml +16 -0
- package/spec/components/schemas/configs.yaml +58 -0
- package/spec/components/schemas/connectors.yaml +5 -1
- package/spec/components/schemas/errors-api.yaml +116 -6
- package/spec/components/schemas/experiment-api-row.yaml +293 -0
- package/spec/components/schemas/experiments.yaml +395 -380
- package/spec/components/schemas/gates.yaml +355 -272
- package/spec/components/schemas/i18n.yaml +169 -40
- package/spec/components/schemas/keys.yaml +2 -1
- package/spec/components/schemas/killswitches.yaml +36 -0
- package/spec/components/schemas/metrics.yaml +200 -23
- package/spec/components/schemas/ops.yaml +918 -29
- package/spec/components/schemas/projects.yaml +246 -2
- package/spec/components/schemas/universes.yaml +83 -1
- package/spec/openapi.yaml +61 -0
- package/spec/paths/alert-rules.yaml +1 -0
- package/spec/paths/alerts.yaml +184 -0
- package/spec/paths/attributes.yaml +23 -5
- package/spec/paths/configs.yaml +71 -0
- package/spec/paths/errors.yaml +112 -2
- package/spec/paths/events.yaml +1 -0
- package/spec/paths/experiments.yaml +244 -16
- package/spec/paths/gates.yaml +138 -0
- package/spec/paths/i18n.yaml +290 -6
- package/spec/paths/keys.yaml +1 -0
- package/spec/paths/killswitches.yaml +7 -0
- package/spec/paths/metrics.yaml +187 -0
- package/spec/paths/ops.yaml +410 -0
- package/spec/paths/projects.yaml +62 -2
- package/spec/paths/universes.yaml +1 -0
- package/dist/chunk-643YSMLU.js.map +0 -1
- package/dist/chunk-MRW3DJ57.js.map +0 -1
|
@@ -19,7 +19,9 @@ GetCurrentProjectResponse:
|
|
|
19
19
|
type: string
|
|
20
20
|
enum:
|
|
21
21
|
- free
|
|
22
|
-
-
|
|
22
|
+
- pro
|
|
23
|
+
- business
|
|
24
|
+
- enterprise
|
|
23
25
|
description: Billing plan tier.
|
|
24
26
|
status:
|
|
25
27
|
type: string
|
|
@@ -74,6 +76,154 @@ GetCurrentProjectResponse:
|
|
|
74
76
|
- type: boolean
|
|
75
77
|
- type: number
|
|
76
78
|
description: Whether the feedback/ops module is enabled.
|
|
79
|
+
minSampleSize:
|
|
80
|
+
type: integer
|
|
81
|
+
description: Verdict power guard — minimum users per arm before a ship/hold verdict.
|
|
82
|
+
minRuntimeDays:
|
|
83
|
+
type: integer
|
|
84
|
+
description: Minimum days an experiment must run before a verdict (peeking guard).
|
|
85
|
+
defaultPower:
|
|
86
|
+
type: number
|
|
87
|
+
description: Target statistical power (1−β) feeding the realized-MDE calculation.
|
|
88
|
+
ciConfidence:
|
|
89
|
+
type: number
|
|
90
|
+
description: Confidence level for the interval surfaced on results.
|
|
91
|
+
defaultAllocationPct:
|
|
92
|
+
type: integer
|
|
93
|
+
description: Default traffic allocation (basis points) new experiments start with.
|
|
94
|
+
defaultHoldoutBp:
|
|
95
|
+
type: integer
|
|
96
|
+
description: Default holdout carve-out (basis points) that seeds each new universe's holdout (0 = none).
|
|
97
|
+
defaultWinsorizePct:
|
|
98
|
+
type: integer
|
|
99
|
+
description: Default winsorization percentile new metrics start with.
|
|
100
|
+
defaultMei:
|
|
101
|
+
anyOf:
|
|
102
|
+
- type: number
|
|
103
|
+
- type: "null"
|
|
104
|
+
description: Default minimum effect of interest (relative, 0–1) new metrics start with, or null.
|
|
105
|
+
cupedBaselineDays:
|
|
106
|
+
type: integer
|
|
107
|
+
description: CUPED baseline window — days of pre-experiment history, frozen at start.
|
|
108
|
+
cupedMinOverlap:
|
|
109
|
+
type: number
|
|
110
|
+
description: CUPED selection-bias guard — min share of users with a baseline, else skip.
|
|
111
|
+
cupedMinBaselineUsers:
|
|
112
|
+
type: integer
|
|
113
|
+
description: CUPED — minimum users with a baseline before it runs at all.
|
|
114
|
+
msprtTauMeiFactor:
|
|
115
|
+
type: number
|
|
116
|
+
description: mSPRT prior width — τ = minimum effect of interest × this factor.
|
|
117
|
+
msprtTauSdFactor:
|
|
118
|
+
type: number
|
|
119
|
+
description: mSPRT fallback prior width — τ = this × control SD when no MEI is set.
|
|
120
|
+
srmThreshold:
|
|
121
|
+
type: number
|
|
122
|
+
description: SRM chi-square p-value below which the run is called invalid.
|
|
123
|
+
slug:
|
|
124
|
+
anyOf:
|
|
125
|
+
- type: string
|
|
126
|
+
- type: "null"
|
|
127
|
+
description: URL-safe project identifier used in app URLs and SDK config, or `null` if unset.
|
|
128
|
+
logo:
|
|
129
|
+
anyOf:
|
|
130
|
+
- type: string
|
|
131
|
+
- type: "null"
|
|
132
|
+
description: Cache-busted URL of the project logo (served from the admin logo route), or `null` when no logo is set.
|
|
133
|
+
defaultEnv:
|
|
134
|
+
type: string
|
|
135
|
+
enum:
|
|
136
|
+
- dev
|
|
137
|
+
- staging
|
|
138
|
+
- prod
|
|
139
|
+
description: Default environment new resources are scoped to.
|
|
140
|
+
timezone:
|
|
141
|
+
type: string
|
|
142
|
+
description: IANA timezone the project's daily analysis runs in.
|
|
143
|
+
statMethod:
|
|
144
|
+
type: string
|
|
145
|
+
enum:
|
|
146
|
+
- sequential
|
|
147
|
+
- fixed
|
|
148
|
+
- bayesian
|
|
149
|
+
description: Statistical method the experiment analyzer uses.
|
|
150
|
+
sigThreshold:
|
|
151
|
+
type: string
|
|
152
|
+
description: Significance threshold (alpha) for experiment analysis, as a decimal string (e.g. `"0.05"`).
|
|
153
|
+
autoRollback:
|
|
154
|
+
type: boolean
|
|
155
|
+
description: Whether a failing guardrail auto-rolls back the experiment.
|
|
156
|
+
minSampleDays:
|
|
157
|
+
type: integer
|
|
158
|
+
description: Minimum number of days an experiment must run before it can be called.
|
|
159
|
+
moduleUser:
|
|
160
|
+
anyOf:
|
|
161
|
+
- type: boolean
|
|
162
|
+
- type: number
|
|
163
|
+
description: Whether the user-management module is enabled.
|
|
164
|
+
moduleEvents:
|
|
165
|
+
anyOf:
|
|
166
|
+
- type: boolean
|
|
167
|
+
- type: number
|
|
168
|
+
description: Whether the events module is enabled.
|
|
169
|
+
allowPublicTickets:
|
|
170
|
+
anyOf:
|
|
171
|
+
- type: boolean
|
|
172
|
+
- type: number
|
|
173
|
+
description: Whether key-authenticated public ticket creation (`POST /cli/report`) is allowed into this project. Off by default.
|
|
174
|
+
stripeSubscriptionId:
|
|
175
|
+
anyOf:
|
|
176
|
+
- type: string
|
|
177
|
+
- type: "null"
|
|
178
|
+
description: Stripe subscription id backing the project's billing, or `null` when unsubscribed.
|
|
179
|
+
scheduledInterval:
|
|
180
|
+
anyOf:
|
|
181
|
+
- type: string
|
|
182
|
+
enum:
|
|
183
|
+
- monthly
|
|
184
|
+
- annual
|
|
185
|
+
- type: "null"
|
|
186
|
+
description: Pending billing-interval change deferred to period end (only the annual→monthly downgrade), or `null` when no switch is pending.
|
|
187
|
+
spendLimitEnabled:
|
|
188
|
+
anyOf:
|
|
189
|
+
- type: boolean
|
|
190
|
+
- type: number
|
|
191
|
+
description: Whether the advisory monthly spend limit is enabled.
|
|
192
|
+
spendLimitUsd:
|
|
193
|
+
anyOf:
|
|
194
|
+
- type: integer
|
|
195
|
+
- type: "null"
|
|
196
|
+
description: Advisory monthly spend limit in whole USD, or `null` if unset.
|
|
197
|
+
spendAlertEmail:
|
|
198
|
+
anyOf:
|
|
199
|
+
- type: string
|
|
200
|
+
- type: "null"
|
|
201
|
+
description: Email address the spend alert is sent to, or `null` if unset.
|
|
202
|
+
defaultAssigneePendingApproval:
|
|
203
|
+
anyOf:
|
|
204
|
+
- type: string
|
|
205
|
+
- type: "null"
|
|
206
|
+
description: Default person owner (user id) auto-assigned to new `pending_approval` feedback items, or `null` when unset.
|
|
207
|
+
defaultAssigneeConnectorPendingApproval:
|
|
208
|
+
anyOf:
|
|
209
|
+
- type: string
|
|
210
|
+
- type: "null"
|
|
211
|
+
description: Default agent owner (connector id) auto-assigned to new `pending_approval` feedback items, or `null` when unset.
|
|
212
|
+
defaultAssigneeOpen:
|
|
213
|
+
anyOf:
|
|
214
|
+
- type: string
|
|
215
|
+
- type: "null"
|
|
216
|
+
description: Default person owner (user id) auto-assigned to new `open` feedback items, or `null` when unset.
|
|
217
|
+
defaultAssigneeConnectorOpen:
|
|
218
|
+
anyOf:
|
|
219
|
+
- type: string
|
|
220
|
+
- type: "null"
|
|
221
|
+
description: Default agent owner (connector id) auto-assigned to new `open` feedback items, or `null` when unset.
|
|
222
|
+
deletedAt:
|
|
223
|
+
anyOf:
|
|
224
|
+
- type: string
|
|
225
|
+
- type: "null"
|
|
226
|
+
description: ISO-8601 timestamp the project was soft-deleted (purged after a 14-day grace period), or `null` when live.
|
|
77
227
|
createdAt:
|
|
78
228
|
type: string
|
|
79
229
|
description: ISO-8601 timestamp of project creation.
|
|
@@ -97,10 +247,32 @@ GetCurrentProjectResponse:
|
|
|
97
247
|
- moduleGates
|
|
98
248
|
- moduleExperiments
|
|
99
249
|
- moduleFeedback
|
|
250
|
+
- moduleUser
|
|
251
|
+
- moduleEvents
|
|
252
|
+
- allowPublicTickets
|
|
253
|
+
- slug
|
|
254
|
+
- logo
|
|
255
|
+
- defaultEnv
|
|
256
|
+
- timezone
|
|
257
|
+
- statMethod
|
|
258
|
+
- sigThreshold
|
|
259
|
+
- autoRollback
|
|
260
|
+
- minSampleDays
|
|
261
|
+
- defaultHoldoutBp
|
|
262
|
+
- stripeSubscriptionId
|
|
263
|
+
- scheduledInterval
|
|
264
|
+
- spendLimitEnabled
|
|
265
|
+
- spendLimitUsd
|
|
266
|
+
- spendAlertEmail
|
|
267
|
+
- defaultAssigneePendingApproval
|
|
268
|
+
- defaultAssigneeConnectorPendingApproval
|
|
269
|
+
- defaultAssigneeOpen
|
|
270
|
+
- defaultAssigneeConnectorOpen
|
|
271
|
+
- deletedAt
|
|
100
272
|
- createdAt
|
|
101
273
|
- updatedAt
|
|
102
274
|
additionalProperties: {}
|
|
103
|
-
description: The project the caller's auth header resolves to. The shape is open — additional project fields may be present.
|
|
275
|
+
description: The project the caller's auth header resolves to. The shape is open — additional project fields may be present. Stripe billing internals (`stripeCustomerId`, the `stripeItemId*` family) are intentionally undocumented.
|
|
104
276
|
UpsertProjectRequest:
|
|
105
277
|
type: object
|
|
106
278
|
properties:
|
|
@@ -218,5 +390,77 @@ UpdateProjectRequest:
|
|
|
218
390
|
moduleEvents:
|
|
219
391
|
type: boolean
|
|
220
392
|
description: Enable/disable the events module.
|
|
393
|
+
minSampleSize:
|
|
394
|
+
type: integer
|
|
395
|
+
minimum: 2
|
|
396
|
+
maximum: 1000000
|
|
397
|
+
description: Verdict power guard — minimum users per arm before a ship/hold verdict.
|
|
398
|
+
minRuntimeDays:
|
|
399
|
+
type: integer
|
|
400
|
+
minimum: 0
|
|
401
|
+
maximum: 365
|
|
402
|
+
description: Minimum days an experiment must run before a verdict (peeking guard).
|
|
403
|
+
defaultPower:
|
|
404
|
+
type: number
|
|
405
|
+
minimum: 0.5
|
|
406
|
+
maximum: 0.99
|
|
407
|
+
description: Target statistical power (1−β) feeding the realized-MDE calculation.
|
|
408
|
+
ciConfidence:
|
|
409
|
+
type: number
|
|
410
|
+
minimum: 0.5
|
|
411
|
+
maximum: 0.999
|
|
412
|
+
description: Confidence level for the interval surfaced on results (any value in [0.5, 0.999], e.g. 0.90, 0.95, 0.975, 0.99).
|
|
413
|
+
defaultAllocationPct:
|
|
414
|
+
type: integer
|
|
415
|
+
minimum: 1
|
|
416
|
+
maximum: 10000
|
|
417
|
+
description: Default traffic allocation (basis points, 1000 = 10%) new experiments start with; overridable per experiment.
|
|
418
|
+
defaultHoldout:
|
|
419
|
+
type: integer
|
|
420
|
+
minimum: 0
|
|
421
|
+
maximum: 10000
|
|
422
|
+
description: Default holdout carve-out (basis points) that seeds each new universe's holdout (0 = none).
|
|
423
|
+
defaultWinsorizePct:
|
|
424
|
+
type: integer
|
|
425
|
+
minimum: 1
|
|
426
|
+
maximum: 99
|
|
427
|
+
description: Default winsorization percentile new metrics start with; overridable per metric.
|
|
428
|
+
defaultMei:
|
|
429
|
+
anyOf:
|
|
430
|
+
- type: number
|
|
431
|
+
minimum: 0
|
|
432
|
+
maximum: 1
|
|
433
|
+
- type: "null"
|
|
434
|
+
description: Default minimum effect of interest (relative, 0–1) new metrics start with; overridable per metric and per experiment. Null clears it.
|
|
435
|
+
cupedBaselineDays:
|
|
436
|
+
type: integer
|
|
437
|
+
minimum: 1
|
|
438
|
+
maximum: 365
|
|
439
|
+
description: CUPED baseline window — days of pre-experiment history, frozen at start.
|
|
440
|
+
cupedMinOverlap:
|
|
441
|
+
type: number
|
|
442
|
+
minimum: 0.01
|
|
443
|
+
maximum: 0.99
|
|
444
|
+
description: CUPED selection-bias guard — min share of users with a baseline, else skip.
|
|
445
|
+
cupedMinBaselineUsers:
|
|
446
|
+
type: integer
|
|
447
|
+
minimum: 10
|
|
448
|
+
maximum: 100000
|
|
449
|
+
description: CUPED — minimum users with a baseline before it runs at all.
|
|
450
|
+
msprtTauMeiFactor:
|
|
451
|
+
type: number
|
|
452
|
+
minimum: 0.1
|
|
453
|
+
maximum: 2
|
|
454
|
+
description: mSPRT prior width — τ = minimum effect of interest × this factor.
|
|
455
|
+
msprtTauSdFactor:
|
|
456
|
+
type: number
|
|
457
|
+
minimum: 0.05
|
|
458
|
+
maximum: 1
|
|
459
|
+
description: mSPRT fallback prior width — τ = this × control SD when no MEI is set.
|
|
460
|
+
srmThreshold:
|
|
461
|
+
type: number
|
|
462
|
+
minimum: 0.0001
|
|
463
|
+
maximum: 0.05
|
|
464
|
+
description: SRM chi-square p-value below which the run is called invalid.
|
|
221
465
|
additionalProperties: false
|
|
222
466
|
description: "Body for `PATCH /api/admin/projects/{id}`. Partial — every field is optional; only supplied fields change. The project id in the path must match the caller's own project."
|
|
@@ -1,3 +1,35 @@
|
|
|
1
|
+
# The universe owns the config schema for every experiment/variant in it — an
|
|
2
|
+
# ordered list of `{ name, type, default }`. Experiments may only override the
|
|
3
|
+
# per-variant value of a declared param, never add fields (universe rework).
|
|
4
|
+
UniverseParam:
|
|
5
|
+
type: object
|
|
6
|
+
properties:
|
|
7
|
+
name:
|
|
8
|
+
type: string
|
|
9
|
+
minLength: 1
|
|
10
|
+
maxLength: 128
|
|
11
|
+
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
|
12
|
+
description: Param key, referenced by `groups[].params` on every experiment in the universe.
|
|
13
|
+
type:
|
|
14
|
+
type: string
|
|
15
|
+
enum:
|
|
16
|
+
- bool
|
|
17
|
+
- string
|
|
18
|
+
- int
|
|
19
|
+
- number
|
|
20
|
+
description: Scalar type of the param's value.
|
|
21
|
+
default:
|
|
22
|
+
description: "Universe-wide default. Returned when the assigned variant doesn't override this param (resolution: variant override → universe default)."
|
|
23
|
+
required:
|
|
24
|
+
- name
|
|
25
|
+
- type
|
|
26
|
+
- default
|
|
27
|
+
additionalProperties: false
|
|
28
|
+
UniverseParamSchema:
|
|
29
|
+
type: array
|
|
30
|
+
items:
|
|
31
|
+
$ref: "#/UniverseParam"
|
|
32
|
+
description: The universe's ordered config schema — the single source of truth for its params.
|
|
1
33
|
ListUniversesResponse:
|
|
2
34
|
type: object
|
|
3
35
|
properties:
|
|
@@ -14,6 +46,11 @@ ListUniversesResponse:
|
|
|
14
46
|
maxLength: 128
|
|
15
47
|
pattern: ^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?)?$
|
|
16
48
|
description: Stable universe key. Single segment or `folder.name`. Lowercase letters, digits, `_` or `-`; max 128 chars. Immutable after create.
|
|
49
|
+
description:
|
|
50
|
+
anyOf:
|
|
51
|
+
- type: string
|
|
52
|
+
- type: "null"
|
|
53
|
+
description: Human-readable blurb shown in the universe picker/hovercard.
|
|
17
54
|
unitType:
|
|
18
55
|
type: string
|
|
19
56
|
description: Unit of randomisation. Snake-case in request (`unit_type`), camelCase in response.
|
|
@@ -26,6 +63,16 @@ ListUniversesResponse:
|
|
|
26
63
|
maxItems: 2
|
|
27
64
|
- type: "null"
|
|
28
65
|
description: Reserved holdout bucket range, or `null` if none.
|
|
66
|
+
recommendedHeadroom:
|
|
67
|
+
type: integer
|
|
68
|
+
minimum: 0
|
|
69
|
+
maximum: 10000
|
|
70
|
+
description: Basis points of headroom seeded into each new experiment's reserved tail (0 = none).
|
|
71
|
+
paramSchema:
|
|
72
|
+
anyOf:
|
|
73
|
+
- $ref: "#/UniverseParamSchema"
|
|
74
|
+
- type: "null"
|
|
75
|
+
description: The universe-owned config schema, or `null` on pre-rework universes not yet seeded.
|
|
29
76
|
createdAt:
|
|
30
77
|
type: string
|
|
31
78
|
description: ISO-8601 timestamp of creation.
|
|
@@ -54,6 +101,13 @@ CreateUniverseRequest:
|
|
|
54
101
|
description: Stable universe key. Single segment or `folder.name`. Lowercase letters, digits, `_` or `-`; max 128 chars. Immutable after create.
|
|
55
102
|
folder:
|
|
56
103
|
$ref: ./common.yaml#/Folder
|
|
104
|
+
description:
|
|
105
|
+
default: null
|
|
106
|
+
anyOf:
|
|
107
|
+
- type: string
|
|
108
|
+
maxLength: 2000
|
|
109
|
+
- type: "null"
|
|
110
|
+
description: Human-readable blurb shown in the universe picker/hovercard.
|
|
57
111
|
unit_type:
|
|
58
112
|
default: user_id
|
|
59
113
|
description: Unit of randomisation. Typically `user_id`. Use `account_id` to keep whole accounts in the same group across an experiment.
|
|
@@ -70,6 +124,18 @@ CreateUniverseRequest:
|
|
|
70
124
|
maxItems: 2
|
|
71
125
|
- type: "null"
|
|
72
126
|
description: Inclusive `[lo, hi]` bucket range (0–9999) reserved as the **holdout** — callers hashed into this slice are excluded from every experiment in the universe. `null` disables the holdout. Pro plan or higher required.
|
|
127
|
+
recommended_headroom:
|
|
128
|
+
default: 0
|
|
129
|
+
type: integer
|
|
130
|
+
minimum: 0
|
|
131
|
+
maximum: 10000
|
|
132
|
+
description: Basis points of reserved headroom seeded into each new experiment created in this universe (0 = none). Lets variants be appended into a running experiment without reshuffling.
|
|
133
|
+
param_schema:
|
|
134
|
+
default: null
|
|
135
|
+
anyOf:
|
|
136
|
+
- $ref: "#/UniverseParamSchema"
|
|
137
|
+
- type: "null"
|
|
138
|
+
description: The universe-owned config schema — an ordered `{ name, type, default }[]`. Experiments may only override values per variant, never add fields. `null` starts an empty schema.
|
|
73
139
|
required:
|
|
74
140
|
- name
|
|
75
141
|
additionalProperties: false
|
|
@@ -94,6 +160,12 @@ UpdateUniverseRequest:
|
|
|
94
160
|
properties:
|
|
95
161
|
folder:
|
|
96
162
|
$ref: ./common.yaml#/Folder
|
|
163
|
+
description:
|
|
164
|
+
anyOf:
|
|
165
|
+
- type: string
|
|
166
|
+
maxLength: 2000
|
|
167
|
+
- type: "null"
|
|
168
|
+
description: Human-readable blurb shown in the universe picker/hovercard.
|
|
97
169
|
holdout_range:
|
|
98
170
|
anyOf:
|
|
99
171
|
- type: array
|
|
@@ -105,8 +177,18 @@ UpdateUniverseRequest:
|
|
|
105
177
|
maxItems: 2
|
|
106
178
|
- type: "null"
|
|
107
179
|
description: Inclusive `[lo, hi]` bucket range (0–9999) reserved as the **holdout** — callers hashed into this slice are excluded from every experiment in the universe. `null` disables the holdout. Pro plan or higher required.
|
|
180
|
+
recommended_headroom:
|
|
181
|
+
type: integer
|
|
182
|
+
minimum: 0
|
|
183
|
+
maximum: 10000
|
|
184
|
+
description: Basis points of reserved headroom seeded into new experiments in this universe.
|
|
185
|
+
param_schema:
|
|
186
|
+
anyOf:
|
|
187
|
+
- $ref: "#/UniverseParamSchema"
|
|
188
|
+
- type: "null"
|
|
189
|
+
description: Replace the universe config schema. Additive changes + default edits are always allowed; removing a param a running experiment overrides is rejected (deprecate-only).
|
|
108
190
|
additionalProperties: false
|
|
109
|
-
description: Body for `PATCH /api/admin/universes/{id}`.
|
|
191
|
+
description: Body for `PATCH /api/admin/universes/{id}`. `name` and `unit_type` are immutable after create; `holdout_range`, `description`, `recommended_headroom` and `param_schema` are mutable.
|
|
110
192
|
UpdateUniverseResponse:
|
|
111
193
|
type: object
|
|
112
194
|
properties:
|
package/spec/openapi.yaml
CHANGED
|
@@ -180,6 +180,35 @@ tags:
|
|
|
180
180
|
**Immutable metric.** The bound metric (and its aggregation) is fixed at create time — there is no update path for `metricId`. Tune `threshold`/`comparator`/`windowHours`/`severity`/`name`/`enabled` instead, or delete + recreate to repoint the rule at a different metric.
|
|
181
181
|
|
|
182
182
|
**Delivery.** `notify` optionally targets a Slack channel and/or email for this rule; `null` falls back to the project's default notification settings. Slack targets require a connected Slack connector.
|
|
183
|
+
- name: Fired Alerts
|
|
184
|
+
parent: Ops
|
|
185
|
+
description: |-
|
|
186
|
+
Fired alerts: the conditions the platform has actually raised — metric-rule
|
|
187
|
+
crossings, armed kill switches, experiment SRM/peek guards, and guardrail
|
|
188
|
+
breaches. Raised only by the platform (UI killswitch handlers plus the
|
|
189
|
+
worker analysis consumer and alerts cron), never filed by hand; deduped per
|
|
190
|
+
`(source, dedupeKey)` with auto-resolve when the condition clears. This
|
|
191
|
+
surface lists them and triages one (status flip + person/agent owner). The
|
|
192
|
+
*rules* that define metric-threshold alerts are the sibling alert-rules
|
|
193
|
+
resource.
|
|
194
|
+
- name: Agents
|
|
195
|
+
parent: Ops
|
|
196
|
+
description: |-
|
|
197
|
+
Connected AI agents — one per authenticated trigger connector (Claude /
|
|
198
|
+
Cursor / Copilot / Jules). The read-only roster behind agent assignment
|
|
199
|
+
and the `ops ack` agent types: an AI ack (`ops ack <handle> --agent
|
|
200
|
+
<type>`) requires the type to appear here, so this list is where an
|
|
201
|
+
`AGENT_NOT_CONNECTED` error sends you.
|
|
202
|
+
- name: Comments
|
|
203
|
+
parent: Ops
|
|
204
|
+
description: |-
|
|
205
|
+
Comments on a queue item — the discussion thread that hangs off any bug,
|
|
206
|
+
feature request, or auto-filed error/alert ticket. Append a comment or read
|
|
207
|
+
the thread; one level of threaded replies via `parentId`.
|
|
208
|
+
|
|
209
|
+
**Mentions.** `@teammate` in a body raises an in-app notification for that
|
|
210
|
+
person; `@shipeasy` asks Jarvis (the AI agent) to read the item and reply.
|
|
211
|
+
Comments authored by Jarvis carry `authorType: system`.
|
|
183
212
|
- name: Projects
|
|
184
213
|
description: |-
|
|
185
214
|
Projects: the account-level container every other resource is scoped to.
|
|
@@ -242,6 +271,8 @@ paths:
|
|
|
242
271
|
$ref: ./paths/gates.yaml#/~1api~1admin~1gates~1{id}~1enable
|
|
243
272
|
/api/admin/gates/{id}/disable:
|
|
244
273
|
$ref: ./paths/gates.yaml#/~1api~1admin~1gates~1{id}~1disable
|
|
274
|
+
/api/admin/gates/{id}/activity:
|
|
275
|
+
$ref: ./paths/gates.yaml#/~1api~1admin~1gates~1{id}~1activity
|
|
245
276
|
/api/admin/experiments:
|
|
246
277
|
$ref: ./paths/experiments.yaml#/~1api~1admin~1experiments
|
|
247
278
|
/api/admin/experiments/{id}:
|
|
@@ -256,6 +287,10 @@ paths:
|
|
|
256
287
|
$ref: ./paths/experiments.yaml#/~1api~1admin~1experiments~1{id}~1timeseries
|
|
257
288
|
/api/admin/experiments/{id}/reanalyze:
|
|
258
289
|
$ref: ./paths/experiments.yaml#/~1api~1admin~1experiments~1{id}~1reanalyze
|
|
290
|
+
/api/admin/experiments/{id}/readouts:
|
|
291
|
+
$ref: ./paths/experiments.yaml#/~1api~1admin~1experiments~1{id}~1readouts
|
|
292
|
+
/api/admin/experiments/{id}/readouts/{readoutId}:
|
|
293
|
+
$ref: ./paths/experiments.yaml#/~1api~1admin~1experiments~1{id}~1readouts~1{readoutId}
|
|
259
294
|
/api/admin/configs:
|
|
260
295
|
$ref: ./paths/configs.yaml#/~1api~1admin~1configs
|
|
261
296
|
/api/admin/configs/{id}:
|
|
@@ -268,6 +303,8 @@ paths:
|
|
|
268
303
|
$ref: ./paths/configs.yaml#/~1api~1admin~1configs~1{id}~1activity
|
|
269
304
|
/api/admin/configs/{id}/schema:
|
|
270
305
|
$ref: ./paths/configs.yaml#/~1api~1admin~1configs~1{id}~1schema
|
|
306
|
+
/api/admin/configs/{id}/versions:
|
|
307
|
+
$ref: ./paths/configs.yaml#/~1api~1admin~1configs~1{id}~1versions
|
|
271
308
|
/api/admin/killswitches:
|
|
272
309
|
$ref: ./paths/killswitches.yaml#/~1api~1admin~1killswitches
|
|
273
310
|
/api/admin/killswitches/{id}:
|
|
@@ -292,6 +329,12 @@ paths:
|
|
|
292
329
|
$ref: ./paths/metrics.yaml#/~1api~1admin~1metrics
|
|
293
330
|
/api/admin/metrics/{id}:
|
|
294
331
|
$ref: ./paths/metrics.yaml#/~1api~1admin~1metrics~1{id}
|
|
332
|
+
/api/admin/metrics/{id}/experiments:
|
|
333
|
+
$ref: ./paths/metrics.yaml#/~1api~1admin~1metrics~1{id}~1experiments
|
|
334
|
+
/api/admin/metrics/{id}/unarchive:
|
|
335
|
+
$ref: ./paths/metrics.yaml#/~1api~1admin~1metrics~1{id}~1unarchive
|
|
336
|
+
/api/admin/metrics/{id}/series:
|
|
337
|
+
$ref: ./paths/metrics.yaml#/~1api~1admin~1metrics~1{id}~1series
|
|
295
338
|
/api/admin/events:
|
|
296
339
|
$ref: ./paths/events.yaml#/~1api~1admin~1events
|
|
297
340
|
/api/admin/events/{id}:
|
|
@@ -304,6 +347,14 @@ paths:
|
|
|
304
347
|
$ref: ./paths/ops.yaml#/~1api~1admin~1ops~1{handle}
|
|
305
348
|
/api/admin/ops/{handle}/link-pr:
|
|
306
349
|
$ref: ./paths/ops.yaml#/~1api~1admin~1ops~1{handle}~1link-pr
|
|
350
|
+
/api/admin/ops/{handle}/ack:
|
|
351
|
+
$ref: ./paths/ops.yaml#/~1api~1admin~1ops~1{handle}~1ack
|
|
352
|
+
/api/admin/ops/{handle}/investigation:
|
|
353
|
+
$ref: ./paths/ops.yaml#/~1api~1admin~1ops~1{handle}~1investigation
|
|
354
|
+
/api/admin/agent-profiles:
|
|
355
|
+
$ref: ./paths/ops.yaml#/~1api~1admin~1agent-profiles
|
|
356
|
+
/api/admin/ops/{handle}/comments:
|
|
357
|
+
$ref: ./paths/ops.yaml#/~1api~1admin~1ops~1{handle}~1comments
|
|
307
358
|
/api/admin/notifications:
|
|
308
359
|
$ref: ./paths/ops.yaml#/~1api~1admin~1notifications
|
|
309
360
|
/api/admin/slack/channels:
|
|
@@ -312,6 +363,10 @@ paths:
|
|
|
312
363
|
$ref: ./paths/alert-rules.yaml#/~1api~1admin~1alert-rules
|
|
313
364
|
/api/admin/alert-rules/{id}:
|
|
314
365
|
$ref: ./paths/alert-rules.yaml#/~1api~1admin~1alert-rules~1{id}
|
|
366
|
+
/api/admin/alerts:
|
|
367
|
+
$ref: ./paths/alerts.yaml#/~1api~1admin~1alerts
|
|
368
|
+
/api/admin/alerts/{id}:
|
|
369
|
+
$ref: ./paths/alerts.yaml#/~1api~1admin~1alerts~1{id}
|
|
315
370
|
/api/admin/projects/current:
|
|
316
371
|
$ref: ./paths/projects.yaml#/~1api~1admin~1projects~1current
|
|
317
372
|
/api/admin/projects/upsert:
|
|
@@ -328,6 +383,10 @@ paths:
|
|
|
328
383
|
$ref: ./paths/i18n.yaml#/~1api~1admin~1i18n~1drafts
|
|
329
384
|
/api/admin/i18n/drafts/{draftId}:
|
|
330
385
|
$ref: ./paths/i18n.yaml#/~1api~1admin~1i18n~1drafts~1{draftId}
|
|
386
|
+
/api/admin/i18n/profiles/{profileId}:
|
|
387
|
+
$ref: ./paths/i18n.yaml#/~1api~1admin~1i18n~1profiles~1{profileId}
|
|
388
|
+
/api/admin/i18n/drafts/{draftId}/keys:
|
|
389
|
+
$ref: ./paths/i18n.yaml#/~1api~1admin~1i18n~1drafts~1{draftId}~1keys
|
|
331
390
|
/api/admin/i18n/profiles/{profileId}/publish:
|
|
332
391
|
$ref: ./paths/i18n.yaml#/~1api~1admin~1i18n~1profiles~1{profileId}~1publish
|
|
333
392
|
/api/admin/i18n/set:
|
|
@@ -338,6 +397,8 @@ paths:
|
|
|
338
397
|
$ref: ./paths/errors.yaml#/~1api~1admin~1errors~1{id}
|
|
339
398
|
/api/admin/errors/{id}/file:
|
|
340
399
|
$ref: ./paths/errors.yaml#/~1api~1admin~1errors~1{id}~1file
|
|
400
|
+
/api/admin/errors/{id}/resolve:
|
|
401
|
+
$ref: ./paths/errors.yaml#/~1api~1admin~1errors~1{id}~1resolve
|
|
341
402
|
/api/admin/errors/{id}/series:
|
|
342
403
|
$ref: ./paths/errors.yaml#/~1api~1admin~1errors~1{id}~1series
|
|
343
404
|
/api/admin/connectors:
|