Metafields & Metaobjects · App de Datos de Origen · CULTIVA IA
shopify app deploy
# ── Cultiva Café: Shopify App Config ────────────────────────────────────── name = "cultiva-cafe-origin" client_id = "9a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d" application_url = "https://cultiva-cafe.myshopify.com" # ── METAFIELD DEFINITIONS ───────────────────────────────────────────────── [product.metafields.app.process] type = "single_line_text_field" name = "Proceso de Beneficio" access.admin = "merchant_read_write" access.storefront = "public_read" [product.metafields.app.altitude_masl] type = "number_integer" name = "Altitud (msnm)" access.admin = "merchant_read_write" access.storefront = "public_read" [product.metafields.app.tasting_notes] type = "list.single_line_text_field" name = "Notas de Cata" access.admin = "merchant_read_write" access.storefront = "public_read" [product.metafields.app.score_sca] type = "number_decimal" name = "Puntuación SCA" access.admin = "merchant_read_write" access.storefront = "public_read" [product.metafields.app.harvest_date] type = "date" name = "Fecha de Cosecha" access.admin = "merchant_read_write" access.storefront = "public_read" [product.metafields.app.producer_ref] type = "metaobject_reference<$app:producer>" name = "Productor / Finca" access.admin = "merchant_read_write" access.storefront = "public_read" # ── METAOBJECT DEFINITION: PRODUCER ─────────────────────────────────────── [metaobjects.app.producer] name = "Producer" display_name_field = "name" access.storefront = "public_read" [metaobjects.app.producer.fields.name] name = "Nombre del Productor" type = "single_line_text_field" required = true [metaobjects.app.producer.fields.country] name = "País" type = "single_line_text_field" [metaobjects.app.producer.fields.region] name = "Región" type = "single_line_text_field" [metaobjects.app.producer.fields.bio] name = "Biografía" type = "multi_line_text_field" [metaobjects.app.producer.fields.certifications] name = "Certificaciones" type = "list.single_line_text_field"
metafieldDefinitionCreate ni metaobjectDefinitionCreate por GraphQL — eso sería incorrecto para este caso.
# Crear/actualizar finca La Esmeralda mutation { metaobjectUpsert(handle: { type: "$app:producer", handle: "la-esmeralda-panama", }, metaobject: { fields: [ { key: "name", value: "Finca La Esmeralda" }, { key: "country", value: "Panamá" }, { key: "region", value: "Chiriquí, Boquete" }, { key: "bio", value: "Finca familiar con 120 años de historia cultivando Gesha a más de 1.700 msnm." }, { key: "certifications", value: "[\"Rainforest Alliance\", \"Organic\",\"Cup of Excellence\"]" } ] }) { metaobject { id handle } userErrors { field message } } }
# Asignar datos al producto Gesha Washed mutation { metafieldsSet(metafields: [ { ownerId: "gid://shopify/Product/8847261", key: "process", value: "Washed" }, { ownerId: "gid://shopify/Product/8847261", key: "altitude_masl", value: "1750" }, { ownerId: "gid://shopify/Product/8847261", key: "tasting_notes", value: "[\"Jazmín\",\"Melocotón\", \"Bergamota\",\"Té blanco\"]" }, { ownerId: "gid://shopify/Product/8847261", key: "score_sca", value: "93.5" }, { ownerId: "gid://shopify/Product/8847261", key: "harvest_date", value: "2025-01-15" }, { ownerId: "gid://shopify/Product/8847261", key: "producer_ref", value: "gid://shopify/Metaobject/9912345" } ]) { metafields { key value } userErrors { field message } } }
query GetCoffeeOrigin { product(id: "gid://shopify/Product/8847261") { title # Metafields — namespace omitido → $app por defecto process: metafield(key: "process") { jsonValue } altitude: metafield(key: "altitude_masl") { jsonValue } notes: metafield(key: "tasting_notes") { jsonValue } score: metafield(key: "score_sca") { jsonValue } producerRef: metafield(key: "producer_ref") { reference { ... on Metaobject { handle name: field(key: "name") { jsonValue } country: field(key: "country") { jsonValue } region: field(key: "region") { jsonValue } certs: field(key: "certifications") { jsonValue } } } } } }
query GetCoffeeOriginStorefront { product(handle: "gesha-washed-panama") { title # En Storefront, namespace explícito: "$app" process: metafield( namespace: "$app" key: "process" ) { value } altitude: metafield( namespace: "$app" key: "altitude_masl" ) { value } notes: metafield( namespace: "$app" key: "tasting_notes" ) { value } score: metafield( namespace: "$app" key: "score_sca" ) { value } producer: metafield( namespace: "$app" key: "producer_ref" ) { reference { ... on Metaobject { handle name: field(key: "name") { value } certs: field(key: "certifications") { value } } } } } }
$app:producer) se vincula a múltiples productos. Un cambio se propaga a todos.namespace: app — es el error más común. El prefijo $app es resuelto por Shopify al gid de la app.