@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.
Files changed (151) hide show
  1. package/README.md +37 -0
  2. package/dist/chunk-EPLLHLZN.js +1616 -0
  3. package/dist/chunk-EPLLHLZN.js.map +1 -0
  4. package/dist/chunk-SPH5HWCD.js +3326 -0
  5. package/dist/chunk-SPH5HWCD.js.map +1 -0
  6. package/dist/client-pVkoo3Bf.d.ts +11186 -0
  7. package/dist/client.d.ts +1 -0
  8. package/dist/client.js +215 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/custom.d.ts +64 -0
  11. package/dist/custom.js +292 -0
  12. package/dist/custom.js.map +1 -0
  13. package/dist/index.d.ts +29 -41
  14. package/dist/index.js +258 -4375
  15. package/dist/index.js.map +1 -0
  16. package/dist/node-context.d.ts +81 -33
  17. package/dist/node-context.js +98 -44
  18. package/dist/node-context.js.map +1 -0
  19. package/dist/schemas.d.ts +7920 -0
  20. package/dist/schemas.js +1083 -0
  21. package/dist/schemas.js.map +1 -0
  22. package/openapi.json +15297 -3044
  23. package/openapi.yaml +13979 -0
  24. package/package.json +33 -26
  25. package/spec/components/errors.yaml +53 -0
  26. package/spec/components/parameters.yaml +24 -0
  27. package/spec/components/responses.yaml +107 -0
  28. package/spec/components/schemas/alert-rules.yaml +175 -0
  29. package/spec/components/schemas/attributes.yaml +157 -0
  30. package/spec/components/schemas/common.yaml +87 -0
  31. package/spec/components/schemas/configs.yaml +371 -0
  32. package/spec/components/schemas/connectors.yaml +593 -0
  33. package/spec/components/schemas/errors-api.yaml +209 -0
  34. package/spec/components/schemas/events.yaml +321 -0
  35. package/spec/components/schemas/experiments.yaml +865 -0
  36. package/spec/components/schemas/gate-templates.yaml +198 -0
  37. package/spec/components/schemas/gates.yaml +890 -0
  38. package/spec/components/schemas/i18n.yaml +478 -0
  39. package/spec/components/schemas/keys.yaml +186 -0
  40. package/spec/components/schemas/killswitches.yaml +309 -0
  41. package/spec/components/schemas/metrics.yaml +547 -0
  42. package/spec/components/schemas/ops.yaml +1011 -0
  43. package/spec/components/schemas/projects.yaml +222 -0
  44. package/spec/components/schemas/search.yaml +46 -0
  45. package/spec/components/schemas/universes.yaml +127 -0
  46. package/spec/openapi.yaml +348 -0
  47. package/spec/paths/alert-rules.yaml +250 -0
  48. package/spec/paths/attributes.yaml +261 -0
  49. package/spec/paths/configs.yaml +744 -0
  50. package/spec/paths/connectors.yaml +748 -0
  51. package/spec/paths/errors.yaml +382 -0
  52. package/spec/paths/events.yaml +366 -0
  53. package/spec/paths/experiments.yaml +777 -0
  54. package/spec/paths/gate-templates.yaml +263 -0
  55. package/spec/paths/gates.yaml +451 -0
  56. package/spec/paths/i18n.yaml +544 -0
  57. package/spec/paths/keys.yaml +181 -0
  58. package/spec/paths/killswitches.yaml +557 -0
  59. package/spec/paths/metrics.yaml +302 -0
  60. package/spec/paths/ops.yaml +446 -0
  61. package/spec/paths/projects.yaml +210 -0
  62. package/spec/paths/search.yaml +62 -0
  63. package/spec/paths/universes.yaml +247 -0
  64. package/dist/operations/attributes.d.ts +0 -33
  65. package/dist/operations/attributes.js +0 -16
  66. package/dist/operations/cli-adapter.d.ts +0 -35
  67. package/dist/operations/cli-adapter.js +0 -91
  68. package/dist/operations/coerce.d.ts +0 -32
  69. package/dist/operations/coerce.js +0 -53
  70. package/dist/operations/configs.d.ts +0 -28
  71. package/dist/operations/configs.js +0 -119
  72. package/dist/operations/docs.d.ts +0 -37
  73. package/dist/operations/docs.js +0 -39
  74. package/dist/operations/events.d.ts +0 -28
  75. package/dist/operations/events.js +0 -121
  76. package/dist/operations/experiments.d.ts +0 -28
  77. package/dist/operations/experiments.js +0 -280
  78. package/dist/operations/gates.d.ts +0 -28
  79. package/dist/operations/gates.js +0 -132
  80. package/dist/operations/i18n.d.ts +0 -28
  81. package/dist/operations/i18n.js +0 -121
  82. package/dist/operations/index.d.ts +0 -63
  83. package/dist/operations/index.js +0 -1751
  84. package/dist/operations/killswitches.d.ts +0 -28
  85. package/dist/operations/killswitches.js +0 -126
  86. package/dist/operations/mcp-adapter.d.ts +0 -35
  87. package/dist/operations/mcp-adapter.js +0 -94
  88. package/dist/operations/metrics.d.ts +0 -30
  89. package/dist/operations/metrics.js +0 -114
  90. package/dist/operations/ops.d.ts +0 -28
  91. package/dist/operations/ops.js +0 -313
  92. package/dist/operations/projects.d.ts +0 -28
  93. package/dist/operations/projects.js +0 -36
  94. package/dist/operations/sdk-docs.d.ts +0 -28
  95. package/dist/operations/sdk-docs.js +0 -160
  96. package/dist/operations/types.d.ts +0 -138
  97. package/dist/operations/types.js +0 -9
  98. package/dist/operations/universes.d.ts +0 -28
  99. package/dist/operations/universes.js +0 -93
  100. package/dist/operations/util.d.ts +0 -33
  101. package/dist/operations/util.js +0 -9
  102. package/dist/resources/alert-rules.d.ts +0 -50
  103. package/dist/resources/alert-rules.js +0 -75
  104. package/dist/resources/attributes.d.ts +0 -19
  105. package/dist/resources/attributes.js +0 -10
  106. package/dist/resources/configs.d.ts +0 -681
  107. package/dist/resources/configs.js +0 -509
  108. package/dist/resources/events.d.ts +0 -61
  109. package/dist/resources/events.js +0 -42
  110. package/dist/resources/experiments.d.ts +0 -849
  111. package/dist/resources/experiments.js +0 -707
  112. package/dist/resources/gates.d.ts +0 -808
  113. package/dist/resources/gates.js +0 -522
  114. package/dist/resources/i18n.d.ts +0 -84
  115. package/dist/resources/i18n.js +0 -60
  116. package/dist/resources/index.d.ts +0 -2767
  117. package/dist/resources/index.js +0 -2563
  118. package/dist/resources/killswitches.d.ts +0 -436
  119. package/dist/resources/killswitches.js +0 -514
  120. package/dist/resources/metrics.d.ts +0 -54
  121. package/dist/resources/metrics.js +0 -40
  122. package/dist/resources/ops.d.ts +0 -88
  123. package/dist/resources/ops.js +0 -36
  124. package/dist/resources/projects.d.ts +0 -54
  125. package/dist/resources/projects.js +0 -14
  126. package/dist/resources/universes.d.ts +0 -185
  127. package/dist/resources/universes.js +0 -234
  128. package/dist/schemas/alert-rules.d.ts +0 -65
  129. package/dist/schemas/alert-rules.js +0 -37
  130. package/dist/schemas/configs.d.ts +0 -154
  131. package/dist/schemas/configs.js +0 -134
  132. package/dist/schemas/constants.d.ts +0 -6
  133. package/dist/schemas/constants.js +0 -7
  134. package/dist/schemas/experiments.d.ts +0 -229
  135. package/dist/schemas/experiments.js +0 -221
  136. package/dist/schemas/folder.d.ts +0 -10
  137. package/dist/schemas/folder.js +0 -8
  138. package/dist/schemas/gates.d.ts +0 -386
  139. package/dist/schemas/gates.js +0 -190
  140. package/dist/schemas/index.d.ts +0 -11
  141. package/dist/schemas/index.js +0 -762
  142. package/dist/schemas/killswitches.d.ts +0 -110
  143. package/dist/schemas/killswitches.js +0 -226
  144. package/dist/schemas/metric-name.d.ts +0 -5
  145. package/dist/schemas/metric-name.js +0 -6
  146. package/dist/schemas/pagination.d.ts +0 -37
  147. package/dist/schemas/pagination.js +0 -44
  148. package/dist/schemas/universes.d.ts +0 -35
  149. package/dist/schemas/universes.js +0 -55
  150. package/dist/transport.d.ts +0 -30
  151. package/dist/transport.js +0 -44
