@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.
Files changed (41) hide show
  1. package/dist/{chunk-EPLLHLZN.js → chunk-643YSMLU.js} +1 -1
  2. package/dist/{chunk-EPLLHLZN.js.map → chunk-643YSMLU.js.map} +1 -1
  3. package/dist/{chunk-SPH5HWCD.js → chunk-MRW3DJ57.js} +147 -88
  4. package/dist/chunk-MRW3DJ57.js.map +1 -0
  5. package/dist/{client-pVkoo3Bf.d.ts → client-K0ShmsC7.d.ts} +196 -98
  6. package/dist/client.d.ts +1 -1
  7. package/dist/client.js +1 -1
  8. package/dist/custom.d.ts +23 -1
  9. package/dist/custom.js +8 -0
  10. package/dist/custom.js.map +1 -1
  11. package/dist/index.d.ts +2 -2
  12. package/dist/index.js +2 -2
  13. package/dist/schemas.d.ts +85 -32
  14. package/dist/schemas.js +17 -1
  15. package/openapi.json +533 -96
  16. package/openapi.yaml +390 -92
  17. package/package.json +1 -1
  18. package/spec/components/parameters.yaml +8 -0
  19. package/spec/components/responses.yaml +15 -0
  20. package/spec/components/schemas/common.yaml +5 -0
  21. package/spec/components/schemas/connectors.yaml +5 -11
  22. package/spec/components/schemas/gate-templates.yaml +41 -2
  23. package/spec/components/schemas/ops.yaml +4 -2
  24. package/spec/openapi.yaml +21 -2
  25. package/spec/paths/alert-rules.yaml +10 -2
  26. package/spec/paths/attributes.yaml +14 -3
  27. package/spec/paths/configs.yaml +23 -9
  28. package/spec/paths/connectors.yaml +42 -8
  29. package/spec/paths/errors.yaml +4 -4
  30. package/spec/paths/events.yaml +18 -4
  31. package/spec/paths/experiments.yaml +37 -11
  32. package/spec/paths/gate-templates.yaml +9 -5
  33. package/spec/paths/gates.yaml +20 -6
  34. package/spec/paths/i18n.yaml +18 -5
  35. package/spec/paths/keys.yaml +2 -1
  36. package/spec/paths/killswitches.yaml +23 -6
  37. package/spec/paths/metrics.yaml +14 -3
  38. package/spec/paths/ops.yaml +3 -3
  39. package/spec/paths/projects.yaml +1 -1
  40. package/spec/paths/universes.yaml +10 -2
  41. package/dist/chunk-SPH5HWCD.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shipeasy/openapi",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "Shipeasy admin OpenAPI 3.2 spec (hand-authored, single source of truth) + the generated TypeScript client, Zod schemas, and types. Consumed by @shipeasy/cli and @shipeasy/mcp.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,3 +22,11 @@ PaginationCursor:
22
22
  description: Opaque cursor returned in the previous page's `next_cursor`. Omit for the first page.
23
23
  schema:
24
24
  type: string
25
+ Q:
26
+ name: q
27
+ in: query
28
+ required: false
29
+ 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.
30
+ schema:
31
+ type: string
32
+ maxLength: 100
@@ -105,3 +105,18 @@ UnprocessableEntity:
105
105
  value:
106
106
  error: The referenced event is still pending review and cannot back a metric yet.
107
107
  code: EVENT_PENDING
