@voyant-travel/auth 0.129.0 → 0.131.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 (44) hide show
  1. package/README.md +14 -0
  2. package/dist/cloud-broker/members.d.ts +9 -0
  3. package/dist/cloud-broker/members.js +10 -0
  4. package/dist/cloud-broker/members.js.map +1 -1
  5. package/dist/cloud-broker.d.ts +1 -1
  6. package/dist/cloud-broker.js +1 -1
  7. package/dist/cloud-broker.js.map +1 -1
  8. package/dist/identity-access-graph-runtime.js +2 -1
  9. package/dist/identity-access-graph-runtime.js.map +1 -1
  10. package/dist/invitations-routes.js +4 -0
  11. package/dist/invitations-routes.js.map +1 -1
  12. package/dist/local-member-access.d.ts +15 -0
  13. package/dist/local-member-access.js +119 -0
  14. package/dist/local-member-access.js.map +1 -0
  15. package/dist/mcp-runtime.d.ts +9 -0
  16. package/dist/mcp-runtime.js +38 -0
  17. package/dist/mcp-runtime.js.map +1 -0
  18. package/dist/runtime-contributor.js +18 -1
  19. package/dist/runtime-contributor.js.map +1 -1
  20. package/dist/server.d.ts +10 -6
  21. package/dist/server.js +6 -3
  22. package/dist/server.js.map +1 -1
  23. package/dist/team-management-cloud-adapter.d.ts +7 -0
  24. package/dist/team-management-cloud-adapter.js +146 -0
  25. package/dist/team-management-cloud-adapter.js.map +1 -0
  26. package/dist/team-management-local-adapter.d.ts +8 -0
  27. package/dist/team-management-local-adapter.js +285 -0
  28. package/dist/team-management-local-adapter.js.map +1 -0
  29. package/dist/team-management-policy.d.ts +27 -0
  30. package/dist/team-management-policy.js +109 -0
  31. package/dist/team-management-policy.js.map +1 -0
  32. package/dist/team-management-runtime-port.d.ts +60 -0
  33. package/dist/team-management-runtime-port.js +25 -0
  34. package/dist/team-management-runtime-port.js.map +1 -0
  35. package/dist/team-routes.d.ts +3 -3
  36. package/dist/team-routes.js +89 -138
  37. package/dist/team-routes.js.map +1 -1
  38. package/dist/tools.d.ts +58 -0
  39. package/dist/tools.js +226 -0
  40. package/dist/tools.js.map +1 -0
  41. package/dist/voyant.js +262 -7
  42. package/dist/voyant.js.map +1 -1
  43. package/openapi/admin/team.json +42 -74
  44. package/package.json +15 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n defineTool,\n READ_ONLY_RISK,\n requireService,\n type ToolContext,\n ToolError,\n} from \"@voyant-travel/tools\"\nimport { z } from \"zod\"\n\nimport type {\n CreatedTeamInvitationDto,\n InviteTeamMemberInput,\n TeamInvitationDto,\n TeamManagementCapabilitiesDto,\n TeamMemberDto,\n TeamRoleDto,\n} from \"./team-management-runtime-port.js\"\n\nconst teamMemberSchema = z.object({\n id: z.string(),\n email: z.string().email().nullable(),\n name: z.string().nullable(),\n roleId: z.string(),\n roleName: z.string(),\n status: z.enum([\"active\", \"deactivated\"]),\n joinedAt: z.string().nullable(),\n lastActivityAt: z.string().nullable(),\n})\n\nconst teamRoleSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().nullable(),\n})\n\nconst teamInvitationSchema = z.object({\n id: z.string(),\n email: z.string().email(),\n roleId: z.string(),\n roleName: z.string(),\n status: z.enum([\"pending\", \"accepted\", \"expired\", \"revoked\"]),\n createdAt: z.string(),\n expiresAt: z.string(),\n})\n\nconst teamManagementCapabilitiesSchema = z.object({\n viewRoster: z.boolean(),\n inviteMembers: z.boolean(),\n manageRoles: z.boolean(),\n activateMembers: z.boolean(),\n deactivateMembers: z.boolean(),\n revokeInvitations: z.boolean(),\n})\n\nconst emptyInputSchema = z.object({})\nconst inviteTeamMemberInputSchema = z.object({\n email: z.string().email().describe(\"Email address for the new team member.\"),\n roleId: z.string().trim().min(1).max(120).describe(\"Provider-neutral team role id.\"),\n expiresInDays: z\n .number()\n .int()\n .min(1)\n .max(30)\n .optional()\n .describe(\"Invitation validity in days. Uses the deployment default when omitted.\"),\n})\nconst invitationIdInputSchema = z.object({\n invitationId: z.string().min(1).describe(\"Team invitation id.\"),\n})\nconst memberIdInputSchema = z.object({\n memberId: z.string().min(1).describe(\"Team member id.\"),\n})\nconst updateMemberRoleInputSchema = memberIdInputSchema.extend({\n roleId: z.string().trim().min(1).max(120).describe(\"Provider-neutral team role id.\"),\n})\n\nconst actingUserRequirement =\n \" Requires an authenticated acting staff user; organization-only grants are rejected.\"\n\nexport interface TeamManagementToolServices {\n getCapabilities(): Promise<TeamManagementCapabilitiesDto>\n listMembers(): Promise<TeamMemberDto[]>\n listRoles(): Promise<TeamRoleDto[]>\n listInvitations(): Promise<TeamInvitationDto[]>\n inviteMember(input: InviteTeamMemberInput): Promise<CreatedTeamInvitationDto>\n revokeInvitation(invitationId: string): Promise<void>\n updateMemberRole(memberId: string, roleId: string): Promise<TeamMemberDto>\n activateMember(memberId: string): Promise<TeamMemberDto>\n deactivateMember(memberId: string): Promise<TeamMemberDto>\n}\n\nexport type TeamManagementToolContext = ToolContext & {\n teamManagement?: TeamManagementToolServices\n}\n\nfunction teamManagement(ctx: TeamManagementToolContext): TeamManagementToolServices {\n if (ctx.actor !== \"staff\" || ctx.audience !== \"staff\") {\n throw new ToolError(\n \"Team-management tools are restricted to staff grants.\",\n \"AUTHORIZATION_DENIED\",\n {\n actor: ctx.actor,\n audience: ctx.audience,\n },\n )\n }\n return requireService(ctx.teamManagement, \"teamManagement\")\n}\n\nexport const getTeamManagementCapabilitiesTool = defineTool<\n z.infer<typeof emptyInputSchema>,\n TeamManagementCapabilitiesDto,\n TeamManagementToolContext\n>({\n name: \"get_team_management_capabilities\",\n description:\n \"Read the current staff user's provider-neutral team-management capabilities.\" +\n actingUserRequirement,\n inputSchema: emptyInputSchema,\n outputSchema: teamManagementCapabilitiesSchema,\n requiredScopes: [\"team:read\"],\n tier: \"read\",\n riskPolicy: READ_ONLY_RISK,\n async handler(_input, ctx) {\n return teamManagement(ctx).getCapabilities()\n },\n})\n\nexport const listTeamMembersTool = defineTool<\n z.infer<typeof emptyInputSchema>,\n TeamMemberDto[],\n TeamManagementToolContext\n>({\n name: \"list_team_members\",\n description:\n \"List the staff team roster and access status. Contains personal information.\" +\n actingUserRequirement,\n inputSchema: emptyInputSchema,\n outputSchema: z.array(teamMemberSchema),\n requiredScopes: [\"team:read\"],\n tier: \"sensitive\",\n riskPolicy: READ_ONLY_RISK,\n async handler(_input, ctx) {\n return teamManagement(ctx).listMembers()\n },\n})\n\nexport const listTeamRolesTool = defineTool<\n z.infer<typeof emptyInputSchema>,\n TeamRoleDto[],\n TeamManagementToolContext\n>({\n name: \"list_team_roles\",\n description:\n \"List the provider-neutral roles assignable to team members. Read-only.\" +\n actingUserRequirement,\n inputSchema: emptyInputSchema,\n outputSchema: z.array(teamRoleSchema),\n requiredScopes: [\"team:read\"],\n tier: \"read\",\n riskPolicy: READ_ONLY_RISK,\n async handler(_input, ctx) {\n return teamManagement(ctx).listRoles()\n },\n})\n\nexport const listTeamInvitationsTool = defineTool<\n z.infer<typeof emptyInputSchema>,\n TeamInvitationDto[],\n TeamManagementToolContext\n>({\n name: \"list_team_invitations\",\n description:\n \"List team invitations and their lifecycle status. Contains personal information.\" +\n actingUserRequirement,\n inputSchema: emptyInputSchema,\n outputSchema: z.array(teamInvitationSchema),\n requiredScopes: [\"team:read\"],\n tier: \"sensitive\",\n riskPolicy: READ_ONLY_RISK,\n async handler(_input, ctx) {\n return teamManagement(ctx).listInvitations()\n },\n})\n\nexport const inviteTeamMemberTool = defineTool<\n z.infer<typeof inviteTeamMemberInputSchema>,\n TeamInvitationDto,\n TeamManagementToolContext\n>({\n name: \"invite_team_member\",\n description:\n \"Invite a staff team member with an assigned role. Sends an external invitation and requires explicit confirmation.\" +\n actingUserRequirement,\n inputSchema: inviteTeamMemberInputSchema,\n outputSchema: teamInvitationSchema,\n requiredScopes: [\"team:write\"],\n tier: \"destructive\",\n riskPolicy: {\n destructive: true,\n reversible: false,\n dryRunSupported: false,\n confirmationRequired: true,\n sideEffects: [\"email\", \"data-write\"],\n },\n async handler(input, ctx) {\n const { acceptUrl: _acceptUrl, ...invitation } = await teamManagement(ctx).inviteMember(input)\n return invitation\n },\n})\n\nexport const revokeTeamInvitationTool = defineTool<\n z.infer<typeof invitationIdInputSchema>,\n { invitationId: string; revoked: true },\n TeamManagementToolContext\n>({\n name: \"revoke_team_invitation\",\n description:\n \"Revoke a pending team invitation. Invalidates its acceptance path and requires confirmation.\" +\n actingUserRequirement,\n inputSchema: invitationIdInputSchema,\n outputSchema: z.object({ invitationId: z.string(), revoked: z.literal(true) }),\n requiredScopes: [\"team:delete\"],\n tier: \"destructive\",\n riskPolicy: {\n destructive: true,\n reversible: false,\n dryRunSupported: false,\n confirmationRequired: true,\n sideEffects: [\"data-delete\"],\n },\n async handler({ invitationId }, ctx) {\n await teamManagement(ctx).revokeInvitation(invitationId)\n return { invitationId, revoked: true }\n },\n})\n\nexport const updateTeamMemberRoleTool = defineTool<\n z.infer<typeof updateMemberRoleInputSchema>,\n TeamMemberDto,\n TeamManagementToolContext\n>({\n name: \"update_team_member_role\",\n description:\n \"Change a team member's role and effective access. Requires explicit confirmation.\" +\n actingUserRequirement,\n inputSchema: updateMemberRoleInputSchema,\n outputSchema: teamMemberSchema,\n requiredScopes: [\"team:write\"],\n tier: \"sensitive\",\n riskPolicy: {\n destructive: false,\n reversible: true,\n dryRunSupported: false,\n confirmationRequired: true,\n sideEffects: [\"data-write\"],\n },\n async handler({ memberId, roleId }, ctx) {\n return teamManagement(ctx).updateMemberRole(memberId, roleId)\n },\n})\n\nexport const activateTeamMemberTool = defineTool<\n z.infer<typeof memberIdInputSchema>,\n TeamMemberDto,\n TeamManagementToolContext\n>({\n name: \"activate_team_member\",\n description:\n \"Restore a team member's deployment access. Requires explicit confirmation.\" +\n actingUserRequirement,\n inputSchema: memberIdInputSchema,\n outputSchema: teamMemberSchema,\n requiredScopes: [\"team:write\"],\n tier: \"sensitive\",\n riskPolicy: {\n destructive: false,\n reversible: true,\n dryRunSupported: false,\n confirmationRequired: true,\n sideEffects: [\"data-write\"],\n },\n async handler({ memberId }, ctx) {\n return teamManagement(ctx).activateMember(memberId)\n },\n})\n\nexport const deactivateTeamMemberTool = defineTool<\n z.infer<typeof memberIdInputSchema>,\n TeamMemberDto,\n TeamManagementToolContext\n>({\n name: \"deactivate_team_member\",\n description:\n \"Remove a team member's deployment access and potentially revoke active credentials. Requires explicit confirmation.\" +\n actingUserRequirement,\n inputSchema: memberIdInputSchema,\n outputSchema: teamMemberSchema,\n requiredScopes: [\"team:delete\"],\n tier: \"destructive\",\n riskPolicy: {\n destructive: true,\n reversible: false,\n dryRunSupported: false,\n confirmationRequired: true,\n sideEffects: [\"data-write\", \"data-delete\"],\n },\n async handler({ memberId }, ctx) {\n return teamManagement(ctx).deactivateMember(memberId)\n },\n})\n\nexport const teamManagementTools = [\n getTeamManagementCapabilitiesTool,\n listTeamMembersTool,\n listTeamRolesTool,\n listTeamInvitationsTool,\n inviteTeamMemberTool,\n revokeTeamInvitationTool,\n updateTeamMemberRoleTool,\n activateTeamMemberTool,\n deactivateTeamMemberTool,\n] as const\n"]}
