@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.js
CHANGED
|
@@ -25,16 +25,27 @@ __export(index_exports, {
|
|
|
25
25
|
CheckinSubmitRequestSchema: () => CheckinSubmitRequestSchema,
|
|
26
26
|
CheckinSubmitResponseSchema: () => CheckinSubmitResponseSchema,
|
|
27
27
|
CreateEventSchema: () => CreateEventSchema,
|
|
28
|
+
CreateInvitationSchema: () => CreateInvitationSchema,
|
|
29
|
+
CreateOrganisationSchema: () => CreateOrganisationSchema,
|
|
28
30
|
EventDetailResponseSchema: () => EventDetailResponseSchema,
|
|
29
31
|
EventDiscoverSchema: () => EventDiscoverSchema,
|
|
30
32
|
EventPublicInfoSchema: () => EventPublicInfoSchema,
|
|
31
33
|
EventResponseSchema: () => EventResponseSchema,
|
|
34
|
+
InvitationResponseSchema: () => InvitationResponseSchema,
|
|
35
|
+
IssueVCSchema: () => IssueVCSchema,
|
|
36
|
+
JoinInvitationSchema: () => JoinInvitationSchema,
|
|
37
|
+
MemberResponseSchema: () => MemberResponseSchema,
|
|
38
|
+
OrgDetailResponseSchema: () => OrgDetailResponseSchema,
|
|
39
|
+
OrgListItemSchema: () => OrgListItemSchema,
|
|
40
|
+
OrgResponseSchema: () => OrgResponseSchema,
|
|
32
41
|
ParticipantSchema: () => ParticipantSchema,
|
|
33
42
|
SUPPORTED_FIELDS: () => SUPPORTED_FIELDS,
|
|
34
43
|
TrackScanRequestSchema: () => TrackScanRequestSchema,
|
|
35
44
|
TrackScanResponseSchema: () => TrackScanResponseSchema,
|
|
36
45
|
TurnCredentialsResponseSchema: () => TurnCredentialsResponseSchema,
|
|
37
46
|
UpdateEventSchema: () => UpdateEventSchema,
|
|
47
|
+
UpdateMemberRoleSchema: () => UpdateMemberRoleSchema,
|
|
48
|
+
UpdateOrganisationSchema: () => UpdateOrganisationSchema,
|
|
38
49
|
UploadPresignedUrlSchema: () => UploadPresignedUrlSchema,
|
|
39
50
|
VerifyRequestSchema: () => VerifyRequestSchema,
|
|
40
51
|
VerifyResponseSchema: () => VerifyResponseSchema,
|
|
@@ -44,12 +55,17 @@ __export(index_exports, {
|
|
|
44
55
|
checkinContract: () => checkinContract,
|
|
45
56
|
contract: () => contract,
|
|
46
57
|
eventsContract: () => eventsContract,
|
|
58
|
+
orgCredentialsContract: () => orgCredentialsContract,
|
|
59
|
+
orgCrudContract: () => orgCrudContract,
|
|
60
|
+
orgInvitationsContract: () => orgInvitationsContract,
|
|
61
|
+
orgMembersContract: () => orgMembersContract,
|
|
62
|
+
organisationsContract: () => organisationsContract,
|
|
47
63
|
trackingContract: () => trackingContract,
|
|
48
64
|
turnContract: () => turnContract,
|
|
49
65
|
uploadsContract: () => uploadsContract
|
|
50
66
|
});
|
|
51
67
|
module.exports = __toCommonJS(index_exports);
|
|
52
|
-
var
|
|
68
|
+
var import_core9 = require("@ts-rest/core");
|
|
53
69
|
|
|
54
70
|
// src/v1/auth.ts
|
|
55
71
|
var import_core = require("@ts-rest/core");
|
|
@@ -57,7 +73,7 @@ var import_zod = require("zod");
|
|
|
57
73
|
var c = (0, import_core.initContract)();
|
|
58
74
|
var AuthScheme = import_zod.z.enum(["eip191"]);
|
|
59
75
|
var VerifyRequestSchema = import_zod.z.object({
|
|
60
|
-
did: import_zod.z.string().min(1).describe("DID of the authenticating user (e.g. `did:ethr:0xABC...`)"),
|
|
76
|
+
did: import_zod.z.string().min(1).describe("DID of the authenticating user (e.g. `did:ethr:0xABC...` or `did:vbsn:0xABC...`)"),
|
|
61
77
|
signature: import_zod.z.string().min(1).describe(
|
|
62
78
|
"Hex signature of the `message` string, produced by the scheme specified in the message"
|
|
63
79
|
),
|
|
@@ -90,7 +106,7 @@ var authContract = c.router({
|
|
|
90
106
|
"|----------|-------|",
|
|
91
107
|
'| **Signing scheme** | ECDSA secp256k1 (`scheme: "eip191"`) |',
|
|
92
108
|
"| **Signature format** | [EIP-191](https://eips.ethereum.org/EIPS/eip-191) `personal_sign` (65-byte `r\u2016s\u2016v`, hex-encoded with `0x` prefix) |",
|
|
93
|
-
"| **DID method** | `did:ethr` \u2014 the Ethereum address in the DID must match the signer |",
|
|
109
|
+
"| **DID method** | `did:ethr` or `did:vbsn` \u2014 the Ethereum address in the DID must match the signer |",
|
|
94
110
|
"| **Message encoding** | UTF-8 JSON string |",
|
|
95
111
|
"",
|
|
96
112
|
"### Steps",
|
|
@@ -460,7 +476,8 @@ var appConfigContract = c7.router({
|
|
|
460
476
|
path: "/v1/config/app",
|
|
461
477
|
responses: {
|
|
462
478
|
200: import_zod7.z.object({
|
|
463
|
-
demoMode: import_zod7.z.object({ enabled: import_zod7.z.boolean() })
|
|
479
|
+
demoMode: import_zod7.z.object({ enabled: import_zod7.z.boolean() }),
|
|
480
|
+
publicEvents: import_zod7.z.object({ enabled: import_zod7.z.boolean() })
|
|
464
481
|
})
|
|
465
482
|
},
|
|
466
483
|
summary: "Get app configuration (public)",
|
|
@@ -468,17 +485,322 @@ var appConfigContract = c7.router({
|
|
|
468
485
|
}
|
|
469
486
|
});
|
|
470
487
|
|
|
471
|
-
// src/
|
|
488
|
+
// src/v1/organisations.ts
|
|
489
|
+
var import_core8 = require("@ts-rest/core");
|
|
490
|
+
var import_zod8 = require("zod");
|
|
472
491
|
var c8 = (0, import_core8.initContract)();
|
|
473
|
-
var
|
|
474
|
-
|
|
492
|
+
var SECURITY2 = [{ bearerAuth: [] }];
|
|
493
|
+
var CreateOrganisationSchema = import_zod8.z.object({
|
|
494
|
+
name: import_zod8.z.string().min(1).max(255),
|
|
495
|
+
description: import_zod8.z.string().optional(),
|
|
496
|
+
verifiablePresentation: import_zod8.z.record(import_zod8.z.unknown())
|
|
497
|
+
});
|
|
498
|
+
var UpdateOrganisationSchema = import_zod8.z.object({
|
|
499
|
+
name: import_zod8.z.string().min(1).max(255).optional(),
|
|
500
|
+
description: import_zod8.z.string().nullable().optional(),
|
|
501
|
+
avatarUrl: import_zod8.z.string().nullable().optional()
|
|
502
|
+
});
|
|
503
|
+
var OrgResponseSchema = import_zod8.z.object({
|
|
504
|
+
id: import_zod8.z.string(),
|
|
505
|
+
name: import_zod8.z.string(),
|
|
506
|
+
description: import_zod8.z.string().nullable(),
|
|
507
|
+
avatarUrl: import_zod8.z.string().nullable(),
|
|
508
|
+
didUri: import_zod8.z.string().nullable(),
|
|
509
|
+
memberCount: import_zod8.z.number(),
|
|
510
|
+
createdAt: import_zod8.z.string(),
|
|
511
|
+
updatedAt: import_zod8.z.string()
|
|
512
|
+
});
|
|
513
|
+
var OrgListItemSchema = OrgResponseSchema.extend({
|
|
514
|
+
role: import_zod8.z.enum(["OWNER", "ADMIN", "ISSUER", "MEMBER"])
|
|
515
|
+
});
|
|
516
|
+
var OrgDetailResponseSchema = OrgListItemSchema.extend({
|
|
517
|
+
members: import_zod8.z.array(import_zod8.z.object({
|
|
518
|
+
id: import_zod8.z.string(),
|
|
519
|
+
userId: import_zod8.z.string(),
|
|
520
|
+
displayName: import_zod8.z.string().nullable(),
|
|
521
|
+
role: import_zod8.z.enum(["OWNER", "ADMIN", "ISSUER", "MEMBER"]),
|
|
522
|
+
joinedAt: import_zod8.z.string()
|
|
523
|
+
}))
|
|
524
|
+
});
|
|
525
|
+
var MemberResponseSchema = import_zod8.z.object({
|
|
526
|
+
id: import_zod8.z.string(),
|
|
527
|
+
userId: import_zod8.z.string(),
|
|
528
|
+
displayName: import_zod8.z.string().nullable(),
|
|
529
|
+
role: import_zod8.z.enum(["OWNER", "ADMIN", "ISSUER", "MEMBER"]),
|
|
530
|
+
joinedAt: import_zod8.z.string()
|
|
531
|
+
});
|
|
532
|
+
var UpdateMemberRoleSchema = import_zod8.z.object({
|
|
533
|
+
role: import_zod8.z.enum(["ADMIN", "ISSUER", "MEMBER"])
|
|
534
|
+
});
|
|
535
|
+
var CreateInvitationSchema = import_zod8.z.object({
|
|
536
|
+
expiresInDays: import_zod8.z.number().int().positive().default(7).optional()
|
|
537
|
+
});
|
|
538
|
+
var InvitationResponseSchema = import_zod8.z.object({
|
|
539
|
+
id: import_zod8.z.string(),
|
|
540
|
+
orgId: import_zod8.z.string(),
|
|
541
|
+
orgName: import_zod8.z.string(),
|
|
542
|
+
token: import_zod8.z.string(),
|
|
543
|
+
status: import_zod8.z.enum(["PENDING", "SUBMITTED", "ACCEPTED", "DECLINED", "EXPIRED"]),
|
|
544
|
+
inviteeDisplayName: import_zod8.z.string().nullable(),
|
|
545
|
+
createdAt: import_zod8.z.string(),
|
|
546
|
+
expiresAt: import_zod8.z.string()
|
|
547
|
+
});
|
|
548
|
+
var JoinInvitationSchema = import_zod8.z.object({
|
|
549
|
+
verifiablePresentation: import_zod8.z.record(import_zod8.z.unknown())
|
|
550
|
+
});
|
|
551
|
+
var IssueVCSchema = import_zod8.z.object({
|
|
552
|
+
holderDid: import_zod8.z.string(),
|
|
553
|
+
credentialSubject: import_zod8.z.record(import_zod8.z.unknown()),
|
|
554
|
+
type: import_zod8.z.array(import_zod8.z.string()).optional()
|
|
555
|
+
});
|
|
556
|
+
var ErrorSchema = import_zod8.z.object({ message: import_zod8.z.string() });
|
|
557
|
+
var VpRequestResponseSchema = import_zod8.z.object({
|
|
558
|
+
vpRequest: import_zod8.z.record(import_zod8.z.unknown()),
|
|
559
|
+
expiresAt: import_zod8.z.string()
|
|
560
|
+
});
|
|
561
|
+
var orgCrudContract = c8.router({
|
|
562
|
+
createVpRequest: {
|
|
563
|
+
method: "POST",
|
|
564
|
+
path: "/v1/organisations/vp-request",
|
|
565
|
+
body: import_zod8.z.object({}),
|
|
566
|
+
responses: {
|
|
567
|
+
200: VpRequestResponseSchema,
|
|
568
|
+
401: ErrorSchema
|
|
569
|
+
},
|
|
570
|
+
summary: "Get VP request for creating an organisation",
|
|
571
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
572
|
+
},
|
|
573
|
+
create: {
|
|
574
|
+
method: "POST",
|
|
575
|
+
path: "/v1/organisations",
|
|
576
|
+
body: CreateOrganisationSchema,
|
|
577
|
+
responses: {
|
|
578
|
+
201: OrgResponseSchema,
|
|
579
|
+
400: ErrorSchema,
|
|
580
|
+
401: ErrorSchema
|
|
581
|
+
},
|
|
582
|
+
summary: "Create a new organisation (requires CCCD VP)",
|
|
583
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
584
|
+
},
|
|
585
|
+
list: {
|
|
586
|
+
method: "GET",
|
|
587
|
+
path: "/v1/organisations",
|
|
588
|
+
responses: {
|
|
589
|
+
200: import_zod8.z.array(OrgListItemSchema),
|
|
590
|
+
401: ErrorSchema
|
|
591
|
+
},
|
|
592
|
+
summary: "List user's organisations",
|
|
593
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
594
|
+
},
|
|
595
|
+
getById: {
|
|
596
|
+
method: "GET",
|
|
597
|
+
path: "/v1/organisations/:orgId",
|
|
598
|
+
responses: {
|
|
599
|
+
200: OrgDetailResponseSchema,
|
|
600
|
+
401: ErrorSchema,
|
|
601
|
+
403: ErrorSchema,
|
|
602
|
+
404: ErrorSchema
|
|
603
|
+
},
|
|
604
|
+
summary: "Get organisation details (members only)",
|
|
605
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
606
|
+
},
|
|
607
|
+
update: {
|
|
608
|
+
method: "PATCH",
|
|
609
|
+
path: "/v1/organisations/:orgId",
|
|
610
|
+
body: UpdateOrganisationSchema,
|
|
611
|
+
responses: {
|
|
612
|
+
200: OrgResponseSchema,
|
|
613
|
+
400: ErrorSchema,
|
|
614
|
+
401: ErrorSchema,
|
|
615
|
+
403: ErrorSchema,
|
|
616
|
+
404: ErrorSchema
|
|
617
|
+
},
|
|
618
|
+
summary: "Update organisation details (owner/admin only)",
|
|
619
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
620
|
+
},
|
|
621
|
+
delete: {
|
|
622
|
+
method: "DELETE",
|
|
623
|
+
path: "/v1/organisations/:orgId",
|
|
624
|
+
body: c8.noBody(),
|
|
625
|
+
responses: {
|
|
626
|
+
204: import_zod8.z.undefined(),
|
|
627
|
+
401: ErrorSchema,
|
|
628
|
+
403: ErrorSchema,
|
|
629
|
+
404: ErrorSchema
|
|
630
|
+
},
|
|
631
|
+
summary: "Delete organisation (owner only)",
|
|
632
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
633
|
+
}
|
|
634
|
+
});
|
|
635
|
+
var orgMembersContract = c8.router({
|
|
636
|
+
listMembers: {
|
|
637
|
+
method: "GET",
|
|
638
|
+
path: "/v1/organisations/:orgId/members",
|
|
639
|
+
responses: {
|
|
640
|
+
200: import_zod8.z.array(MemberResponseSchema),
|
|
641
|
+
401: ErrorSchema,
|
|
642
|
+
403: ErrorSchema
|
|
643
|
+
},
|
|
644
|
+
summary: "List organisation members",
|
|
645
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
646
|
+
},
|
|
647
|
+
updateMemberRole: {
|
|
648
|
+
method: "PATCH",
|
|
649
|
+
path: "/v1/organisations/:orgId/members/:memberId",
|
|
650
|
+
body: UpdateMemberRoleSchema,
|
|
651
|
+
responses: {
|
|
652
|
+
200: MemberResponseSchema,
|
|
653
|
+
400: ErrorSchema,
|
|
654
|
+
401: ErrorSchema,
|
|
655
|
+
403: ErrorSchema,
|
|
656
|
+
404: ErrorSchema
|
|
657
|
+
},
|
|
658
|
+
summary: "Update member role (owner/admin only)",
|
|
659
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
660
|
+
},
|
|
661
|
+
removeMember: {
|
|
662
|
+
method: "DELETE",
|
|
663
|
+
path: "/v1/organisations/:orgId/members/:memberId",
|
|
664
|
+
body: c8.noBody(),
|
|
665
|
+
responses: {
|
|
666
|
+
204: import_zod8.z.undefined(),
|
|
667
|
+
400: ErrorSchema,
|
|
668
|
+
401: ErrorSchema,
|
|
669
|
+
403: ErrorSchema,
|
|
670
|
+
404: ErrorSchema
|
|
671
|
+
},
|
|
672
|
+
summary: "Remove member from organisation (owner/admin only)",
|
|
673
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
674
|
+
}
|
|
675
|
+
});
|
|
676
|
+
var orgInvitationsContract = c8.router({
|
|
677
|
+
createInvitation: {
|
|
678
|
+
method: "POST",
|
|
679
|
+
path: "/v1/organisations/:orgId/invitations",
|
|
680
|
+
body: CreateInvitationSchema,
|
|
681
|
+
responses: {
|
|
682
|
+
201: InvitationResponseSchema,
|
|
683
|
+
401: ErrorSchema,
|
|
684
|
+
403: ErrorSchema
|
|
685
|
+
},
|
|
686
|
+
summary: "Create invitation (owner/admin only)",
|
|
687
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
688
|
+
},
|
|
689
|
+
listInvitations: {
|
|
690
|
+
method: "GET",
|
|
691
|
+
path: "/v1/organisations/:orgId/invitations",
|
|
692
|
+
responses: {
|
|
693
|
+
200: import_zod8.z.array(InvitationResponseSchema),
|
|
694
|
+
401: ErrorSchema,
|
|
695
|
+
403: ErrorSchema
|
|
696
|
+
},
|
|
697
|
+
summary: "List pending invitations (owner/admin only)",
|
|
698
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
699
|
+
},
|
|
700
|
+
joinVpRequest: {
|
|
701
|
+
method: "POST",
|
|
702
|
+
path: "/v1/organisations/invitations/:token/vp-request",
|
|
703
|
+
body: import_zod8.z.object({}),
|
|
704
|
+
responses: {
|
|
705
|
+
200: VpRequestResponseSchema,
|
|
706
|
+
401: ErrorSchema,
|
|
707
|
+
404: ErrorSchema,
|
|
708
|
+
410: ErrorSchema
|
|
709
|
+
},
|
|
710
|
+
summary: "Get VP request for joining via invitation",
|
|
711
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
712
|
+
},
|
|
713
|
+
joinInvitation: {
|
|
714
|
+
method: "POST",
|
|
715
|
+
path: "/v1/organisations/invitations/:token/join",
|
|
716
|
+
body: JoinInvitationSchema,
|
|
717
|
+
responses: {
|
|
718
|
+
200: import_zod8.z.object({ message: import_zod8.z.string() }),
|
|
719
|
+
400: ErrorSchema,
|
|
720
|
+
401: ErrorSchema,
|
|
721
|
+
410: ErrorSchema
|
|
722
|
+
},
|
|
723
|
+
summary: "Invitee submits CCCD VP to join",
|
|
724
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
725
|
+
},
|
|
726
|
+
acceptInvitation: {
|
|
727
|
+
method: "POST",
|
|
728
|
+
path: "/v1/organisations/:orgId/invitations/:invitationId/accept",
|
|
729
|
+
body: import_zod8.z.object({}),
|
|
730
|
+
responses: {
|
|
731
|
+
200: import_zod8.z.object({ message: import_zod8.z.string(), memberId: import_zod8.z.string() }),
|
|
732
|
+
401: ErrorSchema,
|
|
733
|
+
403: ErrorSchema,
|
|
734
|
+
409: ErrorSchema
|
|
735
|
+
},
|
|
736
|
+
summary: "Accept invitation (owner/admin only)",
|
|
737
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
738
|
+
},
|
|
739
|
+
declineInvitation: {
|
|
740
|
+
method: "POST",
|
|
741
|
+
path: "/v1/organisations/:orgId/invitations/:invitationId/decline",
|
|
742
|
+
body: import_zod8.z.object({}),
|
|
743
|
+
responses: {
|
|
744
|
+
200: import_zod8.z.object({ message: import_zod8.z.string() }),
|
|
745
|
+
401: ErrorSchema,
|
|
746
|
+
403: ErrorSchema,
|
|
747
|
+
409: ErrorSchema
|
|
748
|
+
},
|
|
749
|
+
summary: "Decline invitation (owner/admin only)",
|
|
750
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
751
|
+
}
|
|
752
|
+
});
|
|
753
|
+
var orgCredentialsContract = c8.router({
|
|
754
|
+
issueVC: {
|
|
755
|
+
method: "POST",
|
|
756
|
+
path: "/v1/organisations/:orgId/credentials/issue",
|
|
757
|
+
body: IssueVCSchema,
|
|
758
|
+
responses: {
|
|
759
|
+
201: import_zod8.z.record(import_zod8.z.unknown()),
|
|
760
|
+
400: ErrorSchema,
|
|
761
|
+
401: ErrorSchema,
|
|
762
|
+
403: ErrorSchema
|
|
763
|
+
},
|
|
764
|
+
summary: "Issue VC on behalf of organisation (owner/admin/issuer)",
|
|
765
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
766
|
+
},
|
|
767
|
+
listIssuedCredentials: {
|
|
768
|
+
method: "GET",
|
|
769
|
+
path: "/v1/organisations/:orgId/credentials",
|
|
770
|
+
responses: {
|
|
771
|
+
200: import_zod8.z.array(import_zod8.z.object({
|
|
772
|
+
id: import_zod8.z.string(),
|
|
773
|
+
holderDid: import_zod8.z.string(),
|
|
774
|
+
issuingMemberId: import_zod8.z.string(),
|
|
775
|
+
credentialJson: import_zod8.z.record(import_zod8.z.unknown()),
|
|
776
|
+
issuedAt: import_zod8.z.string()
|
|
777
|
+
})),
|
|
778
|
+
401: ErrorSchema,
|
|
779
|
+
403: ErrorSchema
|
|
780
|
+
},
|
|
781
|
+
summary: "List issued credentials (owner/admin only)",
|
|
782
|
+
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
783
|
+
}
|
|
784
|
+
});
|
|
785
|
+
var organisationsContract = c8.router({
|
|
786
|
+
crud: orgCrudContract,
|
|
787
|
+
members: orgMembersContract,
|
|
788
|
+
invitations: orgInvitationsContract,
|
|
789
|
+
credentials: orgCredentialsContract
|
|
790
|
+
});
|
|
791
|
+
|
|
792
|
+
// src/index.ts
|
|
793
|
+
var c9 = (0, import_core9.initContract)();
|
|
794
|
+
var contract = c9.router({
|
|
795
|
+
v1: c9.router({
|
|
475
796
|
auth: authContract,
|
|
476
797
|
events: eventsContract,
|
|
477
798
|
checkin: checkinContract,
|
|
478
799
|
turn: turnContract,
|
|
479
800
|
uploads: uploadsContract,
|
|
480
801
|
tracking: trackingContract,
|
|
481
|
-
config: appConfigContract
|
|
802
|
+
config: appConfigContract,
|
|
803
|
+
organisations: organisationsContract
|
|
482
804
|
})
|
|
483
805
|
});
|
|
484
806
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -488,16 +810,27 @@ var contract = c8.router({
|
|
|
488
810
|
CheckinSubmitRequestSchema,
|
|
489
811
|
CheckinSubmitResponseSchema,
|
|
490
812
|
CreateEventSchema,
|
|
813
|
+
CreateInvitationSchema,
|
|
814
|
+
CreateOrganisationSchema,
|
|
491
815
|
EventDetailResponseSchema,
|
|
492
816
|
EventDiscoverSchema,
|
|
493
817
|
EventPublicInfoSchema,
|
|
494
818
|
EventResponseSchema,
|
|
819
|
+
InvitationResponseSchema,
|
|
820
|
+
IssueVCSchema,
|
|
821
|
+
JoinInvitationSchema,
|
|
822
|
+
MemberResponseSchema,
|
|
823
|
+
OrgDetailResponseSchema,
|
|
824
|
+
OrgListItemSchema,
|
|
825
|
+
OrgResponseSchema,
|
|
495
826
|
ParticipantSchema,
|
|
496
827
|
SUPPORTED_FIELDS,
|
|
497
828
|
TrackScanRequestSchema,
|
|
498
829
|
TrackScanResponseSchema,
|
|
499
830
|
TurnCredentialsResponseSchema,
|
|
500
831
|
UpdateEventSchema,
|
|
832
|
+
UpdateMemberRoleSchema,
|
|
833
|
+
UpdateOrganisationSchema,
|
|
501
834
|
UploadPresignedUrlSchema,
|
|
502
835
|
VerifyRequestSchema,
|
|
503
836
|
VerifyResponseSchema,
|
|
@@ -507,6 +840,11 @@ var contract = c8.router({
|
|
|
507
840
|
checkinContract,
|
|
508
841
|
contract,
|
|
509
842
|
eventsContract,
|
|
843
|
+
orgCredentialsContract,
|
|
844
|
+
orgCrudContract,
|
|
845
|
+
orgInvitationsContract,
|
|
846
|
+
orgMembersContract,
|
|
847
|
+
organisationsContract,
|
|
510
848
|
trackingContract,
|
|
511
849
|
turnContract,
|
|
512
850
|
uploadsContract
|
package/dist/index.js.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":["import_core","import_core","import_zod","c","import_core","import_zod","c","import_core","import_zod","c","import_core","import_zod","c","import_core","import_zod","c","import_core","import_zod","c","c"]}
|
|
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":["import_core","import_core","import_zod","c","import_core","import_zod","c","import_core","import_zod","c","import_core","import_zod","c","import_core","import_zod","c","import_core","import_zod","c","import_core","import_zod","c","SECURITY","c"]}
|