@leaflow/sdk 0.33.0 → 0.35.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.
@@ -18,6 +18,10 @@ export type ListCreditTransactionsResult = operations["list-credit-transactions"
18
18
  export type ReadBillingAccountBalanceResult = operations["read-billing-account-balance"]["responses"][200]["content"]["application/json"];
19
19
  /** `PUT /account/v1/billing-accounts/{accountKey}/projects/{projectId}` 成功时的响应体。 */
20
20
  export type BindProjectToBillingAccountResult = operations["bind-project-to-billing-account"]["responses"][200]["content"]["application/json"];
21
+ /** `GET /account/v1/billing-accounts/{accountKey}/orders` 成功时的响应体。 */
22
+ export type ListOrdersResult = operations["list-orders"]["responses"][200]["content"]["application/json"];
23
+ /** `GET /account/v1/billing-accounts/{accountKey}/orders/{orderId}` 成功时的响应体。 */
24
+ export type GetOrderResult = operations["get-order"]["responses"][200]["content"]["application/json"];
21
25
  /** `GET /account/v1/billing-accounts/{accountKey}/top-ups` 成功时的响应体。 */
22
26
  export type ListTopUpsResult = operations["list-top-ups"]["responses"][200]["content"]["application/json"];
23
27
  /** `POST /account/v1/billing-accounts/{accountKey}/top-ups` 成功时的响应体。 */
@@ -167,6 +167,54 @@ export interface paths {
167
167
  patch?: never;
168
168
  trace?: never;
169
169
  };
170
+ "/account/v1/billing-accounts/{accountKey}/orders": {
171
+ parameters: {
172
+ query?: never;
173
+ header?: never;
174
+ path?: never;
175
+ cookie?: never;
176
+ };
177
+ /**
178
+ * My orders
179
+ * @description Every provisioning request made against the projects this account pays for, newest first.
180
+ *
181
+ * An order that never went through stays here on purpose. Removing it would leave nothing to
182
+ * look at in exactly the case someone wants to look: a resource was asked for, was not
183
+ * delivered, and the question is what happened.
184
+ *
185
+ * The list carries no lines. An order has only a handful, but shipping them on every page
186
+ * means carrying data no column shows.
187
+ */
188
+ get: operations["list-orders"];
189
+ put?: never;
190
+ post?: never;
191
+ delete?: never;
192
+ options?: never;
193
+ head?: never;
194
+ patch?: never;
195
+ trace?: never;
196
+ };
197
+ "/account/v1/billing-accounts/{accountKey}/orders/{orderId}": {
198
+ parameters: {
199
+ query?: never;
200
+ header?: never;
201
+ path?: never;
202
+ cookie?: never;
203
+ };
204
+ /**
205
+ * One order, with its lines
206
+ * @description Each line names what was asked for and how much of it. This is the only route that carries
207
+ * them.
208
+ */
209
+ get: operations["get-order"];
210
+ put?: never;
211
+ post?: never;
212
+ delete?: never;
213
+ options?: never;
214
+ head?: never;
215
+ patch?: never;
216
+ trace?: never;
217
+ };
170
218
  "/account/v1/billing-accounts/{accountKey}/top-ups": {
171
219
  parameters: {
172
220
  query?: never;
@@ -638,6 +686,36 @@ export interface components {
638
686
  UpdateBillingAccountRequestBody: {
639
687
  display_name: string;
640
688
  };
689
+ Order: {
690
+ id: string;
691
+ project_id: string;
692
+ placed_by: string;
693
+ /**
694
+ * @description Whether the request went through. It is not the state of what was provisioned: that
695
+ * belongs to each resource and outlives the order.
696
+ * @enum {string}
697
+ */
698
+ state: "pending" | "fulfilled" | "failed";
699
+ failure_reason?: string;
700
+ /** Format: date-time */
701
+ created_at: string;
702
+ /** @description Only present on the single-order route. */
703
+ lines?: components["schemas"]["OrderLine"][];
704
+ };
705
+ OrderLine: {
706
+ id: string;
707
+ /** @enum {string} */
708
+ action: "add" | "renew" | "modify" | "remove";
709
+ /** @description Which service holds the thing, for example `compute`. */
710
+ service: string;
711
+ /** @description That service's own catalogue identifier for what was asked for. */
712
+ product_id: string;
713
+ /** Format: int64 */
714
+ quantity: number;
715
+ };
716
+ OrderList: {
717
+ orders: components["schemas"]["Order"][];
718
+ };
641
719
  TopUpList: {
642
720
  top_ups: components["schemas"]["TopUpStatus"][];
643
721
  };
@@ -1251,6 +1329,77 @@ export interface operations {
1251
1329
  };
1252
1330
  };
1253
1331
  };
1332
+ "list-orders": {
1333
+ parameters: {
1334
+ query?: never;
1335
+ header?: never;
1336
+ path: {
1337
+ /**
1338
+ * @description The account's key, of the form `u_<user_id>_<seq>`. Ownership is stated by the key itself,
1339
+ * which is why the key is what addresses the account.
1340
+ */
1341
+ accountKey: components["parameters"]["AccountKey"];
1342
+ };
1343
+ cookie?: never;
1344
+ };
1345
+ requestBody?: never;
1346
+ responses: {
1347
+ /** @description OK */
1348
+ 200: {
1349
+ headers: {
1350
+ [name: string]: unknown;
1351
+ };
1352
+ content: {
1353
+ "application/json": components["schemas"]["OrderList"];
1354
+ };
1355
+ };
1356
+ /** @description Error */
1357
+ default: {
1358
+ headers: {
1359
+ [name: string]: unknown;
1360
+ };
1361
+ content: {
1362
+ "application/json": components["schemas"]["Error"];
1363
+ };
1364
+ };
1365
+ };
1366
+ };
1367
+ "get-order": {
1368
+ parameters: {
1369
+ query?: never;
1370
+ header?: never;
1371
+ path: {
1372
+ /**
1373
+ * @description The account's key, of the form `u_<user_id>_<seq>`. Ownership is stated by the key itself,
1374
+ * which is why the key is what addresses the account.
1375
+ */
1376
+ accountKey: components["parameters"]["AccountKey"];
1377
+ orderId: string;
1378
+ };
1379
+ cookie?: never;
1380
+ };
1381
+ requestBody?: never;
1382
+ responses: {
1383
+ /** @description OK */
1384
+ 200: {
1385
+ headers: {
1386
+ [name: string]: unknown;
1387
+ };
1388
+ content: {
1389
+ "application/json": components["schemas"]["Order"];
1390
+ };
1391
+ };
1392
+ /** @description Error */
1393
+ default: {
1394
+ headers: {
1395
+ [name: string]: unknown;
1396
+ };
1397
+ content: {
1398
+ "application/json": components["schemas"]["Error"];
1399
+ };
1400
+ };
1401
+ };
1402
+ };
1254
1403
  "list-top-ups": {
1255
1404
  parameters: {
1256
1405
  query?: never;
@@ -16,8 +16,12 @@ export type CountUnreadNotificationsQuery = operations["count-unread-notificatio
16
16
  export type GetNotificationResult = operations["get-notification"]["responses"][200]["content"]["application/json"];
17
17
  /** `POST /api/v1/notifications/{notificationId}/read` 成功时的响应体。 */
18
18
  export type MarkNotificationReadResult = operations["mark-notification-read"]["responses"][200]["content"]["application/json"];
19
+ /** `DELETE /api/v1/notifications/{notificationId}/read` 成功时的响应体。 */
20
+ export type MarkNotificationUnreadResult = operations["mark-notification-unread"]["responses"][200]["content"]["application/json"];
19
21
  /** `POST /api/v1/notifications/{notificationId}/archive` 成功时的响应体。 */
20
22
  export type ArchiveNotificationResult = operations["archive-notification"]["responses"][200]["content"]["application/json"];
23
+ /** `DELETE /api/v1/notifications/{notificationId}/archive` 成功时的响应体。 */
24
+ export type UnarchiveNotificationResult = operations["unarchive-notification"]["responses"][200]["content"]["application/json"];
21
25
  /** `GET /api/v1/announcements` 成功时的响应体。 */
22
26
  export type ListAnnouncementsResult = operations["list-announcements"]["responses"][200]["content"]["application/json"];
23
27
  /** `POST /api/v1/announcements/read` 成功时的响应体。 */
@@ -14,9 +14,10 @@ export interface paths {
14
14
  * List notifications addressed to you
15
15
  * @description Returns notifications in reverse chronological order, newest first.
16
16
  *
17
- * Announcements published to the whole platform appear here alongside notifications
18
- * addressed to you individually and are distinguished by `kind`. They are read and archived
19
- * through the same operations.
17
+ * Announcements are not in this list. They are one row for the whole platform rather than
18
+ * one per reader, so they are listed, read and counted by their own operations under
19
+ * `/api/v1/announcements`. `kind` is on every item here for clients that merge the two lists
20
+ * themselves, and it is `notification` for everything this operation returns.
20
21
  */
21
22
  get: operations["list-notifications"];
22
23
  put?: never;
@@ -107,7 +108,14 @@ export interface paths {
107
108
  * @description Marking a notification that is already read succeeds and changes nothing.
108
109
  */
109
110
  post: operations["mark-notification-read"];
110
- delete?: never;
111
+ /**
112
+ * Mark one notification as unread
113
+ * @description Puts it back in the unread count, which is what somebody wants after opening a thing by
114
+ * accident and needing it to stay in front of them.
115
+ *
116
+ * Marking one that is already unread succeeds and changes nothing.
117
+ */
118
+ delete: operations["mark-notification-unread"];
111
119
  options?: never;
112
120
  head?: never;
113
121
  patch?: never;
@@ -128,7 +136,18 @@ export interface paths {
128
136
  * `include_archived` to see it again. Archiving also marks it read.
129
137
  */
130
138
  post: operations["archive-notification"];
131
- delete?: never;
139
+ /**
140
+ * Take one notification out of the archive
141
+ * @description Returns it to the default listing. Archiving is one click away from anything in the list,
142
+ * so undoing it has to be too; without this operation a mistaken archive is permanent, and
143
+ * the notification stays reachable only by asking for archived ones.
144
+ *
145
+ * It does not mark it unread again: archiving marked it read, and that it was read is still
146
+ * true. Use `mark-notification-unread` for that.
147
+ *
148
+ * Unarchiving one that is not archived succeeds and changes nothing.
149
+ */
150
+ delete: operations["unarchive-notification"];
132
151
  options?: never;
133
152
  head?: never;
134
153
  patch?: never;
@@ -1142,6 +1161,38 @@ export interface operations {
1142
1161
  };
1143
1162
  };
1144
1163
  };
1164
+ "mark-notification-unread": {
1165
+ parameters: {
1166
+ query?: never;
1167
+ header?: never;
1168
+ path: {
1169
+ /** @description The notification, or the announcement when kind is announcement */
1170
+ notificationId: components["parameters"]["NotificationId"];
1171
+ };
1172
+ cookie?: never;
1173
+ };
1174
+ requestBody?: never;
1175
+ responses: {
1176
+ /** @description OK */
1177
+ 200: {
1178
+ headers: {
1179
+ [name: string]: unknown;
1180
+ };
1181
+ content: {
1182
+ "application/json": components["schemas"]["NotificationResource"];
1183
+ };
1184
+ };
1185
+ /** @description Error */
1186
+ default: {
1187
+ headers: {
1188
+ [name: string]: unknown;
1189
+ };
1190
+ content: {
1191
+ "application/json": components["schemas"]["Error"];
1192
+ };
1193
+ };
1194
+ };
1195
+ };
1145
1196
  "archive-notification": {
1146
1197
  parameters: {
1147
1198
  query?: never;
@@ -1174,6 +1225,38 @@ export interface operations {
1174
1225
  };
1175
1226
  };
1176
1227
  };
1228
+ "unarchive-notification": {
1229
+ parameters: {
1230
+ query?: never;
1231
+ header?: never;
1232
+ path: {
1233
+ /** @description The notification, or the announcement when kind is announcement */
1234
+ notificationId: components["parameters"]["NotificationId"];
1235
+ };
1236
+ cookie?: never;
1237
+ };
1238
+ requestBody?: never;
1239
+ responses: {
1240
+ /** @description OK */
1241
+ 200: {
1242
+ headers: {
1243
+ [name: string]: unknown;
1244
+ };
1245
+ content: {
1246
+ "application/json": components["schemas"]["NotificationResource"];
1247
+ };
1248
+ };
1249
+ /** @description Error */
1250
+ default: {
1251
+ headers: {
1252
+ [name: string]: unknown;
1253
+ };
1254
+ content: {
1255
+ "application/json": components["schemas"]["Error"];
1256
+ };
1257
+ };
1258
+ };
1259
+ };
1177
1260
  "list-announcements": {
1178
1261
  parameters: {
1179
1262
  query?: never;
@@ -38,16 +38,6 @@ export type UploadAttachmentResult = operations["upload-attachment"]["responses"
38
38
  export type UploadAttachmentQuery = operations["upload-attachment"]["parameters"]["query"];
39
39
  /** `GET /api/v1/attachments/{attachmentId}/download-url` 成功时的响应体。 */
40
40
  export type DescribeAttachmentDownloadResult = operations["describe-attachment-download"]["responses"][200]["content"]["application/json"];
41
- /** `GET /api/v1/announcements` 成功时的响应体。 */
42
- export type ListAnnouncementsResult = operations["list-announcements"]["responses"][200]["content"]["application/json"];
43
- /** `GET /api/v1/announcements` 的查询参数。 */
44
- export type ListAnnouncementsQuery = operations["list-announcements"]["parameters"]["query"];
45
- /** `GET /api/v1/announcements/unread-count` 成功时的响应体。 */
46
- export type CountUnreadAnnouncementsResult = operations["count-unread-announcements"]["responses"][200]["content"]["application/json"];
47
- /** `GET /api/v1/announcements/{announcementId}` 成功时的响应体。 */
48
- export type GetAnnouncementResult = operations["get-announcement"]["responses"][200]["content"]["application/json"];
49
- /** `POST /api/v1/announcements/{announcementId}/read` 成功时的响应体。 */
50
- export type MarkAnnouncementReadResult = operations["mark-announcement-read"]["responses"][200]["content"]["application/json"];
51
41
  /** `GET /api/v1/maintenances` 成功时的响应体。 */
52
42
  export type ListMaintenancesResult = operations["list-maintenances"]["responses"][200]["content"]["application/json"];
53
43
  /** `GET /api/v1/maintenances` 的查询参数。 */
@@ -11,16 +11,15 @@ export interface paths {
11
11
  cookie?: never;
12
12
  };
13
13
  /**
14
- * List announcements and maintenance in effect right now
15
- * @description Returns the announcements published for general visibility and the maintenance windows that
16
- * have not finished yet.
14
+ * List the maintenance in effect right now
15
+ * @description Returns the maintenance windows that have not finished yet.
17
16
  *
18
17
  * **This operation requires no credentials.** It is intended for sign-in pages and status
19
18
  * pages, which are reached before a project has been selected. It returns a narrower shape
20
19
  * than the authenticated operations and is not paginated.
21
20
  *
22
- * Announcements appear here only when an operator has published them for general visibility;
23
- * the authenticated `GET /api/v1/announcements` returns more of them.
21
+ * Platform announcements are not part of this API. They are served by the notification
22
+ * service, which owns platform-wide announcements.
24
23
  */
25
24
  get: operations["list-notices"];
26
25
  put?: never;
@@ -226,90 +225,6 @@ export interface paths {
226
225
  patch?: never;
227
226
  trace?: never;
228
227
  };
229
- "/api/v1/announcements": {
230
- parameters: {
231
- query?: never;
232
- header?: never;
233
- path?: never;
234
- cookie?: never;
235
- };
236
- /**
237
- * List announcements
238
- * @description Returns the announcements in effect for the current user, most recently published first.
239
- * Announcements that are scheduled but not yet published, and those that have expired, are
240
- * omitted.
241
- *
242
- * `read_at` is null when this user has not marked the announcement as read.
243
- */
244
- get: operations["list-announcements"];
245
- put?: never;
246
- post?: never;
247
- delete?: never;
248
- options?: never;
249
- head?: never;
250
- patch?: never;
251
- trace?: never;
252
- };
253
- "/api/v1/announcements/unread-count": {
254
- parameters: {
255
- query?: never;
256
- header?: never;
257
- path?: never;
258
- cookie?: never;
259
- };
260
- /** Count the announcements this user has not read */
261
- get: operations["count-unread-announcements"];
262
- put?: never;
263
- post?: never;
264
- delete?: never;
265
- options?: never;
266
- head?: never;
267
- patch?: never;
268
- trace?: never;
269
- };
270
- "/api/v1/announcements/{announcementId}": {
271
- parameters: {
272
- query?: never;
273
- header?: never;
274
- path?: never;
275
- cookie?: never;
276
- };
277
- /**
278
- * Get an announcement
279
- * @description Returns 404 for an announcement that is not in effect for this user.
280
- */
281
- get: operations["get-announcement"];
282
- put?: never;
283
- post?: never;
284
- delete?: never;
285
- options?: never;
286
- head?: never;
287
- patch?: never;
288
- trace?: never;
289
- };
290
- "/api/v1/announcements/{announcementId}/read": {
291
- parameters: {
292
- query?: never;
293
- header?: never;
294
- path?: never;
295
- cookie?: never;
296
- };
297
- get?: never;
298
- put?: never;
299
- /**
300
- * Mark an announcement as read
301
- * @description Marking an announcement that is already marked succeeds and changes nothing; `read_at` keeps
302
- * its original value.
303
- *
304
- * Read state is per person, not per project.
305
- */
306
- post: operations["mark-announcement-read"];
307
- delete?: never;
308
- options?: never;
309
- head?: never;
310
- patch?: never;
311
- trace?: never;
312
- };
313
228
  "/api/v1/maintenances": {
314
229
  parameters: {
315
230
  query?: never;
@@ -403,11 +318,6 @@ export interface components {
403
318
  * @enum {string}
404
319
  */
405
320
  TicketAuthorType: "USER" | "OPERATOR";
406
- /**
407
- * @description How prominently an announcement should be presented.
408
- * @enum {string}
409
- */
410
- AnnouncementSeverity: "INFO" | "WARNING" | "CRITICAL";
411
321
  /**
412
322
  * @description `SCHEDULED` has been announced but has not started. `IN_PROGRESS` is under way. `COMPLETED`
413
323
  * has finished. `CANCELLED` was announced and then called off, and never took place.
@@ -490,22 +400,6 @@ export interface components {
490
400
  /** Format: int64 */
491
401
  score: number;
492
402
  };
493
- /** @description A platform announcement. */
494
- AnnouncementResource: {
495
- /** @description Markdown */
496
- body: string;
497
- /** Format: uuid */
498
- id: string;
499
- /** Format: date-time */
500
- published_at: string;
501
- /**
502
- * Format: date-time
503
- * @description When this user marked the announcement as read; null when they have not
504
- */
505
- read_at: string | null;
506
- severity: components["schemas"]["AnnouncementSeverity"];
507
- title: string;
508
- };
509
403
  /** @description A scheduled maintenance notice published by platform operators. */
510
404
  MaintenanceResource: {
511
405
  /** @description Markdown */
@@ -557,19 +451,8 @@ export interface components {
557
451
  * state.
558
452
  */
559
453
  NoticeResource: {
560
- announcements: components["schemas"]["NoticeAnnouncementResource"][];
561
454
  maintenances: components["schemas"]["NoticeMaintenanceResource"][];
562
455
  };
563
- NoticeAnnouncementResource: {
564
- /** @description Markdown */
565
- body: string;
566
- /** Format: uuid */
567
- id: string;
568
- /** Format: date-time */
569
- published_at: string;
570
- severity: components["schemas"]["AnnouncementSeverity"];
571
- title: string;
572
- };
573
456
  NoticeMaintenanceResource: {
574
457
  /** @description Markdown */
575
458
  body: string;
@@ -595,10 +478,6 @@ export interface components {
595
478
  /** @description A temporary address serving the file */
596
479
  url: string;
597
480
  };
598
- UnreadCountResource: {
599
- /** Format: int64 */
600
- count: number;
601
- };
602
481
  CreateTicketRequestBody: {
603
482
  /** @description Attachments to reference from the first message. Each must have been uploaded in this project and not yet referenced */
604
483
  attachment_ids?: string[];
@@ -659,16 +538,6 @@ export interface components {
659
538
  /** Format: int64 */
660
539
  total: number;
661
540
  };
662
- LengthAwarePageAnnouncementResource: {
663
- /** @description The contents of this page */
664
- items: components["schemas"]["AnnouncementResource"][];
665
- /** Format: int64 */
666
- limit: number;
667
- /** Format: int64 */
668
- offset: number;
669
- /** Format: int64 */
670
- total: number;
671
- };
672
541
  LengthAwarePageMaintenanceResource: {
673
542
  /** @description The contents of this page */
674
543
  items: components["schemas"]["MaintenanceResource"][];
@@ -1102,131 +971,6 @@ export interface operations {
1102
971
  };
1103
972
  };
1104
973
  };
1105
- "list-announcements": {
1106
- parameters: {
1107
- query?: {
1108
- /** @description Maximum number of items to return in this page */
1109
- limit?: number;
1110
- /** @description Number of items to skip */
1111
- offset?: number;
1112
- };
1113
- header?: never;
1114
- path?: never;
1115
- cookie?: never;
1116
- };
1117
- requestBody?: never;
1118
- responses: {
1119
- /** @description OK */
1120
- 200: {
1121
- headers: {
1122
- [name: string]: unknown;
1123
- };
1124
- content: {
1125
- "application/json": components["schemas"]["LengthAwarePageAnnouncementResource"];
1126
- };
1127
- };
1128
- /** @description Error */
1129
- default: {
1130
- headers: {
1131
- [name: string]: unknown;
1132
- };
1133
- content: {
1134
- "application/json": components["schemas"]["Error"];
1135
- };
1136
- };
1137
- };
1138
- };
1139
- "count-unread-announcements": {
1140
- parameters: {
1141
- query?: never;
1142
- header?: never;
1143
- path?: never;
1144
- cookie?: never;
1145
- };
1146
- requestBody?: never;
1147
- responses: {
1148
- /** @description OK */
1149
- 200: {
1150
- headers: {
1151
- [name: string]: unknown;
1152
- };
1153
- content: {
1154
- "application/json": components["schemas"]["UnreadCountResource"];
1155
- };
1156
- };
1157
- /** @description Error */
1158
- default: {
1159
- headers: {
1160
- [name: string]: unknown;
1161
- };
1162
- content: {
1163
- "application/json": components["schemas"]["Error"];
1164
- };
1165
- };
1166
- };
1167
- };
1168
- "get-announcement": {
1169
- parameters: {
1170
- query?: never;
1171
- header?: never;
1172
- path: {
1173
- announcementId: string;
1174
- };
1175
- cookie?: never;
1176
- };
1177
- requestBody?: never;
1178
- responses: {
1179
- /** @description OK */
1180
- 200: {
1181
- headers: {
1182
- [name: string]: unknown;
1183
- };
1184
- content: {
1185
- "application/json": components["schemas"]["AnnouncementResource"];
1186
- };
1187
- };
1188
- /** @description Error */
1189
- default: {
1190
- headers: {
1191
- [name: string]: unknown;
1192
- };
1193
- content: {
1194
- "application/json": components["schemas"]["Error"];
1195
- };
1196
- };
1197
- };
1198
- };
1199
- "mark-announcement-read": {
1200
- parameters: {
1201
- query?: never;
1202
- header?: never;
1203
- path: {
1204
- announcementId: string;
1205
- };
1206
- cookie?: never;
1207
- };
1208
- requestBody?: never;
1209
- responses: {
1210
- /** @description OK */
1211
- 200: {
1212
- headers: {
1213
- [name: string]: unknown;
1214
- };
1215
- content: {
1216
- "application/json": components["schemas"]["AnnouncementResource"];
1217
- };
1218
- };
1219
- /** @description Error */
1220
- default: {
1221
- headers: {
1222
- [name: string]: unknown;
1223
- };
1224
- content: {
1225
- "application/json": components["schemas"]["Error"];
1226
- };
1227
- };
1228
- };
1229
- };
1230
974
  "list-maintenances": {
1231
975
  parameters: {
1232
976
  query?: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leaflow/sdk",
3
- "version": "0.33.0",
3
+ "version": "0.35.0",
4
4
  "description": "Leaflow 平台 API 的 TypeScript SDK",
5
5
  "license": "MIT",
6
6
  "repository": {