picked 0.0.101-next.2 → 0.0.101

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 (175) hide show
  1. package/README.md +27 -12
  2. package/docs/explanation/conditions-and-the-logic-engine.md +94 -0
  3. package/docs/explanation/content-references.md +99 -0
  4. package/docs/explanation/feature-flag-allocation.md +218 -0
  5. package/docs/explanation/how-picked-works.md +124 -0
  6. package/docs/explanation/how-pickedql-works.md +76 -0
  7. package/docs/explanation/pages-and-flows.md +64 -0
  8. package/docs/explanation/the-content-model.md +87 -0
  9. package/docs/explanation/the-two-apis.md +68 -0
  10. package/docs/explanation/why-server-side-rendering.md +76 -0
  11. package/docs/explanation/workspaces-and-versions.md +71 -0
  12. package/docs/how-to/add-a-step-field-or-action.md +56 -0
  13. package/docs/how-to/analytics/index.md +324 -0
  14. package/docs/how-to/archive-or-delete-a-workspace.md +59 -0
  15. package/docs/how-to/authenticate-the-cli.md +101 -0
  16. package/docs/how-to/authenticate-with-a-magic-link.md +56 -0
  17. package/docs/how-to/authenticate-with-a-password.md +68 -0
  18. package/docs/how-to/authenticate-with-an-api-key.md +60 -0
  19. package/docs/how-to/authenticate-with-oauth.md +49 -0
  20. package/docs/how-to/build-a-flow.md +106 -0
  21. package/docs/how-to/call-an-external-api-from-a-workflow.md +116 -0
  22. package/docs/how-to/connect-the-mcp-server.md +46 -0
  23. package/docs/how-to/create-a-content-entry.md +58 -0
  24. package/docs/how-to/create-a-project.md +40 -0
  25. package/docs/how-to/create-an-experience.md +51 -0
  26. package/docs/how-to/create-and-revoke-an-api-key.md +54 -0
  27. package/docs/how-to/debug-with-the-chrome-extension.md +57 -0
  28. package/docs/how-to/define-a-page-layout.md +54 -0
  29. package/docs/how-to/fill-and-publish-a-page.md +82 -0
  30. package/docs/how-to/install-the-gtm-template.md +84 -0
  31. package/docs/how-to/install-the-sdk.md +93 -0
  32. package/docs/how-to/install-the-vite-plugin.md +69 -0
  33. package/docs/how-to/invite-and-remove-members.md +45 -0
  34. package/docs/how-to/point-one-entry-at-another.md +75 -0
  35. package/docs/how-to/preview-a-workspace.md +39 -0
  36. package/docs/how-to/publish-a-workspace.md +42 -0
  37. package/docs/how-to/read-a-feature-flag.md +113 -0
  38. package/docs/how-to/read-a-referenced-entry.md +109 -0
  39. package/docs/how-to/register-a-component.md +55 -0
  40. package/docs/how-to/register-an-action-handler.md +85 -0
  41. package/docs/how-to/register-an-api-that-uses-oauth2.md +107 -0
  42. package/docs/how-to/render-a-step-form.md +131 -0
  43. package/docs/how-to/render-an-unpublished-preview.md +41 -0
  44. package/docs/how-to/retry-a-failed-call-with-a-loop.md +81 -0
  45. package/docs/how-to/reuse-a-section.md +64 -0
  46. package/docs/how-to/reuse-a-step-field-or-action.md +39 -0
  47. package/docs/how-to/roll-back-a-published-version.md +39 -0
  48. package/docs/how-to/run-an-ab-test.md +59 -0
  49. package/docs/how-to/run-code-on-a-form-submission.md +125 -0
  50. package/docs/how-to/server-render-a-page.md +81 -0
  51. package/docs/how-to/set-a-content-security-policy.md +32 -0
  52. package/docs/how-to/set-up-mfa.md +126 -0
  53. package/docs/how-to/switch-workspaces.md +122 -0
  54. package/docs/how-to/upload-and-use-an-asset.mdx +87 -0
  55. package/docs/how-to/validate-a-field.md +52 -0
  56. package/docs/how-to/wait-for-an-action-response.md +182 -0
  57. package/docs/how-to/write-a-condition.md +57 -0
  58. package/docs/how-to/write-a-predicate.md +60 -0
  59. package/docs/index.md +59 -0
  60. package/docs/reference/dashboard/actions.mdx +65 -0
  61. package/docs/reference/dashboard/api-keys.mdx +47 -0
  62. package/docs/reference/dashboard/conditions.mdx +51 -0
  63. package/docs/reference/dashboard/content/asset-library.mdx +74 -0
  64. package/docs/reference/dashboard/content/blocks.mdx +66 -0
  65. package/docs/reference/dashboard/content/content-entries.mdx +109 -0
  66. package/docs/reference/dashboard/content/models.mdx +119 -0
  67. package/docs/reference/dashboard/content/pages.mdx +72 -0
  68. package/docs/reference/dashboard/experiences.mdx +61 -0
  69. package/docs/reference/dashboard/external-apis.md +182 -0
  70. package/docs/reference/dashboard/features.mdx +165 -0
  71. package/docs/reference/dashboard/fields.mdx +120 -0
  72. package/docs/reference/dashboard/flow-builder/canvas.mdx +58 -0
  73. package/docs/reference/dashboard/flow-builder/condition-builder.md +69 -0
  74. package/docs/reference/dashboard/flow-builder/keyboard-shortcuts.md +72 -0
  75. package/docs/reference/dashboard/flow-builder/nodes.md +74 -0
  76. package/docs/reference/dashboard/labels.md +321 -0
  77. package/docs/reference/dashboard/lead-search.md +235 -0
  78. package/docs/reference/dashboard/projects.mdx +53 -0
  79. package/docs/reference/dashboard/reports.mdx +53 -0
  80. package/docs/reference/dashboard/steps.mdx +47 -0
  81. package/docs/reference/dashboard/team-management.md +38 -0
  82. package/docs/reference/dashboard/workflow-runs.md +157 -0
  83. package/docs/reference/dashboard/workflow-templates.md +182 -0
  84. package/docs/reference/dashboard/workflow-test-runs.md +85 -0
  85. package/docs/reference/dashboard/workspace-versioning.mdx +42 -0
  86. package/docs/reference/dashboard/workspaces.mdx +91 -0
  87. package/docs/reference/delivery-api/experience-content.md +152 -0
  88. package/docs/reference/delivery-api/index.md +45 -0
  89. package/docs/reference/delivery-api/preview-caching-crawling.md +79 -0
  90. package/docs/reference/delivery-api/project-config.md +65 -0
  91. package/docs/reference/delivery-api/workspace-schema.md +107 -0
  92. package/docs/reference/glossary.md +201 -0
  93. package/docs/reference/management-api/authentication.md +87 -0
  94. package/docs/reference/management-api/authorization-and-scopes.md +291 -0
  95. package/docs/reference/management-api/error-handling.md +232 -0
  96. package/docs/reference/management-api/pagination.md +192 -0
  97. package/docs/reference/management-api/schema/action.md +261 -0
  98. package/docs/reference/management-api/schema/analytics-session.md +363 -0
  99. package/docs/reference/management-api/schema/analytics.md +73 -0
  100. package/docs/reference/management-api/schema/api-key.md +170 -0
  101. package/docs/reference/management-api/schema/auth.md +1177 -0
  102. package/docs/reference/management-api/schema/cms-fields.md +954 -0
  103. package/docs/reference/management-api/schema/cms-models.md +1155 -0
  104. package/docs/reference/management-api/schema/common.md +362 -0
  105. package/docs/reference/management-api/schema/condition.md +254 -0
  106. package/docs/reference/management-api/schema/design-system.md +199 -0
  107. package/docs/reference/management-api/schema/experience.md +1098 -0
  108. package/docs/reference/management-api/schema/external-api.md +637 -0
  109. package/docs/reference/management-api/schema/feature.md +350 -0
  110. package/docs/reference/management-api/schema/feedback.md +103 -0
  111. package/docs/reference/management-api/schema/field.md +400 -0
  112. package/docs/reference/management-api/schema/index.md +243 -0
  113. package/docs/reference/management-api/schema/integration.md +272 -0
  114. package/docs/reference/management-api/schema/label.md +349 -0
  115. package/docs/reference/management-api/schema/lead.md +340 -0
  116. package/docs/reference/management-api/schema/mcp-server.md +299 -0
  117. package/docs/reference/management-api/schema/metric.md +223 -0
  118. package/docs/reference/management-api/schema/operation.md +96 -0
  119. package/docs/reference/management-api/schema/organization.md +749 -0
  120. package/docs/reference/management-api/schema/project.md +607 -0
  121. package/docs/reference/management-api/schema/report.md +243 -0
  122. package/docs/reference/management-api/schema/saved-view.md +288 -0
  123. package/docs/reference/management-api/schema/shopify.md +795 -0
  124. package/docs/reference/management-api/schema/step.md +273 -0
  125. package/docs/reference/management-api/schema/tenant-branding.md +185 -0
  126. package/docs/reference/management-api/schema/workbench.md +246 -0
  127. package/docs/reference/management-api/schema/workflow-run.md +263 -0
  128. package/docs/reference/management-api/schema/workflow.md +1110 -0
  129. package/docs/reference/management-api/schema/workspace-version.md +823 -0
  130. package/docs/reference/management-api/schema/workspace.md +917 -0
  131. package/docs/reference/pickedql/data-sources.md +174 -0
  132. package/docs/reference/pickedql/dimensions.md +103 -0
  133. package/docs/reference/pickedql/filtering.md +64 -0
  134. package/docs/reference/pickedql/index.md +18 -0
  135. package/docs/reference/pickedql/schema.md +172 -0
  136. package/docs/reference/pickedql/virtual-functions.md +248 -0
  137. package/docs/reference/sdk/actions.md +154 -0
  138. package/docs/reference/sdk/analytics-events.md +453 -0
  139. package/docs/reference/sdk/conditions.md +147 -0
  140. package/docs/reference/sdk/content-security-policy.md +21 -0
  141. package/docs/reference/sdk/content.md +253 -0
  142. package/docs/reference/sdk/experiences.md +51 -0
  143. package/docs/reference/sdk/features.md +256 -0
  144. package/docs/reference/sdk/fields.md +255 -0
  145. package/docs/reference/sdk/index.md +68 -0
  146. package/docs/reference/sdk/plugins/create-experience.md +123 -0
  147. package/docs/reference/sdk/plugins/dynamic-experiences.md +74 -0
  148. package/docs/reference/sdk/plugins/fingerprintjs.md +39 -0
  149. package/docs/reference/sdk/plugins/hotjar.md +60 -0
  150. package/docs/reference/sdk/plugins/index.md +33 -0
  151. package/docs/reference/sdk/plugins/sentry.md +51 -0
  152. package/docs/reference/sdk/plugins/shopify.md +109 -0
  153. package/docs/reference/sdk/plugins/window-object.md +25 -0
  154. package/docs/reference/sdk/predicates.md +43 -0
  155. package/docs/reference/sdk/react.md +61 -0
  156. package/docs/reference/sdk/ssr/index.md +33 -0
  157. package/docs/reference/sdk/ssr/rendering-and-hydration.md +103 -0
  158. package/docs/reference/sdk/ssr/serialize.md +80 -0
  159. package/docs/reference/sdk/ssr/slots-and-placements.md +113 -0
  160. package/docs/reference/sdk/steps.md +86 -0
  161. package/docs/reference/sdk/svelte.md +74 -0
  162. package/docs/reference/sdk/type-generation.md +265 -0
  163. package/docs/reference/tools/admin-api-client.md +89 -0
  164. package/docs/reference/tools/chrome-extension.md +16 -0
  165. package/docs/reference/tools/cli.md +319 -0
  166. package/docs/reference/tools/delivery-api-client.md +60 -0
  167. package/docs/reference/tools/image-optimisation-service.md +104 -0
  168. package/docs/reference/tools/mcp-run.md +121 -0
  169. package/docs/reference/tools/mcp.md +391 -0
  170. package/docs/reference/tools/vite-plugin.md +163 -0
  171. package/docs/tutorials/first-api-call.md +253 -0
  172. package/docs/tutorials/first-experience-in-the-dashboard.mdx +160 -0
  173. package/docs/tutorials/first-experience.mdx +254 -0
  174. package/docs/tutorials/first-server-rendered-page.mdx +186 -0
  175. package/package.json +8 -7
