@1mtx/did-api-contract 1.1.0 → 1.1.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/dist/index.d.mts +3139 -103
- package/dist/index.d.ts +3139 -103
- package/dist/index.js +346 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +330 -8
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
import { initContract as
|
|
2
|
+
import { initContract as initContract9 } from "@ts-rest/core";
|
|
3
3
|
|
|
4
4
|
// src/v1/auth.ts
|
|
5
5
|
import { initContract } from "@ts-rest/core";
|
|
@@ -7,7 +7,7 @@ import { z } from "zod";
|
|
|
7
7
|
var c = initContract();
|
|
8
8
|
var AuthScheme = z.enum(["eip191"]);
|
|
9
9
|
var VerifyRequestSchema = z.object({
|
|
10
|
-
did: z.string().min(1).describe("DID of the authenticating user (e.g. `did:ethr:0xABC...`)"),
|
|
10
|
+
did: z.string().min(1).describe("DID of the authenticating user (e.g. `did:ethr:0xABC...` or `did:vbsn:0xABC...`)"),
|
|
11
11
|
signature: z.string().min(1).describe(
|
|
12
12
|
"Hex signature of the `message` string, produced by the scheme specified in the message"
|
|
13
13
|
),
|
|
@@ -40,7 +40,7 @@ var authContract = c.router({
|
|
|
40
40
|
"|----------|-------|",
|
|
41
41
|
'| **Signing scheme** | ECDSA secp256k1 (`scheme: "eip191"`) |',
|
|
42
42
|
"| **Signature format** | [EIP-191](https://eips.ethereum.org/EIPS/eip-191) `personal_sign` (65-byte `r\u2016s\u2016v`, hex-encoded with `0x` prefix) |",
|
|
43
|
-
"| **DID method** | `did:ethr` \u2014 the Ethereum address in the DID must match the signer |",
|
|
43
|
+
"| **DID method** | `did:ethr` or `did:vbsn` \u2014 the Ethereum address in the DID must match the signer |",
|
|
44
44
|
"| **Message encoding** | UTF-8 JSON string |",
|
|
45
45
|
"",
|
|
46
46
|
"### Steps",
|
|
@@ -410,7 +410,8 @@ var appConfigContract = c7.router({
|
|
|
410
410
|
path: "/v1/config/app",
|
|
411
411
|
responses: {
|
|
412
412
|
200: z7.object({
|
|
413
|
-
demoMode: z7.object({ enabled: z7.boolean() })
|
|
413
|
+
demoMode: z7.object({ enabled: z7.boolean() }),
|
|
414
|
+
publicEvents: z7.object({ enabled: z7.boolean() })
|
|
414
415
|
})
|
|
415
416
|
},
|
|
416
417
|
summary: "Get app configuration (public)",
|
|
@@ -418,17 +419,322 @@ var appConfigContract = c7.router({
|
|
|
418
419
|
}
|
|
419
420
|
});
|
|
420
421
|
|
|
421
|
-
// src/
|
|
422
|
+
// src/v1/organisations.ts
|
|
423
|
+
import { initContract as initContract8 } from "@ts-rest/core";
|
|
424
|
+
import { z as z8 } from "zod";
|
|
422
425
|
var c8 = initContract8();
|
|
423
|
-
var
|
|
424
|
-
|
|
426
|
+
var SECURITY2 = [{ bearerAuth: [] }];
|
|
427
|
+
var CreateOrganisationSchema = z8.object({
|
|
428
|
+
name: z8.string().min(1).max(255),
|
|
429
|
+
description: z8.string().optional(),
|
|
430
|
+
verifiablePresentation: z8.record(z8.unknown())
|
|
431
|
+
});
|
|
432
|
+
var UpdateOrganisationSchema = z8.object({
|
|
433
|
+
name: z8.string().min(1).max(255).optional(),
|
|
434
|
+
description: z8.string().nullable().optional(),
|
|
435
|
+
avatarUrl: z8.string().nullable().optional()
|
|
436
|
+
});
|
|
437
|
+
var OrgResponseSchema = z8.object({
|
|
438
|
+
id: z8.string(),
|
|
439
|
+
name: z8.string(),
|
|
440
|
+
description: z8.string().nullable(),
|
|
441
|
+
avatarUrl: z8.string().nullable(),
|
|
442
|
+
didUri: z8.string().nullable(),
|
|
443
|
+
memberCount: z8.number(),
|
|
444
|
+
createdAt: z8.string(),
|
|
445
|
+
updatedAt: z8.string()
|
|
446
|
+
});
|
|
447
|
+
var OrgListItemSchema = OrgResponseSchema.extend({
|
|
448
|
+
role: z8.enum(["OWNER", "ADMIN", "ISSUER", "MEMBER"])
|
|
449
|
+
});
|
|
450
|
+
var OrgDetailResponseSchema = OrgListItemSchema.extend({
|
|
451
|
+
members: z8.array(z8.object({
|
|
452
|
+
id: z8.string(),
|
|
453
|
+
userId: z8.string(),
|
|
454
|
+
displayName: z8.string().nullable(),
|
|
455
|
+
role: z8.enum(["OWNER", "ADMIN", "ISSUER", "MEMBER"]),
|
|
456
|
+
joinedAt: z8.string()
|
|
457
|
+
}))
|
|
458
|
+
});
|
|
459
|
+
var MemberResponseSchema = z8.object({
|
|
460
|
+
id: z8.string(),
|
|
461
|
+
userId: z8.string(),
|
|
462
|
+
displayName: z8.string().nullable(),
|
|
463
|
+
role: z8.enum(["OWNER", "ADMIN", "ISSUER", "MEMBER"]),
|
|
464
|
+
joinedAt: z8.string()
|
|
465
|
+
});
|
|
466
|
+
var UpdateMemberRoleSchema = z8.object({
|
|
467
|
+
role: z8.enum(["ADMIN", "ISSUER", "MEMBER"])
|
|
468
|
+
});
|
|
469
|
+
var CreateInvitationSchema = z8.object({
|
|
470
|
+
expiresInDays: z8.number().int().positive().default(7).optional()
|
|
471
|
+
});
|
|
472
|
+
var InvitationResponseSchema = z8.object({
|
|
473
|
+
id: z8.string(),
|
|
474
|
+
orgId: z8.string(),
|
|
475
|
+
orgName: z8.string(),
|
|
476
|
+
token: z8.string(),
|
|
477
|
+
status: z8.enum(["PENDING", "SUBMITTED", "ACCEPTED", "DECLINED", "EXPIRED"]),
|
|
478
|
+
inviteeDisplayName: z8.string().nullable(),
|
|
479
|
+
createdAt: z8.string(),
|
|
480
|
+
expiresAt: z8.string()
|
|
481
|
+
});
|
|
482
|
+
var JoinInvitationSchema = z8.object({
|
|
483
|
+
verifiablePresentation: z8.record(z8.unknown())
|
|
484
|
+
});
|
|
485
|
+
var IssueVCSchema = z8.object({
|
|
486
|
+
holderDid: z8.string(),
|
|
487
|
+
credentialSubject: z8.record(z8.unknown()),
|
|
488
|
+
type: z8.array(z8.string()).optional()
|
|
489
|
+
});
|
|
490
|
+
var ErrorSchema = z8.object({ message: z8.string() });
|
|
491
|
+
var VpRequestResponseSchema = z8.object({
|
|
492
|
+
vpRequest: z8.record(z8.unknown()),
|
|
493
|
+
expiresAt: z8.string()
|
|
494
|
+
});
|
|
495
|
+
var orgCrudContract = c8.router({
|
|
496
|
+
createVpRequest: {
|
|
497
|
+
method: "POST",
|
|
498
|
+
path: "/v1/organisations/vp-request",
|
|
499
|
+
body: z8.object({}),
|
|
500
|
+
responses: {
|
|
501
|
+
200: VpRequestResponseSchema,
|
|
502
|
+
401: ErrorSchema
|
|
503
|
+
},
|
|
504
|
+
summary: "Get VP request for creating an organisation",
|
|
505
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
506
|
+
},
|
|
507
|
+
create: {
|
|
508
|
+
method: "POST",
|
|
509
|
+
path: "/v1/organisations",
|
|
510
|
+
body: CreateOrganisationSchema,
|
|
511
|
+
responses: {
|
|
512
|
+
201: OrgResponseSchema,
|
|
513
|
+
400: ErrorSchema,
|
|
514
|
+
401: ErrorSchema
|
|
515
|
+
},
|
|
516
|
+
summary: "Create a new organisation (requires CCCD VP)",
|
|
517
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
518
|
+
},
|
|
519
|
+
list: {
|
|
520
|
+
method: "GET",
|
|
521
|
+
path: "/v1/organisations",
|
|
522
|
+
responses: {
|
|
523
|
+
200: z8.array(OrgListItemSchema),
|
|
524
|
+
401: ErrorSchema
|
|
525
|
+
},
|
|
526
|
+
summary: "List user's organisations",
|
|
527
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
528
|
+
},
|
|
529
|
+
getById: {
|
|
530
|
+
method: "GET",
|
|
531
|
+
path: "/v1/organisations/:orgId",
|
|
532
|
+
responses: {
|
|
533
|
+
200: OrgDetailResponseSchema,
|
|
534
|
+
401: ErrorSchema,
|
|
535
|
+
403: ErrorSchema,
|
|
536
|
+
404: ErrorSchema
|
|
537
|
+
},
|
|
538
|
+
summary: "Get organisation details (members only)",
|
|
539
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
540
|
+
},
|
|
541
|
+
update: {
|
|
542
|
+
method: "PATCH",
|
|
543
|
+
path: "/v1/organisations/:orgId",
|
|
544
|
+
body: UpdateOrganisationSchema,
|
|
545
|
+
responses: {
|
|
546
|
+
200: OrgResponseSchema,
|
|
547
|
+
400: ErrorSchema,
|
|
548
|
+
401: ErrorSchema,
|
|
549
|
+
403: ErrorSchema,
|
|
550
|
+
404: ErrorSchema
|
|
551
|
+
},
|
|
552
|
+
summary: "Update organisation details (owner/admin only)",
|
|
553
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
554
|
+
},
|
|
555
|
+
delete: {
|
|
556
|
+
method: "DELETE",
|
|
557
|
+
path: "/v1/organisations/:orgId",
|
|
558
|
+
body: c8.noBody(),
|
|
559
|
+
responses: {
|
|
560
|
+
204: z8.undefined(),
|
|
561
|
+
401: ErrorSchema,
|
|
562
|
+
403: ErrorSchema,
|
|
563
|
+
404: ErrorSchema
|
|
564
|
+
},
|
|
565
|
+
summary: "Delete organisation (owner only)",
|
|
566
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
567
|
+
}
|
|
568
|
+
});
|
|
569
|
+
var orgMembersContract = c8.router({
|
|
570
|
+
listMembers: {
|
|
571
|
+
method: "GET",
|
|
572
|
+
path: "/v1/organisations/:orgId/members",
|
|
573
|
+
responses: {
|
|
574
|
+
200: z8.array(MemberResponseSchema),
|
|
575
|
+
401: ErrorSchema,
|
|
576
|
+
403: ErrorSchema
|
|
577
|
+
},
|
|
578
|
+
summary: "List organisation members",
|
|
579
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
580
|
+
},
|
|
581
|
+
updateMemberRole: {
|
|
582
|
+
method: "PATCH",
|
|
583
|
+
path: "/v1/organisations/:orgId/members/:memberId",
|
|
584
|
+
body: UpdateMemberRoleSchema,
|
|
585
|
+
responses: {
|
|
586
|
+
200: MemberResponseSchema,
|
|
587
|
+
400: ErrorSchema,
|
|
588
|
+
401: ErrorSchema,
|
|
589
|
+
403: ErrorSchema,
|
|
590
|
+
404: ErrorSchema
|
|
591
|
+
},
|
|
592
|
+
summary: "Update member role (owner/admin only)",
|
|
593
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
594
|
+
},
|
|
595
|
+
removeMember: {
|
|
596
|
+
method: "DELETE",
|
|
597
|
+
path: "/v1/organisations/:orgId/members/:memberId",
|
|
598
|
+
body: c8.noBody(),
|
|
599
|
+
responses: {
|
|
600
|
+
204: z8.undefined(),
|
|
601
|
+
400: ErrorSchema,
|
|
602
|
+
401: ErrorSchema,
|
|
603
|
+
403: ErrorSchema,
|
|
604
|
+
404: ErrorSchema
|
|
605
|
+
},
|
|
606
|
+
summary: "Remove member from organisation (owner/admin only)",
|
|
607
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
608
|
+
}
|
|
609
|
+
});
|
|
610
|
+
var orgInvitationsContract = c8.router({
|
|
611
|
+
createInvitation: {
|
|
612
|
+
method: "POST",
|
|
613
|
+
path: "/v1/organisations/:orgId/invitations",
|
|
614
|
+
body: CreateInvitationSchema,
|
|
615
|
+
responses: {
|
|
616
|
+
201: InvitationResponseSchema,
|
|
617
|
+
401: ErrorSchema,
|
|
618
|
+
403: ErrorSchema
|
|
619
|
+
},
|
|
620
|
+
summary: "Create invitation (owner/admin only)",
|
|
621
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
622
|
+
},
|
|
623
|
+
listInvitations: {
|
|
624
|
+
method: "GET",
|
|
625
|
+
path: "/v1/organisations/:orgId/invitations",
|
|
626
|
+
responses: {
|
|
627
|
+
200: z8.array(InvitationResponseSchema),
|
|
628
|
+
401: ErrorSchema,
|
|
629
|
+
403: ErrorSchema
|
|
630
|
+
},
|
|
631
|
+
summary: "List pending invitations (owner/admin only)",
|
|
632
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
633
|
+
},
|
|
634
|
+
joinVpRequest: {
|
|
635
|
+
method: "POST",
|
|
636
|
+
path: "/v1/organisations/invitations/:token/vp-request",
|
|
637
|
+
body: z8.object({}),
|
|
638
|
+
responses: {
|
|
639
|
+
200: VpRequestResponseSchema,
|
|
640
|
+
401: ErrorSchema,
|
|
641
|
+
404: ErrorSchema,
|
|
642
|
+
410: ErrorSchema
|
|
643
|
+
},
|
|
644
|
+
summary: "Get VP request for joining via invitation",
|
|
645
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
646
|
+
},
|
|
647
|
+
joinInvitation: {
|
|
648
|
+
method: "POST",
|
|
649
|
+
path: "/v1/organisations/invitations/:token/join",
|
|
650
|
+
body: JoinInvitationSchema,
|
|
651
|
+
responses: {
|
|
652
|
+
200: z8.object({ message: z8.string() }),
|
|
653
|
+
400: ErrorSchema,
|
|
654
|
+
401: ErrorSchema,
|
|
655
|
+
410: ErrorSchema
|
|
656
|
+
},
|
|
657
|
+
summary: "Invitee submits CCCD VP to join",
|
|
658
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
659
|
+
},
|
|
660
|
+
acceptInvitation: {
|
|
661
|
+
method: "POST",
|
|
662
|
+
path: "/v1/organisations/:orgId/invitations/:invitationId/accept",
|
|
663
|
+
body: z8.object({}),
|
|
664
|
+
responses: {
|
|
665
|
+
200: z8.object({ message: z8.string(), memberId: z8.string() }),
|
|
666
|
+
401: ErrorSchema,
|
|
667
|
+
403: ErrorSchema,
|
|
668
|
+
409: ErrorSchema
|
|
669
|
+
},
|
|
670
|
+
summary: "Accept invitation (owner/admin only)",
|
|
671
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
672
|
+
},
|
|
673
|
+
declineInvitation: {
|
|
674
|
+
method: "POST",
|
|
675
|
+
path: "/v1/organisations/:orgId/invitations/:invitationId/decline",
|
|
676
|
+
body: z8.object({}),
|
|
677
|
+
responses: {
|
|
678
|
+
200: z8.object({ message: z8.string() }),
|
|
679
|
+
401: ErrorSchema,
|
|
680
|
+
403: ErrorSchema,
|
|
681
|
+
409: ErrorSchema
|
|
682
|
+
},
|
|
683
|
+
summary: "Decline invitation (owner/admin only)",
|
|
684
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
685
|
+
}
|
|
686
|
+
});
|
|
687
|
+
var orgCredentialsContract = c8.router({
|
|
688
|
+
issueVC: {
|
|
689
|
+
method: "POST",
|
|
690
|
+
path: "/v1/organisations/:orgId/credentials/issue",
|
|
691
|
+
body: IssueVCSchema,
|
|
692
|
+
responses: {
|
|
693
|
+
201: z8.record(z8.unknown()),
|
|
694
|
+
400: ErrorSchema,
|
|
695
|
+
401: ErrorSchema,
|
|
696
|
+
403: ErrorSchema
|
|
697
|
+
},
|
|
698
|
+
summary: "Issue VC on behalf of organisation (owner/admin/issuer)",
|
|
699
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
700
|
+
},
|
|
701
|
+
listIssuedCredentials: {
|
|
702
|
+
method: "GET",
|
|
703
|
+
path: "/v1/organisations/:orgId/credentials",
|
|
704
|
+
responses: {
|
|
705
|
+
200: z8.array(z8.object({
|
|
706
|
+
id: z8.string(),
|
|
707
|
+
holderDid: z8.string(),
|
|
708
|
+
issuingMemberId: z8.string(),
|
|
709
|
+
credentialJson: z8.record(z8.unknown()),
|
|
710
|
+
issuedAt: z8.string()
|
|
711
|
+
})),
|
|
712
|
+
401: ErrorSchema,
|
|
713
|
+
403: ErrorSchema
|
|
714
|
+
},
|
|
715
|
+
summary: "List issued credentials (owner/admin only)",
|
|
716
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
717
|
+
}
|
|
718
|
+
});
|
|
719
|
+
var organisationsContract = c8.router({
|
|
720
|
+
crud: orgCrudContract,
|
|
721
|
+
members: orgMembersContract,
|
|
722
|
+
invitations: orgInvitationsContract,
|
|
723
|
+
credentials: orgCredentialsContract
|
|
724
|
+
});
|
|
725
|
+
|
|
726
|
+
// src/index.ts
|
|
727
|
+
var c9 = initContract9();
|
|
728
|
+
var contract = c9.router({
|
|
729
|
+
v1: c9.router({
|
|
425
730
|
auth: authContract,
|
|
426
731
|
events: eventsContract,
|
|
427
732
|
checkin: checkinContract,
|
|
428
733
|
turn: turnContract,
|
|
429
734
|
uploads: uploadsContract,
|
|
430
735
|
tracking: trackingContract,
|
|
431
|
-
config: appConfigContract
|
|
736
|
+
config: appConfigContract,
|
|
737
|
+
organisations: organisationsContract
|
|
432
738
|
})
|
|
433
739
|
});
|
|
434
740
|
export {
|
|
@@ -437,16 +743,27 @@ export {
|
|
|
437
743
|
CheckinSubmitRequestSchema,
|
|
438
744
|
CheckinSubmitResponseSchema,
|
|
439
745
|
CreateEventSchema,
|
|
746
|
+
CreateInvitationSchema,
|
|
747
|
+
CreateOrganisationSchema,
|
|
440
748
|
EventDetailResponseSchema,
|
|
441
749
|
EventDiscoverSchema,
|
|
442
750
|
EventPublicInfoSchema,
|
|
443
751
|
EventResponseSchema,
|
|
752
|
+
InvitationResponseSchema,
|
|
753
|
+
IssueVCSchema,
|
|
754
|
+
JoinInvitationSchema,
|
|
755
|
+
MemberResponseSchema,
|
|
756
|
+
OrgDetailResponseSchema,
|
|
757
|
+
OrgListItemSchema,
|
|
758
|
+
OrgResponseSchema,
|
|
444
759
|
ParticipantSchema,
|
|
445
760
|
SUPPORTED_FIELDS,
|
|
446
761
|
TrackScanRequestSchema,
|
|
447
762
|
TrackScanResponseSchema,
|
|
448
763
|
TurnCredentialsResponseSchema,
|
|
449
764
|
UpdateEventSchema,
|
|
765
|
+
UpdateMemberRoleSchema,
|
|
766
|
+
UpdateOrganisationSchema,
|
|
450
767
|
UploadPresignedUrlSchema,
|
|
451
768
|
VerifyRequestSchema,
|
|
452
769
|
VerifyResponseSchema,
|
|
@@ -456,6 +773,11 @@ export {
|
|
|
456
773
|
checkinContract,
|
|
457
774
|
contract,
|
|
458
775
|
eventsContract,
|
|
776
|
+
orgCredentialsContract,
|
|
777
|
+
orgCrudContract,
|
|
778
|
+
orgInvitationsContract,
|
|
779
|
+
orgMembersContract,
|
|
780
|
+
organisationsContract,
|
|
459
781
|
trackingContract,
|
|
460
782
|
turnContract,
|
|
461
783
|
uploadsContract
|
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","../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"]}
|
|
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","../src/v1/organisations.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';\nimport { organisationsContract } from './v1/organisations';\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 organisations: organisationsContract,\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...` or `did:vbsn: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` or `did:vbsn` — 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 publicEvents: z.object({ enabled: z.boolean() }),\n }),\n },\n summary: 'Get app configuration (public)',\n metadata: { openApiTags: ['Config'], openApiSecurity: [] },\n },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\n\nconst c = initContract();\n\nconst SECURITY = [{ bearerAuth: [] }];\n\n// --- Zod Schemas ---\n\nexport const CreateOrganisationSchema = z.object({\n name: z.string().min(1).max(255),\n description: z.string().optional(),\n verifiablePresentation: z.record(z.unknown()),\n});\n\nexport const UpdateOrganisationSchema = z.object({\n name: z.string().min(1).max(255).optional(),\n description: z.string().nullable().optional(),\n avatarUrl: z.string().nullable().optional(),\n});\n\nexport const OrgResponseSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().nullable(),\n avatarUrl: z.string().nullable(),\n didUri: z.string().nullable(),\n memberCount: z.number(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nexport const OrgListItemSchema = OrgResponseSchema.extend({\n role: z.enum(['OWNER', 'ADMIN', 'ISSUER', 'MEMBER']),\n});\n\nexport const OrgDetailResponseSchema = OrgListItemSchema.extend({\n members: z.array(z.object({\n id: z.string(),\n userId: z.string(),\n displayName: z.string().nullable(),\n role: z.enum(['OWNER', 'ADMIN', 'ISSUER', 'MEMBER']),\n joinedAt: z.string(),\n })),\n});\n\nexport const MemberResponseSchema = z.object({\n id: z.string(),\n userId: z.string(),\n displayName: z.string().nullable(),\n role: z.enum(['OWNER', 'ADMIN', 'ISSUER', 'MEMBER']),\n joinedAt: z.string(),\n});\n\nexport const UpdateMemberRoleSchema = z.object({\n role: z.enum(['ADMIN', 'ISSUER', 'MEMBER']),\n});\n\nexport const CreateInvitationSchema = z.object({\n expiresInDays: z.number().int().positive().default(7).optional(),\n});\n\nexport const InvitationResponseSchema = z.object({\n id: z.string(),\n orgId: z.string(),\n orgName: z.string(),\n token: z.string(),\n status: z.enum(['PENDING', 'SUBMITTED', 'ACCEPTED', 'DECLINED', 'EXPIRED']),\n inviteeDisplayName: z.string().nullable(),\n createdAt: z.string(),\n expiresAt: z.string(),\n});\n\nexport const JoinInvitationSchema = z.object({\n verifiablePresentation: z.record(z.unknown()),\n});\n\nexport const IssueVCSchema = z.object({\n holderDid: z.string(),\n credentialSubject: z.record(z.unknown()),\n type: z.array(z.string()).optional(),\n});\n\nconst ErrorSchema = z.object({ message: z.string() });\n\n// --- Sub-contracts ---\n\nconst VpRequestResponseSchema = z.object({\n vpRequest: z.record(z.unknown()),\n expiresAt: z.string(),\n});\n\nexport const orgCrudContract = c.router({\n createVpRequest: {\n method: 'POST',\n path: '/v1/organisations/vp-request',\n body: z.object({}),\n responses: {\n 200: VpRequestResponseSchema,\n 401: ErrorSchema,\n },\n summary: 'Get VP request for creating an organisation',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n create: {\n method: 'POST',\n path: '/v1/organisations',\n body: CreateOrganisationSchema,\n responses: {\n 201: OrgResponseSchema,\n 400: ErrorSchema,\n 401: ErrorSchema,\n },\n summary: 'Create a new organisation (requires CCCD VP)',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n list: {\n method: 'GET',\n path: '/v1/organisations',\n responses: {\n 200: z.array(OrgListItemSchema),\n 401: ErrorSchema,\n },\n summary: \"List user's organisations\",\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n getById: {\n method: 'GET',\n path: '/v1/organisations/:orgId',\n responses: {\n 200: OrgDetailResponseSchema,\n 401: ErrorSchema,\n 403: ErrorSchema,\n 404: ErrorSchema,\n },\n summary: 'Get organisation details (members only)',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n update: {\n method: 'PATCH',\n path: '/v1/organisations/:orgId',\n body: UpdateOrganisationSchema,\n responses: {\n 200: OrgResponseSchema,\n 400: ErrorSchema,\n 401: ErrorSchema,\n 403: ErrorSchema,\n 404: ErrorSchema,\n },\n summary: 'Update organisation details (owner/admin only)',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n delete: {\n method: 'DELETE',\n path: '/v1/organisations/:orgId',\n body: c.noBody(),\n responses: {\n 204: z.undefined(),\n 401: ErrorSchema,\n 403: ErrorSchema,\n 404: ErrorSchema,\n },\n summary: 'Delete organisation (owner only)',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n});\n\nexport const orgMembersContract = c.router({\n listMembers: {\n method: 'GET',\n path: '/v1/organisations/:orgId/members',\n responses: {\n 200: z.array(MemberResponseSchema),\n 401: ErrorSchema,\n 403: ErrorSchema,\n },\n summary: 'List organisation members',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n updateMemberRole: {\n method: 'PATCH',\n path: '/v1/organisations/:orgId/members/:memberId',\n body: UpdateMemberRoleSchema,\n responses: {\n 200: MemberResponseSchema,\n 400: ErrorSchema,\n 401: ErrorSchema,\n 403: ErrorSchema,\n 404: ErrorSchema,\n },\n summary: 'Update member role (owner/admin only)',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n removeMember: {\n method: 'DELETE',\n path: '/v1/organisations/:orgId/members/:memberId',\n body: c.noBody(),\n responses: {\n 204: z.undefined(),\n 400: ErrorSchema,\n 401: ErrorSchema,\n 403: ErrorSchema,\n 404: ErrorSchema,\n },\n summary: 'Remove member from organisation (owner/admin only)',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n});\n\nexport const orgInvitationsContract = c.router({\n createInvitation: {\n method: 'POST',\n path: '/v1/organisations/:orgId/invitations',\n body: CreateInvitationSchema,\n responses: {\n 201: InvitationResponseSchema,\n 401: ErrorSchema,\n 403: ErrorSchema,\n },\n summary: 'Create invitation (owner/admin only)',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n listInvitations: {\n method: 'GET',\n path: '/v1/organisations/:orgId/invitations',\n responses: {\n 200: z.array(InvitationResponseSchema),\n 401: ErrorSchema,\n 403: ErrorSchema,\n },\n summary: 'List pending invitations (owner/admin only)',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n joinVpRequest: {\n method: 'POST',\n path: '/v1/organisations/invitations/:token/vp-request',\n body: z.object({}),\n responses: {\n 200: VpRequestResponseSchema,\n 401: ErrorSchema,\n 404: ErrorSchema,\n 410: ErrorSchema,\n },\n summary: 'Get VP request for joining via invitation',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n joinInvitation: {\n method: 'POST',\n path: '/v1/organisations/invitations/:token/join',\n body: JoinInvitationSchema,\n responses: {\n 200: z.object({ message: z.string() }),\n 400: ErrorSchema,\n 401: ErrorSchema,\n 410: ErrorSchema,\n },\n summary: 'Invitee submits CCCD VP to join',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n acceptInvitation: {\n method: 'POST',\n path: '/v1/organisations/:orgId/invitations/:invitationId/accept',\n body: z.object({}),\n responses: {\n 200: z.object({ message: z.string(), memberId: z.string() }),\n 401: ErrorSchema,\n 403: ErrorSchema,\n 409: ErrorSchema,\n },\n summary: 'Accept invitation (owner/admin only)',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n declineInvitation: {\n method: 'POST',\n path: '/v1/organisations/:orgId/invitations/:invitationId/decline',\n body: z.object({}),\n responses: {\n 200: z.object({ message: z.string() }),\n 401: ErrorSchema,\n 403: ErrorSchema,\n 409: ErrorSchema,\n },\n summary: 'Decline invitation (owner/admin only)',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n});\n\nexport const orgCredentialsContract = c.router({\n issueVC: {\n method: 'POST',\n path: '/v1/organisations/:orgId/credentials/issue',\n body: IssueVCSchema,\n responses: {\n 201: z.record(z.unknown()),\n 400: ErrorSchema,\n 401: ErrorSchema,\n 403: ErrorSchema,\n },\n summary: 'Issue VC on behalf of organisation (owner/admin/issuer)',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n listIssuedCredentials: {\n method: 'GET',\n path: '/v1/organisations/:orgId/credentials',\n responses: {\n 200: z.array(z.object({\n id: z.string(),\n holderDid: z.string(),\n issuingMemberId: z.string(),\n credentialJson: z.record(z.unknown()),\n issuedAt: z.string(),\n })),\n 401: ErrorSchema,\n 403: ErrorSchema,\n },\n summary: 'List issued credentials (owner/admin only)',\n metadata: { openApiTags: ['Organisations'], openApiSecurity: SECURITY },\n },\n});\n\n// Combined router for registration in the main contract\nexport const organisationsContract = c.router({\n crud: orgCrudContract,\n members: orgMembersContract,\n invitations: orgInvitationsContract,\n credentials: orgCredentialsContract,\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","initContract","z","c","SECURITY","c","initContract"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@1mtx/did-api-contract",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "Type-safe API contract for the 1matrix DID platform",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -32,4 +32,4 @@
|
|
|
32
32
|
"tsup": "^8.3.5",
|
|
33
33
|
"typescript": "^5.6.3"
|
|
34
34
|
}
|
|
35
|
-
}
|
|
35
|
+
}
|