108
+ BadGateway:
109
+ description: |-
110
+ The request was well-formed and the resource exists, but a downstream provider
111
+ the endpoint delegates to (e.g. a connector's Slack/GitHub/cloud-agent dispatch)
112
+ failed. The failure is upstream of this API, not a client error. No stable
113
+ `ErrorCode` is assigned to upstream failures, so `code` is omitted.
114
+ content:
115
+ application/json:
116
+ schema:
117
+ $ref: ./errors.yaml#/Error
118
+ examples:
119
+ UPSTREAM_FAILURE:
120
+ summary: Downstream provider dispatch failed
121
+ value:
122
+ error: "GitHub API responded 403: resource not accessible by integration."
@@ -1,4 +1,9 @@
1
1
  # Cross-cutting shared schemas referenced from multiple resources.
2
+ ResourceId:
3
+ type: string
4
+ minLength: 1
5
+ maxLength: 128
6
+ 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.
2
7
  Env:
3
8
  type: string
4
9
  enum:
@@ -564,30 +564,24 @@ FireConnectorResponse:
564
564
  properties:
565
565
  ok:
566
566
  type: boolean
567
- description: "`true` when the trigger run was successfully kicked off; `false` when the dispatch itself failed (still HTTP 200, with `error` set)."
568
- error:
569
- type: string
570
- description: "Failure reason. Present only when `ok` is `false` — the fire reached the handler but the underlying dispatch to the provider failed."
567
+ description: "Always `true` — a successful fire returns HTTP 200. A dispatch failure returns HTTP 502 with the `Error` envelope, not this body."
571
568
  required:
572
569
  - ok
573
570
  additionalProperties: false
574
- description: "Result of firing a trigger connector. `{ ok: true }` on success; `{ ok: false, error }` when the dispatch fails (the request still returns HTTP 200)."
571
+ 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`."
575
572
  TestConnectorResponse:
576
573
  type: object
577
574
  properties:
578
575
  ok:
579
576
  type: boolean
580
- description: "`true` when the test dispatch reached the destination; `false` when the dispatch itself failed (still HTTP 200, with `error` set)."
577
+ description: "Always `true` — a successful test returns HTTP 200. A dispatch failure returns HTTP 502 with the `Error` envelope, not this body."
581
578
  issueUrl:
582
579
  anyOf:
583
580
  - type: string
584
581
  - type: "null"
585
- 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 (or the dispatch failed)."
586
- error:
587
- type: string
588
- description: "Failure reason. Present only when `ok` is `false` — the test reached the handler but the underlying dispatch to the provider failed."
582
+ 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."
589
583
  required:
590
584
  - ok
591
585
  - issueUrl
592
586
  additionalProperties: false
593
- description: "Result of testing a connector. `{ ok: true, issueUrl }` on success; `{ ok: false, issueUrl: null, error }` when the dispatch fails (the request still returns HTTP 200)."
587
+ 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`."
@@ -25,13 +25,52 @@ GateTemplateRule:
25
25
  - exp_in
26
26
  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\"`)."
27
27
  value:
28
- 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`.'
28
+ 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).'
29
+ anyOf:
30
+ - type: string
31
+ - type: number
32
+ - type: boolean
33
+ - type: array
34
+ items: {}
29
35
  required:
30
36
  - attr
31
37
  - op
32
38
  - value
33
39
  additionalProperties: false
34
40
  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`.
41
+ GateTemplateRuleResponse:
42
+ type: object
43
+ properties:
44
+ attr:
45
+ type: string
46
+ 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).
47
+ op:
48
+ type: string
49
+ enum:
50
+ - eq
51
+ - neq
52
+ - in
53
+ - not_in
54
+ - gt
55
+ - gte
56
+ - lt
57
+ - lte
58
+ - contains
59
+ - regex
60
+ - semver_gt
61
+ - semver_gte
62
+ - semver_lt
63
+ - semver_lte
64
+ - gate_pass
65
+ - exp_in
66
+ 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\"`)."
67
+ value:
68
+ 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`.'
69
+ required:
70
+ - attr
71
+ - op
72
+ additionalProperties: false
73
+ 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`.
35
74
  GateTemplate:
36
75
  type: object
37
76
  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."
@@ -65,7 +104,7 @@ GateTemplate:
65
104
  rules:
66
105
  type: array
67
106
  items:
68
- $ref: "#/GateTemplateRule"
107
+ $ref: "#/GateTemplateRuleResponse"
69
108
  description: The rule definition — copy, substitute the value(s), pass as `rules`.
70
109
  createdAt:
71
110
  anyOf:
@@ -946,8 +946,10 @@ NotifyOpsRequest:
946
946
  items:
947
947
  type: string
948
948
  href:
949
- description: Dashboard-relative deep link to the related item.
950
- type: string
949
+ description: Dashboard-relative deep link to the related item. `null` is accepted and treated as "no link".
950
+ anyOf:
951
+ - type: string
952
+ - type: "null"
951
953
  dedupeKey:
952
954
  description: Stable per-escalation key (e.g. `feedback:7`) so re-runs dedupe to one row.
953
955
  type: string
package/spec/openapi.yaml CHANGED
@@ -21,9 +21,28 @@ security:
21
21
  - bearerSdkKey: []
22
22
  tags:
23
23
  - name: Release
