@fragno-dev/backoffice-api 0.0.0-stage → 0.0.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 (135) hide show
  1. package/LICENSE.md +16 -0
  2. package/README.md +90 -2
  3. package/dist/api.d.ts +35 -0
  4. package/dist/api.d.ts.map +1 -0
  5. package/dist/api.js +10 -0
  6. package/dist/api.js.map +1 -0
  7. package/dist/errors.d.ts +45 -0
  8. package/dist/errors.d.ts.map +1 -0
  9. package/dist/errors.js +35 -0
  10. package/dist/errors.js.map +1 -0
  11. package/dist/openapi.d.ts +46 -0
  12. package/dist/openapi.d.ts.map +1 -0
  13. package/dist/openapi.js +205 -0
  14. package/dist/openapi.js.map +1 -0
  15. package/dist/v0/account.d.ts +171 -0
  16. package/dist/v0/account.d.ts.map +1 -0
  17. package/dist/v0/account.js +78 -0
  18. package/dist/v0/account.js.map +1 -0
  19. package/dist/v0/api.d.ts +3437 -0
  20. package/dist/v0/api.d.ts.map +1 -0
  21. package/dist/v0/api.js +52 -0
  22. package/dist/v0/api.js.map +1 -0
  23. package/dist/v0/app-actions.d.ts +105 -0
  24. package/dist/v0/app-actions.d.ts.map +1 -0
  25. package/dist/v0/app-actions.js +100 -0
  26. package/dist/v0/app-actions.js.map +1 -0
  27. package/dist/v0/apps.d.ts +417 -0
  28. package/dist/v0/apps.d.ts.map +1 -0
  29. package/dist/v0/apps.js +163 -0
  30. package/dist/v0/apps.js.map +1 -0
  31. package/dist/v0/automation.d.ts +730 -0
  32. package/dist/v0/automation.d.ts.map +1 -0
  33. package/dist/v0/automation.js +355 -0
  34. package/dist/v0/automation.js.map +1 -0
  35. package/dist/v0/capabilities.d.ts +97 -0
  36. package/dist/v0/capabilities.d.ts.map +1 -0
  37. package/dist/v0/capabilities.js +41 -0
  38. package/dist/v0/capabilities.js.map +1 -0
  39. package/dist/v0/client.d.ts +39 -0
  40. package/dist/v0/client.d.ts.map +1 -0
  41. package/dist/v0/client.js +61 -0
  42. package/dist/v0/client.js.map +1 -0
  43. package/dist/v0/events.d.ts +789 -0
  44. package/dist/v0/events.d.ts.map +1 -0
  45. package/dist/v0/events.js +153 -0
  46. package/dist/v0/events.js.map +1 -0
  47. package/dist/v0/forms.d.ts +172 -0
  48. package/dist/v0/forms.d.ts.map +1 -0
  49. package/dist/v0/forms.js +88 -0
  50. package/dist/v0/forms.js.map +1 -0
  51. package/dist/v0/hooks.d.ts +61 -0
  52. package/dist/v0/hooks.d.ts.map +1 -0
  53. package/dist/v0/hooks.js +49 -0
  54. package/dist/v0/hooks.js.map +1 -0
  55. package/dist/v0/identity.d.ts +73 -0
  56. package/dist/v0/identity.d.ts.map +1 -0
  57. package/dist/v0/identity.js +46 -0
  58. package/dist/v0/identity.js.map +1 -0
  59. package/dist/v0/integrations.d.ts +847 -0
  60. package/dist/v0/integrations.d.ts.map +1 -0
  61. package/dist/v0/integrations.js +255 -0
  62. package/dist/v0/integrations.js.map +1 -0
  63. package/dist/v0/javascript.d.ts +160 -0
  64. package/dist/v0/javascript.d.ts.map +1 -0
  65. package/dist/v0/javascript.js +123 -0
  66. package/dist/v0/javascript.js.map +1 -0
  67. package/dist/v0/marketplace.d.ts +825 -0
  68. package/dist/v0/marketplace.d.ts.map +1 -0
  69. package/dist/v0/marketplace.js +284 -0
  70. package/dist/v0/marketplace.js.map +1 -0
  71. package/dist/v0/organization.d.ts +182 -0
  72. package/dist/v0/organization.d.ts.map +1 -0
  73. package/dist/v0/organization.js +88 -0
  74. package/dist/v0/organization.js.map +1 -0
  75. package/dist/v0/otp.d.ts +37 -0
  76. package/dist/v0/otp.d.ts.map +1 -0
  77. package/dist/v0/otp.js +29 -0
  78. package/dist/v0/otp.js.map +1 -0
  79. package/dist/v0/pi.d.ts +322 -0
  80. package/dist/v0/pi.d.ts.map +1 -0
  81. package/dist/v0/pi.js +146 -0
  82. package/dist/v0/pi.js.map +1 -0
  83. package/dist/v0/sandbox.d.ts +173 -0
  84. package/dist/v0/sandbox.d.ts.map +1 -0
  85. package/dist/v0/sandbox.js +97 -0
  86. package/dist/v0/sandbox.js.map +1 -0
  87. package/dist/v0/shared/bytes.d.ts +12 -0
  88. package/dist/v0/shared/bytes.d.ts.map +1 -0
  89. package/dist/v0/shared/bytes.js +16 -0
  90. package/dist/v0/shared/bytes.js.map +1 -0
  91. package/dist/v0/shared/datetime.d.ts +10 -0
  92. package/dist/v0/shared/datetime.d.ts.map +1 -0
  93. package/dist/v0/shared/datetime.js +14 -0
  94. package/dist/v0/shared/datetime.js.map +1 -0
  95. package/dist/v0/shared/json.d.ts +9 -0
  96. package/dist/v0/shared/json.d.ts.map +1 -0
  97. package/dist/v0/shared/json.js +14 -0
  98. package/dist/v0/shared/json.js.map +1 -0
  99. package/dist/v0/shared/pagination.d.ts +11 -0
  100. package/dist/v0/shared/pagination.d.ts.map +1 -0
  101. package/dist/v0/shared/pagination.js +11 -0
  102. package/dist/v0/shared/pagination.js.map +1 -0
  103. package/dist/v0/shared/permissions.d.ts +279 -0
  104. package/dist/v0/shared/permissions.d.ts.map +1 -0
  105. package/dist/v0/shared/permissions.js +285 -0
  106. package/dist/v0/shared/permissions.js.map +1 -0
  107. package/dist/v0/shared/pi-agent-name.d.ts +10 -0
  108. package/dist/v0/shared/pi-agent-name.d.ts.map +1 -0
  109. package/dist/v0/shared/pi-agent-name.js +11 -0
  110. package/dist/v0/shared/pi-agent-name.js.map +1 -0
  111. package/dist/v0/shared/scope.d.ts +305 -0
  112. package/dist/v0/shared/scope.d.ts.map +1 -0
  113. package/dist/v0/shared/scope.js +279 -0
  114. package/dist/v0/shared/scope.js.map +1 -0
  115. package/dist/v0/state.d.ts +512 -0
  116. package/dist/v0/state.d.ts.map +1 -0
  117. package/dist/v0/state.js +267 -0
  118. package/dist/v0/state.js.map +1 -0
  119. package/dist/v0/store.d.ts +138 -0
  120. package/dist/v0/store.d.ts.map +1 -0
  121. package/dist/v0/store.js +83 -0
  122. package/dist/v0/store.js.map +1 -0
  123. package/dist/v0/upload.d.ts +568 -0
  124. package/dist/v0/upload.d.ts.map +1 -0
  125. package/dist/v0/upload.js +109 -0
  126. package/dist/v0/upload.js.map +1 -0
  127. package/dist/v0/web.d.ts +47 -0
  128. package/dist/v0/web.d.ts.map +1 -0
  129. package/dist/v0/web.js +31 -0
  130. package/dist/v0/web.js.map +1 -0
  131. package/dist/v0/workflow.d.ts +267 -0
  132. package/dist/v0/workflow.d.ts.map +1 -0
  133. package/dist/v0/workflow.js +116 -0
  134. package/dist/v0/workflow.js.map +1 -0
  135. package/package.json +64 -3
