@sendmux/cli 1.2.0 → 1.3.1

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.
@@ -41,7 +41,7 @@ export default class MailboxGetMessageAttachmentCommand extends OperationCommand
41
41
  readonly type: "string";
42
42
  };
43
43
  }];
44
- readonly responseKind: "json";
44
+ readonly responseKind: "binary";
45
45
  readonly requestBodyRequired: false;
46
46
  readonly requiredKeyKind: "mailbox";
47
47
  readonly surface: "mailbox";
@@ -0,0 +1,40 @@
1
+ import { OperationCommand } from "../../operation-command.js";
2
+ export default class SendingCompleteAttachmentUploadCommand extends OperationCommand {
3
+ static description: "Upload bytes to an attachment upload URL";
4
+ static operation: {
5
+ readonly bodyKind: "binary";
6
+ readonly command: "sending:complete-attachment-upload";
7
+ readonly description: "Upload bytes to an attachment upload URL";
8
+ readonly headerParams: readonly [{
9
+ readonly name: "X-Sendmux-Upload-Token";
10
+ readonly required: true;
11
+ readonly schema: {
12
+ readonly type: "string";
13
+ };
14
+ }, {
15
+ readonly name: "Content-Length";
16
+ readonly required: true;
17
+ readonly schema: {
18
+ readonly type: "integer";
19
+ readonly minimum: 1;
20
+ };
21
+ }];
22
+ readonly method: "put";
23
+ readonly operationId: "sendingCompleteAttachmentUpload";
24
+ readonly path: "/emails/attachment-uploads/{upload_id}";
25
+ readonly pathParams: readonly [{
26
+ readonly name: "upload_id";
27
+ readonly required: true;
28
+ readonly schema: {
29
+ readonly type: "string";
30
+ readonly pattern: "^upl_[a-z0-9]{24}$";
31
+ };
32
+ }];
33
+ readonly queryParams: readonly [];
34
+ readonly responseKind: "json";
35
+ readonly requestBodyRequired: true;
36
+ readonly requiredKeyKind: "none";
37
+ readonly surface: "sending";
38
+ };
39
+ }
40
+ //# sourceMappingURL=complete-attachment-upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complete-attachment-upload.d.ts","sourceRoot":"","sources":["../../../src/commands/sending/complete-attachment-upload.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,sCAAuC,SAAQ,gBAAgB;IAClF,MAAM,CAAC,WAAW,6CAA0D;IAC5E,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAA8C;CAC/D"}
@@ -0,0 +1,7 @@
1
+ // This file is generated by scripts/generate-cli.mjs
2
+ import { operations } from "../../generated/operations.js";
3
+ import { OperationCommand } from "../../operation-command.js";
4
+ export default class SendingCompleteAttachmentUploadCommand extends OperationCommand {
5
+ static description = operations.sendingCompleteAttachmentUpload.description;
6
+ static operation = operations.sendingCompleteAttachmentUpload;
7
+ }
@@ -0,0 +1,27 @@
1
+ import { OperationCommand } from "../../operation-command.js";
2
+ export default class SendingCreateAttachmentUploadCommand extends OperationCommand {
3
+ static description: "Create an attachment upload URL";
4
+ static operation: {
5
+ readonly bodyKind: "json";
6
+ readonly command: "sending:create-attachment-upload";
7
+ readonly description: "Create an attachment upload URL";
8
+ readonly headerParams: readonly [{
9
+ readonly name: "Idempotency-Key";
10
+ readonly required: false;
11
+ readonly schema: {
12
+ readonly type: "string";
13
+ readonly maxLength: 255;
14
+ };
15
+ }];
16
+ readonly method: "post";
17
+ readonly operationId: "sendingCreateAttachmentUpload";
18
+ readonly path: "/emails/attachment-uploads";
19
+ readonly pathParams: readonly [];
20
+ readonly queryParams: readonly [];
21
+ readonly responseKind: "json";
22
+ readonly requestBodyRequired: true;
23
+ readonly requiredKeyKind: "sending";
24
+ readonly surface: "sending";
25
+ };
26
+ }
27
+ //# sourceMappingURL=create-attachment-upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-attachment-upload.d.ts","sourceRoot":"","sources":["../../../src/commands/sending/create-attachment-upload.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,oCAAqC,SAAQ,gBAAgB;IAChF,MAAM,CAAC,WAAW,oCAAwD;IAC1E,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;MAA4C;CAC7D"}
@@ -0,0 +1,7 @@
1
+ // This file is generated by scripts/generate-cli.mjs
2
+ import { operations } from "../../generated/operations.js";
3
+ import { OperationCommand } from "../../operation-command.js";
4
+ export default class SendingCreateAttachmentUploadCommand extends OperationCommand {
5
+ static description = operations.sendingCreateAttachmentUpload.description;
6
+ static operation = operations.sendingCreateAttachmentUpload;
7
+ }
@@ -0,0 +1,27 @@
1
+ import { OperationCommand } from "../../operation-command.js";
2
+ export default class SendingGetAttachmentCommand extends OperationCommand {
3
+ static description: "Get attachment metadata";
4
+ static operation: {
5
+ readonly bodyKind: "none";
6
+ readonly command: "sending:get-attachment";
7
+ readonly description: "Get attachment metadata";
8
+ readonly headerParams: readonly [];
9
+ readonly method: "get";
10
+ readonly operationId: "sendingGetAttachment";
11
+ readonly path: "/emails/attachments/{attachment_id}";
12
+ readonly pathParams: readonly [{
13
+ readonly name: "attachment_id";
14
+ readonly required: true;
15
+ readonly schema: {
16
+ readonly type: "string";
17
+ readonly pattern: "^att_[a-z0-9]{24}$";
18
+ };
19
+ }];
20
+ readonly queryParams: readonly [];
21
+ readonly responseKind: "json";
22
+ readonly requestBodyRequired: false;
23
+ readonly requiredKeyKind: "sending";
24
+ readonly surface: "sending";
25
+ };
26
+ }
27
+ //# sourceMappingURL=get-attachment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-attachment.d.ts","sourceRoot":"","sources":["../../../src/commands/sending/get-attachment.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,2BAA4B,SAAQ,gBAAgB;IACvE,MAAM,CAAC,WAAW,4BAA+C;IACjE,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;MAAmC;CACpD"}
@@ -0,0 +1,7 @@
1
+ // This file is generated by scripts/generate-cli.mjs
2
+ import { operations } from "../../generated/operations.js";
3
+ import { OperationCommand } from "../../operation-command.js";
4
+ export default class SendingGetAttachmentCommand extends OperationCommand {
5
+ static description = operations.sendingGetAttachment.description;
6
+ static operation = operations.sendingGetAttachment;
7
+ }
@@ -19,7 +19,7 @@ export default class SendingGetOpenApiSpecCommand extends OperationCommand {
19
19
  readonly queryParams: readonly [];
20
20
  readonly responseKind: "json";
21
21
  readonly requestBodyRequired: false;
22
- readonly requiredKeyKind: "sending";
22
+ readonly requiredKeyKind: "none";
23
23
  readonly surface: "sending";
24
24
  };