24
- summary: Feature delivery
24
+ summary: >-
25
+ Feature delivery — flags, kill switches, dynamic configs, A/B experiments,
26
+ and the universes they bucket in.
25
27
  kind: nav
26
- description: Flags, kill switches, dynamic configs, experiments, and the universes they bucket in — the feature-delivery surface.
28
+ description: |-
29
+ Release: the feature-delivery surface. One roof over the five resources
30
+ that decide which code path a user gets — feature gates (flags), kill
31
+ switches, dynamic configs, A/B/n experiments, and the universes that bucket
32
+ them — each exposed as its own subcommand group.
33
+
34
+ **Groups.**
35
+ - `flags` — boolean feature gates: AND-combined targeting rules + a percentage rollout (basis points), evaluated on the SDK hot path.
36
+ - `killswitch` (`ks`) — per-env boolean overrides for incident response; no rules, no rollout, versioned per environment.
37
+ - `configs` — JSON-Schema-validated structured values with a draft → publish workflow, delivered per environment.
38
+ - `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.
39
+
40
+ **Delivery model.** Every write rebuilds the project's KV blob and purges
41
+ the CDN — SDKs poll at the plan interval and never touch the database on
42
+ the hot path. The destructive verb is `archive` (soft-delete), never
43
+ `delete`.
44
+
45
+ Run `shipeasy release <group> --help` for the full contract of each group.
27
46
  - name: Flags
28
47
  parent: Release
29
48
  description: |-
@@ -10,6 +10,7 @@
10
10
  - Alerts
11
11
  parameters:
12
12
  - $ref: ../components/parameters.yaml#/ProjectId
13
+ - $ref: ../components/parameters.yaml#/Q
13
14
  responses:
14
15
  "200":
15
16
  description: List alert rules
@@ -103,6 +104,13 @@
103
104
  $ref: ../components/schemas/alert-rules.yaml#/CreateAlertRuleResponse
104
105
  example:
105
106
  id: ar_01j7w8a1b2c3d4e5f6g7h8i9j0
107
+ links:
108
+ UpdateAlertRule:
109
+ operationId: updateAlertRule
110
+ parameters: { id: $response.body#/id }
111
+ DeleteAlertRule:
112
+ operationId: deleteAlertRule
113
+ parameters: { id: $response.body#/id }
106
114
  "400":
107
115
  $ref: ../components/responses.yaml#/BadRequest
108
116
  "401":
@@ -146,7 +154,7 @@
146
154
  required: true
147
155
  description: Stable opaque alert-rule id (`ar_…`) or the rule's `name`.
148
156
  schema:
149
- type: string
157
+ $ref: ../components/schemas/common.yaml#/ResourceId
150
158
  requestBody:
151
159
  required: true
152
160
  content:
@@ -217,7 +225,7 @@
217
225
  required: true
218
226
  description: Stable opaque alert-rule id (`ar_…`) or the rule's `name`.
219
227
  schema:
220
- type: string
228
+ $ref: ../components/schemas/common.yaml#/ResourceId
221
229
  responses:
222
230
  "200":
223
231
  description: Delete an alert rule
@@ -10,6 +10,7 @@
10
10
  - Attributes
11
11
  parameters:
12
12
  - $ref: ../components/parameters.yaml#/ProjectId
13
+ - $ref: ../components/parameters.yaml#/Q
13
14
  responses:
14
15
  "200":
15
16
  description: List targeting attributes
@@ -76,6 +77,16 @@
76
77
  example:
77
78
  id: attr_01j7w8a1b2c3
78
79
  name: plan
80
+ links:
81
+ GetAttribute:
82
+ operationId: getAttribute
83
+ parameters: { id: $response.body#/id }
84
+ UpdateAttribute:
85
+ operationId: updateAttribute
86
+ parameters: { id: $response.body#/id }
87
+ DeleteAttribute:
88
+ operationId: deleteAttribute
89
+ parameters: { id: $response.body#/id }
79
90
  "400":
80
91
  $ref: ../components/responses.yaml#/BadRequest
81
92
  "401":
@@ -115,7 +126,7 @@
115
126
  required: true
116
127
  description: The attribute id.
117
128
  schema:
118
- type: string
129
+ $ref: ../components/schemas/common.yaml#/ResourceId
119
130
  responses:
120
131
  "200":
121
132
  description: Get a targeting attribute
@@ -169,7 +180,7 @@
169
180
  required: true
170
181
  description: The attribute id.
171
182
  schema:
172
- type: string
183
+ $ref: ../components/schemas/common.yaml#/ResourceId
173
184
  requestBody:
174
185
  required: true
175
186
  content:
@@ -228,7 +239,7 @@
228
239
  required: true
229
240
  description: The attribute id.
230
241
  schema:
231
- type: string
242
+ $ref: ../components/schemas/common.yaml#/ResourceId
232
243
  responses:
233
244
  "200":
234
245
  description: Archive a targeting attribute
@@ -12,6 +12,7 @@
12
12
  - $ref: ../components/parameters.yaml#/ProjectId
13
13
  - $ref: ../components/parameters.yaml#/PaginationLimit
14
14
  - $ref: ../components/parameters.yaml#/PaginationCursor
15
+ - $ref: ../components/parameters.yaml#/Q
15
16
  responses:
16
17
  "200":
17
18
  description: List dynamic configs
@@ -160,6 +161,19 @@
160
161
  example:
161
162
  id: cfg_01j7wae5h6j7k8l9m0n1p2q3r4
162
163
  name: pricing.tiers
164
+ links:
165
+ GetConfig:
166
+ operationId: getConfig
167
+ parameters: { id: $response.body#/id }
168
+ UpdateConfig:
169
+ operationId: updateConfig
170
+ parameters: { id: $response.body#/id }
171
+ PublishConfigDraft:
172
+ operationId: publishConfigDraft
173
+ parameters: { id: $response.body#/id }
174
+ DeleteConfig:
175
+ operationId: deleteConfig
176
+ parameters: { id: $response.body#/id }
163
177
  "400":
164
178
  $ref: ../components/responses.yaml#/BadRequest
165
179
  "401":
@@ -199,7 +213,7 @@
199
213
  required: true
200
214
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
201
215
  schema:
202
- type: string
216
+ $ref: ../components/schemas/common.yaml#/ResourceId
203
217
  responses:
204
218
  "200":
205
219
  description: Get one config
@@ -301,7 +315,7 @@
301
315
  required: true
302
316
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
303
317
  schema:
304
- type: string
318
+ $ref: ../components/schemas/common.yaml#/ResourceId
305
319
  requestBody:
306
320
  required: true
307
321
  content:
@@ -377,7 +391,7 @@
377
391
  required: true
378
392
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
379
393
  schema:
380
- type: string
394
+ $ref: ../components/schemas/common.yaml#/ResourceId
381
395
  responses:
382
396
  "200":
383
397
  description: Delete a dynamic config
@@ -427,7 +441,7 @@
427
441
  required: true
428
442
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
429
443
  schema:
430
- type: string
444
+ $ref: ../components/schemas/common.yaml#/ResourceId
431
445
  requestBody:
432
446
  required: true
433
447
  content:
@@ -495,7 +509,7 @@
495
509
  required: true
496
510
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
497
511
  schema:
498
- type: string
512
+ $ref: ../components/schemas/common.yaml#/ResourceId
499
513
  requestBody:
500
514
  required: true
501
515
  content:
@@ -557,7 +571,7 @@
557
571
  required: true
558
572
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
559
573
  schema:
560
- type: string
574
+ $ref: ../components/schemas/common.yaml#/ResourceId
561
575
  requestBody:
562
576
  required: true
563
577
  content:
@@ -576,7 +590,7 @@
576
590
  value:
577
591
  env: prod
578
592
  responses:
579
- "201":
593
+ "200":
580
594
  description: Publish a draft
581
595
  content:
582
596
  application/json:
@@ -626,7 +640,7 @@
626
640
  required: true
627
641
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
628
642
  schema:
629
- type: string
643
+ $ref: ../components/schemas/common.yaml#/ResourceId
630
644
  - name: limit
631
645
  in: query
632
646
  required: false
@@ -690,7 +704,7 @@
690
704
  required: true
691
705
  description: Stable opaque config id (`cfg_…`) or the config's `name`.
692
706
  schema:
693
- type: string
707
+ $ref: ../components/schemas/common.yaml#/ResourceId
694
708
  requestBody:
695
709
  required: true
696
710
  content:
@@ -12,6 +12,7 @@
12
12
  - Connectors
13
13
  parameters:
14
14
  - $ref: ../components/parameters.yaml#/ProjectId
15
+ - $ref: ../components/parameters.yaml#/Q
15
16
  responses:
16
17
  "200":
17
18
  description: List connectors
@@ -130,6 +131,19 @@
130
131
  $ref: ../components/schemas/connectors.yaml#/CreateConnectorResponse
131
132
  example:
132
133
  id: 9b0e7c2a-1f3d-4a8e-bf21-0c6a2e5d7f10
134
+ links:
135
+ GetConnector:
136
+ operationId: getConnector
137
+ parameters: { id: $response.body#/id }
138
+ UpdateConnector:
139
+ operationId: updateConnector
140
+ parameters: { id: $response.body#/id }
141
+ TestConnector:
142
+ operationId: testConnector
143
+ parameters: { id: $response.body#/id }
144
+ DeleteConnector:
145
+ operationId: deleteConnector
146
+ parameters: { id: $response.body#/id }
133
147
  "400":
134
148
  $ref: ../components/responses.yaml#/BadRequest
135
149
  "401":
@@ -165,7 +179,7 @@
165
179
  required: true
166
180
  description: Stable opaque connector id.
167
181
  schema:
168
- type: string
182
+ $ref: ../components/schemas/common.yaml#/ResourceId
169
183
  responses:
170
184
  "200":
171
185
  description: Get a connector
@@ -233,7 +247,7 @@
233
247
  required: true
234
248
  description: Stable opaque connector id.
235
249
  schema:
236
- type: string
250
+ $ref: ../components/schemas/common.yaml#/ResourceId
237
251
  requestBody:
238
252
  required: true
239
253
  content:
@@ -306,7 +320,7 @@
306
320
  required: true
307
321
  description: Stable opaque connector id.
308
322
  schema:
309
- type: string
323
+ $ref: ../components/schemas/common.yaml#/ResourceId
310
324
  responses:
311
325
  "200":
312
326
  description: Delete a connector
@@ -355,7 +369,7 @@
355
369
  required: true
356
370
  description: Stable opaque connector id.
357
371
  schema:
358
- type: string
372
+ $ref: ../components/schemas/common.yaml#/ResourceId
359
373
  requestBody:
360
374
  required: false
361
375
  content:
@@ -373,7 +387,7 @@
373
387
  text: Triage only the P0 bugs reported in the last 24h.
374
388
  responses:
375
389
  "200":
376
- description: Fire a trigger connector
390
+ description: The trigger run was successfully kicked off.
377
391
  content:
378
392
  application/json:
379
393
  schema:
@@ -392,6 +406,8 @@
392
406
  $ref: ../components/responses.yaml#/Conflict
393
407
  "422":
394
408
  $ref: ../components/responses.yaml#/UnprocessableEntity
409
+ "502":
410
+ $ref: ../components/responses.yaml#/BadGateway
395
411
  x-error-codes:
396
412
  - UNAUTHORIZED
397
413
  - FORBIDDEN
@@ -419,10 +435,10 @@
419
435
  required: true
420
436
  description: Stable opaque connector id.
421
437
  schema:
422
- type: string
438
+ $ref: ../components/schemas/common.yaml#/ResourceId
423
439
  responses:
424
440
  "200":
425
- description: Test a connector
441
+ description: The test dispatch reached the destination.
426
442
  content:
427
443
  application/json:
428
444
  schema:
@@ -442,6 +458,8 @@
442
458
  $ref: ../components/responses.yaml#/Conflict
443
459
  "422":
444
460
  $ref: ../components/responses.yaml#/UnprocessableEntity
461
+ "502":
462
+ $ref: ../components/responses.yaml#/BadGateway
445
463
  x-error-codes:
446
464
  - UNAUTHORIZED
447
465
  - FORBIDDEN
@@ -471,7 +489,7 @@
471
489
  required: true
472
490
  description: Stable opaque connector id. Its stored `provider` must match the body's `provider`.
473
491
  schema:
474
- type: string
492
+ $ref: ../components/schemas/common.yaml#/ResourceId
475
493
  requestBody:
476
494
  required: true
477
495
  content:
@@ -577,6 +595,22 @@
577
595
  $ref: ../components/schemas/connectors.yaml#/CreateConnectorResponse
578
596
  example:
579
597
  id: 9b0e7c2a-1f3d-4a8e-bf21-0c6a2e5d7f10
598
+ links:
599
+ FireConnector:
600
+ operationId: fireConnector
601
+ parameters: { id: $response.body#/id }
602
+ TestConnector:
603
+ operationId: testConnector
604
+ parameters: { id: $response.body#/id }
605
+ GetConnector:
606
+ operationId: getConnector
607
+ parameters: { id: $response.body#/id }
608
+ UpdateTriggerConnector:
609
+ operationId: updateTriggerConnector
610
+ parameters: { id: $response.body#/id }
611
+ DeleteConnector:
612
+ operationId: deleteConnector
613
+ parameters: { id: $response.body#/id }
580
614
  "400":
581
615
  $ref: ../components/responses.yaml#/BadRequest
582
616
  "401":
@@ -108,7 +108,7 @@
108
108
  required: true
109
109
  description: Stable opaque error id (`err_…`).
110
110
  schema:
111
- type: string
111
+ $ref: ../components/schemas/common.yaml#/ResourceId
112
112
  responses:
113
113
  "200":
114
114
  description: Get a tracked error
@@ -183,7 +183,7 @@
183
183
  required: true
184
184
  description: Stable opaque error id (`err_…`).
185
185
  schema:
186
- type: string
186
+ $ref: ../components/schemas/common.yaml#/ResourceId
187
187
  requestBody:
188
188
  required: true
189
189
  content:
@@ -272,7 +272,7 @@
272
272
  required: true
273
273
  description: Stable opaque error id (`err_…`).
274
274
  schema:
275
- type: string
275
+ $ref: ../components/schemas/common.yaml#/ResourceId
276
276
  responses:
277
277
  "201":
278
278
  description: File a feedback ticket for an error
@@ -320,7 +320,7 @@
320
320
  required: true
321
321
  description: Stable opaque error id (`err_…`).
322
322
  schema:
323
- type: string
323
+ $ref: ../components/schemas/common.yaml#/ResourceId
324
324
  requestBody:
325
325
  required: true
326
326
  content:
@@ -10,6 +10,7 @@
10
10
  - Events
11
11
  parameters:
12
12
  - $ref: ../components/parameters.yaml#/ProjectId
13
+ - $ref: ../components/parameters.yaml#/Q
13
14
  responses:
14
15
  "200":
15
16
  description: List events
@@ -95,6 +96,19 @@
95
96
  example:
96
97
  id: evt_01j7w8a1b2c3d4e5f6g7h8i9j0
97
98
  name: checkout_completed
99
+ links:
100
+ GetEvent:
101
+ operationId: getEvent
102
+ parameters: { id: $response.body#/id }
103
+ UpdateEvent:
104
+ operationId: updateEvent
105
+ parameters: { id: $response.body#/id }
106
+ ApproveEvent:
107
+ operationId: approveEvent
108
+ parameters: { id: $response.body#/id }
109
+ DeleteEvent:
110
+ operationId: deleteEvent
111
+ parameters: { id: $response.body#/id }
98
112
  "400":
99
113
  $ref: ../components/responses.yaml#/BadRequest
100
114
  "401":
@@ -134,7 +148,7 @@
134
148
  required: true
135
149
  description: Stable opaque event id (`evt_…`) or the event's `name`.
136
150
  schema:
137
- type: string
151
+ $ref: ../components/schemas/common.yaml#/ResourceId
138
152
  responses:
139
153
  "200":
140
154
  description: Get an event
@@ -193,7 +207,7 @@
193
207
  required: true
194
208
  description: Stable opaque event id (`evt_…`) or the event's `name`.
195
209
  schema:
196
- type: string
210
+ $ref: ../components/schemas/common.yaml#/ResourceId
197
211
  requestBody:
198
212
  required: true
199
213
  content:
@@ -261,7 +275,7 @@
261
275
  required: true
262
276
  description: Stable opaque event id (`evt_…`) or the event's `name`.
263
277
  schema:
264
- type: string
278
+ $ref: ../components/schemas/common.yaml#/ResourceId
265
279
  responses:
266
280
  "200":
267
281
  description: Archive an event
@@ -312,7 +326,7 @@
312
326
  required: true
313
327
  description: Stable opaque event id (`evt_…`) or the event's `name`.
314
328
  schema:
315
- type: string
329
+ $ref: ../components/schemas/common.yaml#/ResourceId
316
330
  requestBody:
317
331
  required: true
318
332
  content: