@tsg-dsp/tsg-sdk 0.0.0-stage → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +362 -2
  3. package/dist/.generated/control-plane.d.ts +7825 -0
  4. package/dist/.generated/sso-bridge.d.ts +3999 -0
  5. package/dist/.generated/wallet.d.ts +6248 -0
  6. package/dist/auth/auth.provider.d.ts +49 -0
  7. package/dist/auth/auth.provider.d.ts.map +1 -0
  8. package/dist/auth/auth.provider.js +166 -0
  9. package/dist/auth/auth.provider.js.map +1 -0
  10. package/dist/auth/auth.types.d.ts +27 -0
  11. package/dist/auth/auth.types.d.ts.map +1 -0
  12. package/dist/auth/auth.types.js +2 -0
  13. package/dist/auth/auth.types.js.map +1 -0
  14. package/dist/auth/index.d.ts +3 -0
  15. package/dist/auth/index.d.ts.map +1 -0
  16. package/dist/auth/index.js +3 -0
  17. package/dist/auth/index.js.map +1 -0
  18. package/dist/browser.d.ts +1245 -0
  19. package/dist/browser.d.ts.map +1 -0
  20. package/dist/browser.js +228 -0
  21. package/dist/browser.js.map +1 -0
  22. package/dist/catalog/catalog.sdk.d.ts +149 -0
  23. package/dist/catalog/catalog.sdk.d.ts.map +1 -0
  24. package/dist/catalog/catalog.sdk.js +155 -0
  25. package/dist/catalog/catalog.sdk.js.map +1 -0
  26. package/dist/catalog/index.d.ts +2 -0
  27. package/dist/catalog/index.d.ts.map +1 -0
  28. package/dist/catalog/index.js +2 -0
  29. package/dist/catalog/index.js.map +1 -0
  30. package/dist/client.d.ts +43 -0
  31. package/dist/client.d.ts.map +1 -0
  32. package/dist/client.js +109 -0
  33. package/dist/client.js.map +1 -0
  34. package/dist/config/index.d.ts +2 -0
  35. package/dist/config/index.d.ts.map +1 -0
  36. package/dist/config/index.js +2 -0
  37. package/dist/config/index.js.map +1 -0
  38. package/dist/config/sdk.config.d.ts +97 -0
  39. package/dist/config/sdk.config.d.ts.map +1 -0
  40. package/dist/config/sdk.config.js +2 -0
  41. package/dist/config/sdk.config.js.map +1 -0
  42. package/dist/index.d.ts +18 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +25 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/metadata/index.d.ts +2 -0
  47. package/dist/metadata/index.d.ts.map +1 -0
  48. package/dist/metadata/index.js +2 -0
  49. package/dist/metadata/index.js.map +1 -0
  50. package/dist/metadata/metadata.sdk.d.ts +114 -0
  51. package/dist/metadata/metadata.sdk.d.ts.map +1 -0
  52. package/dist/metadata/metadata.sdk.js +145 -0
  53. package/dist/metadata/metadata.sdk.js.map +1 -0
  54. package/dist/negotiations/index.d.ts +2 -0
  55. package/dist/negotiations/index.d.ts.map +1 -0
  56. package/dist/negotiations/index.js +2 -0
  57. package/dist/negotiations/index.js.map +1 -0
  58. package/dist/negotiations/negotiations.sdk.d.ts +113 -0
  59. package/dist/negotiations/negotiations.sdk.d.ts.map +1 -0
  60. package/dist/negotiations/negotiations.sdk.js +146 -0
  61. package/dist/negotiations/negotiations.sdk.js.map +1 -0
  62. package/dist/requirements/index.d.ts +2 -0
  63. package/dist/requirements/index.d.ts.map +1 -0
  64. package/dist/requirements/index.js +2 -0
  65. package/dist/requirements/index.js.map +1 -0
  66. package/dist/requirements/requirements.sdk.d.ts +52 -0
  67. package/dist/requirements/requirements.sdk.d.ts.map +1 -0
  68. package/dist/requirements/requirements.sdk.js +123 -0
  69. package/dist/requirements/requirements.sdk.js.map +1 -0
  70. package/dist/sso/index.d.ts +3 -0
  71. package/dist/sso/index.d.ts.map +1 -0
  72. package/dist/sso/index.js +3 -0
  73. package/dist/sso/index.js.map +1 -0
  74. package/dist/sso/sso-management.sdk.d.ts +96 -0
  75. package/dist/sso/sso-management.sdk.d.ts.map +1 -0
  76. package/dist/sso/sso-management.sdk.js +152 -0
  77. package/dist/sso/sso-management.sdk.js.map +1 -0
  78. package/dist/sso/sso.sdk.d.ts +75 -0
  79. package/dist/sso/sso.sdk.d.ts.map +1 -0
  80. package/dist/sso/sso.sdk.js +149 -0
  81. package/dist/sso/sso.sdk.js.map +1 -0
  82. package/dist/tenants/tenant-management.sdk.d.ts +48 -0
  83. package/dist/tenants/tenant-management.sdk.d.ts.map +1 -0
  84. package/dist/tenants/tenant-management.sdk.js +107 -0
  85. package/dist/tenants/tenant-management.sdk.js.map +1 -0
  86. package/dist/transfers/index.d.ts +2 -0
  87. package/dist/transfers/index.d.ts.map +1 -0
  88. package/dist/transfers/index.js +2 -0
  89. package/dist/transfers/index.js.map +1 -0
  90. package/dist/transfers/transfers.sdk.d.ts +174 -0
  91. package/dist/transfers/transfers.sdk.d.ts.map +1 -0
  92. package/dist/transfers/transfers.sdk.js +200 -0
  93. package/dist/transfers/transfers.sdk.js.map +1 -0
  94. package/dist/tsg-sdk.d.ts +68 -0
  95. package/dist/tsg-sdk.d.ts.map +1 -0
  96. package/dist/tsg-sdk.js +145 -0
  97. package/dist/tsg-sdk.js.map +1 -0
  98. package/dist/utils/errors.d.ts +67 -0
  99. package/dist/utils/errors.d.ts.map +1 -0
  100. package/dist/utils/errors.js +79 -0
  101. package/dist/utils/errors.js.map +1 -0
  102. package/dist/utils/index.d.ts +5 -0
  103. package/dist/utils/index.d.ts.map +1 -0
  104. package/dist/utils/index.js +5 -0
  105. package/dist/utils/index.js.map +1 -0
  106. package/dist/utils/polling.d.ts +20 -0
  107. package/dist/utils/polling.d.ts.map +1 -0
  108. package/dist/utils/polling.js +35 -0
  109. package/dist/utils/polling.js.map +1 -0
  110. package/dist/utils/reason.d.ts +16 -0
  111. package/dist/utils/reason.d.ts.map +1 -0
  112. package/dist/utils/reason.js +34 -0
  113. package/dist/utils/reason.js.map +1 -0
  114. package/dist/utils/shape-validation.d.ts +59 -0
  115. package/dist/utils/shape-validation.d.ts.map +1 -0
  116. package/dist/utils/shape-validation.js +85 -0
  117. package/dist/utils/shape-validation.js.map +1 -0
  118. package/dist/utils/validate.d.ts +47 -0
  119. package/dist/utils/validate.d.ts.map +1 -0
  120. package/dist/utils/validate.js +68 -0
  121. package/dist/utils/validate.js.map +1 -0
  122. package/dist/vendor/common-dtos/abac.policy.d.ts +69 -0
  123. package/dist/vendor/common-dtos/abac.policy.js +5 -0
  124. package/dist/vendor/common-dtos/audit.types.d.ts +74 -0
  125. package/dist/vendor/common-dtos/audit.types.js +8 -0
  126. package/dist/vendor/common-dtos/credential-requirements.d.ts +18 -0
  127. package/dist/vendor/common-dtos/credential-requirements.dto.d.ts +46 -0
  128. package/dist/vendor/common-dtos/credential-requirements.dto.js +250 -0
  129. package/dist/vendor/common-dtos/credential-requirements.js +180 -0
  130. package/dist/vendor/common-dtos/dataplane.dto.d.ts +5 -0
  131. package/dist/vendor/common-dtos/dataplane.dto.js +28 -0
  132. package/dist/vendor/common-dtos/dcp.dto.d.ts +89 -0
  133. package/dist/vendor/common-dtos/dcp.dto.js +489 -0
  134. package/dist/vendor/common-dtos/dcql.dto.d.ts +88 -0
  135. package/dist/vendor/common-dtos/dcql.dto.js +449 -0
  136. package/dist/vendor/common-dtos/did.schemas.d.ts +39 -0
  137. package/dist/vendor/common-dtos/did.schemas.js +259 -0
  138. package/dist/vendor/common-dtos/index.d.ts +19 -0
  139. package/dist/vendor/common-dtos/index.js +19 -0
  140. package/dist/vendor/common-dtos/metadata.dto.d.ts +5 -0
  141. package/dist/vendor/common-dtos/metadata.dto.js +29 -0
  142. package/dist/vendor/common-dtos/negotiations.dto.d.ts +28 -0
  143. package/dist/vendor/common-dtos/negotiations.dto.js +204 -0
  144. package/dist/vendor/common-dtos/permission-resources.d.ts +3 -0
  145. package/dist/vendor/common-dtos/permission-resources.js +18 -0
  146. package/dist/vendor/common-dtos/permissions.d.ts +242 -0
  147. package/dist/vendor/common-dtos/permissions.js +409 -0
  148. package/dist/vendor/common-dtos/presentation.request.dto.d.ts +8 -0
  149. package/dist/vendor/common-dtos/presentation.request.dto.js +54 -0
  150. package/dist/vendor/common-dtos/presentation.status.dto.d.ts +12 -0
  151. package/dist/vendor/common-dtos/presentation.status.dto.js +82 -0
  152. package/dist/vendor/common-dtos/presentationdefinition.dto.d.ts +74 -0
  153. package/dist/vendor/common-dtos/presentationdefinition.dto.js +447 -0
  154. package/dist/vendor/common-dtos/signatures.dto.d.ts +31 -0
  155. package/dist/vendor/common-dtos/signatures.dto.js +209 -0
  156. package/dist/vendor/common-dtos/transfer.dto.d.ts +16 -0
  157. package/dist/vendor/common-dtos/transfer.dto.js +101 -0
  158. package/dist/vendor/common-dtos/utils.swagger.d.ts +12 -0
  159. package/dist/vendor/common-dtos/utils.swagger.js +62 -0
  160. package/dist/vendor/control-plane-dtos/index.d.ts +4 -0
  161. package/dist/vendor/control-plane-dtos/index.js +4 -0
  162. package/dist/vendor/control-plane-dtos/registry/registry.dto.d.ts +4 -0
  163. package/dist/vendor/control-plane-dtos/registry/registry.dto.js +25 -0
  164. package/dist/vendor/control-plane-dtos/registry/registry.search.dto.d.ts +28 -0
  165. package/dist/vendor/control-plane-dtos/registry/registry.search.dto.js +126 -0
  166. package/dist/vendor/control-plane-dtos/ssi/verifiablePresentations.dto.d.ts +9 -0
  167. package/dist/vendor/control-plane-dtos/ssi/verifiablePresentations.dto.js +43 -0
  168. package/dist/vendor/control-plane-dtos/status/status.dto.d.ts +37 -0
  169. package/dist/vendor/control-plane-dtos/status/status.dto.js +172 -0
  170. package/dist/vendor/sso-bridge-dtos/clients.dto.d.ts +25 -0
  171. package/dist/vendor/sso-bridge-dtos/clients.dto.js +147 -0
  172. package/dist/vendor/sso-bridge-dtos/grants.d.ts +4 -0
  173. package/dist/vendor/sso-bridge-dtos/grants.js +7 -0
  174. package/dist/vendor/sso-bridge-dtos/index.d.ts +5 -0
  175. package/dist/vendor/sso-bridge-dtos/index.js +5 -0
  176. package/dist/vendor/sso-bridge-dtos/tenant.dto.d.ts +70 -0
  177. package/dist/vendor/sso-bridge-dtos/tenant.dto.js +1 -0
  178. package/dist/vendor/sso-bridge-dtos/users.dto.d.ts +42 -0
  179. package/dist/vendor/sso-bridge-dtos/users.dto.js +173 -0
  180. package/dist/vendor/tenant-dtos/authorization.dto.d.ts +46 -0
  181. package/dist/vendor/tenant-dtos/authorization.dto.js +5 -0
  182. package/dist/vendor/tenant-dtos/consumer.dto.d.ts +29 -0
  183. package/dist/vendor/tenant-dtos/consumer.dto.js +1 -0
  184. package/dist/vendor/tenant-dtos/fixtures.d.ts +15 -0
  185. package/dist/vendor/tenant-dtos/fixtures.js +48 -0
  186. package/dist/vendor/tenant-dtos/index.d.ts +8 -0
  187. package/dist/vendor/tenant-dtos/index.js +8 -0
  188. package/dist/vendor/tenant-dtos/management.dto.d.ts +137 -0
  189. package/dist/vendor/tenant-dtos/management.dto.js +1 -0
  190. package/dist/vendor/tenant-dtos/membership.dto.d.ts +22 -0
  191. package/dist/vendor/tenant-dtos/membership.dto.js +7 -0
  192. package/dist/vendor/tenant-dtos/principal.dto.d.ts +13 -0
  193. package/dist/vendor/tenant-dtos/principal.dto.js +6 -0
  194. package/dist/vendor/tenant-dtos/provisioning.dto.d.ts +47 -0
  195. package/dist/vendor/tenant-dtos/provisioning.dto.js +1 -0
  196. package/dist/vendor/tenant-dtos/service-binding.dto.d.ts +9 -0
  197. package/dist/vendor/tenant-dtos/service-binding.dto.js +1 -0
  198. package/dist/vendor/tenant-dtos/tenant.dto.d.ts +15 -0
  199. package/dist/vendor/tenant-dtos/tenant.dto.js +1 -0
  200. package/dist/vendor/wallet-dtos/clients.dto.d.ts +21 -0
  201. package/dist/vendor/wallet-dtos/clients.dto.js +13 -0
  202. package/dist/vendor/wallet-dtos/credentials.dto.d.ts +31 -0
  203. package/dist/vendor/wallet-dtos/credentials.dto.js +46 -0
  204. package/dist/vendor/wallet-dtos/index.d.ts +6 -0
  205. package/dist/vendor/wallet-dtos/index.js +6 -0
  206. package/dist/vendor/wallet-dtos/issuance.dto.d.ts +237 -0
  207. package/dist/vendor/wallet-dtos/issuance.dto.js +1139 -0
  208. package/dist/vendor/wallet-dtos/scopes.dto.d.ts +24 -0
  209. package/dist/vendor/wallet-dtos/scopes.dto.js +151 -0
  210. package/dist/vendor/wallet-dtos/status.dto.d.ts +35 -0
  211. package/dist/vendor/wallet-dtos/status.dto.js +169 -0
  212. package/dist/vendor/wallet-dtos/utils/schema-converter.d.ts +13 -0
  213. package/dist/vendor/wallet-dtos/utils/schema-converter.js +42 -0
  214. package/dist/wallet/index.d.ts +2 -0
  215. package/dist/wallet/index.d.ts.map +1 -0
  216. package/dist/wallet/index.js +2 -0
  217. package/dist/wallet/index.js.map +1 -0
  218. package/dist/wallet/wallet.sdk.d.ts +285 -0
  219. package/dist/wallet/wallet.sdk.d.ts.map +1 -0
  220. package/dist/wallet/wallet.sdk.js +384 -0
  221. package/dist/wallet/wallet.sdk.js.map +1 -0
  222. package/package.json +79 -3
