humanos 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +246 -0
  2. package/dist/index.d.mts +3898 -0
  3. package/dist/index.d.ts +3898 -0
  4. package/dist/index.js +1526 -0
  5. package/dist/index.mjs +1437 -0
  6. package/generated/.openapi-generator/FILES +82 -0
  7. package/generated/.openapi-generator/VERSION +1 -0
  8. package/generated/.openapi-generator-ignore +23 -0
  9. package/generated/README.md +46 -0
  10. package/generated/api/credentials-api.ts +148 -0
  11. package/generated/api/requests-api.ts +577 -0
  12. package/generated/api/resource-api.ts +318 -0
  13. package/generated/api/user-api.ts +241 -0
  14. package/generated/api/webhooks-api.ts +352 -0
  15. package/generated/api.ts +21 -0
  16. package/generated/base.ts +86 -0
  17. package/generated/common.ts +150 -0
  18. package/generated/configuration.ts +110 -0
  19. package/generated/git_push.sh +57 -0
  20. package/generated/index.ts +18 -0
  21. package/generated/models/action-type.ts +33 -0
  22. package/generated/models/agent-detail-entity.ts +36 -0
  23. package/generated/models/cancel-request404-response.ts +42 -0
  24. package/generated/models/create-subject-dto.ts +45 -0
  25. package/generated/models/create-subject-entity.ts +59 -0
  26. package/generated/models/credential-dto.ts +57 -0
  27. package/generated/models/credential-entity.ts +64 -0
  28. package/generated/models/credential-event-user.ts +42 -0
  29. package/generated/models/credential-event.ts +94 -0
  30. package/generated/models/credential-full-entity.ts +82 -0
  31. package/generated/models/credential-status.ts +33 -0
  32. package/generated/models/credential-subject.ts +39 -0
  33. package/generated/models/delivery-action-type.ts +31 -0
  34. package/generated/models/generate-credential-entity.ts +42 -0
  35. package/generated/models/generate-request-dto.ts +106 -0
  36. package/generated/models/generate-request-entity.ts +48 -0
  37. package/generated/models/generate-subject-entity.ts +48 -0
  38. package/generated/models/generate400-response.ts +42 -0
  39. package/generated/models/get-credential-entity.ts +48 -0
  40. package/generated/models/get-credential404-response.ts +42 -0
  41. package/generated/models/get-request-detail404-response.ts +42 -0
  42. package/generated/models/get-subject400-response.ts +42 -0
  43. package/generated/models/get-subject404-response.ts +42 -0
  44. package/generated/models/group-entity.ts +63 -0
  45. package/generated/models/group-resource-entity.ts +64 -0
  46. package/generated/models/groups-entity.ts +39 -0
  47. package/generated/models/identity-dto.ts +132 -0
  48. package/generated/models/identity-event-decision.ts +48 -0
  49. package/generated/models/identity-event-identity.ts +84 -0
  50. package/generated/models/identity-event.ts +94 -0
  51. package/generated/models/identity-field-placement.ts +73 -0
  52. package/generated/models/identity-field-type.ts +38 -0
  53. package/generated/models/index.ts +64 -0
  54. package/generated/models/issuer-detail-entity.ts +36 -0
  55. package/generated/models/mandate-data-dto-type.ts +73 -0
  56. package/generated/models/mandate-data-dto-value.ts +24 -0
  57. package/generated/models/mandate-data-dto.ts +71 -0
  58. package/generated/models/mandate-data-type.ts +37 -0
  59. package/generated/models/otp-failed-event-otp-error.ts +36 -0
  60. package/generated/models/otp-failed-event-otp.ts +39 -0
  61. package/generated/models/otp-failed-event.ts +85 -0
  62. package/generated/models/request-detail-entity.ts +94 -0
  63. package/generated/models/request-entity.ts +94 -0
  64. package/generated/models/request-query.ts +100 -0
  65. package/generated/models/request-subject-entity.ts +48 -0
  66. package/generated/models/requests-entity.ts +39 -0
  67. package/generated/models/resource-entity.ts +94 -0
  68. package/generated/models/resource-query.ts +70 -0
  69. package/generated/models/resources-entity.ts +39 -0
  70. package/generated/models/signature-placement-item-dto.ts +72 -0
  71. package/generated/models/signature-placement.ts +56 -0
  72. package/generated/models/subject-contact-entity.ts +42 -0
  73. package/generated/models/subject-entity.ts +48 -0
  74. package/generated/models/subject-query.ts +42 -0
  75. package/generated/models/subject.ts +42 -0
  76. package/generated/models/success-entity.ts +30 -0
  77. package/generated/models/test-event.ts +82 -0
  78. package/generated/models/w3-cproof.ts +82 -0
  79. package/generated/models/w3-cverifiable-credential.ts +90 -0
  80. package/generated/models/webhook-call-event.ts +56 -0
  81. package/generated/models/webhook-event-type-credential.ts +30 -0
  82. package/generated/models/webhook-event-type-identity.ts +30 -0
  83. package/generated/models/webhook-event-type-otpfailed.ts +30 -0
  84. package/generated/models/webhook-event-type-test.ts +30 -0
  85. package/generated/models/webhook-event-type.ts +33 -0
  86. package/generated/package.json +33 -0
  87. package/generated/tsconfig.esm.json +7 -0
  88. package/generated/tsconfig.json +18 -0
  89. package/package.json +68 -0