@@ -0,0 +1,61 @@
1
+ import { backofficeApiErrorSchema } from "../errors.js";
2
+ import { backofficeScopePathSegment } from "./shared/scope.js";
3
+ import { backofficeApiV0 } from "./api.js";
4
+ //#region src/v0/client.ts
5
+ /**
6
+ * Backoffice answered with an error. `code` is null when the response was not an API error, e.g.
7
+ * a server failure or an intermediary's response, so the operation's outcome is unknown.
8
+ */
9
+ var BackofficeApiRequestError = class extends Error {
10
+ status;
11
+ code;
12
+ constructor(status, code, message) {
13
+ super(message);
14
+ this.name = "BackofficeApiRequestError";
15
+ this.status = status;
16
+ this.code = code;
17
+ }
18
+ };
19
+ /** The request never got a response, e.g. a network failure, so the operation's outcome is unknown. */
20
+ var BackofficeApiUnreachableError = class extends Error {
21
+ constructor(cause) {
22
+ super("Backoffice could not be reached.", { cause });
23
+ this.name = "BackofficeApiUnreachableError";
24
+ }
25
+ };
26
+ async function requestErrorFromResponse(response) {
27
+ const body = backofficeApiErrorSchema.safeParse(await response.json().catch(() => null));
28
+ return body.success ? new BackofficeApiRequestError(response.status, body.data.error.code, body.data.error.message) : new BackofficeApiRequestError(response.status, null, `Backoffice responded with HTTP ${response.status}.`);
29
+ }
30
+ /**
31
+ * Calls the v0 API at `origin` with one bearer credential. Network failures reject with
32
+ * `BackofficeApiUnreachableError`, and error responses with `BackofficeApiRequestError`. Anything
33
+ * else, such as a success body that does not match this contract, is a bug and rejects as is.
34
+ */
35
+ function createBackofficeApiClient({ origin, accessToken, fetch }) {
36
+ return { async call(scope, operationId, ...input) {
37
+ const url = new URL(`/api/${backofficeApiV0.version}/scopes/${backofficeScopePathSegment(scope)}/${operationId}`, origin);
38
+ let response;
39
+ try {
40
+ response = await fetch(url, input.length === 0 ? {
41
+ method: "POST",
42
+ headers: { authorization: `Bearer ${accessToken}` }
43
+ } : {
44
+ method: "POST",
45
+ headers: {
46
+ authorization: `Bearer ${accessToken}`,
47
+ "content-type": "application/json"
48
+ },
49
+ body: JSON.stringify(input[0])
50
+ });
51
+ } catch (error) {
52
+ throw new BackofficeApiUnreachableError(error);
53
+ }
54
+ if (!response.ok) throw await requestErrorFromResponse(response);
55
+ return backofficeApiV0.operations[operationId].output.parse(response.status === 204 ? void 0 : await response.json());
56
+ } };
57
+ }
58
+ //#endregion
59
+ export { BackofficeApiRequestError, BackofficeApiUnreachableError, createBackofficeApiClient };
60
+
61
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","names":[],"sources":["../../src/v0/client.ts"],"sourcesContent":["import type { z } from \"zod\";\n\nimport { backofficeApiErrorSchema, type BackofficeApiErrorCode } from \"../errors\";\nimport { backofficeApiV0 } from \"./api\";\nimport { backofficeScopePathSegment, type BackofficeContextScope } from \"./shared/scope\";\n\ntype Operations = typeof backofficeApiV0.operations;\ntype OperationId = keyof Operations;\n\n/** Operations whose input is `z.void()` are called without an input argument. */\ntype OperationInputArgs<TId extends OperationId> = Operations[TId][\"input\"] extends z.ZodVoid\n ? []\n : [input: z.input<Operations[TId][\"input\"]>];\n\nexport type BackofficeApiClient = {\n /** Runs one operation in `scope`, returning its output parsed by the operation's schema. */\n call<TId extends OperationId>(\n scope: BackofficeContextScope,\n operationId: TId,\n ...input: OperationInputArgs<TId>\n ): Promise<z.output<Operations[TId][\"output\"]>>;\n};\n\n/**\n * Backoffice answered with an error. `code` is null when the response was not an API error, e.g.\n * a server failure or an intermediary's response, so the operation's outcome is unknown.\n */\nexport class BackofficeApiRequestError extends Error {\n readonly status: number;\n readonly code: BackofficeApiErrorCode | null;\n\n constructor(status: number, code: BackofficeApiErrorCode | null, message: string) {\n super(message);\n this.name = \"BackofficeApiRequestError\";\n this.status = status;\n this.code = code;\n }\n}\n\n/** The request never got a response, e.g. a network failure, so the operation's outcome is unknown. */\nexport class BackofficeApiUnreachableError extends Error {\n constructor(cause: unknown) {\n super(\"Backoffice could not be reached.\", { cause });\n this.name = \"BackofficeApiUnreachableError\";\n }\n}\n\nasync function requestErrorFromResponse(response: Response): Promise<BackofficeApiRequestError> {\n const body = backofficeApiErrorSchema.safeParse(await response.json().catch(() => null));\n return body.success\n ? new BackofficeApiRequestError(response.status, body.data.error.code, body.data.error.message)\n : new BackofficeApiRequestError(\n response.status,\n null,\n `Backoffice responded with HTTP ${response.status}.`,\n );\n}\n\n/**\n * Calls the v0 API at `origin` with one bearer credential. Network failures reject with\n * `BackofficeApiUnreachableError`, and error responses with `BackofficeApiRequestError`. Anything\n * else, such as a success body that does not match this contract, is a bug and rejects as is.\n */\nexport function createBackofficeApiClient({\n origin,\n accessToken,\n fetch,\n}: {\n origin: string;\n accessToken: string;\n fetch: typeof globalThis.fetch;\n}): BackofficeApiClient {\n return {\n async call(scope, operationId, ...input) {\n const url = new URL(\n `/api/${backofficeApiV0.version}/scopes/${backofficeScopePathSegment(scope)}/${operationId}`,\n origin,\n );\n let response: Response;\n try {\n response = await fetch(\n url,\n input.length === 0\n ? { method: \"POST\", headers: { authorization: `Bearer ${accessToken}` } }\n : {\n method: \"POST\",\n headers: {\n authorization: `Bearer ${accessToken}`,\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(input[0]),\n },\n );\n } catch (error) {\n throw new BackofficeApiUnreachableError(error);\n }\n if (!response.ok) {\n throw await requestErrorFromResponse(response);\n }\n // TypeScript cannot relate an indexed schema's result to `TId`; it is that operation's output.\n return backofficeApiV0.operations[operationId].output.parse(\n response.status === 204 ? undefined : await response.json(),\n ) as z.output<Operations[typeof operationId][\"output\"]>;\n },\n };\n}\n"],"mappings":";;;;;;;;AA2BA,IAAa,4BAAb,cAA+C,MAAM;CACnD;CACA;CAEA,YAAY,QAAgB,MAAqC,SAAiB;EAChF,MAAM,OAAO;EACb,KAAK,OAAO;EACZ,KAAK,SAAS;EACd,KAAK,OAAO;CACd;AACF;;AAGA,IAAa,gCAAb,cAAmD,MAAM;CACvD,YAAY,OAAgB;EAC1B,MAAM,oCAAoC,EAAE,MAAM,CAAC;EACnD,KAAK,OAAO;CACd;AACF;AAEA,eAAe,yBAAyB,UAAwD;CAC9F,MAAM,OAAO,yBAAyB,UAAU,MAAM,SAAS,KAAK,CAAC,CAAC,YAAY,IAAI,CAAC;CACvF,OAAO,KAAK,UACR,IAAI,0BAA0B,SAAS,QAAQ,KAAK,KAAK,MAAM,MAAM,KAAK,KAAK,MAAM,OAAO,IAC5F,IAAI,0BACF,SAAS,QACT,MACA,kCAAkC,SAAS,OAAO,EACpD;AACN;;;;;;AAOA,SAAgB,0BAA0B,EACxC,QACA,aACA,SAKsB;CACtB,OAAO,EACL,MAAM,KAAK,OAAO,aAAa,GAAG,OAAO;EACvC,MAAM,MAAM,IAAI,IACd,QAAQ,gBAAgB,QAAQ,UAAU,2BAA2B,KAAK,EAAE,GAAG,eAC/E,MACF;EACA,IAAI;EACJ,IAAI;GACF,WAAW,MAAM,MACf,KACA,MAAM,WAAW,IACb;IAAE,QAAQ;IAAQ,SAAS,EAAE,eAAe,UAAU,cAAc;GAAE,IACtE;IACE,QAAQ;IACR,SAAS;KACP,eAAe,UAAU;KACzB,gBAAgB;IAClB;IACA,MAAM,KAAK,UAAU,MAAM,EAAE;GAC/B,CACN;EACF,SAAS,OAAO;GACd,MAAM,IAAI,8BAA8B,KAAK;EAC/C;EACA,IAAI,CAAC,SAAS,IACZ,MAAM,MAAM,yBAAyB,QAAQ;EAG/C,OAAO,gBAAgB,WAAW,YAAY,CAAC,OAAO,MACpD,SAAS,WAAW,MAAM,KAAA,IAAY,MAAM,SAAS,KAAK,CAC5D;CACF,EACF;AACF"}