@documenso/sdk-typescript 0.8.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/README.md +385 -360
  2. package/bin/mcp-server.js +3946 -1699
  3. package/bin/mcp-server.js.map +68 -57
  4. package/funcs/envelopeEnvelopeAuditLogDownloadPdf.d.ts +18 -0
  5. package/funcs/envelopeEnvelopeAuditLogDownloadPdf.d.ts.map +1 -0
  6. package/funcs/envelopeEnvelopeAuditLogDownloadPdf.js +127 -0
  7. package/funcs/envelopeEnvelopeAuditLogDownloadPdf.js.map +1 -0
  8. package/funcs/envelopeEnvelopeCancel.d.ts +15 -0
  9. package/funcs/envelopeEnvelopeCancel.d.ts.map +1 -0
  10. package/funcs/envelopeEnvelopeCancel.js +116 -0
  11. package/funcs/envelopeEnvelopeCancel.js.map +1 -0
  12. package/funcs/envelopeEnvelopeCertificateDownloadPdf.d.ts +18 -0
  13. package/funcs/envelopeEnvelopeCertificateDownloadPdf.d.ts.map +1 -0
  14. package/funcs/envelopeEnvelopeCertificateDownloadPdf.js +124 -0
  15. package/funcs/envelopeEnvelopeCertificateDownloadPdf.js.map +1 -0
  16. package/funcs/envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf.d.ts +18 -0
  17. package/funcs/envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf.d.ts.map +1 -0
  18. package/funcs/envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf.js +125 -0
  19. package/funcs/envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf.js.map +1 -0
  20. package/hooks/types.d.ts +1 -0
  21. package/hooks/types.d.ts.map +1 -1
  22. package/jsr.json +1 -1
  23. package/lib/config.d.ts +3 -3
  24. package/lib/config.js +3 -3
  25. package/lib/encodings.js +12 -12
  26. package/lib/encodings.js.map +1 -1
  27. package/lib/env.d.ts.map +1 -1
  28. package/lib/env.js +3 -3
  29. package/lib/env.js.map +1 -1
  30. package/lib/http.d.ts +1 -1
  31. package/lib/http.d.ts.map +1 -1
  32. package/lib/http.js +1 -1
  33. package/lib/http.js.map +1 -1
  34. package/lib/matchers.js +3 -3
  35. package/lib/matchers.js.map +1 -1
  36. package/lib/primitives.d.ts +1 -0
  37. package/lib/primitives.d.ts.map +1 -1
  38. package/lib/primitives.js +18 -0
  39. package/lib/primitives.js.map +1 -1
  40. package/lib/retries.js +7 -0
  41. package/lib/retries.js.map +1 -1
  42. package/lib/sdks.d.ts.map +1 -1
  43. package/lib/sdks.js +50 -16
  44. package/lib/sdks.js.map +1 -1
  45. package/lib/security.d.ts +5 -4
  46. package/lib/security.d.ts.map +1 -1
  47. package/lib/security.js +6 -7
  48. package/lib/security.js.map +1 -1
  49. package/mcp-server/mcp-server.js +1 -1
  50. package/mcp-server/server.d.ts.map +1 -1
  51. package/mcp-server/server.js +9 -1
  52. package/mcp-server/server.js.map +1 -1
  53. package/mcp-server/tools/envelopeEnvelopeAuditLogDownloadPdf.d.ts +8 -0
  54. package/mcp-server/tools/envelopeEnvelopeAuditLogDownloadPdf.d.ts.map +1 -0
  55. package/mcp-server/tools/envelopeEnvelopeAuditLogDownloadPdf.js +64 -0
  56. package/mcp-server/tools/envelopeEnvelopeAuditLogDownloadPdf.js.map +1 -0
  57. package/mcp-server/tools/envelopeEnvelopeCancel.d.ts +8 -0
  58. package/mcp-server/tools/envelopeEnvelopeCancel.d.ts.map +1 -0
  59. package/mcp-server/tools/envelopeEnvelopeCancel.js +62 -0
  60. package/mcp-server/tools/envelopeEnvelopeCancel.js.map +1 -0
  61. package/mcp-server/tools/envelopeEnvelopeCertificateDownloadPdf.d.ts +8 -0
  62. package/mcp-server/tools/envelopeEnvelopeCertificateDownloadPdf.d.ts.map +1 -0
  63. package/mcp-server/tools/envelopeEnvelopeCertificateDownloadPdf.js +64 -0
  64. package/mcp-server/tools/envelopeEnvelopeCertificateDownloadPdf.js.map +1 -0
  65. package/mcp-server/tools/envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf.d.ts +8 -0
  66. package/mcp-server/tools/envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf.d.ts.map +1 -0
  67. package/mcp-server/tools/envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf.js +64 -0
  68. package/mcp-server/tools/envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf.js.map +1 -0
  69. package/models/errors/envelopeauditlogdownloadpdf.d.ts +230 -0
  70. package/models/errors/envelopeauditlogdownloadpdf.d.ts.map +1 -0
  71. package/models/errors/envelopeauditlogdownloadpdf.js +318 -0
  72. package/models/errors/envelopeauditlogdownloadpdf.js.map +1 -0
  73. package/models/errors/envelopecancel.d.ts +185 -0
  74. package/models/errors/envelopecancel.d.ts.map +1 -0
  75. package/models/errors/envelopecancel.js +268 -0
  76. package/models/errors/envelopecancel.js.map +1 -0
  77. package/models/errors/envelopecertificatedownloadpdf.d.ts +230 -0
  78. package/models/errors/envelopecertificatedownloadpdf.d.ts.map +1 -0
  79. package/models/errors/envelopecertificatedownloadpdf.js +319 -0
  80. package/models/errors/envelopecertificatedownloadpdf.js.map +1 -0
  81. package/models/errors/enveloperecipientrejectonbehalfof.d.ts +185 -0
  82. package/models/errors/enveloperecipientrejectonbehalfof.d.ts.map +1 -0
  83. package/models/errors/enveloperecipientrejectonbehalfof.js +265 -0
  84. package/models/errors/enveloperecipientrejectonbehalfof.js.map +1 -0
  85. package/models/errors/index.d.ts +4 -0
  86. package/models/errors/index.d.ts.map +1 -1
  87. package/models/errors/index.js +4 -0
  88. package/models/errors/index.js.map +1 -1
  89. package/models/operations/documentcreatedocumenttemporary.d.ts +1 -0
  90. package/models/operations/documentcreatedocumenttemporary.d.ts.map +1 -1
  91. package/models/operations/documentcreatedocumenttemporary.js +1 -0
  92. package/models/operations/documentcreatedocumenttemporary.js.map +1 -1
  93. package/models/operations/documentdistribute.d.ts +1 -0
  94. package/models/operations/documentdistribute.d.ts.map +1 -1
  95. package/models/operations/documentdistribute.js +1 -0
  96. package/models/operations/documentdistribute.js.map +1 -1
  97. package/models/operations/documentfind.d.ts +2 -0
  98. package/models/operations/documentfind.d.ts.map +1 -1
  99. package/models/operations/documentfind.js +2 -0
  100. package/models/operations/documentfind.js.map +1 -1
  101. package/models/operations/documentget.d.ts +1 -0
  102. package/models/operations/documentget.d.ts.map +1 -1
  103. package/models/operations/documentget.js +1 -0
  104. package/models/operations/documentget.js.map +1 -1
  105. package/models/operations/documentgetmany.d.ts +1 -0
  106. package/models/operations/documentgetmany.d.ts.map +1 -1
  107. package/models/operations/documentgetmany.js +1 -0
  108. package/models/operations/documentgetmany.js.map +1 -1
  109. package/models/operations/documentupdate.d.ts +1 -0
  110. package/models/operations/documentupdate.d.ts.map +1 -1
  111. package/models/operations/documentupdate.js +1 -0
  112. package/models/operations/documentupdate.js.map +1 -1
  113. package/models/operations/envelopeauditlogdownloadpdf.d.ts +39 -0
  114. package/models/operations/envelopeauditlogdownloadpdf.d.ts.map +1 -0
  115. package/models/operations/envelopeauditlogdownloadpdf.js +87 -0
  116. package/models/operations/envelopeauditlogdownloadpdf.js.map +1 -0
  117. package/models/operations/envelopeauditlogfind.d.ts +591 -251
  118. package/models/operations/envelopeauditlogfind.d.ts.map +1 -1
  119. package/models/operations/envelopeauditlogfind.js +678 -278
  120. package/models/operations/envelopeauditlogfind.js.map +1 -1
  121. package/models/operations/envelopecancel.d.ts +35 -0
  122. package/models/operations/envelopecancel.d.ts.map +1 -0
  123. package/models/operations/envelopecancel.js +76 -0
  124. package/models/operations/envelopecancel.js.map +1 -0
  125. package/models/operations/envelopecertificatedownloadpdf.d.ts +39 -0
  126. package/models/operations/envelopecertificatedownloadpdf.d.ts.map +1 -0
  127. package/models/operations/envelopecertificatedownloadpdf.js +87 -0
  128. package/models/operations/envelopecertificatedownloadpdf.js.map +1 -0
  129. package/models/operations/envelopeduplicate.d.ts +4 -0
  130. package/models/operations/envelopeduplicate.d.ts.map +1 -1
  131. package/models/operations/envelopeduplicate.js +4 -0
  132. package/models/operations/envelopeduplicate.js.map +1 -1
  133. package/models/operations/envelopefind.d.ts +2 -0
  134. package/models/operations/envelopefind.d.ts.map +1 -1
  135. package/models/operations/envelopefind.js +2 -0
  136. package/models/operations/envelopefind.js.map +1 -1
  137. package/models/operations/envelopeget.d.ts +1 -0
  138. package/models/operations/envelopeget.d.ts.map +1 -1
  139. package/models/operations/envelopeget.js +1 -0
  140. package/models/operations/envelopeget.js.map +1 -1
  141. package/models/operations/envelopegetmany.d.ts +1 -0
  142. package/models/operations/envelopegetmany.d.ts.map +1 -1
  143. package/models/operations/envelopegetmany.js +1 -0
  144. package/models/operations/envelopegetmany.js.map +1 -1
  145. package/models/operations/enveloperecipientrejectonbehalfof.d.ts +793 -0
  146. package/models/operations/enveloperecipientrejectonbehalfof.d.ts.map +1 -0
  147. package/models/operations/enveloperecipientrejectonbehalfof.js +965 -0
  148. package/models/operations/enveloperecipientrejectonbehalfof.js.map +1 -0
  149. package/models/operations/envelopeupdate.d.ts +1 -0
  150. package/models/operations/envelopeupdate.d.ts.map +1 -1
  151. package/models/operations/envelopeupdate.js +1 -0
  152. package/models/operations/envelopeupdate.js.map +1 -1
  153. package/models/operations/index.d.ts +4 -0
  154. package/models/operations/index.d.ts.map +1 -1
  155. package/models/operations/index.js +4 -0
  156. package/models/operations/index.js.map +1 -1
  157. package/models/operations/templatecreatedocumentfromtemplate.d.ts +1 -0
  158. package/models/operations/templatecreatedocumentfromtemplate.d.ts.map +1 -1
  159. package/models/operations/templatecreatedocumentfromtemplate.js +1 -0
  160. package/models/operations/templatecreatedocumentfromtemplate.js.map +1 -1
  161. package/package.json +1 -1
  162. package/sdk/envelope.d.ts +18 -0
  163. package/sdk/envelope.d.ts.map +1 -1
  164. package/sdk/envelope.js +27 -0
  165. package/sdk/envelope.js.map +1 -1
  166. package/sdk/enveloperecipients.d.ts +12 -0
  167. package/sdk/enveloperecipients.d.ts.map +1 -0
  168. package/sdk/enveloperecipients.js +22 -0
  169. package/sdk/enveloperecipients.js.map +1 -0
  170. package/sdk/sdk.d.ts +3 -0
  171. package/sdk/sdk.d.ts.map +1 -1
  172. package/sdk/sdk.js +4 -0
  173. package/sdk/sdk.js.map +1 -1
  174. package/src/funcs/envelopeEnvelopeAuditLogDownloadPdf.ts +213 -0
  175. package/src/funcs/envelopeEnvelopeCancel.ts +180 -0
  176. package/src/funcs/envelopeEnvelopeCertificateDownloadPdf.ts +216 -0
  177. package/src/funcs/envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf.ts +209 -0
  178. package/src/hooks/types.ts +1 -0
  179. package/src/lib/config.ts +3 -3
  180. package/src/lib/encodings.ts +1 -1
  181. package/src/lib/env.ts +7 -3
  182. package/src/lib/http.ts +3 -1
  183. package/src/lib/matchers.ts +1 -1
  184. package/src/lib/primitives.ts +16 -0
  185. package/src/lib/retries.ts +8 -0
  186. package/src/lib/sdks.ts +54 -17
  187. package/src/lib/security.ts +10 -5
  188. package/src/mcp-server/mcp-server.ts +1 -1
  189. package/src/mcp-server/server.ts +9 -1
  190. package/src/mcp-server/tools/envelopeEnvelopeAuditLogDownloadPdf.ts +39 -0
  191. package/src/mcp-server/tools/envelopeEnvelopeCancel.ts +35 -0
  192. package/src/mcp-server/tools/envelopeEnvelopeCertificateDownloadPdf.ts +39 -0
  193. package/src/mcp-server/tools/envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf.ts +39 -0
  194. package/src/models/errors/envelopeauditlogdownloadpdf.ts +689 -0
  195. package/src/models/errors/envelopecancel.ts +498 -0
  196. package/src/models/errors/envelopecertificatedownloadpdf.ts +716 -0
  197. package/src/models/errors/enveloperecipientrejectonbehalfof.ts +584 -0
  198. package/src/models/errors/index.ts +4 -0
  199. package/src/models/operations/documentcreatedocumenttemporary.ts +1 -0
  200. package/src/models/operations/documentdistribute.ts +1 -0
  201. package/src/models/operations/documentfind.ts +2 -0
  202. package/src/models/operations/documentget.ts +1 -0
  203. package/src/models/operations/documentgetmany.ts +1 -0
  204. package/src/models/operations/documentupdate.ts +1 -0
  205. package/src/models/operations/envelopeauditlogdownloadpdf.ts +118 -0
  206. package/src/models/operations/envelopeauditlogfind.ts +1471 -513
  207. package/src/models/operations/envelopecancel.ts +101 -0
  208. package/src/models/operations/envelopecertificatedownloadpdf.ts +119 -0
  209. package/src/models/operations/envelopeduplicate.ts +8 -0
  210. package/src/models/operations/envelopefind.ts +2 -0
  211. package/src/models/operations/envelopeget.ts +1 -0
  212. package/src/models/operations/envelopegetmany.ts +1 -0
  213. package/src/models/operations/enveloperecipientrejectonbehalfof.ts +2277 -0
  214. package/src/models/operations/envelopeupdate.ts +1 -0
  215. package/src/models/operations/index.ts +4 -0
  216. package/src/models/operations/templatecreatedocumentfromtemplate.ts +1 -0
  217. package/src/sdk/envelope.ts +51 -0
  218. package/src/sdk/enveloperecipients.ts +27 -0
  219. package/src/sdk/sdk.ts +6 -0
  220. package/src/types/async.ts +8 -7
  221. package/types/async.d.ts.map +1 -1
  222. package/types/async.js +8 -7
  223. package/types/async.js.map +1 -1
  224. package/lib/dlv.d.ts +0 -14
  225. package/lib/dlv.d.ts.map +0 -1
  226. package/lib/dlv.js +0 -49
  227. package/lib/dlv.js.map +0 -1
  228. package/lib/is-plain-object.d.ts +0 -2
  229. package/lib/is-plain-object.d.ts.map +0 -1
  230. package/lib/is-plain-object.js +0 -41
  231. package/lib/is-plain-object.js.map +0 -1
  232. package/src/lib/dlv.ts +0 -53
  233. package/src/lib/is-plain-object.ts +0 -43
