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,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Pagination
|
|
7
|
+
|
|
8
|
+
The Picked API paginates every list field that can return a large result. It uses a
|
|
9
|
+
cursor, in the Relay-style pattern. This guide covers the connection pattern and
|
|
10
|
+
shows how to move through a result.
|
|
11
|
+
|
|
12
|
+
## Connection pattern
|
|
13
|
+
|
|
14
|
+
A paginated field returns a **connection** object with this shape:
|
|
15
|
+
|
|
16
|
+
```graphql
|
|
17
|
+
type ExampleConnection {
|
|
18
|
+
edges: [ExampleEdge!]!
|
|
19
|
+
pageInfo: PageInfo!
|
|
20
|
+
totalCount: Int!
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
type ExampleEdge {
|
|
24
|
+
cursor: String!
|
|
25
|
+
node: Example!
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
type PageInfo {
|
|
29
|
+
hasNextPage: Boolean!
|
|
30
|
+
hasPreviousPage: Boolean!
|
|
31
|
+
startCursor: String
|
|
32
|
+
endCursor: String
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
| Field | Description |
|
|
37
|
+
|-------|-------------|
|
|
38
|
+
| `edges` | An ordered list of edges. Each edge holds a `cursor` and a `node`, and the `node` holds the data. |
|
|
39
|
+
| `pageInfo.hasNextPage` | `true` when more results come after the last edge |
|
|
40
|
+
| `pageInfo.hasPreviousPage` | `true` when results come before the first edge |
|
|
41
|
+
| `pageInfo.startCursor` | The cursor of the first edge on the current page |
|
|
42
|
+
| `pageInfo.endCursor` | The cursor of the last edge on the current page |
|
|
43
|
+
| `totalCount` | The number of items on every page together |
|
|
44
|
+
|
|
45
|
+
## Forward pagination with `first` and `after`
|
|
46
|
+
|
|
47
|
+
To move forward through the results, use two arguments. The `first` argument gives
|
|
48
|
+
the page size. The `after` argument gives the cursor to start after.
|
|
49
|
+
|
|
50
|
+
### First page
|
|
51
|
+
|
|
52
|
+
Leave the `after` argument out to read the first page:
|
|
53
|
+
|
|
54
|
+
```graphql
|
|
55
|
+
query {
|
|
56
|
+
organizations(input: { first: 10 }) {
|
|
57
|
+
edges {
|
|
58
|
+
cursor
|
|
59
|
+
node {
|
|
60
|
+
id
|
|
61
|
+
name
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
pageInfo {
|
|
65
|
+
hasNextPage
|
|
66
|
+
endCursor
|
|
67
|
+
}
|
|
68
|
+
totalCount
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Next page
|
|
74
|
+
|
|
75
|
+
Pass the `endCursor` from the previous response as the `after` argument:
|
|
76
|
+
|
|
77
|
+
```graphql
|
|
78
|
+
query {
|
|
79
|
+
organizations(input: { first: 10, after: "cursor_from_previous_page" }) {
|
|
80
|
+
edges {
|
|
81
|
+
cursor
|
|
82
|
+
node {
|
|
83
|
+
id
|
|
84
|
+
name
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
pageInfo {
|
|
88
|
+
hasNextPage
|
|
89
|
+
endCursor
|
|
90
|
+
}
|
|
91
|
+
totalCount
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Check for more pages
|
|
97
|
+
|
|
98
|
+
Read the `hasNextPage` field before you ask for the next page:
|
|
99
|
+
|
|
100
|
+
- `hasNextPage: true` — more results are available. Pass `endCursor` as the `after`
|
|
101
|
+
argument of the next request.
|
|
102
|
+
- `hasNextPage: false` — you read every result. Stop here.
|
|
103
|
+
|
|
104
|
+
## Full paginated query example
|
|
105
|
+
|
|
106
|
+
This example reads every member of an organization, one page at a time:
|
|
107
|
+
|
|
108
|
+
```graphql
|
|
109
|
+
# Page 1
|
|
110
|
+
query {
|
|
111
|
+
organization(input: { slug: "my-company" }) {
|
|
112
|
+
members(first: 20) {
|
|
113
|
+
edges {
|
|
114
|
+
cursor
|
|
115
|
+
node {
|
|
116
|
+
id
|
|
117
|
+
userEmail
|
|
118
|
+
role
|
|
119
|
+
joinedAt
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
pageInfo {
|
|
123
|
+
hasNextPage
|
|
124
|
+
endCursor
|
|
125
|
+
}
|
|
126
|
+
totalCount
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
If `pageInfo.hasNextPage` is `true`, fetch the next page:
|
|
133
|
+
|
|
134
|
+
```graphql
|
|
135
|
+
# Page 2
|
|
136
|
+
query {
|
|
137
|
+
organization(input: { slug: "my-company" }) {
|
|
138
|
+
members(first: 20, after: "cursor_from_page_1") {
|
|
139
|
+
edges {
|
|
140
|
+
cursor
|
|
141
|
+
node {
|
|
142
|
+
id
|
|
143
|
+
userEmail
|
|
144
|
+
role
|
|
145
|
+
joinedAt
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
pageInfo {
|
|
149
|
+
hasNextPage
|
|
150
|
+
endCursor
|
|
151
|
+
}
|
|
152
|
+
totalCount
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Continue until `hasNextPage` returns `false`.
|
|
159
|
+
|
|
160
|
+
## Paginated fields
|
|
161
|
+
|
|
162
|
+
These fields in the schema return a connection type. They all take the `first` and
|
|
163
|
+
`after` arguments:
|
|
164
|
+
|
|
165
|
+
| Parent Type | Field | Connection Type |
|
|
166
|
+
|------------|-------|----------------|
|
|
167
|
+
| `Query` | `organizations` | `OrganizationConnection` |
|
|
168
|
+
| `User` | `organizations` | `OrganizationConnection` |
|
|
169
|
+
| `User` | `invitations` | `ViewerInvitationConnection` |
|
|
170
|
+
| `Organization` | `members` | `OrganizationMemberConnection` |
|
|
171
|
+
| `Organization` | `invitations` | `OrganizationInvitationConnection` |
|
|
172
|
+
| `Organization` | `projects` | `ProjectConnection` |
|
|
173
|
+
| `Project` | `reports` | `ProjectReportConnection` |
|
|
174
|
+
|
|
175
|
+
All of these fields accept the same `first` and `after` arguments and return the standard `edges`, `pageInfo`, and `totalCount` structure.
|
|
176
|
+
|
|
177
|
+
## Tips
|
|
178
|
+
|
|
179
|
+
- **The default page size** — the API applies a default limit when you leave `first`
|
|
180
|
+
out. Set `first` yourself to make sure that each page has the size you expect.
|
|
181
|
+
- **A cursor is opaque** — treat a cursor string as an opaque token. Do not parse it,
|
|
182
|
+
build it, or change it. Pass it back exactly as the API gave it.
|
|
183
|
+
- **The order is stable** — a connection returns its results in a stable order. The
|
|
184
|
+
same cursor always points at the same position in the result.
|
|
185
|
+
- **Use them with other fields** — you can use the pagination arguments together with
|
|
186
|
+
other query fields. One request that reads an organization and the first page of
|
|
187
|
+
its members is common, and it is efficient.
|
|
188
|
+
|
|
189
|
+
## Related
|
|
190
|
+
|
|
191
|
+
- [Your first API call](/tutorials/first-api-call)
|
|
192
|
+
- [Authorization and scopes](/reference/management-api/authorization-and-scopes)
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
layout: docs
|
|
4
|
+
generated: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Action schema
|
|
8
|
+
|
|
9
|
+
The operations and types that `action.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
|
+
### `action`
|
|
14
|
+
|
|
15
|
+
Get an action by ID within a workspace.
|
|
16
|
+
|
|
17
|
+
```graphql
|
|
18
|
+
action(id: ID!, workspaceId: ID!): Action @auth
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### `actions`
|
|
22
|
+
|
|
23
|
+
List actions in a workspace. Filter by name with `search` (case-insensitive
|
|
24
|
+
substring) and order with `sortKey` (default `NAME`) plus `reverse`.
|
|
25
|
+
|
|
26
|
+
```graphql
|
|
27
|
+
actions(first: Int, after: String, last: Int, before: String, workspaceId: ID!, search: String, sortKey: ActionSortKeys = NAME, reverse: Boolean = false): ActionConnection! @auth
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Mutations
|
|
31
|
+
|
|
32
|
+
### `actionCreate`
|
|
33
|
+
|
|
34
|
+
Create a new action. Requires scope: `ORGANIZATION_PROJECTS_UPDATE`.
|
|
35
|
+
|
|
36
|
+
```graphql
|
|
37
|
+
actionCreate(input: ActionCreateInput!): ActionCreatePayload! @auth
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### `actionUpdate`
|
|
41
|
+
|
|
42
|
+
Update an action. Requires scope: `ORGANIZATION_PROJECTS_UPDATE`.
|
|
43
|
+
|
|
44
|
+
```graphql
|
|
45
|
+
actionUpdate(input: ActionUpdateInput!): ActionUpdatePayload! @auth
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### `actionDelete`
|
|
49
|
+
|
|
50
|
+
Delete an action. Requires scope: `ORGANIZATION_PROJECTS_UPDATE`.
|
|
51
|
+
|
|
52
|
+
```graphql
|
|
53
|
+
actionDelete(input: ActionDeleteInput!): ActionDeletePayload! @auth
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Types
|
|
57
|
+
|
|
58
|
+
### `Action`
|
|
59
|
+
|
|
60
|
+
```graphql
|
|
61
|
+
"""
|
|
62
|
+
A side effect triggered during experience flow execution. Workspace-
|
|
63
|
+
scoped — actions are copied into a new workspace when the workspace is
|
|
64
|
+
duplicated.
|
|
65
|
+
|
|
66
|
+
Examples: API calls (`tracking/send-event`), analytics events
|
|
67
|
+
(`segment/identify`), or SDK state updates (`features/toggle`). The
|
|
68
|
+
shape of the side effect itself is encoded in the action's `key` and
|
|
69
|
+
handled by the SDK plugin matching that key.
|
|
70
|
+
"""
|
|
71
|
+
type Action {
|
|
72
|
+
"""Unique action identifier."""
|
|
73
|
+
id: ID!
|
|
74
|
+
"""Display name of the action."""
|
|
75
|
+
name: String!
|
|
76
|
+
"""Stable, human-readable key for SDK consumers."""
|
|
77
|
+
key: String!
|
|
78
|
+
"""Optional description of what this action does."""
|
|
79
|
+
description: String
|
|
80
|
+
"""When this action was created."""
|
|
81
|
+
createdAt: DateTime!
|
|
82
|
+
"""When this action was last updated."""
|
|
83
|
+
updatedAt: DateTime!
|
|
84
|
+
"""The workspace this action belongs to."""
|
|
85
|
+
workspace: Workspace!
|
|
86
|
+
"""
|
|
87
|
+
The workspace ID this action belongs to (denormalised for query convenience).
|
|
88
|
+
"""
|
|
89
|
+
workspaceId: ID
|
|
90
|
+
"""Fields whose responses this action receives."""
|
|
91
|
+
fields(first: Int, after: String, last: Int, before: String): FieldConnection!
|
|
92
|
+
"""The one workflow this action starts, or null when it starts none."""
|
|
93
|
+
workflow: Workflow
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### `ActionConnection`
|
|
98
|
+
|
|
99
|
+
```graphql
|
|
100
|
+
"""
|
|
101
|
+
Relay-style connection of actions, with both an `edges` list and a flat `nodes` accessor.
|
|
102
|
+
"""
|
|
103
|
+
type ActionConnection {
|
|
104
|
+
"""List of action edges."""
|
|
105
|
+
edges: [ActionEdge!]!
|
|
106
|
+
"""
|
|
107
|
+
Flat list of actions, equivalent to `edges[].node`. Convenience accessor.
|
|
108
|
+
"""
|
|
109
|
+
nodes: [Action!]!
|
|
110
|
+
"""Pagination metadata."""
|
|
111
|
+
pageInfo: PageInfo!
|
|
112
|
+
"""Total number of actions."""
|
|
113
|
+
totalCount: Int!
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### `ActionEdge`
|
|
118
|
+
|
|
119
|
+
```graphql
|
|
120
|
+
"""Edge type for `ActionConnection`."""
|
|
121
|
+
type ActionEdge {
|
|
122
|
+
"""Pagination cursor for this edge."""
|
|
123
|
+
cursor: String!
|
|
124
|
+
"""The action."""
|
|
125
|
+
node: Action!
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### `ActionCreateInput`
|
|
130
|
+
|
|
131
|
+
```graphql
|
|
132
|
+
"""Input for `actionCreate`."""
|
|
133
|
+
input ActionCreateInput {
|
|
134
|
+
"""Workspace ID to create the action in."""
|
|
135
|
+
workspaceId: ID!
|
|
136
|
+
"""Display name for the action."""
|
|
137
|
+
name: String!
|
|
138
|
+
"""Unique key identifier for the action (stable across versions)."""
|
|
139
|
+
key: String!
|
|
140
|
+
"""Description of what this action does."""
|
|
141
|
+
description: String
|
|
142
|
+
"""Ids of the fields whose responses this action receives."""
|
|
143
|
+
fieldIds: [ID!]
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### `ActionCreatePayload`
|
|
148
|
+
|
|
149
|
+
```graphql
|
|
150
|
+
"""Payload returned by `actionCreate`."""
|
|
151
|
+
type ActionCreatePayload {
|
|
152
|
+
"""The created action."""
|
|
153
|
+
action: Action
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### `ActionUpdateInput`
|
|
158
|
+
|
|
159
|
+
```graphql
|
|
160
|
+
"""Input for `actionUpdate`. Omit a field to leave it unchanged."""
|
|
161
|
+
input ActionUpdateInput {
|
|
162
|
+
"""Action ID."""
|
|
163
|
+
id: ID!
|
|
164
|
+
"""Workspace ID the action belongs to."""
|
|
165
|
+
workspaceId: ID!
|
|
166
|
+
"""New display name."""
|
|
167
|
+
name: String
|
|
168
|
+
"""New description."""
|
|
169
|
+
description: String
|
|
170
|
+
"""
|
|
171
|
+
Replacement set of field ids. Omit to leave the set unchanged; pass an empty
|
|
172
|
+
list to request nothing.
|
|
173
|
+
"""
|
|
174
|
+
fieldIds: [ID!]
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### `ActionUpdatePayload`
|
|
179
|
+
|
|
180
|
+
```graphql
|
|
181
|
+
"""Payload returned by `actionUpdate`."""
|
|
182
|
+
type ActionUpdatePayload {
|
|
183
|
+
"""The updated action."""
|
|
184
|
+
action: Action
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### `ActionDeleteInput`
|
|
189
|
+
|
|
190
|
+
```graphql
|
|
191
|
+
"""Input for `actionDelete`."""
|
|
192
|
+
input ActionDeleteInput {
|
|
193
|
+
"""Action ID."""
|
|
194
|
+
id: ID!
|
|
195
|
+
"""Workspace ID the action belongs to."""
|
|
196
|
+
workspaceId: ID!
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### `ActionDeletePayload`
|
|
201
|
+
|
|
202
|
+
```graphql
|
|
203
|
+
"""
|
|
204
|
+
Payload returned by `actionDelete`. Returns `userErrors` when the action is in use.
|
|
205
|
+
"""
|
|
206
|
+
type ActionDeletePayload {
|
|
207
|
+
"""ID of the deleted action (null when `userErrors` is non-empty)."""
|
|
208
|
+
deletedActionId: ID
|
|
209
|
+
"""Validation errors. Empty array indicates success."""
|
|
210
|
+
userErrors: [ActionDeleteUserError!]!
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### `ActionDeleteUserErrorCode`
|
|
215
|
+
|
|
216
|
+
```graphql
|
|
217
|
+
"""Machine-readable error codes for `actionDelete`."""
|
|
218
|
+
enum ActionDeleteUserErrorCode {
|
|
219
|
+
"""
|
|
220
|
+
The action is referenced by one or more experiences and cannot be deleted.
|
|
221
|
+
"""
|
|
222
|
+
IN_USE
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### `ActionDeleteUserError`
|
|
227
|
+
|
|
228
|
+
```graphql
|
|
229
|
+
"""
|
|
230
|
+
A user error from `actionDelete`. Carries the experiences that block the delete when `code` is `IN_USE`.
|
|
231
|
+
"""
|
|
232
|
+
type ActionDeleteUserError {
|
|
233
|
+
"""Path to the input field that caused the error."""
|
|
234
|
+
field: [String!]
|
|
235
|
+
"""Human-readable error message."""
|
|
236
|
+
message: String!
|
|
237
|
+
"""Machine-readable error code."""
|
|
238
|
+
code: ActionDeleteUserErrorCode!
|
|
239
|
+
"""
|
|
240
|
+
Experiences that reference this action (present when `code` is `IN_USE`).
|
|
241
|
+
"""
|
|
242
|
+
referencingExperiences: [ReferencingExperience!]
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### `ActionSortKeys`
|
|
247
|
+
|
|
248
|
+
```graphql
|
|
249
|
+
"""
|
|
250
|
+
Sort keys for `actions(...)`. Pair with `reverse: true` to flip the order
|
|
251
|
+
(`NAME` + `reverse: false` sorts A→Z; `CREATED_AT` + `reverse: true` is newest-first).
|
|
252
|
+
"""
|
|
253
|
+
enum ActionSortKeys {
|
|
254
|
+
"""Sort by `name` (alphabetical)."""
|
|
255
|
+
NAME
|
|
256
|
+
"""Sort by `createdAt`."""
|
|
257
|
+
CREATED_AT
|
|
258
|
+
"""Sort by `updatedAt`."""
|
|
259
|
+
UPDATED_AT
|
|
260
|
+
}
|
|
261
|
+
```
|