@dossier-wiki/cloud-sdk 0.1.0 → 0.2.0-staging.3dda5e6

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 (120) hide show
  1. package/README.md +697 -46
  2. package/dist/cjs/api.js +34 -0
  3. package/dist/cjs/api.js.map +1 -0
  4. package/dist/cjs/error.js +29 -0
  5. package/dist/cjs/error.js.map +1 -0
  6. package/dist/cjs/http.js +75 -0
  7. package/dist/cjs/http.js.map +1 -0
  8. package/dist/cjs/index.js +48 -0
  9. package/dist/cjs/index.js.map +1 -0
  10. package/dist/cjs/resources/aml.js +88 -0
  11. package/dist/cjs/resources/aml.js.map +1 -0
  12. package/dist/cjs/resources/documents.js +170 -0
  13. package/dist/cjs/resources/documents.js.map +1 -0
  14. package/dist/cjs/resources/form-templates.js +117 -0
  15. package/dist/cjs/resources/form-templates.js.map +1 -0
  16. package/dist/cjs/resources/kyc/index.js +32 -0
  17. package/dist/cjs/resources/kyc/index.js.map +1 -0
  18. package/dist/cjs/resources/kyc/sessions.js +103 -0
  19. package/dist/cjs/resources/kyc/sessions.js.map +1 -0
  20. package/dist/cjs/resources/kyc/workflows.js +150 -0
  21. package/dist/cjs/resources/kyc/workflows.js.map +1 -0
  22. package/dist/cjs/resources/media.js +62 -0
  23. package/dist/cjs/resources/media.js.map +1 -0
  24. package/dist/cjs/schemas/index.js +9 -0
  25. package/dist/cjs/schemas/index.js.map +1 -0
  26. package/dist/cjs/schemas/kyc/workflow-steps.js +145 -0
  27. package/dist/cjs/schemas/kyc/workflow-steps.js.map +1 -0
  28. package/dist/cjs/service.js +132 -0
  29. package/dist/cjs/service.js.map +1 -0
  30. package/dist/cjs/session.js +379 -0
  31. package/dist/cjs/session.js.map +1 -0
  32. package/dist/cjs/types.js +36 -0
  33. package/dist/cjs/types.js.map +1 -0
  34. package/dist/cjs/webhooks.js +93 -0
  35. package/dist/cjs/webhooks.js.map +1 -0
  36. package/dist/esm/api.js +33 -0
  37. package/dist/esm/api.js.map +1 -0
  38. package/dist/esm/error.js +25 -0
  39. package/dist/esm/error.js.map +1 -0
  40. package/dist/esm/http.js +71 -0
  41. package/dist/esm/http.js.map +1 -0
  42. package/dist/esm/index.js +19 -0
  43. package/dist/esm/index.js.map +1 -0
  44. package/dist/esm/resources/aml.js +84 -0
  45. package/dist/esm/resources/aml.js.map +1 -0
  46. package/dist/esm/resources/documents.js +166 -0
  47. package/dist/esm/resources/documents.js.map +1 -0
  48. package/dist/esm/resources/form-templates.js +113 -0
  49. package/dist/esm/resources/form-templates.js.map +1 -0
  50. package/dist/esm/resources/kyc/index.js +26 -0
  51. package/dist/esm/resources/kyc/index.js.map +1 -0
  52. package/dist/esm/resources/kyc/sessions.js +99 -0
  53. package/dist/esm/resources/kyc/sessions.js.map +1 -0
  54. package/dist/esm/resources/kyc/workflows.js +146 -0
  55. package/dist/esm/resources/kyc/workflows.js.map +1 -0
  56. package/dist/esm/resources/media.js +58 -0
  57. package/dist/esm/resources/media.js.map +1 -0
  58. package/dist/esm/schemas/index.js +2 -0
  59. package/dist/esm/schemas/index.js.map +1 -0
  60. package/dist/esm/schemas/kyc/workflow-steps.js +142 -0
  61. package/dist/esm/schemas/kyc/workflow-steps.js.map +1 -0
  62. package/dist/esm/service.js +127 -0
  63. package/dist/esm/service.js.map +1 -0
  64. package/dist/esm/session.js +375 -0
  65. package/dist/esm/session.js.map +1 -0
  66. package/dist/{types.js → esm/types.js} +11 -27
  67. package/dist/esm/types.js.map +1 -0
  68. package/dist/{webhooks.js → esm/webhooks.js} +10 -11
  69. package/dist/esm/webhooks.js.map +1 -0
  70. package/dist/{api.d.ts → types/api.d.ts} +297 -166
  71. package/dist/types/api.d.ts.map +1 -0
  72. package/dist/types/error.d.ts +24 -0
  73. package/dist/types/error.d.ts.map +1 -0
  74. package/dist/types/http.d.ts +17 -0
  75. package/dist/types/http.d.ts.map +1 -0
  76. package/dist/types/index.d.ts +15 -0
  77. package/dist/types/index.d.ts.map +1 -0
  78. package/dist/types/resources/aml.d.ts +79 -0
  79. package/dist/types/resources/aml.d.ts.map +1 -0
  80. package/dist/types/resources/documents.d.ts +153 -0
  81. package/dist/types/resources/documents.d.ts.map +1 -0
  82. package/dist/types/resources/form-templates.d.ts +104 -0
  83. package/dist/types/resources/form-templates.d.ts.map +1 -0
  84. package/dist/types/resources/kyc/index.d.ts +34 -0
  85. package/dist/types/resources/kyc/index.d.ts.map +1 -0
  86. package/dist/types/resources/kyc/sessions.d.ts +92 -0
  87. package/dist/types/resources/kyc/sessions.d.ts.map +1 -0
  88. package/dist/types/resources/kyc/workflows.d.ts +135 -0
  89. package/dist/types/resources/kyc/workflows.d.ts.map +1 -0
  90. package/dist/types/resources/media.d.ts +56 -0
  91. package/dist/types/resources/media.d.ts.map +1 -0
  92. package/dist/types/schemas/index.d.ts +3 -0
  93. package/dist/types/schemas/index.d.ts.map +1 -0
  94. package/dist/types/schemas/kyc/workflow-steps.d.ts +5113 -0
  95. package/dist/types/schemas/kyc/workflow-steps.d.ts.map +1 -0
  96. package/dist/types/service.d.ts +143 -0
  97. package/dist/types/service.d.ts.map +1 -0
  98. package/dist/types/session.d.ts +176 -0
  99. package/dist/types/session.d.ts.map +1 -0
  100. package/dist/{types.d.ts → types/types.d.ts} +100 -2
  101. package/dist/types/types.d.ts.map +1 -0
  102. package/dist/{webhooks.d.ts → types/webhooks.d.ts} +5 -5
  103. package/dist/types/webhooks.d.ts.map +1 -0
  104. package/package.json +26 -32
  105. package/dist/api.d.ts.map +0 -1
  106. package/dist/api.js +0 -22
  107. package/dist/api.js.map +0 -1
  108. package/dist/index.d.ts +0 -6
  109. package/dist/index.d.ts.map +0 -1
  110. package/dist/index.js +0 -5
  111. package/dist/index.js.map +0 -1
  112. package/dist/service.d.ts +0 -39
  113. package/dist/service.d.ts.map +0 -1
  114. package/dist/service.js +0 -150
  115. package/dist/service.js.map +0 -1
  116. package/dist/types.d.ts.map +0 -1
  117. package/dist/types.js.map +0 -1
  118. package/dist/webhooks.d.ts.map +0 -1
  119. package/dist/webhooks.js.map +0 -1
  120. package/docs/REFERENCE.md +0 -114
