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,795 @@
1
+ ---
2
+ type: reference
3
+ layout: docs
4
+ generated: true
5
+ ---
6
+
7
+ # Shopify schema
8
+
9
+ The operations and types that `shopify.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
+ ### `shopifyProduct`
14
+
15
+ ```graphql
16
+ shopifyProduct(input: ShopifyProductInput!): ShopifyProduct @auth @deprecated(reason: "Picked no longer reads Shopify products. Always returns null; will be removed.")
17
+ ```
18
+
19
+ ### `shopifyProducts`
20
+
21
+ ```graphql
22
+ shopifyProducts(input: ShopifyProductsInput!): ShopifyProductsResponse! @auth @deprecated(reason: "Picked no longer reads Shopify products. Always returns an empty page; will be removed.")
23
+ ```
24
+
25
+ ### `shopifyWebhooks`
26
+
27
+ List Shopify webhooks for an organisation. Requires authentication.
28
+
29
+ ```graphql
30
+ shopifyWebhooks(input: ShopifyWebhooksInput!): [ShopifyWebhook!]! @auth
31
+ ```
32
+
33
+ ### `shopifyMetafieldConfigs`
34
+
35
+ List Shopify metafield configs for a project. Requires authentication.
36
+
37
+ ```graphql
38
+ shopifyMetafieldConfigs(input: ShopifyMetafieldConfigsInput!): [ShopifyMetafieldConfig!]! @auth
39
+ ```
40
+
41
+ ### `organizationShopifyWebhooks`
42
+
43
+ ```graphql
44
+ organizationShopifyWebhooks(input: OrganizationShopifyWebhooksInput!): [ShopifyWebhook!]! @auth @deprecated(reason: "Use `shopifyWebhooks` instead")
45
+ ```
46
+
47
+ ### `projectShopifyMetafieldConfigs`
48
+
49
+ ```graphql
50
+ projectShopifyMetafieldConfigs(input: ProjectMetafieldConfigsInput!): [ShopifyMetafieldConfig!]! @auth @deprecated(reason: "Use `shopifyMetafieldConfigs` instead")
51
+ ```
52
+
53
+ ## Mutations
54
+
55
+ ### `shopifyWebhookCreate`
56
+
57
+ Create a new Shopify webhook. Requires authentication.
58
+
59
+ ```graphql
60
+ shopifyWebhookCreate(input: ShopifyWebhookCreateInput!): ShopifyWebhookCreatePayload! @auth
61
+ ```
62
+
63
+ ### `shopifyWebhookUpdate`
64
+
65
+ Update a Shopify webhook. Requires authentication.
66
+
67
+ ```graphql
68
+ shopifyWebhookUpdate(input: ShopifyWebhookUpdateInput!): Boolean! @auth
69
+ ```
70
+
71
+ ### `shopifyWebhookDelete`
72
+
73
+ Delete a Shopify webhook. Requires authentication.
74
+
75
+ ```graphql
76
+ shopifyWebhookDelete(input: ShopifyWebhookDeleteInput!): Boolean! @auth
77
+ ```
78
+
79
+ ### `shopifyProductContentUpdate`
80
+
81
+ Update Shopify product content. Requires authentication.
82
+
83
+ ```graphql
84
+ shopifyProductContentUpdate(input: ShopifyProductContentUpdateInput!): Boolean! @auth
85
+ ```
86
+
87
+ ### `shopifyCollectionContentUpdate`
88
+
89
+ Update Shopify collection content. Requires authentication.
90
+
91
+ ```graphql
92
+ shopifyCollectionContentUpdate(input: ShopifyCollectionContentUpdateInput!): Boolean! @auth
93
+ ```
94
+
95
+ ### `shopifyMetafieldConfigCreate`
96
+
97
+ Create a Shopify metafield config. Requires authentication.
98
+
99
+ ```graphql
100
+ shopifyMetafieldConfigCreate(input: ShopifyMetafieldConfigCreateInput!): ShopifyMetafieldConfig! @auth
101
+ ```
102
+
103
+ ### `shopifyMetafieldConfigUpdate`
104
+
105
+ Update a Shopify metafield config. Requires authentication.
106
+
107
+ ```graphql
108
+ shopifyMetafieldConfigUpdate(input: ShopifyMetafieldConfigUpdateInput!): Boolean! @auth
109
+ ```
110
+
111
+ ### `shopifyMetafieldConfigDelete`
112
+
113
+ Delete a Shopify metafield config. Requires authentication.
114
+
115
+ ```graphql
116
+ shopifyMetafieldConfigDelete(input: ShopifyMetafieldConfigDeleteInput!): Boolean! @auth
117
+ ```
118
+
119
+ ### `createShopifyWebhook`
120
+
121
+ ```graphql
122
+ createShopifyWebhook(input: CreateShopifyWebhookInput!): CreateShopifyWebhookResponse! @auth @deprecated(reason: "Use `shopifyWebhookCreate` instead")
123
+ ```
124
+
125
+ ### `updateShopifyWebhook`
126
+
127
+ ```graphql
128
+ updateShopifyWebhook(input: UpdateShopifyWebhookInput!): Boolean! @auth @deprecated(reason: "Use `shopifyWebhookUpdate` instead")
129
+ ```
130
+
131
+ ### `deleteShopifyWebhook`
132
+
133
+ ```graphql
134
+ deleteShopifyWebhook(input: DeleteShopifyWebhookInput!): Boolean! @auth @deprecated(reason: "Use `shopifyWebhookDelete` instead")
135
+ ```
136
+
137
+ ### `updateShopifyProductContent`
138
+
139
+ ```graphql
140
+ updateShopifyProductContent(input: UpdateShopifyProductContentInput!): Boolean! @auth @deprecated(reason: "Use `shopifyProductContentUpdate` instead")
141
+ ```
142
+
143
+ ### `updateShopifyCollectionContent`
144
+
145
+ ```graphql
146
+ updateShopifyCollectionContent(input: UpdateShopifyCollectionContentInput!): Boolean! @auth @deprecated(reason: "Use `shopifyCollectionContentUpdate` instead")
147
+ ```
148
+
149
+ ### `createShopifyMetafieldConfig`
150
+
151
+ ```graphql
152
+ createShopifyMetafieldConfig(input: CreateShopifyMetafieldConfigInput!): ShopifyMetafieldConfig! @auth @deprecated(reason: "Use `shopifyMetafieldConfigCreate` instead")
153
+ ```
154
+
155
+ ### `updateShopifyMetafieldConfig`
156
+
157
+ ```graphql
158
+ updateShopifyMetafieldConfig(input: UpdateShopifyMetafieldConfigInput!): Boolean! @auth @deprecated(reason: "Use `shopifyMetafieldConfigUpdate` instead")
159
+ ```
160
+
161
+ ### `deleteShopifyMetafieldConfig`
162
+
163
+ ```graphql
164
+ deleteShopifyMetafieldConfig(input: DeleteShopifyMetafieldConfigInput!): Boolean! @auth @deprecated(reason: "Use `shopifyMetafieldConfigDelete` instead")
165
+ ```
166
+
167
+ ## Types
168
+
169
+ ### `ShopifyProductOption`
170
+
171
+ ```graphql
172
+ """A Shopify product option (e.g. `Color`, `Size`)."""
173
+ type ShopifyProductOption {
174
+ """Unique identifier for the option."""
175
+ id: ID
176
+ """ID of the product this option belongs to."""
177
+ productId: ID
178
+ """Display name of the option (e.g. `Color`, `Size`)."""
179
+ name: String
180
+ """Position of the option in the product's option list."""
181
+ position: Int
182
+ """Available values for this option (e.g. `["Red", "Blue"]`)."""
183
+ values: [String!]
184
+ }
185
+ ```
186
+
187
+ ### `ShopifyImage`
188
+
189
+ ```graphql
190
+ """A Shopify product image."""
191
+ type ShopifyImage {
192
+ """Unique identifier for the image."""
193
+ id: ID
194
+ """ID of the product this image belongs to."""
195
+ productId: ID
196
+ """Position of the image in the product's image list."""
197
+ position: Int
198
+ """When this image was created (ISO 8601 string)."""
199
+ createdAt: String
200
+ """When this image was last updated (ISO 8601 string)."""
201
+ updatedAt: String
202
+ """Width of the image in pixels."""
203
+ width: Int
204
+ """Height of the image in pixels."""
205
+ height: Int
206
+ """Source URL of the image."""
207
+ src: String
208
+ """Base64-encoded image attachment (only set on upload paths)."""
209
+ attachment: String
210
+ """Filename of the image."""
211
+ filename: String
212
+ """Alt text for the image."""
213
+ alt: String
214
+ """IDs of variants associated with this image."""
215
+ variantIds: [ID!]
216
+ """Admin GraphQL API ID."""
217
+ adminGraphqlApiId: String
218
+ }
219
+ ```
220
+
221
+ ### `ShopifyVariant`
222
+
223
+ ```graphql
224
+ """A Shopify product variant."""
225
+ type ShopifyVariant {
226
+ """Unique identifier for the variant."""
227
+ id: ID
228
+ """ID of the product this variant belongs to."""
229
+ productId: ID
230
+ """
231
+ Display title of the variant (typically a composition of option values, e.g. `Red / Small`).
232
+ """
233
+ title: String
234
+ """Stock keeping unit."""
235
+ sku: String
236
+ """Position of the variant in the product's variant list."""
237
+ position: Int
238
+ """Weight in grams."""
239
+ grams: Int
240
+ """Inventory policy (`deny` or `continue`)."""
241
+ inventoryPolicy: String
242
+ """Price of the variant (formatted string in the shop's currency)."""
243
+ price: String
244
+ """Compare-at price for showing discounts."""
245
+ compareAtPrice: String
246
+ """Fulfillment service handling this variant."""
247
+ fulfillmentService: String
248
+ """Inventory management service."""
249
+ inventoryManagement: String
250
+ """ID of the inventory item."""
251
+ inventoryItemId: ID
252
+ """Value of the first product option."""
253
+ option1: String
254
+ """Value of the second product option."""
255
+ option2: String
256
+ """Value of the third product option."""
257
+ option3: String
258
+ """When this variant was created (ISO 8601 string)."""
259
+ createdAt: String
260
+ """When this variant was last updated (ISO 8601 string)."""
261
+ updatedAt: String
262
+ """Whether this variant is taxable."""
263
+ taxable: Boolean
264
+ """Tax code for this variant."""
265
+ taxCode: String
266
+ """Barcode of the variant."""
267
+ barcode: String
268
+ """ID of the associated image."""
269
+ imageId: ID
270
+ """Current inventory quantity."""
271
+ inventoryQuantity: Int
272
+ """Weight of the variant (in `weightUnit`)."""
273
+ weight: String
274
+ """Unit of weight measurement."""
275
+ weightUnit: String
276
+ """Previous inventory quantity before the last update."""
277
+ oldInventoryQuantity: Int
278
+ """Whether this variant requires shipping."""
279
+ requireShipping: Boolean
280
+ """Admin GraphQL API ID."""
281
+ adminGraphqlApiId: String
282
+ }
283
+ ```
284
+
285
+ ### `ShopifyMetafield`
286
+
287
+ ```graphql
288
+ """
289
+ A Shopify metafield — arbitrary structured data attached to a product, variant, or other resource.
290
+ """
291
+ type ShopifyMetafield {
292
+ """Unique identifier for the metafield."""
293
+ id: ID
294
+ """Namespace of the metafield (e.g. `custom`, `seo`)."""
295
+ namespace: String
296
+ """Key of the metafield (unique within the namespace)."""
297
+ key: String
298
+ """Value of the metafield (encoded per `type`)."""
299
+ value: String
300
+ """
301
+ Type of the metafield value (e.g. `single_line_text_field`, `number_integer`).
302
+ """
303
+ type: String
304
+ """Description of the metafield."""
305
+ description: String
306
+ """ID of the resource that owns this metafield."""
307
+ ownerId: ID
308
+ """
309
+ Type of the resource that owns this metafield (e.g. `Product`, `Variant`).
310
+ """
311
+ ownerResource: String
312
+ """When this metafield was created (ISO 8601 string)."""
313
+ createdAt: String
314
+ """When this metafield was last updated (ISO 8601 string)."""
315
+ updatedAt: String
316
+ """Admin GraphQL API ID."""
317
+ adminGraphqlApiId: String
318
+ }
319
+ ```
320
+
321
+ ### `ShopifyProduct`
322
+
323
+ ```graphql
324
+ """A Shopify product."""
325
+ type ShopifyProduct {
326
+ """Unique identifier for the product."""
327
+ id: ID
328
+ """Title of the product."""
329
+ title: String
330
+ """HTML description of the product."""
331
+ bodyHtml: String
332
+ """Vendor of the product."""
333
+ vendor: String
334
+ """Product type (free-form taxonomy field)."""
335
+ productType: String
336
+ """URL-friendly handle for the product."""
337
+ handle: String
338
+ """When this product was created (ISO 8601 string)."""
339
+ createdAt: String
340
+ """When this product was last updated (ISO 8601 string)."""
341
+ updatedAt: String
342
+ """When this product was published (ISO 8601 string)."""
343
+ publishedAt: String
344
+ """Scope of publication (`web`, `global`)."""
345
+ publishedScope: String
346
+ """Comma-separated tags for the product."""
347
+ tags: String
348
+ """Current status of the product (`active`, `draft`, `archived`)."""
349
+ status: String
350
+ """Available options for this product."""
351
+ options: [ShopifyProductOption!]
352
+ """Variants of this product."""
353
+ variants: [ShopifyVariant!]
354
+ """Primary image of the product."""
355
+ image: ShopifyImage
356
+ """All images of the product."""
357
+ images: [ShopifyImage!]
358
+ """Theme template suffix."""
359
+ templateSuffix: String
360
+ """Global title meta tag."""
361
+ metafieldsGlobalTitleTag: String
362
+ """Global description meta tag."""
363
+ metafieldsGlobalDescriptionTag: String
364
+ """Metafields attached to this product."""
365
+ metafields: [ShopifyMetafield!]
366
+ """Admin GraphQL API ID."""
367
+ adminGraphqlApiId: String
368
+ }
369
+ ```
370
+
371
+ ### `ShopifyProductsResponse`
372
+
373
+ ```graphql
374
+ """Paginated response for `shopifyProducts`."""
375
+ type ShopifyProductsResponse {
376
+ """List of products."""
377
+ products: [ShopifyProduct!]!
378
+ """Total number of products."""
379
+ totalCount: Int!
380
+ """Current page number (1-indexed)."""
381
+ currentPage: Int!
382
+ """Total number of pages."""
383
+ totalPages: Int!
384
+ """Whether there is a next page."""
385
+ hasNextPage: Boolean!
386
+ """Whether there is a previous page."""
387
+ hasPreviousPage: Boolean!
388
+ }
389
+ ```
390
+
391
+ ### `ShopifyProductInput`
392
+
393
+ ```graphql
394
+ """Input for `shopifyProduct`. Provide either `productId` or `handle`."""
395
+ input ShopifyProductInput {
396
+ """Shop identifier (the `*.myshopify.com` subdomain)."""
397
+ shopId: String!
398
+ """Product ID to look up."""
399
+ productId: String
400
+ """Product handle to look up (URL-friendly slug)."""
401
+ handle: String
402
+ }
403
+ ```
404
+
405
+ ### `ShopifyProductsInput`
406
+
407
+ ```graphql
408
+ """Input for `shopifyProducts`."""
409
+ input ShopifyProductsInput {
410
+ """Shop identifier."""
411
+ shopId: String!
412
+ """Maximum number of products to return per page."""
413
+ limit: Int
414
+ """Page number to return (1-indexed)."""
415
+ page: Int
416
+ }
417
+ ```
418
+
419
+ ### `ShopifyWebhook`
420
+
421
+ ```graphql
422
+ """
423
+ Shopify webhook configuration — a Picked-managed webhook receiver that
424
+ forwards events to the configured `endpointUrl`. The Picked HMAC secret
425
+ returned by `shopifyWebhookCreate` is the only place it is exposed; show
426
+ once and discard.
427
+ """
428
+ type ShopifyWebhook {
429
+ """Unique identifier for the webhook."""
430
+ id: ID!
431
+ """ID of the organisation this webhook belongs to."""
432
+ organizationId: ID!
433
+ """ID of the project this webhook belongs to."""
434
+ projectId: ID!
435
+ """ID of the API key used for authentication."""
436
+ apiKeyId: ID!
437
+ """Display name of the webhook."""
438
+ name: String!
439
+ """Description of the webhook's purpose."""
440
+ description: String
441
+ """URL that will receive webhook events."""
442
+ endpointUrl: String!
443
+ """Whether the webhook is currently active."""
444
+ isActive: Boolean!
445
+ """Request timeout in milliseconds."""
446
+ timeoutMs: Int!
447
+ """Number of retry attempts on failure."""
448
+ retryCount: Int!
449
+ """Name of the associated API key (denormalised for display)."""
450
+ apiKeyName: String
451
+ """Prefix of the associated API key (denormalised for display)."""
452
+ apiKeyPrefix: String
453
+ """When this webhook was created (ISO 8601 string)."""
454
+ createdAt: String!
455
+ """When this webhook was last updated (ISO 8601 string)."""
456
+ updatedAt: String!
457
+ }
458
+ ```
459
+
460
+ ### `ShopifyWebhookCreatePayload`
461
+
462
+ ```graphql
463
+ """
464
+ Payload returned by `shopifyWebhookCreate`. WARNING: `webhookSecret` is shown only once — store it now.
465
+ """
466
+ type ShopifyWebhookCreatePayload {
467
+ """The created webhook."""
468
+ webhook: ShopifyWebhook!
469
+ """
470
+ Webhook HMAC secret for verifying payloads. Shown once — store securely.
471
+ """
472
+ webhookSecret: String!
473
+ }
474
+ ```
475
+
476
+ ### `ShopifyWebhooksInput`
477
+
478
+ ```graphql
479
+ """Input for listing Shopify webhooks."""
480
+ input ShopifyWebhooksInput {
481
+ """ID of the organisation to list webhooks for."""
482
+ organizationId: ID!
483
+ }
484
+ ```
485
+
486
+ ### `ShopifyWebhookCreateInput`
487
+
488
+ ```graphql
489
+ """Input for `shopifyWebhookCreate`."""
490
+ input ShopifyWebhookCreateInput {
491
+ """ID of the organisation."""
492
+ organizationId: ID!
493
+ """ID of the project."""
494
+ projectId: ID!
495
+ """ID of the API key for webhook authentication."""
496
+ apiKeyId: ID!
497
+ """Display name for the webhook."""
498
+ name: String!
499
+ """Description of the webhook's purpose."""
500
+ description: String
501
+ """URL that will receive webhook events."""
502
+ endpointUrl: String!
503
+ """
504
+ Request timeout in milliseconds. Server picks a sensible default if omitted.
505
+ """
506
+ timeoutMs: Int
507
+ """
508
+ Number of retry attempts on failure. Server picks a sensible default if omitted.
509
+ """
510
+ retryCount: Int
511
+ }
512
+ ```
513
+
514
+ ### `ShopifyWebhookUpdateInput`
515
+
516
+ ```graphql
517
+ """Input for `shopifyWebhookUpdate`. Omit a field to leave it unchanged."""
518
+ input ShopifyWebhookUpdateInput {
519
+ """ID of the webhook to update."""
520
+ webhookId: ID!
521
+ """ID of the organisation the webhook belongs to."""
522
+ organizationId: ID!
523
+ """New display name."""
524
+ name: String
525
+ """New description."""
526
+ description: String
527
+ """New endpoint URL."""
528
+ endpointUrl: String
529
+ """Whether the webhook should be active."""
530
+ isActive: Boolean
531
+ """New API key ID for authentication."""
532
+ apiKeyId: ID
533
+ """New timeout in milliseconds."""
534
+ timeoutMs: Int
535
+ """New retry count."""
536
+ retryCount: Int
537
+ }
538
+ ```
539
+
540
+ ### `ShopifyWebhookDeleteInput`
541
+
542
+ ```graphql
543
+ """Input for `shopifyWebhookDelete`."""
544
+ input ShopifyWebhookDeleteInput {
545
+ """ID of the webhook to delete."""
546
+ webhookId: ID!
547
+ """ID of the organisation the webhook belongs to."""
548
+ organizationId: ID!
549
+ }
550
+ ```
551
+
552
+ ### `CreateShopifyWebhookResponse`
553
+
554
+ ```graphql
555
+ """Deprecated — use `ShopifyWebhookCreatePayload`."""
556
+ type CreateShopifyWebhookResponse {
557
+ """The created webhook."""
558
+ webhook: ShopifyWebhook!
559
+ """Webhook HMAC secret. Shown once."""
560
+ webhookSecret: String!
561
+ }
562
+ ```
563
+
564
+ ### `CreateShopifyWebhookInput`
565
+
566
+ ```graphql
567
+ """Deprecated — use `ShopifyWebhookCreateInput`."""
568
+ input CreateShopifyWebhookInput {
569
+ organizationId: ID!
570
+ projectId: ID!
571
+ apiKeyId: ID!
572
+ name: String!
573
+ description: String
574
+ endpointUrl: String!
575
+ timeoutMs: Int
576
+ retryCount: Int
577
+ }
578
+ ```
579
+
580
+ ### `UpdateShopifyWebhookInput`
581
+
582
+ ```graphql
583
+ """Deprecated — use `ShopifyWebhookUpdateInput`."""
584
+ input UpdateShopifyWebhookInput {
585
+ webhookId: ID!
586
+ organizationId: ID!
587
+ name: String
588
+ description: String
589
+ endpointUrl: String
590
+ isActive: Boolean
591
+ apiKeyId: ID
592
+ timeoutMs: Int
593
+ retryCount: Int
594
+ }
595
+ ```
596
+
597
+ ### `DeleteShopifyWebhookInput`
598
+
599
+ ```graphql
600
+ """Deprecated — use `ShopifyWebhookDeleteInput`."""
601
+ input DeleteShopifyWebhookInput {
602
+ webhookId: ID!
603
+ organizationId: ID!
604
+ }
605
+ ```
606
+
607
+ ### `OrganizationShopifyWebhooksInput`
608
+
609
+ ```graphql
610
+ """Deprecated — use `ShopifyWebhooksInput`."""
611
+ input OrganizationShopifyWebhooksInput {
612
+ organizationId: ID!
613
+ }
614
+ ```
615
+
616
+ ### `ShopifyMetafieldConfig`
617
+
618
+ ```graphql
619
+ """
620
+ Shopify metafield-sync configuration for a project: which metafield
621
+ namespaces / keys to pull from Shopify and how many
622
+ metafields to ingest per resource.
623
+ """
624
+ type ShopifyMetafieldConfig {
625
+ """Unique identifier for the config."""
626
+ id: ID!
627
+ """ID of the project this config belongs to."""
628
+ projectId: String!
629
+ """Metafield namespace to sync (e.g. `custom`)."""
630
+ namespace: String!
631
+ """Maximum number of metafields to sync per resource."""
632
+ maxMetafields: Int!
633
+ """
634
+ Specific metafield keys to sync. Null means sync all keys in the namespace.
635
+ """
636
+ keys: [String!]
637
+ """When this config was created (ISO 8601 string)."""
638
+ createdAt: String!
639
+ """When this config was last updated (ISO 8601 string)."""
640
+ updatedAt: String!
641
+ }
642
+ ```
643
+
644
+ ### `ShopifyMetafieldConfigsInput`
645
+
646
+ ```graphql
647
+ """Input for listing Shopify metafield configs."""
648
+ input ShopifyMetafieldConfigsInput {
649
+ """ID of the project to list configs for."""
650
+ projectId: ID!
651
+ }
652
+ ```
653
+
654
+ ### `ShopifyMetafieldConfigCreateInput`
655
+
656
+ ```graphql
657
+ """Input for `shopifyMetafieldConfigCreate`."""
658
+ input ShopifyMetafieldConfigCreateInput {
659
+ """ID of the project."""
660
+ projectId: ID!
661
+ """Metafield namespace to sync."""
662
+ namespace: String!
663
+ """Maximum number of metafields to sync."""
664
+ maxMetafields: Int!
665
+ """Specific metafield keys to sync. Null means sync all keys."""
666
+ keys: [String!]
667
+ }
668
+ ```
669
+
670
+ ### `ShopifyMetafieldConfigUpdateInput`
671
+
672
+ ```graphql
673
+ """
674
+ Input for `shopifyMetafieldConfigUpdate`. Omit a field to leave it unchanged.
675
+ """
676
+ input ShopifyMetafieldConfigUpdateInput {
677
+ """ID of the config to update."""
678
+ id: ID!
679
+ """New maximum number of metafields."""
680
+ maxMetafields: Int
681
+ """New list of metafield keys."""
682
+ keys: [String!]
683
+ }
684
+ ```
685
+
686
+ ### `ShopifyMetafieldConfigDeleteInput`
687
+
688
+ ```graphql
689
+ """Input for `shopifyMetafieldConfigDelete`."""
690
+ input ShopifyMetafieldConfigDeleteInput {
691
+ """ID of the config to delete."""
692
+ id: ID!
693
+ }
694
+ ```
695
+
696
+ ### `ProjectMetafieldConfigsInput`
697
+
698
+ ```graphql
699
+ """Deprecated — use `ShopifyMetafieldConfigsInput`."""
700
+ input ProjectMetafieldConfigsInput {
701
+ projectId: ID!
702
+ }
703
+ ```
704
+
705
+ ### `CreateShopifyMetafieldConfigInput`
706
+
707
+ ```graphql
708
+ """Deprecated — use `ShopifyMetafieldConfigCreateInput`."""
709
+ input CreateShopifyMetafieldConfigInput {
710
+ projectId: ID!
711
+ namespace: String!
712
+ maxMetafields: Int!
713
+ keys: [String!]
714
+ }
715
+ ```
716
+
717
+ ### `UpdateShopifyMetafieldConfigInput`
718
+
719
+ ```graphql
720
+ """Deprecated — use `ShopifyMetafieldConfigUpdateInput`."""
721
+ input UpdateShopifyMetafieldConfigInput {
722
+ id: ID!
723
+ maxMetafields: Int
724
+ keys: [String!]
725
+ }
726
+ ```
727
+
728
+ ### `DeleteShopifyMetafieldConfigInput`
729
+
730
+ ```graphql
731
+ """Deprecated — use `ShopifyMetafieldConfigDeleteInput`."""
732
+ input DeleteShopifyMetafieldConfigInput {
733
+ id: ID!
734
+ }
735
+ ```
736
+
737
+ ### `ShopifyProductContentUpdateInput`
738
+
739
+ ```graphql
740
+ """
741
+ Input for `shopifyProductContentUpdate` — patch a Picked-managed content key for a Shopify product.
742
+ """
743
+ input ShopifyProductContentUpdateInput {
744
+ """Shop identifier."""
745
+ shopId: String!
746
+ """Product ID to update content for."""
747
+ productId: String!
748
+ """Content key."""
749
+ key: String!
750
+ """Content data."""
751
+ content: JSON!
752
+ }
753
+ ```
754
+
755
+ ### `ShopifyCollectionContentUpdateInput`
756
+
757
+ ```graphql
758
+ """
759
+ Input for `shopifyCollectionContentUpdate` — patch a Picked-managed content key for a Shopify collection.
760
+ """
761
+ input ShopifyCollectionContentUpdateInput {
762
+ """Shop identifier."""
763
+ shopId: String!
764
+ """Collection ID to update content for."""
765
+ collectionId: String!
766
+ """Content key."""
767
+ key: String!
768
+ """Content data."""
769
+ content: JSON!
770
+ }
771
+ ```
772
+
773
+ ### `UpdateShopifyProductContentInput`
774
+
775
+ ```graphql
776
+ """Deprecated — use `ShopifyProductContentUpdateInput`."""
777
+ input UpdateShopifyProductContentInput {
778
+ shopId: String!
779
+ productId: String!
780
+ key: String!
781
+ content: JSON!
782
+ }
783
+ ```
784
+
785
+ ### `UpdateShopifyCollectionContentInput`
786
+
787
+ ```graphql
788
+ """Deprecated — use `ShopifyCollectionContentUpdateInput`."""
789
+ input UpdateShopifyCollectionContentInput {
790
+ shopId: String!
791
+ collectionId: String!
792
+ key: String!
793
+ content: JSON!
794
+ }
795
+ ```