@@ -0,0 +1,209 @@
1
+ ErrorRecord:
2
+ type: object
3
+ description: |-
4
+ A tracked production error — one row per distinct issue, keyed by `fingerprint`. Rows are never created by hand: an ingestion path (worker log drain / the `see()` SDK reporter) folds each occurrence into the matching row, bumping `count` and `lastSeenAt`. The admin surface only lists them, reads one, and flips `status`.
5
+
6
+ Field names are camelCase (the D1 row projected through Drizzle). Many columns are nullable because the reporting source may not supply them.
7
+ properties:
8
+ id:
9
+ type: string
10
+ description: Stable opaque error id.
11
+ projectId:
12
+ type: string
13
+ description: Project this issue belongs to.
14
+ fingerprint:
15
+ type: string
16
+ description: Stable dedupe key (hash of `errorType` + normalized `message` + consequence). Unique per project — every occurrence with the same fingerprint folds into this one row.
17
+ causedByFingerprint:
18
+ description: Fingerprint of the issue this one descends from — set when `see()` reported the same error (re-throw) or its `{ cause }` (wrap) at an inner boundary first. Points at another error's `fingerprint` in the same project (soft reference, no FK). `null` for a root issue.
19
+ anyOf:
20
+ - type: string
21
+ - type: "null"
22
+ message:
23
+ type: string
24
+ description: Error message text.
25
+ errorType:
26
+ description: Error class/name, e.g. `TypeError`. `null` when the source didn't supply one.
27
+ anyOf:
28
+ - type: string
29
+ - type: "null"
30
+ stack:
31
+ description: Stack trace of the latest occurrence, or `null` if none was captured.
32
+ anyOf:
33
+ - type: string
34
+ - type: "null"
35
+ source:
36
+ description: Where it surfaced — Worker name (`shipeasy`, `shipeasy-worker`) or `sdk-client` / `sdk-server`. `null` if unknown.
37
+ anyOf:
38
+ - type: string
39
+ - type: "null"
40
+ url:
41
+ description: Latest occurrence's raw URL (with ids intact), or `null`.
42
+ anyOf:
43
+ - type: string
44
+ - type: "null"
45
+ seenUrls:
46
+ description: 'Distinct, id-normalized route templates this issue has surfaced on, as a JSON-encoded string array (e.g. `["https://app/dashboard/#/gates"]`). UUIDs / numeric ids / opaque tokens are collapsed to `#` so the same route under different ids counts once. `null` if none recorded.'
47
+ anyOf:
48
+ - type: string
49
+ - type: "null"
50
+ subject:
51
+ description: Consequence subject — `<errorType> causes the <subject> to <outcome>`. `null` if no consequence was reported.
52
+ anyOf:
53
+ - type: string
54
+ - type: "null"
55
+ outcome:
56
+ description: Consequence outcome — see `subject`. `null` if no consequence was reported.
57
+ anyOf:
58
+ - type: string
59
+ - type: "null"
60
+ side:
61
+ description: Which SDK side reported it — `client` or `server`. `null` if unknown.
62
+ anyOf:
63
+ - type: string
64
+ - type: "null"
65
+ env:
66
+ description: Published env the reporting SDK ran against (e.g. `dev`, `staging`, `prod`). `null` if unknown.
67
+ anyOf:
68
+ - type: string
69
+ - type: "null"
70
+ kind:
71
+ description: "`see()` error kind. `null` when the source didn't classify the occurrence."
72
+ anyOf:
73
+ - type: string
74
+ enum:
75
+ - caught
76
+ - uncaught
77
+ - unhandled_rejection
78
+ - network
79
+ - violation
80
+ - type: "null"
81
+ lastExtrasJson:
82
+ description: Latest occurrence's sanitized extras, JSON-encoded. `null` if none.
83
+ anyOf:
84
+ - type: string
85
+ - type: "null"
86
+ sdkVersion:
87
+ description: "`@shipeasy/sdk` version of the latest occurrence, or `null`."
88
+ anyOf:
89
+ - type: string
90
+ - type: "null"
91
+ count:
92
+ type: integer
93
+ minimum: 1
94
+ description: Number of folded occurrences for this fingerprint.
95
+ status:
96
+ type: string
97
+ enum:
98
+ - open
99
+ - resolved
100
+ - ignored
101
+ description: "Triage state. `open` is the default; a `resolved` error reopens automatically (ingestion-side) if it recurs; `ignored` is sticky until flipped back here."
102
+ firstSeenAt:
103
+ type: string
104
+ description: ISO-8601 timestamp of the first folded occurrence.
105
+ lastSeenAt:
106
+ type: string
107
+ description: ISO-8601 timestamp of the most recent folded occurrence. Rows are ordered by this, descending.
108
+ createdAt:
109
+ type: string
110
+ description: ISO-8601 timestamp the row was created.
111
+ updatedAt:
112
+ type: string
113
+ description: ISO-8601 timestamp of the last mutation (e.g. a status flip).
114
+ required:
115
+ - id
116
+ - projectId
117
+ - fingerprint
118
+ - message
119
+ - count
120
+ - status
121
+ - firstSeenAt
122
+ - lastSeenAt
123
+ - createdAt
124
+ - updatedAt
125
+ additionalProperties: false
126
+ ListErrorsResponse:
127
+ type: array
128
+ description: A bare JSON array of tracked errors, ordered by `lastSeenAt` descending. There is no pagination envelope — `limit` caps the page size.
129
+ items:
130
+ $ref: "#/ErrorRecord"
131
+ UpdateErrorStatusRequest:
132
+ type: object
133
+ description: Body for `PATCH /api/admin/errors/{id}`. The only mutable field is `status` (open ⇄ resolved ⇄ ignored).
134
+ properties:
135
+ status:
136
+ type: string
137
+ enum:
138
+ - open
139
+ - resolved
140
+ - ignored
141
+ description: New triage state. `resolved` reopens automatically on recurrence; `ignored` is sticky.
142
+ required:
143
+ - status
144
+ additionalProperties: false
145
+ FileErrorTicketResponse:
146
+ type: object
147
+ description: |-
148
+ The feedback ticket that tracks this error. Idempotent — if an open `error` ticket already tracks this fingerprint (hand- or auto-filed), the existing one is returned instead of creating a duplicate.
149
+ properties:
150
+ id:
151
+ type: string
152
+ description: Feedback ticket id.
153
+ number:
154
+ type: integer
155
+ description: Human-facing per-project ticket number.
156
+ required:
157
+ - id
158
+ - number
159
+ additionalProperties: false
160
+ ErrorSeriesRequest:
161
+ type: object
162
+ description: |-
163
+ Time window for the occurrence series. Bounds are epoch **seconds** (Analytics Engine stores the occurrence timestamp in seconds). `to` must be strictly greater than `from`.
164
+ properties:
165
+ from:
166
+ type: integer
167
+ minimum: 0
168
+ description: Window start, epoch seconds (inclusive).
169
+ to:
170
+ type: integer
171
+ minimum: 0
172
+ description: Window end, epoch seconds (exclusive). Must be greater than `from`.
173
+ bucket:
174
+ type: integer
175
+ minimum: 60
176
+ maximum: 86400
177
+ default: 3600
178
+ description: Bucket width in seconds (60s–86400s/1d). Defaults to `3600` (hourly). Each returned point is floor-aligned to this width.
179
+ required:
180
+ - from
181
+ - to
182
+ additionalProperties: false
183
+ ErrorSeriesResponse:
184
+ type: object
185
+ description: Bucketed occurrence counts for one tracked error (by its fingerprint), plus the Analytics Engine SQL that produced them.
186
+ properties:
187
+ sql:
188
+ type: string
189
+ description: The Analytics Engine SQL executed to produce `rows` (echoed for transparency / debugging).
190
+ rows:
191
+ type: array
192
+ description: Bucketed occurrence series, ordered by `t` ascending.
193
+ items:
194
+ type: object
195
+ properties:
196
+ t:
197
+ type: integer
198
+ description: Bucket start, epoch seconds, floor-aligned to `bucket`.
199
+ v:
200
+ type: number
201
+ description: Occurrence count in the bucket (sample-interval weighted).
202
+ required:
203
+ - t
204
+ - v
205
+ additionalProperties: true
206
+ required:
207
+ - sql
208
+ - rows
209
+ additionalProperties: false
@@ -0,0 +1,321 @@
1
+ ListEventsResponse:
2
+ type: array
3
+ items:
4
+ type: object
5
+ properties:
6
+ id:
7
+ type: string
8
+ description: Stable opaque event id.
9
+ name:
10
+ type: string
11
+ description: Event name — the handle metric queries reference.
12
+ folder:
13
+ anyOf:
14
+ - description: "Optional folder name used to group items in the dashboard. Part of the SDK lookup key: an item in folder `checkout` named `new-cart` is referenced as `checkout/new-cart` from the SDK."
15
+ anyOf:
16
+ - type: string
17
+ maxLength: 256
18
+ pattern: ^[a-zA-Z0-9_-]+$
19
+ - type: "null"
20
+ - type: "null"
21
+ description: Folder the event is filed under, or `null` if at the root.
22
+ description:
23
+ anyOf:
24
+ - type: string
25
+ - type: "null"
26
+ description: Human-readable description, or `null` if none set.
27
+ properties:
28
+ type: array
29
+ items:
30
+ type: object
31
+ properties:
32
+ name:
33
+ type: string
34
+ minLength: 1
35
+ maxLength: 64
36
+ description: Property key, e.g. `amount` or `plan`.
37
+ type:
38
+ type: string
39
+ enum:
40
+ - string
41
+ - number
42
+ - boolean
43
+ description: Value type of the property as recorded on the event.
44
+ required:
45
+ default: false
46
+ description: Whether the property must be present on every emitted event.
47
+ type: boolean
48
+ description:
49
+ default: ""
50
+ description: Human-readable description of the property.
51
+ type: string
52
+ required:
53
+ - name
54
+ - type
55
+ additionalProperties: false
56
+ description: One typed property declared on a catalogued event.
57
+ description: Typed properties declared on the event.
58
+ pending:
59
+ type: integer
60
+ minimum: -9007199254740991
61
+ maximum: 9007199254740991
62
+ description: "`1` if this is an auto-discovered name awaiting approval (metrics on it fail until approved), `0` if approved/usable."
63
+ createdAt:
64
+ type: string
65
+ description: ISO-8601 timestamp of creation.
66
+ required:
67
+ - id
68
+ - name
69
+ - description
70
+ - properties
71
+ - pending
72
+ - createdAt
73
+ additionalProperties: false
74
+ description: A catalogued event.
75
+ description: Every catalogued event in the project (including pending auto-discovered names).
76
+ GetEventResponse:
77
+ type: object
78
+ properties:
79
+ id:
80
+ type: string
81
+ description: Stable opaque event id.
82
+ name:
83
+ type: string
84
+ description: Event name — the handle metric queries reference.
85
+ folder:
86
+ anyOf:
87
+ - description: "Optional folder name used to group items in the dashboard. Part of the SDK lookup key: an item in folder `checkout` named `new-cart` is referenced as `checkout/new-cart` from the SDK."
88
+ anyOf:
89
+ - type: string
90
+ maxLength: 256
91
+ pattern: ^[a-zA-Z0-9_-]+$
92
+ - type: "null"
93
+ - type: "null"
94
+ description: Folder the event is filed under, or `null` if at the root.
95
+ description:
96
+ anyOf:
97
+ - type: string
98
+ - type: "null"
99
+ description: Human-readable description, or `null` if none set.
100
+ properties:
101
+ type: array
102
+ items:
103
+ type: object
104
+ properties:
105
+ name:
106
+ type: string
107
+ minLength: 1
108
+ maxLength: 64
109
+ description: Property key, e.g. `amount` or `plan`.
110
+ type:
111
+ type: string
112
+ enum:
113
+ - string
114
+ - number
115
+ - boolean
116
+ description: Value type of the property as recorded on the event.
117
+ required:
118
+ default: false
119
+ description: Whether the property must be present on every emitted event.
120
+ type: boolean
121
+ description:
122
+ default: ""
123
+ description: Human-readable description of the property.
124
+ type: string
125
+ required:
126
+ - name
127
+ - type
128
+ additionalProperties: false
129
+ description: One typed property declared on a catalogued event.
130
+ description: Typed properties declared on the event.
131
+ pending:
132
+ type: integer
133
+ minimum: -9007199254740991
134
+ maximum: 9007199254740991
135
+ description: "`1` if this is an auto-discovered name awaiting approval (metrics on it fail until approved), `0` if approved/usable."
136
+ createdAt:
137
+ type: string
138
+ description: ISO-8601 timestamp of creation.
139
+ required:
140
+ - id
141
+ - name
142
+ - description
143
+ - properties
144
+ - pending
145
+ - createdAt
146
+ additionalProperties: false
147
+ description: A catalogued event.
148
+ CreateEventRequest:
149
+ type: object
150
+ properties:
151
+ name:
152
+ type: string
153
+ pattern: ^[a-zA-Z0-9_][a-zA-Z0-9_\-.]{0,127}$
154
+ description: Event name. Starts with a letter, digit, or `_`; letters, digits, `_`, `-`, `.`; max 128 chars. Immutable after create — this is the handle metric queries reference.
155
+ folder:
156
+ $ref: ./common.yaml#/Folder
157
+ description:
158
+ description: Optional human-readable description of the event.
159
+ type: string
160
+ properties:
161
+ default: []
162
+ description: Typed properties declared on the event. Defaults to an empty list.
163
+ type: array
164
+ items:
165
+ type: object
166
+ properties:
167
+ name:
168
+ type: string
169
+ minLength: 1
170
+ maxLength: 64
171
+ description: Property key, e.g. `amount` or `plan`.
172
+ type:
173
+ type: string
174
+ enum:
175
+ - string
176
+ - number
177
+ - boolean
178
+ description: Value type of the property as recorded on the event.
179
+ required:
180
+ default: false
181
+ description: Whether the property must be present on every emitted event.
182
+ type: boolean
183
+ description:
184
+ default: ""
185
+ description: Human-readable description of the property.
186
+ type: string
187
+ required:
188
+ - name
189
+ - type
190
+ additionalProperties: false
191
+ description: One typed property declared on a catalogued event.
192
+ required:
193
+ - name
194
+ additionalProperties: false
195
+ description: Body for `POST /api/admin/events`. Only `name` is required.
196
+ CreateEventResponse:
197
+ type: object
198
+ properties:
199
+ id:
200
+ type: string
201
+ description: Newly assigned event id.
202
+ name:
203
+ type: string
204
+ description: The event name that was registered.
205
+ required:
206
+ - id
207
+ - name
208
+ additionalProperties: false
209
+ description: Result of creating (or approving an existing pending) event.
210
+ UpdateEventRequest:
211
+ type: object
212
+ properties:
213
+ folder:
214
+ $ref: ./common.yaml#/Folder
215
+ description:
216
+ description: New description for the event.
217
+ type: string
218
+ properties:
219
+ description: Replaces the full property set (no merge). Omit to leave properties unchanged.
220
+ type: array
221
+ items:
222
+ type: object
223
+ properties:
224
+ name:
225
+ type: string
226
+ minLength: 1
227
+ maxLength: 64
228
+ description: Property key, e.g. `amount` or `plan`.
229
+ type:
230
+ type: string
231
+ enum:
232
+ - string
233
+ - number
234
+ - boolean
235
+ description: Value type of the property as recorded on the event.
236
+ required:
237
+ default: false
238
+ description: Whether the property must be present on every emitted event.
239
+ type: boolean
240
+ description:
241
+ default: ""
242
+ description: Human-readable description of the property.
243
+ type: string
244
+ required:
245
+ - name
246
+ - type
247
+ additionalProperties: false
248
+ description: One typed property declared on a catalogued event.
249
+ additionalProperties: false
250
+ description: Body for `PATCH /api/admin/events/{id}` and `POST /api/admin/events/{id}/approve`. All fields optional; `name` is immutable after create.
251
+ UpdateEventResponse:
252
+ type: object
253
+ properties:
254
+ id:
255
+ type: string
256
+ description: Event id that was updated.
257
+ required:
258
+ - id
259
+ additionalProperties: false
260
+ description: Result of updating or approving an event.
261
+ ApproveEventRequest:
262
+ type: object
263
+ properties:
264
+ folder:
265
+ $ref: ./common.yaml#/Folder
266
+ description:
267
+ description: New description for the event.
268
+ type: string
269
+ properties:
270
+ description: Replaces the full property set (no merge). Omit to leave properties unchanged.
271
+ type: array
272
+ items:
273
+ type: object
274
+ properties:
275
+ name:
276
+ type: string
277
+ minLength: 1
278
+ maxLength: 64
279
+ description: Property key, e.g. `amount` or `plan`.
280
+ type:
281
+ type: string
282
+ enum:
283
+ - string
284
+ - number
285
+ - boolean
286
+ description: Value type of the property as recorded on the event.
287
+ required:
288
+ default: false
289
+ description: Whether the property must be present on every emitted event.
290
+ type: boolean
291
+ description:
292
+ default: ""
293
+ description: Human-readable description of the property.
294
+ type: string
295
+ required:
296
+ - name
297
+ - type
298
+ additionalProperties: false
299
+ description: One typed property declared on a catalogued event.
300
+ additionalProperties: false
301
+ description: Body for `PATCH /api/admin/events/{id}` and `POST /api/admin/events/{id}/approve`. All fields optional; `name` is immutable after create.
302
+ ApproveEventResponse:
303
+ type: object
304
+ properties:
305
+ id:
306
+ type: string
307
+ description: Event id that was updated.
308
+ required:
309
+ - id
310
+ additionalProperties: false
311
+ description: Result of updating or approving an event.
312
+ DeleteEventResponse:
313
+ type: object
314
+ properties:
315
+ ok:
316
+ type: boolean
317
+ const: true
318
+ required:
319
+ - ok
320
+ additionalProperties: false
321
+ description: Confirmation that the event was archived.