@1mtx/did-api-contract 1.1.1 → 1.1.2
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 +15 -15
- package/dist/index.d.ts +15 -15
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1737,7 +1737,7 @@ declare const orgCrudContract: {
|
|
|
1737
1737
|
}>;
|
|
1738
1738
|
};
|
|
1739
1739
|
};
|
|
1740
|
-
|
|
1740
|
+
createOrg: {
|
|
1741
1741
|
metadata: {
|
|
1742
1742
|
openApiTags: string[];
|
|
1743
1743
|
openApiSecurity: {
|
|
@@ -1805,7 +1805,7 @@ declare const orgCrudContract: {
|
|
|
1805
1805
|
}>;
|
|
1806
1806
|
};
|
|
1807
1807
|
};
|
|
1808
|
-
|
|
1808
|
+
listOrgs: {
|
|
1809
1809
|
metadata: {
|
|
1810
1810
|
openApiTags: string[];
|
|
1811
1811
|
openApiSecurity: {
|
|
@@ -1857,7 +1857,7 @@ declare const orgCrudContract: {
|
|
|
1857
1857
|
}>;
|
|
1858
1858
|
};
|
|
1859
1859
|
};
|
|
1860
|
-
|
|
1860
|
+
getOrgById: {
|
|
1861
1861
|
metadata: {
|
|
1862
1862
|
openApiTags: string[];
|
|
1863
1863
|
openApiSecurity: {
|
|
@@ -1957,7 +1957,7 @@ declare const orgCrudContract: {
|
|
|
1957
1957
|
}>;
|
|
1958
1958
|
};
|
|
1959
1959
|
};
|
|
1960
|
-
|
|
1960
|
+
updateOrg: {
|
|
1961
1961
|
metadata: {
|
|
1962
1962
|
openApiTags: string[];
|
|
1963
1963
|
openApiSecurity: {
|
|
@@ -2039,7 +2039,7 @@ declare const orgCrudContract: {
|
|
|
2039
2039
|
}>;
|
|
2040
2040
|
};
|
|
2041
2041
|
};
|
|
2042
|
-
|
|
2042
|
+
deleteOrg: {
|
|
2043
2043
|
metadata: {
|
|
2044
2044
|
openApiTags: string[];
|
|
2045
2045
|
openApiSecurity: {
|
|
@@ -2662,7 +2662,7 @@ declare const organisationsContract: {
|
|
|
2662
2662
|
}>;
|
|
2663
2663
|
};
|
|
2664
2664
|
};
|
|
2665
|
-
|
|
2665
|
+
createOrg: {
|
|
2666
2666
|
metadata: {
|
|
2667
2667
|
openApiTags: string[];
|
|
2668
2668
|
openApiSecurity: {
|
|
@@ -2730,7 +2730,7 @@ declare const organisationsContract: {
|
|
|
2730
2730
|
}>;
|
|
2731
2731
|
};
|
|
2732
2732
|
};
|
|
2733
|
-
|
|
2733
|
+
listOrgs: {
|
|
2734
2734
|
metadata: {
|
|
2735
2735
|
openApiTags: string[];
|
|
2736
2736
|
openApiSecurity: {
|
|
@@ -2782,7 +2782,7 @@ declare const organisationsContract: {
|
|
|
2782
2782
|
}>;
|
|
2783
2783
|
};
|
|
2784
2784
|
};
|
|
2785
|
-
|
|
2785
|
+
getOrgById: {
|
|
2786
2786
|
metadata: {
|
|
2787
2787
|
openApiTags: string[];
|
|
2788
2788
|
openApiSecurity: {
|
|
@@ -2882,7 +2882,7 @@ declare const organisationsContract: {
|
|
|
2882
2882
|
}>;
|
|
2883
2883
|
};
|
|
2884
2884
|
};
|
|
2885
|
-
|
|
2885
|
+
updateOrg: {
|
|
2886
2886
|
metadata: {
|
|
2887
2887
|
openApiTags: string[];
|
|
2888
2888
|
openApiSecurity: {
|
|
@@ -2964,7 +2964,7 @@ declare const organisationsContract: {
|
|
|
2964
2964
|
}>;
|
|
2965
2965
|
};
|
|
2966
2966
|
};
|
|
2967
|
-
|
|
2967
|
+
deleteOrg: {
|
|
2968
2968
|
metadata: {
|
|
2969
2969
|
openApiTags: string[];
|
|
2970
2970
|
openApiSecurity: {
|
|
@@ -4590,7 +4590,7 @@ declare const contract: {
|
|
|
4590
4590
|
}>;
|
|
4591
4591
|
};
|
|
4592
4592
|
};
|
|
4593
|
-
|
|
4593
|
+
createOrg: {
|
|
4594
4594
|
metadata: {
|
|
4595
4595
|
openApiTags: string[];
|
|
4596
4596
|
openApiSecurity: {
|
|
@@ -4658,7 +4658,7 @@ declare const contract: {
|
|
|
4658
4658
|
}>;
|
|
4659
4659
|
};
|
|
4660
4660
|
};
|
|
4661
|
-
|
|
4661
|
+
listOrgs: {
|
|
4662
4662
|
metadata: {
|
|
4663
4663
|
openApiTags: string[];
|
|
4664
4664
|
openApiSecurity: {
|
|
@@ -4710,7 +4710,7 @@ declare const contract: {
|
|
|
4710
4710
|
}>;
|
|
4711
4711
|
};
|
|
4712
4712
|
};
|
|
4713
|
-
|
|
4713
|
+
getOrgById: {
|
|
4714
4714
|
metadata: {
|
|
4715
4715
|
openApiTags: string[];
|
|
4716
4716
|
openApiSecurity: {
|
|
@@ -4810,7 +4810,7 @@ declare const contract: {
|
|
|
4810
4810
|
}>;
|
|
4811
4811
|
};
|
|
4812
4812
|
};
|
|
4813
|
-
|
|
4813
|
+
updateOrg: {
|
|
4814
4814
|
metadata: {
|
|
4815
4815
|
openApiTags: string[];
|
|
4816
4816
|
openApiSecurity: {
|
|
@@ -4892,7 +4892,7 @@ declare const contract: {
|
|
|
4892
4892
|
}>;
|
|
4893
4893
|
};
|
|
4894
4894
|
};
|
|
4895
|
-
|
|
4895
|
+
deleteOrg: {
|
|
4896
4896
|
metadata: {
|
|
4897
4897
|
openApiTags: string[];
|
|
4898
4898
|
openApiSecurity: {
|
package/dist/index.d.ts
CHANGED
|
@@ -1737,7 +1737,7 @@ declare const orgCrudContract: {
|
|
|
1737
1737
|
}>;
|
|
1738
1738
|
};
|
|
1739
1739
|
};
|
|
1740
|
-
|
|
1740
|
+
createOrg: {
|
|
1741
1741
|
metadata: {
|
|
1742
1742
|
openApiTags: string[];
|
|
1743
1743
|
openApiSecurity: {
|
|
@@ -1805,7 +1805,7 @@ declare const orgCrudContract: {
|
|
|
1805
1805
|
}>;
|
|
1806
1806
|
};
|
|
1807
1807
|
};
|
|
1808
|
-
|
|
1808
|
+
listOrgs: {
|
|
1809
1809
|
metadata: {
|
|
1810
1810
|
openApiTags: string[];
|
|
1811
1811
|
openApiSecurity: {
|
|
@@ -1857,7 +1857,7 @@ declare const orgCrudContract: {
|
|
|
1857
1857
|
}>;
|
|
1858
1858
|
};
|
|
1859
1859
|
};
|
|
1860
|
-
|
|
1860
|
+
getOrgById: {
|
|
1861
1861
|
metadata: {
|
|
1862
1862
|
openApiTags: string[];
|
|
1863
1863
|
openApiSecurity: {
|
|
@@ -1957,7 +1957,7 @@ declare const orgCrudContract: {
|
|
|
1957
1957
|
}>;
|
|
1958
1958
|
};
|
|
1959
1959
|
};
|
|
1960
|
-
|
|
1960
|
+
updateOrg: {
|
|
1961
1961
|
metadata: {
|
|
1962
1962
|
openApiTags: string[];
|
|
1963
1963
|
openApiSecurity: {
|
|
@@ -2039,7 +2039,7 @@ declare const orgCrudContract: {
|
|
|
2039
2039
|
}>;
|
|
2040
2040
|
};
|
|
2041
2041
|
};
|
|
2042
|
-
|
|
2042
|
+
deleteOrg: {
|
|
2043
2043
|
metadata: {
|
|
2044
2044
|
openApiTags: string[];
|
|
2045
2045
|
openApiSecurity: {
|
|
@@ -2662,7 +2662,7 @@ declare const organisationsContract: {
|
|
|
2662
2662
|
}>;
|
|
2663
2663
|
};
|
|
2664
2664
|
};
|
|
2665
|
-
|
|
2665
|
+
createOrg: {
|
|
2666
2666
|
metadata: {
|
|
2667
2667
|
openApiTags: string[];
|
|
2668
2668
|
openApiSecurity: {
|
|
@@ -2730,7 +2730,7 @@ declare const organisationsContract: {
|
|
|
2730
2730
|
}>;
|
|
2731
2731
|
};
|
|
2732
2732
|
};
|
|
2733
|
-
|
|
2733
|
+
listOrgs: {
|
|
2734
2734
|
metadata: {
|
|
2735
2735
|
openApiTags: string[];
|
|
2736
2736
|
openApiSecurity: {
|
|
@@ -2782,7 +2782,7 @@ declare const organisationsContract: {
|
|
|
2782
2782
|
}>;
|
|
2783
2783
|
};
|
|
2784
2784
|
};
|
|
2785
|
-
|
|
2785
|
+
getOrgById: {
|
|
2786
2786
|
metadata: {
|
|
2787
2787
|
openApiTags: string[];
|
|
2788
2788
|
openApiSecurity: {
|
|
@@ -2882,7 +2882,7 @@ declare const organisationsContract: {
|
|
|
2882
2882
|
}>;
|
|
2883
2883
|
};
|
|
2884
2884
|
};
|
|
2885
|
-
|
|
2885
|
+
updateOrg: {
|
|
2886
2886
|
metadata: {
|
|
2887
2887
|
openApiTags: string[];
|
|
2888
2888
|
openApiSecurity: {
|
|
@@ -2964,7 +2964,7 @@ declare const organisationsContract: {
|
|
|
2964
2964
|
}>;
|
|
2965
2965
|
};
|
|
2966
2966
|
};
|
|
2967
|
-
|
|
2967
|
+
deleteOrg: {
|
|
2968
2968
|
metadata: {
|
|
2969
2969
|
openApiTags: string[];
|
|
2970
2970
|
openApiSecurity: {
|
|
@@ -4590,7 +4590,7 @@ declare const contract: {
|
|
|
4590
4590
|
}>;
|
|
4591
4591
|
};
|
|
4592
4592
|
};
|
|
4593
|
-
|
|
4593
|
+
createOrg: {
|
|
4594
4594
|
metadata: {
|
|
4595
4595
|
openApiTags: string[];
|
|
4596
4596
|
openApiSecurity: {
|
|
@@ -4658,7 +4658,7 @@ declare const contract: {
|
|
|
4658
4658
|
}>;
|
|
4659
4659
|
};
|
|
4660
4660
|
};
|
|
4661
|
-
|
|
4661
|
+
listOrgs: {
|
|
4662
4662
|
metadata: {
|
|
4663
4663
|
openApiTags: string[];
|
|
4664
4664
|
openApiSecurity: {
|
|
@@ -4710,7 +4710,7 @@ declare const contract: {
|
|
|
4710
4710
|
}>;
|
|
4711
4711
|
};
|
|
4712
4712
|
};
|
|
4713
|
-
|
|
4713
|
+
getOrgById: {
|
|
4714
4714
|
metadata: {
|
|
4715
4715
|
openApiTags: string[];
|
|
4716
4716
|
openApiSecurity: {
|
|
@@ -4810,7 +4810,7 @@ declare const contract: {
|
|
|
4810
4810
|
}>;
|
|
4811
4811
|
};
|
|
4812
4812
|
};
|
|
4813
|
-
|
|
4813
|
+
updateOrg: {
|
|
4814
4814
|
metadata: {
|
|
4815
4815
|
openApiTags: string[];
|
|
4816
4816
|
openApiSecurity: {
|
|
@@ -4892,7 +4892,7 @@ declare const contract: {
|
|
|
4892
4892
|
}>;
|
|
4893
4893
|
};
|
|
4894
4894
|
};
|
|
4895
|
-
|
|
4895
|
+
deleteOrg: {
|
|
4896
4896
|
metadata: {
|
|
4897
4897
|
openApiTags: string[];
|
|
4898
4898
|
openApiSecurity: {
|
package/dist/index.js
CHANGED
|
@@ -570,7 +570,7 @@ var orgCrudContract = c8.router({
|
|
|
570
570
|
summary: "Get VP request for creating an organisation",
|
|
571
571
|
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
572
572
|
},
|
|
573
|
-
|
|
573
|
+
createOrg: {
|
|
574
574
|
method: "POST",
|
|
575
575
|
path: "/v1/organisations",
|
|
576
576
|
body: CreateOrganisationSchema,
|
|
@@ -582,7 +582,7 @@ var orgCrudContract = c8.router({
|
|
|
582
582
|
summary: "Create a new organisation (requires CCCD VP)",
|
|
583
583
|
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
584
584
|
},
|
|
585
|
-
|
|
585
|
+
listOrgs: {
|
|
586
586
|
method: "GET",
|
|
587
587
|
path: "/v1/organisations",
|
|
588
588
|
responses: {
|
|
@@ -592,7 +592,7 @@ var orgCrudContract = c8.router({
|
|
|
592
592
|
summary: "List user's organisations",
|
|
593
593
|
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
594
594
|
},
|
|
595
|
-
|
|
595
|
+
getOrgById: {
|
|
596
596
|
method: "GET",
|
|
597
597
|
path: "/v1/organisations/:orgId",
|
|
598
598
|
responses: {
|
|
@@ -604,7 +604,7 @@ var orgCrudContract = c8.router({
|
|
|
604
604
|
summary: "Get organisation details (members only)",
|
|
605
605
|
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
606
606
|
},
|
|
607
|
-
|
|
607
|
+
updateOrg: {
|
|
608
608
|
method: "PATCH",
|
|
609
609
|
path: "/v1/organisations/:orgId",
|
|
610
610
|
body: UpdateOrganisationSchema,
|
|
@@ -618,7 +618,7 @@ var orgCrudContract = c8.router({
|
|
|
618
618
|
summary: "Update organisation details (owner/admin only)",
|
|
619
619
|
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
620
620
|
},
|
|
621
|
-
|
|
621
|
+
deleteOrg: {
|
|
622
622
|
method: "DELETE",
|
|
623
623
|
path: "/v1/organisations/:orgId",
|
|
624
624
|
body: c8.noBody(),
|
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","../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"]}
|
|
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 createOrg: {\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 listOrgs: {\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 getOrgById: {\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 updateOrg: {\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 deleteOrg: {\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"]}
|
package/dist/index.mjs
CHANGED
|
@@ -504,7 +504,7 @@ var orgCrudContract = c8.router({
|
|
|
504
504
|
summary: "Get VP request for creating an organisation",
|
|
505
505
|
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
506
506
|
},
|
|
507
|
-
|
|
507
|
+
createOrg: {
|
|
508
508
|
method: "POST",
|
|
509
509
|
path: "/v1/organisations",
|
|
510
510
|
body: CreateOrganisationSchema,
|
|
@@ -516,7 +516,7 @@ var orgCrudContract = c8.router({
|
|
|
516
516
|
summary: "Create a new organisation (requires CCCD VP)",
|
|
517
517
|
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
518
518
|
},
|
|
519
|
-
|
|
519
|
+
listOrgs: {
|
|
520
520
|
method: "GET",
|
|
521
521
|
path: "/v1/organisations",
|
|
522
522
|
responses: {
|
|
@@ -526,7 +526,7 @@ var orgCrudContract = c8.router({
|
|
|
526
526
|
summary: "List user's organisations",
|
|
527
527
|
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
528
528
|
},
|
|
529
|
-
|
|
529
|
+
getOrgById: {
|
|
530
530
|
method: "GET",
|
|
531
531
|
path: "/v1/organisations/:orgId",
|
|
532
532
|
responses: {
|
|
@@ -538,7 +538,7 @@ var orgCrudContract = c8.router({
|
|
|
538
538
|
summary: "Get organisation details (members only)",
|
|
539
539
|
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
540
540
|
},
|
|
541
|
-
|
|
541
|
+
updateOrg: {
|
|
542
542
|
method: "PATCH",
|
|
543
543
|
path: "/v1/organisations/:orgId",
|
|
544
544
|
body: UpdateOrganisationSchema,
|
|
@@ -552,7 +552,7 @@ var orgCrudContract = c8.router({
|
|
|
552
552
|
summary: "Update organisation details (owner/admin only)",
|
|
553
553
|
metadata: { openApiTags: ["Organisations"], openApiSecurity: SECURITY2 }
|
|
554
554
|
},
|
|
555
|
-
|
|
555
|
+
deleteOrg: {
|
|
556
556
|
method: "DELETE",
|
|
557
557
|
path: "/v1/organisations/:orgId",
|
|
558
558
|
body: c8.noBody(),
|
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","../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"]}
|
|
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 createOrg: {\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 listOrgs: {\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 getOrgById: {\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 updateOrg: {\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 deleteOrg: {\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"]}
|