package/README.md ADDED
@@ -0,0 +1,246 @@
1
+ # Humanos SDK for TypeScript/JavaScript
2
+
3
+ Official TypeScript/JavaScript SDK for the [Humanos](https://humanos.id) API. Provides automatic request signing, webhook verification and decryption, and full API access for credential management.
4
+
5
+ [![npm version](https://badge.fury.io/js/%40humanos%2Fsdk.svg)](https://www.npmjs.com/package/humanos)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ ## Features
9
+
10
+ - **Automatic Request Signing** - All API requests are signed with HMAC-SHA256
11
+ - **Webhook Verification** - Verify signatures and decrypt encrypted payloads
12
+ - **TypeScript Support** - Full type definitions included
13
+ - **Simple API** - Clean interface for all Humanos endpoints
14
+
15
+ ## Getting Started
16
+
17
+ ### 1. Install the SDK
18
+
19
+ ```bash
20
+ npm install humanos
21
+ ```
22
+
23
+ ### 2. Create an Account
24
+
25
+ Sign up at [humanos.id](https://humanos.id) and create your organization.
26
+
27
+ ### 3. Get Your API Keys
28
+
29
+ In the Humanos Dashboard, go to **Settings > API Keys** and copy:
30
+
31
+ - **API Key** - Used to authenticate requests
32
+ - **Signature Secret** - Used to sign requests with HMAC-SHA256
33
+
34
+ ### 4. Get Your Webhook Keys
35
+
36
+ In the Humanos Dashboard, go to **Settings > Webhooks** and copy:
37
+
38
+ - **Webhook Signature Secret** - Used to verify incoming webhook signatures
39
+ - **Webhook Encryption Secret** - Used to decrypt webhook payloads
40
+ - **Webhook Encryption Salt** - Used alongside the encryption secret
41
+
42
+ ### 5. Initialize the Client
43
+
44
+ ```typescript
45
+ import { HumanosClient } from "humanos";
46
+
47
+ const client = new HumanosClient({
48
+ basePath: "https://api.humanos.id",
49
+ apiKey: process.env.HUMANOS_API_KEY!,
50
+ signatureSecret: process.env.HUMANOS_SIGNATURE_SECRET!,
51
+ });
52
+ ```
53
+
54
+ ### 6. Make Your First API Call
55
+
56
+ Fetch all your credential requests:
57
+
58
+ ```typescript
59
+ const response = await client.requests.getRequests();
60
+ console.log(response.data);
61
+ ```
62
+
63
+ ## Usage Examples
64
+
65
+ ### Create a Credential Request
66
+
67
+ Send a credential request to one or more contacts using pre-configured resources:
68
+
69
+ ```typescript
70
+ const request = await client.requests.generate({
71
+ contacts: ["user@example.com"],
72
+ securityLevel: "CONTACT",
73
+ resourcesIds: ["your-resource-id"],
74
+ });
75
+
76
+ console.log("Request ID:", request.data.id);
77
+ console.log("Credentials:", request.data.credentials);
78
+ ```
79
+
80
+ You can also use group IDs to include all resources in a group:
81
+
82
+ ```typescript
83
+ const request = await client.requests.generate({
84
+ contacts: ["user@example.com"],
85
+ securityLevel: "CONTACT",
86
+ groupIds: ["your-group-id"],
87
+ });
88
+ ```
89
+
90
+ Or provide inline credential data directly:
91
+
92
+ ```typescript
93
+ const request = await client.requests.generate({
94
+ contacts: ["user@example.com"],
95
+ securityLevel: "CONTACT",
96
+ credentials: [
97
+ {
98
+ scope: "onboarding",
99
+ type: "JSON",
100
+ name: "Service Agreement",
101
+ data: [
102
+ { label: "Company", type: "string", value: "Acme Corp" },
103
+ { label: "Plan", type: "string", value: "Enterprise" },
104
+ ],
105
+ },
106
+ ],
107
+ });
108
+ ```
109
+
110
+ ### Receive Webhooks
111
+
112
+ Humanos sends webhook events when credentials are signed, identity checks complete, or OTPs fail. Payloads are encrypted and signed.
113
+
114
+ The SDK provides `createWebhookHandler` which handles signature verification and payload decryption automatically:
115
+
116
+ ```typescript
117
+ import express from "express";
118
+ import { createWebhookHandler, WebhookConfig } from "humanos";
119
+
120
+ const app = express();
121
+
122
+ // Use express.text() to preserve the raw body for signature verification
123
+ app.use(express.text({ type: "application/json" }));
124
+
125
+ const webhookConfig: WebhookConfig = {
126
+ signatureSecret: process.env.HUMANOS_WEBHOOK_SIGNATURE_SECRET!,
127
+ encryptionSecret: process.env.HUMANOS_WEBHOOK_ENCRYPTION_SECRET!,
128
+ encryptionSalt: process.env.HUMANOS_WEBHOOK_ENCRYPTION_SALT!,
129
+ };
130
+
131
+ app.post(
132
+ "/webhook",
133
+ createWebhookHandler(webhookConfig, (payload) => {
134
+ console.log("Event type:", payload.eventType);
135
+
136
+ switch (payload.eventType) {
137
+ case "credential":
138
+ console.log("Credential signed:", payload.requestId);
139
+ break;
140
+ case "identity":
141
+ console.log("Identity verified:", payload.requestId);
142
+ break;
143
+ case "otp.failed":
144
+ console.log("OTP failed:", payload.requestId);
145
+ break;
146
+ case "test":
147
+ console.log("Test event received");
148
+ break;
149
+ }
150
+ }),
151
+ );
152
+
153
+ app.listen(3000, () => {
154
+ console.log("Webhook server listening on port 3000");
155
+ });
156
+ ```
157
+
158
+ For local development, use [ngrok](https://ngrok.com) to expose your server:
159
+
160
+ ```bash
161
+ ngrok http 3000
162
+ ```
163
+
164
+ Then set the ngrok URL (e.g. `https://xxxx.ngrok-free.app/webhook`) as your webhook URL in the Humanos Dashboard under **Settings > Webhooks**.
165
+
166
+ ## API Reference
167
+
168
+ ### Resources
169
+
170
+ ```typescript
171
+ // List resources
172
+ const resources = await client.resources.getResources();
173
+
174
+ // List resource groups
175
+ const groups = await client.resources.getGroups();
176
+
177
+ // Download a credential file
178
+ const file = await client.resources.download(credentialId);
179
+ ```
180
+
181
+ ### Requests
182
+
183
+ ```typescript
184
+ // List requests
185
+ const requests = await client.requests.getRequests();
186
+
187
+ // Get request details
188
+ const detail = await client.requests.getRequestDetail(requestId);
189
+
190
+ // Create a credential request
191
+ const request = await client.requests.generate({ ... });
192
+
193
+ // Cancel a request
194
+ await client.requests.cancelRequest(requestId);
195
+
196
+ // Resend OTP
197
+ await client.requests.resendOtp(requestId);
198
+ ```
199
+
200
+ ### Users
201
+
202
+ ```typescript
203
+ // Create or update users
204
+ const users = await client.users.create([
205
+ {
206
+ contact: "user@example.com",
207
+ internalId: "your-internal-id",
208
+ identity: {
209
+ fullName: "John Doe",
210
+ birth: "1990-01-01",
211
+ docId: "123456789",
212
+ countryAlpha3: "USA",
213
+ },
214
+ },
215
+ ]);
216
+ ```
217
+
218
+ ## Error Handling
219
+
220
+ The SDK throws errors for failed requests. The error object includes the HTTP response when available:
221
+
222
+ ```typescript
223
+ try {
224
+ const request = await client.requests.generate({ ... });
225
+ } catch (error) {
226
+ if (error.response) {
227
+ console.error('Status:', error.response.status);
228
+ console.error('Body:', error.response.data);
229
+ } else {
230
+ console.error('Error:', error.message);
231
+ }
232
+ }
233
+ ```
234
+
235
+ ## Documentation
236
+
237
+ - [API Documentation](https://humanos.mintlify.app/)
238
+ - [Humanos Website](https://humanos.id)
239
+
240
+ ## Support
241
+
242
+ - **Email**: tech@humanos.tech
243
+
244
+ ## License
245
+
246
+ MIT License - see [LICENSE](./LICENSE) file for details.