@owlmeans/iam 0.1.18-rc.8 → 0.1.18

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 (110) hide show
  1. package/README.md +185 -15
  2. package/agent-meta/manifest.json +92 -4
  3. package/agent-meta/skills/iam/SKILL.md +91 -177
  4. package/agent-meta/skills/iam/parts/clients.md +93 -0
  5. package/agent-meta/skills/iam/parts/permissions.md +106 -0
  6. package/agent-meta/skills/iam/parts/service.md +115 -0
  7. package/agent-meta/skills/iam/parts/tenancy.md +72 -0
  8. package/build/consts.d.ts +170 -1
  9. package/build/consts.d.ts.map +1 -1
  10. package/build/consts.js +221 -0
  11. package/build/consts.js.map +1 -1
  12. package/build/consts.local.d.ts +58 -0
  13. package/build/consts.local.d.ts.map +1 -0
  14. package/build/consts.local.js +21 -0
  15. package/build/consts.local.js.map +1 -0
  16. package/build/errors.d.ts +26 -0
  17. package/build/errors.d.ts.map +1 -1
  18. package/build/errors.js +38 -0
  19. package/build/errors.js.map +1 -1
  20. package/build/facet.d.ts +10 -0
  21. package/build/facet.d.ts.map +1 -0
  22. package/build/facet.js +16 -0
  23. package/build/facet.js.map +1 -0
  24. package/build/gate/consts.local.d.ts +2 -0
  25. package/build/gate/consts.local.d.ts.map +1 -0
  26. package/build/gate/consts.local.js +3 -0
  27. package/build/gate/consts.local.js.map +1 -0
  28. package/build/gate/index.d.ts +4 -0
  29. package/build/gate/index.d.ts.map +1 -0
  30. package/build/gate/index.js +4 -0
  31. package/build/gate/index.js.map +1 -0
  32. package/build/gate/param.d.ts +6 -0
  33. package/build/gate/param.d.ts.map +1 -0
  34. package/build/gate/param.js +83 -0
  35. package/build/gate/param.js.map +1 -0
  36. package/build/gate/resolve.d.ts +10 -0
  37. package/build/gate/resolve.d.ts.map +1 -0
  38. package/build/gate/resolve.js +93 -0
  39. package/build/gate/resolve.js.map +1 -0
  40. package/build/gate/types.d.ts +109 -0
  41. package/build/gate/types.d.ts.map +1 -0
  42. package/build/gate/types.js +2 -0
  43. package/build/gate/types.js.map +1 -0
  44. package/build/gate/types.local.d.ts +5 -0
  45. package/build/gate/types.local.d.ts.map +1 -0
  46. package/build/gate/types.local.js +2 -0
  47. package/build/gate/types.local.js.map +1 -0
  48. package/build/gate/validate.d.ts +4 -0
  49. package/build/gate/validate.d.ts.map +1 -0
  50. package/build/gate/validate.js +100 -0
  51. package/build/gate/validate.js.map +1 -0
  52. package/build/index.d.ts +9 -0
  53. package/build/index.d.ts.map +1 -1
  54. package/build/index.js +5 -0
  55. package/build/index.js.map +1 -1
  56. package/build/permission/types.d.ts +35 -0
  57. package/build/permission/types.d.ts.map +1 -0
  58. package/build/permission/types.js +2 -0
  59. package/build/permission/types.js.map +1 -0
  60. package/build/permission.d.ts +8 -0
  61. package/build/permission.d.ts.map +1 -0
  62. package/build/permission.js +34 -0
  63. package/build/permission.js.map +1 -0
  64. package/build/runtime/types.d.ts +90 -0
  65. package/build/runtime/types.d.ts.map +1 -0
  66. package/build/runtime/types.js +2 -0
  67. package/build/runtime/types.js.map +1 -0
  68. package/build/runtime.d.ts +75 -0
  69. package/build/runtime.d.ts.map +1 -0
  70. package/build/runtime.js +75 -0
  71. package/build/runtime.js.map +1 -0
  72. package/build/schemas.d.ts +13 -0
  73. package/build/schemas.d.ts.map +1 -0
  74. package/build/schemas.js +108 -0
  75. package/build/schemas.js.map +1 -0
  76. package/build/types.d.ts +429 -30
  77. package/build/types.d.ts.map +1 -1
  78. package/build/utils/types.d.ts +12 -0
  79. package/build/utils/types.d.ts.map +1 -0
  80. package/build/utils/types.js +2 -0
  81. package/build/utils/types.js.map +1 -0
  82. package/build/utils.d.ts +7 -6
  83. package/build/utils.d.ts.map +1 -1
  84. package/build/utils.js +10 -1
  85. package/build/utils.js.map +1 -1
  86. package/package.json +12 -7
  87. package/src/consts.local.ts +26 -0
  88. package/src/consts.ts +241 -1
  89. package/src/errors.ts +44 -0
  90. package/src/facet.ts +17 -0
  91. package/src/gate/consts.local.ts +3 -0
  92. package/src/gate/index.ts +3 -0
  93. package/src/gate/param.ts +108 -0
  94. package/src/gate/resolve.ts +114 -0
  95. package/src/gate/types.local.ts +4 -0
  96. package/src/gate/types.ts +117 -0
  97. package/src/gate/validate.ts +123 -0
  98. package/src/index.ts +9 -0
  99. package/src/permission/types.ts +33 -0
  100. package/src/permission.ts +48 -0
  101. package/src/runtime/types.ts +107 -0
  102. package/src/runtime.ts +142 -0
  103. package/src/schemas.ts +122 -0
  104. package/src/types.ts +492 -31
  105. package/src/utils/types.ts +11 -0
  106. package/src/utils.ts +12 -7
  107. package/tests/gate-param.spec.ts +233 -0
  108. package/tests/runtime.spec.ts +101 -0
  109. package/tests/tsconfig.json +12 -0
  110. package/tests/utils.spec.ts +47 -1