25
25
  }
@@ -0,0 +1,49 @@
1
+ import { OperationCommand } from "../../operation-command.js";
2
+ export default class SendingUploadAttachmentCommand extends OperationCommand {
3
+ static description: "Upload an attachment";
4
+ static operation: {
5
+ readonly bodyKind: "binary";
6
+ readonly command: "sending:upload-attachment";
7
+ readonly description: "Upload an attachment";
8
+ readonly headerParams: readonly [{
9
+ readonly name: "Idempotency-Key";
10
+ readonly required: false;
11
+ readonly schema: {
12
+ readonly type: "string";
13
+ readonly maxLength: 255;
14
+ };
15
+ }, {
16
+ readonly name: "Content-Length";
17
+ readonly required: true;
18
+ readonly schema: {
19
+ readonly type: "integer";
20
+ readonly minimum: 1;
21
+ };
22
+ }];
23
+ readonly method: "post";
24
+ readonly operationId: "sendingUploadAttachment";
25
+ readonly path: "/emails/attachments";
26
+ readonly pathParams: readonly [];
27
+ readonly queryParams: readonly [{
28
+ readonly name: "filename";
29
+ readonly required: true;
30
+ readonly schema: {
31
+ readonly type: "string";
32
+ readonly minLength: 1;
33
+ readonly maxLength: 255;
34
+ };
35
+ }, {
36
+ readonly name: "content_type";
37
+ readonly required: false;
38
+ readonly schema: {
39
+ readonly type: "string";
40
+ readonly maxLength: 255;
41
+ };
42
+ }];
43
+ readonly responseKind: "json";
44
+ readonly requestBodyRequired: true;
45
+ readonly requiredKeyKind: "sending";
46
+ readonly surface: "sending";
47
+ };
48
+ }
49
+ //# sourceMappingURL=upload-attachment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-attachment.d.ts","sourceRoot":"","sources":["../../../src/commands/sending/upload-attachment.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,8BAA+B,SAAQ,gBAAgB;IAC1E,MAAM,CAAC,WAAW,yBAAkD;IACpE,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAsC;CACvD"}
@@ -0,0 +1,7 @@
1
+ // This file is generated by scripts/generate-cli.mjs
2
+ import { operations } from "../../generated/operations.js";
3
+ import { OperationCommand } from "../../operation-command.js";
4
+ export default class SendingUploadAttachmentCommand extends OperationCommand {
5
+ static description = operations.sendingUploadAttachment.description;
6
+ static operation = operations.sendingUploadAttachment;
7
+ }
@@ -579,7 +579,7 @@ export declare const operations: {
579
579
  readonly type: "string";
580
580
  };
