@shipeasy/openapi 1.6.0 → 2.1.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/README.md +37 -0
- package/dist/chunk-EPLLHLZN.js +1616 -0
- package/dist/chunk-EPLLHLZN.js.map +1 -0
- package/dist/chunk-SPH5HWCD.js +3326 -0
- package/dist/chunk-SPH5HWCD.js.map +1 -0
- package/dist/client-pVkoo3Bf.d.ts +11186 -0
- package/dist/client.d.ts +1 -0
- package/dist/client.js +215 -0
- package/dist/client.js.map +1 -0
- package/dist/custom.d.ts +64 -0
- package/dist/custom.js +292 -0
- package/dist/custom.js.map +1 -0
- package/dist/index.d.ts +29 -41
- package/dist/index.js +258 -4375
- package/dist/index.js.map +1 -0
- package/dist/node-context.d.ts +81 -33
- package/dist/node-context.js +98 -44
- package/dist/node-context.js.map +1 -0
- package/dist/schemas.d.ts +7920 -0
- package/dist/schemas.js +1083 -0
- package/dist/schemas.js.map +1 -0
- package/openapi.json +15297 -3044
- package/openapi.yaml +13979 -0
- package/package.json +33 -26
- package/spec/components/errors.yaml +53 -0
- package/spec/components/parameters.yaml +24 -0
- package/spec/components/responses.yaml +107 -0
- package/spec/components/schemas/alert-rules.yaml +175 -0
- package/spec/components/schemas/attributes.yaml +157 -0
- package/spec/components/schemas/common.yaml +87 -0
- package/spec/components/schemas/configs.yaml +371 -0
- package/spec/components/schemas/connectors.yaml +593 -0
- package/spec/components/schemas/errors-api.yaml +209 -0
- package/spec/components/schemas/events.yaml +321 -0
- package/spec/components/schemas/experiments.yaml +865 -0
- package/spec/components/schemas/gate-templates.yaml +198 -0
- package/spec/components/schemas/gates.yaml +890 -0
- package/spec/components/schemas/i18n.yaml +478 -0
- package/spec/components/schemas/keys.yaml +186 -0
- package/spec/components/schemas/killswitches.yaml +309 -0
- package/spec/components/schemas/metrics.yaml +547 -0
- package/spec/components/schemas/ops.yaml +1011 -0
- package/spec/components/schemas/projects.yaml +222 -0
- package/spec/components/schemas/search.yaml +46 -0
- package/spec/components/schemas/universes.yaml +127 -0
- package/spec/openapi.yaml +348 -0
- package/spec/paths/alert-rules.yaml +250 -0
- package/spec/paths/attributes.yaml +261 -0
- package/spec/paths/configs.yaml +744 -0
- package/spec/paths/connectors.yaml +748 -0
- package/spec/paths/errors.yaml +382 -0
- package/spec/paths/events.yaml +366 -0
- package/spec/paths/experiments.yaml +777 -0
- package/spec/paths/gate-templates.yaml +263 -0
- package/spec/paths/gates.yaml +451 -0
- package/spec/paths/i18n.yaml +544 -0
- package/spec/paths/keys.yaml +181 -0
- package/spec/paths/killswitches.yaml +557 -0
- package/spec/paths/metrics.yaml +302 -0
- package/spec/paths/ops.yaml +446 -0
- package/spec/paths/projects.yaml +210 -0
- package/spec/paths/search.yaml +62 -0
- package/spec/paths/universes.yaml +247 -0
- package/dist/operations/attributes.d.ts +0 -33
- package/dist/operations/attributes.js +0 -16
- package/dist/operations/cli-adapter.d.ts +0 -35
- package/dist/operations/cli-adapter.js +0 -91
- package/dist/operations/coerce.d.ts +0 -32
- package/dist/operations/coerce.js +0 -53
- package/dist/operations/configs.d.ts +0 -28
- package/dist/operations/configs.js +0 -119
- package/dist/operations/docs.d.ts +0 -37
- package/dist/operations/docs.js +0 -39
- package/dist/operations/events.d.ts +0 -28
- package/dist/operations/events.js +0 -121
- package/dist/operations/experiments.d.ts +0 -28
- package/dist/operations/experiments.js +0 -280
- package/dist/operations/gates.d.ts +0 -28
- package/dist/operations/gates.js +0 -132
- package/dist/operations/i18n.d.ts +0 -28
- package/dist/operations/i18n.js +0 -121
- package/dist/operations/index.d.ts +0 -63
- package/dist/operations/index.js +0 -1751
- package/dist/operations/killswitches.d.ts +0 -28
- package/dist/operations/killswitches.js +0 -126
- package/dist/operations/mcp-adapter.d.ts +0 -35
- package/dist/operations/mcp-adapter.js +0 -94
- package/dist/operations/metrics.d.ts +0 -30
- package/dist/operations/metrics.js +0 -114
- package/dist/operations/ops.d.ts +0 -28
- package/dist/operations/ops.js +0 -313
- package/dist/operations/projects.d.ts +0 -28
- package/dist/operations/projects.js +0 -36
- package/dist/operations/sdk-docs.d.ts +0 -28
- package/dist/operations/sdk-docs.js +0 -160
- package/dist/operations/types.d.ts +0 -138
- package/dist/operations/types.js +0 -9
- package/dist/operations/universes.d.ts +0 -28
- package/dist/operations/universes.js +0 -93
- package/dist/operations/util.d.ts +0 -33
- package/dist/operations/util.js +0 -9
- package/dist/resources/alert-rules.d.ts +0 -50
- package/dist/resources/alert-rules.js +0 -75
- package/dist/resources/attributes.d.ts +0 -19
- package/dist/resources/attributes.js +0 -10
- package/dist/resources/configs.d.ts +0 -681
- package/dist/resources/configs.js +0 -509
- package/dist/resources/events.d.ts +0 -61
- package/dist/resources/events.js +0 -42
- package/dist/resources/experiments.d.ts +0 -849
- package/dist/resources/experiments.js +0 -707
- package/dist/resources/gates.d.ts +0 -808
- package/dist/resources/gates.js +0 -522
- package/dist/resources/i18n.d.ts +0 -84
- package/dist/resources/i18n.js +0 -60
- package/dist/resources/index.d.ts +0 -2767
- package/dist/resources/index.js +0 -2563
- package/dist/resources/killswitches.d.ts +0 -436
- package/dist/resources/killswitches.js +0 -514
- package/dist/resources/metrics.d.ts +0 -54
- package/dist/resources/metrics.js +0 -40
- package/dist/resources/ops.d.ts +0 -88
- package/dist/resources/ops.js +0 -36
- package/dist/resources/projects.d.ts +0 -54
- package/dist/resources/projects.js +0 -14
- package/dist/resources/universes.d.ts +0 -185
- package/dist/resources/universes.js +0 -234
- package/dist/schemas/alert-rules.d.ts +0 -65
- package/dist/schemas/alert-rules.js +0 -37
- package/dist/schemas/configs.d.ts +0 -154
- package/dist/schemas/configs.js +0 -134
- package/dist/schemas/constants.d.ts +0 -6
- package/dist/schemas/constants.js +0 -7
- package/dist/schemas/experiments.d.ts +0 -229
- package/dist/schemas/experiments.js +0 -221
- package/dist/schemas/folder.d.ts +0 -10
- package/dist/schemas/folder.js +0 -8
- package/dist/schemas/gates.d.ts +0 -386
- package/dist/schemas/gates.js +0 -190
- package/dist/schemas/index.d.ts +0 -11
- package/dist/schemas/index.js +0 -762
- package/dist/schemas/killswitches.d.ts +0 -110
- package/dist/schemas/killswitches.js +0 -226
- package/dist/schemas/metric-name.d.ts +0 -5
- package/dist/schemas/metric-name.js +0 -6
- package/dist/schemas/pagination.d.ts +0 -37
- package/dist/schemas/pagination.js +0 -44
- package/dist/schemas/universes.d.ts +0 -35
- package/dist/schemas/universes.js +0 -55
- package/dist/transport.d.ts +0 -30
- package/dist/transport.js +0 -44
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
GetCurrentProjectResponse:
|
|
2
|
+
type: object
|
|
3
|
+
properties:
|
|
4
|
+
id:
|
|
5
|
+
type: string
|
|
6
|
+
description: Stable opaque project id.
|
|
7
|
+
name:
|
|
8
|
+
type: string
|
|
9
|
+
description: Project name.
|
|
10
|
+
domain:
|
|
11
|
+
anyOf:
|
|
12
|
+
- type: string
|
|
13
|
+
- type: "null"
|
|
14
|
+
description: Project domain, or `null` if unset.
|
|
15
|
+
ownerEmail:
|
|
16
|
+
type: string
|
|
17
|
+
description: Email of the account that owns the project.
|
|
18
|
+
plan:
|
|
19
|
+
type: string
|
|
20
|
+
enum:
|
|
21
|
+
- free
|
|
22
|
+
- paid
|
|
23
|
+
description: Billing plan tier.
|
|
24
|
+
status:
|
|
25
|
+
type: string
|
|
26
|
+
enum:
|
|
27
|
+
- active
|
|
28
|
+
- inactive
|
|
29
|
+
description: Project lifecycle status.
|
|
30
|
+
subscriptionStatus:
|
|
31
|
+
type: string
|
|
32
|
+
description: Stripe subscription status (`none`, `active`, `trialing`, `past_due`, …).
|
|
33
|
+
billingInterval:
|
|
34
|
+
type: string
|
|
35
|
+
enum:
|
|
36
|
+
- monthly
|
|
37
|
+
- annual
|
|
38
|
+
description: Billing cadence.
|
|
39
|
+
currentPeriodEnd:
|
|
40
|
+
anyOf:
|
|
41
|
+
- type: string
|
|
42
|
+
- type: "null"
|
|
43
|
+
description: ISO-8601 end of the current billing period, or `null`.
|
|
44
|
+
trialEndsAt:
|
|
45
|
+
anyOf:
|
|
46
|
+
- type: string
|
|
47
|
+
- type: "null"
|
|
48
|
+
description: ISO-8601 trial end, or `null` if not trialing.
|
|
49
|
+
cancelAtPeriodEnd:
|
|
50
|
+
type: number
|
|
51
|
+
description: "`1` if the subscription is set to cancel at period end, else `0`."
|
|
52
|
+
moduleTranslations:
|
|
53
|
+
anyOf:
|
|
54
|
+
- type: boolean
|
|
55
|
+
- type: number
|
|
56
|
+
description: Whether the i18n/translations module is enabled.
|
|
57
|
+
moduleConfigs:
|
|
58
|
+
anyOf:
|
|
59
|
+
- type: boolean
|
|
60
|
+
- type: number
|
|
61
|
+
description: Whether the dynamic-configs module is enabled.
|
|
62
|
+
moduleGates:
|
|
63
|
+
anyOf:
|
|
64
|
+
- type: boolean
|
|
65
|
+
- type: number
|
|
66
|
+
description: Whether the feature-gates module is enabled.
|
|
67
|
+
moduleExperiments:
|
|
68
|
+
anyOf:
|
|
69
|
+
- type: boolean
|
|
70
|
+
- type: number
|
|
71
|
+
description: Whether the experiments module is enabled.
|
|
72
|
+
moduleFeedback:
|
|
73
|
+
anyOf:
|
|
74
|
+
- type: boolean
|
|
75
|
+
- type: number
|
|
76
|
+
description: Whether the feedback/ops module is enabled.
|
|
77
|
+
createdAt:
|
|
78
|
+
type: string
|
|
79
|
+
description: ISO-8601 timestamp of project creation.
|
|
80
|
+
updatedAt:
|
|
81
|
+
type: string
|
|
82
|
+
description: ISO-8601 timestamp of last update.
|
|
83
|
+
required:
|
|
84
|
+
- id
|
|
85
|
+
- name
|
|
86
|
+
- domain
|
|
87
|
+
- ownerEmail
|
|
88
|
+
- plan
|
|
89
|
+
- status
|
|
90
|
+
- subscriptionStatus
|
|
91
|
+
- billingInterval
|
|
92
|
+
- currentPeriodEnd
|
|
93
|
+
- trialEndsAt
|
|
94
|
+
- cancelAtPeriodEnd
|
|
95
|
+
- moduleTranslations
|
|
96
|
+
- moduleConfigs
|
|
97
|
+
- moduleGates
|
|
98
|
+
- moduleExperiments
|
|
99
|
+
- moduleFeedback
|
|
100
|
+
- createdAt
|
|
101
|
+
- updatedAt
|
|
102
|
+
additionalProperties: {}
|
|
103
|
+
description: The project the caller's auth header resolves to. The shape is open — additional project fields may be present.
|
|
104
|
+
UpsertProjectRequest:
|
|
105
|
+
type: object
|
|
106
|
+
properties:
|
|
107
|
+
domain:
|
|
108
|
+
type: string
|
|
109
|
+
minLength: 1
|
|
110
|
+
maxLength: 2048
|
|
111
|
+
pattern: '^(\*|(\*\.)?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?(\.[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)+)$'
|
|
112
|
+
description: 'Lowercase bare hostname (e.g. `acme.com`, `app.acme.com`, `*.acme.com`), or `*` to allow any origin. Full URLs with `https://` are not accepted. The project is keyed by `(owner_email, domain)`, so a second call with the same domain returns the existing project.'
|
|
113
|
+
name:
|
|
114
|
+
description: Human-readable project name. Defaults to the domain on first create.
|
|
115
|
+
type: string
|
|
116
|
+
minLength: 1
|
|
117
|
+
maxLength: 100
|
|
118
|
+
required:
|
|
119
|
+
- domain
|
|
120
|
+
additionalProperties: false
|
|
121
|
+
description: Body for `POST /api/admin/projects/upsert`. Only `domain` is required; the owner is resolved from the caller's session.
|
|
122
|
+
UpsertProjectResponse:
|
|
123
|
+
type: object
|
|
124
|
+
properties:
|
|
125
|
+
id:
|
|
126
|
+
type: string
|
|
127
|
+
description: Stable opaque project id.
|
|
128
|
+
name:
|
|
129
|
+
type: string
|
|
130
|
+
description: Project name (the supplied `name`, or the domain on first create).
|
|
131
|
+
domain:
|
|
132
|
+
anyOf:
|
|
133
|
+
- type: string
|
|
134
|
+
- type: "null"
|
|
135
|
+
description: Project domain, or `null` if unset.
|
|
136
|
+
owner_email:
|
|
137
|
+
type: string
|
|
138
|
+
description: Email of the account that owns the project.
|
|
139
|
+
created:
|
|
140
|
+
type: boolean
|
|
141
|
+
description: "`true` if this call created the project, `false` if it returned an existing one."
|
|
142
|
+
required:
|
|
143
|
+
- id
|
|
144
|
+
- name
|
|
145
|
+
- domain
|
|
146
|
+
- owner_email
|
|
147
|
+
- created
|
|
148
|
+
additionalProperties: false
|
|
149
|
+
description: Result of `POST /api/admin/projects/upsert`.
|
|
150
|
+
UpdateProjectRequest:
|
|
151
|
+
type: object
|
|
152
|
+
properties:
|
|
153
|
+
name:
|
|
154
|
+
type: string
|
|
155
|
+
minLength: 1
|
|
156
|
+
maxLength: 120
|
|
157
|
+
description: New project name.
|
|
158
|
+
domain:
|
|
159
|
+
$ref: "#/UpsertProjectRequest/properties/domain"
|
|
160
|
+
slug:
|
|
161
|
+
type: string
|
|
162
|
+
minLength: 2
|
|
163
|
+
maxLength: 48
|
|
164
|
+
pattern: ^[a-z0-9](?:[a-z0-9-]{0,46}[a-z0-9])?$
|
|
165
|
+
description: URL-safe identifier used in app URLs and SDK config. Lowercase letters, numbers, and hyphens; 2–48 chars; cannot start or end with a hyphen. The caller lowercases the raw slug before sending.
|
|
166
|
+
defaultEnv:
|
|
167
|
+
type: string
|
|
168
|
+
enum:
|
|
169
|
+
- dev
|
|
170
|
+
- staging
|
|
171
|
+
- prod
|
|
172
|
+
description: Default environment new resources are scoped to.
|
|
173
|
+
timezone:
|
|
174
|
+
type: string
|
|
175
|
+
minLength: 1
|
|
176
|
+
maxLength: 64
|
|
177
|
+
description: IANA timezone the project's daily analysis runs in.
|
|
178
|
+
statMethod:
|
|
179
|
+
type: string
|
|
180
|
+
enum:
|
|
181
|
+
- sequential
|
|
182
|
+
- fixed
|
|
183
|
+
- bayesian
|
|
184
|
+
description: Statistical method the experiment analyzer uses.
|
|
185
|
+
sigThreshold:
|
|
186
|
+
type: string
|
|
187
|
+
enum:
|
|
188
|
+
- "0.01"
|
|
189
|
+
- "0.05"
|
|
190
|
+
- "0.10"
|
|
191
|
+
description: Significance threshold (alpha) for experiment analysis.
|
|
192
|
+
autoRollback:
|
|
193
|
+
type: boolean
|
|
194
|
+
description: Whether a failing guardrail auto-rolls back the experiment.
|
|
195
|
+
minSampleDays:
|
|
196
|
+
type: integer
|
|
197
|
+
minimum: 1
|
|
198
|
+
maximum: 365
|
|
199
|
+
description: Minimum number of days an experiment must run before it can be called.
|
|
200
|
+
moduleTranslations:
|
|
201
|
+
type: boolean
|
|
202
|
+
description: Enable/disable the i18n/translations module.
|
|
203
|
+
moduleConfigs:
|
|
204
|
+
type: boolean
|
|
205
|
+
description: Enable/disable the dynamic-configs module.
|
|
206
|
+
moduleGates:
|
|
207
|
+
type: boolean
|
|
208
|
+
description: Enable/disable the feature-gates module.
|
|
209
|
+
moduleExperiments:
|
|
210
|
+
type: boolean
|
|
211
|
+
description: Enable/disable the experiments module.
|
|
212
|
+
moduleFeedback:
|
|
213
|
+
type: boolean
|
|
214
|
+
description: Enable/disable the feedback/ops module.
|
|
215
|
+
moduleUser:
|
|
216
|
+
type: boolean
|
|
217
|
+
description: Enable/disable the user-management module.
|
|
218
|
+
moduleEvents:
|
|
219
|
+
type: boolean
|
|
220
|
+
description: Enable/disable the events module.
|
|
221
|
+
additionalProperties: false
|
|
222
|
+
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."
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
SearchResponse:
|
|
2
|
+
type: object
|
|
3
|
+
description: Flat, ranked-by-type list of search hits the command palette groups for display. Capped per resource family so one noisy type can't crowd out the rest.
|
|
4
|
+
properties:
|
|
5
|
+
hits:
|
|
6
|
+
type: array
|
|
7
|
+
items:
|
|
8
|
+
$ref: "#/SearchHit"
|
|
9
|
+
required:
|
|
10
|
+
- hits
|
|
11
|
+
additionalProperties: false
|
|
12
|
+
SearchHit:
|
|
13
|
+
type: object
|
|
14
|
+
description: A single universal-search hit. Field names are camelCase; `title` is `null` when the resource has no human title/display name (members fall back to a role label).
|
|
15
|
+
properties:
|
|
16
|
+
type:
|
|
17
|
+
type: string
|
|
18
|
+
enum:
|
|
19
|
+
- member
|
|
20
|
+
- gate
|
|
21
|
+
- experiment
|
|
22
|
+
- config
|
|
23
|
+
- killswitch
|
|
24
|
+
- metric
|
|
25
|
+
description: Resource family — drives the result group + icon in the palette. (`member` hits are surfaced first.)
|
|
26
|
+
id:
|
|
27
|
+
type: string
|
|
28
|
+
description: "Stable identifier used to deep-link into the row's detail pane. For `member` hits this is the teammate's email; for everything else it is the resource id."
|
|
29
|
+
name:
|
|
30
|
+
type: string
|
|
31
|
+
description: The matched handle — the resource's immutable `name`, or the member's display name (falling back to email).
|
|
32
|
+
title:
|
|
33
|
+
anyOf:
|
|
34
|
+
- type: string
|
|
35
|
+
- type: "null"
|
|
36
|
+
description: "Human title/display name when present, else `null`. For `member` hits this carries the email (or the `Owner`/`Member` role when no profile name is set)."
|
|
37
|
+
href:
|
|
38
|
+
type: string
|
|
39
|
+
description: Project-relative href that opens the row (e.g. `/gates?open=<id>`).
|
|
40
|
+
required:
|
|
41
|
+
- type
|
|
42
|
+
- id
|
|
43
|
+
- name
|
|
44
|
+
- title
|
|
45
|
+
- href
|
|
46
|
+
additionalProperties: false
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
ListUniversesResponse:
|
|
2
|
+
type: object
|
|
3
|
+
properties:
|
|
4
|
+
data:
|
|
5
|
+
type: array
|
|
6
|
+
items:
|
|
7
|
+
type: object
|
|
8
|
+
properties:
|
|
9
|
+
id:
|
|
10
|
+
type: string
|
|
11
|
+
description: Stable opaque universe id.
|
|
12
|
+
name:
|
|
13
|
+
type: string
|
|
14
|
+
maxLength: 128
|
|
15
|
+
pattern: ^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?)?$
|
|
16
|
+
description: Stable universe key. Single segment or `folder.name`. Lowercase letters, digits, `_` or `-`; max 128 chars. Immutable after create.
|
|
17
|
+
unitType:
|
|
18
|
+
type: string
|
|
19
|
+
description: Unit of randomisation. Snake-case in request (`unit_type`), camelCase in response.
|
|
20
|
+
holdoutRange:
|
|
21
|
+
anyOf:
|
|
22
|
+
- type: array
|
|
23
|
+
items:
|
|
24
|
+
type: number
|
|
25
|
+
minItems: 2
|
|
26
|
+
maxItems: 2
|
|
27
|
+
- type: "null"
|
|
28
|
+
description: Reserved holdout bucket range, or `null` if none.
|
|
29
|
+
createdAt:
|
|
30
|
+
type: string
|
|
31
|
+
description: ISO-8601 timestamp of creation.
|
|
32
|
+
required:
|
|
33
|
+
- id
|
|
34
|
+
- name
|
|
35
|
+
- unitType
|
|
36
|
+
- holdoutRange
|
|
37
|
+
- createdAt
|
|
38
|
+
additionalProperties: false
|
|
39
|
+
next_cursor:
|
|
40
|
+
anyOf:
|
|
41
|
+
- type: string
|
|
42
|
+
- type: "null"
|
|
43
|
+
required:
|
|
44
|
+
- data
|
|
45
|
+
- next_cursor
|
|
46
|
+
additionalProperties: false
|
|
47
|
+
CreateUniverseRequest:
|
|
48
|
+
type: object
|
|
49
|
+
properties:
|
|
50
|
+
name:
|
|
51
|
+
type: string
|
|
52
|
+
maxLength: 128
|
|
53
|
+
pattern: ^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?)?$
|
|
54
|
+
description: Stable universe key. Single segment or `folder.name`. Lowercase letters, digits, `_` or `-`; max 128 chars. Immutable after create.
|
|
55
|
+
folder:
|
|
56
|
+
$ref: ./common.yaml#/Folder
|
|
57
|
+
unit_type:
|
|
58
|
+
default: user_id
|
|
59
|
+
description: Unit of randomisation. Typically `user_id`. Use `account_id` to keep whole accounts in the same group across an experiment.
|
|
60
|
+
type: string
|
|
61
|
+
holdout_range:
|
|
62
|
+
default: null
|
|
63
|
+
anyOf:
|
|
64
|
+
- type: array
|
|
65
|
+
items:
|
|
66
|
+
type: integer
|
|
67
|
+
minimum: 0
|
|
68
|
+
maximum: 9999
|
|
69
|
+
minItems: 2
|
|
70
|
+
maxItems: 2
|
|
71
|
+
- type: "null"
|
|
72
|
+
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.
|
|
73
|
+
required:
|
|
74
|
+
- name
|
|
75
|
+
additionalProperties: false
|
|
76
|
+
description: Body for `POST /api/admin/universes`. Only `name` is required.
|
|
77
|
+
CreateUniverseResponse:
|
|
78
|
+
type: object
|
|
79
|
+
properties:
|
|
80
|
+
id:
|
|
81
|
+
type: string
|
|
82
|
+
description: Newly assigned universe id.
|
|
83
|
+
name:
|
|
84
|
+
type: string
|
|
85
|
+
maxLength: 128
|
|
86
|
+
pattern: ^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?)?$
|
|
87
|
+
description: Stable universe key. Single segment or `folder.name`. Lowercase letters, digits, `_` or `-`; max 128 chars. Immutable after create.
|
|
88
|
+
required:
|
|
89
|
+
- id
|
|
90
|
+
- name
|
|
91
|
+
additionalProperties: false
|
|
92
|
+
UpdateUniverseRequest:
|
|
93
|
+
type: object
|
|
94
|
+
properties:
|
|
95
|
+
folder:
|
|
96
|
+
$ref: ./common.yaml#/Folder
|
|
97
|
+
holdout_range:
|
|
98
|
+
anyOf:
|
|
99
|
+
- type: array
|
|
100
|
+
items:
|
|
101
|
+
type: integer
|
|
102
|
+
minimum: 0
|
|
103
|
+
maximum: 9999
|
|
104
|
+
minItems: 2
|
|
105
|
+
maxItems: 2
|
|
106
|
+
- type: "null"
|
|
107
|
+
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.
|
|
108
|
+
additionalProperties: false
|
|
109
|
+
description: Body for `PATCH /api/admin/universes/{id}`. Only `holdout_range` is mutable — name and unit_type are immutable after create.
|
|
110
|
+
UpdateUniverseResponse:
|
|
111
|
+
type: object
|
|
112
|
+
properties:
|
|
113
|
+
id:
|
|
114
|
+
type: string
|
|
115
|
+
description: Universe id that was updated.
|
|
116
|
+
required:
|
|
117
|
+
- id
|
|
118
|
+
additionalProperties: false
|
|
119
|
+
DeleteUniverseResponse:
|
|
120
|
+
type: object
|
|
121
|
+
properties:
|
|
122
|
+
ok:
|
|
123
|
+
type: boolean
|
|
124
|
+
const: true
|
|
125
|
+
required:
|
|
126
|
+
- ok
|
|
127
|
+
additionalProperties: false
|