package/dist/voyant.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { defineModule, providePort, requirePort } from "@voyant-travel/core/project";
2
2
  import { identityAccessRuntimePort } from "./identity-access-runtime-port.js";
3
+ import { teamManagementRuntimePort } from "./team-management-runtime-port.js";
3
4
  export const authInvitationsVoyantModule = defineModule({
4
5
  id: "@voyant-travel/auth#invitations",
5
6
  packageName: "@voyant-travel/auth",
@@ -41,20 +42,28 @@ export const authInvitationsVoyantModule = defineModule({
41
42
  },
42
43
  },
43
44
  ],
44
- meta: { ownership: "package" },
45
+ meta: {
46
+ ownership: "package",
47
+ agentTools: {
48
+ posture: "not-applicable",
49
+ rationale: "This unit owns public invitation acceptance; staff invitation management is exposed by the guarded auth team runtime.",
50
+ },
51
+ },
45
52
  });
46
53
  export const authTeamVoyantModule = defineModule({
47
54
  id: "@voyant-travel/auth#team",
48
55
  packageName: "@voyant-travel/auth",
49
56
  localId: "auth.team",
50
- provides: { ports: [providePort(identityAccessRuntimePort)] },
51
- runtimePorts: [requirePort(identityAccessRuntimePort)],
57
+ provides: { ports: [providePort(teamManagementRuntimePort)] },
58
+ runtimePorts: [requirePort(teamManagementRuntimePort)],
52
59
  api: [
53
60
  {
54
61
  id: "@voyant-travel/auth#team.api.admin",
55
62
  surface: "admin",
56
63
  mount: "team",
64
+ resource: "team",
57
65
  openapi: { document: "team" },
66
+ transactional: true,
58
67
  runtime: {
59
68
  entry: "@voyant-travel/auth/identity-access-graph-runtime",
60
69
  export: "createTeamVoyantRuntime",
@@ -68,6 +77,7 @@ export const authTeamVoyantModule = defineModule({
68
77
  resource: "team",
69
78
  label: "Team",
70
79
  description: "Manage staff team members and their access.",
80
+ wildcard: "explicit-resource",
71
81
  actions: [
72
82
  {
73
83
  action: "read",
@@ -77,18 +87,263 @@ export const authTeamVoyantModule = defineModule({
77
87
  {
78
88
  action: "write",
79
89
  label: "Manage team",
80
- description: "Create and update staff team members.",
90
+ description: "Invite staff and update roles or access.",
91
+ sensitive: true,
92
+ wildcard: "explicit",
81
93
  },
82
94
  {
83
95
  action: "delete",
84
- label: "Delete team members",
85
- description: "Delete staff team members.",
96
+ label: "Remove team access",
97
+ description: "Revoke invitations or deactivate staff team members.",
86
98
  sensitive: true,
99
+ wildcard: "explicit",
87
100
  },
88
101
  ],
89
102
  },
90
103
  ],
91
104
  },
92
- meta: { ownership: "package" },
105
+ tools: [
106
+ {
107
+ id: "@voyant-travel/auth#team.tool.get-capabilities",
108
+ name: "get_team_management_capabilities",
109
+ runtime: {
110
+ entry: "@voyant-travel/auth/tools",
111
+ export: "getTeamManagementCapabilitiesTool",
112
+ },
113
+ requiredScopes: ["team:read"],
114
+ context: ["teamManagement"],
115
+ risk: "low",
116
+ },
117
+ {
118
+ id: "@voyant-travel/auth#team.tool.list-members",
119
+ name: "list_team_members",
120
+ runtime: { entry: "@voyant-travel/auth/tools", export: "listTeamMembersTool" },
121
+ requiredScopes: ["team:read"],
122
+ context: ["teamManagement"],
123
+ risk: "high",
124
+ },
125
+ {
126
+ id: "@voyant-travel/auth#team.tool.list-roles",
127
+ name: "list_team_roles",
128
+ runtime: { entry: "@voyant-travel/auth/tools", export: "listTeamRolesTool" },
129
+ requiredScopes: ["team:read"],
130
+ context: ["teamManagement"],
131
+ risk: "low",
132
+ },
133
+ {
134
+ id: "@voyant-travel/auth#team.tool.list-invitations",
135
+ name: "list_team_invitations",
136
+ runtime: { entry: "@voyant-travel/auth/tools", export: "listTeamInvitationsTool" },
137
+ requiredScopes: ["team:read"],
138
+ context: ["teamManagement"],
139
+ risk: "high",
140
+ },
141
+ {
142
+ id: "@voyant-travel/auth#team.tool.invite-member",
143
+ name: "invite_team_member",
144
+ runtime: { entry: "@voyant-travel/auth/tools", export: "inviteTeamMemberTool" },
145
+ requiredScopes: ["team:write"],
146
+ context: ["teamManagement"],
147
+ risk: "high",
148
+ },
149
+ {
150
+ id: "@voyant-travel/auth#team.tool.revoke-invitation",
151
+ name: "revoke_team_invitation",
152
+ runtime: { entry: "@voyant-travel/auth/tools", export: "revokeTeamInvitationTool" },
153
+ requiredScopes: ["team:delete"],
154
+ context: ["teamManagement"],
155
+ risk: "high",
156
+ },
157
+ {
158
+ id: "@voyant-travel/auth#team.tool.update-member-role",
159
+ name: "update_team_member_role",
160
+ runtime: { entry: "@voyant-travel/auth/tools", export: "updateTeamMemberRoleTool" },
161
+ requiredScopes: ["team:write"],
162
+ context: ["teamManagement"],
163
+ risk: "high",
164
+ },
165
+ {
166
+ id: "@voyant-travel/auth#team.tool.activate-member",
167
+ name: "activate_team_member",
168
+ runtime: { entry: "@voyant-travel/auth/tools", export: "activateTeamMemberTool" },
169
+ requiredScopes: ["team:write"],
170
+ context: ["teamManagement"],
171
+ risk: "high",
172
+ },
173
+ {
174
+ id: "@voyant-travel/auth#team.tool.deactivate-member",
175
+ name: "deactivate_team_member",
176
+ runtime: { entry: "@voyant-travel/auth/tools", export: "deactivateTeamMemberTool" },
177
+ requiredScopes: ["team:delete"],
178
+ context: ["teamManagement"],
179
+ risk: "high",
180
+ },
181
+ ],
182
+ actions: [
183
+ {
184
+ id: "@voyant-travel/auth#team.action.get-capabilities",
185
+ version: "v1",
186
+ kind: "read",
187
+ targetType: "team-capabilities",
188
+ resource: "team",
189
+ action: "read",
190
+ requiredScopes: ["team:read"],
191
+ risk: "low",
192
+ ledger: "optional",
193
+ approval: "never",
194
+ allowedActorTypes: ["staff"],
195
+ from: { tools: ["@voyant-travel/auth#team.tool.get-capabilities"] },
196
+ },
197
+ {
198
+ id: "@voyant-travel/auth#team.action.list-members",
199
+ version: "v1",
200
+ kind: "sensitive-read",
201
+ targetType: "team-member",
202
+ resource: "team",
203
+ action: "read",
204
+ requiredScopes: ["team:read"],
205
+ risk: "high",
206
+ ledger: "required",
207
+ approval: "never",
208
+ allowedActorTypes: ["staff"],
209
+ from: { tools: ["@voyant-travel/auth#team.tool.list-members"] },
210
+ },
211
+ {
212
+ id: "@voyant-travel/auth#team.action.list-roles",
213
+ version: "v1",
214
+ kind: "read",
215
+ targetType: "team-role",
216
+ resource: "team",
217
+ action: "read",
218
+ requiredScopes: ["team:read"],
219
+ risk: "low",
220
+ ledger: "optional",
221
+ approval: "never",
222
+ allowedActorTypes: ["staff"],
223
+ from: { tools: ["@voyant-travel/auth#team.tool.list-roles"] },
224
+ },
225
+ {
226
+ id: "@voyant-travel/auth#team.action.list-invitations",
227
+ version: "v1",
228
+ kind: "sensitive-read",
229
+ targetType: "team-invitation",
230
+ resource: "team",
231
+ action: "read",
232
+ requiredScopes: ["team:read"],
233
+ risk: "high",
234
+ ledger: "required",
235
+ approval: "never",
236
+ allowedActorTypes: ["staff"],
237
+ from: { tools: ["@voyant-travel/auth#team.tool.list-invitations"] },
238
+ },
239
+ {
240
+ id: "@voyant-travel/auth#team.action.invite-member",
241
+ version: "v1",
242
+ kind: "execute",
243
+ targetType: "team-invitation",
244
+ resource: "team",
245
+ action: "write",
246
+ requiredScopes: ["team:write"],
247
+ risk: "high",
248
+ ledger: "required",
249
+ approval: "required",
250
+ reversible: false,
251
+ allowedActorTypes: ["staff"],
252
+ from: { tools: ["@voyant-travel/auth#team.tool.invite-member"] },
253
+ },
254
+ {
255
+ id: "@voyant-travel/auth#team.action.revoke-invitation",
256
+ version: "v1",
257
+ kind: "execute",
258
+ targetType: "team-invitation",
259
+ resource: "team",
260
+ action: "delete",
261
+ requiredScopes: ["team:delete"],
262
+ risk: "high",
263
+ ledger: "required",
264
+ approval: "required",
265
+ reversible: false,
266
+ allowedActorTypes: ["staff"],
267
+ from: { tools: ["@voyant-travel/auth#team.tool.revoke-invitation"] },
268
+ },
269
+ {
270
+ id: "@voyant-travel/auth#team.action.update-member-role",
271
+ version: "v1",
272
+ kind: "execute",
273
+ targetType: "team-member",
274
+ resource: "team",
275
+ action: "write",
276
+ requiredScopes: ["team:write"],
277
+ risk: "high",
278
+ ledger: "required",
279
+ approval: "required",
280
+ reversible: true,
281
+ allowedActorTypes: ["staff"],
282
+ from: { tools: ["@voyant-travel/auth#team.tool.update-member-role"] },
283
+ },
284
+ {
285
+ id: "@voyant-travel/auth#team.action.activate-member",
286
+ version: "v1",
287
+ kind: "execute",
288
+ targetType: "team-member",
289
+ resource: "team",
290
+ action: "write",
291
+ requiredScopes: ["team:write"],
292
+ risk: "high",
293
+ ledger: "required",
294
+ approval: "required",
295
+ reversible: true,
296
+ allowedActorTypes: ["staff"],
297
+ from: { tools: ["@voyant-travel/auth#team.tool.activate-member"] },
298
+ },
299
+ {
300
+ id: "@voyant-travel/auth#team.action.deactivate-member",
301
+ version: "v1",
302
+ kind: "execute",
303
+ targetType: "team-member",
304
+ resource: "team",
305
+ action: "delete",
306
+ requiredScopes: ["team:delete"],
307
+ risk: "high",
308
+ ledger: "required",
309
+ approval: "required",
310
+ reversible: false,
311
+ allowedActorTypes: ["staff"],
312
+ from: { tools: ["@voyant-travel/auth#team.tool.deactivate-member"] },
313
+ },
314
+ ],
315
+ admin: {
316
+ compositionOrder: 5,
317
+ setupSteps: [{ id: "@voyant-travel/auth#setup.team", skippable: true }],
318
+ runtime: {
319
+ entry: "@voyant-travel/auth-react/admin",
320
+ export: "createSelectedAuthTeamAdminExtension",
321
+ },
322
+ copy: [
323
+ {
324
+ id: "@voyant-travel/auth#team.admin.copy",
325
+ namespace: "auth.admin.team",
326
+ fallbackLocale: "en",
327
+ runtime: {
328
+ entry: "@voyant-travel/auth-react/i18n",
329
+ export: "authUiMessageDefinitions",
330
+ },
331
+ },
332
+ ],
333
+ routes: [
334
+ {
335
+ id: "@voyant-travel/auth#team.admin.route",
336
+ path: "/settings/team",
337
+ requiredScopes: ["team:read"],
338
+ runtime: {
339
+ entry: "@voyant-travel/auth-react/admin",
340
+ export: "createSelectedAuthTeamAdminExtension",
341
+ },
342
+ },
343
+ ],
344
+ },
345
+ meta: {
346
+ ownership: "package",
347
+ },
93
348
  });
94
349
  //# sourceMappingURL=voyant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"voyant.js","sourceRoot":"","sources":["../src/voyant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAE7E,MAAM,CAAC,MAAM,2BAA2B,GAAG,YAAY,CAAC;IACtD,EAAE,EAAE,iCAAiC;IACrC,WAAW,EAAE,qBAAqB;IAClC,OAAO,EAAE,kBAAkB;IAC3B,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC,EAAE;IAC7D,YAAY,EAAE,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACtD,GAAG,EAAE;QACH;YACE,EAAE,EAAE,2CAA2C;YAC/C,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE;YACpC,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACP,KAAK,EAAE,mDAAmD;gBAC1D,MAAM,EAAE,gCAAgC;aACzC;SACF;QACD;YACE,EAAE,EAAE,4CAA4C;YAChD,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE;YACpC,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACP,KAAK,EAAE,mDAAmD;gBAC1D,MAAM,EAAE,gCAAgC;aACzC;SACF;KACF;IACD,aAAa,EAAE;QACb;YACE,EAAE,EAAE,6CAA6C;YACjD,OAAO,EAAE;gBACP,KAAK,EAAE,6CAA6C;gBACpD,MAAM,EAAE,kCAAkC;aAC3C;SACF;KACF;IACD,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;CAC/B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;IAC/C,EAAE,EAAE,0BAA0B;IAC9B,WAAW,EAAE,qBAAqB;IAClC,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC,EAAE;IAC7D,YAAY,EAAE,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACtD,GAAG,EAAE;QACH;YACE,EAAE,EAAE,oCAAoC;YACxC,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC7B,OAAO,EAAE;gBACP,KAAK,EAAE,mDAAmD;gBAC1D,MAAM,EAAE,yBAAyB;aAClC;SACF;KACF;IACD,MAAM,EAAE;QACN,SAAS,EAAE;YACT;gBACE,EAAE,EAAE,iCAAiC;gBACrC,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,MAAM;gBACb,WAAW,EAAE,6CAA6C;gBAC1D,OAAO,EAAE;oBACP;wBACE,MAAM,EAAE,MAAM;wBACd,KAAK,EAAE,WAAW;wBAClB,WAAW,EAAE,0BAA0B;qBACxC;oBACD;wBACE,MAAM,EAAE,OAAO;wBACf,KAAK,EAAE,aAAa;wBACpB,WAAW,EAAE,uCAAuC;qBACrD;oBACD;wBACE,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,qBAAqB;wBAC5B,WAAW,EAAE,4BAA4B;wBACzC,SAAS,EAAE,IAAI;qBAChB;iBACF;aACF;SACF;KACF;IACD,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;CAC/B,CAAC,CAAA","sourcesContent":["import { defineModule, providePort, requirePort } from \"@voyant-travel/core/project\"\n\nimport { identityAccessRuntimePort } from \"./identity-access-runtime-port.js\"\n\nexport const authInvitationsVoyantModule = defineModule({\n id: \"@voyant-travel/auth#invitations\",\n packageName: \"@voyant-travel/auth\",\n localId: \"auth.invitations\",\n provides: { ports: [providePort(identityAccessRuntimePort)] },\n runtimePorts: [requirePort(identityAccessRuntimePort)],\n api: [\n {\n id: \"@voyant-travel/auth#invitations.api.admin\",\n surface: \"admin\",\n mount: \"invitations\",\n resource: \"team\",\n openapi: { document: \"invitations\" },\n transactional: true,\n runtime: {\n entry: \"@voyant-travel/auth/identity-access-graph-runtime\",\n export: \"createInvitationsVoyantRuntime\",\n },\n },\n {\n id: \"@voyant-travel/auth#invitations.api.public\",\n surface: \"public\",\n mount: \"invitations\",\n anonymous: true,\n openapi: { document: \"invitations\" },\n transactional: true,\n runtime: {\n entry: \"@voyant-travel/auth/identity-access-graph-runtime\",\n export: \"createInvitationsVoyantRuntime\",\n },\n },\n ],\n presentations: [\n {\n id: \"@voyant-travel/auth#presentation.local-auth\",\n runtime: {\n entry: \"@voyant-travel/auth-react/local-auth-routes\",\n export: \"createLocalAuthRouteContribution\",\n },\n },\n ],\n meta: { ownership: \"package\" },\n})\n\nexport const authTeamVoyantModule = defineModule({\n id: \"@voyant-travel/auth#team\",\n packageName: \"@voyant-travel/auth\",\n localId: \"auth.team\",\n provides: { ports: [providePort(identityAccessRuntimePort)] },\n runtimePorts: [requirePort(identityAccessRuntimePort)],\n api: [\n {\n id: \"@voyant-travel/auth#team.api.admin\",\n surface: \"admin\",\n mount: \"team\",\n openapi: { document: \"team\" },\n runtime: {\n entry: \"@voyant-travel/auth/identity-access-graph-runtime\",\n export: \"createTeamVoyantRuntime\",\n },\n },\n ],\n access: {\n resources: [\n {\n id: \"@voyant-travel/auth#access.team\",\n resource: \"team\",\n label: \"Team\",\n description: \"Manage staff team members and their access.\",\n actions: [\n {\n action: \"read\",\n label: \"View team\",\n description: \"View staff team members.\",\n },\n {\n action: \"write\",\n label: \"Manage team\",\n description: \"Create and update staff team members.\",\n },\n {\n action: \"delete\",\n label: \"Delete team members\",\n description: \"Delete staff team members.\",\n sensitive: true,\n },\n ],\n },\n ],\n },\n meta: { ownership: \"package\" },\n})\n"]}
1
+ {"version":3,"file":"voyant.js","sourceRoot":"","sources":["../src/voyant.ts"],"names":[],"mappings":"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","sourcesContent":["import { defineModule, providePort, requirePort } from \"@voyant-travel/core/project\"\n\nimport { identityAccessRuntimePort } from \"./identity-access-runtime-port.js\"\nimport { teamManagementRuntimePort } from \"./team-management-runtime-port.js\"\n\nexport const authInvitationsVoyantModule = defineModule({\n id: \"@voyant-travel/auth#invitations\",\n packageName: \"@voyant-travel/auth\",\n localId: \"auth.invitations\",\n provides: { ports: [providePort(identityAccessRuntimePort)] },\n runtimePorts: [requirePort(identityAccessRuntimePort)],\n api: [\n {\n id: \"@voyant-travel/auth#invitations.api.admin\",\n surface: \"admin\",\n mount: \"invitations\",\n resource: \"team\",\n openapi: { document: \"invitations\" },\n transactional: true,\n runtime: {\n entry: \"@voyant-travel/auth/identity-access-graph-runtime\",\n export: \"createInvitationsVoyantRuntime\",\n },\n },\n {\n id: \"@voyant-travel/auth#invitations.api.public\",\n surface: \"public\",\n mount: \"invitations\",\n anonymous: true,\n openapi: { document: \"invitations\" },\n transactional: true,\n runtime: {\n entry: \"@voyant-travel/auth/identity-access-graph-runtime\",\n export: \"createInvitationsVoyantRuntime\",\n },\n },\n ],\n presentations: [\n {\n id: \"@voyant-travel/auth#presentation.local-auth\",\n runtime: {\n entry: \"@voyant-travel/auth-react/local-auth-routes\",\n export: \"createLocalAuthRouteContribution\",\n },\n },\n ],\n meta: {\n ownership: \"package\",\n agentTools: {\n posture: \"not-applicable\",\n rationale:\n \"This unit owns public invitation acceptance; staff invitation management is exposed by the guarded auth team runtime.\",\n },\n },\n})\n\nexport const authTeamVoyantModule = defineModule({\n id: \"@voyant-travel/auth#team\",\n packageName: \"@voyant-travel/auth\",\n localId: \"auth.team\",\n provides: { ports: [providePort(teamManagementRuntimePort)] },\n runtimePorts: [requirePort(teamManagementRuntimePort)],\n api: [\n {\n id: \"@voyant-travel/auth#team.api.admin\",\n surface: \"admin\",\n mount: \"team\",\n resource: \"team\",\n openapi: { document: \"team\" },\n transactional: true,\n runtime: {\n entry: \"@voyant-travel/auth/identity-access-graph-runtime\",\n export: \"createTeamVoyantRuntime\",\n },\n },\n ],\n access: {\n resources: [\n {\n id: \"@voyant-travel/auth#access.team\",\n resource: \"team\",\n label: \"Team\",\n description: \"Manage staff team members and their access.\",\n wildcard: \"explicit-resource\",\n actions: [\n {\n action: \"read\",\n label: \"View team\",\n description: \"View staff team members.\",\n },\n {\n action: \"write\",\n label: \"Manage team\",\n description: \"Invite staff and update roles or access.\",\n sensitive: true,\n wildcard: \"explicit\",\n },\n {\n action: \"delete\",\n label: \"Remove team access\",\n description: \"Revoke invitations or deactivate staff team members.\",\n sensitive: true,\n wildcard: \"explicit\",\n },\n ],\n },\n ],\n },\n tools: [\n {\n id: \"@voyant-travel/auth#team.tool.get-capabilities\",\n name: \"get_team_management_capabilities\",\n runtime: {\n entry: \"@voyant-travel/auth/tools\",\n export: \"getTeamManagementCapabilitiesTool\",\n },\n requiredScopes: [\"team:read\"],\n context: [\"teamManagement\"],\n risk: \"low\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.list-members\",\n name: \"list_team_members\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"listTeamMembersTool\" },\n requiredScopes: [\"team:read\"],\n context: [\"teamManagement\"],\n risk: \"high\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.list-roles\",\n name: \"list_team_roles\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"listTeamRolesTool\" },\n requiredScopes: [\"team:read\"],\n context: [\"teamManagement\"],\n risk: \"low\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.list-invitations\",\n name: \"list_team_invitations\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"listTeamInvitationsTool\" },\n requiredScopes: [\"team:read\"],\n context: [\"teamManagement\"],\n risk: \"high\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.invite-member\",\n name: \"invite_team_member\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"inviteTeamMemberTool\" },\n requiredScopes: [\"team:write\"],\n context: [\"teamManagement\"],\n risk: \"high\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.revoke-invitation\",\n name: \"revoke_team_invitation\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"revokeTeamInvitationTool\" },\n requiredScopes: [\"team:delete\"],\n context: [\"teamManagement\"],\n risk: \"high\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.update-member-role\",\n name: \"update_team_member_role\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"updateTeamMemberRoleTool\" },\n requiredScopes: [\"team:write\"],\n context: [\"teamManagement\"],\n risk: \"high\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.activate-member\",\n name: \"activate_team_member\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"activateTeamMemberTool\" },\n requiredScopes: [\"team:write\"],\n context: [\"teamManagement\"],\n risk: \"high\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.deactivate-member\",\n name: \"deactivate_team_member\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"deactivateTeamMemberTool\" },\n requiredScopes: [\"team:delete\"],\n context: [\"teamManagement\"],\n risk: \"high\",\n },\n ],\n actions: [\n {\n id: \"@voyant-travel/auth#team.action.get-capabilities\",\n version: \"v1\",\n kind: \"read\",\n targetType: \"team-capabilities\",\n resource: \"team\",\n action: \"read\",\n requiredScopes: [\"team:read\"],\n risk: \"low\",\n ledger: \"optional\",\n approval: \"never\",\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.get-capabilities\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.list-members\",\n version: \"v1\",\n kind: \"sensitive-read\",\n targetType: \"team-member\",\n resource: \"team\",\n action: \"read\",\n requiredScopes: [\"team:read\"],\n risk: \"high\",\n ledger: \"required\",\n approval: \"never\",\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.list-members\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.list-roles\",\n version: \"v1\",\n kind: \"read\",\n targetType: \"team-role\",\n resource: \"team\",\n action: \"read\",\n requiredScopes: [\"team:read\"],\n risk: \"low\",\n ledger: \"optional\",\n approval: \"never\",\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.list-roles\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.list-invitations\",\n version: \"v1\",\n kind: \"sensitive-read\",\n targetType: \"team-invitation\",\n resource: \"team\",\n action: \"read\",\n requiredScopes: [\"team:read\"],\n risk: \"high\",\n ledger: \"required\",\n approval: \"never\",\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.list-invitations\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.invite-member\",\n version: \"v1\",\n kind: \"execute\",\n targetType: \"team-invitation\",\n resource: \"team\",\n action: \"write\",\n requiredScopes: [\"team:write\"],\n risk: \"high\",\n ledger: \"required\",\n approval: \"required\",\n reversible: false,\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.invite-member\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.revoke-invitation\",\n version: \"v1\",\n kind: \"execute\",\n targetType: \"team-invitation\",\n resource: \"team\",\n action: \"delete\",\n requiredScopes: [\"team:delete\"],\n risk: \"high\",\n ledger: \"required\",\n approval: \"required\",\n reversible: false,\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.revoke-invitation\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.update-member-role\",\n version: \"v1\",\n kind: \"execute\",\n targetType: \"team-member\",\n resource: \"team\",\n action: \"write\",\n requiredScopes: [\"team:write\"],\n risk: \"high\",\n ledger: \"required\",\n approval: \"required\",\n reversible: true,\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.update-member-role\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.activate-member\",\n version: \"v1\",\n kind: \"execute\",\n targetType: \"team-member\",\n resource: \"team\",\n action: \"write\",\n requiredScopes: [\"team:write\"],\n risk: \"high\",\n ledger: \"required\",\n approval: \"required\",\n reversible: true,\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.activate-member\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.deactivate-member\",\n version: \"v1\",\n kind: \"execute\",\n targetType: \"team-member\",\n resource: \"team\",\n action: \"delete\",\n requiredScopes: [\"team:delete\"],\n risk: \"high\",\n ledger: \"required\",\n approval: \"required\",\n reversible: false,\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.deactivate-member\"] },\n },\n ],\n admin: {\n compositionOrder: 5,\n setupSteps: [{ id: \"@voyant-travel/auth#setup.team\", skippable: true }],\n runtime: {\n entry: \"@voyant-travel/auth-react/admin\",\n export: \"createSelectedAuthTeamAdminExtension\",\n },\n copy: [\n {\n id: \"@voyant-travel/auth#team.admin.copy\",\n namespace: \"auth.admin.team\",\n fallbackLocale: \"en\",\n runtime: {\n entry: \"@voyant-travel/auth-react/i18n\",\n export: \"authUiMessageDefinitions\",\n },\n },\n ],\n routes: [\n {\n id: \"@voyant-travel/auth#team.admin.route\",\n path: \"/settings/team\",\n requiredScopes: [\"team:read\"],\n runtime: {\n entry: \"@voyant-travel/auth-react/admin\",\n export: \"createSelectedAuthTeamAdminExtension\",\n },\n },\n ],\n },\n meta: {\n ownership: \"package\",\n },\n})\n"]}
@@ -5,46 +5,39 @@
5
5
  "version": "1.0.0"
6
6
  },
7
7
  "paths": {
8
+ "/v1/admin/team/capabilities": {
9
+ "get": {
10
+ "operationId": "getTeamManagementCapabilities",
11
+ "tags": ["Team"],
12
+ "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
13
+ "responses": { "200": { "description": "Team-management capabilities." } }
14
+ }
15
+ },
8
16
  "/v1/admin/team/members": {
9
17
  "get": {
10
18
  "operationId": "listTeamMembers",
11
- "summary": "List team members",
12
19
  "tags": ["Team"],
13
20
  "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
14
- "responses": {
15
- "200": { "description": "The deployment team members." },
16
- "401": { "description": "The caller is not authenticated." },
17
- "404": { "description": "Cloud team management is unavailable." }
18
- }
21
+ "responses": { "200": { "description": "Team roster." } }
19
22
  }
20
23
  },
21
24
  "/v1/admin/team/roles": {
22
25
  "get": {
23
26
  "operationId": "listTeamRoles",
24
- "summary": "List team roles",
25
27
  "tags": ["Team"],
26
28
  "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
27
- "responses": {
28
- "200": { "description": "The available team roles." },
29
- "401": { "description": "The caller is not authenticated." },
30
- "404": { "description": "Cloud team management is unavailable." }
31
- }
29
+ "responses": { "200": { "description": "Available team roles." } }
32
30
  }
33
31
  },
34
32
  "/v1/admin/team/invitations": {
35
33
  "get": {
36
34
  "operationId": "listTeamInvitations",
37
- "summary": "List team invitations",
38
35
  "tags": ["Team"],
39
36
  "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
40
- "responses": {
41
- "200": { "description": "The outstanding team invitations." },
42
- "401": { "description": "The caller is not authenticated." }
43
- }
37
+ "responses": { "200": { "description": "Team invitations." } }
44
38
  },
45
39
  "post": {
46
40
  "operationId": "createTeamInvitation",
47
- "summary": "Invite a team member",
48
41
  "tags": ["Team"],
49
42
  "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
50
43
  "requestBody": {
@@ -53,34 +46,22 @@
53
46
  "application/json": {
54
47
  "schema": {
55
48
  "type": "object",
56
- "required": ["email"],
49
+ "required": ["email", "roleId"],
57
50
  "properties": {
58
51
  "email": { "type": "string", "format": "email" },
59
- "roleSlug": {
60
- "type": ["string", "null"],
61
- "minLength": 1,
62
- "maxLength": 120
63
- },
64
- "expiresInDays": {
65
- "type": "integer",
66
- "minimum": 1,
67
- "maximum": 30
68
- }
52
+ "roleId": { "type": "string", "minLength": 1, "maxLength": 120 },
53
+ "expiresInDays": { "type": "integer", "minimum": 1, "maximum": 30 }
69
54
  }
70
55
  }
71
56
  }
72
57
  }
73
58
  },
74
- "responses": {
75
- "201": { "description": "The created team invitation." },
76
- "401": { "description": "The caller is not authenticated." }
77
- }
59
+ "responses": { "201": { "description": "Created team invitation." } }
78
60
  }
79
61
  },
80
62
  "/v1/admin/team/invitations/{invitationId}": {
81
63
  "delete": {
82
64
  "operationId": "revokeTeamInvitation",
83
- "summary": "Revoke a team invitation",
84
65
  "tags": ["Team"],
85
66
  "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
86
67
  "parameters": [
@@ -91,21 +72,17 @@
91
72
  "schema": { "type": "string" }
92
73
  }
93
74
  ],
94
- "responses": {
95
- "204": { "description": "The invitation was revoked." },
96
- "401": { "description": "The caller is not authenticated." }
97
- }
75
+ "responses": { "204": { "description": "Invitation revoked." } }
98
76
  }
99
77
  },
100
- "/v1/admin/team/members/{membershipId}/access": {
78
+ "/v1/admin/team/members/{memberId}/role": {
101
79
  "put": {
102
- "operationId": "setTeamMemberAccess",
103
- "summary": "Set team member access",
80
+ "operationId": "updateTeamMemberRole",
104
81
  "tags": ["Team"],
105
82
  "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
106
83
  "parameters": [
107
84
  {
108
- "name": "membershipId",
85
+ "name": "memberId",
109
86
  "in": "path",
110
87
  "required": true,
111
88
  "schema": { "type": "string" }
@@ -117,54 +94,45 @@
117
94
  "application/json": {
118
95
  "schema": {
119
96
  "type": "object",
120
- "required": ["hasAccess"],
121
- "properties": { "hasAccess": { "type": "boolean" } }
97
+ "required": ["roleId"],
98
+ "properties": { "roleId": { "type": "string", "minLength": 1 } }
122
99
  }
123
100
  }
124
101
  }
125
102
  },
126
- "responses": {
127
- "200": { "description": "The updated team member." },
128
- "401": { "description": "The caller is not authenticated." }
129
- }
103
+ "responses": { "200": { "description": "Updated team member." } }
130
104
  }
131
105
  },
132
- "/v1/admin/team/members/{membershipId}/permissions": {
133
- "put": {
134
- "operationId": "setTeamMemberPermissions",
135
- "summary": "Set team member permissions",
106
+ "/v1/admin/team/members/{memberId}": {
107
+ "delete": {
108
+ "operationId": "deactivateTeamMember",
136
109
  "tags": ["Team"],
137
110
  "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
138
111
  "parameters": [
139
112
  {
140
- "name": "membershipId",
113
+ "name": "memberId",
141
114
  "in": "path",
142
115
  "required": true,
143
116
  "schema": { "type": "string" }
144
117
  }
145
118
  ],
146
- "requestBody": {
147
- "required": true,
148
- "content": {
149
- "application/json": {
150
- "schema": {
151
- "type": "object",
152
- "required": ["permissions"],
153
- "properties": {
154
- "permissions": {
155
- "type": "array",
156
- "maxItems": 200,
157
- "items": { "type": "string", "minLength": 1, "maxLength": 120 }
158
- }
159
- }
160
- }
161
- }
119
+ "responses": { "200": { "description": "Deactivated team member." } }
120
+ }
121
+ },
122
+ "/v1/admin/team/members/{memberId}/activation": {
123
+ "put": {
124
+ "operationId": "activateTeamMember",
125
+ "tags": ["Team"],
126
+ "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
127
+ "parameters": [
128
+ {
129
+ "name": "memberId",
130
+ "in": "path",
131
+ "required": true,
132
+ "schema": { "type": "string" }
162
133
  }
163
- },
164
- "responses": {
165
- "200": { "description": "The updated team member." },
166
- "401": { "description": "The caller is not authenticated." }
167
- }
134
+ ],
135
+ "responses": { "200": { "description": "Activated team member." } }
168
136
  }
169
137
  }
170
138
  }