@@ -0,0 +1,209 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { DocumensoCore } from "../core.js";
6
+ import { encodeJSON, encodeSimple } from "../lib/encodings.js";
7
+ import { matchStatusCode } from "../lib/http.js";
8
+ import * as M from "../lib/matchers.js";
9
+ import { compactMap } from "../lib/primitives.js";
10
+ import { safeParse } from "../lib/schemas.js";
11
+ import { RequestOptions } from "../lib/sdks.js";
12
+ import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
13
+ import { pathToFunc } from "../lib/url.js";
14
+ import { DocumensoError } from "../models/errors/documensoerror.js";
15
+ import {
16
+ ConnectionError,
17
+ InvalidRequestError,
18
+ RequestAbortedError,
19
+ RequestTimeoutError,
20
+ UnexpectedClientError,
21
+ } from "../models/errors/httpclienterrors.js";
22
+ import * as errors from "../models/errors/index.js";
23
+ import { ResponseValidationError } from "../models/errors/responsevalidationerror.js";
24
+ import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
25
+ import * as operations from "../models/operations/index.js";
26
+ import { APICall, APIPromise } from "../types/async.js";
27
+ import { Result } from "../types/fp.js";
28
+
29
+ /**
30
+ * Reject envelope recipient on behalf of
31
+ *
32
+ * @remarks
33
+ * Records a rejection on behalf of a recipient. Use this when a recipient has declined to sign outside of the platform. The rejection is flagged as external in the document audit log. By default the action is attributed to the API user; supply `actAsEmail` to attribute it to a specific team member.
34
+ */
35
+ export function envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf(
36
+ client: DocumensoCore,
37
+ request: operations.EnvelopeRecipientRejectOnBehalfOfRequest,
38
+ options?: RequestOptions,
39
+ ): APIPromise<
40
+ Result<
41
+ operations.EnvelopeRecipientRejectOnBehalfOfResponse,
42
+ | errors.EnvelopeRecipientRejectOnBehalfOfBadRequestError
43
+ | errors.EnvelopeRecipientRejectOnBehalfOfUnauthorizedError
44
+ | errors.EnvelopeRecipientRejectOnBehalfOfForbiddenError
45
+ | errors.EnvelopeRecipientRejectOnBehalfOfInternalServerError
46
+ | DocumensoError
47
+ | ResponseValidationError
48
+ | ConnectionError
49
+ | RequestAbortedError
50
+ | RequestTimeoutError
51
+ | InvalidRequestError
52
+ | UnexpectedClientError
53
+ | SDKValidationError
54
+ >
55
+ > {
56
+ return new APIPromise($do(
57
+ client,
58
+ request,
59
+ options,
60
+ ));
61
+ }
62
+
63
+ async function $do(
64
+ client: DocumensoCore,
65
+ request: operations.EnvelopeRecipientRejectOnBehalfOfRequest,
66
+ options?: RequestOptions,
67
+ ): Promise<
68
+ [
69
+ Result<
70
+ operations.EnvelopeRecipientRejectOnBehalfOfResponse,
71
+ | errors.EnvelopeRecipientRejectOnBehalfOfBadRequestError
72
+ | errors.EnvelopeRecipientRejectOnBehalfOfUnauthorizedError
73
+ | errors.EnvelopeRecipientRejectOnBehalfOfForbiddenError
74
+ | errors.EnvelopeRecipientRejectOnBehalfOfInternalServerError
75
+ | DocumensoError
76
+ | ResponseValidationError
77
+ | ConnectionError
78
+ | RequestAbortedError
79
+ | RequestTimeoutError
80
+ | InvalidRequestError
81
+ | UnexpectedClientError
82
+ | SDKValidationError
83
+ >,
84
+ APICall,
85
+ ]
86
+ > {
87
+ const parsed = safeParse(
88
+ request,
89
+ (value) =>
90
+ operations.EnvelopeRecipientRejectOnBehalfOfRequest$outboundSchema.parse(
91
+ value,
92
+ ),
93
+ "Input validation failed",
94
+ );
95
+ if (!parsed.ok) {
96
+ return [parsed, { status: "invalid" }];
97
+ }
98
+ const payload = parsed.value;
99
+ const body = encodeJSON("body", payload.RequestBody, { explode: true });
100
+
101
+ const pathParams = {
102
+ recipientId: encodeSimple("recipientId", payload.recipientId, {
103
+ explode: false,
104
+ charEncoding: "percent",
105
+ }),
106
+ };
107
+ const path = pathToFunc("/envelope/recipient/{recipientId}/reject")(
108
+ pathParams,
109
+ );
110
+
111
+ const headers = new Headers(compactMap({
112
+ "Content-Type": "application/json",
113
+ Accept: "application/json",
114
+ }));
115
+
116
+ const secConfig = await extractSecurity(client._options.apiKey);
117
+ const securityInput = secConfig == null ? {} : { apiKey: secConfig };
118
+ const requestSecurity = resolveGlobalSecurity(securityInput);
119
+
120
+ const context = {
121
+ options: client._options,
122
+ baseURL: options?.serverURL ?? client._baseURL ?? "",
123
+ operationID: "envelope-recipient-rejectOnBehalfOf",
124
+ oAuth2Scopes: null,
125
+
126
+ resolvedSecurity: requestSecurity,
127
+
128
+ securitySource: client._options.apiKey,
129
+ retryConfig: options?.retries
130
+ || client._options.retryConfig
131
+ || { strategy: "none" },
132
+ retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"],
133
+ };
134
+
135
+ const requestRes = client._createRequest(context, {
136
+ security: requestSecurity,
137
+ method: "POST",
138
+ baseURL: options?.serverURL,
139
+ path: path,
140
+ headers: headers,
141
+ body: body,
142
+ userAgent: client._options.userAgent,
143
+ timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
144
+ }, options);
145
+ if (!requestRes.ok) {
146
+ return [requestRes, { status: "invalid" }];
147
+ }
148
+ const req = requestRes.value;
149
+
150
+ const doResult = await client._do(req, {
151
+ context,
152
+ isErrorStatusCode: (statusCode: number) =>
153
+ matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]),
154
+ retryConfig: context.retryConfig,
155
+ retryCodes: context.retryCodes,
156
+ });
157
+ if (!doResult.ok) {
158
+ return [doResult, { status: "request-error", request: req }];
159
+ }
160
+ const response = doResult.value;
161
+
162
+ const responseFields = {
163
+ HttpMeta: { Response: response, Request: req },
164
+ };
165
+
166
+ const [result] = await M.match<
167
+ operations.EnvelopeRecipientRejectOnBehalfOfResponse,
168
+ | errors.EnvelopeRecipientRejectOnBehalfOfBadRequestError
169
+ | errors.EnvelopeRecipientRejectOnBehalfOfUnauthorizedError
170
+ | errors.EnvelopeRecipientRejectOnBehalfOfForbiddenError
171
+ | errors.EnvelopeRecipientRejectOnBehalfOfInternalServerError
172
+ | DocumensoError
173
+ | ResponseValidationError
174
+ | ConnectionError
175
+ | RequestAbortedError
176
+ | RequestTimeoutError
177
+ | InvalidRequestError
178
+ | UnexpectedClientError
179
+ | SDKValidationError
180
+ >(
181
+ M.json(
182
+ 200,
183
+ operations.EnvelopeRecipientRejectOnBehalfOfResponse$inboundSchema,
184
+ ),
185
+ M.jsonErr(
186
+ 400,
187
+ errors.EnvelopeRecipientRejectOnBehalfOfBadRequestError$inboundSchema,
188
+ ),
189
+ M.jsonErr(
190
+ 401,
191
+ errors.EnvelopeRecipientRejectOnBehalfOfUnauthorizedError$inboundSchema,
192
+ ),
193
+ M.jsonErr(
194
+ 403,
195
+ errors.EnvelopeRecipientRejectOnBehalfOfForbiddenError$inboundSchema,
196
+ ),
197
+ M.jsonErr(
198
+ 500,
199
+ errors.EnvelopeRecipientRejectOnBehalfOfInternalServerError$inboundSchema,
200
+ ),
201
+ M.fail("4XX"),
202
+ M.fail("5XX"),
203
+ )(response, req, { extraFields: responseFields });
204
+ if (!result.ok) {
205
+ return [result, { status: "complete", request: req, response }];
206
+ }
207
+
208
+ return [result, { status: "complete", request: req, response }];
209
+ }
@@ -15,6 +15,7 @@ export type HookContext = {
15
15
  retryConfig: RetryConfig;
16
16
  resolvedSecurity: SecurityState | null;
17
17
  options: SDKOptions;
18
+ timeoutMs?: number;
18
19
  };
