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.
- package/README.md +27 -12
- package/docs/explanation/conditions-and-the-logic-engine.md +94 -0
- package/docs/explanation/content-references.md +99 -0
- package/docs/explanation/feature-flag-allocation.md +218 -0
- package/docs/explanation/how-picked-works.md +124 -0
- package/docs/explanation/how-pickedql-works.md +76 -0
- package/docs/explanation/pages-and-flows.md +64 -0
- package/docs/explanation/the-content-model.md +87 -0
- package/docs/explanation/the-two-apis.md +68 -0
- package/docs/explanation/why-server-side-rendering.md +76 -0
- package/docs/explanation/workspaces-and-versions.md +71 -0
- package/docs/how-to/add-a-step-field-or-action.md +56 -0
- package/docs/how-to/analytics/index.md +324 -0
- package/docs/how-to/archive-or-delete-a-workspace.md +59 -0
- package/docs/how-to/authenticate-the-cli.md +101 -0
- package/docs/how-to/authenticate-with-a-magic-link.md +56 -0
- package/docs/how-to/authenticate-with-a-password.md +68 -0
- package/docs/how-to/authenticate-with-an-api-key.md +60 -0
- package/docs/how-to/authenticate-with-oauth.md +49 -0
- package/docs/how-to/build-a-flow.md +106 -0
- package/docs/how-to/call-an-external-api-from-a-workflow.md +116 -0
- package/docs/how-to/connect-the-mcp-server.md +46 -0
- package/docs/how-to/create-a-content-entry.md +58 -0
- package/docs/how-to/create-a-project.md +40 -0
- package/docs/how-to/create-an-experience.md +51 -0
- package/docs/how-to/create-and-revoke-an-api-key.md +54 -0
- package/docs/how-to/debug-with-the-chrome-extension.md +57 -0
- package/docs/how-to/define-a-page-layout.md +54 -0
- package/docs/how-to/fill-and-publish-a-page.md +82 -0
- package/docs/how-to/install-the-gtm-template.md +84 -0
- package/docs/how-to/install-the-sdk.md +93 -0
- package/docs/how-to/install-the-vite-plugin.md +69 -0
- package/docs/how-to/invite-and-remove-members.md +45 -0
- package/docs/how-to/point-one-entry-at-another.md +75 -0
- package/docs/how-to/preview-a-workspace.md +39 -0
- package/docs/how-to/publish-a-workspace.md +42 -0
- package/docs/how-to/read-a-feature-flag.md +113 -0
- package/docs/how-to/read-a-referenced-entry.md +109 -0
- package/docs/how-to/register-a-component.md +55 -0
- package/docs/how-to/register-an-action-handler.md +85 -0
- package/docs/how-to/register-an-api-that-uses-oauth2.md +107 -0
- package/docs/how-to/render-a-step-form.md +131 -0
- package/docs/how-to/render-an-unpublished-preview.md +41 -0
- package/docs/how-to/retry-a-failed-call-with-a-loop.md +81 -0
- package/docs/how-to/reuse-a-section.md +64 -0
- package/docs/how-to/reuse-a-step-field-or-action.md +39 -0
- package/docs/how-to/roll-back-a-published-version.md +39 -0
- package/docs/how-to/run-an-ab-test.md +59 -0
- package/docs/how-to/run-code-on-a-form-submission.md +125 -0
- package/docs/how-to/server-render-a-page.md +81 -0
- package/docs/how-to/set-a-content-security-policy.md +32 -0
- package/docs/how-to/set-up-mfa.md +126 -0
- package/docs/how-to/switch-workspaces.md +122 -0
- package/docs/how-to/upload-and-use-an-asset.mdx +87 -0
- package/docs/how-to/validate-a-field.md +52 -0
- package/docs/how-to/wait-for-an-action-response.md +182 -0
- package/docs/how-to/write-a-condition.md +57 -0
- package/docs/how-to/write-a-predicate.md +60 -0
- package/docs/index.md +59 -0
- package/docs/reference/dashboard/actions.mdx +65 -0
- package/docs/reference/dashboard/api-keys.mdx +47 -0
- package/docs/reference/dashboard/conditions.mdx +51 -0
- package/docs/reference/dashboard/content/asset-library.mdx +74 -0
- package/docs/reference/dashboard/content/blocks.mdx +66 -0
- package/docs/reference/dashboard/content/content-entries.mdx +109 -0
- package/docs/reference/dashboard/content/models.mdx +119 -0
- package/docs/reference/dashboard/content/pages.mdx +72 -0
- package/docs/reference/dashboard/experiences.mdx +61 -0
- package/docs/reference/dashboard/external-apis.md +182 -0
- package/docs/reference/dashboard/features.mdx +165 -0
- package/docs/reference/dashboard/fields.mdx +120 -0
- package/docs/reference/dashboard/flow-builder/canvas.mdx +58 -0
- package/docs/reference/dashboard/flow-builder/condition-builder.md +69 -0
- package/docs/reference/dashboard/flow-builder/keyboard-shortcuts.md +72 -0
- package/docs/reference/dashboard/flow-builder/nodes.md +74 -0
- package/docs/reference/dashboard/labels.md +321 -0
- package/docs/reference/dashboard/lead-search.md +235 -0
- package/docs/reference/dashboard/projects.mdx +53 -0
- package/docs/reference/dashboard/reports.mdx +53 -0
- package/docs/reference/dashboard/steps.mdx +47 -0
- package/docs/reference/dashboard/team-management.md +38 -0
- package/docs/reference/dashboard/workflow-runs.md +157 -0
- package/docs/reference/dashboard/workflow-templates.md +182 -0
- package/docs/reference/dashboard/workflow-test-runs.md +85 -0
- package/docs/reference/dashboard/workspace-versioning.mdx +42 -0
- package/docs/reference/dashboard/workspaces.mdx +91 -0
- package/docs/reference/delivery-api/experience-content.md +152 -0
- package/docs/reference/delivery-api/index.md +45 -0
- package/docs/reference/delivery-api/preview-caching-crawling.md +79 -0
- package/docs/reference/delivery-api/project-config.md +65 -0
- package/docs/reference/delivery-api/workspace-schema.md +107 -0
- package/docs/reference/glossary.md +201 -0
- package/docs/reference/management-api/authentication.md +87 -0
- package/docs/reference/management-api/authorization-and-scopes.md +291 -0
- package/docs/reference/management-api/error-handling.md +232 -0
- package/docs/reference/management-api/pagination.md +192 -0
- package/docs/reference/management-api/schema/action.md +261 -0
- package/docs/reference/management-api/schema/analytics-session.md +363 -0
- package/docs/reference/management-api/schema/analytics.md +73 -0
- package/docs/reference/management-api/schema/api-key.md +170 -0
- package/docs/reference/management-api/schema/auth.md +1177 -0
- package/docs/reference/management-api/schema/cms-fields.md +954 -0
- package/docs/reference/management-api/schema/cms-models.md +1155 -0
- package/docs/reference/management-api/schema/common.md +362 -0
- package/docs/reference/management-api/schema/condition.md +254 -0
- package/docs/reference/management-api/schema/design-system.md +199 -0
- package/docs/reference/management-api/schema/experience.md +1098 -0
- package/docs/reference/management-api/schema/external-api.md +637 -0
- package/docs/reference/management-api/schema/feature.md +350 -0
- package/docs/reference/management-api/schema/feedback.md +103 -0
- package/docs/reference/management-api/schema/field.md +400 -0
- package/docs/reference/management-api/schema/index.md +243 -0
- package/docs/reference/management-api/schema/integration.md +272 -0
- package/docs/reference/management-api/schema/label.md +349 -0
- package/docs/reference/management-api/schema/lead.md +340 -0
- package/docs/reference/management-api/schema/mcp-server.md +299 -0
- package/docs/reference/management-api/schema/metric.md +223 -0
- package/docs/reference/management-api/schema/operation.md +96 -0
- package/docs/reference/management-api/schema/organization.md +749 -0
- package/docs/reference/management-api/schema/project.md +607 -0
- package/docs/reference/management-api/schema/report.md +243 -0
- package/docs/reference/management-api/schema/saved-view.md +288 -0
- package/docs/reference/management-api/schema/shopify.md +795 -0
- package/docs/reference/management-api/schema/step.md +273 -0
- package/docs/reference/management-api/schema/tenant-branding.md +185 -0
- package/docs/reference/management-api/schema/workbench.md +246 -0
- package/docs/reference/management-api/schema/workflow-run.md +263 -0
- package/docs/reference/management-api/schema/workflow.md +1110 -0
- package/docs/reference/management-api/schema/workspace-version.md +823 -0
- package/docs/reference/management-api/schema/workspace.md +917 -0
- package/docs/reference/pickedql/data-sources.md +174 -0
- package/docs/reference/pickedql/dimensions.md +103 -0
- package/docs/reference/pickedql/filtering.md +64 -0
- package/docs/reference/pickedql/index.md +18 -0
- package/docs/reference/pickedql/schema.md +172 -0
- package/docs/reference/pickedql/virtual-functions.md +248 -0
- package/docs/reference/sdk/actions.md +154 -0
- package/docs/reference/sdk/analytics-events.md +453 -0
- package/docs/reference/sdk/conditions.md +147 -0
- package/docs/reference/sdk/content-security-policy.md +21 -0
- package/docs/reference/sdk/content.md +253 -0
- package/docs/reference/sdk/experiences.md +51 -0
- package/docs/reference/sdk/features.md +256 -0
- package/docs/reference/sdk/fields.md +255 -0
- package/docs/reference/sdk/index.md +68 -0
- package/docs/reference/sdk/plugins/create-experience.md +123 -0
- package/docs/reference/sdk/plugins/dynamic-experiences.md +74 -0
- package/docs/reference/sdk/plugins/fingerprintjs.md +39 -0
- package/docs/reference/sdk/plugins/hotjar.md +60 -0
- package/docs/reference/sdk/plugins/index.md +33 -0
- package/docs/reference/sdk/plugins/sentry.md +51 -0
- package/docs/reference/sdk/plugins/shopify.md +109 -0
- package/docs/reference/sdk/plugins/window-object.md +25 -0
- package/docs/reference/sdk/predicates.md +43 -0
- package/docs/reference/sdk/react.md +61 -0
- package/docs/reference/sdk/ssr/index.md +33 -0
- package/docs/reference/sdk/ssr/rendering-and-hydration.md +103 -0
- package/docs/reference/sdk/ssr/serialize.md +80 -0
- package/docs/reference/sdk/ssr/slots-and-placements.md +113 -0
- package/docs/reference/sdk/steps.md +86 -0
- package/docs/reference/sdk/svelte.md +74 -0
- package/docs/reference/sdk/type-generation.md +265 -0
- package/docs/reference/tools/admin-api-client.md +89 -0
- package/docs/reference/tools/chrome-extension.md +16 -0
- package/docs/reference/tools/cli.md +319 -0
- package/docs/reference/tools/delivery-api-client.md +60 -0
- package/docs/reference/tools/image-optimisation-service.md +104 -0
- package/docs/reference/tools/mcp-run.md +121 -0
- package/docs/reference/tools/mcp.md +391 -0
- package/docs/reference/tools/vite-plugin.md +163 -0
- package/docs/tutorials/first-api-call.md +253 -0
- package/docs/tutorials/first-experience-in-the-dashboard.mdx +160 -0
- package/docs/tutorials/first-experience.mdx +254 -0
- package/docs/tutorials/first-server-rendered-page.mdx +186 -0
- 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
|
+
```
|