@@ -0,0 +1,75 @@
1
+ import { type EntrypointProtocol, type OpenRequest, type OpenValue } from '@owlmeans/entrypoint';
2
+ import type { IamRuntimeAck, IamRuntimeGrant, IamRuntimeGrantList, IamRuntimeGrantQuery, IamRuntimeGrantRequest, IamRuntimeMember, IamRuntimeMemberInvite, IamRuntimeMemberList, IamRuntimeMemberParams, IamRuntimeMemberUpdate, IamRuntimeOrganization, IamRuntimeOrganizationCreate, IamRuntimeOrganizationList, IamRuntimeOrganizationParams, IamRuntimeOrganizationUpdate, IamRuntimePermissionList, IamRuntimeProtocolOptions } from './runtime/types.js';
3
+ export type IamRuntimeProtocols = ReturnType<typeof declareRuntime>;
4
+ declare const declareRuntime: (opts: IamRuntimeProtocolOptions) => Readonly<{
5
+ base: EntrypointProtocol<OpenRequest, OpenValue>;
6
+ organizations: Readonly<{
7
+ /** Any subject: its own organizations. */
8
+ list: EntrypointProtocol<{}, IamRuntimeOrganizationList>;
9
+ /** Any subject of a tenanted client; the caller becomes its owner. */
10
+ create: EntrypointProtocol<{
11
+ body: IamRuntimeOrganizationCreate;
12
+ }, IamRuntimeOrganization>;
13
+ /** Owner. */
14
+ update: EntrypointProtocol<import("@owlmeans/entrypoint").RequestFromSources<{
15
+ params: import("@owlmeans/entrypoint").Typed<IamRuntimeOrganizationParams>;
16
+ body: import("@owlmeans/entrypoint").Typed<IamRuntimeOrganizationUpdate>;
17
+ }>, IamRuntimeOrganization>;
18
+ }>;
19
+ members: Readonly<{
20
+ /** Member. */
21
+ list: EntrypointProtocol<{
22
+ params: IamRuntimeOrganizationParams;
23
+ }, IamRuntimeMemberList>;
24
+ /** Owner. Find-or-create by e-mail, idempotent. */
25
+ add: EntrypointProtocol<import("@owlmeans/entrypoint").RequestFromSources<{
26
+ params: import("@owlmeans/entrypoint").Typed<IamRuntimeOrganizationParams>;
27
+ body: import("@owlmeans/entrypoint").Typed<IamRuntimeMemberInvite>;
28
+ }>, IamRuntimeMember>;
29
+ /** Owner. */
30
+ update: EntrypointProtocol<import("@owlmeans/entrypoint").RequestFromSources<{
31
+ params: import("@owlmeans/entrypoint").Typed<IamRuntimeMemberParams>;
32
+ body: import("@owlmeans/entrypoint").Typed<IamRuntimeMemberUpdate>;
33
+ }>, IamRuntimeMember>;
34
+ /** Owner, or the member itself. */
35
+ remove: EntrypointProtocol<{
36
+ params: IamRuntimeMemberParams;
37
+ }, IamRuntimeAck>;
38
+ }>;
39
+ permissions: Readonly<{
40
+ /** Member. */
41
+ list: EntrypointProtocol<{
42
+ params: IamRuntimeOrganizationParams;
43
+ }, IamRuntimePermissionList>;
44
+ }>;
45
+ grants: Readonly<{
46
+ /** Owner. */
47
+ list: EntrypointProtocol<import("@owlmeans/entrypoint").RequestFromSources<{
48
+ params: import("@owlmeans/entrypoint").Typed<IamRuntimeOrganizationParams>;
49
+ query: import("@owlmeans/entrypoint").Typed<IamRuntimeGrantQuery>;
50
+ }>, IamRuntimeGrantList>;
51
+ /** Owner. */
52
+ assign: EntrypointProtocol<import("@owlmeans/entrypoint").RequestFromSources<{
53
+ params: import("@owlmeans/entrypoint").Typed<IamRuntimeOrganizationParams>;
54
+ body: import("@owlmeans/entrypoint").Typed<IamRuntimeGrantRequest>;
55
+ }>, IamRuntimeGrant>;
56
+ /** Owner. */
57
+ revoke: EntrypointProtocol<import("@owlmeans/entrypoint").RequestFromSources<{
58
+ params: import("@owlmeans/entrypoint").Typed<IamRuntimeOrganizationParams>;
59
+ body: import("@owlmeans/entrypoint").Typed<IamRuntimeGrantRequest>;
60
+ }>, IamRuntimeAck>;
61
+ }>;
62
+ }>;
63
+ /**
64
+ * Declare the runtime IAM API — the provider-side surface a tenanted client's server calls on behalf
65
+ * of its signed-in subject: the subject's organizations, their members, the grantable definitions
66
+ * and the grants inside one organization.
67
+ *
68
+ * Every leaf hangs under ONE base carrying `IAM_RUNTIME_GUARD`, so none can be reached without the
69
+ * provider's own access token; the caller's client and account come from that token, the
70
+ * organization from the path. Owner/member checks, the tenancy-config gate and the write rules are
71
+ * the serving process's — a declaration decides nothing.
72
+ */
73
+ export declare const makeIamRuntimeProtocols: (opts: IamRuntimeProtocolOptions) => IamRuntimeProtocols;
74
+ export {};
75
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAIzI,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAY9b,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAEnE,QAAA,MAAM,cAAc,SAAU,yBAAyB;;;QAejD,0CAA0C;;QAK1C,sEAAsE;;;;QAQtE,aAAa;;;;;;;QAWb,cAAc;;;;QAQd,mDAAmD;;;;;QAQnD,aAAa;;;;;QAQb,mCAAmC;;;;;;QAWnC,cAAc;;;;;;QAWd,aAAa;;;;;QAQb,aAAa;;;;;QAQb,aAAa;;;;;;EAUlB,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,SAAU,yBAAyB,KAAG,mBAA2C,CAAA"}
@@ -0,0 +1,75 @@
1
+ import { contract, openProtocol, protocol, typed } from '@owlmeans/entrypoint';
2
+ import { backend, route, RouteMethod } from '@owlmeans/route';
3
+ import { IAM_RUNTIME_GUARD, IAM_RUNTIME_PATH, IAM_RUNTIME_ROUTES, IamRuntimeAckSchema, IamRuntimeGrantQuerySchema, IamRuntimeMemberInviteSchema, IamRuntimeMemberParamsSchema, IamRuntimeOrganizationCreateSchema, IamRuntimeOrganizationParamsSchema, IamRuntimeOrganizationUpdateSchema } from './consts.js';
4
+ import { aliases } from './consts.local.js';
5
+ import { IamRuntimeOrganizationSchema, IamRuntimeOrganizationListSchema, IamRuntimeMemberSchema, IamRuntimeMemberListSchema, IamRuntimeMemberUpdateSchema, IamRuntimePermissionListSchema, IamRuntimeGrantSchema, IamRuntimeGrantListSchema, IamRuntimeGrantRequestSchema } from './schemas.js';
6
+ const declareRuntime = (opts) => {
7
+ const { service } = opts;
8
+ const base = openProtocol(route(aliases.base, opts.path ?? IAM_RUNTIME_PATH, backend({ service })), { guards: IAM_RUNTIME_GUARD });
9
+ // A route's service is never inherited from its parent, so each leaf names it too: a leaf left
10
+ // unpinned would be mounted by every process that happens to bind the tree.
11
+ const leaf = (alias, path, method) => route(alias, path, backend({ parent: base, service }, method));
12
+ return Object.freeze({
13
+ base,
14
+ organizations: Object.freeze({
15
+ /** Any subject: its own organizations. */
16
+ list: protocol(leaf(aliases.organization.list, IAM_RUNTIME_ROUTES.organizations, RouteMethod.GET), contract(typed(IamRuntimeOrganizationListSchema))),
17
+ /** Any subject of a tenanted client; the caller becomes its owner. */
18
+ create: protocol(leaf(aliases.organization.create, IAM_RUNTIME_ROUTES.organizations, RouteMethod.POST), contract.request({ body: typed(IamRuntimeOrganizationCreateSchema) }, typed(IamRuntimeOrganizationSchema))),
19
+ /** Owner. */
20
+ update: protocol(leaf(aliases.organization.update, IAM_RUNTIME_ROUTES.organization, RouteMethod.POST), contract.request({
21
+ params: typed(IamRuntimeOrganizationParamsSchema),
22
+ body: typed(IamRuntimeOrganizationUpdateSchema),
23
+ }, typed(IamRuntimeOrganizationSchema))),
24
+ }),
25
+ members: Object.freeze({
26
+ /** Member. */
27
+ list: protocol(leaf(aliases.member.list, IAM_RUNTIME_ROUTES.members, RouteMethod.GET), contract.request({ params: typed(IamRuntimeOrganizationParamsSchema) }, typed(IamRuntimeMemberListSchema))),
28
+ /** Owner. Find-or-create by e-mail, idempotent. */
29
+ add: protocol(leaf(aliases.member.add, IAM_RUNTIME_ROUTES.members, RouteMethod.POST), contract.request({
30
+ params: typed(IamRuntimeOrganizationParamsSchema),
31
+ body: typed(IamRuntimeMemberInviteSchema),
32
+ }, typed(IamRuntimeMemberSchema))),
33
+ /** Owner. */
34
+ update: protocol(leaf(aliases.member.update, IAM_RUNTIME_ROUTES.member, RouteMethod.POST), contract.request({
35
+ params: typed(IamRuntimeMemberParamsSchema),
36
+ body: typed(IamRuntimeMemberUpdateSchema),
37
+ }, typed(IamRuntimeMemberSchema))),
38
+ /** Owner, or the member itself. */
39
+ remove: protocol(leaf(aliases.member.remove, IAM_RUNTIME_ROUTES.memberRemove, RouteMethod.POST), contract.request({ params: typed(IamRuntimeMemberParamsSchema) }, typed(IamRuntimeAckSchema))),
40
+ }),
41
+ permissions: Object.freeze({
42
+ /** Member. */
43
+ list: protocol(leaf(aliases.permission.list, IAM_RUNTIME_ROUTES.permissions, RouteMethod.GET), contract.request({ params: typed(IamRuntimeOrganizationParamsSchema) }, typed(IamRuntimePermissionListSchema))),
44
+ }),
45
+ grants: Object.freeze({
46
+ /** Owner. */
47
+ list: protocol(leaf(aliases.grant.list, IAM_RUNTIME_ROUTES.grants, RouteMethod.GET), contract.request({
48
+ params: typed(IamRuntimeOrganizationParamsSchema),
49
+ query: typed(IamRuntimeGrantQuerySchema),
50
+ }, typed(IamRuntimeGrantListSchema))),
51
+ /** Owner. */
52
+ assign: protocol(leaf(aliases.grant.assign, IAM_RUNTIME_ROUTES.grants, RouteMethod.POST), contract.request({
53
+ params: typed(IamRuntimeOrganizationParamsSchema),
54
+ body: typed(IamRuntimeGrantRequestSchema),
55
+ }, typed(IamRuntimeGrantSchema))),
56
+ /** Owner. */
57
+ revoke: protocol(leaf(aliases.grant.revoke, IAM_RUNTIME_ROUTES.grantsRevoke, RouteMethod.POST), contract.request({
58
+ params: typed(IamRuntimeOrganizationParamsSchema),
59
+ body: typed(IamRuntimeGrantRequestSchema),
60
+ }, typed(IamRuntimeAckSchema))),
61
+ }),
62
+ });
63
+ };
64
+ /**
65
+ * Declare the runtime IAM API — the provider-side surface a tenanted client's server calls on behalf
66
+ * of its signed-in subject: the subject's organizations, their members, the grantable definitions
67
+ * and the grants inside one organization.
68
+ *
69
+ * Every leaf hangs under ONE base carrying `IAM_RUNTIME_GUARD`, so none can be reached without the
70
+ * provider's own access token; the caller's client and account come from that token, the
71
+ * organization from the path. Owner/member checks, the tenancy-config gate and the write rules are
72
+ * the serving process's — a declaration decides nothing.
73
+ */
74
+ export const makeIamRuntimeProtocols = (opts) => declareRuntime(opts);
75
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { JSONSchemaType } from 'ajv';
2
+ import type { IamRuntimeGrant, IamRuntimeGrantList, IamRuntimeGrantRequest, IamRuntimeMember, IamRuntimeMemberList, IamRuntimeMemberUpdate, IamRuntimeOrganization, IamRuntimeOrganizationList, IamRuntimePermission, IamRuntimePermissionList } from './runtime/types.js';
3
+ export declare const IamRuntimeOrganizationSchema: JSONSchemaType<IamRuntimeOrganization>;
4
+ export declare const IamRuntimeOrganizationListSchema: JSONSchemaType<IamRuntimeOrganizationList>;
5
+ export declare const IamRuntimeMemberSchema: JSONSchemaType<IamRuntimeMember>;
6
+ export declare const IamRuntimeMemberListSchema: JSONSchemaType<IamRuntimeMemberList>;
7
+ export declare const IamRuntimeMemberUpdateSchema: JSONSchemaType<IamRuntimeMemberUpdate>;
8
+ export declare const IamRuntimePermissionSchema: JSONSchemaType<IamRuntimePermission>;
9
+ export declare const IamRuntimePermissionListSchema: JSONSchemaType<IamRuntimePermissionList>;
10
+ export declare const IamRuntimeGrantSchema: JSONSchemaType<IamRuntimeGrant>;
11
+ export declare const IamRuntimeGrantListSchema: JSONSchemaType<IamRuntimeGrantList>;
12
+ export declare const IamRuntimeGrantRequestSchema: JSONSchemaType<IamRuntimeGrantRequest>;
13
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAGzC,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAc1Q,eAAO,MAAM,4BAA4B,EAAE,cAAc,CAAC,sBAAsB,CAW/E,CAAA;AAED,eAAO,MAAM,gCAAgC,EAAE,cAAc,CAAC,0BAA0B,CAKvF,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,cAAc,CAAC,gBAAgB,CAYnE,CAAA;AAED,eAAO,MAAM,0BAA0B,EAAE,cAAc,CAAC,oBAAoB,CAK3E,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,cAAc,CAAC,sBAAsB,CAQ/E,CAAA;AAED,eAAO,MAAM,0BAA0B,EAAE,cAAc,CAAC,oBAAoB,CAY3E,CAAA;AAED,eAAO,MAAM,8BAA8B,EAAE,cAAc,CAAC,wBAAwB,CAKnF,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAAC,eAAe,CAYjE,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,mBAAmB,CAKzE,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,cAAc,CAAC,sBAAsB,CAU/E,CAAA"}
@@ -0,0 +1,108 @@
1
+ import { EntitySlugValueSchema, GroupValueSchema } from '@owlmeans/auth';
2
+ import { IamDefaultClass, IamGrantMode, IamGrantOrigin } from './consts.js';
3
+ import { EmailSchema, PermissionNameSchema, ProfileIdSchema, ResourcesSchema, TitleSchema } from './consts.local.js';
4
+ // ---------------------------------------------------------------------------------------------
5
+ // Wire shapes. Organizations travel by `entitySlug` only; a subject is the CALLING client's
6
+ // pairwise `profileId`. Neither an organization id nor an account id ever appears here.
7
+ // ---------------------------------------------------------------------------------------------
8
+ // ---------------------------------------------------------------------------------------------
9
+ // Schemas — closed throughout: the server's AJV strips an undeclared key silently, so a field a
10
+ // caller sends and the schema omits would vanish without an error.
11
+ // ---------------------------------------------------------------------------------------------
12
+ const GroupsSchema = { type: 'array', items: { ...GroupValueSchema }, maxItems: 64 };
13
+ export const IamRuntimeOrganizationSchema = {
14
+ type: 'object',
15
+ properties: {
16
+ entitySlug: { ...EntitySlugValueSchema },
17
+ title: { ...TitleSchema, nullable: true },
18
+ owner: { type: 'boolean' },
19
+ groups: { ...GroupsSchema, nullable: true },
20
+ home: { type: 'boolean', nullable: true },
21
+ },
22
+ required: ['entitySlug', 'owner'],
23
+ additionalProperties: false,
24
+ };
25
+ export const IamRuntimeOrganizationListSchema = {
26
+ type: 'object',
27
+ properties: { items: { type: 'array', items: IamRuntimeOrganizationSchema } },
28
+ required: ['items'],
29
+ additionalProperties: false,
30
+ };
31
+ export const IamRuntimeMemberSchema = {
32
+ type: 'object',
33
+ properties: {
34
+ profileId: { ...ProfileIdSchema },
35
+ email: { ...EmailSchema, nullable: true },
36
+ name: { ...TitleSchema, nullable: true },
37
+ owner: { type: 'boolean' },
38
+ groups: { ...GroupsSchema },
39
+ managed: { type: 'boolean', nullable: true },
40
+ },
41
+ required: ['profileId', 'owner', 'groups'],
42
+ additionalProperties: false,
43
+ };
44
+ export const IamRuntimeMemberListSchema = {
45
+ type: 'object',
46
+ properties: { items: { type: 'array', items: IamRuntimeMemberSchema } },
47
+ required: ['items'],
48
+ additionalProperties: false,
49
+ };
50
+ export const IamRuntimeMemberUpdateSchema = {
51
+ type: 'object',
52
+ properties: {
53
+ owner: { type: 'boolean', nullable: true },
54
+ groups: { ...GroupsSchema, nullable: true },
55
+ },
56
+ required: [],
57
+ additionalProperties: false,
58
+ };
59
+ export const IamRuntimePermissionSchema = {
60
+ type: 'object',
61
+ properties: {
62
+ name: { ...PermissionNameSchema },
63
+ title: { ...TitleSchema, nullable: true },
64
+ area: { type: 'string', minLength: 1, maxLength: 64, nullable: true },
65
+ resourceScoped: { type: 'boolean', nullable: true },
66
+ managed: { type: 'boolean', nullable: true },
67
+ defaultClass: { type: 'string', enum: Object.values(IamDefaultClass), nullable: true },
68
+ },
69
+ required: ['name'],
70
+ additionalProperties: false,
71
+ };
72
+ export const IamRuntimePermissionListSchema = {
73
+ type: 'object',
74
+ properties: { items: { type: 'array', items: IamRuntimePermissionSchema } },
75
+ required: ['items'],
76
+ additionalProperties: false,
77
+ };
78
+ export const IamRuntimeGrantSchema = {
79
+ type: 'object',
80
+ properties: {
81
+ profileId: { ...ProfileIdSchema },
82
+ permission: { ...PermissionNameSchema },
83
+ resources: { ...ResourcesSchema },
84
+ mode: { type: 'string', enum: Object.values(IamGrantMode), nullable: true },
85
+ origin: { type: 'string', enum: Object.values(IamGrantOrigin), nullable: true },
86
+ through: { ...GroupValueSchema, nullable: true },
87
+ },
88
+ required: ['profileId', 'permission'],
89
+ additionalProperties: false,
90
+ };
91
+ export const IamRuntimeGrantListSchema = {
92
+ type: 'object',
93
+ properties: { items: { type: 'array', items: IamRuntimeGrantSchema } },
94
+ required: ['items'],
95
+ additionalProperties: false,
96
+ };
97
+ export const IamRuntimeGrantRequestSchema = {
98
+ type: 'object',
99
+ properties: {
100
+ profileId: { ...ProfileIdSchema },
101
+ permission: { ...PermissionNameSchema },
102
+ resources: { ...ResourcesSchema },
103
+ mode: { type: 'string', enum: Object.values(IamGrantMode), nullable: true },
104
+ },
105
+ required: ['profileId', 'permission'],
106
+ additionalProperties: false,
107
+ };
108
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}