@bloque/sdk 0.0.2 → 0.0.4

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.
package/README.md CHANGED
@@ -5,7 +5,7 @@ The official TypeScript/JavaScript SDK for integrating [Bloque](https://www.bloq
5
5
  ## Features
6
6
 
7
7
  - **TypeScript First**: Built with TypeScript for complete type safety
8
- - **Simple API**: Intuitive interface for managing organizations
8
+ - **Simple API**: Intuitive interface for managing organizations, compliance, accounts, and identity
9
9
  - **Fully Async**: Promise-based API for modern JavaScript workflows
10
10
  - **Lightweight**: Minimal dependencies for optimal bundle size
11
11
  - **Modular**: Import only what you need with tree-shakeable exports
@@ -51,6 +51,17 @@ async function createOrganization() {
51
51
  const organization = await bloque.orgs.create(params);
52
52
  console.log('Organization created:', organization);
53
53
  }
54
+
55
+ // Create a virtual card
56
+ async function createCard() {
57
+ const card = await bloque.accounts.card.create({
58
+ urn: 'did:bloque:user:123e4567',
59
+ name: 'My Virtual Card',
60
+ });
61
+
62
+ console.log('Card created:', card.urn);
63
+ console.log('Last four digits:', card.lastFour);
64
+ }
54
65
  ```
55
66
 
56
67
  ## Configuration
@@ -138,6 +149,180 @@ type OrgStatus =
138
149
  | 'closed';
139
150
  ```
140
151
 
152
+ ### Compliance
153
+
154
+ The compliance resource provides KYC (Know Your Customer) verification functionality.
155
+
156
+ #### Start KYC Verification
157
+
158
+ Start a KYC verification process for a user:
159
+
160
+ ```typescript
161
+ const verification = await bloque.compliance.kyc.startVerification({
162
+ urn: 'did:bloque:origin:user-id',
163
+ });
164
+ ```
165
+
166
+ **Parameters**:
167
+
168
+ ```typescript
169
+ interface KycVerificationParams {
170
+ /**
171
+ * URN (Uniform Resource Name) that uniquely identifies the user
172
+ * within the system. This value is used to associate the KYC
173
+ * verification process with a specific user.
174
+ *
175
+ * @example "did:bloque:origin:..."
176
+ */
177
+ urn: string;
178
+
179
+ /**
180
+ * URL where webhook notifications will be sent when the verification
181
+ * status changes (optional).
182
+ *
183
+ * @example "https://api.example.com/webhooks/kyc"
184
+ */
185
+ webhookUrl?: string;
186
+ }
187
+ ```
188
+
189
+ **Response**:
190
+
191
+ ```typescript
192
+ interface KycVerificationResponse {
193
+ url: string; // URL where the user should complete the verification
194
+ status: 'awaiting_compliance_verification' | 'approved' | 'rejected';
195
+ }
196
+ ```
197
+
198
+ #### Get KYC Verification Status
199
+
200
+ Get the current status of a KYC verification:
201
+
202
+ ```typescript
203
+ const status = await bloque.compliance.kyc.getVerification({
204
+ urn: 'did:bloque:user:123e4567',
205
+ });
206
+ ```
207
+
208
+ **Parameters**:
209
+
210
+ ```typescript
211
+ interface GetKycVerificationParams {
212
+ /**
213
+ * URN (Uniform Resource Name) that uniquely identifies the user
214
+ * within the system.
215
+ *
216
+ * @example "did:bloque:user:123e4567"
217
+ */
218
+ urn: string;
219
+ }
220
+ ```
221
+
222
+ **Response**:
223
+
224
+ ```typescript
225
+ interface KycVerificationStatus {
226
+ status: 'awaiting_compliance_verification' | 'approved' | 'rejected';
227
+ url: string; // URL for verification
228
+ completedAt: string | null; // Completion date (ISO 8601)
229
+ }
230
+ ```
231
+
232
+ ### Accounts
233
+
234
+ The accounts resource allows you to create virtual cards for users.
235
+
236
+ #### Create a Virtual Card
237
+
238
+ Create a virtual card for a user:
239
+
240
+ ```typescript
241
+ const card = await bloque.accounts.card.create({
242
+ urn: 'did:bloque:user:123e4567',
243
+ name: 'My Virtual Card', // Optional
244
+ });
245
+ ```
246
+
247
+ **Parameters**:
248
+
249
+ ```typescript
250
+ interface CreateCardParams {
251
+ /**
252
+ * URN of the account holder (user or organization)
253
+ * @example "did:bloque:user:123e4567"
254
+ */
255
+ urn: string;
256
+
257
+ /**
258
+ * Display name for the card (optional)
259
+ */
260
+ name?: string;
261
+ }
262
+ ```
263
+
264
+ **Response**:
265
+
266
+ ```typescript
267
+ interface CardAccount {
268
+ urn: string; // Unique resource name
269
+ id: string; // Card account ID
270
+ lastFour: string; // Last four digits
271
+ productType: 'CREDIT' | 'DEBIT'; // Card product type
272
+ status: 'active' | 'disabled' | 'frozen' | 'deleted' | 'creation_in_progress' | 'creation_failed';
273
+ cardType: 'VIRTUAL' | 'PHYSICAL'; // Card type
274
+ detailsUrl: string; // PCI-compliant URL to view card details
275
+ ownerUrn: string; // Owner URN
276
+ webhookUrl: string | null; // Webhook URL (if configured)
277
+ metadata?: Record<string, unknown>; // Custom metadata
278
+ createdAt: string; // Creation timestamp (ISO 8601)
279
+ updatedAt: string; // Last update timestamp (ISO 8601)
280
+ }
281
+ ```
282
+
283
+ ### Identity
284
+
285
+ The identity resource allows you to retrieve user aliases (alternative identifiers like email or phone).
286
+
287
+ #### Get Alias
288
+
289
+ Retrieve alias information by the alias value:
290
+
291
+ ```typescript
292
+ const alias = await bloque.identity.aliases.get('user@example.com');
293
+ ```
294
+
295
+ **Parameters**:
296
+
297
+ ```typescript
298
+ // Pass the alias string directly
299
+ const alias: string = 'user@example.com' | '+1234567890';
300
+ ```
301
+
302
+ **Response**:
303
+
304
+ ```typescript
305
+ interface Alias {
306
+ id: string; // Unique alias ID
307
+ alias: string; // Alias value
308
+ type: 'phone' | 'email' | string; // Alias type
309
+ urn: string; // Associated user URN
310
+ origin: string; // Origin identifier
311
+ details: {
312
+ phone?: string; // Phone details (if applicable)
313
+ };
314
+ metadata: {
315
+ alias: string; // Alias in metadata
316
+ [key: string]: unknown; // Additional metadata
317
+ };
318
+ status: 'active' | 'inactive' | 'revoked'; // Alias status
319
+ is_public: boolean; // Whether alias is public
320
+ is_primary: boolean; // Whether this is the primary alias
321
+ created_at: string; // Creation timestamp (ISO 8601)
322
+ updated_at: string; // Last update timestamp (ISO 8601)
323
+ }
324
+ ```
325
+
141
326
  ## Examples
142
327
 
143
328
  ### Creating a Business Organization
@@ -260,6 +445,147 @@ const organization = await bloque.orgs.create(params);
260
445
  console.log('Multi-location organization created');
261
446
  ```
262
447
 
448
+ ### Starting KYC Verification
449
+
450
+ ```typescript
451
+ import { SDK } from '@bloque/sdk';
452
+ import type { KycVerificationParams } from '@bloque/sdk/compliance';
453
+
454
+ const bloque = new SDK({
455
+ apiKey: process.env.BLOQUE_API_KEY!,
456
+ mode: 'production',
457
+ });
458
+
459
+ // Start KYC verification for a user
460
+ const params: KycVerificationParams = {
461
+ urn: 'did:bloque:origin:user-123',
462
+ webhookUrl: 'https://api.example.com/webhooks/kyc', // Optional webhook URL
463
+ };
464
+
465
+ try {
466
+ const verification = await bloque.compliance.kyc.startVerification(params);
467
+
468
+ console.log('Verification URL:', verification.url);
469
+ console.log('Status:', verification.status);
470
+
471
+ // Redirect the user to verification.url to complete KYC
472
+ // Webhook notifications will be sent to the provided webhookUrl
473
+ } catch (error) {
474
+ console.error('Failed to start KYC verification:', error);
475
+ }
476
+ ```
477
+
478
+ ### Getting KYC Verification Status
479
+
480
+ ```typescript
481
+ import { SDK } from '@bloque/sdk';
482
+ import type { GetKycVerificationParams } from '@bloque/sdk/compliance';
483
+
484
+ const bloque = new SDK({
485
+ apiKey: process.env.BLOQUE_API_KEY!,
486
+ mode: 'production',
487
+ });
488
+
489
+ // Get verification status
490
+ const params: GetKycVerificationParams = {
491
+ urn: 'did:bloque:user:123e4567',
492
+ };
493
+
494
+ try {
495
+ const status = await bloque.compliance.kyc.getVerification(params);
496
+
497
+ console.log('Status:', status.status);
498
+ console.log('Verification URL:', status.url);
499
+ console.log('Completed At:', status.completedAt);
500
+
501
+ if (status.status === 'approved') {
502
+ console.log('User verification approved!');
503
+ } else if (status.status === 'rejected') {
504
+ console.log('User verification rejected');
505
+ } else {
506
+ console.log('Verification still pending');
507
+ }
508
+ } catch (error) {
509
+ console.error('Failed to get verification status:', error);
510
+ }
511
+ ```
512
+
513
+ ### Creating a Virtual Card
514
+
515
+ ```typescript
516
+ import { SDK } from '@bloque/sdk';
517
+ import type { CreateCardParams } from '@bloque/sdk/accounts';
518
+
519
+ const bloque = new SDK({
520
+ apiKey: process.env.BLOQUE_API_KEY!,
521
+ mode: 'production',
522
+ });
523
+
524
+ // Create a virtual card
525
+ const params: CreateCardParams = {
526
+ urn: 'did:bloque:user:123e4567',
527
+ name: 'My Business Card', // Optional
528
+ };
529
+
530
+ try {
531
+ const card = await bloque.accounts.card.create(params);
532
+
533
+ console.log('Card created:', card.urn);
534
+ console.log('Last four digits:', card.lastFour);
535
+ console.log('Card type:', card.cardType);
536
+ console.log('Status:', card.status);
537
+ console.log('Details URL:', card.detailsUrl);
538
+
539
+ // Check if card is ready to use
540
+ if (card.status === 'active') {
541
+ console.log('Card is active and ready to use!');
542
+ } else if (card.status === 'creation_in_progress') {
543
+ console.log('Card is being created...');
544
+ }
545
+ } catch (error) {
546
+ console.error('Failed to create card:', error);
547
+ }
548
+ ```
549
+
550
+ ### Retrieving User Alias Information
551
+
552
+ ```typescript
553
+ import { SDK } from '@bloque/sdk';
554
+
555
+ const bloque = new SDK({
556
+ apiKey: process.env.BLOQUE_API_KEY!,
557
+ mode: 'production',
558
+ });
559
+
560
+ // Get alias information by email
561
+ try {
562
+ const alias = await bloque.identity.aliases.get('user@example.com');
563
+
564
+ console.log('Alias ID:', alias.id);
565
+ console.log('Alias type:', alias.type);
566
+ console.log('Associated URN:', alias.urn);
567
+ console.log('Status:', alias.status);
568
+ console.log('Is primary:', alias.is_primary);
569
+ console.log('Is public:', alias.is_public);
570
+
571
+ if (alias.status === 'active') {
572
+ console.log('Alias is active');
573
+ }
574
+ } catch (error) {
575
+ console.error('Failed to retrieve alias:', error);
576
+ }
577
+
578
+ // Get alias information by phone number
579
+ try {
580
+ const phoneAlias = await bloque.identity.aliases.get('+1234567890');
581
+
582
+ console.log('Phone alias:', phoneAlias.alias);
583
+ console.log('Phone details:', phoneAlias.details.phone);
584
+ } catch (error) {
585
+ console.error('Failed to retrieve phone alias:', error);
586
+ }
587
+ ```
588
+
263
589
  ### Using in an API Endpoint
264
590
 
265
591
  ```typescript
@@ -397,6 +723,25 @@ import type {
397
723
  OrgStatus,
398
724
  Place,
399
725
  } from '@bloque/sdk/orgs';
726
+
727
+ // Compliance types
728
+ import type {
729
+ KycVerificationParams,
730
+ KycVerificationResponse,
731
+ GetKycVerificationParams,
732
+ KycVerificationStatus,
733
+ } from '@bloque/sdk/compliance';
734
+
735
+ // Accounts types
736
+ import type {
737
+ CardAccount,
738
+ CreateCardParams,
739
+ } from '@bloque/sdk/accounts';
740
+
741
+ // Identity types
742
+ import type {
743
+ Alias,
744
+ } from '@bloque/sdk/identity';
400
745
  ```
401
746
 
402
747
  ## Development
@@ -444,6 +789,9 @@ This monorepo contains the following packages:
444
789
  - **`@bloque/sdk`**: Main SDK package
445
790
  - **`@bloque/sdk-core`**: Core utilities and HTTP client
446
791
  - **`@bloque/sdk-orgs`**: Organizations API client
792
+ - **`@bloque/sdk-compliance`**: Compliance and KYC verification API client
793
+ - **`@bloque/sdk-accounts`**: Accounts and virtual cards API client
794
+ - **`@bloque/sdk-identity`**: Identity and aliases API client
447
795
 
448
796
  ## License
449
797
 
@@ -0,0 +1,3 @@
1
+ export type { CardAccount, CreateCardParams, } from '@bloque/sdk-accounts';
2
+ import { AccountsClient } from '@bloque/sdk-accounts';
3
+ export declare const Accounts: AccountsClient;
package/dist/bloque.d.ts CHANGED
@@ -1,7 +1,13 @@
1
+ import { AccountsClient } from '@bloque/sdk-accounts';
2
+ import { ComplianceClient } from '@bloque/sdk-compliance';
1
3
  import { type BloqueConfig } from '@bloque/sdk-core';
4
+ import { IdentityClient } from '@bloque/sdk-identity';
2
5
  import { OrgsClient } from '@bloque/sdk-orgs';
3
6
  export declare class SDK {
4
7
  private readonly httpClient;
8
+ readonly accounts: AccountsClient;
9
+ readonly compliance: ComplianceClient;
10
+ readonly identity: IdentityClient;
5
11
  readonly orgs: OrgsClient;
6
12
  constructor(config: BloqueConfig);
7
13
  }
@@ -0,0 +1,3 @@
1
+ export type { GetKycVerificationParams, KycVerificationParams, KycVerificationResponse, } from '@bloque/sdk-compliance';
2
+ import { ComplianceClient } from '@bloque/sdk-compliance';
3
+ export declare const Compliance: ComplianceClient;
@@ -0,0 +1,3 @@
1
+ import type { BloqueConfig } from '@bloque/sdk-core';
2
+ export declare function setConfig(next: BloqueConfig): void;
3
+ export declare function getConfig(): BloqueConfig;
@@ -0,0 +1,3 @@
1
+ export type { Alias } from '@bloque/sdk-identity';
2
+ import { IdentityClient } from '@bloque/sdk-identity';
3
+ export declare const Identity: IdentityClient;
package/dist/index.cjs CHANGED
@@ -26,13 +26,22 @@ __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
27
  SDK: ()=>SDK
28
28
  });
29
+ const sdk_accounts_namespaceObject = require("@bloque/sdk-accounts");
30
+ const sdk_compliance_namespaceObject = require("@bloque/sdk-compliance");
29
31
  const sdk_core_namespaceObject = require("@bloque/sdk-core");
32
+ const sdk_identity_namespaceObject = require("@bloque/sdk-identity");
30
33
  const sdk_orgs_namespaceObject = require("@bloque/sdk-orgs");
31
34
  class SDK {
32
35
  httpClient;
36
+ accounts;
37
+ compliance;
38
+ identity;
33
39
  orgs;
34
40
  constructor(config){
35
41
  this.httpClient = new sdk_core_namespaceObject.HttpClient(config);
42
+ this.accounts = new sdk_accounts_namespaceObject.AccountsClient(this.httpClient);
43
+ this.compliance = new sdk_compliance_namespaceObject.ComplianceClient(this.httpClient);
44
+ this.identity = new sdk_identity_namespaceObject.IdentityClient(this.httpClient);
36
45
  this.orgs = new sdk_orgs_namespaceObject.OrgsClient(this.httpClient);
37
46
  }
38
47
  }
package/dist/index.js CHANGED
@@ -1,10 +1,19 @@
1
+ import { AccountsClient } from "@bloque/sdk-accounts";
2
+ import { ComplianceClient } from "@bloque/sdk-compliance";
1
3
  import { HttpClient } from "@bloque/sdk-core";
4
+ import { IdentityClient } from "@bloque/sdk-identity";
2
5
  import { OrgsClient } from "@bloque/sdk-orgs";
3
6
  class SDK {
4
7
  httpClient;
8
+ accounts;
9
+ compliance;
10
+ identity;
5
11
  orgs;
6
12
  constructor(config){
7
13
  this.httpClient = new HttpClient(config);
14
+ this.accounts = new AccountsClient(this.httpClient);
15
+ this.compliance = new ComplianceClient(this.httpClient);
16
+ this.identity = new IdentityClient(this.httpClient);
8
17
  this.orgs = new OrgsClient(this.httpClient);
9
18
  }
10
19
  }
package/dist/init.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import type { BloqueConfig } from '@bloque/sdk-core';
2
+ export declare function init(config: BloqueConfig): void;
package/dist/orgs.d.ts CHANGED
@@ -1 +1,3 @@
1
1
  export type { CreateOrgParams, CreateOrgResponse, Organization, OrgProfile, OrgStatus, OrgType, Place, } from '@bloque/sdk-orgs';
2
+ import { OrgsClient } from '@bloque/sdk-orgs';
3
+ export declare const Orgs: OrgsClient;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bloque/sdk",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "Official Bloque SDK",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -19,12 +19,33 @@
19
19
  "url": "git+https://github.com/bloque-app/sdk.git",
20
20
  "directory": "packages/sdk"
21
21
  },
22
+ "sideEffects": false,
22
23
  "exports": {
23
24
  ".": {
24
25
  "types": "./dist/index.d.ts",
25
26
  "import": "./dist/index.js",
26
27
  "require": "./dist/index.cjs"
27
28
  },
29
+ "./init": {
30
+ "types": "./dist/init.d.ts",
31
+ "import": "./dist/init.js",
32
+ "require": "./dist/init.cjs"
33
+ },
34
+ "./accounts": {
35
+ "types": "./dist/accounts.d.ts",
36
+ "import": "./dist/accounts.js",
37
+ "require": "./dist/accounts.cjs"
38
+ },
39
+ "./compliance": {
40
+ "types": "./dist/compliance.d.ts",
41
+ "import": "./dist/compliance.js",
42
+ "require": "./dist/compliance.cjs"
43
+ },
44
+ "./identity": {
45
+ "types": "./dist/identity.d.ts",
46
+ "import": "./dist/identity.js",
47
+ "require": "./dist/identity.cjs"
48
+ },
28
49
  "./orgs": {
29
50
  "types": "./dist/orgs.d.ts",
30
51
  "import": "./dist/orgs.js",
@@ -47,7 +68,10 @@
47
68
  "typecheck": "tsgo --noEmit"
48
69
  },
49
70
  "dependencies": {
71
+ "@bloque/sdk-accounts": "workspace:*",
72
+ "@bloque/sdk-compliance": "workspace:*",
50
73
  "@bloque/sdk-core": "workspace:*",
74
+ "@bloque/sdk-identity": "workspace:*",
51
75
  "@bloque/sdk-orgs": "workspace:*"
52
76
  },
53
77
  "devDependencies": {