@@ -0,0 +1,146 @@
1
+ /**
2
+ * KYC workflow management — define the ordered steps customers go through
3
+ * during a verification session.
4
+ *
5
+ * Access via `service.kyc.workflows`.
6
+ *
7
+ * A workflow is a reusable template of verification steps (e.g. identity
8
+ * verification → liveness → form collection). Each step has a type, routing
9
+ * rules, and an optional config that controls its behavior. When creating a
10
+ * session, you reference a workflow ID to apply that step sequence.
11
+ *
12
+ * Use {@link stepDefaults} to fetch pre-built step configurations for each
13
+ * step type before building your workflow.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const defaults = await service.kyc.workflows.stepDefaults();
18
+ * const idStep = defaults.find(d => d.type === 'id_verification');
19
+ *
20
+ * const workflow = await service.kyc.workflows.create({
21
+ * name: 'Standard KYC',
22
+ * steps: [
23
+ * {
24
+ * stepId: idStep.defaultStepId,
25
+ * type: 'id_verification',
26
+ * input: idStep.defaultInput,
27
+ * output: { schema: idStep.schema },
28
+ * rules: idStep.defaultRules as WorkflowRules,
29
+ * locales: idStep.defaultLocales,
30
+ * skippable: idStep.skippable,
31
+ * },
32
+ * ],
33
+ * });
34
+ * ```
35
+ */
36
+ export class KycWorkflowsResource {
37
+ /** @internal */
38
+ constructor(http) {
39
+ this.http = http;
40
+ }
41
+ /**
42
+ * Create a new KYC workflow.
43
+ *
44
+ * Use the {@link schemas.CreateWorkflowSchema} Zod schema to validate your
45
+ * input before calling this method — it enforces the discriminated-union
46
+ * constraint on each step's `type` and `input.config`.
47
+ *
48
+ * @param input - Workflow name, description, and ordered array of steps.
49
+ * @returns The created workflow.
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * import { schemas } from '@dossier-wiki/cloud-sdk';
54
+ *
55
+ * const parsed = schemas.CreateWorkflowSchema.parse(rawInput);
56
+ * const workflow = await service.kyc.workflows.create(parsed);
57
+ * ```
58
+ */
59
+ create(input) {
60
+ return this.http.request('POST', '/kyc-workflows', { body: input });
61
+ }
62
+ /**
63
+ * List all KYC workflows available to your organization (own + public).
64
+ *
65
+ * @returns An array of workflows.
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * const workflows = await service.kyc.workflows.list();
70
+ * workflows.forEach(wf => console.log(wf.id, wf.name, wf.version));
71
+ * ```
72
+ */
73
+ list() {
74
+ return this.http.request('GET', '/kyc-workflows');
75
+ }
76
+ /**
77
+ * Retrieve a single KYC workflow by ID.
78
+ *
79
+ * @param id - The workflow ID.
80
+ * @returns The full workflow including all steps.
81
+ *
82
+ * @example
83
+ * ```ts
84
+ * const wf = await service.kyc.workflows.get('wf_abc123');
85
+ * console.log(wf.steps.map(s => s.type));
86
+ * ```
87
+ */
88
+ get(id) {
89
+ return this.http.request('GET', `/kyc-workflows/${encodeURIComponent(id)}`);
90
+ }
91
+ /**
92
+ * Update an existing KYC workflow.
93
+ *
94
+ * Updating a workflow creates a new version — existing sessions referencing
95
+ * the old version are not affected.
96
+ *
97
+ * @param id - The workflow ID to update.
98
+ * @param input - Fields to update (all optional).
99
+ * @returns The updated workflow.
100
+ *
101
+ * @example
102
+ * ```ts
103
+ * const updated = await service.kyc.workflows.update('wf_abc123', {
104
+ * name: 'Enhanced KYC v2',
105
+ * });
106
+ * console.log(updated.version); // incremented
107
+ * ```
108
+ */
109
+ update(id, input) {
110
+ return this.http.request('PUT', `/kyc-workflows/${encodeURIComponent(id)}`, { body: input });
111
+ }
112
+ /**
113
+ * Delete a KYC workflow.
114
+ *
115
+ * Only the owning organization can delete a workflow. Workflows referenced
116
+ * by active sessions cannot be deleted.
117
+ *
118
+ * @param id - The workflow ID to delete.
119
+ *
120
+ * @example
121
+ * ```ts
122
+ * await service.kyc.workflows.delete('wf_old123');
123
+ * ```
124
+ */
125
+ delete(id) {
126
+ return this.http.request('DELETE', `/kyc-workflows/${encodeURIComponent(id)}`);
127
+ }
128
+ /**
129
+ * Get the default configuration for every available step type.
130
+ *
131
+ * Use this to bootstrap a new workflow — each default includes the step's
132
+ * suggested `input`, `rules`, `locales`, and output `schema`.
133
+ *
134
+ * @returns An array of step defaults, one per step type.
135
+ *
136
+ * @example
137
+ * ```ts
138
+ * const defaults = await service.kyc.workflows.stepDefaults();
139
+ * const livenessDefault = defaults.find(d => d.type === 'liveness');
140
+ * ```
141
+ */
142
+ stepDefaults() {
143
+ return this.http.request('GET', '/kyc-workflows/step-defaults');
144
+ }
145
+ }
146
+ //# sourceMappingURL=workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../src/resources/kyc/workflows.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,OAAO,oBAAoB;IAC7B,gBAAgB;IAChB,YAA6B,IAAkB;QAAlB,SAAI,GAAJ,IAAI,CAAc;IAAG,CAAC;IAEnD;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,KAA6B;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;;;;;OAUG;IACH,IAAI;QACA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,EAAU;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,EAAU,EAAE,KAA6B;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjG,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAU;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,YAAY;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;IACpE,CAAC;CACJ"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Signed media file access.
3
+ *
4
+ * Access via `service.media`.
5
+ *
6
+ * Media tokens are short-lived signed URLs embedded in session results, document
7
+ * processing instances, and submission records. Pass the token to {@link get}
8
+ * to stream the original file bytes.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * // Extract a media token from a session step submission
13
+ * const token = session.result.steps[0].summary?.media[0]?.key;
14
+ * if (token) {
15
+ * const res = await service.media.get(token);
16
+ * const blob = await res.blob();
17
+ * }
18
+ * ```
19
+ */
20
+ export class MediaResource {
21
+ /** @internal */
22
+ constructor(http) {
23
+ this.http = http;
24
+ }
25
+ /**
26
+ * Fetch a signed media file by its storage token.
27
+ *
28
+ * Returns the raw `Response` so the caller can stream or buffer the binary
29
+ * payload — e.g. save to disk, pipe to an upload, or convert to a `Blob`.
30
+ *
31
+ * Tokens are single-use and expire after a short window. Fetch the token
32
+ * from a session result or document processing instance immediately before
33
+ * calling this method.
34
+ *
35
+ * @param token - The signed media token from a session or processing result.
36
+ * @param init - Optional fetch init options (e.g. `signal` for cancellation).
37
+ * @returns The raw `Response` with binary body.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * const res = await service.media.get(token);
42
+ * if (!res.ok) throw new Error(`Media fetch failed: ${res.status}`);
43
+ *
44
+ * // Save to disk (Node.js)
45
+ * const { Writable } = await import('stream');
46
+ * const dest = createWriteStream('./document-front.jpg');
47
+ * Readable.fromWeb(res.body!).pipe(dest);
48
+ *
49
+ * // Convert to Blob (browser)
50
+ * const blob = await res.blob();
51
+ * const url = URL.createObjectURL(blob);
52
+ * ```
53
+ */
54
+ get(token, init) {
55
+ return this.http.stream(`/media/${encodeURIComponent(token)}`, '*/*', init);
56
+ }
57
+ }
58
+ //# sourceMappingURL=media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/resources/media.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,aAAa;IACtB,gBAAgB;IAChB,YAA6B,IAAkB;QAAlB,SAAI,GAAJ,IAAI,CAAc;IAAG,CAAC;IAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,GAAG,CAAC,KAAa,EAAE,IAAkB;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export { WorkflowStepSchema, KycStepTypeSchema, CreateWorkflowSchema, UpdateWorkflowSchema, } from './kyc/workflow-steps.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,GACvB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,142 @@
1
+ import { z } from 'zod';
2
+ export const KycStepTypeSchema = z.enum([
3
+ 'id_verification',
4
+ 'document_collection',
5
+ 'liveness',
6
+ 'form_collection',
7
+ 'esignature',
8
+ 'action',
9
+ ]);
10
+ const WorkflowRulesSchema = z.object({
11
+ onSuccess: z.string(), // stepId | 'COMPLETE_SESSION'
12
+ onFailure: z.string(), // stepId | 'FAIL_SESSION'
13
+ conditions: z
14
+ .array(z.object({
15
+ variable: z.string(),
16
+ operator: z.enum(['gt', 'lt', 'eq', 'neq']),
17
+ value: z.unknown(),
18
+ targetStepId: z.string(),
19
+ }))
20
+ .optional(),
21
+ });
22
+ const InputMappingSchema = z.object({
23
+ target: z.string(),
24
+ sourceStepId: z.string(),
25
+ sourcePath: z.string(),
26
+ });
27
+ const DocumentTypeOptionSchema = z
28
+ .object({
29
+ id: z.string(),
30
+ typeId: z.string(),
31
+ name: z.string(),
32
+ kind: z.string().nullish(),
33
+ category: z.string().nullish(),
34
+ captureProfile: z
35
+ .object({ method: z.string(), layout: z.string() })
36
+ .partial()
37
+ .passthrough()
38
+ .nullish(),
39
+ acceptedMimeTypes: z.array(z.string()).optional(),
40
+ })
41
+ .passthrough();
42
+ const AllowedDocumentsSchema = z.record(z.array(DocumentTypeOptionSchema).min(1));
43
+ const IdVerificationConfigSchema = z.object({
44
+ strategy: z
45
+ .enum(['document_based', 'aadhaar_otp', 'nfc'])
46
+ .default('document_based'),
47
+ allowedDocuments: AllowedDocumentsSchema.optional(),
48
+ maxSubmissions: z.union([z.literal(1), z.literal(3), z.literal(4), z.literal(7)]).optional(),
49
+ allowUpload: z.boolean().optional().default(true),
50
+ });
51
+ const DocumentCollectionConfigSchema = z.object({
52
+ allowedDocuments: AllowedDocumentsSchema.optional(),
53
+ allowUpload: z.boolean().optional().default(true),
54
+ maxSubmissions: z.union([z.literal(1), z.literal(3), z.literal(4), z.literal(7)]).optional(),
55
+ });
56
+ const LivenessConfigSchema = z.object({
57
+ challengeType: z.enum(['selfie', 'distance']).optional(),
58
+ timeLimitSeconds: z.number().min(5).max(120).optional(),
59
+ minFaceLuminance: z.number().min(0).max(255).optional(),
60
+ minFaceDetectionConfidence: z.number().min(0).max(1).optional(),
61
+ });
62
+ const FormFieldSchema = z.object({
63
+ id: z.string(),
64
+ label: z.string(),
65
+ type: z.enum([
66
+ 'text', 'long_text', 'number', 'currency', 'country', 'language',
67
+ 'email', 'phone', 'date', 'select', 'multi_select', 'dropdown',
68
+ 'toggle', 'boolean', 'file', 'heading', 'paragraph', 'description', 'divider',
69
+ ]),
70
+ placeholder: z.string().optional(),
71
+ helpText: z.string().optional(),
72
+ required: z.boolean().optional(),
73
+ content: z.string().optional(),
74
+ consentText: z.string().optional(),
75
+ defaultValue: z.unknown().optional(),
76
+ options: z.array(z.object({ label: z.string(), value: z.string() })).optional(),
77
+ validation: z.record(z.unknown()).optional(),
78
+ });
79
+ const FormCollectionConfigSchema = z.object({
80
+ templateId: z.string().nullable().optional(),
81
+ fields: z.array(FormFieldSchema).optional(),
82
+ });
83
+ const EsignatureConfigSchema = z.object({
84
+ signatureTypesAllowed: z.array(z.enum(['draw', 'upload'])).min(1),
85
+ });
86
+ const ActionConfigSchema = z.object({
87
+ actionType: z.enum(['SEND_WEBHOOK', 'EMAIL_USER', 'NOTIFY_COMPLIANCE']),
88
+ });
89
+ // Base fields shared by all step variants
90
+ const baseStep = {
91
+ stepId: z.string(),
92
+ rules: WorkflowRulesSchema,
93
+ output: z.object({ schema: z.record(z.string(), z.unknown()).optional() }),
94
+ skippable: z.boolean().optional(),
95
+ locales: z.record(z.string(), z.record(z.string(), z.unknown())).optional(),
96
+ };
97
+ const baseInput = {
98
+ mapping: z.array(InputMappingSchema).optional(),
99
+ };
100
+ // Discriminated union — each variant narrows input.config to the step-specific type
101
+ export const WorkflowStepSchema = z.discriminatedUnion('type', [
102
+ z.object({
103
+ ...baseStep,
104
+ type: z.literal('id_verification'),
105
+ input: z.object({ ...baseInput, config: IdVerificationConfigSchema.optional() }),
106
+ }),
107
+ z.object({
108
+ ...baseStep,
109
+ type: z.literal('document_collection'),
110
+ input: z.object({ ...baseInput, config: DocumentCollectionConfigSchema.optional() }),
111
+ }),
112
+ z.object({
113
+ ...baseStep,
114
+ type: z.literal('liveness'),
115
+ input: z.object({ ...baseInput, config: LivenessConfigSchema.optional() }),
116
+ }),
117
+ z.object({
118
+ ...baseStep,
119
+ type: z.literal('form_collection'),
120
+ input: z.object({ ...baseInput, config: FormCollectionConfigSchema.optional() }),
121
+ }),
122
+ z.object({
123
+ ...baseStep,
124
+ type: z.literal('esignature'),
125
+ input: z.object({ ...baseInput, config: EsignatureConfigSchema.optional() }),
126
+ }),
127
+ z.object({
128
+ ...baseStep,
129
+ type: z.literal('action'),
130
+ input: z.object({ ...baseInput, config: ActionConfigSchema.optional() }),
131
+ }),
132
+ ]);
133
+ export const CreateWorkflowSchema = z.object({
134
+ name: z.string(),
135
+ description: z.string().optional(),
136
+ isPublic: z.boolean().optional(),
137
+ allowedOrganizations: z.array(z.string()).optional(),
138
+ defaultConfig: z.record(z.unknown()).optional(),
139
+ steps: z.array(WorkflowStepSchema),
140
+ });
141
+ export const UpdateWorkflowSchema = CreateWorkflowSchema.partial();
142
+ //# sourceMappingURL=workflow-steps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-steps.js","sourceRoot":"","sources":["../../../../src/schemas/kyc/workflow-steps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC;IACtC,iBAAiB;IACjB,qBAAqB;IACrB,UAAU;IACV,iBAAiB;IACjB,YAAY;IACZ,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,8BAA8B;IACrD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,0BAA0B;IACjD,UAAU,EAAE,CAAC;SACV,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;QAClB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;KACzB,CAAC,CACH;SACA,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAC1B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAC9B,cAAc,EAAE,CAAC;SACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;SAClD,OAAO,EAAE;SACT,WAAW,EAAE;SACb,OAAO,EAAE;IACZ,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAElF,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,CAAC,gBAAgB,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;SAC9C,OAAO,CAAC,gBAAgB,CAAC;IAC5B,gBAAgB,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IACnD,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5F,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAClD,CAAC,CAAC;AAEH,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,gBAAgB,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IACnD,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACjD,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7F,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACvD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACvD,0BAA0B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAChE,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;QAChE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU;QAC9D,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS;KAC9E,CAAC;IACF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/E,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAClE,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;CACxE,CAAC,CAAC;AAEH,0CAA0C;AAC1C,MAAM,QAAQ,GAAG;IACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,mBAAmB;IAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC1E,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC5E,CAAC;AAEF,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;CAChD,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC7D,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,QAAQ;QACX,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAClC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,0BAA0B,CAAC,QAAQ,EAAE,EAAE,CAAC;KACjF,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,QAAQ;QACX,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC;QACtC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,8BAA8B,CAAC,QAAQ,EAAE,EAAE,CAAC;KACrF,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,QAAQ;QACX,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE,EAAE,CAAC;KAC3E,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,QAAQ;QACX,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAClC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,0BAA0B,CAAC,QAAQ,EAAE,EAAE,CAAC;KACjF,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,QAAQ;QACX,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;QAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,sBAAsB,CAAC,QAAQ,EAAE,EAAE,CAAC;KAC7E,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,QAAQ;QACX,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,kBAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC;KACzE,CAAC;CACH,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,OAAO,EAAE,CAAC"}
@@ -0,0 +1,127 @@
1
+ import { DossiersHttp } from './http.js';
2
+ import { AmlResource } from './resources/aml.js';
3
+ import { DocumentsResource } from './resources/documents.js';
4
+ import { FormTemplatesResource } from './resources/form-templates.js';
5
+ import { KycResource } from './resources/kyc/index.js';
6
+ import { MediaResource } from './resources/media.js';
7
+ export { DossiersAPIError } from './error.js';
8
+ /** Default API base URL. Override via `DossiersAPIServiceOptions.baseUrl`. */
9
+ export const DOSSIERS_API_BASE_URL = 'https://api.dossiers.wiki';
10
+ /**
11
+ * The main entry point for the Dossiers SDK.
12
+ *
13
+ * Construct a single instance per application and reuse it — the service
14
+ * is stateless and safe to share across requests.
15
+ *
16
+ * Methods are organized into namespaced resource groups:
17
+ * - `service.aml` — sanctions search, PEP/adverse media dossiers, ongoing screening
18
+ * - `service.kyc.sessions` — create and manage customer verification sessions
19
+ * - `service.kyc.workflows` — define the step sequences customers go through
20
+ * - `service.documents` — initiate and track AI-powered document processing
21
+ * - `service.formTemplates` — manage reusable form schemas for form collection steps
22
+ * - `service.media` — fetch signed media files from sessions and processing results
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * import { DossiersAPIService } from '@dossier-wiki/cloud-sdk';
27
+ *
28
+ * const service = new DossiersAPIService({
29
+ * apiKey: process.env.DOSSIERS_API_KEY!,
30
+ * });
31
+ *
32
+ * // AML
33
+ * const hits = await service.aml.searchSanctions({ fullName: 'John Doe' });
34
+ *
35
+ * // KYC
36
+ * const { sessionUrl } = await service.kyc.sessions.create({
37
+ * customer: { name: 'Alice Brown', email: 'alice@example.com' },
38
+ * workflowId: 'wf_abc123',
39
+ * });
40
+ *
41
+ * // Document processing
42
+ * const instance = await service.documents.initiate({
43
+ * processorId: 'INVOICE',
44
+ * files: [{ url: 'https://example.com/invoice.pdf', mimeType: 'application/pdf' }],
45
+ * });
46
+ * ```
47
+ */
48
+ export class DossiersAPIService {
49
+ constructor(options) {
50
+ if (!options.apiKey)
51
+ throw new Error('DossiersAPIService: apiKey is required');
52
+ const http = new DossiersHttp(options.apiKey, (options.baseUrl ?? DOSSIERS_API_BASE_URL).replace(/\/$/, ''), options.fetch ?? fetch);
53
+ this.aml = new AmlResource(http);
54
+ this.kyc = new KycResource(http);
55
+ this.documents = new DocumentsResource(http);
56
+ this.formTemplates = new FormTemplatesResource(http);
57
+ this.media = new MediaResource(http);
58
+ }
59
+ // -----------------------------------------------------------------------
60
+ // Deprecated flat methods (v0.1 layout)
61
+ //
62
+ // The original SDK exposed every operation directly on the service. That
63
+ // surface grew unwieldy, so v0.2 groups operations into resource namespaces
64
+ // (`service.aml`, `service.kyc.sessions`, `service.documents`, ...).
65
+ //
66
+ // These delegators keep pre-v0.2 code working unchanged. They forward to the
67
+ // resource methods and add no behaviour of their own — prefer the resource
68
+ // API for new code. A future major version will remove them.
69
+ // -----------------------------------------------------------------------
70
+ /** @deprecated Use `service.aml.searchSanctions()` instead. */
71
+ searchSanctions(input) {
72
+ return this.aml.searchSanctions(input);
73
+ }
74
+ /** @deprecated Use `service.aml.searchDossiers()` instead. */
75
+ searchDossiers(input) {
76
+ return this.aml.searchDossiers(input);
77
+ }
78
+ /** @deprecated Use `service.aml.createScreeningRequest()` instead. */
79
+ createScreeningRequest(input) {
80
+ return this.aml.createScreeningRequest(input);
81
+ }
82
+ /** @deprecated Use `service.kyc.sessions.create()` instead. */
83
+ createKycSession(input) {
84
+ return this.kyc.sessions.create(input);
85
+ }
86
+ /** @deprecated Use `service.kyc.sessions.list()` instead. */
87
+ listKycSessions(filters) {
88
+ return this.kyc.sessions.list(filters);
89
+ }
90
+ /** @deprecated Use `service.kyc.sessions.get()` instead. */
91
+ getKycSession(id) {
92
+ return this.kyc.sessions.get(id);
93
+ }
94
+ /** @deprecated Use `service.kyc.sessions.delete()` instead. */
95
+ deleteKycSession(id) {
96
+ return this.kyc.sessions.delete(id);
97
+ }
98
+ /** @deprecated Use `service.documents.initiate()` instead. */
99
+ initiateDocumentProcessing(input) {
100
+ return this.documents.initiate(input);
101
+ }
102
+ /** @deprecated Use `service.documents.list()` instead. */
103
+ listDocumentProcessingInstances(query) {
104
+ return this.documents.list(query);
105
+ }
106
+ /** @deprecated Use `service.documents.listProcessors()` instead. */
107
+ listDocumentProcessors() {
108
+ return this.documents.listProcessors();
109
+ }
110
+ /** @deprecated Use `service.documents.get()` instead. */
111
+ getDocumentProcessingInstance(id) {
112
+ return this.documents.get(id);
113
+ }
114
+ /** @deprecated Use `service.documents.getStage()` instead. */
115
+ getDocumentProcessingStage(id, stageId) {
116
+ return this.documents.getStage(id, stageId);
117
+ }
118
+ /** @deprecated Use `service.documents.delete()` instead. */
119
+ deleteDocumentProcessingInstance(id) {
120
+ return this.documents.delete(id);
121
+ }
122
+ /** @deprecated Use `service.documents.stream()` instead. */
123
+ streamDocumentProcessingEvents(id, init) {
124
+ return this.documents.stream(id, init);
125
+ }
126
+ }
127
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"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"}