@@ -0,0 +1,749 @@
1
+ ---
2
+ type: reference
3
+ layout: docs
4
+ generated: true
5
+ ---
6
+
7
+ # Organization schema
8
+
9
+ The operations and types that `organization.graphql` adds to the Management API. See [Management API schema](/reference/management-api/schema) for every domain, the endpoint and authentication.
10
+
11
+ ## Queries
12
+
13
+ ### `organization`
14
+
15
+ Fetch a single organisation by ID or slug. Requires authentication.
16
+
17
+ ```graphql
18
+ organization(input: OrganizationInput!): Organization @auth
19
+ ```
20
+
21
+ ### `organizations`
22
+
23
+ List organisations the authenticated user belongs to. Requires authentication.
24
+
25
+ ```graphql
26
+ organizations(first: Int, after: String, search: String, sortKey: OrganizationSortKeys = NAME, reverse: Boolean = false): OrganizationConnection! @auth
27
+ ```
28
+
29
+ ## Mutations
30
+
31
+ ### `organizationCreate`
32
+
33
+ Create a new organisation. Requires scope: `ORGANIZATION_CREATE`.
34
+
35
+ ```graphql
36
+ organizationCreate(input: OrganizationCreateInput!): OrganizationCreatePayload! @auth
37
+ ```
38
+
39
+ ### `organizationUpdate`
40
+
41
+ Update an organisation. Requires scope: `ORGANIZATION_UPDATE`.
42
+
43
+ ```graphql
44
+ organizationUpdate(input: OrganizationUpdateInput!): OrganizationUpdatePayload! @auth
45
+ ```
46
+
47
+ ### `organizationDelete`
48
+
49
+ Delete an organisation. Requires scope: `ORGANIZATION_DELETE`.
50
+
51
+ ```graphql
52
+ organizationDelete(input: OrganizationDeleteInput!): OrganizationDeletePayload! @auth
53
+ ```
54
+
55
+ ### `organizationMemberInvite`
56
+
57
+ Invite a member to an organisation. Requires scope: `ORGANIZATION_INVITATIONS_CREATE`.
58
+
59
+ ```graphql
60
+ organizationMemberInvite(input: OrganizationMemberInviteInput!): OrganizationMemberInvitePayload! @auth
61
+ ```
62
+
63
+ ### `organizationInvitationAccept`
64
+
65
+ Accept an organisation invitation. Requires authentication.
66
+
67
+ ```graphql
68
+ organizationInvitationAccept(input: OrganizationInvitationAcceptInput!): OrganizationInvitationAcceptPayload! @auth
69
+ ```
70
+
71
+ ### `organizationInvitationDecline`
72
+
73
+ Decline an organisation invitation. Requires authentication.
74
+
75
+ ```graphql
76
+ organizationInvitationDecline(input: OrganizationInvitationDeclineInput!): OrganizationInvitationDeclinePayload! @auth
77
+ ```
78
+
79
+ ### `organizationInvitationRevoke`
80
+
81
+ Revoke an organisation invitation. Requires scope: `ORGANIZATION_INVITATIONS_DELETE`.
82
+
83
+ ```graphql
84
+ organizationInvitationRevoke(input: OrganizationInvitationRevokeInput!): OrganizationInvitationRevokePayload! @auth
85
+ ```
86
+
87
+ ### `organizationMemberRemove`
88
+
89
+ Remove a member from an organisation. Requires scope: `ORGANIZATION_MEMBERS_DELETE`.
90
+
91
+ ```graphql
92
+ organizationMemberRemove(input: OrganizationMemberRemoveInput!): OrganizationMemberRemovePayload! @auth
93
+ ```
94
+
95
+ ### `organizationMemberScopesUpdate`
96
+
97
+ Set the scopes a member holds in an organisation. Requires
98
+ `ORGANIZATION_MEMBERS_MANAGE_SCOPES` reaching that organisation. The target
99
+ must be a member. A caller may not grant a scope they do not themselves hold,
100
+ and may not edit their own scopes.
101
+
102
+ ```graphql
103
+ organizationMemberScopesUpdate(input: OrganizationMemberScopesUpdateInput!): OrganizationMemberScopesUpdatePayload! @auth
104
+ ```
105
+
106
+ ### `organizationClientManagerScopesUpdate`
107
+
108
+ Set the scopes a client manager holds in one organisation. Requires
109
+ `STAFF_INVITE_CLIENT_MANAGER` at root. The target must be a client manager,
110
+ and a caller may not edit their own scopes. A client manager may add or
111
+ remove only scopes their own client-manager grant in that organisation
112
+ carries; a super admin may set any.
113
+
114
+ ```graphql
115
+ organizationClientManagerScopesUpdate(input: OrganizationClientManagerScopesUpdateInput!): OrganizationClientManagerScopesUpdatePayload! @auth
116
+ ```
117
+
118
+ ## Types
119
+
120
+ ### `OrganizationSortKeys`
121
+
122
+ ```graphql
123
+ """
124
+ Sort keys accepted by `organizations(...)` and `User.organizations(...)`.
125
+
126
+ Pair with `reverse: true` to flip the order (e.g. `NAME` + `reverse: false`
127
+ sorts A→Z; `CREATED_AT` + `reverse: true` sorts newest-first).
128
+ """
129
+ enum OrganizationSortKeys {
130
+ """Sort by organisation `name` (alphabetical)."""
131
+ NAME
132
+ """Sort by `createdAt`."""
133
+ CREATED_AT
134
+ """
135
+ Sort by `updatedAt`. Pair with `reverse: true` for most-recently-changed first.
136
+ """
137
+ UPDATED_AT
138
+ }
139
+ ```
140
+
141
+ ### `InvitationType`
142
+
143
+ ```graphql
144
+ """
145
+ Invitation type. Historically, organisations could issue 24-hour multi-
146
+ use invitations; that capability has been retired. All invitations are
147
+ now single-use with a 30-day expiry.
148
+
149
+ WARNING: This enum is retained for backwards compatibility with the
150
+ deprecated `invitationType` argument on `organizationMemberInvite` and
151
+ the deprecated `OrganizationInvitation.invitationType` field. Do not
152
+ branch on it in new code.
153
+ """
154
+ enum InvitationType {
155
+ """Single-use invitation that expires on acceptance or after 30 days."""
156
+ ONE_TIME @deprecated(reason: "All invitations are now single-use with 30-day expiration")
157
+ """Deprecated. Previously allowed 24-hour multi-use invitations."""
158
+ TWENTY_FOUR_HOUR @deprecated(reason: "All invitations are now single-use with 30-day expiration")
159
+ }
160
+ ```
161
+
162
+ ### `Organization`
163
+
164
+ ```graphql
165
+ """
166
+ An organisation — the top-level tenancy boundary for projects, API keys,
167
+ integrations, and members.
168
+
169
+ Every project, API key, and integration belongs to exactly one
170
+ organisation. The set of scopes the current viewer holds in this
171
+ organisation is available on `viewerScopes`; use it to drive
172
+ client-side UX (which buttons to show, which actions to gate).
173
+ """
174
+ type Organization {
175
+ """Unique organisation identifier."""
176
+ id: ID!
177
+ """Display name of the organisation."""
178
+ name: String!
179
+ """
180
+ URL-friendly slug for the organisation. Used in dashboard URLs and as a stable handle for the organisation.
181
+ """
182
+ slug: String
183
+ """When this organisation was created."""
184
+ createdAt: DateTime!
185
+ """When this organisation was last updated."""
186
+ updatedAt: DateTime!
187
+ """
188
+ Whether every member must hold an `AAL2` session. A member of an organisation
189
+ with this on is held to the MFA policy on every request, whichever
190
+ organisation the request names.
191
+ """
192
+ requireMfa: Boolean!
193
+ """Members of this organisation."""
194
+ members(first: Int, after: String): OrganizationMemberConnection!
195
+ """Pending invitations for this organisation."""
196
+ invitations(first: Int, after: String): OrganizationInvitationConnection!
197
+ """
198
+ Projects within this organisation. Filter by name with `search`
199
+ (case-insensitive substring) and order with `sortKey` (default `NAME`) plus
200
+ `reverse`.
201
+ """
202
+ projects(first: Int, after: String, search: String, sortKey: ProjectSortKeys = NAME, reverse: Boolean = false): ProjectConnection!
203
+ """API keys for this organisation."""
204
+ apiKeys(first: Int, after: String): ApiKeyConnection!
205
+ """
206
+ Scopes available to the current viewer in this organisation. Drives client-side UX gating.
207
+ """
208
+ viewerScopes: [Scope!]!
209
+ """
210
+ Every client manager, with the scopes their client-manager grant carries in
211
+ this organisation. Empty unless the viewer holds `STAFF_READ` at root.
212
+ """
213
+ clientManagerAccess: [OrganizationClientManagerAccess!]!
214
+ }
215
+ ```
216
+
217
+ ### `OrganizationMember`
218
+
219
+ ```graphql
220
+ """
221
+ A user's membership in an organisation. Carries the user's identifying
222
+ fields denormalised from `auth.users`, plus the role and `joinedAt`
223
+ timestamp.
224
+
225
+ Member-level operations (`organizationMemberScopesUpdate`,
226
+ `organizationMemberRemove`) require the corresponding scope on the
227
+ parent organisation.
228
+ """
229
+ type OrganizationMember {
230
+ """Unique member identifier (the membership row id, not the user id)."""
231
+ id: ID!
232
+ """Email address of the member."""
233
+ userEmail: String
234
+ """First name of the member."""
235
+ userFirstName: String
236
+ """Last name of the member."""
237
+ userLastName: String
238
+ """When the member joined the organisation."""
239
+ joinedAt: DateTime!
240
+ """
241
+ Whether this member holds a verified MFA factor. Resolved for the whole page in one batched lookup.
242
+ """
243
+ mfaState: MfaState!
244
+ """
245
+ The scope grants this member holds in the organisation, one entry per
246
+ location. Empty unless the viewer holds `ORGANIZATION_MEMBERS_MANAGE_SCOPES`
247
+ reaching this organisation.
248
+ """
249
+ scopeGrants: [MemberScopeGrant!]!
250
+ }
251
+ ```
252
+
253
+ ### `MemberScopeGrant`
254
+
255
+ ```graphql
256
+ """A set of scopes a member holds at one location within an organisation."""
257
+ type MemberScopeGrant {
258
+ """The project the scopes apply to, or null for the organisation itself."""
259
+ projectId: ID
260
+ """The scopes held at that location."""
261
+ scopes: [Scope!]!
262
+ }
263
+ ```
264
+
265
+ ### `OrganizationClientManagerAccess`
266
+
267
+ ```graphql
268
+ """
269
+ A client manager and the scopes they hold in one organisation, on top of the
270
+ root grant that reaches every organisation.
271
+ """
272
+ type OrganizationClientManagerAccess {
273
+ """The client manager."""
274
+ user: AdminUser!
275
+ """
276
+ The scopes their client-manager grant carries on this organisation. Empty
277
+ when they hold none here.
278
+ """
279
+ scopes: [Scope!]!
280
+ }
281
+ ```
282
+
283
+ ### `OrganizationMemberEdge`
284
+
285
+ ```graphql
286
+ """Edge type for `OrganizationMemberConnection`."""
287
+ type OrganizationMemberEdge {
288
+ """Pagination cursor for this edge."""
289
+ cursor: String!
290
+ """The organisation member."""
291
+ node: OrganizationMember!
292
+ }
293
+ ```
294
+
295
+ ### `OrganizationMemberConnection`
296
+
297
+ ```graphql
298
+ """Relay-style connection of organisation members."""
299
+ type OrganizationMemberConnection {
300
+ """List of member edges."""
301
+ edges: [OrganizationMemberEdge!]!
302
+ """Pagination metadata."""
303
+ pageInfo: PageInfo!
304
+ """Total number of members."""
305
+ totalCount: Int!
306
+ }
307
+ ```
308
+
309
+ ### `OrganizationInvitation`
310
+
311
+ ```graphql
312
+ """
313
+ An invitation to join an organisation. Created via
314
+ `organizationMemberInvite`, accepted via `organizationInvitationAccept`,
315
+ declined via `organizationInvitationDecline`, and revoked by the inviter
316
+ via `organizationInvitationRevoke`.
317
+
318
+ Invitations expire 30 days after creation (server-enforced; see
319
+ `expiresAt`). Once accepted, the row remains for audit but cannot be
320
+ re-accepted.
321
+ """
322
+ type OrganizationInvitation {
323
+ """Unique invitation identifier."""
324
+ id: ID!
325
+ """
326
+ Invitation type — retained for backwards compatibility. All invitations are now single-use.
327
+ """
328
+ invitationType: InvitationType! @deprecated(reason: "All invitations are now single-use. This field will be removed.")
329
+ """When this invitation was created."""
330
+ createdAt: DateTime!
331
+ """When this invitation expires."""
332
+ expiresAt: DateTime!
333
+ """Email address of the invited user."""
334
+ userEmail: String
335
+ }
336
+ ```
337
+
338
+ ### `OrganizationInvitationEdge`
339
+
340
+ ```graphql
341
+ """Edge type for `OrganizationInvitationConnection`."""
342
+ type OrganizationInvitationEdge {
343
+ """Pagination cursor for this edge."""
344
+ cursor: String!
345
+ """The organisation invitation."""
346
+ node: OrganizationInvitation!
347
+ }
348
+ ```
349
+
350
+ ### `OrganizationInvitationConnection`
351
+
352
+ ```graphql
353
+ """Relay-style connection of organisation invitations."""
354
+ type OrganizationInvitationConnection {
355
+ """List of invitation edges."""
356
+ edges: [OrganizationInvitationEdge!]!
357
+ """Pagination metadata."""
358
+ pageInfo: PageInfo!
359
+ """Total number of invitations."""
360
+ totalCount: Int!
361
+ }
362
+ ```
363
+
364
+ ### `ViewerInvitation`
365
+
366
+ ```graphql
367
+ """
368
+ An invitation addressed to the authenticated viewer, exposed via
369
+ `User.invitations`. Carries the organisation name (so the dashboard can
370
+ render a "Join <Org>" CTA without an extra fetch) plus the `token` the
371
+ client passes to `organizationInvitationAccept` /
372
+ `organizationInvitationDecline`.
373
+
374
+ WARNING: `token` is sensitive — it grants the bearer the right to join
375
+ the organisation. Treat it like a one-time secret.
376
+ """
377
+ type ViewerInvitation {
378
+ """Unique invitation identifier."""
379
+ id: ID!
380
+ """Token used to accept or decline the invitation. Treat as sensitive."""
381
+ token: String!
382
+ """Name of the inviting organisation."""
383
+ organizationName: String!
384
+ """When this invitation was created."""
385
+ createdAt: DateTime!
386
+ """When this invitation expires."""
387
+ expiresAt: DateTime!
388
+ }
389
+ ```
390
+
391
+ ### `ViewerInvitationEdge`
392
+
393
+ ```graphql
394
+ """Edge type for `ViewerInvitationConnection`."""
395
+ type ViewerInvitationEdge {
396
+ """Pagination cursor for this edge."""
397
+ cursor: String!
398
+ """The viewer invitation."""
399
+ node: ViewerInvitation!
400
+ }
401
+ ```
402
+
403
+ ### `ViewerInvitationConnection`
404
+
405
+ ```graphql
406
+ """Relay-style connection of the viewer's pending invitations."""
407
+ type ViewerInvitationConnection {
408
+ """List of invitation edges."""
409
+ edges: [ViewerInvitationEdge!]!
410
+ """Pagination metadata."""
411
+ pageInfo: PageInfo!
412
+ """Total number of invitations."""
413
+ totalCount: Int!
414
+ }
415
+ ```
416
+
417
+ ### `OrganizationEdge`
418
+
419
+ ```graphql
420
+ """Edge type for `OrganizationConnection`."""
421
+ type OrganizationEdge {
422
+ """Pagination cursor for this edge."""
423
+ cursor: String!
424
+ """The organisation."""
425
+ node: Organization!
426
+ }
427
+ ```
428
+
429
+ ### `OrganizationConnection`
430
+
431
+ ```graphql
432
+ """Relay-style connection of organisations."""
433
+ type OrganizationConnection {
434
+ """List of organisation edges."""
435
+ edges: [OrganizationEdge!]!
436
+ """Pagination metadata."""
437
+ pageInfo: PageInfo!
438
+ """Total number of organisations."""
439
+ totalCount: Int!
440
+ }
441
+ ```
442
+
443
+ ### `OrganizationInput`
444
+
445
+ ```graphql
446
+ """
447
+ Input for looking up a single organisation. Provide either `id` or `slug` — at least one is required.
448
+ """
449
+ input OrganizationInput {
450
+ """Organisation ID to look up."""
451
+ id: ID
452
+ """Organisation slug to look up."""
453
+ slug: String
454
+ }
455
+ ```
456
+
457
+ ### `OrganizationCreateInput`
458
+
459
+ ```graphql
460
+ """Input for `organizationCreate`."""
461
+ input OrganizationCreateInput {
462
+ """Name of the organisation."""
463
+ name: String!
464
+ """
465
+ URL-friendly slug for the organisation. Must be unique across all organisations.
466
+ """
467
+ slug: String!
468
+ }
469
+ ```
470
+
471
+ ### `OrganizationCreatePayload`
472
+
473
+ ```graphql
474
+ """Payload returned by `organizationCreate`."""
475
+ type OrganizationCreatePayload {
476
+ """The newly created organisation."""
477
+ organization: Organization
478
+ }
479
+ ```
480
+
481
+ ### `OrganizationUpdateInput`
482
+
483
+ ```graphql
484
+ """Input for `organizationUpdate`."""
485
+ input OrganizationUpdateInput {
486
+ """ID of the organisation to update."""
487
+ id: ID!
488
+ """New name for the organisation. Omit to keep the existing value."""
489
+ name: String
490
+ """New slug for the organisation. Must remain unique."""
491
+ slug: String
492
+ """
493
+ Whether every member must hold an `AAL2` session. Setting it to true needs
494
+ the caller's own session at `AAL2` (an `AAL1` or OAuth-client token is
495
+ refused with `MFA_REQUIRED`) and revokes every member's OAuth-client sessions.
496
+ """
497
+ requireMfa: Boolean
498
+ }
499
+ ```
500
+
501
+ ### `OrganizationUpdatePayload`
502
+
503
+ ```graphql
504
+ """Payload returned by `organizationUpdate`."""
505
+ type OrganizationUpdatePayload {
506
+ """The updated organisation."""
507
+ organization: Organization
508
+ }
509
+ ```
510
+
511
+ ### `OrganizationDeleteInput`
512
+
513
+ ```graphql
514
+ """Input for `organizationDelete`."""
515
+ input OrganizationDeleteInput {
516
+ """ID of the organisation to delete."""
517
+ id: ID!
518
+ }
519
+ ```
520
+
521
+ ### `OrganizationDeletePayload`
522
+
523
+ ```graphql
524
+ """Payload returned by `organizationDelete`."""
525
+ type OrganizationDeletePayload {
526
+ """ID of the deleted organisation."""
527
+ deletedOrganizationId: ID
528
+ }
529
+ ```
530
+
531
+ ### `OrganizationMemberInviteInput`
532
+
533
+ ```graphql
534
+ """
535
+ Input for `organizationMemberInvite` — create a pending invitation for the given email.
536
+ """
537
+ input OrganizationMemberInviteInput {
538
+ """ID of the organisation to invite the member to."""
539
+ organizationId: ID!
540
+ """Email address of the user to invite."""
541
+ email: String!
542
+ """
543
+ Scopes the invitation grants on acceptance, one entry per location. Omit to
544
+ grant the preset matching `role`. The inviter may not grant a scope they do
545
+ not themselves hold.
546
+ """
547
+ grants: [MemberScopeGrantInput!]
548
+ """Invitation type. Ignored; retained for backwards compatibility."""
549
+ invitationType: InvitationType @deprecated(reason: "All invitations are now single-use. This field is ignored.")
550
+ """URL to redirect the invited user to after email verification."""
551
+ redirectUrl: String
552
+ }
553
+ ```
554
+
555
+ ### `InvitationDelivery`
556
+
557
+ ```graphql
558
+ """Which email reached the person an invitation was sent to."""
559
+ enum InvitationDelivery {
560
+ """An invitation email, for an address with no account."""
561
+ INVITE_EMAIL
562
+ """
563
+ A sign-in email, for an address that already has an account. The invitation
564
+ waits on the user's Account page.
565
+ """
566
+ SIGN_IN_EMAIL
567
+ """
568
+ No email went out. The invitation still waits on the Account page of a user with the address.
569
+ """
570
+ NOT_SENT
571
+ }
572
+ ```
573
+
574
+ ### `OrganizationMemberInvitePayload`
575
+
576
+ ```graphql
577
+ """Payload returned by `organizationMemberInvite`."""
578
+ type OrganizationMemberInvitePayload {
579
+ """The created invitation."""
580
+ invitation: OrganizationInvitation
581
+ """Which email reached the invitee."""
582
+ delivery: InvitationDelivery!
583
+ }
584
+ ```
585
+
586
+ ### `OrganizationInvitationAcceptInput`
587
+
588
+ ```graphql
589
+ """Input for `organizationInvitationAccept`."""
590
+ input OrganizationInvitationAcceptInput {
591
+ """Token from the invitation email — see `ViewerInvitation.token`."""
592
+ token: String!
593
+ }
594
+ ```
595
+
596
+ ### `AcceptedMembership`
597
+
598
+ ```graphql
599
+ """Membership information returned after accepting an invitation."""
600
+ type AcceptedMembership {
601
+ """ID of the organisation joined."""
602
+ organizationId: ID!
603
+ """Name of the organisation joined."""
604
+ organizationName: String!
605
+ }
606
+ ```
607
+
608
+ ### `OrganizationInvitationAcceptPayload`
609
+
610
+ ```graphql
611
+ """Payload returned by `organizationInvitationAccept`."""
612
+ type OrganizationInvitationAcceptPayload {
613
+ """The membership created by accepting the invitation."""
614
+ membership: AcceptedMembership
615
+ }
616
+ ```
617
+
618
+ ### `OrganizationInvitationDeclineInput`
619
+
620
+ ```graphql
621
+ """Input for `organizationInvitationDecline`."""
622
+ input OrganizationInvitationDeclineInput {
623
+ """Token from the invitation email."""
624
+ token: String!
625
+ }
626
+ ```
627
+
628
+ ### `OrganizationInvitationDeclinePayload`
629
+
630
+ ```graphql
631
+ """Payload returned by `organizationInvitationDecline`."""
632
+ type OrganizationInvitationDeclinePayload {
633
+ """Token of the declined invitation."""
634
+ declinedToken: String
635
+ }
636
+ ```
637
+
638
+ ### `OrganizationInvitationRevokeInput`
639
+
640
+ ```graphql
641
+ """
642
+ Input for `organizationInvitationRevoke` — withdraw a pending invitation.
643
+ """
644
+ input OrganizationInvitationRevokeInput {
645
+ """ID of the invitation to revoke."""
646
+ invitationId: ID!
647
+ """ID of the organisation the invitation belongs to."""
648
+ organizationId: ID!
649
+ }
650
+ ```
651
+
652
+ ### `OrganizationInvitationRevokePayload`
653
+
654
+ ```graphql
655
+ """Payload returned by `organizationInvitationRevoke`."""
656
+ type OrganizationInvitationRevokePayload {
657
+ """ID of the revoked invitation."""
658
+ revokedInvitationId: ID
659
+ }
660
+ ```
661
+
662
+ ### `OrganizationMemberRemoveInput`
663
+
664
+ ```graphql
665
+ """Input for `organizationMemberRemove`."""
666
+ input OrganizationMemberRemoveInput {
667
+ """ID of the organisation to remove the member from."""
668
+ organizationId: ID!
669
+ """ID of the user to remove."""
670
+ userId: ID!
671
+ }
672
+ ```
673
+
674
+ ### `OrganizationMemberRemovePayload`
675
+
676
+ ```graphql
677
+ """Payload returned by `organizationMemberRemove`."""
678
+ type OrganizationMemberRemovePayload {
679
+ """ID of the removed user."""
680
+ removedUserId: ID
681
+ }
682
+ ```
683
+
684
+ ### `MemberScopeGrantInput`
685
+
686
+ ```graphql
687
+ """A set of scopes to grant at one location within an organisation."""
688
+ input MemberScopeGrantInput {
689
+ """The project the scopes apply to, or null for the organisation itself."""
690
+ projectId: ID
691
+ """The scopes to hold at that location."""
692
+ scopes: [Scope!]!
693
+ }
694
+ ```
695
+
696
+ ### `OrganizationMemberScopesUpdateInput`
697
+
698
+ ```graphql
699
+ """Input for `organizationMemberScopesUpdate`."""
700
+ input OrganizationMemberScopesUpdateInput {
701
+ """ID of the organisation."""
702
+ organizationId: ID!
703
+ """ID of the member whose scopes to set."""
704
+ userId: ID!
705
+ """
706
+ The grants to leave in place. Locations absent from this list are cleared;
707
+ grants outside this organisation are untouched.
708
+ """
709
+ grants: [MemberScopeGrantInput!]!
710
+ }
711
+ ```
712
+
713
+ ### `OrganizationMemberScopesUpdatePayload`
714
+
715
+ ```graphql
716
+ """Payload returned by `organizationMemberScopesUpdate`."""
717
+ type OrganizationMemberScopesUpdatePayload {
718
+ """The member whose scopes were set."""
719
+ member: OrganizationMember
720
+ }
721
+ ```
722
+
723
+ ### `OrganizationClientManagerScopesUpdateInput`
724
+
725
+ ```graphql
726
+ """Input for `organizationClientManagerScopesUpdate`."""
727
+ input OrganizationClientManagerScopesUpdateInput {
728
+ """ID of the organisation."""
729
+ organizationId: ID!
730
+ """ID of the client manager whose scopes to set."""
731
+ userId: ID!
732
+ """
733
+ The scopes to hold on this organisation, replacing whatever was held before.
734
+ An empty list clears the grant, leaving the root grant as their whole reach.
735
+ Root-located scopes are rejected: they bind to no organisation.
736
+ """
737
+ scopes: [Scope!]!
738
+ }
739
+ ```
740
+
741
+ ### `OrganizationClientManagerScopesUpdatePayload`
742
+
743
+ ```graphql
744
+ """Payload returned by `organizationClientManagerScopesUpdate`."""
745
+ type OrganizationClientManagerScopesUpdatePayload {
746
+ """The client manager whose scopes were set."""
747
+ access: OrganizationClientManagerAccess
748
+ }
749
+ ```