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,350 @@
1
+ ---
2
+ type: reference
3
+ layout: docs
4
+ generated: true
5
+ ---
6
+
7
+ # Feature schema
8
+
9
+ The operations and types that `feature.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
+ ### `feature`
14
+
15
+ Fetch a single feature by ID and workspace ID. Requires authentication.
16
+
17
+ ```graphql
18
+ feature(input: FeatureInput!): Feature @auth
19
+ ```
20
+
21
+ ### `features`
22
+
23
+ List features in a workspace. Filter by name with `search` (case-insensitive
24
+ substring) and order with `sortKey` (default `NAME`) plus `reverse`.
25
+
26
+ ```graphql
27
+ features(workspaceId: ID!, first: Int, after: String, last: Int, before: String, search: String, sortKey: FeatureSortKeys = NAME, reverse: Boolean = false): FeatureConnection! @auth
28
+ ```
29
+
30
+ ## Mutations
31
+
32
+ ### `featureCreate`
33
+
34
+ Create a new feature. Requires scope: `ORGANIZATION_PROJECTS_UPDATE`.
35
+
36
+ ```graphql
37
+ featureCreate(input: FeatureCreateInput!): FeatureCreatePayload! @auth
38
+ ```
39
+
40
+ ### `featureUpdate`
41
+
42
+ Update a feature. Requires scope: `ORGANIZATION_PROJECTS_UPDATE`.
43
+
44
+ ```graphql
45
+ featureUpdate(input: FeatureUpdateInput!): FeatureUpdatePayload! @auth
46
+ ```
47
+
48
+ ### `featureDelete`
49
+
50
+ Delete a feature. Requires scope: `ORGANIZATION_PROJECTS_UPDATE`.
51
+
52
+ ```graphql
53
+ featureDelete(input: FeatureDeleteInput!): FeatureDeletePayload! @auth
54
+ ```
55
+
56
+ ## Types
57
+
58
+ ### `FeatureValueType`
59
+
60
+ ```graphql
61
+ """What a feature's variants serve. Fixed when the feature is created."""
62
+ enum FeatureValueType {
63
+ """
64
+ Two arms. The visitor's site receives `true` or `false`, split by `weight`.
65
+ """
66
+ BOOLEAN
67
+ """
68
+ Author-defined arms. The visitor's site receives a string, or `false` in control.
69
+ """
70
+ TEXT
71
+ }
72
+ ```
73
+
74
+ ### `FeatureVariant`
75
+
76
+ ```graphql
77
+ """
78
+ One arm of a feature.
79
+
80
+ `key` is the stable identity: it is what the visitor's browser stores, what
81
+ reporting records, and what a preview override names. It is also the order
82
+ allocation runs in, so `name`, `value` and `weight` are all freely editable
83
+ without moving a visitor between arms.
84
+
85
+ Every feature has a control arm keyed `false` serving `false`. A `BOOLEAN`
86
+ feature has exactly one more, keyed `true`, derived from `weight` rather than
87
+ stored.
88
+ """
89
+ type FeatureVariant {
90
+ """
91
+ Stable identity, unique within the feature. `true` and `false` are reserved for the structural arms.
92
+ """
93
+ key: String!
94
+ """
95
+ Display label. Shown in the dashboard and as the arm's label in reports.
96
+ """
97
+ name: String!
98
+ """
99
+ What the visitor's site receives — a string, or `false` for the control arm.
100
+ """
101
+ value: JSON!
102
+ """
103
+ Share of traffic relative to the other variants, as a whole number. Meaning is
104
+ relative, not absolute: `1, 1, 1` and `10, 10, 10` are the same even split.
105
+ Stored reduced by the greatest common divisor, so equivalent splits are equal.
106
+ """
107
+ weight: Int!
108
+ }
109
+ ```
110
+
111
+ ### `Feature`
112
+
113
+ ```graphql
114
+ """
115
+ An A/B test feature within a workspace. SDKs consume features by `key`
116
+ and check `enabled` / `weight` to decide whether to expose the feature
117
+ to a given visitor.
118
+
119
+ `weight` is a percentage (0-100); 100 means "always serve this feature".
120
+ `version` increments whenever the feature is updated and is exposed to
121
+ SDKs as a cache-busting hint.
122
+ """
123
+ type Feature {
124
+ """Unique feature identifier."""
125
+ id: ID!
126
+ """
127
+ Stable, human-readable key for SDK consumers (e.g. `homepage-banner-v2`).
128
+ """
129
+ key: String!
130
+ """Display name of the feature."""
131
+ name: String!
132
+ """Optional description of the feature."""
133
+ description: String
134
+ """
135
+ Whether the feature is enabled (`false` disables it for all visitors regardless of `weight`).
136
+ """
137
+ enabled: Boolean!
138
+ """
139
+ Share of visitors outside the control arm (0-100). For a `BOOLEAN` feature this
140
+ is the allocation input. For a `TEXT` feature it is derived from the variant
141
+ weights and carried for clients that predate variants; such a client puts the
142
+ right share of visitors in control, and current clients allocate from `variants`.
143
+ """
144
+ weight: Int!
145
+ """What this feature's variants serve. Fixed at creation."""
146
+ valueType: FeatureValueType!
147
+ """
148
+ The feature's arms. Always at least two, and the last is always the control arm
149
+ keyed `false`. A `BOOLEAN` feature's pair is derived from `weight` rather than
150
+ stored, so every consumer sees one shape regardless of value type.
151
+ """
152
+ variants: [FeatureVariant!]!
153
+ """
154
+ Version number, incremented on each update. Cache-busting hint for SDKs.
155
+ """
156
+ version: Int!
157
+ """The workspace this feature belongs to."""
158
+ workspace: Workspace!
159
+ """When this feature was created."""
160
+ createdAt: DateTime!
161
+ """When this feature was last updated."""
162
+ updatedAt: DateTime!
163
+ }
164
+ ```
165
+
166
+ ### `FeatureEdge`
167
+
168
+ ```graphql
169
+ """Edge type for `FeatureConnection`."""
170
+ type FeatureEdge {
171
+ """Pagination cursor for this edge."""
172
+ cursor: String!
173
+ """The feature."""
174
+ node: Feature!
175
+ }
176
+ ```
177
+
178
+ ### `FeatureConnection`
179
+
180
+ ```graphql
181
+ """Relay-style connection of features."""
182
+ type FeatureConnection {
183
+ """List of feature edges."""
184
+ edges: [FeatureEdge!]!
185
+ """Pagination metadata."""
186
+ pageInfo: PageInfo!
187
+ """Total number of features."""
188
+ totalCount: Int!
189
+ }
190
+ ```
191
+
192
+ ### `FeatureInput`
193
+
194
+ ```graphql
195
+ """Input for looking up a single feature."""
196
+ input FeatureInput {
197
+ """Feature ID."""
198
+ id: ID!
199
+ """Workspace ID the feature belongs to."""
200
+ workspaceId: ID!
201
+ }
202
+ ```
203
+
204
+ ### `FeatureVariantInput`
205
+
206
+ ```graphql
207
+ """
208
+ One arm, as submitted. Omit `key` on a new variant and it is derived from `name`.
209
+ The control arm is submitted like any other, keyed `false` with value `false`, and
210
+ must come last.
211
+ """
212
+ input FeatureVariantInput {
213
+ """Stable identity. Derived from `name` when omitted."""
214
+ key: String
215
+ """Display label."""
216
+ name: String!
217
+ """
218
+ What the visitor's site receives — a string, or `false` for the control arm.
219
+ """
220
+ value: JSON!
221
+ """
222
+ Share of traffic relative to the other variants. Reduced by the greatest common divisor on save.
223
+ """
224
+ weight: Int!
225
+ }
226
+ ```
227
+
228
+ ### `FeatureCreateInput`
229
+
230
+ ```graphql
231
+ """Input for `featureCreate`."""
232
+ input FeatureCreateInput {
233
+ """Workspace ID to create the feature in."""
234
+ workspaceId: ID!
235
+ """
236
+ Organisation ID. Carried for authorisation; must match the workspace's organisation.
237
+ """
238
+ organizationId: ID!
239
+ """Display name for the feature."""
240
+ name: String!
241
+ """Optional human-readable key (auto-generated from `name` if omitted)."""
242
+ key: String
243
+ """Optional description."""
244
+ description: String
245
+ """Whether the feature is enabled. Defaults to `false`."""
246
+ enabled: Boolean
247
+ """
248
+ Traffic weight percentage (0-100). Defaults to `0`. Rejected for a `TEXT` feature, which derives its weight from `variants`.
249
+ """
250
+ weight: Int
251
+ """
252
+ What this feature's variants serve. Defaults to `BOOLEAN`. Cannot be changed after creation.
253
+ """
254
+ valueType: FeatureValueType
255
+ """
256
+ The full set of arms, control last. Required for a `TEXT` feature and rejected for a `BOOLEAN` one.
257
+ """
258
+ variants: [FeatureVariantInput!]
259
+ }
260
+ ```
261
+
262
+ ### `FeatureCreatePayload`
263
+
264
+ ```graphql
265
+ """Payload returned by `featureCreate`."""
266
+ type FeatureCreatePayload {
267
+ """The created feature."""
268
+ feature: Feature
269
+ }
270
+ ```
271
+
272
+ ### `FeatureUpdateInput`
273
+
274
+ ```graphql
275
+ """Input for `featureUpdate`. Omit a field to leave it unchanged."""
276
+ input FeatureUpdateInput {
277
+ """Feature ID."""
278
+ id: ID!
279
+ """Workspace ID the feature belongs to."""
280
+ workspaceId: ID!
281
+ """New display name."""
282
+ name: String
283
+ """New description."""
284
+ description: String
285
+ """Whether the feature is enabled."""
286
+ enabled: Boolean
287
+ """
288
+ New traffic weight percentage (0-100). Rejected for a `TEXT` feature, which derives its weight from `variants`.
289
+ """
290
+ weight: Int
291
+ """
292
+ Replaces the whole set of arms. Partial updates of a single arm are not
293
+ supported, because reducing weights by their greatest common divisor is a
294
+ property of the whole array. Rejected for a `BOOLEAN` feature.
295
+ """
296
+ variants: [FeatureVariantInput!]
297
+ """
298
+ Whether to increment the version number. Defaults to `true` so SDKs see the change.
299
+ """
300
+ incrementVersion: Boolean
301
+ }
302
+ ```
303
+
304
+ ### `FeatureUpdatePayload`
305
+
306
+ ```graphql
307
+ """Payload returned by `featureUpdate`."""
308
+ type FeatureUpdatePayload {
309
+ """The updated feature."""
310
+ feature: Feature
311
+ }
312
+ ```
313
+
314
+ ### `FeatureDeleteInput`
315
+
316
+ ```graphql
317
+ """Input for `featureDelete`."""
318
+ input FeatureDeleteInput {
319
+ """Feature ID."""
320
+ id: ID!
321
+ """Workspace ID the feature belongs to."""
322
+ workspaceId: ID!
323
+ }
324
+ ```
325
+
326
+ ### `FeatureDeletePayload`
327
+
328
+ ```graphql
329
+ """Payload returned by `featureDelete`."""
330
+ type FeatureDeletePayload {
331
+ """ID of the deleted feature."""
332
+ deletedFeatureId: ID
333
+ }
334
+ ```
335
+
336
+ ### `FeatureSortKeys`
337
+
338
+ ```graphql
339
+ """
340
+ Sort keys for `features(...)`. Pair with `reverse: true` to flip the order (`NAME` + `reverse: false` sorts A→Z; `CREATED_AT` + `reverse: true` is newest-first).
341
+ """
342
+ enum FeatureSortKeys {
343
+ """Sort by `name` (alphabetical)."""
344
+ NAME
345
+ """Sort by `createdAt`."""
346
+ CREATED_AT
347
+ """Sort by `updatedAt`."""
348
+ UPDATED_AT
349
+ }
350
+ ```
@@ -0,0 +1,103 @@
1
+ ---
2
+ type: reference
3
+ layout: docs
4
+ generated: true
5
+ ---
6
+
7
+ # Feedback schema
8
+
9
+ The operations and types that `feedback.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
+ ### `feedbackCreate`
14
+
15
+ Submit user feedback from the dashboard. Requires authentication (USER token only).
16
+
17
+ ```graphql
18
+ feedbackCreate(input: FeedbackCreateInput!): FeedbackCreatePayload! @auth(only: USER)
19
+ ```
20
+
21
+ ## Types
22
+
23
+ ### `FeedbackTopic`
24
+
25
+ ```graphql
26
+ """Topic categories for user feedback."""
27
+ enum FeedbackTopic {
28
+ """Bug report — something doesn't work as expected."""
29
+ BUG
30
+ """Feature request — a missing capability the user wants."""
31
+ FEATURE_REQUEST
32
+ """Improvement — feedback on an existing capability."""
33
+ IMPROVEMENT
34
+ """Question — the user needs help."""
35
+ QUESTION
36
+ """Navigation — feedback on the dashboard's sidebar navigation."""
37
+ NAVIGATION
38
+ """Other — uncategorised feedback."""
39
+ OTHER
40
+ }
41
+ ```
42
+
43
+ ### `FeedbackSentiment`
44
+
45
+ ```graphql
46
+ """
47
+ Sentiment rating for user feedback. Optional; clients can omit when they don't prompt for sentiment.
48
+ """
49
+ enum FeedbackSentiment {
50
+ """Very negative — user is frustrated or angry."""
51
+ VERY_NEGATIVE
52
+ """Negative — user is dissatisfied."""
53
+ NEGATIVE
54
+ """Neutral — user is indifferent."""
55
+ NEUTRAL
56
+ """Positive — user is satisfied."""
57
+ POSITIVE
58
+ """Very positive — user is delighted."""
59
+ VERY_POSITIVE
60
+ }
61
+ ```
62
+
63
+ ### `FeedbackCreateInput`
64
+
65
+ ```graphql
66
+ """
67
+ Input for `feedbackCreate` — submit a feedback message from the dashboard.
68
+ """
69
+ input FeedbackCreateInput {
70
+ """The feedback message content."""
71
+ message: String!
72
+ """The topic category of the feedback."""
73
+ topic: FeedbackTopic!
74
+ """Optional sentiment rating."""
75
+ sentiment: FeedbackSentiment
76
+ """
77
+ The page path where feedback was submitted (e.g. `/orgs/acme/projects/123`).
78
+ """
79
+ pagePath: String
80
+ """The organisation context, if applicable."""
81
+ organizationId: ID
82
+ """The project context, if applicable."""
83
+ projectId: ID
84
+ """
85
+ The Picked session id, if available — links feedback to a session recording.
86
+ """
87
+ pickedSessionId: String
88
+ """The user's browser user-agent string."""
89
+ userAgent: String
90
+ """The user's screen resolution (e.g. `1920x1080`)."""
91
+ screenResolution: String
92
+ }
93
+ ```
94
+
95
+ ### `FeedbackCreatePayload`
96
+
97
+ ```graphql
98
+ """Payload returned by `feedbackCreate`."""
99
+ type FeedbackCreatePayload {
100
+ """The id of the newly created feedback row."""
101
+ feedbackId: ID!
102
+ }
103
+ ```