19
20
 
20
21
  export type Awaitable<T> = T | Promise<T>;
package/src/lib/config.ts CHANGED
@@ -58,8 +58,8 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
58
58
  export const SDK_METADATA = {
59
59
  language: "typescript",
60
60
  openapiDocVersion: "1.0.0",
61
- sdkVersion: "0.8.1",
62
- genVersion: "2.884.7",
61
+ sdkVersion: "0.9.0",
62
+ genVersion: "2.917.0",
63
63
  userAgent:
64
- "speakeasy-sdk/typescript 0.8.1 2.884.7 1.0.0 @documenso/sdk-typescript",
64
+ "speakeasy-sdk/typescript 0.9.0 2.917.0 1.0.0 @documenso/sdk-typescript",
65
65
  } as const;
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  import { bytesToBase64 } from "./base64.js";
6
- import { isPlainObject } from "./is-plain-object.js";
6
+ import { isPlainObject } from "./primitives.js";
7
7
 
8
8
  export class EncodingError extends Error {
9
9
  constructor(message: string) {
package/src/lib/env.ts CHANGED
@@ -3,7 +3,6 @@
3
3
  */
4
4
 
5
5
  import * as z from "zod/v3";
6
- import { dlv } from "./dlv.js";
7
6
 
8
7
  export interface Env {
9
8
  DOCUMENSO_API_KEY?: string | undefined;
@@ -38,11 +37,16 @@ export function env(): Env {
38
37
  return envMemo;
39
38
  }
40
39
 
40
+ const globals = globalThis as {
41
+ Deno?: { env?: { toObject?: () => Record<string, string | undefined> } };
42
+ process?: { env?: Record<string, string | undefined> };
43
+ };
44
+
41
45
  let envObject: Record<string, unknown> = {};
42
46
  if (isDeno()) {
43
- envObject = (globalThis as any).Deno?.env?.toObject?.() ?? {};
47
+ envObject = globals.Deno?.env?.toObject?.() ?? {};
44
48
  } else {
45
- envObject = dlv(globalThis, "process.env") ?? {};
49
+ envObject = globals.process?.env ?? {};
46
50
  }
47
51
 
48
52
  envMemo = envSchema.parse(envObject);
package/src/lib/http.ts CHANGED
@@ -45,8 +45,10 @@ export class HTTPClient {
45
45
  private requestHooks: BeforeRequestHook[] = [];
46
46
  private requestErrorHooks: RequestErrorHook[] = [];
47
47
  private responseHooks: ResponseHook[] = [];
48
+ private options: HTTPClientOptions;
48
49
 
49
- constructor(private options: HTTPClientOptions = {}) {
50
+ constructor(options: HTTPClientOptions = {}) {
51
+ this.options = options;
50
52
  this.fetcher = options.fetcher || DEFAULT_FETCHER;
51
53
  }
52
54
 
@@ -6,7 +6,7 @@ import { APIError } from "../models/errors/apierror.js";
6
6
  import { ResponseValidationError } from "../models/errors/responsevalidationerror.js";
7
7
  import { ERR, OK, Result } from "../types/fp.js";
8
8
  import { matchResponse, matchStatusCode, StatusCodePredicate } from "./http.js";
9
- import { isPlainObject } from "./is-plain-object.js";
9
+ import { isPlainObject } from "./primitives.js";
10
10
 
11
11
  export type Encoding =
12
12
  | "jsonl"
@@ -148,3 +148,19 @@ export function allRequired<V extends Record<string, unknown>>(
148
148
 
149
149
  return v as ReturnType<typeof allRequired<V>>;
150
150
  }
151
+
152
+ export function isPlainObject(
153
+ value: unknown,
154
+ ): value is Record<string, unknown> {
155
+ if (value === null || typeof value !== "object") return false;
156
+ if (Object.prototype.toString.call(value) !== "[object Object]") return false;
157
+ const proto = Object.getPrototypeOf(value);
158
+ if (proto === null || proto === Object.prototype) return true;
159
+ // cross-realm plain objects (vm contexts, iframes) inherit from a
160
+ // different realm's Object.prototype, which itself has a null prototype
161
+ try {
162
+ return Object.getPrototypeOf(proto) === null;
163
+ } catch {
164
+ return false;
165
+ }
166
+ }
@@ -194,6 +194,14 @@ async function retryBackoff(
194
194
  }
195
195
 
196
196
  function retryIntervalFromResponse(res: Response): number {
197
+ const retryAfterMsVal = res.headers.get("retry-after-ms");
198
+ if (retryAfterMsVal) {
199
+ const parsedMs = Number(retryAfterMsVal);
200
+ if (Number.isFinite(parsedMs) && parsedMs >= 0) {
201
+ return parsedMs;
202
+ }
203
+ }
204
+
197
205
  const retryVal = res.headers.get("retry-after") || "";
198
206
  if (!retryVal) {
199
207
  return 0;
package/src/lib/sdks.ts CHANGED
@@ -24,6 +24,7 @@ import {
24
24
  matchContentType,
25
25
  } from "./http.js";
26
26
  import { Logger } from "./logger.js";
27
+ import { combineSignals } from "./primitives.js";
27
28
  import { retry, RetryConfig } from "./retries.js";
28
29
  import { SecurityState } from "./security.js";
29
30
 
@@ -132,27 +133,55 @@ export class ClientSDK {
132
133
  if (path) {
133
134
  baseURL.pathname = baseURL.pathname.replace(/\/+$/, "") + "/";
134
135
  reqURL = new URL(path, baseURL);
136
+ if (!reqURL.search && baseURL.search) {
137
+ reqURL.search = baseURL.search;
138
+ }
135
139
  } else {
136
140
  reqURL = baseURL;
137
141
  }
138
142
  reqURL.hash = "";
139
143
 
140
- let finalQuery = query || "";
141
-
142
- const secQuery: string[] = [];
143
- for (const [k, v] of Object.entries(security?.queryParams || {})) {
144
- const q = encodeForm(k, v, { charEncoding: "percent" });
145
- if (typeof q !== "undefined") {
146
- secQuery.push(q);
144
+ // Appends already-encoded query pairs to a query string, replacing any
145
+ // existing pairs with the same key so later sources take precedence.
146
+ const mergeQuery = (current: string, additions: string): string => {
147
+ if (!additions) {
148
+ return current;
147
149
  }
148
- }
149
- if (secQuery.length) {
150
- finalQuery += `&${secQuery.join("&")}`;
151
- }
150
+ const additionKeys = new Set(
151
+ additions
152
+ .split("&")
153
+ .filter((pair) => pair !== "")
154
+ .map((pair) => pair.split("=")[0] ?? ""),
155
+ );
156
+ const kept = current.split("&").filter((pair) => {
157
+ return pair !== "" && !additionKeys.has(pair.split("=")[0] ?? "");
158
+ });
159
+ return [...kept, additions].join("&");
160
+ };
161
+
162
+ const encodeQueryRecord = (record: Record<string, unknown>): string => {
163
+ return Object.entries(record)
164
+ .map(([k, v]) => {
165
+ if (v == null) {
166
+ return undefined;
167
+ }
168
+ const value = v;
169
+ return encodeForm(k, value, {
170
+ explode: Array.isArray(value),
171
+ charEncoding: "percent",
172
+ });
173
+ })
174
+ .filter((pair): pair is string => typeof pair !== "undefined")
175
+ .join("&");
176
+ };
177
+
178
+ const finalQuery = [
179
+ query || "",
180
+ encodeQueryRecord(security?.queryParams || {}),
181
+ ].reduce(mergeQuery, reqURL.search.slice(1));
152
182
 
153
183
  if (finalQuery) {
154
- const q = finalQuery.startsWith("&") ? finalQuery.slice(1) : finalQuery;
155
- reqURL.search = `?${q}`;
184
+ reqURL.search = `?${finalQuery}`;
156
185
  }
157
186
 
158
187
  const headers = new Headers(opHeaders);
@@ -198,9 +227,8 @@ export class ClientSDK {
198
227
  ...options?.fetchOptions,
199
228
  ...options,
200
229
  };
201
- if (!fetchOptions?.signal && conf.timeoutMs && conf.timeoutMs > 0) {
202
- const timeoutSignal = AbortSignal.timeout(conf.timeoutMs);
203
- fetchOptions.signal = timeoutSignal;
230
+ if (!fetchOptions?.signal && conf.timeoutMs != null && conf.timeoutMs > 0) {
231
+ context.timeoutMs = conf.timeoutMs;
204
232
  }
205
233
 
206
234
  if (conf.body instanceof ReadableStream) {
@@ -247,10 +275,19 @@ export class ClientSDK {
247
275
  >
248
276
  > {
249
277
  const { context, isErrorStatusCode } = options;
278
+ const timeoutMs = context.timeoutMs;
250
279
 
251
280
  return retry(
252
281
  async () => {
253
- const req = await this.#hooks.beforeRequest(context, request.clone());
282
+ const cloned = request.clone();
283
+ let attempt = cloned;
284
+ if (timeoutMs != null && timeoutMs > 0) {
285
+ const timeoutSignal = AbortSignal.timeout(timeoutMs);
286
+ const combined = combineSignals(cloned.signal, timeoutSignal)
287
+ ?? timeoutSignal;
288
+ attempt = new Request(cloned, { signal: combined });
289
+ }
290
+ const req = await this.#hooks.beforeRequest(context, attempt);
254
291
  await logRequest(this.#logger, req).catch((e) =>
255
292
  this.#logger?.log("Failed to log request:", e)
256
293
  );
@@ -13,17 +13,22 @@ type OAuth2PasswordFlow = {
13
13
  tokenURL: string;
14
14
  };
15
15
 
16
- export enum SecurityErrorCode {
17
- Incomplete = "incomplete",
18
- UnrecognisedSecurityType = "unrecognized_security_type",
19
- }
16
+ export const SecurityErrorCode = {
17
+ Incomplete: "incomplete",
18
+ UnrecognisedSecurityType: "unrecognized_security_type",
19
+ } as const;
20
+ export type SecurityErrorCode =
21
+ (typeof SecurityErrorCode)[keyof typeof SecurityErrorCode];
20
22
 
21
23
  export class SecurityError extends Error {
24
+ public code: SecurityErrorCode;
25
+
22
26
  constructor(
23
- public code: SecurityErrorCode,
27
+ code: SecurityErrorCode,
24
28
  message: string,
25
29
  ) {
26
30
  super(message);
31
+ this.code = code;
27
32
  this.name = "SecurityError";
28
33
  }
29
34
 
@@ -19,7 +19,7 @@ const routes = buildRouteMap({
19
19
  export const app = buildApplication(routes, {
20
20
  name: "mcp",
21
21
  versionInfo: {
22
- currentVersion: "0.8.1",
22
+ currentVersion: "0.9.0",
23
23
  },
24
24
  });
25
25
 
@@ -43,9 +43,13 @@ import { tool$documentsRedistribute } from "./tools/documentsRedistribute.js";
43
43
  import { tool$documentsUpdate } from "./tools/documentsUpdate.js";
44
44
  import { tool$embeddingEmbeddingPresignCreateEmbeddingPresignToken } from "./tools/embeddingEmbeddingPresignCreateEmbeddingPresignToken.js";
45
45
  import { tool$embeddingEmbeddingPresignVerifyEmbeddingPresignToken } from "./tools/embeddingEmbeddingPresignVerifyEmbeddingPresignToken.js";
46
+ import { tool$envelopeEnvelopeAuditLogDownloadPdf } from "./tools/envelopeEnvelopeAuditLogDownloadPdf.js";
46
47
  import { tool$envelopeEnvelopeAuditLogFind } from "./tools/envelopeEnvelopeAuditLogFind.js";
48
+ import { tool$envelopeEnvelopeCancel } from "./tools/envelopeEnvelopeCancel.js";
49
+ import { tool$envelopeEnvelopeCertificateDownloadPdf } from "./tools/envelopeEnvelopeCertificateDownloadPdf.js";
47
50
  import { tool$envelopeEnvelopeFind } from "./tools/envelopeEnvelopeFind.js";
48
51
  import { tool$envelopeEnvelopeGetMany } from "./tools/envelopeEnvelopeGetMany.js";
52
+ import { tool$envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf } from "./tools/envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf.js";
49
53
  import { tool$envelopesAttachmentsCreate } from "./tools/envelopesAttachmentsCreate.js";
50
54
  import { tool$envelopesAttachmentsDelete } from "./tools/envelopesAttachmentsDelete.js";
51
55
  import { tool$envelopesAttachmentsFind } from "./tools/envelopesAttachmentsFind.js";
@@ -109,7 +113,7 @@ export function createMCPServer(deps: {
109
113
  }) {
110
114
  const server = new McpServer({
111
115
  name: "Documenso",
112
- version: "0.8.1",
116
+ version: "0.9.0",
113
117
  });
114
118
 
115
119
  const client = new DocumensoCore({
@@ -147,9 +151,13 @@ export function createMCPServer(deps: {
147
151
  tool(tool$envelopesDuplicate);
148
152
  tool(tool$envelopesDistribute);
149
153
  tool(tool$envelopesRedistribute);
154
+ tool(tool$envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf);
150
155
  tool(tool$envelopeEnvelopeFind);
151
156
  tool(tool$envelopeEnvelopeAuditLogFind);
157
+ tool(tool$envelopeEnvelopeAuditLogDownloadPdf);
158
+ tool(tool$envelopeEnvelopeCertificateDownloadPdf);
152
159
  tool(tool$envelopeEnvelopeGetMany);
160
+ tool(tool$envelopeEnvelopeCancel);
153
161
  tool(tool$documentsGet);
154
162
  tool(tool$documentsFind);
155
163
  tool(tool$documentsCreate);
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { envelopeEnvelopeAuditLogDownloadPdf } from "../../funcs/envelopeEnvelopeAuditLogDownloadPdf.js";
6
+ import * as operations from "../../models/operations/index.js";
7
+ import { formatResult, ToolDefinition } from "../tools.js";
8
+
9
+ const args = {
10
+ request: operations.EnvelopeAuditLogDownloadPdfRequest$inboundSchema,
11
+ };
12
+
13
+ export const tool$envelopeEnvelopeAuditLogDownloadPdf: ToolDefinition<
14
+ typeof args
15
+ > = {
16
+ name: "envelope-envelope-audit-log-download-pdf",
17
+ description: `Download envelope audit log PDF
18
+
19
+ Download the audit log for a document as a PDF.`,
20
+ args,
21
+ tool: async (client, args, ctx) => {
22
+ const [result, apiCall] = await envelopeEnvelopeAuditLogDownloadPdf(
23
+ client,
24
+ args.request,
25
+ { fetchOptions: { signal: ctx.signal } },
26
+ ).$inspect();
27
+
28
+ if (!result.ok) {
29
+ return {
30
+ content: [{ type: "text", text: result.error.message }],
31
+ isError: true,
32
+ };
33
+ }
34
+
35
+ const value = result.value.result;
36
+
37
+ return formatResult(value, apiCall);
38
+ },
39
+ };
@@ -0,0 +1,35 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { envelopeEnvelopeCancel } from "../../funcs/envelopeEnvelopeCancel.js";
6
+ import * as operations from "../../models/operations/index.js";
7
+ import { formatResult, ToolDefinition } from "../tools.js";
8
+
9
+ const args = {
10
+ request: operations.EnvelopeCancelRequest$inboundSchema,
11
+ };
12
+
13
+ export const tool$envelopeEnvelopeCancel: ToolDefinition<typeof args> = {
14
+ name: "envelope-envelope-cancel",
15
+ description: `Cancel envelope`,
16
+ args,
17
+ tool: async (client, args, ctx) => {
18
+ const [result, apiCall] = await envelopeEnvelopeCancel(
19
+ client,
20
+ args.request,
21
+ { fetchOptions: { signal: ctx.signal } },
22
+ ).$inspect();
23
+
24
+ if (!result.ok) {
25
+ return {
26
+ content: [{ type: "text", text: result.error.message }],
27
+ isError: true,
28
+ };
29
+ }
30
+
31
+ const value = result.value;
32
+
33
+ return formatResult(value, apiCall);
34
+ },
35
+ };
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { envelopeEnvelopeCertificateDownloadPdf } from "../../funcs/envelopeEnvelopeCertificateDownloadPdf.js";
6
+ import * as operations from "../../models/operations/index.js";
7
+ import { formatResult, ToolDefinition } from "../tools.js";
8
+
9
+ const args = {
10
+ request: operations.EnvelopeCertificateDownloadPdfRequest$inboundSchema,
11
+ };
12
+
13
+ export const tool$envelopeEnvelopeCertificateDownloadPdf: ToolDefinition<
14
+ typeof args
15
+ > = {
16
+ name: "envelope-envelope-certificate-download-pdf",
17
+ description: `Download envelope certificate PDF
18
+
19
+ Download the signing certificate for a completed document as a PDF.`,
20
+ args,
21
+ tool: async (client, args, ctx) => {
22
+ const [result, apiCall] = await envelopeEnvelopeCertificateDownloadPdf(
23
+ client,
24
+ args.request,
25
+ { fetchOptions: { signal: ctx.signal } },
26
+ ).$inspect();
27
+
28
+ if (!result.ok) {
29
+ return {
30
+ content: [{ type: "text", text: result.error.message }],
31
+ isError: true,
32
+ };
33
+ }
34
+
35
+ const value = result.value.result;
36
+
37
+ return formatResult(value, apiCall);
38
+ },
39
+ };
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf } from "../../funcs/envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf.js";
6
+ import * as operations from "../../models/operations/index.js";
7
+ import { formatResult, ToolDefinition } from "../tools.js";
8
+
9
+ const args = {
10
+ request: operations.EnvelopeRecipientRejectOnBehalfOfRequest$inboundSchema,
11
+ };
12
+
13
+ export const tool$envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf:
14
+ ToolDefinition<typeof args> = {
15
+ name: "envelope-recipients-envelope-recipient-reject-on-behalf-of",
16
+ description: `Reject envelope recipient on behalf of
17
+
18
+ Records a rejection on behalf of a recipient. Use this when a recipient has declined to sign outside of the platform. The rejection is flagged as external in the document audit log. By default the action is attributed to the API user; supply \`actAsEmail\` to attribute it to a specific team member.`,
19
+ args,
20
+ tool: async (client, args, ctx) => {
21
+ const [result, apiCall] =
22
+ await envelopeRecipientsEnvelopeRecipientRejectOnBehalfOf(
23
+ client,
24
+ args.request,
25
+ { fetchOptions: { signal: ctx.signal } },
26
+ ).$inspect();
27
+
28
+ if (!result.ok) {
29
+ return {
30
+ content: [{ type: "text", text: result.error.message }],
31
+ isError: true,
32
+ };
33
+ }
34
+
35
+ const value = result.value;
36
+
37
+ return formatResult(value, apiCall);
38
+ },
39
+ };