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,273 @@
1
+ ---
2
+ type: reference
3
+ layout: docs
4
+ generated: true
5
+ ---
6
+
7
+ # Step schema
8
+
9
+ The operations and types that `step.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
+ ### `step`
14
+
15
+ Get a step by ID within a workspace.
16
+
17
+ ```graphql
18
+ step(id: ID!, workspaceId: ID!): Step @auth
19
+ ```
20
+
21
+ ### `steps`
22
+
23
+ Get list of steps within a workspace.
24
+
25
+ ```graphql
26
+ steps(first: Int, after: String, last: Int, before: String, workspaceId: ID!, search: String, sortKey: StepSortKeys = NAME, reverse: Boolean = false): StepConnection! @auth
27
+ ```
28
+
29
+ ## Mutations
30
+
31
+ ### `stepCreate`
32
+
33
+ Create a new step. Requires scope: `ORGANIZATION_PROJECTS_CREATE`.
34
+
35
+ ```graphql
36
+ stepCreate(input: StepCreateInput!): StepCreatePayload! @auth
37
+ ```
38
+
39
+ ### `stepUpdate`
40
+
41
+ Update a step. Requires scope: `ORGANIZATION_PROJECTS_UPDATE`.
42
+
43
+ ```graphql
44
+ stepUpdate(input: StepUpdateInput!): StepUpdatePayload! @auth
45
+ ```
46
+
47
+ ### `stepDelete`
48
+
49
+ Delete a step. Requires scope: `ORGANIZATION_PROJECTS_DELETE`.
50
+
51
+ ```graphql
52
+ stepDelete(input: StepDeleteInput!): StepDeletePayload! @auth
53
+ ```
54
+
55
+ ## Types
56
+
57
+ ### `Step`
58
+
59
+ ```graphql
60
+ """
61
+ A step within a workspace. Rendered by the SDK as one screen of UI when
62
+ the flow reaches a `StepNode` referencing this step.
63
+
64
+ Carries a list of `Field`s (form inputs) and an optional `layoutName` or
65
+ `layoutContentEntry` (the layout the SDK renders the fields into). The
66
+ fields are workspace-level resources shared across steps; `Step.fields`
67
+ returns this step's selection.
68
+ """
69
+ type Step {
70
+ """Unique step identifier."""
71
+ id: ID!
72
+ """Display name of the step."""
73
+ name: String!
74
+ """Stable, human-readable key for SDK consumers."""
75
+ key: String!
76
+ """Optional description of the step."""
77
+ description: String
78
+ """
79
+ Name of the layout the SDK should render this step with (free-form string, plug-in defined).
80
+ """
81
+ layoutName: String
82
+ """
83
+ Optional 1:1 reference to the CMS Content Entry that backs this step's layout. Mutually exclusive with `layoutName`.
84
+ """
85
+ layoutContentEntry: ContentEntry
86
+ """When this step was created."""
87
+ createdAt: DateTime!
88
+ """When this step was last updated."""
89
+ updatedAt: DateTime!
90
+ """The workspace this step belongs to."""
91
+ workspace: Workspace!
92
+ """
93
+ The workspace ID this step belongs to (denormalised for query convenience).
94
+ """
95
+ workspaceId: ID
96
+ """Fields within this step."""
97
+ fields(first: Int, after: String, last: Int, before: String): FieldConnection!
98
+ }
99
+ ```
100
+
101
+ ### `StepEdge`
102
+
103
+ ```graphql
104
+ """Edge type for `StepConnection`."""
105
+ type StepEdge {
106
+ """Pagination cursor for this edge."""
107
+ cursor: String!
108
+ """The step."""
109
+ node: Step!
110
+ }
111
+ ```
112
+
113
+ ### `StepConnection`
114
+
115
+ ```graphql
116
+ """
117
+ Relay-style connection of steps, with both an `edges` list and a flat `nodes` accessor.
118
+ """
119
+ type StepConnection {
120
+ """List of step edges."""
121
+ edges: [StepEdge!]!
122
+ """
123
+ Flat list of steps, equivalent to `edges[].node`. Convenience accessor.
124
+ """
125
+ nodes: [Step!]!
126
+ """Pagination metadata."""
127
+ pageInfo: PageInfo!
128
+ """Total number of steps."""
129
+ totalCount: Int!
130
+ }
131
+ ```
132
+
133
+ ### `StepCreateInput`
134
+
135
+ ```graphql
136
+ """Input for `stepCreate`."""
137
+ input StepCreateInput {
138
+ """Workspace ID to create the step in."""
139
+ workspaceId: ID!
140
+ """Display name for the step."""
141
+ name: String!
142
+ """Unique key identifier for the step."""
143
+ key: String!
144
+ """Optional description."""
145
+ description: String
146
+ """Name of the layout the SDK should render this step with."""
147
+ layoutName: String
148
+ """
149
+ IDs of workspace-level fields to associate with this step. Order is preserved.
150
+ """
151
+ fieldIds: [ID!]
152
+ }
153
+ ```
154
+
155
+ ### `StepCreatePayload`
156
+
157
+ ```graphql
158
+ """Payload returned by `stepCreate`."""
159
+ type StepCreatePayload {
160
+ """The created step."""
161
+ step: Step
162
+ }
163
+ ```
164
+
165
+ ### `StepUpdateInput`
166
+
167
+ ```graphql
168
+ """Input for `stepUpdate`. Omit a field to leave it unchanged."""
169
+ input StepUpdateInput {
170
+ """Step ID."""
171
+ id: ID!
172
+ """Workspace ID the step belongs to."""
173
+ workspaceId: ID!
174
+ """New display name."""
175
+ name: String
176
+ """New description."""
177
+ description: String
178
+ """New layout name."""
179
+ layoutName: String
180
+ """
181
+ ID of the CMS Content Entry to use as this step's layout. Pass null to detach the entry; mutually exclusive with `layoutName`.
182
+ """
183
+ layoutContentEntryId: ID
184
+ """
185
+ IDs of workspace-level fields to associate with this step. Replaces the existing field list when set.
186
+ """
187
+ fieldIds: [ID!]
188
+ }
189
+ ```
190
+
191
+ ### `StepUpdatePayload`
192
+
193
+ ```graphql
194
+ """Payload returned by `stepUpdate`."""
195
+ type StepUpdatePayload {
196
+ """The updated step."""
197
+ step: Step
198
+ }
199
+ ```
200
+
201
+ ### `StepDeleteInput`
202
+
203
+ ```graphql
204
+ """Input for `stepDelete`."""
205
+ input StepDeleteInput {
206
+ """Step ID."""
207
+ id: ID!
208
+ """Workspace ID the step belongs to."""
209
+ workspaceId: ID!
210
+ }
211
+ ```
212
+
213
+ ### `StepDeletePayload`
214
+
215
+ ```graphql
216
+ """
217
+ Payload returned by `stepDelete`. Returns `userErrors` when the step is in use.
218
+ """
219
+ type StepDeletePayload {
220
+ """ID of the deleted step (null when `userErrors` is non-empty)."""
221
+ deletedStepId: ID
222
+ """Validation errors. Empty array indicates success."""
223
+ userErrors: [StepDeleteUserError!]!
224
+ }
225
+ ```
226
+
227
+ ### `StepDeleteUserErrorCode`
228
+
229
+ ```graphql
230
+ """Machine-readable error codes for `stepDelete`."""
231
+ enum StepDeleteUserErrorCode {
232
+ """
233
+ The step is referenced by one or more experiences and cannot be deleted.
234
+ """
235
+ IN_USE
236
+ }
237
+ ```
238
+
239
+ ### `StepDeleteUserError`
240
+
241
+ ```graphql
242
+ """
243
+ A user error from `stepDelete`. Carries the experiences that block the delete when `code` is `IN_USE`.
244
+ """
245
+ type StepDeleteUserError {
246
+ """Path to the input field that caused the error."""
247
+ field: [String!]
248
+ """Human-readable error message."""
249
+ message: String!
250
+ """Machine-readable error code."""
251
+ code: StepDeleteUserErrorCode!
252
+ """
253
+ Experiences that reference this step (present when `code` is `IN_USE`).
254
+ """
255
+ referencingExperiences: [ReferencingExperience!]
256
+ }
257
+ ```
258
+
259
+ ### `StepSortKeys`
260
+
261
+ ```graphql
262
+ """
263
+ Sort keys for `steps(...)`. Pair with `reverse: true` to flip the order (`NAME` + `reverse: false` sorts A→Z; `CREATED_AT` + `reverse: true` is newest-first).
264
+ """
265
+ enum StepSortKeys {
266
+ """Sort by `name` (alphabetical)."""
267
+ NAME
268
+ """Sort by `createdAt`."""
269
+ CREATED_AT
270
+ """Sort by `updatedAt`."""
271
+ UPDATED_AT
272
+ }
273
+ ```
@@ -0,0 +1,185 @@
1
+ ---
2
+ type: reference
3
+ layout: docs
4
+ generated: true
5
+ ---
6
+
7
+ # Tenant branding schema
8
+
9
+ The operations and types that `tenant-branding.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
+ ### `tenant`
14
+
15
+ Resolve a tenant (and its branding) by host or explicit slug. Unauthenticated; cached for 5 minutes.
16
+
17
+ ```graphql
18
+ tenant(input: TenantInput!): Tenant! @cache(policy: "public, max-age=300, stale-while-revalidate=3600")
19
+ ```
20
+
21
+ ## Types
22
+
23
+ ### `Tenant`
24
+
25
+ ```graphql
26
+ """A tenant dashboard deployment (e.g. `picked`, `convincely`)."""
27
+ type Tenant {
28
+ """
29
+ Machine-readable identifier for the tenant (e.g. `picked`, `convincely`).
30
+ """
31
+ slug: String!
32
+ """Hostnames this tenant serves the dashboard on."""
33
+ hosts: [String!]!
34
+ """Visual identity for this tenant — logos, colours, radii."""
35
+ branding: Branding!
36
+ }
37
+ ```
38
+
39
+ ### `Branding`
40
+
41
+ ```graphql
42
+ """
43
+ Visual identity for a tenant — logos, colour palette, and shape tokens.
44
+ """
45
+ type Branding {
46
+ """Human-readable product name shown in chrome and document titles."""
47
+ productName: String!
48
+ """Logos used throughout the dashboard."""
49
+ logos: BrandingLogos!
50
+ """Brand colour tokens."""
51
+ colors: BrandingColors!
52
+ """Border-radius tokens."""
53
+ radii: BrandingRadii!
54
+ }
55
+ ```
56
+
57
+ ### `BrandingLogos`
58
+
59
+ ```graphql
60
+ """
61
+ Logo URLs for a tenant. Paths are absolute relative to the dashboard origin.
62
+ """
63
+ type BrandingLogos {
64
+ """Small logo shown in the dashboard header."""
65
+ header: String!
66
+ """Larger logo shown on authentication pages (sign-in, OAuth)."""
67
+ auth: String!
68
+ """Optional favicon URL."""
69
+ favicon: String
70
+ }
71
+ ```
72
+
73
+ ### `BrandingColors`
74
+
75
+ ```graphql
76
+ """
77
+ Brand colour tokens for a tenant. Values are CSS colour expressions (`#rrggbb`, `rgb(...)`, etc.).
78
+ """
79
+ type BrandingColors {
80
+ """Primary brand colour."""
81
+ primary: String!
82
+ """Focus / outline ring colour used across the site."""
83
+ focusRing: String!
84
+ """Colour tokens for unauthenticated / auth pages."""
85
+ auth: BrandingAuthColors!
86
+ """Colour tokens for authenticated / app pages."""
87
+ app: BrandingAppColors!
88
+ }
89
+ ```
90
+
91
+ ### `BrandingAuthColors`
92
+
93
+ ```graphql
94
+ """
95
+ Colour tokens used on authentication pages (sign-in, OAuth callback, etc.).
96
+ """
97
+ type BrandingAuthColors {
98
+ """Full auth page background."""
99
+ shellBg: String!
100
+ """`AuthModal` / sign-in card background."""
101
+ cardBg: String!
102
+ """Primary text colour on auth pages."""
103
+ text: String!
104
+ """Primary button background on auth pages."""
105
+ buttonBg: String!
106
+ """Primary button text colour on auth pages."""
107
+ buttonText: String!
108
+ }
109
+ ```
110
+
111
+ ### `BrandingAppColors`
112
+
113
+ ```graphql
114
+ """Colour tokens used on authenticated application pages."""
115
+ type BrandingAppColors {
116
+ """Authenticated app shell (header / sidebar chrome) background."""
117
+ shellBg: String!
118
+ """
119
+ Foreground colour for chrome (text + icons) sitting on the shell background.
120
+ """
121
+ shellText: String!
122
+ """Primary content area background (what sits inside the shell)."""
123
+ contentBg: String!
124
+ """
125
+ Subdued content background (used for card subdued variants and similar muted surfaces inside the content area).
126
+ """
127
+ contentBgSubdued: String!
128
+ """
129
+ Page-level background sitting behind page content (the main scroll viewport).
130
+ """
131
+ pageBg: String!
132
+ """Subtle surface background for card headers and similar chrome."""
133
+ surfaceBg: String!
134
+ """Sidebar (left nav rail) background."""
135
+ sidebarBg: String!
136
+ """
137
+ Neutral surface background used for secondary buttons and similar muted chrome.
138
+ """
139
+ neutralBg: String!
140
+ """Primary text colour in the content area."""
141
+ text: String!
142
+ """Primary button background in the app."""
143
+ buttonBg: String!
144
+ """Primary button text colour in the app."""
145
+ buttonText: String!
146
+ }
147
+ ```
148
+
149
+ ### `BrandingRadii`
150
+
151
+ ```graphql
152
+ """
153
+ Border-radius tokens for a tenant. Values are CSS length expressions (`8px`, `0.5rem`, etc.).
154
+ """
155
+ type BrandingRadii {
156
+ """Border radius for buttons."""
157
+ button: String!
158
+ """Border radius for cards."""
159
+ card: String!
160
+ }
161
+ ```
162
+
163
+ ### `TenantInput`
164
+
165
+ ```graphql
166
+ """
167
+ Input for the `tenant` query. Either `host`, `slug`, both, or neither
168
+ may be provided.
169
+
170
+ When both are absent the default tenant is returned. When `slug` is set
171
+ it wins over `host`. When only `host` is set, the server resolves the
172
+ slug from the host registry; unknown hosts fall back to the default
173
+ tenant.
174
+ """
175
+ input TenantInput {
176
+ """
177
+ Dashboard hostname (e.g. `dashboard.convincely.com`). Used when `slug` is absent or unknown.
178
+ """
179
+ host: String
180
+ """
181
+ Explicit tenant slug override. Wins over `host` when it matches a registered tenant.
182
+ """
183
+ slug: String
184
+ }
185
+ ```
@@ -0,0 +1,246 @@
1
+ ---
2
+ type: reference
3
+ layout: docs
4
+ generated: true
5
+ ---
6
+
7
+ # Workbench schema
8
+
9
+ The operations and types that `workbench.graphql` adds to the Management API. See [Management API schema](/reference/management-api/schema) for every domain, the endpoint and authentication.
10
+
11
+ ## Mutations
12
+
13
+ ### `workbenchAssetImport`
14
+
15
+ Imports an Asset owned elsewhere into a Workbench, creating an `IMPORTED` membership. Removing the import (`workbenchAssetRemove`) drops only the join, never the Asset.
16
+
17
+ ```graphql
18
+ workbenchAssetImport(input: WorkbenchAssetImportInput!): WorkbenchAssetImportPayload! @auth
19
+ ```
20
+
21
+ ### `workbenchAssetAdoptOwned`
22
+
23
+ Adopts an existing project-library Asset as `OWNED` by a Workbench, transferring the Asset's ownership. Used when a Create-Page upload is bound to its Workbench after the Workbench is created.
24
+
25
+ ```graphql
26
+ workbenchAssetAdoptOwned(input: WorkbenchAssetAdoptOwnedInput!): WorkbenchAssetAdoptOwnedPayload! @auth
27
+ ```
28
+
29
+ ### `workbenchAssetRemove`
30
+
31
+ Removes an Asset's membership from a Workbench. If the membership was `OWNED`, the Asset is also soft-deleted; if `IMPORTED`, only the join is dropped.
32
+
33
+ ```graphql
34
+ workbenchAssetRemove(input: WorkbenchAssetRemoveInput!): WorkbenchAssetRemovePayload! @auth
35
+ ```
36
+
37
+ ## Types
38
+
39
+ ### `WorkbenchAssetRelationship`
40
+
41
+ ```graphql
42
+ """How an Asset relates to the Workbench it is joined to."""
43
+ enum WorkbenchAssetRelationship {
44
+ """
45
+ Authored or uploaded directly into this Workbench. Soft-deleted when removed.
46
+ """
47
+ OWNED
48
+ """
49
+ A reference to an Asset owned elsewhere (for example a Design System's DESIGN.md). Removing it drops only the join.
50
+ """
51
+ IMPORTED
52
+ }
53
+ ```
54
+
55
+ ### `WorkbenchOwner`
56
+
57
+ ```graphql
58
+ """Identifies the logical entity a Workbench belongs to."""
59
+ type WorkbenchOwner {
60
+ """The owner kind: `"experience"` or `"design_system"`."""
61
+ type: String!
62
+ """
63
+ The owner's stable cross-workspace reference: an Experience's `key`, or a Design System's `id`.
64
+ """
65
+ ref: String!
66
+ }
67
+ ```
68
+
69
+ ### `WorkbenchAsset`
70
+
71
+ ```graphql
72
+ """One Asset's membership in a Workbench."""
73
+ type WorkbenchAsset {
74
+ """
75
+ Whether this Asset is owned by the Workbench or imported from elsewhere.
76
+ """
77
+ relationship: WorkbenchAssetRelationship!
78
+ """
79
+ The logical path of this Asset within the Workbench, if one was assigned at upload time.
80
+ """
81
+ path: String
82
+ """The Asset."""
83
+ asset: Asset!
84
+ """
85
+ The Design System this Asset was imported from, when it is a Design System's file; null otherwise.
86
+ """
87
+ sourceDesignSystem: DesignSystem
88
+ }
89
+ ```
90
+
91
+ ### `WorkbenchAssetEdge`
92
+
93
+ ```graphql
94
+ """Edge type for `WorkbenchAssetConnection`."""
95
+ type WorkbenchAssetEdge {
96
+ """Pagination cursor for this edge."""
97
+ cursor: String!
98
+ """The Workbench-Asset membership."""
99
+ node: WorkbenchAsset!
100
+ }
101
+ ```
102
+
103
+ ### `WorkbenchAssetConnection`
104
+
105
+ ```graphql
106
+ """
107
+ Relay-style connection of Workbench-Asset memberships, with both an `edges` list and a flat `nodes` accessor.
108
+ """
109
+ type WorkbenchAssetConnection {
110
+ """List of Workbench-Asset membership edges."""
111
+ edges: [WorkbenchAssetEdge!]!
112
+ """
113
+ Flat list of Workbench-Asset memberships, equivalent to `edges[].node`.
114
+ """
115
+ nodes: [WorkbenchAsset!]!
116
+ """Pagination metadata."""
117
+ pageInfo: PageInfo!
118
+ """
119
+ Total number of memberships in this Workbench, optionally filtered by `relationship`.
120
+ """
121
+ totalCount: Int!
122
+ }
123
+ ```
124
+
125
+ ### `Workbench`
126
+
127
+ ```graphql
128
+ """
129
+ A cross-workspace working directory for a logical entity (an Experience or a
130
+ Design System), associated by `(project, ownerType, ownerRef)`. A Workbench is
131
+ NOT scoped to a workspace version, so one Workbench serves every workspace of
132
+ a project that shares the owner reference — including duplicates, since
133
+ workspace duplication preserves an Experience's `key`.
134
+ """
135
+ type Workbench {
136
+ """Unique Workbench identifier."""
137
+ id: ID!
138
+ """The logical entity this Workbench belongs to."""
139
+ owner: WorkbenchOwner!
140
+ """
141
+ The Assets joined to this Workbench, each carrying its `relationship` and logical `path`.
142
+ """
143
+ assets(
144
+ """
145
+ Filter to only `OWNED` or only `IMPORTED` memberships. Omit to return both.
146
+ """
147
+ relationship: WorkbenchAssetRelationship
148
+ first: Int
149
+ after: String
150
+ ): WorkbenchAssetConnection!
151
+ }
152
+ ```
153
+
154
+ ### `Experience` (extension)
155
+
156
+ ```graphql
157
+ extend type Experience {
158
+ """
159
+ This Experience's Workbench, resolved (and created on first access) by its stable `key`.
160
+ """
161
+ workbench: Workbench!
162
+ }
163
+ ```
164
+
165
+ ### `DesignSystem` (extension)
166
+
167
+ ```graphql
168
+ extend type DesignSystem {
169
+ """
170
+ This Design System's Workbench, resolved (and created on first access) by its `id`.
171
+ """
172
+ workbench: Workbench!
173
+ }
174
+ ```
175
+
176
+ ### `WorkbenchAssetImportInput`
177
+
178
+ ```graphql
179
+ """Input for `workbenchAssetImport`."""
180
+ input WorkbenchAssetImportInput {
181
+ """The Workbench to import into."""
182
+ workbenchId: ID!
183
+ """The Asset to import, owned elsewhere."""
184
+ assetId: ID!
185
+ }
186
+ ```
187
+
188
+ ### `WorkbenchAssetImportPayload`
189
+
190
+ ```graphql
191
+ """Payload returned by `workbenchAssetImport`."""
192
+ type WorkbenchAssetImportPayload {
193
+ """The newly created `IMPORTED` membership."""
194
+ workbenchAsset: WorkbenchAsset!
195
+ }
196
+ ```
197
+
198
+ ### `WorkbenchAssetAdoptOwnedInput`
199
+
200
+ ```graphql
201
+ """Input for `workbenchAssetAdoptOwned`."""
202
+ input WorkbenchAssetAdoptOwnedInput {
203
+ """The Workbench that should take ownership of the Asset."""
204
+ workbenchId: ID!
205
+ """
206
+ The project-library Asset to adopt as `OWNED`, transferring its ownership to the Workbench.
207
+ """
208
+ assetId: ID!
209
+ """Optional logical path to assign the membership within the Workbench."""
210
+ path: String
211
+ }
212
+ ```
213
+
214
+ ### `WorkbenchAssetAdoptOwnedPayload`
215
+
216
+ ```graphql
217
+ """Payload returned by `workbenchAssetAdoptOwned`."""
218
+ type WorkbenchAssetAdoptOwnedPayload {
219
+ """The `OWNED` membership after adoption."""
220
+ workbenchAsset: WorkbenchAsset!
221
+ }
222
+ ```
223
+
224
+ ### `WorkbenchAssetRemoveInput`
225
+
226
+ ```graphql
227
+ """Input for `workbenchAssetRemove`."""
228
+ input WorkbenchAssetRemoveInput {
229
+ """The Workbench to remove the Asset from."""
230
+ workbenchId: ID!
231
+ """The Asset to remove."""
232
+ assetId: ID!
233
+ }
234
+ ```
235
+
236
+ ### `WorkbenchAssetRemovePayload`
237
+
238
+ ```graphql
239
+ """Payload returned by `workbenchAssetRemove`."""
240
+ type WorkbenchAssetRemovePayload {
241
+ """
242
+ The Asset id that was removed from the Workbench. Only the join is guaranteed removed; the Asset itself is also soft-deleted when the membership was `OWNED`.
243
+ """
244
+ removedAssetId: ID!
245
+ }
246
+ ```