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.
- package/README.md +246 -0
- package/dist/index.d.mts +3898 -0
- package/dist/index.d.ts +3898 -0
- package/dist/index.js +1526 -0
- package/dist/index.mjs +1437 -0
- package/generated/.openapi-generator/FILES +82 -0
- package/generated/.openapi-generator/VERSION +1 -0
- package/generated/.openapi-generator-ignore +23 -0
- package/generated/README.md +46 -0
- package/generated/api/credentials-api.ts +148 -0
- package/generated/api/requests-api.ts +577 -0
- package/generated/api/resource-api.ts +318 -0
- package/generated/api/user-api.ts +241 -0
- package/generated/api/webhooks-api.ts +352 -0
- package/generated/api.ts +21 -0
- package/generated/base.ts +86 -0
- package/generated/common.ts +150 -0
- package/generated/configuration.ts +110 -0
- package/generated/git_push.sh +57 -0
- package/generated/index.ts +18 -0
- package/generated/models/action-type.ts +33 -0
- package/generated/models/agent-detail-entity.ts +36 -0
- package/generated/models/cancel-request404-response.ts +42 -0
- package/generated/models/create-subject-dto.ts +45 -0
- package/generated/models/create-subject-entity.ts +59 -0
- package/generated/models/credential-dto.ts +57 -0
- package/generated/models/credential-entity.ts +64 -0
- package/generated/models/credential-event-user.ts +42 -0
- package/generated/models/credential-event.ts +94 -0
- package/generated/models/credential-full-entity.ts +82 -0
- package/generated/models/credential-status.ts +33 -0
- package/generated/models/credential-subject.ts +39 -0
- package/generated/models/delivery-action-type.ts +31 -0
- package/generated/models/generate-credential-entity.ts +42 -0
- package/generated/models/generate-request-dto.ts +106 -0
- package/generated/models/generate-request-entity.ts +48 -0
- package/generated/models/generate-subject-entity.ts +48 -0
- package/generated/models/generate400-response.ts +42 -0
- package/generated/models/get-credential-entity.ts +48 -0
- package/generated/models/get-credential404-response.ts +42 -0
- package/generated/models/get-request-detail404-response.ts +42 -0
- package/generated/models/get-subject400-response.ts +42 -0
- package/generated/models/get-subject404-response.ts +42 -0
- package/generated/models/group-entity.ts +63 -0
- package/generated/models/group-resource-entity.ts +64 -0
- package/generated/models/groups-entity.ts +39 -0
- package/generated/models/identity-dto.ts +132 -0
- package/generated/models/identity-event-decision.ts +48 -0
- package/generated/models/identity-event-identity.ts +84 -0
- package/generated/models/identity-event.ts +94 -0
- package/generated/models/identity-field-placement.ts +73 -0
- package/generated/models/identity-field-type.ts +38 -0
- package/generated/models/index.ts +64 -0
- package/generated/models/issuer-detail-entity.ts +36 -0
- package/generated/models/mandate-data-dto-type.ts +73 -0
- package/generated/models/mandate-data-dto-value.ts +24 -0
- package/generated/models/mandate-data-dto.ts +71 -0
- package/generated/models/mandate-data-type.ts +37 -0
- package/generated/models/otp-failed-event-otp-error.ts +36 -0
- package/generated/models/otp-failed-event-otp.ts +39 -0
- package/generated/models/otp-failed-event.ts +85 -0
- package/generated/models/request-detail-entity.ts +94 -0
- package/generated/models/request-entity.ts +94 -0
- package/generated/models/request-query.ts +100 -0
- package/generated/models/request-subject-entity.ts +48 -0
- package/generated/models/requests-entity.ts +39 -0
- package/generated/models/resource-entity.ts +94 -0
- package/generated/models/resource-query.ts +70 -0
- package/generated/models/resources-entity.ts +39 -0
- package/generated/models/signature-placement-item-dto.ts +72 -0
- package/generated/models/signature-placement.ts +56 -0
- package/generated/models/subject-contact-entity.ts +42 -0
- package/generated/models/subject-entity.ts +48 -0
- package/generated/models/subject-query.ts +42 -0
- package/generated/models/subject.ts +42 -0
- package/generated/models/success-entity.ts +30 -0
- package/generated/models/test-event.ts +82 -0
- package/generated/models/w3-cproof.ts +82 -0
- package/generated/models/w3-cverifiable-credential.ts +90 -0
- package/generated/models/webhook-call-event.ts +56 -0
- package/generated/models/webhook-event-type-credential.ts +30 -0
- package/generated/models/webhook-event-type-identity.ts +30 -0
- package/generated/models/webhook-event-type-otpfailed.ts +30 -0
- package/generated/models/webhook-event-type-test.ts +30 -0
- package/generated/models/webhook-event-type.ts +33 -0
- package/generated/package.json +33 -0
- package/generated/tsconfig.esm.json +7 -0
- package/generated/tsconfig.json +18 -0
- 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
|
+
[](https://www.npmjs.com/package/humanos)
|
|
6
|
+
[](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.
|