@@ -0,0 +1,173 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { ApiProperty, ApiPropertyOptional, OmitType, PartialType } from "@nestjs/swagger";
11
+ import { IsArray, IsBoolean, IsEmail, IsNotEmpty, IsOptional, IsString, IsUUID, Matches, MaxLength, MinLength } from "class-validator";
12
+ export class UserDto {
13
+ platformAdministrator;
14
+ id;
15
+ username;
16
+ email;
17
+ permissions;
18
+ grants;
19
+ require2FA;
20
+ }
21
+ __decorate([
22
+ ApiPropertyOptional(),
23
+ IsBoolean(),
24
+ IsOptional(),
25
+ __metadata("design:type", Boolean)
26
+ ], UserDto.prototype, "platformAdministrator", void 0);
27
+ __decorate([
28
+ ApiPropertyOptional({ example: "1" }),
29
+ IsString(),
30
+ IsOptional(),
31
+ __metadata("design:type", String)
32
+ ], UserDto.prototype, "id", void 0);
33
+ __decorate([
34
+ ApiProperty({ example: "johndoe" }),
35
+ IsString(),
36
+ IsNotEmpty(),
37
+ __metadata("design:type", String)
38
+ ], UserDto.prototype, "username", void 0);
39
+ __decorate([
40
+ ApiProperty({ example: "johndoe@example.com" }),
41
+ IsEmail(),
42
+ IsNotEmpty(),
43
+ __metadata("design:type", String)
44
+ ], UserDto.prototype, "email", void 0);
45
+ __decorate([
46
+ ApiProperty({
47
+ example: ["manage:user", "read:config"],
48
+ description: "User permissions (can be permission strings or permission set names)"
49
+ }),
50
+ IsArray(),
51
+ IsNotEmpty(),
52
+ __metadata("design:type", Array)
53
+ ], UserDto.prototype, "permissions", void 0);
54
+ __decorate([
55
+ ApiProperty({ example: ["read", "write"] }),
56
+ IsArray(),
57
+ IsNotEmpty(),
58
+ __metadata("design:type", Array)
59
+ ], UserDto.prototype, "grants", void 0);
60
+ __decorate([
61
+ ApiPropertyOptional({ example: false }),
62
+ IsBoolean(),
63
+ IsOptional(),
64
+ __metadata("design:type", Boolean)
65
+ ], UserDto.prototype, "require2FA", void 0);
66
+ export class UserWithPasswordDto extends UserDto {
67
+ password;
68
+ }
69
+ __decorate([
70
+ ApiPropertyOptional({ example: "strongpassword123" }),
71
+ IsString(),
72
+ IsOptional(),
73
+ __metadata("design:type", String)
74
+ ], UserWithPasswordDto.prototype, "password", void 0);
75
+ export class CreateUserDto extends OmitType(UserWithPasswordDto, [
76
+ "id"
77
+ ]) {
78
+ }
79
+ export class UpdateUserDto extends PartialType(OmitType(UserWithPasswordDto, ["id"])) {
80
+ }
81
+ export class ChangePasswordDto {
82
+ currentPassword;
83
+ newPassword;
84
+ }
85
+ __decorate([
86
+ ApiProperty({ example: "currentpassword123" }),
87
+ IsString(),
88
+ IsNotEmpty(),
89
+ __metadata("design:type", String)
90
+ ], ChangePasswordDto.prototype, "currentPassword", void 0);
91
+ __decorate([
92
+ ApiProperty({ example: "newpassword456" }),
93
+ IsString(),
94
+ IsNotEmpty(),
95
+ __metadata("design:type", String)
96
+ ], ChangePasswordDto.prototype, "newPassword", void 0);
97
+ export class BootstrapSsoAccountDto {
98
+ operationId;
99
+ tenantId;
100
+ userId;
101
+ username;
102
+ email;
103
+ }
104
+ __decorate([
105
+ ApiProperty(),
106
+ IsUUID(),
107
+ __metadata("design:type", String)
108
+ ], BootstrapSsoAccountDto.prototype, "operationId", void 0);
109
+ __decorate([
110
+ ApiProperty(),
111
+ IsUUID(),
112
+ __metadata("design:type", String)
113
+ ], BootstrapSsoAccountDto.prototype, "tenantId", void 0);
114
+ __decorate([
115
+ ApiProperty(),
116
+ IsUUID(),
117
+ __metadata("design:type", String)
118
+ ], BootstrapSsoAccountDto.prototype, "userId", void 0);
119
+ __decorate([
120
+ ApiProperty(),
121
+ Matches(/\S/),
122
+ IsString(),
123
+ IsNotEmpty(),
124
+ MaxLength(100),
125
+ __metadata("design:type", String)
126
+ ], BootstrapSsoAccountDto.prototype, "username", void 0);
127
+ __decorate([
128
+ ApiProperty(),
129
+ IsEmail(),
130
+ MaxLength(254),
131
+ __metadata("design:type", String)
132
+ ], BootstrapSsoAccountDto.prototype, "email", void 0);
133
+ export class ResolveSsoAccountDto {
134
+ issuer;
135
+ subject;
136
+ }
137
+ __decorate([
138
+ ApiProperty(),
139
+ IsString(),
140
+ IsNotEmpty(),
141
+ __metadata("design:type", String)
142
+ ], ResolveSsoAccountDto.prototype, "issuer", void 0);
143
+ __decorate([
144
+ ApiProperty(),
145
+ IsString(),
146
+ IsNotEmpty(),
147
+ __metadata("design:type", String)
148
+ ], ResolveSsoAccountDto.prototype, "subject", void 0);
149
+ export class SetupLinkRequestDto {
150
+ tenantId;
151
+ }
152
+ __decorate([
153
+ ApiProperty(),
154
+ IsUUID(),
155
+ __metadata("design:type", String)
156
+ ], SetupLinkRequestDto.prototype, "tenantId", void 0);
157
+ export class SetupAccountDto {
158
+ token;
159
+ newPassword;
160
+ }
161
+ __decorate([
162
+ ApiProperty(),
163
+ IsString(),
164
+ IsNotEmpty(),
165
+ __metadata("design:type", String)
166
+ ], SetupAccountDto.prototype, "token", void 0);
167
+ __decorate([
168
+ ApiProperty({ minLength: 12, maxLength: 256 }),
169
+ IsString(),
170
+ MinLength(12),
171
+ MaxLength(256),
172
+ __metadata("design:type", String)
173
+ ], SetupAccountDto.prototype, "newPassword", void 0);
@@ -0,0 +1,46 @@
1
+ import type { AuthenticatedActorType, PermissionString } from "../common-dtos/index.js";
2
+ import type { TenantMembership, TenantServiceGrant } from "./membership.dto.js";
3
+ import type { PrincipalMapping } from "./principal.dto.js";
4
+ import type { TenantState } from "./tenant.dto.js";
5
+ /** Authority-issued lifetime, measured from snapshot creation, not delivery. */
6
+ export declare const TENANT_AUTHORIZATION_FRESHNESS_MS = 50000;
7
+ export declare const TENANT_AUTHORIZATION_RENEWAL_MS = 20000;
8
+ /** Consumer acceptance ceiling only; this never extends a snapshot's validUntil. */
9
+ export declare const TENANT_AUTHORIZATION_CLOCK_SKEW_MS = 10000;
10
+ /**
11
+ * A complete snapshot for one target service instance. Tenant Management sends
12
+ * the same revision/content to that service and to SSO for token issuance.
13
+ * An SSO copy retains the target's local identity mappings; copying it does not
14
+ * make SSO the target or a second membership authority.
15
+ */
16
+ export interface TenantAuthorizationProjection {
17
+ contractVersion: 1;
18
+ tenantId: string;
19
+ serviceInstanceId: string;
20
+ authorizationRevision: number;
21
+ state: TenantState;
22
+ memberships: TenantMembership[];
23
+ grants: TenantServiceGrant[];
24
+ principalMappings: PrincipalMapping[];
25
+ /** ISO timestamp from the authority; replay must never extend this deadline. */
26
+ validUntil: string;
27
+ }
28
+ /**
29
+ * Verified API access-token payload; ID tokens do not implement this contract.
30
+ * Managed browser backends retain the access token separately from the login
31
+ * session, bound to this issuer/subject, client, tenant and audience. Each API
32
+ * request still validates the token and current authorization projection.
33
+ */
34
+ export interface TenantAccessTokenClaims {
35
+ iss: string;
36
+ sub: string;
37
+ aud: string;
38
+ exp: number;
39
+ iat: number;
40
+ jti: string;
41
+ client_id: string;
42
+ actor_type: AuthenticatedActorType;
43
+ tenant_id: string;
44
+ authorization_revision: number;
45
+ permissions: PermissionString[];
46
+ }
@@ -0,0 +1,5 @@
1
+ /** Authority-issued lifetime, measured from snapshot creation, not delivery. */
2
+ export const TENANT_AUTHORIZATION_FRESHNESS_MS = 50_000;
3
+ export const TENANT_AUTHORIZATION_RENEWAL_MS = 20_000;
4
+ /** Consumer acceptance ceiling only; this never extends a snapshot's validUntil. */
5
+ export const TENANT_AUTHORIZATION_CLOCK_SKEW_MS = 10_000;
@@ -0,0 +1,29 @@
1
+ import type { EnsureTenantRequest, TenantProvisioningResult, WalletProvisioningOutputs } from "./provisioning.dto.js";
2
+ /** Operator-selected Wallet seed profile. Imported private keys are never accepted here. */
3
+ export interface WalletTenantConfiguration {
4
+ profile: "default";
5
+ localTenantId?: string;
6
+ localTenantSlug?: string;
7
+ controlPlaneUrl?: string;
8
+ }
9
+ export type EnsureWalletTenantRequest = EnsureTenantRequest<WalletTenantConfiguration>;
10
+ export interface TenantWorkloadCredential {
11
+ tokenEndpoint: string;
12
+ clientId: string;
13
+ clientSecret: string;
14
+ audience: string;
15
+ tenantId: string;
16
+ revision: number;
17
+ }
18
+ /** The manager consumes actual Wallet outputs; consumers validate these against operator registrations. */
19
+ export interface ControlPlaneTenantConfiguration {
20
+ wallet: WalletProvisioningOutputs;
21
+ walletCredential: TenantWorkloadCredential;
22
+ localTenantId?: string;
23
+ localTenantSlug?: string;
24
+ profile: string;
25
+ }
26
+ export type EnsureControlPlaneTenantRequest = EnsureTenantRequest<ControlPlaneTenantConfiguration>;
27
+ export type ConsumerProvisioningResult<T> = TenantProvisioningResult<T> & {
28
+ appliedLifecycleRevision: number;
29
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import type { TenantAuthorizationProjection } from "./authorization.dto.js";
2
+ export declare const tenantContractFixtures: {
3
+ readonly tenantA: "019a0010-0000-7000-8000-000000000001";
4
+ readonly tenantB: "019a0010-0000-7000-8000-000000000002";
5
+ readonly alice: {
6
+ readonly issuer: "https://sso.example";
7
+ readonly subject: "alice";
8
+ };
9
+ readonly bob: {
10
+ readonly issuer: "https://sso.example";
11
+ readonly subject: "bob";
12
+ };
13
+ };
14
+ /** Fresh objects for contract tests in SSO, consumers and the future manager. */
15
+ export declare function authorizationFixture(serviceInstanceId: string, validUntil: string): TenantAuthorizationProjection;
@@ -0,0 +1,48 @@
1
+ export const tenantContractFixtures = {
2
+ tenantA: "019a0010-0000-7000-8000-000000000001",
3
+ tenantB: "019a0010-0000-7000-8000-000000000002",
4
+ alice: { issuer: "https://sso.example", subject: "alice" },
5
+ bob: { issuer: "https://sso.example", subject: "bob" }
6
+ };
7
+ /** Fresh objects for contract tests in SSO, consumers and the future manager. */
8
+ export function authorizationFixture(serviceInstanceId, validUntil) {
9
+ const { tenantA, alice, bob } = tenantContractFixtures;
10
+ return {
11
+ contractVersion: 1,
12
+ tenantId: tenantA,
13
+ serviceInstanceId,
14
+ authorizationRevision: 1,
15
+ state: "active",
16
+ validUntil,
17
+ memberships: [
18
+ { tenantId: tenantA, principal: alice, role: "owner", status: "active" },
19
+ { tenantId: tenantA, principal: bob, role: "member", status: "active" }
20
+ ],
21
+ grants: [
22
+ {
23
+ tenantId: tenantA,
24
+ principal: alice,
25
+ serviceInstanceId,
26
+ permissions: ["manage:w.key"]
27
+ },
28
+ {
29
+ tenantId: tenantA,
30
+ principal: bob,
31
+ serviceInstanceId,
32
+ permissions: ["read:w.key"]
33
+ }
34
+ ],
35
+ principalMappings: [
36
+ {
37
+ principal: alice,
38
+ localSubject: "alice-local",
39
+ ownershipAliases: ["user:alice-local"]
40
+ },
41
+ {
42
+ principal: bob,
43
+ localSubject: "bob-local",
44
+ ownershipAliases: ["user:bob-local"]
45
+ }
46
+ ]
47
+ };
48
+ }
@@ -0,0 +1,8 @@
1
+ export * from "./authorization.dto.js";
2
+ export * from "./consumer.dto.js";
3
+ export * from "./management.dto.js";
4
+ export * from "./membership.dto.js";
5
+ export * from "./principal.dto.js";
6
+ export * from "./provisioning.dto.js";
7
+ export * from "./service-binding.dto.js";
8
+ export * from "./tenant.dto.js";
@@ -0,0 +1,8 @@
1
+ export * from "./authorization.dto.js";
2
+ export * from "./consumer.dto.js";
3
+ export * from "./management.dto.js";
4
+ export * from "./membership.dto.js";
5
+ export * from "./principal.dto.js";
6
+ export * from "./provisioning.dto.js";
7
+ export * from "./service-binding.dto.js";
8
+ export * from "./tenant.dto.js";
@@ -0,0 +1,137 @@
1
+ import type { PermissionString } from "../common-dtos/index.js";
2
+ import type { TenantMembership, TenantServiceGrant } from "./membership.dto.js";
3
+ import type { PrincipalMapping, PrincipalRef } from "./principal.dto.js";
4
+ import type { TenantProvisioningResult } from "./provisioning.dto.js";
5
+ import type { TenantState } from "./tenant.dto.js";
6
+ export interface CreateManagedTenant {
7
+ name: string;
8
+ slug: string;
9
+ profile: string;
10
+ }
11
+ export type TenantAccountSelector = {
12
+ kind: "existing";
13
+ principal: PrincipalRef;
14
+ } | {
15
+ kind: "new";
16
+ username: string;
17
+ email: string;
18
+ };
19
+ export interface CreatePlatformTenant extends CreateManagedTenant {
20
+ owner: TenantAccountSelector;
21
+ }
22
+ export interface AddManagedTenantAccount {
23
+ revision: number;
24
+ account: TenantAccountSelector;
25
+ role: "admin" | "member";
26
+ grants: Array<{
27
+ serviceInstanceId: string;
28
+ permissions: PermissionString[];
29
+ }>;
30
+ }
31
+ export interface AccountSetupLink {
32
+ /** Present only when email delivery is disabled. */
33
+ url?: string;
34
+ expiresAt: number;
35
+ notificationSent: boolean;
36
+ }
37
+ export interface TenantManagementCapabilities {
38
+ canCreate: boolean;
39
+ isPlatformAdministrator?: boolean;
40
+ profileOwnerGrants?: Record<string, Record<string, PermissionString[]>>;
41
+ profiles: string[];
42
+ applications?: Array<{
43
+ id: string;
44
+ name: string;
45
+ uiUrl: string;
46
+ serviceInstanceId: string;
47
+ profiles: string[];
48
+ permissions: PermissionString[];
49
+ }>;
50
+ services: Array<{
51
+ serviceInstanceId: string;
52
+ kind: "wallet" | "control-plane" | "generic" | "sso";
53
+ uiUrl?: string;
54
+ }>;
55
+ }
56
+ export interface TenantAuditEntry {
57
+ id: string;
58
+ tenantId: string;
59
+ revision: number;
60
+ action: string;
61
+ principal: PrincipalRef;
62
+ occurredAt: number;
63
+ }
64
+ export interface ManagedTenantSummary {
65
+ id: string;
66
+ slug: string;
67
+ name: string;
68
+ profile: string;
69
+ state: TenantState;
70
+ desiredState: TenantState;
71
+ revision: number;
72
+ authorizationRevision: number;
73
+ configurationRevision: number;
74
+ memberships: TenantMembership[];
75
+ /** Human-readable metadata from the tenant's registered identity provider. Never an authorization selector. */
76
+ principalNames?: PrincipalDisplayName[];
77
+ grants: TenantServiceGrant[];
78
+ mappings: Record<string, PrincipalMapping[]>;
79
+ bindings: Array<{
80
+ serviceInstanceId: string;
81
+ configurationRevision: number;
82
+ localTenantId?: string;
83
+ observed?: TenantProvisioningResult<Record<string, unknown>>;
84
+ }>;
85
+ }
86
+ export interface PrincipalDisplayName {
87
+ principal: PrincipalRef;
88
+ name: string;
89
+ /** Account was created through manager provisioning and has not completed setup. */
90
+ setupPending?: boolean;
91
+ /** The current tenant initiated provisioning, so its admins may issue a setup link. */
92
+ canIssueSetupLink?: boolean;
93
+ }
94
+ export interface TenantOperationSummary {
95
+ id: string;
96
+ tenantId: string;
97
+ kind: TenantOperationKind;
98
+ revision: number;
99
+ state: "pending" | "running" | "succeeded" | "superseded" | "failed";
100
+ attempts: number;
101
+ nextAttemptAt: number;
102
+ errorCode?: string | null;
103
+ /** Epoch milliseconds. */
104
+ createdAt: number;
105
+ /** Epoch milliseconds. */
106
+ updatedAt: number;
107
+ }
108
+ export type TenantOperationKind = "create" | "import" | "configuration" | "membership" | "ownership" | "grant" | "rotation" | "lifecycle";
109
+ export interface ManagedTenantAccepted {
110
+ tenantId: string;
111
+ operationId: string;
112
+ state: string;
113
+ }
114
+ export interface ImportManagedTenant extends CreateManagedTenant {
115
+ tenantId: string;
116
+ memberships: TenantMembership[];
117
+ grants: TenantServiceGrant[];
118
+ mappings: Record<string, PrincipalMapping[]>;
119
+ localTenantIds: Record<string, string>;
120
+ localTenantSlugs: Record<string, string>;
121
+ /** Preserve pending invitations with an explicit, independently shared possession proof. */
122
+ invitations?: PendingTenantInvitation[];
123
+ }
124
+ export interface PendingTenantInvitation {
125
+ /** SHA-256 hex digest of the possession token; never an email or raw token. */
126
+ tokenHash: string;
127
+ role: "admin" | "member";
128
+ principal?: PrincipalRef;
129
+ expiresAt: number;
130
+ }
131
+ export interface ManagedInvitationSummary {
132
+ id: string;
133
+ role: "admin" | "member";
134
+ principal?: PrincipalRef | null;
135
+ expiresAt: number;
136
+ state: "pending" | "expired" | "closed";
137
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ import type { PermissionString } from "../common-dtos/index.js";
2
+ import type { PrincipalRef } from "./principal.dto.js";
3
+ export type TenantRole = "owner" | "admin" | "member";
4
+ export interface TenantMembership {
5
+ tenantId: string;
6
+ principal: PrincipalRef;
7
+ role: TenantRole;
8
+ status: "active" | "revoked";
9
+ }
10
+ export interface TenantServiceGrant {
11
+ tenantId: string;
12
+ principal: PrincipalRef;
13
+ serviceInstanceId: string;
14
+ permissions: PermissionString[];
15
+ }
16
+ export declare const TENANT_ADMINISTRATION_ROLES: {
17
+ readonly read: readonly ["owner", "admin", "member"];
18
+ readonly update: readonly ["owner", "admin"];
19
+ readonly manageMembers: readonly ["owner", "admin"];
20
+ readonly transferOwnership: readonly ["owner"];
21
+ readonly delete: readonly ["owner"];
22
+ };
@@ -0,0 +1,7 @@
1
+ export const TENANT_ADMINISTRATION_ROLES = {
2
+ read: ["owner", "admin", "member"],
3
+ update: ["owner", "admin"],
4
+ manageMembers: ["owner", "admin"],
5
+ transferOwnership: ["owner"],
6
+ delete: ["owner"]
7
+ };
@@ -0,0 +1,13 @@
1
+ export interface PrincipalRef {
2
+ issuer: string;
3
+ subject: string;
4
+ }
5
+ /** Operator-confirmed mapping; never inferred from email or username. */
6
+ export interface PrincipalMapping {
7
+ principal: PrincipalRef;
8
+ /** Local to the snapshot's target service, including when SSO stores a copy. */
9
+ localSubject: string;
10
+ ownershipAliases: string[];
11
+ }
12
+ export declare function samePrincipal(a: PrincipalRef, b: PrincipalRef): boolean;
13
+ export declare function principalKey(principal: PrincipalRef): string;
@@ -0,0 +1,6 @@
1
+ export function samePrincipal(a, b) {
2
+ return a.issuer === b.issuer && a.subject === b.subject;
3
+ }
4
+ export function principalKey(principal) {
5
+ return JSON.stringify([principal.issuer, principal.subject]);
6
+ }
@@ -0,0 +1,47 @@
1
+ import type { PrincipalRef } from "./principal.dto.js";
2
+ import type { TenantState } from "./tenant.dto.js";
3
+ export type ProvisioningOperation = "configuration" | "status" | "authorization" | "lifecycle" | "account";
4
+ /** Configured by operators, independently of tenant creation. */
5
+ export interface ProvisioningIdentity {
6
+ principal: PrincipalRef;
7
+ audience: string;
8
+ serviceInstanceId: string;
9
+ operations: ProvisioningOperation[];
10
+ }
11
+ export interface EnsureTenantRequest<TConfig> {
12
+ contractVersion: 1;
13
+ operationId: string;
14
+ tenantId: string;
15
+ slug: string;
16
+ name: string;
17
+ configurationRevision: number;
18
+ configuration: TConfig;
19
+ }
20
+ export interface TenantLifecycleRequest {
21
+ contractVersion: 1;
22
+ operationId: string;
23
+ tenantId: string;
24
+ revision: number;
25
+ state: TenantState;
26
+ }
27
+ export interface TenantProvisioningResult<TOutputs> {
28
+ tenantId: string;
29
+ localTenantId: string;
30
+ appliedConfigurationRevision: number;
31
+ readiness: "pending" | "ready" | "failed";
32
+ /** Identifiers/endpoints only; no keys or raw client secrets. */
33
+ outputs?: TOutputs;
34
+ error?: {
35
+ code: string;
36
+ retryable: boolean;
37
+ message: string;
38
+ };
39
+ }
40
+ export interface WalletProvisioningOutputs {
41
+ /** Preserved target-local URL slug; may differ from the canonical organization's slug after import. */
42
+ tenantSlug?: string;
43
+ did: string;
44
+ managementUrl: string;
45
+ presentationUrl: string;
46
+ verificationUrl: string;
47
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import type { TenantProvisioningResult } from "./provisioning.dto.js";
2
+ export interface TenantServiceBinding<TConfig, TOutputs> {
3
+ tenantId: string;
4
+ serviceInstanceId: string;
5
+ required: boolean;
6
+ configurationRevision: number;
7
+ configuration: TConfig;
8
+ observed?: TenantProvisioningResult<TOutputs>;
9
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ export type TenantState = "provisioning" | "active" | "suspended" | "deleting" | "deleted";
2
+ export interface Tenant {
3
+ /** Canonical UUID; resource foreign keys continue to use localTenantId. */
4
+ id: string;
5
+ /** Immutable and never recycled, including after deletion. */
6
+ slug: string;
7
+ name: string;
8
+ state: TenantState;
9
+ revision: number;
10
+ }
11
+ export interface ResolvedTenantContext {
12
+ canonicalTenantId: string;
13
+ localTenantId: string;
14
+ slug: string;
15
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ import { PermissionString } from "../common-dtos/index.js";
2
+ export declare enum AppRole {
3
+ VIEW_DID = "wallet_view_did",
4
+ MANAGE_KEYS = "wallet_manage_keys",
5
+ USE_KEYS = "wallet_use_keys",
6
+ VIEW_OWN_CREDENTIALS = "wallet_view_own_credentials",
7
+ VIEW_ALL_CREDENTIALS = "wallet_view_all_credentials",
8
+ MANAGE_OWN_CREDENTIALS = "wallet_manage_own_credentials",
9
+ MANAGE_ALL_CREDENTIALS = "wallet_manage_all_credentials",
10
+ ISSUE_CREDENTIALS = "wallet_issue_credentials",
11
+ VIEW_PRESENTATIONS = "wallet_view_presentations",
12
+ READONLY_USER = "readonly_user"
13
+ }
14
+ export interface ClientInfo {
15
+ sub: string;
16
+ name: string;
17
+ email: string;
18
+ didId: string;
19
+ permissions: PermissionString[];
20
+ refreshToken?: string;
21
+ }
@@ -0,0 +1,13 @@
1
+ export var AppRole;
2
+ (function (AppRole) {
3
+ AppRole["VIEW_DID"] = "wallet_view_did";
4
+ AppRole["MANAGE_KEYS"] = "wallet_manage_keys";
5
+ AppRole["USE_KEYS"] = "wallet_use_keys";
6
+ AppRole["VIEW_OWN_CREDENTIALS"] = "wallet_view_own_credentials";
7
+ AppRole["VIEW_ALL_CREDENTIALS"] = "wallet_view_all_credentials";
8
+ AppRole["MANAGE_OWN_CREDENTIALS"] = "wallet_manage_own_credentials";
9
+ AppRole["MANAGE_ALL_CREDENTIALS"] = "wallet_manage_all_credentials";
10
+ AppRole["ISSUE_CREDENTIALS"] = "wallet_issue_credentials";
11
+ AppRole["VIEW_PRESENTATIONS"] = "wallet_view_presentations";
12
+ AppRole["READONLY_USER"] = "readonly_user";
13
+ })(AppRole || (AppRole = {}));