@1mtx/did-api-contract 1.0.0 → 1.1.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.
- package/dist/index.d.mts +932 -151
- package/dist/index.d.ts +932 -151
- package/dist/index.js +171 -25
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +163 -24
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
import { initContract as
|
|
2
|
+
import { initContract as initContract8 } from "@ts-rest/core";
|
|
3
3
|
|
|
4
4
|
// src/v1/auth.ts
|
|
5
5
|
import { initContract } from "@ts-rest/core";
|
|
@@ -74,7 +74,7 @@ var authContract = c.router({
|
|
|
74
74
|
"| `400` | Invalid message format (bad JSON, extra keys, wrong domain) |",
|
|
75
75
|
"| `401` | Message expired, DID mismatch, invalid or non-matching signature |"
|
|
76
76
|
].join("\n"),
|
|
77
|
-
metadata: { openApiTags: ["Auth"] }
|
|
77
|
+
metadata: { openApiTags: ["Auth"], openApiSecurity: [] }
|
|
78
78
|
}
|
|
79
79
|
});
|
|
80
80
|
function buildAuthMessage(did, scheme = "eip191", domain = "1Matrix Events", issuedAt = (/* @__PURE__ */ new Date()).toISOString()) {
|
|
@@ -86,28 +86,37 @@ import { initContract as initContract2 } from "@ts-rest/core";
|
|
|
86
86
|
import { z as z2 } from "zod";
|
|
87
87
|
var c2 = initContract2();
|
|
88
88
|
var SUPPORTED_FIELDS = [
|
|
89
|
+
"documentNumber",
|
|
89
90
|
"fullName",
|
|
90
|
-
"
|
|
91
|
-
"portrait",
|
|
91
|
+
"dateOfBirth",
|
|
92
92
|
"gender",
|
|
93
93
|
"nationality",
|
|
94
|
-
"
|
|
95
|
-
"
|
|
94
|
+
"ethnicity",
|
|
95
|
+
"hometown",
|
|
96
|
+
"permanentAddress",
|
|
97
|
+
"identifyingMarks",
|
|
98
|
+
"issueDate",
|
|
99
|
+
"expiryDate",
|
|
100
|
+
"fatherName",
|
|
101
|
+
"motherName",
|
|
102
|
+
"photo"
|
|
96
103
|
];
|
|
97
104
|
var CreateEventSchema = z2.object({
|
|
98
|
-
name: z2.string().min(1).max(255),
|
|
99
|
-
|
|
100
|
-
description: z2.string().optional(),
|
|
101
|
-
maxGuests: z2.number().int().positive(),
|
|
102
|
-
|
|
103
|
-
|
|
105
|
+
name: z2.string().min(1).max(255).describe("T\xEAn s\u1EF1 ki\u1EC7n"),
|
|
106
|
+
coverImageId: z2.string().optional().describe("ID \u1EA3nh b\xECa s\u1EF1 ki\u1EC7n"),
|
|
107
|
+
description: z2.string().optional().describe("M\xF4 t\u1EA3 s\u1EF1 ki\u1EC7n"),
|
|
108
|
+
maxGuests: z2.number().int().positive().describe("S\u1ED1 l\u01B0\u1EE3ng kh\xE1ch t\u1ED1i \u0111a"),
|
|
109
|
+
startDateTime: z2.string().datetime().describe("Th\u1EDDi gian b\u1EAFt \u0111\u1EA7u s\u1EF1 ki\u1EC7n"),
|
|
110
|
+
endDateTime: z2.string().datetime().describe("Th\u1EDDi gian k\u1EBFt th\xFAc s\u1EF1 ki\u1EC7n"),
|
|
111
|
+
requestedFields: z2.array(z2.enum(SUPPORTED_FIELDS)).min(1).describe("C\xE1c tr\u01B0\u1EDDng d\u1EEF li\u1EC7u y\xEAu c\u1EA7u x\xE1c th\u1EF1c")
|
|
104
112
|
});
|
|
105
113
|
var UpdateEventSchema = z2.object({
|
|
106
114
|
name: z2.string().min(1).max(255).optional(),
|
|
107
|
-
|
|
115
|
+
coverImageId: z2.string().nullable().optional(),
|
|
108
116
|
description: z2.string().nullable().optional(),
|
|
109
117
|
maxGuests: z2.number().int().positive().optional(),
|
|
110
|
-
|
|
118
|
+
startDateTime: z2.string().datetime().optional(),
|
|
119
|
+
endDateTime: z2.string().datetime().optional(),
|
|
111
120
|
status: z2.enum(["ACTIVE", "CANCELLED", "COMPLETED"]).optional()
|
|
112
121
|
});
|
|
113
122
|
var ParticipantSchema = z2.object({
|
|
@@ -120,9 +129,11 @@ var EventResponseSchema = z2.object({
|
|
|
120
129
|
id: z2.string(),
|
|
121
130
|
name: z2.string(),
|
|
122
131
|
coverImageUrl: z2.string().nullable(),
|
|
132
|
+
thumbnailUrl: z2.string().nullable(),
|
|
123
133
|
description: z2.string().nullable(),
|
|
124
134
|
maxGuests: z2.number(),
|
|
125
|
-
|
|
135
|
+
startDateTime: z2.string(),
|
|
136
|
+
endDateTime: z2.string().nullable(),
|
|
126
137
|
userId: z2.string(),
|
|
127
138
|
requestedFields: z2.array(z2.string()),
|
|
128
139
|
status: z2.enum(["ACTIVE", "CANCELLED", "COMPLETED"]),
|
|
@@ -134,8 +145,27 @@ var EventDetailResponseSchema = EventResponseSchema.extend({
|
|
|
134
145
|
participants: z2.array(ParticipantSchema),
|
|
135
146
|
vpRequest: z2.record(z2.unknown())
|
|
136
147
|
});
|
|
148
|
+
var EventDiscoverSchema = z2.object({
|
|
149
|
+
id: z2.string(),
|
|
150
|
+
name: z2.string(),
|
|
151
|
+
coverImageUrl: z2.string().nullable(),
|
|
152
|
+
thumbnailUrl: z2.string().nullable(),
|
|
153
|
+
description: z2.string().nullable(),
|
|
154
|
+
startDateTime: z2.string(),
|
|
155
|
+
endDateTime: z2.string().nullable(),
|
|
156
|
+
participantCount: z2.number()
|
|
157
|
+
});
|
|
137
158
|
var SECURITY = [{ bearerAuth: [] }];
|
|
138
159
|
var eventsContract = c2.router({
|
|
160
|
+
discover: {
|
|
161
|
+
method: "GET",
|
|
162
|
+
path: "/v1/events/public/discover",
|
|
163
|
+
responses: {
|
|
164
|
+
200: z2.array(EventDiscoverSchema)
|
|
165
|
+
},
|
|
166
|
+
summary: "List public events for discovery (public)",
|
|
167
|
+
metadata: { openApiTags: ["Events"], openApiSecurity: [] }
|
|
168
|
+
},
|
|
139
169
|
create: {
|
|
140
170
|
method: "POST",
|
|
141
171
|
path: "/v1/events",
|
|
@@ -219,9 +249,11 @@ var EventPublicInfoSchema = z3.object({
|
|
|
219
249
|
id: z3.string(),
|
|
220
250
|
name: z3.string(),
|
|
221
251
|
coverImageUrl: z3.string().nullable(),
|
|
252
|
+
thumbnailUrl: z3.string().nullable(),
|
|
222
253
|
description: z3.string().nullable(),
|
|
223
254
|
maxGuests: z3.number(),
|
|
224
|
-
|
|
255
|
+
startDateTime: z3.string(),
|
|
256
|
+
endDateTime: z3.string().nullable(),
|
|
225
257
|
currentGuests: z3.number(),
|
|
226
258
|
status: z3.enum(["ACTIVE", "CANCELLED", "COMPLETED"])
|
|
227
259
|
});
|
|
@@ -246,7 +278,7 @@ var checkinContract = c3.router({
|
|
|
246
278
|
404: z3.object({ message: z3.string() })
|
|
247
279
|
},
|
|
248
280
|
summary: "Get event info and VP request for check-in (public)",
|
|
249
|
-
metadata: { openApiTags: ["Check-in"] }
|
|
281
|
+
metadata: { openApiTags: ["Check-in"], openApiSecurity: [] }
|
|
250
282
|
},
|
|
251
283
|
submit: {
|
|
252
284
|
method: "POST",
|
|
@@ -255,11 +287,30 @@ var checkinContract = c3.router({
|
|
|
255
287
|
responses: {
|
|
256
288
|
200: CheckinSubmitResponseSchema,
|
|
257
289
|
400: z3.object({ message: z3.string(), errors: z3.array(z3.string()).optional() }),
|
|
290
|
+
401: z3.object({ message: z3.string() }),
|
|
258
291
|
404: z3.object({ message: z3.string() }),
|
|
259
292
|
409: z3.object({ message: z3.string() })
|
|
260
293
|
},
|
|
261
|
-
summary: "Submit VP for event check-in \u2014 issues participation VC on success
|
|
262
|
-
metadata: { openApiTags: ["Check-in"] }
|
|
294
|
+
summary: "Submit VP for event check-in \u2014 issues participation VC on success",
|
|
295
|
+
metadata: { openApiTags: ["Check-in"], openApiSecurity: [{ bearerAuth: [] }] }
|
|
296
|
+
},
|
|
297
|
+
myCheckins: {
|
|
298
|
+
method: "GET",
|
|
299
|
+
path: "/v1/checkin/my",
|
|
300
|
+
responses: {
|
|
301
|
+
200: z3.array(
|
|
302
|
+
z3.object({
|
|
303
|
+
id: z3.string(),
|
|
304
|
+
eventId: z3.string(),
|
|
305
|
+
checkedInAt: z3.string(),
|
|
306
|
+
disclosedFields: z3.record(z3.unknown()),
|
|
307
|
+
event: EventPublicInfoSchema
|
|
308
|
+
})
|
|
309
|
+
),
|
|
310
|
+
401: z3.object({ message: z3.string() })
|
|
311
|
+
},
|
|
312
|
+
summary: "List authenticated user check-ins",
|
|
313
|
+
metadata: { openApiTags: ["Check-in"], openApiSecurity: [{ bearerAuth: [] }] }
|
|
263
314
|
}
|
|
264
315
|
});
|
|
265
316
|
|
|
@@ -289,14 +340,95 @@ var turnContract = c4.router({
|
|
|
289
340
|
}
|
|
290
341
|
});
|
|
291
342
|
|
|
292
|
-
// src/
|
|
343
|
+
// src/v1/uploads.ts
|
|
344
|
+
import { initContract as initContract5 } from "@ts-rest/core";
|
|
345
|
+
import { z as z5 } from "zod";
|
|
293
346
|
var c5 = initContract5();
|
|
294
|
-
var
|
|
295
|
-
|
|
347
|
+
var UploadPresignedUrlSchema = z5.object({
|
|
348
|
+
fileId: z5.string(),
|
|
349
|
+
original: z5.object({
|
|
350
|
+
uploadUrl: z5.string(),
|
|
351
|
+
key: z5.string(),
|
|
352
|
+
publicUrl: z5.string()
|
|
353
|
+
}),
|
|
354
|
+
resize: z5.object({
|
|
355
|
+
uploadUrl: z5.string(),
|
|
356
|
+
key: z5.string(),
|
|
357
|
+
publicUrl: z5.string()
|
|
358
|
+
})
|
|
359
|
+
});
|
|
360
|
+
var uploadsContract = c5.router(
|
|
361
|
+
{
|
|
362
|
+
generatePresignedUrls: {
|
|
363
|
+
method: "POST",
|
|
364
|
+
path: "/urls",
|
|
365
|
+
body: z5.object({}),
|
|
366
|
+
responses: {
|
|
367
|
+
201: UploadPresignedUrlSchema
|
|
368
|
+
},
|
|
369
|
+
summary: "Generate pre-signed URLs for event image upload",
|
|
370
|
+
metadata: { openApiTags: ["Uploads"], openApiSecurity: [{ bearerAuth: [] }] }
|
|
371
|
+
}
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
pathPrefix: "/v1/uploads"
|
|
375
|
+
}
|
|
376
|
+
);
|
|
377
|
+
|
|
378
|
+
// src/v1/tracking.ts
|
|
379
|
+
import { initContract as initContract6 } from "@ts-rest/core";
|
|
380
|
+
import { z as z6 } from "zod";
|
|
381
|
+
var c6 = initContract6();
|
|
382
|
+
var TrackScanRequestSchema = z6.object({
|
|
383
|
+
platform: z6.string(),
|
|
384
|
+
appVersion: z6.string().optional()
|
|
385
|
+
});
|
|
386
|
+
var TrackScanResponseSchema = z6.object({
|
|
387
|
+
id: z6.string()
|
|
388
|
+
});
|
|
389
|
+
var trackingContract = c6.router({
|
|
390
|
+
scan: {
|
|
391
|
+
method: "POST",
|
|
392
|
+
path: "/v1/tracking/scan",
|
|
393
|
+
body: TrackScanRequestSchema,
|
|
394
|
+
responses: {
|
|
395
|
+
201: TrackScanResponseSchema,
|
|
396
|
+
401: z6.object({ message: z6.string() })
|
|
397
|
+
},
|
|
398
|
+
summary: "Record a successful NFC scan event",
|
|
399
|
+
metadata: { openApiTags: ["Tracking"], openApiSecurity: [{ bearerAuth: [] }] }
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
|
|
403
|
+
// src/v1/config.ts
|
|
404
|
+
import { initContract as initContract7 } from "@ts-rest/core";
|
|
405
|
+
import { z as z7 } from "zod";
|
|
406
|
+
var c7 = initContract7();
|
|
407
|
+
var appConfigContract = c7.router({
|
|
408
|
+
appConfig: {
|
|
409
|
+
method: "GET",
|
|
410
|
+
path: "/v1/config/app",
|
|
411
|
+
responses: {
|
|
412
|
+
200: z7.object({
|
|
413
|
+
demoMode: z7.object({ enabled: z7.boolean() })
|
|
414
|
+
})
|
|
415
|
+
},
|
|
416
|
+
summary: "Get app configuration (public)",
|
|
417
|
+
metadata: { openApiTags: ["Config"], openApiSecurity: [] }
|
|
418
|
+
}
|
|
419
|
+
});
|
|
420
|
+
|
|
421
|
+
// src/index.ts
|
|
422
|
+
var c8 = initContract8();
|
|
423
|
+
var contract = c8.router({
|
|
424
|
+
v1: c8.router({
|
|
296
425
|
auth: authContract,
|
|
297
426
|
events: eventsContract,
|
|
298
427
|
checkin: checkinContract,
|
|
299
|
-
turn: turnContract
|
|
428
|
+
turn: turnContract,
|
|
429
|
+
uploads: uploadsContract,
|
|
430
|
+
tracking: trackingContract,
|
|
431
|
+
config: appConfigContract
|
|
300
432
|
})
|
|
301
433
|
});
|
|
302
434
|
export {
|
|
@@ -306,19 +438,26 @@ export {
|
|
|
306
438
|
CheckinSubmitResponseSchema,
|
|
307
439
|
CreateEventSchema,
|
|
308
440
|
EventDetailResponseSchema,
|
|
441
|
+
EventDiscoverSchema,
|
|
309
442
|
EventPublicInfoSchema,
|
|
310
443
|
EventResponseSchema,
|
|
311
444
|
ParticipantSchema,
|
|
312
445
|
SUPPORTED_FIELDS,
|
|
446
|
+
TrackScanRequestSchema,
|
|
447
|
+
TrackScanResponseSchema,
|
|
313
448
|
TurnCredentialsResponseSchema,
|
|
314
449
|
UpdateEventSchema,
|
|
450
|
+
UploadPresignedUrlSchema,
|
|
315
451
|
VerifyRequestSchema,
|
|
316
452
|
VerifyResponseSchema,
|
|
453
|
+
appConfigContract,
|
|
317
454
|
authContract,
|
|
318
455
|
buildAuthMessage,
|
|
319
456
|
checkinContract,
|
|
320
457
|
contract,
|
|
321
458
|
eventsContract,
|
|
322
|
-
|
|
459
|
+
trackingContract,
|
|
460
|
+
turnContract,
|
|
461
|
+
uploadsContract
|
|
323
462
|
};
|
|
324
463
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/v1/auth.ts","../src/v1/events.ts","../src/v1/checkin.ts","../src/v1/turn.ts"],"sourcesContent":["import { initContract } from '@ts-rest/core';\nimport { authContract } from './v1/auth';\nimport { eventsContract } from './v1/events';\nimport { checkinContract } from './v1/checkin';\nimport { turnContract } from './v1/turn';\n\nexport * from './v1';\n\nconst c = initContract();\n\nexport const contract = c.router({\n v1: c.router({\n auth: authContract,\n events: eventsContract,\n checkin: checkinContract,\n turn: turnContract,\n }),\n});\n\nexport type Contract = typeof contract;\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\n\nconst c = initContract();\n\nexport const AuthScheme = z.enum(['eip191']);\nexport type AuthScheme = z.infer<typeof AuthScheme>;\n\nexport const VerifyRequestSchema = z.object({\n did: z.string().min(1).describe('DID of the authenticating user (e.g. `did:ethr:0xABC...`)'),\n signature: z\n .string()\n .min(1)\n .describe(\n 'Hex signature of the `message` string, produced by the scheme specified in the message',\n ),\n message: z\n .string()\n .min(1)\n .describe(\n 'Canonical JSON string that was signed. Must be `JSON.stringify({ domain, did, issuedAt, scheme })` where `issuedAt` is an ISO-8601 UTC timestamp within the last 60 seconds and `scheme` is the signing scheme used.',\n ),\n});\n\nexport const VerifyResponseSchema = z.object({\n accessToken: z.string(),\n});\n\nexport const authContract = c.router({\n verify: {\n method: 'POST',\n path: '/v1/auth/verify',\n body: VerifyRequestSchema,\n responses: {\n 200: VerifyResponseSchema,\n 400: z.object({ message: z.string() }),\n 401: z.object({ message: z.string() }),\n },\n summary: 'Verify DID signature and receive JWT',\n description: [\n '## Authentication Flow (1-turn)',\n '',\n 'The client constructs a JSON message, signs it with their Ethereum private key, and submits everything in a single request.',\n '',\n '### Crypto Suite',\n '',\n '| Property | Value |',\n '|----------|-------|',\n '| **Signing scheme** | ECDSA secp256k1 (`scheme: \"eip191\"`) |',\n '| **Signature format** | [EIP-191](https://eips.ethereum.org/EIPS/eip-191) `personal_sign` (65-byte `r‖s‖v`, hex-encoded with `0x` prefix) |',\n '| **DID method** | `did:ethr` — the Ethereum address in the DID must match the signer |',\n '| **Message encoding** | UTF-8 JSON string |',\n '',\n '### Steps',\n '',\n '1. **Build the message** — a canonical JSON string:',\n ' ```json',\n ' {\"domain\":\"1Matrix Events\",\"did\":\"did:ethr:0xYOUR_ADDRESS\",\"issuedAt\":\"2026-02-25T12:00:00.000Z\",\"scheme\":\"eip191\"}',\n ' ```',\n ' Use the `buildAuthMessage(did)` helper from `@1mtx/did-api-contract`, or construct it manually.',\n '',\n '2. **Sign the message** using EIP-191 `personal_sign`:',\n ' ```ts',\n ' // ethers.js v6',\n ' const signature = await wallet.signMessage(message);',\n ' ```',\n '',\n '3. **POST** `{ did, signature, message }` to this endpoint.',\n '',\n '### Validation Rules',\n '',\n '- `issuedAt` must be within **60 seconds in the past** or **5 seconds in the future** (clock tolerance).',\n '- `domain` must equal `\"1Matrix Events\"`.',\n '- `did` in the message must match the `did` in the request body.',\n '- `scheme` must be a supported value (currently only `\"eip191\"`).',\n '- No extra JSON keys beyond `domain`, `did`, `issuedAt`, `scheme` are allowed.',\n '',\n '### Error Codes',\n '',\n '| Status | Reason |',\n '|--------|--------|',\n '| `400` | Invalid message format (bad JSON, extra keys, wrong domain) |',\n '| `401` | Message expired, DID mismatch, invalid or non-matching signature |',\n ].join('\\n'),\n metadata: { openApiTags: ['Auth'] },\n },\n});\n\n/**\n * Builds the canonical JSON string to be signed by the client.\n *\n * Usage:\n * const message = buildAuthMessage(did);\n * const signature = await wallet.signMessage(message);\n * // POST /v1/auth/verify { did, signature, message }\n */\nexport function buildAuthMessage(\n did: string,\n scheme: AuthScheme = 'eip191',\n domain = '1Matrix Events',\n issuedAt: string = new Date().toISOString(),\n): string {\n return JSON.stringify({ domain, did, issuedAt, scheme });\n}\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\n\nconst c = initContract();\n\nexport const SUPPORTED_FIELDS = [\n 'fullName',\n 'age',\n 'portrait',\n 'gender',\n 'nationality',\n 'address',\n 'idNumber',\n] as const;\n\nexport type SupportedField = (typeof SUPPORTED_FIELDS)[number];\n\nexport const CreateEventSchema = z.object({\n name: z.string().min(1).max(255),\n coverImageUrl: z.string().url().optional(),\n description: z.string().optional(),\n maxGuests: z.number().int().positive(),\n dateTime: z.string().datetime(),\n requestedFields: z.array(z.enum(SUPPORTED_FIELDS)).min(1),\n});\n\nexport const UpdateEventSchema = z.object({\n name: z.string().min(1).max(255).optional(),\n coverImageUrl: z.string().url().nullable().optional(),\n description: z.string().nullable().optional(),\n maxGuests: z.number().int().positive().optional(),\n dateTime: z.string().datetime().optional(),\n status: z.enum(['ACTIVE', 'CANCELLED', 'COMPLETED']).optional(),\n});\n\nexport const ParticipantSchema = z.object({\n id: z.string(),\n holderDid: z.string(),\n disclosedFields: z.record(z.unknown()),\n checkedInAt: z.string(),\n});\n\nexport const EventResponseSchema = z.object({\n id: z.string(),\n name: z.string(),\n coverImageUrl: z.string().nullable(),\n description: z.string().nullable(),\n maxGuests: z.number(),\n dateTime: z.string(),\n userId: z.string(),\n requestedFields: z.array(z.string()),\n status: z.enum(['ACTIVE', 'CANCELLED', 'COMPLETED']),\n participantCount: z.number(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nexport const EventDetailResponseSchema = EventResponseSchema.extend({\n participants: z.array(ParticipantSchema),\n vpRequest: z.record(z.unknown()),\n});\n\nconst SECURITY = [{ bearerAuth: [] }];\n\nexport const eventsContract = c.router({\n create: {\n method: 'POST',\n path: '/v1/events',\n body: CreateEventSchema,\n responses: {\n 201: EventResponseSchema,\n 400: z.object({ message: z.string() }),\n 401: z.object({ message: z.string() }),\n },\n summary: 'Create a new event (organiser only)',\n metadata: { openApiTags: ['Events'], openApiSecurity: SECURITY },\n },\n list: {\n method: 'GET',\n path: '/v1/events',\n responses: {\n 200: z.array(EventResponseSchema),\n 401: z.object({ message: z.string() }),\n },\n summary: \"List authenticated organiser's events\",\n metadata: { openApiTags: ['Events'], openApiSecurity: SECURITY },\n },\n getById: {\n method: 'GET',\n path: '/v1/events/:id',\n responses: {\n 200: EventDetailResponseSchema,\n 401: z.object({ message: z.string() }),\n 403: z.object({ message: z.string() }),\n 404: z.object({ message: z.string() }),\n },\n summary: 'Get event details including participants (organiser only)',\n metadata: { openApiTags: ['Events'], openApiSecurity: SECURITY },\n },\n update: {\n method: 'PATCH',\n path: '/v1/events/:id',\n body: UpdateEventSchema,\n responses: {\n 200: EventResponseSchema,\n 400: z.object({ message: z.string() }),\n 401: z.object({ message: z.string() }),\n 403: z.object({ message: z.string() }),\n 404: z.object({ message: z.string() }),\n },\n summary: 'Update event fields (organiser only)',\n metadata: { openApiTags: ['Events'], openApiSecurity: SECURITY },\n },\n delete: {\n method: 'DELETE',\n path: '/v1/events/:id',\n body: c.noBody(),\n responses: {\n 204: z.undefined(),\n 401: z.object({ message: z.string() }),\n 403: z.object({ message: z.string() }),\n 404: z.object({ message: z.string() }),\n },\n summary: 'Delete event and all related data (organiser only)',\n metadata: { openApiTags: ['Events'], openApiSecurity: SECURITY },\n },\n getCredentials: {\n method: 'GET',\n path: '/v1/events/:id/credentials',\n responses: {\n 200: z.array(z.record(z.unknown())),\n 401: z.object({ message: z.string() }),\n 403: z.object({ message: z.string() }),\n 404: z.object({ message: z.string() }),\n },\n summary: 'List issued VCs for event (organiser only)',\n metadata: { openApiTags: ['Events'], openApiSecurity: SECURITY },\n },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\n\nconst c = initContract();\n\nexport const EventPublicInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n coverImageUrl: z.string().nullable(),\n description: z.string().nullable(),\n maxGuests: z.number(),\n dateTime: z.string(),\n currentGuests: z.number(),\n status: z.enum(['ACTIVE', 'CANCELLED', 'COMPLETED']),\n});\n\nexport const CheckinInfoResponseSchema = z.object({\n event: EventPublicInfoSchema,\n vpRequest: z.record(z.unknown()),\n});\n\nexport const CheckinSubmitRequestSchema = z.object({\n verifiablePresentation: z.record(z.unknown()),\n});\n\nexport const CheckinSubmitResponseSchema = z.object({\n success: z.literal(true),\n credential: z.record(z.unknown()),\n});\n\nexport const checkinContract = c.router({\n info: {\n method: 'GET',\n path: '/v1/checkin/:eventId/info',\n responses: {\n 200: CheckinInfoResponseSchema,\n 400: z.object({ message: z.string() }),\n 404: z.object({ message: z.string() }),\n },\n summary: 'Get event info and VP request for check-in (public)',\n metadata: { openApiTags: ['Check-in'] },\n },\n submit: {\n method: 'POST',\n path: '/v1/checkin/:eventId/submit',\n body: CheckinSubmitRequestSchema,\n responses: {\n 200: CheckinSubmitResponseSchema,\n 400: z.object({ message: z.string(), errors: z.array(z.string()).optional() }),\n 404: z.object({ message: z.string() }),\n 409: z.object({ message: z.string() }),\n },\n summary: 'Submit VP for event check-in — issues participation VC on success (public)',\n metadata: { openApiTags: ['Check-in'] },\n },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\n\nconst c = initContract();\n\nconst IceServerSchema = z.object({\n urls: z.union([z.string(), z.array(z.string())]),\n username: z.string().optional(),\n credential: z.string().optional(),\n});\n\nexport const TurnCredentialsResponseSchema = z.object({\n iceServers: z.array(IceServerSchema),\n});\n\nexport const turnContract = c.router({\n credentials: {\n method: 'GET',\n path: '/v1/turn/credentials',\n responses: {\n 200: TurnCredentialsResponseSchema,\n 401: z.object({ message: z.string() }),\n 502: z.object({ message: z.string() }),\n },\n summary: 'Get Cloudflare TURN credentials for WebRTC (authenticated)',\n metadata: { openApiTags: ['TURN'] },\n },\n});\n"],"mappings":"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","names":["initContract","initContract","z","c","initContract","z","c","initContract","z","c","c","initContract"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/v1/auth.ts","../src/v1/events.ts","../src/v1/checkin.ts","../src/v1/turn.ts","../src/v1/uploads.ts","../src/v1/tracking.ts","../src/v1/config.ts"],"sourcesContent":["import { initContract } from '@ts-rest/core';\nimport { authContract } from './v1/auth';\nimport { eventsContract } from './v1/events';\nimport { checkinContract } from './v1/checkin';\nimport { turnContract } from './v1/turn';\nimport { uploadsContract } from './v1/uploads';\nimport { trackingContract } from './v1/tracking';\nimport { appConfigContract } from './v1/config';\n\nexport * from './v1';\n\nconst c = initContract();\n\nexport const contract = c.router({\n v1: c.router({\n auth: authContract,\n events: eventsContract,\n checkin: checkinContract,\n turn: turnContract,\n uploads: uploadsContract,\n tracking: trackingContract,\n config: appConfigContract,\n }),\n});\n\nexport type Contract = typeof contract;\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\n\nconst c = initContract();\n\nexport const AuthScheme = z.enum(['eip191']);\nexport type AuthScheme = z.infer<typeof AuthScheme>;\n\nexport const VerifyRequestSchema = z.object({\n did: z.string().min(1).describe('DID of the authenticating user (e.g. `did:ethr:0xABC...`)'),\n signature: z\n .string()\n .min(1)\n .describe(\n 'Hex signature of the `message` string, produced by the scheme specified in the message',\n ),\n message: z\n .string()\n .min(1)\n .describe(\n 'Canonical JSON string that was signed. Must be `JSON.stringify({ domain, did, issuedAt, scheme })` where `issuedAt` is an ISO-8601 UTC timestamp within the last 60 seconds and `scheme` is the signing scheme used.',\n ),\n});\n\nexport const VerifyResponseSchema = z.object({\n accessToken: z.string(),\n});\n\nexport const authContract = c.router({\n verify: {\n method: 'POST',\n path: '/v1/auth/verify',\n body: VerifyRequestSchema,\n responses: {\n 200: VerifyResponseSchema,\n 400: z.object({ message: z.string() }),\n 401: z.object({ message: z.string() }),\n },\n summary: 'Verify DID signature and receive JWT',\n description: [\n '## Authentication Flow (1-turn)',\n '',\n 'The client constructs a JSON message, signs it with their Ethereum private key, and submits everything in a single request.',\n '',\n '### Crypto Suite',\n '',\n '| Property | Value |',\n '|----------|-------|',\n '| **Signing scheme** | ECDSA secp256k1 (`scheme: \"eip191\"`) |',\n '| **Signature format** | [EIP-191](https://eips.ethereum.org/EIPS/eip-191) `personal_sign` (65-byte `r‖s‖v`, hex-encoded with `0x` prefix) |',\n '| **DID method** | `did:ethr` — the Ethereum address in the DID must match the signer |',\n '| **Message encoding** | UTF-8 JSON string |',\n '',\n '### Steps',\n '',\n '1. **Build the message** — a canonical JSON string:',\n ' ```json',\n ' {\"domain\":\"1Matrix Events\",\"did\":\"did:ethr:0xYOUR_ADDRESS\",\"issuedAt\":\"2026-02-25T12:00:00.000Z\",\"scheme\":\"eip191\"}',\n ' ```',\n ' Use the `buildAuthMessage(did)` helper from `@1mtx/did-api-contract`, or construct it manually.',\n '',\n '2. **Sign the message** using EIP-191 `personal_sign`:',\n ' ```ts',\n ' // ethers.js v6',\n ' const signature = await wallet.signMessage(message);',\n ' ```',\n '',\n '3. **POST** `{ did, signature, message }` to this endpoint.',\n '',\n '### Validation Rules',\n '',\n '- `issuedAt` must be within **60 seconds in the past** or **5 seconds in the future** (clock tolerance).',\n '- `domain` must equal `\"1Matrix Events\"`.',\n '- `did` in the message must match the `did` in the request body.',\n '- `scheme` must be a supported value (currently only `\"eip191\"`).',\n '- No extra JSON keys beyond `domain`, `did`, `issuedAt`, `scheme` are allowed.',\n '',\n '### Error Codes',\n '',\n '| Status | Reason |',\n '|--------|--------|',\n '| `400` | Invalid message format (bad JSON, extra keys, wrong domain) |',\n '| `401` | Message expired, DID mismatch, invalid or non-matching signature |',\n ].join('\\n'),\n metadata: { openApiTags: ['Auth'], openApiSecurity: [] },\n },\n});\n\n/**\n * Builds the canonical JSON string to be signed by the client.\n *\n * Usage:\n * const message = buildAuthMessage(did);\n * const signature = await wallet.signMessage(message);\n * // POST /v1/auth/verify { did, signature, message }\n */\nexport function buildAuthMessage(\n did: string,\n scheme: AuthScheme = 'eip191',\n domain = '1Matrix Events',\n issuedAt: string = new Date().toISOString(),\n): string {\n return JSON.stringify({ domain, did, issuedAt, scheme });\n}\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\n\nconst c = initContract();\n\nexport const SUPPORTED_FIELDS = [\n 'documentNumber',\n 'fullName',\n 'dateOfBirth',\n 'gender',\n 'nationality',\n 'ethnicity',\n 'hometown',\n 'permanentAddress',\n 'identifyingMarks',\n 'issueDate',\n 'expiryDate',\n 'fatherName',\n 'motherName',\n 'photo',\n] as const;\n\nexport type SupportedField = (typeof SUPPORTED_FIELDS)[number];\n\nexport const CreateEventSchema = z.object({\n name: z.string().min(1).max(255).describe('Tên sự kiện'),\n coverImageId: z.string().optional().describe('ID ảnh bìa sự kiện'),\n description: z.string().optional().describe('Mô tả sự kiện'),\n maxGuests: z.number().int().positive().describe('Số lượng khách tối đa'),\n startDateTime: z.string().datetime().describe('Thời gian bắt đầu sự kiện'),\n endDateTime: z.string().datetime().describe('Thời gian kết thúc sự kiện'),\n requestedFields: z.array(z.enum(SUPPORTED_FIELDS)).min(1).describe('Các trường dữ liệu yêu cầu xác thực'),\n});\n\nexport const UpdateEventSchema = z.object({\n name: z.string().min(1).max(255).optional(),\n coverImageId: z.string().nullable().optional(),\n description: z.string().nullable().optional(),\n maxGuests: z.number().int().positive().optional(),\n startDateTime: z.string().datetime().optional(),\n endDateTime: z.string().datetime().optional(),\n status: z.enum(['ACTIVE', 'CANCELLED', 'COMPLETED']).optional(),\n});\n\nexport const ParticipantSchema = z.object({\n id: z.string(),\n holderDid: z.string(),\n disclosedFields: z.record(z.unknown()),\n checkedInAt: z.string(),\n});\n\nexport const EventResponseSchema = z.object({\n id: z.string(),\n name: z.string(),\n coverImageUrl: z.string().nullable(),\n thumbnailUrl: z.string().nullable(),\n description: z.string().nullable(),\n maxGuests: z.number(),\n startDateTime: z.string(),\n endDateTime: z.string().nullable(),\n userId: z.string(),\n requestedFields: z.array(z.string()),\n status: z.enum(['ACTIVE', 'CANCELLED', 'COMPLETED']),\n participantCount: z.number(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nexport const EventDetailResponseSchema = EventResponseSchema.extend({\n participants: z.array(ParticipantSchema),\n vpRequest: z.record(z.unknown()),\n});\n\nexport const EventDiscoverSchema = z.object({\n id: z.string(),\n name: z.string(),\n coverImageUrl: z.string().nullable(),\n thumbnailUrl: z.string().nullable(),\n description: z.string().nullable(),\n startDateTime: z.string(),\n endDateTime: z.string().nullable(),\n participantCount: z.number(),\n});\n\nconst SECURITY = [{ bearerAuth: [] }];\n\nexport const eventsContract = c.router({\n discover: {\n method: 'GET',\n path: '/v1/events/public/discover',\n responses: {\n 200: z.array(EventDiscoverSchema),\n },\n summary: 'List public events for discovery (public)',\n metadata: { openApiTags: ['Events'], openApiSecurity: [] },\n },\n create: {\n method: 'POST',\n path: '/v1/events',\n body: CreateEventSchema,\n responses: {\n 201: EventResponseSchema,\n 400: z.object({ message: z.string() }),\n 401: z.object({ message: z.string() }),\n },\n summary: 'Create a new event (organiser only)',\n metadata: { openApiTags: ['Events'], openApiSecurity: SECURITY },\n },\n list: {\n method: 'GET',\n path: '/v1/events',\n responses: {\n 200: z.array(EventResponseSchema),\n 401: z.object({ message: z.string() }),\n },\n summary: \"List authenticated organiser's events\",\n metadata: { openApiTags: ['Events'], openApiSecurity: SECURITY },\n },\n getById: {\n method: 'GET',\n path: '/v1/events/:id',\n responses: {\n 200: EventDetailResponseSchema,\n 401: z.object({ message: z.string() }),\n 403: z.object({ message: z.string() }),\n 404: z.object({ message: z.string() }),\n },\n summary: 'Get event details including participants (organiser only)',\n metadata: { openApiTags: ['Events'], openApiSecurity: SECURITY },\n },\n update: {\n method: 'PATCH',\n path: '/v1/events/:id',\n body: UpdateEventSchema,\n responses: {\n 200: EventResponseSchema,\n 400: z.object({ message: z.string() }),\n 401: z.object({ message: z.string() }),\n 403: z.object({ message: z.string() }),\n 404: z.object({ message: z.string() }),\n },\n summary: 'Update event fields (organiser only)',\n metadata: { openApiTags: ['Events'], openApiSecurity: SECURITY },\n },\n delete: {\n method: 'DELETE',\n path: '/v1/events/:id',\n body: c.noBody(),\n responses: {\n 204: z.undefined(),\n 401: z.object({ message: z.string() }),\n 403: z.object({ message: z.string() }),\n 404: z.object({ message: z.string() }),\n },\n summary: 'Delete event and all related data (organiser only)',\n metadata: { openApiTags: ['Events'], openApiSecurity: SECURITY },\n },\n getCredentials: {\n method: 'GET',\n path: '/v1/events/:id/credentials',\n responses: {\n 200: z.array(z.record(z.unknown())),\n 401: z.object({ message: z.string() }),\n 403: z.object({ message: z.string() }),\n 404: z.object({ message: z.string() }),\n },\n summary: 'List issued VCs for event (organiser only)',\n metadata: { openApiTags: ['Events'], openApiSecurity: SECURITY },\n },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\n\nconst c = initContract();\n\nexport const EventPublicInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n coverImageUrl: z.string().nullable(),\n thumbnailUrl: z.string().nullable(),\n description: z.string().nullable(),\n maxGuests: z.number(),\n startDateTime: z.string(),\n endDateTime: z.string().nullable(),\n currentGuests: z.number(),\n status: z.enum(['ACTIVE', 'CANCELLED', 'COMPLETED']),\n});\n\nexport const CheckinInfoResponseSchema = z.object({\n event: EventPublicInfoSchema,\n vpRequest: z.record(z.unknown()),\n});\n\nexport const CheckinSubmitRequestSchema = z.object({\n verifiablePresentation: z.record(z.unknown()),\n});\n\nexport const CheckinSubmitResponseSchema = z.object({\n success: z.literal(true),\n credential: z.record(z.unknown()),\n});\n\nexport const checkinContract = c.router({\n info: {\n method: 'GET',\n path: '/v1/checkin/:eventId/info',\n responses: {\n 200: CheckinInfoResponseSchema,\n 400: z.object({ message: z.string() }),\n 404: z.object({ message: z.string() }),\n },\n summary: 'Get event info and VP request for check-in (public)',\n metadata: { openApiTags: ['Check-in'], openApiSecurity: [] },\n },\n submit: {\n method: 'POST',\n path: '/v1/checkin/:eventId/submit',\n body: CheckinSubmitRequestSchema,\n responses: {\n 200: CheckinSubmitResponseSchema,\n 400: z.object({ message: z.string(), errors: z.array(z.string()).optional() }),\n 401: z.object({ message: z.string() }),\n 404: z.object({ message: z.string() }),\n 409: z.object({ message: z.string() }),\n },\n summary: 'Submit VP for event check-in — issues participation VC on success',\n metadata: { openApiTags: ['Check-in'], openApiSecurity: [{ bearerAuth: [] }] },\n },\n myCheckins: {\n method: 'GET',\n path: '/v1/checkin/my',\n responses: {\n 200: z.array(\n z.object({\n id: z.string(),\n eventId: z.string(),\n checkedInAt: z.string(),\n disclosedFields: z.record(z.unknown()),\n event: EventPublicInfoSchema,\n }),\n ),\n 401: z.object({ message: z.string() }),\n },\n summary: 'List authenticated user check-ins',\n metadata: { openApiTags: ['Check-in'], openApiSecurity: [{ bearerAuth: [] }] },\n },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\n\nconst c = initContract();\n\nconst IceServerSchema = z.object({\n urls: z.union([z.string(), z.array(z.string())]),\n username: z.string().optional(),\n credential: z.string().optional(),\n});\n\nexport const TurnCredentialsResponseSchema = z.object({\n iceServers: z.array(IceServerSchema),\n});\n\nexport const turnContract = c.router({\n credentials: {\n method: 'GET',\n path: '/v1/turn/credentials',\n responses: {\n 200: TurnCredentialsResponseSchema,\n 401: z.object({ message: z.string() }),\n 502: z.object({ message: z.string() }),\n },\n summary: 'Get Cloudflare TURN credentials for WebRTC (authenticated)',\n metadata: { openApiTags: ['TURN'] },\n },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\n\nconst c = initContract();\n\nexport const UploadPresignedUrlSchema = z.object({\n fileId: z.string(),\n original: z.object({\n uploadUrl: z.string(),\n key: z.string(),\n publicUrl: z.string(),\n }),\n resize: z.object({\n uploadUrl: z.string(),\n key: z.string(),\n publicUrl: z.string(),\n }),\n});\n\nexport const uploadsContract = c.router(\n {\n generatePresignedUrls: {\n method: 'POST',\n path: '/urls',\n body: z.object({}),\n responses: {\n 201: UploadPresignedUrlSchema,\n },\n summary: 'Generate pre-signed URLs for event image upload',\n metadata: { openApiTags: ['Uploads'], openApiSecurity: [{ bearerAuth: [] }] },\n },\n },\n {\n pathPrefix: '/v1/uploads',\n },\n);\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\n\nconst c = initContract();\n\nexport const TrackScanRequestSchema = z.object({\n platform: z.string(),\n appVersion: z.string().optional(),\n});\n\nexport const TrackScanResponseSchema = z.object({\n id: z.string(),\n});\n\nexport const trackingContract = c.router({\n scan: {\n method: 'POST',\n path: '/v1/tracking/scan',\n body: TrackScanRequestSchema,\n responses: {\n 201: TrackScanResponseSchema,\n 401: z.object({ message: z.string() }),\n },\n summary: 'Record a successful NFC scan event',\n metadata: { openApiTags: ['Tracking'], openApiSecurity: [{ bearerAuth: [] }] },\n },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\n\nconst c = initContract();\n\nexport const appConfigContract = c.router({\n appConfig: {\n method: 'GET',\n path: '/v1/config/app',\n responses: {\n 200: z.object({\n demoMode: z.object({ enabled: z.boolean() }),\n }),\n },\n summary: 'Get app configuration (public)',\n metadata: { openApiTags: ['Config'], openApiSecurity: [] },\n },\n});\n"],"mappings":"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","names":["initContract","initContract","z","c","initContract","z","c","initContract","z","c","initContract","z","c","initContract","z","c","initContract","z","c","c","initContract"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@1mtx/did-api-contract",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Type-safe API contract for the 1matrix DID platform",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
],
|
|
11
11
|
"exports": {
|
|
12
12
|
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
13
14
|
"import": "./dist/index.mjs",
|
|
14
|
-
"require": "./dist/index.js"
|
|
15
|
-
"types": "./dist/index.d.ts"
|
|
15
|
+
"require": "./dist/index.js"
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"publishConfig": {
|
|
@@ -32,4 +32,4 @@
|
|
|
32
32
|
"tsup": "^8.3.5",
|
|
33
33
|
"typescript": "^5.6.3"
|
|
34
34
|
}
|
|
35
|
-
}
|
|
35
|
+
}
|