@propper-ai/cli 0.2.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.
@@ -0,0 +1,2765 @@
1
+ // src/http/client.ts
2
+ import { Buffer } from "buffer";
3
+
4
+ // src/http/errors.ts
5
+ var ApiError = class extends Error {
6
+ status;
7
+ code;
8
+ requestId;
9
+ body;
10
+ /** HTTP method of the failed request (for the error display). */
11
+ method;
12
+ /** Request path of the failed request (for the error display). */
13
+ path;
14
+ /** CLI operation, e.g. "sign agreements create" (for the `--help` hint). */
15
+ operation;
16
+ constructor(opts) {
17
+ super(opts.message);
18
+ this.name = "ApiError";
19
+ this.status = opts.status;
20
+ this.code = opts.code;
21
+ this.requestId = opts.requestId;
22
+ this.body = opts.body;
23
+ this.method = opts.method;
24
+ this.path = opts.path;
25
+ this.operation = opts.operation;
26
+ }
27
+ };
28
+ var UsageError = class extends Error {
29
+ constructor(message) {
30
+ super(message);
31
+ this.name = "UsageError";
32
+ }
33
+ };
34
+ var AuthError = class extends Error {
35
+ constructor(message) {
36
+ super(message);
37
+ this.name = "AuthError";
38
+ }
39
+ };
40
+
41
+ // src/http/client.ts
42
+ var DEFAULT_TIMEOUT_MS = 6e4;
43
+ var DEFAULT_MAX_RETRIES = 3;
44
+ var RETRYABLE_STATUS = /* @__PURE__ */ new Set([429, 500, 502, 503, 504]);
45
+ var defaultSleep = (ms) => new Promise((r) => setTimeout(r, ms));
46
+ function operationLabel(entry) {
47
+ return `${entry.api} ${entry.topic} ${entry.command}`;
48
+ }
49
+ function buildUrl(entry, req, baseUrl) {
50
+ let path = entry.path;
51
+ for (const [key, value] of Object.entries(req.pathParams ?? {})) {
52
+ path = path.replace(`{${key}}`, encodeURIComponent(value));
53
+ }
54
+ const missing = path.match(/\{[^}]+\}/);
55
+ if (missing) {
56
+ throw new ApiError({
57
+ status: 0,
58
+ message: `Missing path parameter ${missing[0]} for ${entry.method} ${entry.path}`,
59
+ method: entry.method,
60
+ path: entry.path,
61
+ operation: operationLabel(entry)
62
+ });
63
+ }
64
+ const url = new URL(path.replace(/^\//, ""), `${baseUrl.replace(/\/$/, "")}/`);
65
+ for (const [key, value] of Object.entries(req.query ?? {})) {
66
+ if (value !== void 0 && value !== null && value !== "") {
67
+ url.searchParams.set(key, String(value));
68
+ }
69
+ }
70
+ return url.toString();
71
+ }
72
+ function backoffMs(attempt, retryAfter) {
73
+ if (retryAfter) {
74
+ const seconds = Number(retryAfter);
75
+ if (Number.isFinite(seconds)) return seconds * 1e3;
76
+ }
77
+ return Math.min(2 ** attempt * 250, 8e3);
78
+ }
79
+ function isRecord(v) {
80
+ return typeof v === "object" && v !== null;
81
+ }
82
+ function extractMessage(json, fallback) {
83
+ const errObj = isRecord(json.error) ? json.error : void 0;
84
+ return typeof json.message === "string" && json.message || typeof json.error === "string" && json.error || errObj && typeof errObj.message === "string" && errObj.message || typeof json.detail === "string" && json.detail || // RFC 7807 problem+json
85
+ typeof json.title === "string" && json.title || fallback;
86
+ }
87
+ async function parseErrorBody(res) {
88
+ const statusText = `${res.status} ${res.statusText}`.trim();
89
+ const text = await res.text().catch(() => "");
90
+ if (!text) return { message: statusText };
91
+ try {
92
+ const json = JSON.parse(text);
93
+ const errObj = isRecord(json.error) ? json.error : void 0;
94
+ const code = typeof json.code === "string" && json.code || errObj && typeof errObj.code === "string" && errObj.code || void 0;
95
+ return { message: extractMessage(json, statusText), code, body: json };
96
+ } catch {
97
+ return { message: text.slice(0, 500), body: text };
98
+ }
99
+ }
100
+ async function request(entry, req, ctx) {
101
+ const fetchFn = ctx.fetchFn ?? fetch;
102
+ const sleep = ctx.sleepFn ?? defaultSleep;
103
+ const maxRetries = ctx.maxRetries ?? DEFAULT_MAX_RETRIES;
104
+ const url = buildUrl(entry, req, ctx.apiBaseUrl);
105
+ const headers = {
106
+ "user-agent": ctx.userAgent,
107
+ accept: entry.produces === "binary" ? "*/*" : "application/json"
108
+ };
109
+ if (ctx.token) headers.authorization = `Bearer ${ctx.token}`;
110
+ let bodyInit;
111
+ if (entry.consumes === "json" && req.body !== void 0) {
112
+ headers["content-type"] = "application/json";
113
+ bodyInit = JSON.stringify(req.body);
114
+ }
115
+ let lastError;
116
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
117
+ const controller = new AbortController();
118
+ const timer = setTimeout(() => controller.abort(), ctx.timeoutMs ?? DEFAULT_TIMEOUT_MS);
119
+ try {
120
+ if (ctx.debug) {
121
+ console.error(`\u2192 ${entry.method} ${url}${bodyInit ? ` body=${bodyInit}` : ""}`);
122
+ }
123
+ const res = await fetchFn(url, {
124
+ method: entry.method,
125
+ headers,
126
+ body: bodyInit,
127
+ signal: controller.signal
128
+ });
129
+ if (RETRYABLE_STATUS.has(res.status) && attempt < maxRetries) {
130
+ await sleep(backoffMs(attempt, res.headers.get("retry-after")));
131
+ continue;
132
+ }
133
+ if (!res.ok) {
134
+ const { message, code, body } = await parseErrorBody(res);
135
+ throw new ApiError({
136
+ status: res.status,
137
+ message,
138
+ code,
139
+ requestId: res.headers.get("x-request-id") ?? void 0,
140
+ body,
141
+ method: entry.method,
142
+ path: entry.path,
143
+ operation: operationLabel(entry)
144
+ });
145
+ }
146
+ if (entry.produces === "binary") {
147
+ const buf = Buffer.from(await res.arrayBuffer());
148
+ return { status: res.status, headers: res.headers, bytes: buf };
149
+ }
150
+ const text = await res.text();
151
+ const data = text ? JSON.parse(text) : void 0;
152
+ return { status: res.status, headers: res.headers, data };
153
+ } catch (err) {
154
+ if (err instanceof ApiError) throw err;
155
+ lastError = err;
156
+ if (attempt < maxRetries) {
157
+ await sleep(backoffMs(attempt, null));
158
+ }
159
+ } finally {
160
+ clearTimeout(timer);
161
+ }
162
+ }
163
+ throw new ApiError({
164
+ status: 0,
165
+ message: `Network error: ${lastError instanceof Error ? lastError.message : String(lastError)}`,
166
+ method: entry.method,
167
+ path: entry.path,
168
+ operation: operationLabel(entry)
169
+ });
170
+ }
171
+
172
+ // src/generated/manifest.json
173
+ var manifest_default = {
174
+ version: "1",
175
+ generatedFrom: "Sign API, Propper Gen API, Propper Locker API",
176
+ apiBaseUrl: "https://api.propper.ai",
177
+ apis: [
178
+ {
179
+ name: "sign",
180
+ title: "Sign API",
181
+ baseUrl: "https://api.propper.ai"
182
+ },
183
+ {
184
+ name: "docgen",
185
+ title: "Propper Gen API",
186
+ baseUrl: "https://api.propper.ai"
187
+ },
188
+ {
189
+ name: "locker",
190
+ title: "Propper Locker API",
191
+ baseUrl: "https://api.propper.ai"
192
+ }
193
+ ],
194
+ operations: [
195
+ {
196
+ api: "docgen",
197
+ operationId: "listPendingApprovals",
198
+ topic: "approvals",
199
+ command: "pending",
200
+ method: "GET",
201
+ path: "/v1/docgen/approvals/pending",
202
+ summary: "List pending approvals",
203
+ pathParams: [],
204
+ queryParams: [],
205
+ hasBody: false,
206
+ bodyFields: [],
207
+ produces: "json",
208
+ consumes: "none"
209
+ },
210
+ {
211
+ api: "docgen",
212
+ operationId: "reviewApproval",
213
+ topic: "approvals",
214
+ command: "review",
215
+ method: "POST",
216
+ path: "/v1/docgen/approvals/{id}/review",
217
+ summary: "Review an approval request",
218
+ pathParams: [],
219
+ queryParams: [],
220
+ hasBody: true,
221
+ bodyFields: [
222
+ {
223
+ name: "action",
224
+ flag: "--action",
225
+ type: "string",
226
+ required: true
227
+ },
228
+ {
229
+ name: "comments",
230
+ flag: "--comments",
231
+ type: "string",
232
+ required: false
233
+ }
234
+ ],
235
+ produces: "json",
236
+ consumes: "json"
237
+ },
238
+ {
239
+ api: "docgen",
240
+ operationId: "cancelBatch",
241
+ topic: "batches",
242
+ command: "cancel",
243
+ method: "POST",
244
+ path: "/v1/docgen/batches/{id}/cancel",
245
+ summary: "Cancel a batch job",
246
+ pathParams: [],
247
+ queryParams: [],
248
+ hasBody: false,
249
+ bodyFields: [],
250
+ produces: "json",
251
+ consumes: "none"
252
+ },
253
+ {
254
+ api: "docgen",
255
+ operationId: "createBatch",
256
+ topic: "batches",
257
+ command: "create",
258
+ method: "POST",
259
+ path: "/v1/docgen/batches",
260
+ summary: "Create a batch generation job",
261
+ pathParams: [],
262
+ queryParams: [],
263
+ hasBody: true,
264
+ bodyFields: [
265
+ {
266
+ name: "templateId",
267
+ flag: "--template-id",
268
+ type: "string",
269
+ required: true
270
+ },
271
+ {
272
+ name: "name",
273
+ flag: "--name",
274
+ type: "string",
275
+ required: true
276
+ },
277
+ {
278
+ name: "outputFormat",
279
+ flag: "--output-format",
280
+ type: "string",
281
+ required: false,
282
+ description: "Output format for every item in the batch. Mirrors\nthe `POST /v1/docgen/documents` enum so the singleton\nand batch flows accept the same set of formats. DOCX\nis not currently supported.\n"
283
+ }
284
+ ],
285
+ produces: "json",
286
+ consumes: "json"
287
+ },
288
+ {
289
+ api: "docgen",
290
+ operationId: "downloadBatchOutput",
291
+ topic: "batches",
292
+ command: "download",
293
+ method: "GET",
294
+ path: "/v1/docgen/batches/{id}/download",
295
+ summary: "Download batch output",
296
+ pathParams: [],
297
+ queryParams: [],
298
+ hasBody: false,
299
+ bodyFields: [],
300
+ produces: "json",
301
+ consumes: "none"
302
+ },
303
+ {
304
+ api: "docgen",
305
+ operationId: "getBatch",
306
+ topic: "batches",
307
+ command: "get",
308
+ method: "GET",
309
+ path: "/v1/docgen/batches/{id}",
310
+ summary: "Get batch job by ID",
311
+ pathParams: [],
312
+ queryParams: [],
313
+ hasBody: false,
314
+ bodyFields: [],
315
+ produces: "json",
316
+ consumes: "none"
317
+ },
318
+ {
319
+ api: "docgen",
320
+ operationId: "listBatches",
321
+ topic: "batches",
322
+ command: "list",
323
+ method: "GET",
324
+ path: "/v1/docgen/batches",
325
+ summary: "List batch jobs",
326
+ description: "Returns batch jobs wrapped under the top-level `batches[]` key\nalongside a `pagination` block. Mirrors the templates and\ndocuments list envelopes so SDKs see one stable list shape\nacross docgen resources.\n",
327
+ pathParams: [],
328
+ queryParams: [
329
+ {
330
+ name: "page",
331
+ in: "query",
332
+ flag: "--page",
333
+ required: false
334
+ },
335
+ {
336
+ name: "limit",
337
+ in: "query",
338
+ flag: "--limit",
339
+ required: false
340
+ },
341
+ {
342
+ name: "status",
343
+ in: "query",
344
+ flag: "--status",
345
+ required: false
346
+ }
347
+ ],
348
+ hasBody: false,
349
+ bodyFields: [],
350
+ produces: "json",
351
+ consumes: "none"
352
+ },
353
+ {
354
+ api: "docgen",
355
+ operationId: "retryBatch",
356
+ topic: "batches",
357
+ command: "retry",
358
+ method: "POST",
359
+ path: "/v1/docgen/batches/{id}/retry",
360
+ summary: "Retry failed items in a batch job",
361
+ pathParams: [],
362
+ queryParams: [],
363
+ hasBody: false,
364
+ bodyFields: [],
365
+ produces: "json",
366
+ consumes: "none"
367
+ },
368
+ {
369
+ api: "docgen",
370
+ operationId: "createTemplateDeliveryConfig",
371
+ topic: "delivery-configs",
372
+ command: "create",
373
+ method: "POST",
374
+ path: "/v1/docgen/templates/{templateId}/delivery-configs",
375
+ summary: "Create a delivery configuration on a template",
376
+ description: "Each delivery configuration declares a channel (e.g. `EMAIL`,\n`SIGN_AGREEMENT_ATTACHMENT`, `STORAGE`) plus a channel-specific\n`config` payload. The worker dispatches each generated document\nthrough every active configuration whose `conditions` match.\n",
377
+ pathParams: [
378
+ {
379
+ name: "templateId",
380
+ in: "path",
381
+ flag: "--template-id",
382
+ required: true
383
+ }
384
+ ],
385
+ queryParams: [],
386
+ hasBody: true,
387
+ bodyFields: [
388
+ {
389
+ name: "name",
390
+ flag: "--name",
391
+ type: "string",
392
+ required: true
393
+ },
394
+ {
395
+ name: "type",
396
+ flag: "--type",
397
+ type: "string",
398
+ required: true
399
+ },
400
+ {
401
+ name: "order",
402
+ flag: "--order",
403
+ type: "integer",
404
+ required: false
405
+ }
406
+ ],
407
+ produces: "json",
408
+ consumes: "json"
409
+ },
410
+ {
411
+ api: "docgen",
412
+ operationId: "deleteTemplateDeliveryConfig",
413
+ topic: "delivery-configs",
414
+ command: "delete",
415
+ method: "DELETE",
416
+ path: "/v1/docgen/templates/{templateId}/delivery-configs/{configId}",
417
+ summary: "Delete a delivery configuration",
418
+ pathParams: [
419
+ {
420
+ name: "templateId",
421
+ in: "path",
422
+ flag: "--template-id",
423
+ required: true
424
+ },
425
+ {
426
+ name: "configId",
427
+ in: "path",
428
+ flag: "--config-id",
429
+ required: true
430
+ }
431
+ ],
432
+ queryParams: [],
433
+ hasBody: false,
434
+ bodyFields: [],
435
+ produces: "json",
436
+ consumes: "none"
437
+ },
438
+ {
439
+ api: "docgen",
440
+ operationId: "listDocumentDeliveryLogs",
441
+ topic: "delivery-configs",
442
+ command: "delivery-logs",
443
+ method: "GET",
444
+ path: "/v1/docgen/documents/{documentId}/delivery-logs",
445
+ summary: "List delivery attempts for a generated document",
446
+ description: "Returns one row per dispatched delivery attempt: status (`pending`,\n`delivered`, `failed`, `skipped`), the provider receipt, the attempt\nnumber, and any last error. Useful for debugging downstream\ndelivery failures from the SDK side.\n",
447
+ pathParams: [
448
+ {
449
+ name: "documentId",
450
+ in: "path",
451
+ flag: "--document-id",
452
+ required: true
453
+ }
454
+ ],
455
+ queryParams: [],
456
+ hasBody: false,
457
+ bodyFields: [],
458
+ produces: "json",
459
+ consumes: "none"
460
+ },
461
+ {
462
+ api: "docgen",
463
+ operationId: "listDeliveryConfigs",
464
+ topic: "delivery-configs",
465
+ command: "list",
466
+ method: "GET",
467
+ path: "/v1/docgen/delivery-configs",
468
+ summary: "List delivery configurations across all templates",
469
+ description: "Returns every delivery configuration the caller's org owns. Useful\nfor SDKs that want a single inventory call before reconciling per-\ntemplate settings.\n",
470
+ pathParams: [],
471
+ queryParams: [],
472
+ hasBody: false,
473
+ bodyFields: [],
474
+ produces: "json",
475
+ consumes: "none"
476
+ },
477
+ {
478
+ api: "docgen",
479
+ operationId: "listTemplateDeliveryConfigs",
480
+ topic: "delivery-configs",
481
+ command: "list-template-delivery-configs",
482
+ method: "GET",
483
+ path: "/v1/docgen/templates/{templateId}/delivery-configs",
484
+ summary: "List delivery configurations attached to a template",
485
+ pathParams: [
486
+ {
487
+ name: "templateId",
488
+ in: "path",
489
+ flag: "--template-id",
490
+ required: true
491
+ }
492
+ ],
493
+ queryParams: [],
494
+ hasBody: false,
495
+ bodyFields: [],
496
+ produces: "json",
497
+ consumes: "none"
498
+ },
499
+ {
500
+ api: "docgen",
501
+ operationId: "updateTemplateDeliveryConfig",
502
+ topic: "delivery-configs",
503
+ command: "update",
504
+ method: "PUT",
505
+ path: "/v1/docgen/templates/{templateId}/delivery-configs/{configId}",
506
+ summary: "Update a delivery configuration",
507
+ pathParams: [
508
+ {
509
+ name: "templateId",
510
+ in: "path",
511
+ flag: "--template-id",
512
+ required: true
513
+ },
514
+ {
515
+ name: "configId",
516
+ in: "path",
517
+ flag: "--config-id",
518
+ required: true
519
+ }
520
+ ],
521
+ queryParams: [],
522
+ hasBody: true,
523
+ bodyFields: [
524
+ {
525
+ name: "name",
526
+ flag: "--name",
527
+ type: "string",
528
+ required: false
529
+ },
530
+ {
531
+ name: "isActive",
532
+ flag: "--is-active",
533
+ type: "boolean",
534
+ required: false
535
+ },
536
+ {
537
+ name: "order",
538
+ flag: "--order",
539
+ type: "integer",
540
+ required: false
541
+ }
542
+ ],
543
+ produces: "json",
544
+ consumes: "json"
545
+ },
546
+ {
547
+ api: "docgen",
548
+ operationId: "generateDocument",
549
+ topic: "documents",
550
+ command: "create",
551
+ method: "POST",
552
+ path: "/v1/docgen/documents",
553
+ summary: "Generate a document from a template",
554
+ description: "Returns the generated document wrapped under the top-level\n`document` key, matching the `GET /v1/docgen/documents/{id}`\nenvelope so SDKs see a single shape across POST and GET.\n",
555
+ pathParams: [],
556
+ queryParams: [],
557
+ hasBody: true,
558
+ bodyFields: [
559
+ {
560
+ name: "templateId",
561
+ flag: "--template-id",
562
+ type: "string",
563
+ required: true
564
+ },
565
+ {
566
+ name: "outputFormat",
567
+ flag: "--output-format",
568
+ type: "string",
569
+ required: false
570
+ },
571
+ {
572
+ name: "name",
573
+ flag: "--name",
574
+ type: "string",
575
+ required: false
576
+ }
577
+ ],
578
+ produces: "json",
579
+ consumes: "json"
580
+ },
581
+ {
582
+ api: "docgen",
583
+ operationId: "downloadDocument",
584
+ topic: "documents",
585
+ command: "download",
586
+ method: "GET",
587
+ path: "/v1/docgen/documents/{id}/download",
588
+ summary: "Download a generated document",
589
+ pathParams: [],
590
+ queryParams: [],
591
+ hasBody: false,
592
+ bodyFields: [],
593
+ produces: "json",
594
+ consumes: "none"
595
+ },
596
+ {
597
+ api: "docgen",
598
+ operationId: "getDocument",
599
+ topic: "documents",
600
+ command: "get",
601
+ method: "GET",
602
+ path: "/v1/docgen/documents/{id}",
603
+ summary: "Get document by ID",
604
+ pathParams: [],
605
+ queryParams: [],
606
+ hasBody: false,
607
+ bodyFields: [],
608
+ produces: "json",
609
+ consumes: "none"
610
+ },
611
+ {
612
+ api: "docgen",
613
+ operationId: "listDocuments",
614
+ topic: "documents",
615
+ command: "list",
616
+ method: "GET",
617
+ path: "/v1/docgen/documents",
618
+ summary: "List generated documents",
619
+ description: "Returns documents wrapped under the top-level `documents[]` key\nalongside a `pagination` block. Mirrors the\n`GET /v1/docgen/templates` envelope so SDKs see one stable list\nshape across docgen resources.\n",
620
+ pathParams: [],
621
+ queryParams: [
622
+ {
623
+ name: "page",
624
+ in: "query",
625
+ flag: "--page",
626
+ required: false
627
+ },
628
+ {
629
+ name: "limit",
630
+ in: "query",
631
+ flag: "--limit",
632
+ required: false
633
+ },
634
+ {
635
+ name: "status",
636
+ in: "query",
637
+ flag: "--status",
638
+ required: false
639
+ },
640
+ {
641
+ name: "templateId",
642
+ in: "query",
643
+ flag: "--template-id",
644
+ required: false
645
+ }
646
+ ],
647
+ hasBody: false,
648
+ bodyFields: [],
649
+ produces: "json",
650
+ consumes: "none"
651
+ },
652
+ {
653
+ api: "docgen",
654
+ operationId: "sendDocumentForSignature",
655
+ topic: "documents",
656
+ command: "send-for-signature",
657
+ method: "POST",
658
+ path: "/v1/docgen/documents/{id}/send-for-signature",
659
+ summary: "Send a generated PDF for signature",
660
+ description: 'Attaches a generated PDF document to a new Sign agreement with the\nsupplied recipients. The agreement is created in `CREATED` state;\ncall `POST /v1/sign/agreements/{id}/send` afterwards to dispatch\nit to recipients.\n\nThe document must have `outputFormat: "PDF"` and `status: "GENERATED"`.\nRepeat invocations for the same document update the existing\nattachment in place rather than producing duplicates.\n\nRequires both `docgen:read` and `sign:write` OAuth scopes.\n',
661
+ pathParams: [
662
+ {
663
+ name: "id",
664
+ in: "path",
665
+ flag: "--id",
666
+ required: true
667
+ }
668
+ ],
669
+ queryParams: [],
670
+ hasBody: true,
671
+ bodyFields: [
672
+ {
673
+ name: "agreementName",
674
+ flag: "--agreement-name",
675
+ type: "string",
676
+ required: false,
677
+ description: "Optional override for the agreement name. Defaults to the document name."
678
+ },
679
+ {
680
+ name: "emailSubject",
681
+ flag: "--email-subject",
682
+ type: "string",
683
+ required: false
684
+ },
685
+ {
686
+ name: "emailMessage",
687
+ flag: "--email-message",
688
+ type: "string",
689
+ required: false
690
+ }
691
+ ],
692
+ produces: "json",
693
+ consumes: "json"
694
+ },
695
+ {
696
+ api: "docgen",
697
+ operationId: "archiveTemplate",
698
+ topic: "templates",
699
+ command: "archive",
700
+ method: "POST",
701
+ path: "/v1/docgen/templates/{id}/archive",
702
+ summary: "Archive a template",
703
+ pathParams: [],
704
+ queryParams: [],
705
+ hasBody: false,
706
+ bodyFields: [],
707
+ produces: "json",
708
+ consumes: "none"
709
+ },
710
+ {
711
+ api: "docgen",
712
+ operationId: "cloneTemplate",
713
+ topic: "templates",
714
+ command: "clone",
715
+ method: "POST",
716
+ path: "/v1/docgen/templates/{id}/clone",
717
+ summary: "Clone a template",
718
+ pathParams: [],
719
+ queryParams: [],
720
+ hasBody: false,
721
+ bodyFields: [],
722
+ produces: "json",
723
+ consumes: "none"
724
+ },
725
+ {
726
+ api: "docgen",
727
+ operationId: "createTemplate",
728
+ topic: "templates",
729
+ command: "create",
730
+ method: "POST",
731
+ path: "/v1/docgen/templates",
732
+ summary: "Create a new template",
733
+ pathParams: [],
734
+ queryParams: [],
735
+ hasBody: true,
736
+ bodyFields: [
737
+ {
738
+ name: "name",
739
+ flag: "--name",
740
+ type: "string",
741
+ required: true
742
+ },
743
+ {
744
+ name: "description",
745
+ flag: "--description",
746
+ type: "string",
747
+ required: false
748
+ },
749
+ {
750
+ name: "templateType",
751
+ flag: "--template-type",
752
+ type: "string",
753
+ required: false,
754
+ description: "Free-form classifier (e.g. `contract`, `invoice`,\n`report`, `document`). Defaults to `document` when\nomitted.\n"
755
+ },
756
+ {
757
+ name: "generationKind",
758
+ flag: "--generation-kind",
759
+ type: "string",
760
+ required: false,
761
+ description: "Engine discriminator for the catalog row. Optional \u2014\ndefaults to `HTML_MDX` (Puppeteer / MDX) when omitted.\nOnly `HTML_MDX` is materializable on this endpoint;\n`SIGN_PDF_DOCGEN` requires `templates/import-from-source`\nand `DOCX_HANDLEBARS` requires a forthcoming\ndocgen-compat upload route. Supplying either of the\nnon-default values here returns\n`422 GENERATION_KIND_NOT_SUPPORTED_HERE`.\n"
762
+ },
763
+ {
764
+ name: "templateContent",
765
+ flag: "--template-content",
766
+ type: "string",
767
+ required: false,
768
+ description: "HTML / Markdown / MDX template source."
769
+ },
770
+ {
771
+ name: "cssStyles",
772
+ flag: "--css-styles",
773
+ type: "string",
774
+ required: false
775
+ },
776
+ {
777
+ name: "headerTemplate",
778
+ flag: "--header-template",
779
+ type: "string",
780
+ required: false
781
+ },
782
+ {
783
+ name: "footerTemplate",
784
+ flag: "--footer-template",
785
+ type: "string",
786
+ required: false
787
+ }
788
+ ],
789
+ produces: "json",
790
+ consumes: "json"
791
+ },
792
+ {
793
+ api: "docgen",
794
+ operationId: "createTemplateVersion",
795
+ topic: "templates",
796
+ command: "create-template-version",
797
+ method: "POST",
798
+ path: "/v1/docgen/templates/{id}/versions",
799
+ summary: "Create a new template version",
800
+ pathParams: [],
801
+ queryParams: [],
802
+ hasBody: false,
803
+ bodyFields: [],
804
+ produces: "json",
805
+ consumes: "none"
806
+ },
807
+ {
808
+ api: "docgen",
809
+ operationId: "listTemplateDeployments",
810
+ topic: "templates",
811
+ command: "deployments",
812
+ method: "GET",
813
+ path: "/v1/docgen/templates/{id}/deployments",
814
+ summary: "List template deployments",
815
+ pathParams: [],
816
+ queryParams: [],
817
+ hasBody: false,
818
+ bodyFields: [],
819
+ produces: "json",
820
+ consumes: "none"
821
+ },
822
+ {
823
+ api: "docgen",
824
+ operationId: "getTemplateFormFields",
825
+ topic: "templates",
826
+ command: "form-fields",
827
+ method: "GET",
828
+ path: "/v1/docgen/templates/{id}/form-fields",
829
+ summary: "Get the merge-variable schema for a template",
830
+ description: "Returns the merge tokens parsed from the template's source DOCX\nso authoring UIs can populate field pickers and dataset bindings\nwithout an extra ingest step. Templates without a parseable\nsource (HTML, MDX, etc.) return an empty `mergeFields[]`.\n",
831
+ pathParams: [
832
+ {
833
+ name: "id",
834
+ in: "path",
835
+ flag: "--id",
836
+ required: true
837
+ }
838
+ ],
839
+ queryParams: [],
840
+ hasBody: false,
841
+ bodyFields: [],
842
+ produces: "json",
843
+ consumes: "none"
844
+ },
845
+ {
846
+ api: "docgen",
847
+ operationId: "getTemplate",
848
+ topic: "templates",
849
+ command: "get",
850
+ method: "GET",
851
+ path: "/v1/docgen/templates/{id}",
852
+ summary: "Get template by ID",
853
+ description: "Returns the template wrapped under the top-level `template` key\nto match `GET /v1/docgen/templates`'s `templates[]` envelope \u2014\nboth endpoints wrap the resource under a named key so generated\nSDKs see a consistent shape.\n",
854
+ pathParams: [
855
+ {
856
+ name: "id",
857
+ in: "path",
858
+ flag: "--id",
859
+ required: true
860
+ }
861
+ ],
862
+ queryParams: [],
863
+ hasBody: false,
864
+ bodyFields: [],
865
+ produces: "json",
866
+ consumes: "none"
867
+ },
868
+ {
869
+ api: "docgen",
870
+ operationId: "importTemplateFromSource",
871
+ topic: "templates",
872
+ command: "import-from-source",
873
+ method: "POST",
874
+ path: "/v1/docgen/templates/import-from-source",
875
+ summary: "Import a DocuSign Gen template from a JSON export",
876
+ description: "Imports a DocuSign Gen template using the JSON template export.\nThe export already embeds the source document as\n`documents[0].documentBase64`, so no separate PDF upload is\nrequired. Creates the linked Sign template, DocGen catalog\nentry, and migration mapping atomically.\n",
877
+ pathParams: [],
878
+ queryParams: [],
879
+ hasBody: true,
880
+ bodyFields: [
881
+ {
882
+ name: "sourceSystem",
883
+ flag: "--source-system",
884
+ type: "string",
885
+ required: true
886
+ },
887
+ {
888
+ name: "sourceTemplateId",
889
+ flag: "--source-template-id",
890
+ type: "string",
891
+ required: false,
892
+ description: "Optional override; defaults to templateJson.templateId."
893
+ },
894
+ {
895
+ name: "name",
896
+ flag: "--name",
897
+ type: "string",
898
+ required: false
899
+ },
900
+ {
901
+ name: "description",
902
+ flag: "--description",
903
+ type: "string",
904
+ required: false
905
+ }
906
+ ],
907
+ produces: "json",
908
+ consumes: "json"
909
+ },
910
+ {
911
+ api: "docgen",
912
+ operationId: "listTemplates",
913
+ topic: "templates",
914
+ command: "list",
915
+ method: "GET",
916
+ path: "/v1/docgen/templates",
917
+ summary: "List templates",
918
+ description: "Returns templates wrapped under the top-level `templates[]` key,\nalongside a `pagination` block. Mirrors the\n`GET /v1/docgen/templates/{id}` response in always wrapping the\nresource under a named key so generated SDKs see a stable\nenvelope across list and get.\n",
919
+ pathParams: [],
920
+ queryParams: [
921
+ {
922
+ name: "search",
923
+ in: "query",
924
+ flag: "--search",
925
+ required: false
926
+ },
927
+ {
928
+ name: "page",
929
+ in: "query",
930
+ flag: "--page",
931
+ required: false
932
+ },
933
+ {
934
+ name: "limit",
935
+ in: "query",
936
+ flag: "--limit",
937
+ required: false
938
+ }
939
+ ],
940
+ hasBody: false,
941
+ bodyFields: [],
942
+ produces: "json",
943
+ consumes: "none"
944
+ },
945
+ {
946
+ api: "docgen",
947
+ operationId: "promoteTemplate",
948
+ topic: "templates",
949
+ command: "promote",
950
+ method: "POST",
951
+ path: "/v1/docgen/templates/{id}/promote",
952
+ summary: "Promote template to target environment",
953
+ pathParams: [],
954
+ queryParams: [],
955
+ hasBody: false,
956
+ bodyFields: [],
957
+ produces: "json",
958
+ consumes: "none"
959
+ },
960
+ {
961
+ api: "docgen",
962
+ operationId: "updateTemplate",
963
+ topic: "templates",
964
+ command: "update",
965
+ method: "PUT",
966
+ path: "/v1/docgen/templates/{id}",
967
+ summary: "Update a template",
968
+ pathParams: [
969
+ {
970
+ name: "id",
971
+ in: "path",
972
+ flag: "--id",
973
+ required: true
974
+ }
975
+ ],
976
+ queryParams: [],
977
+ hasBody: true,
978
+ bodyFields: [],
979
+ produces: "json",
980
+ consumes: "json"
981
+ },
982
+ {
983
+ api: "docgen",
984
+ operationId: "listTemplateVersions",
985
+ topic: "templates",
986
+ command: "versions",
987
+ method: "GET",
988
+ path: "/v1/docgen/templates/{id}/versions",
989
+ summary: "List template versions",
990
+ pathParams: [],
991
+ queryParams: [],
992
+ hasBody: false,
993
+ bodyFields: [],
994
+ produces: "json",
995
+ consumes: "none"
996
+ },
997
+ {
998
+ api: "locker",
999
+ operationId: "chatWithDocuments",
1000
+ topic: "chat",
1001
+ command: "create",
1002
+ method: "POST",
1003
+ path: "/v1/locker/chat",
1004
+ summary: "Chat with documents",
1005
+ pathParams: [],
1006
+ queryParams: [],
1007
+ hasBody: true,
1008
+ bodyFields: [
1009
+ {
1010
+ name: "message",
1011
+ flag: "--message",
1012
+ type: "string",
1013
+ required: true
1014
+ },
1015
+ {
1016
+ name: "sessionId",
1017
+ flag: "--session-id",
1018
+ type: "string",
1019
+ required: false
1020
+ },
1021
+ {
1022
+ name: "topK",
1023
+ flag: "--top-k",
1024
+ type: "integer",
1025
+ required: false
1026
+ }
1027
+ ],
1028
+ produces: "json",
1029
+ consumes: "json"
1030
+ },
1031
+ {
1032
+ api: "locker",
1033
+ operationId: "streamChatWithDocuments",
1034
+ topic: "chat",
1035
+ command: "stream",
1036
+ method: "POST",
1037
+ path: "/v1/locker/chat/stream",
1038
+ summary: "Chat with documents (SSE streaming)",
1039
+ pathParams: [],
1040
+ queryParams: [],
1041
+ hasBody: true,
1042
+ bodyFields: [
1043
+ {
1044
+ name: "message",
1045
+ flag: "--message",
1046
+ type: "string",
1047
+ required: true
1048
+ },
1049
+ {
1050
+ name: "sessionId",
1051
+ flag: "--session-id",
1052
+ type: "string",
1053
+ required: false
1054
+ },
1055
+ {
1056
+ name: "topK",
1057
+ flag: "--top-k",
1058
+ type: "integer",
1059
+ required: false
1060
+ }
1061
+ ],
1062
+ produces: "binary",
1063
+ consumes: "json"
1064
+ },
1065
+ {
1066
+ api: "locker",
1067
+ operationId: "createDocument",
1068
+ topic: "documents",
1069
+ command: "create",
1070
+ method: "POST",
1071
+ path: "/v1/locker/documents",
1072
+ summary: "Create a document",
1073
+ pathParams: [],
1074
+ queryParams: [],
1075
+ hasBody: true,
1076
+ bodyFields: [
1077
+ {
1078
+ name: "name",
1079
+ flag: "--name",
1080
+ type: "string",
1081
+ required: true
1082
+ },
1083
+ {
1084
+ name: "description",
1085
+ flag: "--description",
1086
+ type: "string",
1087
+ required: false
1088
+ },
1089
+ {
1090
+ name: "documentType",
1091
+ flag: "--document-type",
1092
+ type: "string",
1093
+ required: false
1094
+ },
1095
+ {
1096
+ name: "source",
1097
+ flag: "--source",
1098
+ type: "string",
1099
+ required: false
1100
+ },
1101
+ {
1102
+ name: "fileUrl",
1103
+ flag: "--file-url",
1104
+ type: "string",
1105
+ required: true
1106
+ },
1107
+ {
1108
+ name: "mimeType",
1109
+ flag: "--mime-type",
1110
+ type: "string",
1111
+ required: false
1112
+ },
1113
+ {
1114
+ name: "sizeBytes",
1115
+ flag: "--size-bytes",
1116
+ type: "integer",
1117
+ required: false
1118
+ },
1119
+ {
1120
+ name: "sha256",
1121
+ flag: "--sha256",
1122
+ type: "string",
1123
+ required: false
1124
+ }
1125
+ ],
1126
+ produces: "json",
1127
+ consumes: "json"
1128
+ },
1129
+ {
1130
+ api: "locker",
1131
+ operationId: "deleteDocument",
1132
+ topic: "documents",
1133
+ command: "delete",
1134
+ method: "DELETE",
1135
+ path: "/v1/locker/documents/{id}",
1136
+ summary: "Delete a document",
1137
+ description: "Soft-deletes the document by default. Pass ?purge=true to permanently delete the document and all associated data. Purge requires locker:admin scope.",
1138
+ pathParams: [
1139
+ {
1140
+ name: "id",
1141
+ in: "path",
1142
+ flag: "--id",
1143
+ required: true
1144
+ }
1145
+ ],
1146
+ queryParams: [
1147
+ {
1148
+ name: "purge",
1149
+ in: "query",
1150
+ flag: "--purge",
1151
+ required: false
1152
+ }
1153
+ ],
1154
+ hasBody: false,
1155
+ bodyFields: [],
1156
+ produces: "json",
1157
+ consumes: "none"
1158
+ },
1159
+ {
1160
+ api: "locker",
1161
+ operationId: "downloadDocument",
1162
+ topic: "documents",
1163
+ command: "download",
1164
+ method: "GET",
1165
+ path: "/v1/locker/documents/{id}/download",
1166
+ summary: "Download a document",
1167
+ pathParams: [
1168
+ {
1169
+ name: "id",
1170
+ in: "path",
1171
+ flag: "--id",
1172
+ required: true
1173
+ }
1174
+ ],
1175
+ queryParams: [],
1176
+ hasBody: false,
1177
+ bodyFields: [],
1178
+ produces: "json",
1179
+ consumes: "none"
1180
+ },
1181
+ {
1182
+ api: "locker",
1183
+ operationId: "getDocument",
1184
+ topic: "documents",
1185
+ command: "get",
1186
+ method: "GET",
1187
+ path: "/v1/locker/documents/{id}",
1188
+ summary: "Get document by ID",
1189
+ pathParams: [
1190
+ {
1191
+ name: "id",
1192
+ in: "path",
1193
+ flag: "--id",
1194
+ required: true
1195
+ }
1196
+ ],
1197
+ queryParams: [],
1198
+ hasBody: false,
1199
+ bodyFields: [],
1200
+ produces: "json",
1201
+ consumes: "none"
1202
+ },
1203
+ {
1204
+ api: "locker",
1205
+ operationId: "listDocuments",
1206
+ topic: "documents",
1207
+ command: "list",
1208
+ method: "GET",
1209
+ path: "/v1/locker/documents",
1210
+ summary: "List documents",
1211
+ pathParams: [],
1212
+ queryParams: [
1213
+ {
1214
+ name: "folderId",
1215
+ in: "query",
1216
+ flag: "--folder-id",
1217
+ required: false
1218
+ },
1219
+ {
1220
+ name: "search",
1221
+ in: "query",
1222
+ flag: "--search",
1223
+ required: false
1224
+ },
1225
+ {
1226
+ name: "mimeType",
1227
+ in: "query",
1228
+ flag: "--mime-type",
1229
+ required: false
1230
+ },
1231
+ {
1232
+ name: "sortBy",
1233
+ in: "query",
1234
+ flag: "--sort-by",
1235
+ required: false
1236
+ },
1237
+ {
1238
+ name: "sortOrder",
1239
+ in: "query",
1240
+ flag: "--sort-order",
1241
+ required: false
1242
+ },
1243
+ {
1244
+ name: "page",
1245
+ in: "query",
1246
+ flag: "--page",
1247
+ required: false
1248
+ },
1249
+ {
1250
+ name: "limit",
1251
+ in: "query",
1252
+ flag: "--limit",
1253
+ required: false
1254
+ }
1255
+ ],
1256
+ hasBody: false,
1257
+ bodyFields: [],
1258
+ produces: "json",
1259
+ consumes: "none"
1260
+ },
1261
+ {
1262
+ api: "locker",
1263
+ operationId: "updateDocument",
1264
+ topic: "documents",
1265
+ command: "update",
1266
+ method: "PATCH",
1267
+ path: "/v1/locker/documents/{id}",
1268
+ summary: "Update document metadata",
1269
+ pathParams: [
1270
+ {
1271
+ name: "id",
1272
+ in: "path",
1273
+ flag: "--id",
1274
+ required: true
1275
+ }
1276
+ ],
1277
+ queryParams: [],
1278
+ hasBody: true,
1279
+ bodyFields: [
1280
+ {
1281
+ name: "name",
1282
+ flag: "--name",
1283
+ type: "string",
1284
+ required: false
1285
+ },
1286
+ {
1287
+ name: "description",
1288
+ flag: "--description",
1289
+ type: "string",
1290
+ required: false
1291
+ },
1292
+ {
1293
+ name: "documentType",
1294
+ flag: "--document-type",
1295
+ type: "string",
1296
+ required: false
1297
+ },
1298
+ {
1299
+ name: "folderId",
1300
+ flag: "--folder-id",
1301
+ type: "string",
1302
+ required: false
1303
+ }
1304
+ ],
1305
+ produces: "json",
1306
+ consumes: "json"
1307
+ },
1308
+ {
1309
+ api: "locker",
1310
+ operationId: "uploadDocument",
1311
+ topic: "documents",
1312
+ command: "upload",
1313
+ method: "POST",
1314
+ path: "/v1/locker/documents/upload",
1315
+ summary: "Upload a document",
1316
+ description: "Upload a document via base64-encoded JSON or multipart/form-data. For JSON, provide a base64-encoded document string. For multipart, attach the file as 'file' with metadata fields. Maximum file size is 50MB.",
1317
+ pathParams: [],
1318
+ queryParams: [],
1319
+ hasBody: true,
1320
+ bodyFields: [
1321
+ {
1322
+ name: "document",
1323
+ flag: "--document",
1324
+ type: "string",
1325
+ required: true,
1326
+ description: "Base64-encoded document content"
1327
+ },
1328
+ {
1329
+ name: "name",
1330
+ flag: "--name",
1331
+ type: "string",
1332
+ required: true
1333
+ },
1334
+ {
1335
+ name: "description",
1336
+ flag: "--description",
1337
+ type: "string",
1338
+ required: false
1339
+ },
1340
+ {
1341
+ name: "documentType",
1342
+ flag: "--document-type",
1343
+ type: "string",
1344
+ required: false
1345
+ },
1346
+ {
1347
+ name: "mimeType",
1348
+ flag: "--mime-type",
1349
+ type: "string",
1350
+ required: false
1351
+ }
1352
+ ],
1353
+ fileField: "document",
1354
+ produces: "json",
1355
+ consumes: "json"
1356
+ },
1357
+ {
1358
+ api: "locker",
1359
+ operationId: "deleteRisk",
1360
+ topic: "risks",
1361
+ command: "delete",
1362
+ method: "DELETE",
1363
+ path: "/v1/locker/risks/{id}",
1364
+ summary: "Delete a risk",
1365
+ pathParams: [
1366
+ {
1367
+ name: "id",
1368
+ in: "path",
1369
+ flag: "--id",
1370
+ required: true
1371
+ }
1372
+ ],
1373
+ queryParams: [],
1374
+ hasBody: false,
1375
+ bodyFields: [],
1376
+ produces: "json",
1377
+ consumes: "none"
1378
+ },
1379
+ {
1380
+ api: "locker",
1381
+ operationId: "extractRisks",
1382
+ topic: "risks",
1383
+ command: "extract",
1384
+ method: "POST",
1385
+ path: "/v1/locker/risks/extract",
1386
+ summary: "Extract risks from a document",
1387
+ pathParams: [],
1388
+ queryParams: [],
1389
+ hasBody: true,
1390
+ bodyFields: [
1391
+ {
1392
+ name: "documentId",
1393
+ flag: "--document-id",
1394
+ type: "string",
1395
+ required: true
1396
+ },
1397
+ {
1398
+ name: "documentName",
1399
+ flag: "--document-name",
1400
+ type: "string",
1401
+ required: false
1402
+ },
1403
+ {
1404
+ name: "mode",
1405
+ flag: "--mode",
1406
+ type: "string",
1407
+ required: false
1408
+ }
1409
+ ],
1410
+ produces: "json",
1411
+ consumes: "json"
1412
+ },
1413
+ {
1414
+ api: "locker",
1415
+ operationId: "getRisk",
1416
+ topic: "risks",
1417
+ command: "get",
1418
+ method: "GET",
1419
+ path: "/v1/locker/risks/{id}",
1420
+ summary: "Get risk by ID",
1421
+ pathParams: [
1422
+ {
1423
+ name: "id",
1424
+ in: "path",
1425
+ flag: "--id",
1426
+ required: true
1427
+ }
1428
+ ],
1429
+ queryParams: [],
1430
+ hasBody: false,
1431
+ bodyFields: [],
1432
+ produces: "json",
1433
+ consumes: "none"
1434
+ },
1435
+ {
1436
+ api: "locker",
1437
+ operationId: "listRisks",
1438
+ topic: "risks",
1439
+ command: "list",
1440
+ method: "GET",
1441
+ path: "/v1/locker/risks",
1442
+ summary: "List risks",
1443
+ pathParams: [],
1444
+ queryParams: [
1445
+ {
1446
+ name: "documentId",
1447
+ in: "query",
1448
+ flag: "--document-id",
1449
+ required: false
1450
+ },
1451
+ {
1452
+ name: "severity",
1453
+ in: "query",
1454
+ flag: "--severity",
1455
+ required: false
1456
+ },
1457
+ {
1458
+ name: "riskType",
1459
+ in: "query",
1460
+ flag: "--risk-type",
1461
+ required: false
1462
+ },
1463
+ {
1464
+ name: "status",
1465
+ in: "query",
1466
+ flag: "--status",
1467
+ required: false
1468
+ },
1469
+ {
1470
+ name: "limit",
1471
+ in: "query",
1472
+ flag: "--limit",
1473
+ required: false
1474
+ },
1475
+ {
1476
+ name: "offset",
1477
+ in: "query",
1478
+ flag: "--offset",
1479
+ required: false
1480
+ }
1481
+ ],
1482
+ hasBody: false,
1483
+ bodyFields: [],
1484
+ produces: "json",
1485
+ consumes: "none"
1486
+ },
1487
+ {
1488
+ api: "locker",
1489
+ operationId: "getRiskStats",
1490
+ topic: "risks",
1491
+ command: "stats",
1492
+ method: "GET",
1493
+ path: "/v1/locker/risks/stats",
1494
+ summary: "Get risk summary statistics",
1495
+ pathParams: [],
1496
+ queryParams: [],
1497
+ hasBody: false,
1498
+ bodyFields: [],
1499
+ produces: "json",
1500
+ consumes: "none"
1501
+ },
1502
+ {
1503
+ api: "locker",
1504
+ operationId: "updateRisk",
1505
+ topic: "risks",
1506
+ command: "update",
1507
+ method: "PATCH",
1508
+ path: "/v1/locker/risks/{id}",
1509
+ summary: "Update a risk",
1510
+ pathParams: [
1511
+ {
1512
+ name: "id",
1513
+ in: "path",
1514
+ flag: "--id",
1515
+ required: true
1516
+ }
1517
+ ],
1518
+ queryParams: [],
1519
+ hasBody: true,
1520
+ bodyFields: [
1521
+ {
1522
+ name: "status",
1523
+ flag: "--status",
1524
+ type: "string",
1525
+ required: false
1526
+ },
1527
+ {
1528
+ name: "mitigationNotes",
1529
+ flag: "--mitigation-notes",
1530
+ type: "string",
1531
+ required: false
1532
+ },
1533
+ {
1534
+ name: "linkedClause",
1535
+ flag: "--linked-clause",
1536
+ type: "string",
1537
+ required: false
1538
+ }
1539
+ ],
1540
+ produces: "json",
1541
+ consumes: "json"
1542
+ },
1543
+ {
1544
+ api: "locker",
1545
+ operationId: "getLockerSettings",
1546
+ topic: "settings",
1547
+ command: "list",
1548
+ method: "GET",
1549
+ path: "/v1/locker/settings",
1550
+ summary: "Get organization locker settings",
1551
+ pathParams: [],
1552
+ queryParams: [],
1553
+ hasBody: false,
1554
+ bodyFields: [],
1555
+ produces: "json",
1556
+ consumes: "none"
1557
+ },
1558
+ {
1559
+ api: "locker",
1560
+ operationId: "updateLockerSettings",
1561
+ topic: "settings",
1562
+ command: "patch",
1563
+ method: "PATCH",
1564
+ path: "/v1/locker/settings",
1565
+ summary: "Update organization locker settings",
1566
+ pathParams: [],
1567
+ queryParams: [],
1568
+ hasBody: true,
1569
+ bodyFields: [],
1570
+ produces: "json",
1571
+ consumes: "json"
1572
+ },
1573
+ {
1574
+ api: "locker",
1575
+ operationId: "getLockerUsage",
1576
+ topic: "settings",
1577
+ command: "usage",
1578
+ method: "GET",
1579
+ path: "/v1/locker/settings/usage",
1580
+ summary: "Get pipeline usage statistics",
1581
+ pathParams: [],
1582
+ queryParams: [],
1583
+ hasBody: false,
1584
+ bodyFields: [],
1585
+ produces: "json",
1586
+ consumes: "none"
1587
+ },
1588
+ {
1589
+ api: "sign",
1590
+ operationId: "createAgreement",
1591
+ topic: "agreements",
1592
+ command: "create",
1593
+ method: "POST",
1594
+ path: "/v1/sign/agreements",
1595
+ summary: "Create a new agreement",
1596
+ description: 'Create an agreement using one of three methods:\n\n**Document-based creation**: Provide `name` and optionally `recipients`, then add documents separately.\n\n**Template-based creation**: Provide `templateId` and `templateRoles` to create from a pre-configured template.\n\n**Create and send**: Include `documents` (base64), `recipients`, and set `status: "SENT"` to create and send in one request.\n',
1597
+ pathParams: [],
1598
+ queryParams: [],
1599
+ hasBody: true,
1600
+ bodyFields: [
1601
+ {
1602
+ name: "name",
1603
+ flag: "--name",
1604
+ type: "string",
1605
+ required: true,
1606
+ description: "Agreement name"
1607
+ },
1608
+ {
1609
+ name: "type",
1610
+ flag: "--type",
1611
+ type: "string",
1612
+ required: false,
1613
+ description: "Signing order type"
1614
+ },
1615
+ {
1616
+ name: "emailSubject",
1617
+ flag: "--email-subject",
1618
+ type: "string",
1619
+ required: false,
1620
+ description: "Custom email subject for notifications"
1621
+ },
1622
+ {
1623
+ name: "emailMessage",
1624
+ flag: "--email-message",
1625
+ type: "string",
1626
+ required: false,
1627
+ description: "Custom email message for notifications"
1628
+ },
1629
+ {
1630
+ name: "status",
1631
+ flag: "--status",
1632
+ type: "string",
1633
+ required: false,
1634
+ description: "Set to SENT to create and send immediately"
1635
+ },
1636
+ {
1637
+ name: "templateId",
1638
+ flag: "--template-id",
1639
+ type: "string",
1640
+ required: false,
1641
+ description: "Template ID for template-based creation"
1642
+ }
1643
+ ],
1644
+ produces: "json",
1645
+ consumes: "json"
1646
+ },
1647
+ {
1648
+ api: "sign",
1649
+ operationId: "deleteAgreement",
1650
+ topic: "agreements",
1651
+ command: "delete",
1652
+ method: "DELETE",
1653
+ path: "/v1/sign/agreements/{id}",
1654
+ summary: "Delete an agreement",
1655
+ description: "Delete a draft agreement. Sent agreements must be voided instead.",
1656
+ pathParams: [
1657
+ {
1658
+ name: "id",
1659
+ in: "path",
1660
+ flag: "--id",
1661
+ required: true
1662
+ }
1663
+ ],
1664
+ queryParams: [],
1665
+ hasBody: false,
1666
+ bodyFields: [],
1667
+ produces: "json",
1668
+ consumes: "none"
1669
+ },
1670
+ {
1671
+ api: "sign",
1672
+ operationId: "downloadAgreement",
1673
+ topic: "agreements",
1674
+ command: "download",
1675
+ method: "GET",
1676
+ path: "/v1/sign/agreements/{agreementId}/download",
1677
+ summary: "Download agreement as ZIP",
1678
+ description: "Download all documents for an agreement as a ZIP archive. For completed agreements, includes final signed documents, signer attachments, and the audit trail PDF. For in-progress agreements, includes the current state of each document.",
1679
+ pathParams: [
1680
+ {
1681
+ name: "agreementId",
1682
+ in: "path",
1683
+ flag: "--agreement-id",
1684
+ required: true
1685
+ }
1686
+ ],
1687
+ queryParams: [],
1688
+ hasBody: false,
1689
+ bodyFields: [],
1690
+ produces: "binary",
1691
+ consumes: "none"
1692
+ },
1693
+ {
1694
+ api: "sign",
1695
+ operationId: "genAndSendAgreement",
1696
+ topic: "agreements",
1697
+ command: "gen-and-send",
1698
+ method: "POST",
1699
+ path: "/v1/sign/gen-and-send",
1700
+ summary: "Create and send an agreement from a docgen template in one call",
1701
+ description: "Convenience endpoint that combines agreement creation and sending.\nTakes a docgen catalog template id (from\n`POST /v1/docgen/templates/import-from-source`), resolves the\nlinked Sign template, instantiates an agreement with the\nprovided recipients, and immediately sends it.\n",
1702
+ pathParams: [],
1703
+ queryParams: [],
1704
+ hasBody: true,
1705
+ bodyFields: [
1706
+ {
1707
+ name: "docgenTemplateId",
1708
+ flag: "--docgen-template-id",
1709
+ type: "string",
1710
+ required: true
1711
+ },
1712
+ {
1713
+ name: "name",
1714
+ flag: "--name",
1715
+ type: "string",
1716
+ required: false
1717
+ },
1718
+ {
1719
+ name: "emailSubject",
1720
+ flag: "--email-subject",
1721
+ type: "string",
1722
+ required: false
1723
+ },
1724
+ {
1725
+ name: "emailMessage",
1726
+ flag: "--email-message",
1727
+ type: "string",
1728
+ required: false
1729
+ }
1730
+ ],
1731
+ produces: "json",
1732
+ consumes: "json"
1733
+ },
1734
+ {
1735
+ api: "sign",
1736
+ operationId: "getAgreement",
1737
+ topic: "agreements",
1738
+ command: "get",
1739
+ method: "GET",
1740
+ path: "/v1/sign/agreements/{id}",
1741
+ summary: "Get agreement by ID",
1742
+ pathParams: [
1743
+ {
1744
+ name: "id",
1745
+ in: "path",
1746
+ flag: "--id",
1747
+ required: true,
1748
+ description: "Agreement ID"
1749
+ }
1750
+ ],
1751
+ queryParams: [],
1752
+ hasBody: false,
1753
+ bodyFields: [],
1754
+ produces: "json",
1755
+ consumes: "none"
1756
+ },
1757
+ {
1758
+ api: "sign",
1759
+ operationId: "listAgreements",
1760
+ topic: "agreements",
1761
+ command: "list",
1762
+ method: "GET",
1763
+ path: "/v1/sign/agreements",
1764
+ summary: "List agreements",
1765
+ pathParams: [],
1766
+ queryParams: [
1767
+ {
1768
+ name: "status",
1769
+ in: "query",
1770
+ flag: "--status",
1771
+ required: false
1772
+ },
1773
+ {
1774
+ name: "search",
1775
+ in: "query",
1776
+ flag: "--search",
1777
+ required: false,
1778
+ description: "Search by agreement name"
1779
+ },
1780
+ {
1781
+ name: "page",
1782
+ in: "query",
1783
+ flag: "--page",
1784
+ required: false
1785
+ },
1786
+ {
1787
+ name: "limit",
1788
+ in: "query",
1789
+ flag: "--limit",
1790
+ required: false
1791
+ },
1792
+ {
1793
+ name: "sortBy",
1794
+ in: "query",
1795
+ flag: "--sort-by",
1796
+ required: false
1797
+ },
1798
+ {
1799
+ name: "sortOrder",
1800
+ in: "query",
1801
+ flag: "--sort-order",
1802
+ required: false
1803
+ }
1804
+ ],
1805
+ hasBody: false,
1806
+ bodyFields: [],
1807
+ produces: "json",
1808
+ consumes: "none"
1809
+ },
1810
+ {
1811
+ api: "sign",
1812
+ operationId: "sendAgreement",
1813
+ topic: "agreements",
1814
+ command: "send",
1815
+ method: "POST",
1816
+ path: "/v1/sign/agreements/{id}/send",
1817
+ summary: "Send agreement for signing",
1818
+ description: "Send a draft agreement to recipients for signing. Requires at least one recipient and one document.",
1819
+ pathParams: [
1820
+ {
1821
+ name: "id",
1822
+ in: "path",
1823
+ flag: "--id",
1824
+ required: true
1825
+ }
1826
+ ],
1827
+ queryParams: [],
1828
+ hasBody: false,
1829
+ bodyFields: [],
1830
+ produces: "json",
1831
+ consumes: "none"
1832
+ },
1833
+ {
1834
+ api: "sign",
1835
+ operationId: "replaceAgreementAnnotations",
1836
+ topic: "agreements",
1837
+ command: "set-annotations",
1838
+ method: "PUT",
1839
+ path: "/v1/sign/agreements/{id}/annotations",
1840
+ summary: "Replace annotations on an agreement",
1841
+ description: "Replace all annotations/tabs on a draft agreement. Used to set up signing fields after document upload.",
1842
+ pathParams: [
1843
+ {
1844
+ name: "id",
1845
+ in: "path",
1846
+ flag: "--id",
1847
+ required: true
1848
+ }
1849
+ ],
1850
+ queryParams: [],
1851
+ hasBody: true,
1852
+ bodyFields: [],
1853
+ produces: "json",
1854
+ consumes: "json"
1855
+ },
1856
+ {
1857
+ api: "sign",
1858
+ operationId: "getAgreementStatus",
1859
+ topic: "agreements",
1860
+ command: "status",
1861
+ method: "GET",
1862
+ path: "/v1/sign/agreements/{id}/status",
1863
+ summary: "Get agreement signing status",
1864
+ description: "Get detailed status including per-recipient signing progress",
1865
+ pathParams: [
1866
+ {
1867
+ name: "id",
1868
+ in: "path",
1869
+ flag: "--id",
1870
+ required: true
1871
+ }
1872
+ ],
1873
+ queryParams: [],
1874
+ hasBody: false,
1875
+ bodyFields: [],
1876
+ produces: "json",
1877
+ consumes: "none"
1878
+ },
1879
+ {
1880
+ api: "sign",
1881
+ operationId: "updateAgreement",
1882
+ topic: "agreements",
1883
+ command: "update",
1884
+ method: "PATCH",
1885
+ path: "/v1/sign/agreements/{id}",
1886
+ summary: "Update an agreement",
1887
+ description: "Update agreement metadata. Only works for agreements in CREATED status.",
1888
+ pathParams: [
1889
+ {
1890
+ name: "id",
1891
+ in: "path",
1892
+ flag: "--id",
1893
+ required: true
1894
+ }
1895
+ ],
1896
+ queryParams: [],
1897
+ hasBody: true,
1898
+ bodyFields: [
1899
+ {
1900
+ name: "name",
1901
+ flag: "--name",
1902
+ type: "string",
1903
+ required: false
1904
+ },
1905
+ {
1906
+ name: "emailSubject",
1907
+ flag: "--email-subject",
1908
+ type: "string",
1909
+ required: false
1910
+ },
1911
+ {
1912
+ name: "emailMessage",
1913
+ flag: "--email-message",
1914
+ type: "string",
1915
+ required: false
1916
+ },
1917
+ {
1918
+ name: "expiresAt",
1919
+ flag: "--expires-at",
1920
+ type: "string",
1921
+ required: false
1922
+ }
1923
+ ],
1924
+ produces: "json",
1925
+ consumes: "json"
1926
+ },
1927
+ {
1928
+ api: "sign",
1929
+ operationId: "voidAgreement",
1930
+ topic: "agreements",
1931
+ command: "void",
1932
+ method: "POST",
1933
+ path: "/v1/sign/agreements/{id}/void",
1934
+ summary: "Void an agreement",
1935
+ description: "Cancel an in-progress agreement. All recipients are notified.",
1936
+ pathParams: [
1937
+ {
1938
+ name: "id",
1939
+ in: "path",
1940
+ flag: "--id",
1941
+ required: true
1942
+ }
1943
+ ],
1944
+ queryParams: [],
1945
+ hasBody: true,
1946
+ bodyFields: [
1947
+ {
1948
+ name: "reason",
1949
+ flag: "--reason",
1950
+ type: "string",
1951
+ required: true,
1952
+ description: "Reason for voiding the agreement"
1953
+ }
1954
+ ],
1955
+ produces: "json",
1956
+ consumes: "json"
1957
+ },
1958
+ {
1959
+ api: "sign",
1960
+ operationId: "getAgreementAuditPdf",
1961
+ topic: "audit",
1962
+ command: "certificate",
1963
+ method: "GET",
1964
+ path: "/v1/sign/agreements/{agreementId}/audit/pdf",
1965
+ summary: "Get audit certificate PDF",
1966
+ description: "Streams the audit certificate PDF for a completed agreement.\nThe certificate contains participant details, signing events,\ndocument hashes, and chain verification status.\n\nThe audit is generated automatically when an agreement completes.\nReturns 404 if the audit has not been generated yet.\n",
1967
+ pathParams: [
1968
+ {
1969
+ name: "agreementId",
1970
+ in: "path",
1971
+ flag: "--agreement-id",
1972
+ required: true,
1973
+ description: "Agreement ID"
1974
+ }
1975
+ ],
1976
+ queryParams: [],
1977
+ hasBody: false,
1978
+ bodyFields: [],
1979
+ produces: "binary",
1980
+ consumes: "none"
1981
+ },
1982
+ {
1983
+ api: "sign",
1984
+ operationId: "getAgreementAudit",
1985
+ topic: "audit",
1986
+ command: "trail",
1987
+ method: "GET",
1988
+ path: "/v1/sign/agreements/{agreementId}/audit",
1989
+ summary: "Get audit record",
1990
+ description: "Returns the audit JSON record for a completed agreement, including\nparticipants, events, document hashes, and chain verification.\n\nThe audit is generated automatically when an agreement completes.\nReturns 404 if the audit has not been generated yet.\n",
1991
+ pathParams: [
1992
+ {
1993
+ name: "agreementId",
1994
+ in: "path",
1995
+ flag: "--agreement-id",
1996
+ required: true,
1997
+ description: "Agreement ID"
1998
+ }
1999
+ ],
2000
+ queryParams: [],
2001
+ hasBody: false,
2002
+ bodyFields: [],
2003
+ produces: "json",
2004
+ consumes: "none"
2005
+ },
2006
+ {
2007
+ api: "sign",
2008
+ operationId: "deleteAgreementDocument",
2009
+ topic: "documents",
2010
+ command: "delete",
2011
+ method: "DELETE",
2012
+ path: "/v1/sign/agreements/{agreementId}/documents/{documentId}",
2013
+ summary: "Delete a document from an agreement",
2014
+ description: "Remove a document from a draft agreement",
2015
+ pathParams: [
2016
+ {
2017
+ name: "agreementId",
2018
+ in: "path",
2019
+ flag: "--agreement-id",
2020
+ required: true
2021
+ },
2022
+ {
2023
+ name: "documentId",
2024
+ in: "path",
2025
+ flag: "--document-id",
2026
+ required: true
2027
+ }
2028
+ ],
2029
+ queryParams: [],
2030
+ hasBody: false,
2031
+ bodyFields: [],
2032
+ produces: "json",
2033
+ consumes: "none"
2034
+ },
2035
+ {
2036
+ api: "sign",
2037
+ operationId: "downloadAgreementDocumentContent",
2038
+ topic: "documents",
2039
+ command: "download",
2040
+ method: "GET",
2041
+ path: "/v1/sign/agreements/{agreementId}/documents/{documentId}/content",
2042
+ summary: "Download document content",
2043
+ description: 'Download the current state of a document as a PDF. For completed agreements, returns the final document with all signatures and fields flattened and digitally signed. For in-progress agreements, returns the document with any completed annotations flattened, an "In Progress" watermark, and digitally signed.',
2044
+ pathParams: [
2045
+ {
2046
+ name: "agreementId",
2047
+ in: "path",
2048
+ flag: "--agreement-id",
2049
+ required: true
2050
+ },
2051
+ {
2052
+ name: "documentId",
2053
+ in: "path",
2054
+ flag: "--document-id",
2055
+ required: true
2056
+ }
2057
+ ],
2058
+ queryParams: [],
2059
+ hasBody: false,
2060
+ bodyFields: [],
2061
+ produces: "binary",
2062
+ consumes: "none"
2063
+ },
2064
+ {
2065
+ api: "sign",
2066
+ operationId: "createAgreementDocumentDownloadUrl",
2067
+ topic: "documents",
2068
+ command: "download-url",
2069
+ method: "POST",
2070
+ path: "/v1/sign/agreements/{agreementId}/documents/{documentId}/download-url",
2071
+ summary: "Create a presigned download URL",
2072
+ description: "Create a presigned download URL for the document via the Propper app. The URL is time-limited and can be used without API authentication.",
2073
+ pathParams: [
2074
+ {
2075
+ name: "agreementId",
2076
+ in: "path",
2077
+ flag: "--agreement-id",
2078
+ required: true
2079
+ },
2080
+ {
2081
+ name: "documentId",
2082
+ in: "path",
2083
+ flag: "--document-id",
2084
+ required: true
2085
+ }
2086
+ ],
2087
+ queryParams: [],
2088
+ hasBody: false,
2089
+ bodyFields: [],
2090
+ produces: "json",
2091
+ consumes: "none"
2092
+ },
2093
+ {
2094
+ api: "sign",
2095
+ operationId: "getAgreementDocument",
2096
+ topic: "documents",
2097
+ command: "get",
2098
+ method: "GET",
2099
+ path: "/v1/sign/agreements/{agreementId}/documents/{documentId}",
2100
+ summary: "Get document metadata",
2101
+ description: "Get metadata for a specific document attached to an agreement.",
2102
+ pathParams: [
2103
+ {
2104
+ name: "agreementId",
2105
+ in: "path",
2106
+ flag: "--agreement-id",
2107
+ required: true
2108
+ },
2109
+ {
2110
+ name: "documentId",
2111
+ in: "path",
2112
+ flag: "--document-id",
2113
+ required: true
2114
+ }
2115
+ ],
2116
+ queryParams: [],
2117
+ hasBody: false,
2118
+ bodyFields: [],
2119
+ produces: "json",
2120
+ consumes: "none"
2121
+ },
2122
+ {
2123
+ api: "sign",
2124
+ operationId: "listAgreementDocuments",
2125
+ topic: "documents",
2126
+ command: "list",
2127
+ method: "GET",
2128
+ path: "/v1/sign/agreements/{agreementId}/documents",
2129
+ summary: "List documents for an agreement",
2130
+ pathParams: [
2131
+ {
2132
+ name: "agreementId",
2133
+ in: "path",
2134
+ flag: "--agreement-id",
2135
+ required: true
2136
+ }
2137
+ ],
2138
+ queryParams: [],
2139
+ hasBody: false,
2140
+ bodyFields: [],
2141
+ produces: "json",
2142
+ consumes: "none"
2143
+ },
2144
+ {
2145
+ api: "sign",
2146
+ operationId: "uploadAgreementDocument",
2147
+ topic: "documents",
2148
+ command: "upload",
2149
+ method: "POST",
2150
+ path: "/v1/sign/agreements/{agreementId}/documents",
2151
+ summary: "Upload a document to an agreement",
2152
+ description: "Upload a document with base64-encoded content to an agreement.",
2153
+ pathParams: [
2154
+ {
2155
+ name: "agreementId",
2156
+ in: "path",
2157
+ flag: "--agreement-id",
2158
+ required: true
2159
+ }
2160
+ ],
2161
+ queryParams: [],
2162
+ hasBody: true,
2163
+ bodyFields: [
2164
+ {
2165
+ name: "document",
2166
+ flag: "--document",
2167
+ type: "string",
2168
+ required: true,
2169
+ description: "Base64-encoded document content"
2170
+ },
2171
+ {
2172
+ name: "filename",
2173
+ flag: "--filename",
2174
+ type: "string",
2175
+ required: true,
2176
+ description: "Document filename with extension"
2177
+ },
2178
+ {
2179
+ name: "mimeType",
2180
+ flag: "--mime-type",
2181
+ type: "string",
2182
+ required: false
2183
+ },
2184
+ {
2185
+ name: "order",
2186
+ flag: "--order",
2187
+ type: "integer",
2188
+ required: false,
2189
+ description: "Document order in the agreement"
2190
+ }
2191
+ ],
2192
+ fileField: "document",
2193
+ produces: "json",
2194
+ consumes: "json"
2195
+ },
2196
+ {
2197
+ api: "sign",
2198
+ operationId: "addAgreementRecipient",
2199
+ topic: "recipients",
2200
+ command: "add",
2201
+ method: "POST",
2202
+ path: "/v1/sign/agreements/{id}/recipients",
2203
+ summary: "Add a recipient to an agreement",
2204
+ description: "Add a new recipient to a draft agreement",
2205
+ pathParams: [
2206
+ {
2207
+ name: "id",
2208
+ in: "path",
2209
+ flag: "--agreement-id",
2210
+ required: true
2211
+ }
2212
+ ],
2213
+ queryParams: [],
2214
+ hasBody: true,
2215
+ bodyFields: [
2216
+ {
2217
+ name: "email",
2218
+ flag: "--email",
2219
+ type: "string",
2220
+ required: true
2221
+ },
2222
+ {
2223
+ name: "name",
2224
+ flag: "--name",
2225
+ type: "string",
2226
+ required: true
2227
+ },
2228
+ {
2229
+ name: "role",
2230
+ flag: "--role",
2231
+ type: "string",
2232
+ required: false
2233
+ },
2234
+ {
2235
+ name: "order",
2236
+ flag: "--order",
2237
+ type: "integer",
2238
+ required: false
2239
+ }
2240
+ ],
2241
+ produces: "json",
2242
+ consumes: "json"
2243
+ },
2244
+ {
2245
+ api: "sign",
2246
+ operationId: "deleteAgreementRecipient",
2247
+ topic: "recipients",
2248
+ command: "delete",
2249
+ method: "DELETE",
2250
+ path: "/v1/sign/agreements/{agreementId}/recipients/{recipientId}",
2251
+ summary: "Remove a recipient from an agreement",
2252
+ description: "Remove a recipient from a draft agreement",
2253
+ pathParams: [
2254
+ {
2255
+ name: "agreementId",
2256
+ in: "path",
2257
+ flag: "--agreement-id",
2258
+ required: true
2259
+ },
2260
+ {
2261
+ name: "recipientId",
2262
+ in: "path",
2263
+ flag: "--recipient-id",
2264
+ required: true
2265
+ }
2266
+ ],
2267
+ queryParams: [],
2268
+ hasBody: false,
2269
+ bodyFields: [],
2270
+ produces: "json",
2271
+ consumes: "none"
2272
+ },
2273
+ {
2274
+ api: "sign",
2275
+ operationId: "listAgreementRecipients",
2276
+ topic: "recipients",
2277
+ command: "list",
2278
+ method: "GET",
2279
+ path: "/v1/sign/agreements/{id}/recipients",
2280
+ summary: "List recipients for an agreement",
2281
+ pathParams: [
2282
+ {
2283
+ name: "id",
2284
+ in: "path",
2285
+ flag: "--agreement-id",
2286
+ required: true
2287
+ }
2288
+ ],
2289
+ queryParams: [],
2290
+ hasBody: false,
2291
+ bodyFields: [],
2292
+ produces: "json",
2293
+ consumes: "none"
2294
+ },
2295
+ {
2296
+ api: "sign",
2297
+ operationId: "updateAgreementRecipient",
2298
+ topic: "recipients",
2299
+ command: "update",
2300
+ method: "PATCH",
2301
+ path: "/v1/sign/agreements/{agreementId}/recipients/{recipientId}",
2302
+ summary: "Update a recipient",
2303
+ pathParams: [
2304
+ {
2305
+ name: "agreementId",
2306
+ in: "path",
2307
+ flag: "--agreement-id",
2308
+ required: true
2309
+ },
2310
+ {
2311
+ name: "recipientId",
2312
+ in: "path",
2313
+ flag: "--recipient-id",
2314
+ required: true
2315
+ }
2316
+ ],
2317
+ queryParams: [],
2318
+ hasBody: true,
2319
+ bodyFields: [
2320
+ {
2321
+ name: "email",
2322
+ flag: "--email",
2323
+ type: "string",
2324
+ required: false
2325
+ },
2326
+ {
2327
+ name: "name",
2328
+ flag: "--name",
2329
+ type: "string",
2330
+ required: false
2331
+ },
2332
+ {
2333
+ name: "alias",
2334
+ flag: "--alias",
2335
+ type: "string",
2336
+ required: false
2337
+ },
2338
+ {
2339
+ name: "role",
2340
+ flag: "--role",
2341
+ type: "string",
2342
+ required: false
2343
+ },
2344
+ {
2345
+ name: "order",
2346
+ flag: "--order",
2347
+ type: "integer",
2348
+ required: false
2349
+ },
2350
+ {
2351
+ name: "deliveryChannel",
2352
+ flag: "--delivery-channel",
2353
+ type: "string",
2354
+ required: false
2355
+ },
2356
+ {
2357
+ name: "phone",
2358
+ flag: "--phone",
2359
+ type: "string",
2360
+ required: false,
2361
+ description: "Phone in E.164 format (e.g., +14155551234). Required when deliveryChannel is SMS."
2362
+ }
2363
+ ],
2364
+ produces: "json",
2365
+ consumes: "json"
2366
+ },
2367
+ {
2368
+ api: "sign",
2369
+ operationId: "createTemplate",
2370
+ topic: "templates",
2371
+ command: "create",
2372
+ method: "POST",
2373
+ path: "/v1/sign/templates",
2374
+ summary: "Create an empty template",
2375
+ description: "Creates a new (empty) template owned by the caller's organization.\nDocuments, annotations, and default recipients are added via the\nwizard or the document/annotation endpoints. To create a template\nin one shot from a DocuSign/Propper-shaped payload, use\n`POST /v1/sign/templates/import` instead.\n",
2376
+ pathParams: [],
2377
+ queryParams: [],
2378
+ hasBody: true,
2379
+ bodyFields: [
2380
+ {
2381
+ name: "name",
2382
+ flag: "--name",
2383
+ type: "string",
2384
+ required: true,
2385
+ description: "Template name (1-255 chars)."
2386
+ },
2387
+ {
2388
+ name: "description",
2389
+ flag: "--description",
2390
+ type: "string",
2391
+ required: false,
2392
+ description: "Optional description shown in the template list."
2393
+ },
2394
+ {
2395
+ name: "type",
2396
+ flag: "--type",
2397
+ type: "string",
2398
+ required: false,
2399
+ description: "Signing order for agreements created from this template.\nDefaults to PARALLEL when omitted. `BULK` produces a\nbulk-send parent agreement whose children sign SEQUENTIAL.\n"
2400
+ }
2401
+ ],
2402
+ produces: "json",
2403
+ consumes: "json"
2404
+ },
2405
+ {
2406
+ api: "sign",
2407
+ operationId: "exportTemplate",
2408
+ topic: "templates",
2409
+ command: "export",
2410
+ method: "GET",
2411
+ path: "/v1/sign/templates/{id}/export",
2412
+ summary: "Export a template",
2413
+ description: "Export a template in DocuSign or Propper JSON format",
2414
+ pathParams: [
2415
+ {
2416
+ name: "id",
2417
+ in: "path",
2418
+ flag: "--id",
2419
+ required: true
2420
+ }
2421
+ ],
2422
+ queryParams: [
2423
+ {
2424
+ name: "format",
2425
+ in: "query",
2426
+ flag: "--format",
2427
+ required: false,
2428
+ description: "Export format"
2429
+ },
2430
+ {
2431
+ name: "includeDocuments",
2432
+ in: "query",
2433
+ flag: "--include-documents",
2434
+ required: false,
2435
+ description: "Include base64-encoded document content"
2436
+ }
2437
+ ],
2438
+ hasBody: false,
2439
+ bodyFields: [],
2440
+ produces: "json",
2441
+ consumes: "none"
2442
+ },
2443
+ {
2444
+ api: "sign",
2445
+ operationId: "getTemplate",
2446
+ topic: "templates",
2447
+ command: "get",
2448
+ method: "GET",
2449
+ path: "/v1/sign/templates/{id}",
2450
+ summary: "Get template by ID",
2451
+ pathParams: [
2452
+ {
2453
+ name: "id",
2454
+ in: "path",
2455
+ flag: "--id",
2456
+ required: true
2457
+ }
2458
+ ],
2459
+ queryParams: [],
2460
+ hasBody: false,
2461
+ bodyFields: [],
2462
+ produces: "json",
2463
+ consumes: "none"
2464
+ },
2465
+ {
2466
+ api: "sign",
2467
+ operationId: "importTemplate",
2468
+ topic: "templates",
2469
+ command: "import",
2470
+ method: "POST",
2471
+ path: "/v1/sign/templates/import",
2472
+ summary: "Import a template",
2473
+ description: "Import a template from DocuSign JSON or Propper JSON format. Format is auto-detected.",
2474
+ pathParams: [],
2475
+ queryParams: [],
2476
+ hasBody: true,
2477
+ bodyFields: [
2478
+ {
2479
+ name: "overwriteExisting",
2480
+ flag: "--overwrite-existing",
2481
+ type: "boolean",
2482
+ required: false
2483
+ },
2484
+ {
2485
+ name: "format",
2486
+ flag: "--format",
2487
+ type: "string",
2488
+ required: false
2489
+ }
2490
+ ],
2491
+ produces: "json",
2492
+ consumes: "json"
2493
+ },
2494
+ {
2495
+ api: "sign",
2496
+ operationId: "listTemplates",
2497
+ topic: "templates",
2498
+ command: "list",
2499
+ method: "GET",
2500
+ path: "/v1/sign/templates",
2501
+ summary: "List templates",
2502
+ pathParams: [],
2503
+ queryParams: [
2504
+ {
2505
+ name: "search",
2506
+ in: "query",
2507
+ flag: "--search",
2508
+ required: false,
2509
+ description: "Search by template name"
2510
+ },
2511
+ {
2512
+ name: "page",
2513
+ in: "query",
2514
+ flag: "--page",
2515
+ required: false
2516
+ },
2517
+ {
2518
+ name: "limit",
2519
+ in: "query",
2520
+ flag: "--limit",
2521
+ required: false
2522
+ }
2523
+ ],
2524
+ hasBody: false,
2525
+ bodyFields: [],
2526
+ produces: "json",
2527
+ consumes: "none"
2528
+ },
2529
+ {
2530
+ api: "sign",
2531
+ operationId: "sendTemplate",
2532
+ topic: "templates",
2533
+ command: "send",
2534
+ method: "POST",
2535
+ path: "/v1/sign/templates/{id}/send",
2536
+ summary: "Create and send an agreement from a template",
2537
+ description: "Creates a new agreement from a template and optionally sends it immediately.\nRecipients are matched to template roles by position in the array.\n",
2538
+ pathParams: [
2539
+ {
2540
+ name: "id",
2541
+ in: "path",
2542
+ flag: "--id",
2543
+ required: true,
2544
+ description: "Template ID"
2545
+ }
2546
+ ],
2547
+ queryParams: [],
2548
+ hasBody: true,
2549
+ bodyFields: [
2550
+ {
2551
+ name: "name",
2552
+ flag: "--name",
2553
+ type: "string",
2554
+ required: false,
2555
+ description: "Agreement name (defaults to template name)"
2556
+ },
2557
+ {
2558
+ name: "emailSubject",
2559
+ flag: "--email-subject",
2560
+ type: "string",
2561
+ required: false
2562
+ },
2563
+ {
2564
+ name: "emailMessage",
2565
+ flag: "--email-message",
2566
+ type: "string",
2567
+ required: false
2568
+ },
2569
+ {
2570
+ name: "sendImmediately",
2571
+ flag: "--send-immediately",
2572
+ type: "boolean",
2573
+ required: false
2574
+ }
2575
+ ],
2576
+ produces: "json",
2577
+ consumes: "json"
2578
+ }
2579
+ ]
2580
+ };
2581
+
2582
+ // src/generated/client.ts
2583
+ var manifest = manifest_default;
2584
+ var ENTRIES = Object.fromEntries(
2585
+ manifest.operations.map((o) => [`${o.api}:${o.operationId}`, o])
2586
+ );
2587
+ function callOperation(api, operationId, req, ctx) {
2588
+ const entry = ENTRIES[`${api}:${operationId}`];
2589
+ if (!entry) throw new Error(`Unknown operation: ${api}.${operationId}`);
2590
+ return request(entry, req, ctx);
2591
+ }
2592
+ var operations = {
2593
+ "docgen": {
2594
+ /** List pending approvals (GET /v1/docgen/approvals/pending) */
2595
+ "listPendingApprovals": (req, ctx) => callOperation("docgen", "listPendingApprovals", req, ctx),
2596
+ /** Review an approval request (POST /v1/docgen/approvals/{id}/review) */
2597
+ "reviewApproval": (req, ctx) => callOperation("docgen", "reviewApproval", req, ctx),
2598
+ /** Cancel a batch job (POST /v1/docgen/batches/{id}/cancel) */
2599
+ "cancelBatch": (req, ctx) => callOperation("docgen", "cancelBatch", req, ctx),
2600
+ /** Create a batch generation job (POST /v1/docgen/batches) */
2601
+ "createBatch": (req, ctx) => callOperation("docgen", "createBatch", req, ctx),
2602
+ /** Download batch output (GET /v1/docgen/batches/{id}/download) */
2603
+ "downloadBatchOutput": (req, ctx) => callOperation("docgen", "downloadBatchOutput", req, ctx),
2604
+ /** Get batch job by ID (GET /v1/docgen/batches/{id}) */
2605
+ "getBatch": (req, ctx) => callOperation("docgen", "getBatch", req, ctx),
2606
+ /** List batch jobs (GET /v1/docgen/batches) */
2607
+ "listBatches": (req, ctx) => callOperation("docgen", "listBatches", req, ctx),
2608
+ /** Retry failed items in a batch job (POST /v1/docgen/batches/{id}/retry) */
2609
+ "retryBatch": (req, ctx) => callOperation("docgen", "retryBatch", req, ctx),
2610
+ /** Create a delivery configuration on a template (POST /v1/docgen/templates/{templateId}/delivery-configs) */
2611
+ "createTemplateDeliveryConfig": (req, ctx) => callOperation("docgen", "createTemplateDeliveryConfig", req, ctx),
2612
+ /** Delete a delivery configuration (DELETE /v1/docgen/templates/{templateId}/delivery-configs/{configId}) */
2613
+ "deleteTemplateDeliveryConfig": (req, ctx) => callOperation("docgen", "deleteTemplateDeliveryConfig", req, ctx),
2614
+ /** List delivery attempts for a generated document (GET /v1/docgen/documents/{documentId}/delivery-logs) */
2615
+ "listDocumentDeliveryLogs": (req, ctx) => callOperation("docgen", "listDocumentDeliveryLogs", req, ctx),
2616
+ /** List delivery configurations across all templates (GET /v1/docgen/delivery-configs) */
2617
+ "listDeliveryConfigs": (req, ctx) => callOperation("docgen", "listDeliveryConfigs", req, ctx),
2618
+ /** List delivery configurations attached to a template (GET /v1/docgen/templates/{templateId}/delivery-configs) */
2619
+ "listTemplateDeliveryConfigs": (req, ctx) => callOperation("docgen", "listTemplateDeliveryConfigs", req, ctx),
2620
+ /** Update a delivery configuration (PUT /v1/docgen/templates/{templateId}/delivery-configs/{configId}) */
2621
+ "updateTemplateDeliveryConfig": (req, ctx) => callOperation("docgen", "updateTemplateDeliveryConfig", req, ctx),
2622
+ /** Generate a document from a template (POST /v1/docgen/documents) */
2623
+ "generateDocument": (req, ctx) => callOperation("docgen", "generateDocument", req, ctx),
2624
+ /** Download a generated document (GET /v1/docgen/documents/{id}/download) */
2625
+ "downloadDocument": (req, ctx) => callOperation("docgen", "downloadDocument", req, ctx),
2626
+ /** Get document by ID (GET /v1/docgen/documents/{id}) */
2627
+ "getDocument": (req, ctx) => callOperation("docgen", "getDocument", req, ctx),
2628
+ /** List generated documents (GET /v1/docgen/documents) */
2629
+ "listDocuments": (req, ctx) => callOperation("docgen", "listDocuments", req, ctx),
2630
+ /** Send a generated PDF for signature (POST /v1/docgen/documents/{id}/send-for-signature) */
2631
+ "sendDocumentForSignature": (req, ctx) => callOperation("docgen", "sendDocumentForSignature", req, ctx),
2632
+ /** Archive a template (POST /v1/docgen/templates/{id}/archive) */
2633
+ "archiveTemplate": (req, ctx) => callOperation("docgen", "archiveTemplate", req, ctx),
2634
+ /** Clone a template (POST /v1/docgen/templates/{id}/clone) */
2635
+ "cloneTemplate": (req, ctx) => callOperation("docgen", "cloneTemplate", req, ctx),
2636
+ /** Create a new template (POST /v1/docgen/templates) */
2637
+ "createTemplate": (req, ctx) => callOperation("docgen", "createTemplate", req, ctx),
2638
+ /** Create a new template version (POST /v1/docgen/templates/{id}/versions) */
2639
+ "createTemplateVersion": (req, ctx) => callOperation("docgen", "createTemplateVersion", req, ctx),
2640
+ /** List template deployments (GET /v1/docgen/templates/{id}/deployments) */
2641
+ "listTemplateDeployments": (req, ctx) => callOperation("docgen", "listTemplateDeployments", req, ctx),
2642
+ /** Get the merge-variable schema for a template (GET /v1/docgen/templates/{id}/form-fields) */
2643
+ "getTemplateFormFields": (req, ctx) => callOperation("docgen", "getTemplateFormFields", req, ctx),
2644
+ /** Get template by ID (GET /v1/docgen/templates/{id}) */
2645
+ "getTemplate": (req, ctx) => callOperation("docgen", "getTemplate", req, ctx),
2646
+ /** Import a DocuSign Gen template from a JSON export (POST /v1/docgen/templates/import-from-source) */
2647
+ "importTemplateFromSource": (req, ctx) => callOperation("docgen", "importTemplateFromSource", req, ctx),
2648
+ /** List templates (GET /v1/docgen/templates) */
2649
+ "listTemplates": (req, ctx) => callOperation("docgen", "listTemplates", req, ctx),
2650
+ /** Promote template to target environment (POST /v1/docgen/templates/{id}/promote) */
2651
+ "promoteTemplate": (req, ctx) => callOperation("docgen", "promoteTemplate", req, ctx),
2652
+ /** Update a template (PUT /v1/docgen/templates/{id}) */
2653
+ "updateTemplate": (req, ctx) => callOperation("docgen", "updateTemplate", req, ctx),
2654
+ /** List template versions (GET /v1/docgen/templates/{id}/versions) */
2655
+ "listTemplateVersions": (req, ctx) => callOperation("docgen", "listTemplateVersions", req, ctx)
2656
+ },
2657
+ "locker": {
2658
+ /** Chat with documents (POST /v1/locker/chat) */
2659
+ "chatWithDocuments": (req, ctx) => callOperation("locker", "chatWithDocuments", req, ctx),
2660
+ /** Chat with documents (SSE streaming) (POST /v1/locker/chat/stream) */
2661
+ "streamChatWithDocuments": (req, ctx) => callOperation("locker", "streamChatWithDocuments", req, ctx),
2662
+ /** Create a document (POST /v1/locker/documents) */
2663
+ "createDocument": (req, ctx) => callOperation("locker", "createDocument", req, ctx),
2664
+ /** Delete a document (DELETE /v1/locker/documents/{id}) */
2665
+ "deleteDocument": (req, ctx) => callOperation("locker", "deleteDocument", req, ctx),
2666
+ /** Download a document (GET /v1/locker/documents/{id}/download) */
2667
+ "downloadDocument": (req, ctx) => callOperation("locker", "downloadDocument", req, ctx),
2668
+ /** Get document by ID (GET /v1/locker/documents/{id}) */
2669
+ "getDocument": (req, ctx) => callOperation("locker", "getDocument", req, ctx),
2670
+ /** List documents (GET /v1/locker/documents) */
2671
+ "listDocuments": (req, ctx) => callOperation("locker", "listDocuments", req, ctx),
2672
+ /** Update document metadata (PATCH /v1/locker/documents/{id}) */
2673
+ "updateDocument": (req, ctx) => callOperation("locker", "updateDocument", req, ctx),
2674
+ /** Upload a document (POST /v1/locker/documents/upload) */
2675
+ "uploadDocument": (req, ctx) => callOperation("locker", "uploadDocument", req, ctx),
2676
+ /** Delete a risk (DELETE /v1/locker/risks/{id}) */
2677
+ "deleteRisk": (req, ctx) => callOperation("locker", "deleteRisk", req, ctx),
2678
+ /** Extract risks from a document (POST /v1/locker/risks/extract) */
2679
+ "extractRisks": (req, ctx) => callOperation("locker", "extractRisks", req, ctx),
2680
+ /** Get risk by ID (GET /v1/locker/risks/{id}) */
2681
+ "getRisk": (req, ctx) => callOperation("locker", "getRisk", req, ctx),
2682
+ /** List risks (GET /v1/locker/risks) */
2683
+ "listRisks": (req, ctx) => callOperation("locker", "listRisks", req, ctx),
2684
+ /** Get risk summary statistics (GET /v1/locker/risks/stats) */
2685
+ "getRiskStats": (req, ctx) => callOperation("locker", "getRiskStats", req, ctx),
2686
+ /** Update a risk (PATCH /v1/locker/risks/{id}) */
2687
+ "updateRisk": (req, ctx) => callOperation("locker", "updateRisk", req, ctx),
2688
+ /** Get organization locker settings (GET /v1/locker/settings) */
2689
+ "getLockerSettings": (req, ctx) => callOperation("locker", "getLockerSettings", req, ctx),
2690
+ /** Update organization locker settings (PATCH /v1/locker/settings) */
2691
+ "updateLockerSettings": (req, ctx) => callOperation("locker", "updateLockerSettings", req, ctx),
2692
+ /** Get pipeline usage statistics (GET /v1/locker/settings/usage) */
2693
+ "getLockerUsage": (req, ctx) => callOperation("locker", "getLockerUsage", req, ctx)
2694
+ },
2695
+ "sign": {
2696
+ /** Create a new agreement (POST /v1/sign/agreements) */
2697
+ "createAgreement": (req, ctx) => callOperation("sign", "createAgreement", req, ctx),
2698
+ /** Delete an agreement (DELETE /v1/sign/agreements/{id}) */
2699
+ "deleteAgreement": (req, ctx) => callOperation("sign", "deleteAgreement", req, ctx),
2700
+ /** Download agreement as ZIP (GET /v1/sign/agreements/{agreementId}/download) */
2701
+ "downloadAgreement": (req, ctx) => callOperation("sign", "downloadAgreement", req, ctx),
2702
+ /** Create and send an agreement from a docgen template in one call (POST /v1/sign/gen-and-send) */
2703
+ "genAndSendAgreement": (req, ctx) => callOperation("sign", "genAndSendAgreement", req, ctx),
2704
+ /** Get agreement by ID (GET /v1/sign/agreements/{id}) */
2705
+ "getAgreement": (req, ctx) => callOperation("sign", "getAgreement", req, ctx),
2706
+ /** List agreements (GET /v1/sign/agreements) */
2707
+ "listAgreements": (req, ctx) => callOperation("sign", "listAgreements", req, ctx),
2708
+ /** Send agreement for signing (POST /v1/sign/agreements/{id}/send) */
2709
+ "sendAgreement": (req, ctx) => callOperation("sign", "sendAgreement", req, ctx),
2710
+ /** Replace annotations on an agreement (PUT /v1/sign/agreements/{id}/annotations) */
2711
+ "replaceAgreementAnnotations": (req, ctx) => callOperation("sign", "replaceAgreementAnnotations", req, ctx),
2712
+ /** Get agreement signing status (GET /v1/sign/agreements/{id}/status) */
2713
+ "getAgreementStatus": (req, ctx) => callOperation("sign", "getAgreementStatus", req, ctx),
2714
+ /** Update an agreement (PATCH /v1/sign/agreements/{id}) */
2715
+ "updateAgreement": (req, ctx) => callOperation("sign", "updateAgreement", req, ctx),
2716
+ /** Void an agreement (POST /v1/sign/agreements/{id}/void) */
2717
+ "voidAgreement": (req, ctx) => callOperation("sign", "voidAgreement", req, ctx),
2718
+ /** Get audit certificate PDF (GET /v1/sign/agreements/{agreementId}/audit/pdf) */
2719
+ "getAgreementAuditPdf": (req, ctx) => callOperation("sign", "getAgreementAuditPdf", req, ctx),
2720
+ /** Get audit record (GET /v1/sign/agreements/{agreementId}/audit) */
2721
+ "getAgreementAudit": (req, ctx) => callOperation("sign", "getAgreementAudit", req, ctx),
2722
+ /** Delete a document from an agreement (DELETE /v1/sign/agreements/{agreementId}/documents/{documentId}) */
2723
+ "deleteAgreementDocument": (req, ctx) => callOperation("sign", "deleteAgreementDocument", req, ctx),
2724
+ /** Download document content (GET /v1/sign/agreements/{agreementId}/documents/{documentId}/content) */
2725
+ "downloadAgreementDocumentContent": (req, ctx) => callOperation("sign", "downloadAgreementDocumentContent", req, ctx),
2726
+ /** Create a presigned download URL (POST /v1/sign/agreements/{agreementId}/documents/{documentId}/download-url) */
2727
+ "createAgreementDocumentDownloadUrl": (req, ctx) => callOperation("sign", "createAgreementDocumentDownloadUrl", req, ctx),
2728
+ /** Get document metadata (GET /v1/sign/agreements/{agreementId}/documents/{documentId}) */
2729
+ "getAgreementDocument": (req, ctx) => callOperation("sign", "getAgreementDocument", req, ctx),
2730
+ /** List documents for an agreement (GET /v1/sign/agreements/{agreementId}/documents) */
2731
+ "listAgreementDocuments": (req, ctx) => callOperation("sign", "listAgreementDocuments", req, ctx),
2732
+ /** Upload a document to an agreement (POST /v1/sign/agreements/{agreementId}/documents) */
2733
+ "uploadAgreementDocument": (req, ctx) => callOperation("sign", "uploadAgreementDocument", req, ctx),
2734
+ /** Add a recipient to an agreement (POST /v1/sign/agreements/{id}/recipients) */
2735
+ "addAgreementRecipient": (req, ctx) => callOperation("sign", "addAgreementRecipient", req, ctx),
2736
+ /** Remove a recipient from an agreement (DELETE /v1/sign/agreements/{agreementId}/recipients/{recipientId}) */
2737
+ "deleteAgreementRecipient": (req, ctx) => callOperation("sign", "deleteAgreementRecipient", req, ctx),
2738
+ /** List recipients for an agreement (GET /v1/sign/agreements/{id}/recipients) */
2739
+ "listAgreementRecipients": (req, ctx) => callOperation("sign", "listAgreementRecipients", req, ctx),
2740
+ /** Update a recipient (PATCH /v1/sign/agreements/{agreementId}/recipients/{recipientId}) */
2741
+ "updateAgreementRecipient": (req, ctx) => callOperation("sign", "updateAgreementRecipient", req, ctx),
2742
+ /** Create an empty template (POST /v1/sign/templates) */
2743
+ "createTemplate": (req, ctx) => callOperation("sign", "createTemplate", req, ctx),
2744
+ /** Export a template (GET /v1/sign/templates/{id}/export) */
2745
+ "exportTemplate": (req, ctx) => callOperation("sign", "exportTemplate", req, ctx),
2746
+ /** Get template by ID (GET /v1/sign/templates/{id}) */
2747
+ "getTemplate": (req, ctx) => callOperation("sign", "getTemplate", req, ctx),
2748
+ /** Import a template (POST /v1/sign/templates/import) */
2749
+ "importTemplate": (req, ctx) => callOperation("sign", "importTemplate", req, ctx),
2750
+ /** List templates (GET /v1/sign/templates) */
2751
+ "listTemplates": (req, ctx) => callOperation("sign", "listTemplates", req, ctx),
2752
+ /** Create and send an agreement from a template (POST /v1/sign/templates/{id}/send) */
2753
+ "sendTemplate": (req, ctx) => callOperation("sign", "sendTemplate", req, ctx)
2754
+ }
2755
+ };
2756
+
2757
+ export {
2758
+ ApiError,
2759
+ UsageError,
2760
+ AuthError,
2761
+ manifest,
2762
+ callOperation,
2763
+ operations
2764
+ };
2765
+ //# sourceMappingURL=chunk-CBIH6V3I.js.map