581
581
  }];
582
- readonly responseKind: "json";
582
+ readonly responseKind: "binary";
583
583
  readonly requestBodyRequired: false;
584
584
  readonly requiredKeyKind: "mailbox";
585
585
  readonly surface: "mailbox";
@@ -3562,6 +3562,85 @@ export declare const operations: {
3562
3562
  readonly requiredKeyKind: "root";
3563
3563
  readonly surface: "management";
3564
3564
  };
3565
+ readonly sendingCompleteAttachmentUpload: {
3566
+ readonly bodyKind: "binary";
3567
+ readonly command: "sending:complete-attachment-upload";
3568
+ readonly description: "Upload bytes to an attachment upload URL";
3569
+ readonly headerParams: readonly [{
3570
+ readonly name: "X-Sendmux-Upload-Token";
3571
+ readonly required: true;
3572
+ readonly schema: {
3573
+ readonly type: "string";
3574
+ };
3575
+ }, {
3576
+ readonly name: "Content-Length";
3577
+ readonly required: true;
3578
+ readonly schema: {
3579
+ readonly type: "integer";
3580
+ readonly minimum: 1;
3581
+ };
3582
+ }];
3583
+ readonly method: "put";
3584
+ readonly operationId: "sendingCompleteAttachmentUpload";
3585
+ readonly path: "/emails/attachment-uploads/{upload_id}";
3586
+ readonly pathParams: readonly [{
3587
+ readonly name: "upload_id";
3588
+ readonly required: true;
3589
+ readonly schema: {
3590
+ readonly type: "string";
3591
+ readonly pattern: "^upl_[a-z0-9]{24}$";
3592
+ };
3593
+ }];
3594
+ readonly queryParams: readonly [];
3595
+ readonly responseKind: "json";
3596
+ readonly requestBodyRequired: true;
3597
+ readonly requiredKeyKind: "none";
3598
+ readonly surface: "sending";
3599
+ };
3600
+ readonly sendingCreateAttachmentUpload: {
3601
+ readonly bodyKind: "json";
3602
+ readonly command: "sending:create-attachment-upload";
3603
+ readonly description: "Create an attachment upload URL";
3604
+ readonly headerParams: readonly [{
3605
+ readonly name: "Idempotency-Key";
3606
+ readonly required: false;
3607
+ readonly schema: {
3608
+ readonly type: "string";
3609
+ readonly maxLength: 255;
3610
+ };
3611
+ }];
3612
+ readonly method: "post";
3613
+ readonly operationId: "sendingCreateAttachmentUpload";
3614
+ readonly path: "/emails/attachment-uploads";
3615
+ readonly pathParams: readonly [];
3616
+ readonly queryParams: readonly [];
3617
+ readonly responseKind: "json";
3618
+ readonly requestBodyRequired: true;
3619
+ readonly requiredKeyKind: "sending";
3620
+ readonly surface: "sending";
3621
+ };
3622
+ readonly sendingGetAttachment: {
3623
+ readonly bodyKind: "none";
3624
+ readonly command: "sending:get-attachment";
3625
+ readonly description: "Get attachment metadata";
3626
+ readonly headerParams: readonly [];
3627
+ readonly method: "get";
3628
+ readonly operationId: "sendingGetAttachment";
3629
+ readonly path: "/emails/attachments/{attachment_id}";
3630
+ readonly pathParams: readonly [{
3631
+ readonly name: "attachment_id";
3632
+ readonly required: true;
3633
+ readonly schema: {
3634
+ readonly type: "string";
3635
+ readonly pattern: "^att_[a-z0-9]{24}$";
3636
+ };
3637
+ }];
3638
+ readonly queryParams: readonly [];
3639
+ readonly responseKind: "json";
3640
+ readonly requestBodyRequired: false;
3641
+ readonly requiredKeyKind: "sending";
3642
+ readonly surface: "sending";
3643
+ };
3565
3644
  readonly sendingGetOpenApiSpec: {
3566
3645
  readonly bodyKind: "none";
3567
3646
  readonly command: "sending:get-open-api-spec";
@@ -3580,7 +3659,7 @@ export declare const operations: {
3580
3659
  readonly queryParams: readonly [];
3581
3660
  readonly responseKind: "json";
3582
3661
  readonly requestBodyRequired: false;
3583
- readonly requiredKeyKind: "sending";
3662
+ readonly requiredKeyKind: "none";
3584
3663
  readonly surface: "sending";
3585
3664
  };
3586
3665
  readonly sendingSendEmail: {
@@ -3627,6 +3706,50 @@ export declare const operations: {
3627
3706
  readonly requiredKeyKind: "sending";
3628
3707
  readonly surface: "sending";
3629
3708
  };
3709
+ readonly sendingUploadAttachment: {
3710
+ readonly bodyKind: "binary";
3711
+ readonly command: "sending:upload-attachment";
3712
+ readonly description: "Upload an attachment";
3713
+ readonly headerParams: readonly [{
3714
+ readonly name: "Idempotency-Key";
3715
+ readonly required: false;
3716
+ readonly schema: {
3717
+ readonly type: "string";
3718
+ readonly maxLength: 255;
3719
+ };
3720
+ }, {
3721
+ readonly name: "Content-Length";
3722
+ readonly required: true;
3723
+ readonly schema: {
3724
+ readonly type: "integer";
3725
+ readonly minimum: 1;
3726
+ };
3727
+ }];
3728
+ readonly method: "post";
3729
+ readonly operationId: "sendingUploadAttachment";
3730
+ readonly path: "/emails/attachments";
3731
+ readonly pathParams: readonly [];
3732
+ readonly queryParams: readonly [{
3733
+ readonly name: "filename";
3734
+ readonly required: true;
3735
+ readonly schema: {
3736
+ readonly type: "string";
3737
+ readonly minLength: 1;
3738
+ readonly maxLength: 255;
3739
+ };
3740
+ }, {
3741
+ readonly name: "content_type";
3742
+ readonly required: false;
3743
+ readonly schema: {
3744
+ readonly type: "string";
3745
+ readonly maxLength: 255;
3746
+ };
3747
+ }];
3748
+ readonly responseKind: "json";
3749
+ readonly requestBodyRequired: true;
3750
+ readonly requiredKeyKind: "sending";
3751
+ readonly surface: "sending";
3752
+ };
3630
3753
  };
3631
3754
  export declare const curatedOperations: {
3632
3755
  readonly mailboxGetMe: {
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/generated/operations.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAspIiC,CAAC;AAEzD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWpB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/generated/operations.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgyIiC,CAAC;AAEzD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWpB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC"}
@@ -665,7 +665,7 @@ export const operations = {
665
665
  }
666
666
  }
667
667
  ],
668
- "responseKind": "json",
668
+ "responseKind": "binary",
669
669
  "requestBodyRequired": false,
670
670
  "requiredKeyKind": "mailbox",
671
671
  "surface": "mailbox"
@@ -4174,6 +4174,94 @@ export const operations = {
4174
4174
  "requiredKeyKind": "root",
4175
4175
  "surface": "management"
4176
4176
  },
4177
+ sendingCompleteAttachmentUpload: {
4178
+ "bodyKind": "binary",
4179
+ "command": "sending:complete-attachment-upload",
4180
+ "description": "Upload bytes to an attachment upload URL",
4181
+ "headerParams": [
4182
+ {
4183
+ "name": "X-Sendmux-Upload-Token",
4184
+ "required": true,
4185
+ "schema": {
4186
+ "type": "string"
4187
+ }
4188
+ },
4189
+ {
4190
+ "name": "Content-Length",
4191
+ "required": true,
4192
+ "schema": {
4193
+ "type": "integer",
4194
+ "minimum": 1
4195
+ }
4196
+ }
4197
+ ],
4198
+ "method": "put",
4199
+ "operationId": "sendingCompleteAttachmentUpload",
4200
+ "path": "/emails/attachment-uploads/{upload_id}",
4201
+ "pathParams": [
4202
+ {
4203
+ "name": "upload_id",
4204
+ "required": true,
4205
+ "schema": {
4206
+ "type": "string",
4207
+ "pattern": "^upl_[a-z0-9]{24}$"
4208
+ }
4209
+ }
4210
+ ],
4211
+ "queryParams": [],
4212
+ "responseKind": "json",
4213
+ "requestBodyRequired": true,
4214
+ "requiredKeyKind": "none",
4215
+ "surface": "sending"
4216
+ },
4217
+ sendingCreateAttachmentUpload: {
4218
+ "bodyKind": "json",
4219
+ "command": "sending:create-attachment-upload",
4220
+ "description": "Create an attachment upload URL",
4221
+ "headerParams": [
4222
+ {
4223
+ "name": "Idempotency-Key",
4224
+ "required": false,
4225
+ "schema": {
4226
+ "type": "string",
4227
+ "maxLength": 255
4228
+ }
4229
+ }
4230
+ ],
4231
+ "method": "post",
4232
+ "operationId": "sendingCreateAttachmentUpload",
4233
+ "path": "/emails/attachment-uploads",
4234
+ "pathParams": [],
4235
+ "queryParams": [],
4236
+ "responseKind": "json",
4237
+ "requestBodyRequired": true,
4238
+ "requiredKeyKind": "sending",
4239
+ "surface": "sending"
4240
+ },
4241
+ sendingGetAttachment: {
4242
+ "bodyKind": "none",
4243
+ "command": "sending:get-attachment",
4244
+ "description": "Get attachment metadata",
4245
+ "headerParams": [],
4246
+ "method": "get",
4247
+ "operationId": "sendingGetAttachment",
4248
+ "path": "/emails/attachments/{attachment_id}",
4249
+ "pathParams": [
4250
+ {
4251
+ "name": "attachment_id",
4252
+ "required": true,
4253
+ "schema": {
4254
+ "type": "string",
4255
+ "pattern": "^att_[a-z0-9]{24}$"
4256
+ }
4257
+ }
4258
+ ],
4259
+ "queryParams": [],
4260
+ "responseKind": "json",
4261
+ "requestBodyRequired": false,
4262
+ "requiredKeyKind": "sending",
4263
+ "surface": "sending"
4264
+ },
4177
4265
  sendingGetOpenApiSpec: {
4178
4266
  "bodyKind": "none",
4179
4267
  "command": "sending:get-open-api-spec",
@@ -4194,7 +4282,7 @@ export const operations = {
4194
4282
  "queryParams": [],
4195
4283
  "responseKind": "json",
4196
4284
  "requestBodyRequired": false,
4197
- "requiredKeyKind": "sending",
4285
+ "requiredKeyKind": "none",
4198
4286
  "surface": "sending"
4199
4287
  },
4200
4288
  sendingSendEmail: {
@@ -4245,6 +4333,56 @@ export const operations = {
4245
4333
  "requiredKeyKind": "sending",
4246
4334
  "surface": "sending"
4247
4335
  },
4336
+ sendingUploadAttachment: {
4337
+ "bodyKind": "binary",
4338
+ "command": "sending:upload-attachment",
4339
+ "description": "Upload an attachment",
4340
+ "headerParams": [
4341
+ {
4342
+ "name": "Idempotency-Key",
4343
+ "required": false,
4344
+ "schema": {
4345
+ "type": "string",
4346
+ "maxLength": 255
4347
+ }
4348
+ },
4349
+ {
4350
+ "name": "Content-Length",
4351
+ "required": true,
4352
+ "schema": {
4353
+ "type": "integer",
4354
+ "minimum": 1
4355
+ }
4356
+ }
4357
+ ],
4358
+ "method": "post",
4359
+ "operationId": "sendingUploadAttachment",
4360
+ "path": "/emails/attachments",
4361
+ "pathParams": [],
4362
+ "queryParams": [
4363
+ {
4364
+ "name": "filename",
4365
+ "required": true,
4366
+ "schema": {
4367
+ "type": "string",
4368
+ "minLength": 1,
4369
+ "maxLength": 255
4370
+ }
4371
+ },
4372
+ {
4373
+ "name": "content_type",
4374
+ "required": false,
4375
+ "schema": {
4376
+ "type": "string",
4377
+ "maxLength": 255
4378
+ }
4379
+ }
4380
+ ],
4381
+ "responseKind": "json",
4382
+ "requestBodyRequired": true,
4383
+ "requiredKeyKind": "sending",
4384
+ "surface": "sending"
4385
+ },
4248
4386
  };
4249
4387
  export const curatedOperations = {
4250
4388
  mailboxGetMe: operations.mailboxGetMe,
@@ -1,5 +1,5 @@
1
1
  export type ApiKeyKind = "mailbox" | "root";
2
- export type RequiredApiKeyKind = ApiKeyKind | "sending";
2
+ export type RequiredApiKeyKind = ApiKeyKind | "none" | "sending";
3
3
  export declare function inferApiKeyKind(apiKey: string): ApiKeyKind;
4
4
  export declare function isApiKeyCompatibleWithKind(apiKey: string, expectedKind: RequiredApiKeyKind): boolean;
5
5
  export declare function apiKeyKindLabel(kind: RequiredApiKeyKind): string;
@@ -1 +1 @@
1
- {"version":3,"file":"key-kind.d.ts","sourceRoot":"","sources":["../src/key-kind.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAC5C,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,SAAS,CAAC;AAExD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAc1D;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAMpG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAEhE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMjD"}
1
+ {"version":3,"file":"key-kind.d.ts","sourceRoot":"","sources":["../src/key-kind.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAC5C,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAEjE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAc1D;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAUpG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAKhE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMjD"}
package/dist/key-kind.js CHANGED
@@ -11,12 +11,18 @@ export function inferApiKeyKind(apiKey) {
11
11
  throw new Error("Sendmux API keys must start with smx_root_, smx_mbx_, or smx_agent_");
12
12
  }
13
13
  export function isApiKeyCompatibleWithKind(apiKey, expectedKind) {
14
+ if (expectedKind === "none") {
15
+ return true;
16
+ }
14
17
  if (expectedKind === "sending") {
15
18
  return apiKey.startsWith("smx_mbx_") || apiKey.startsWith("smx_agent_");
16
19
  }
17
20
  return inferApiKeyKind(apiKey) === expectedKind;
18
21
  }
19
22
  export function apiKeyKindLabel(kind) {
23
+ if (kind === "none") {
24
+ return "no";
25
+ }
20
26
  return kind === "sending" ? "sending" : kind;
21
27
  }
22
28
  export function maskApiKey(apiKey) {
@@ -4,7 +4,7 @@ import { authFlags, } from "./base-command.js";
4
4
  export const operationFlags = {
5
5
  ...authFlags,
6
6
  attach: Flags.string({
7
- description: "Local file path to attach to mailbox:send-message or sending:send. Repeat for multiple files.",
7
+ description: "Local file path to upload and attach to mailbox:send-message or sending:send. Repeat for multiple files.",
8
8
  multiple: true,
9
9
  }),
10
10
  body: Flags.string({
@@ -1 +1 @@
1
- {"version":3,"file":"operation-runner.d.ts","sourceRoot":"","sources":["../src/operation-runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAqBhE,wBAAsB,eAAe,CACnC,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,OAAO,CAAC,CAkElB"}
1
+ {"version":3,"file":"operation-runner.d.ts","sourceRoot":"","sources":["../src/operation-runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAsBhE,wBAAsB,eAAe,CACnC,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,OAAO,CAAC,CAwElB"}