Anchor to section titled 'undefined'

metaobjectUpsert
mutation

Requires write_metaobjects access scope.

Retrieves a metaobject by handle, then updates it with the provided input values. If no matching metaobject is found, a new metaobject is created with the provided input values.


The identifier of the metaobject to upsert.

The parameters to upsert the metaobject.


Was this section helpful?

The created or updated metaobject.

The list of errors that occurred from executing the mutation.


Was this section helpful?

Examples

Hide code
DescriptionCopy
mutation UpsertMetaobject($handle: MetaobjectHandleInput!, $metaobject: MetaobjectUpsertInput!) {
  metaobjectUpsert(handle: $handle, metaobject: $metaobject) {
    metaobject {
      handle
      hex: field(key: "hex") {
        value
      }
    }
    userErrors {
      field
      message
      code
    }
  }
}
curl -X POST \
https://your-development-store.myshopify.com/admin/api/2024-01/graphql.json \
-H 'Content-Type: application/json' \
-H 'X-Shopify-Access-Token: {access_token}' \
-d '{
"query": "mutation UpsertMetaobject($handle: MetaobjectHandleInput!, $metaobject: MetaobjectUpsertInput!) { metaobjectUpsert(handle: $handle, metaobject: $metaobject) { metaobject { handle hex: field(key: \"hex\") { value } } userErrors { field message code } } }",
 "variables": {
    "handle": {
      "type": "color",
      "handle": "indigo-swatch"
    },
    "metaobject": {
      "fields": [
        {
          "key": "hex",
          "value": "#4B0082"
        }
      ]
    }
  }
}'
const { admin } = await authenticate.admin(request);

const response = await admin.graphql(
  `#graphql
  mutation UpsertMetaobject($handle: MetaobjectHandleInput!, $metaobject: MetaobjectUpsertInput!) {
    metaobjectUpsert(handle: $handle, metaobject: $metaobject) {
      metaobject {
        handle
        hex: field(key: "hex") {
          value
        }
      }
      userErrors {
        field
        message
        code
      }
    }
  }`,
  {
    variables: {
      "handle": {
        "type": "color",
        "handle": "indigo-swatch"
      },
      "metaobject": {
        "fields": [
          {
            "key": "hex",
            "value": "#4B0082"
          }
        ]
      }
    },
  },
);

const data = await response.json();
session = ShopifyAPI::Auth::Session.new(
  shop: "your-development-store.myshopify.com",
  access_token: access_token
)
client = ShopifyAPI::Clients::Graphql::Admin.new(
  session: session
)

query = <<~QUERY
  mutation UpsertMetaobject($handle: MetaobjectHandleInput!, $metaobject: MetaobjectUpsertInput!) {
    metaobjectUpsert(handle: $handle, metaobject: $metaobject) {
      metaobject {
        handle
        hex: field(key: "hex") {
          value
        }
      }
      userErrors {
        field
        message
        code
      }
    }
  }
QUERY

variables = {
  "handle": {
    "type": "color",
    "handle": "indigo-swatch"
  },
  "metaobject": {
    "fields": [{"key"=>"hex", "value"=>"#4B0082"}]
  }
}

response = client.query(query: query, variables: variables)
const client = new shopify.clients.Graphql({session});
const data = await client.query({
  data: {
    "query": `mutation UpsertMetaobject($handle: MetaobjectHandleInput!, $metaobject: MetaobjectUpsertInput!) {
      metaobjectUpsert(handle: $handle, metaobject: $metaobject) {
        metaobject {
          handle
          hex: field(key: "hex") {
            value
          }
        }
        userErrors {
          field
          message
          code
        }
      }
    }`,
    "variables": {
      "handle": {
        "type": "color",
        "handle": "indigo-swatch"
      },
      "metaobject": {
        "fields": [
          {
            "key": "hex",
            "value": "#4B0082"
          }
        ]
      }
    },
  },
});
use Shopify\Clients\Graphql;

$client = new Graphql("your-development-store.myshopify.com", $accessToken);
$query = <<<QUERY
  mutation UpsertMetaobject($handle: MetaobjectHandleInput!, $metaobject: MetaobjectUpsertInput!) {
    metaobjectUpsert(handle: $handle, metaobject: $metaobject) {
      metaobject {
        handle
        hex: field(key: "hex") {
          value
        }
      }
      userErrors {
        field
        message
        code
      }
    }
  }
QUERY;

$variables = [
  "handle" => [
    "type" => "color",
    "handle" => "indigo-swatch",
  ],
  "metaobject" => [
    "fields" => [{"key"=>"hex", "value"=>"#4B0082"}],
  ],
];

$response = $client->query(["query" => $query, "variables" => $variables]);
Hide code
Input variables
Copy
{
  "handle": {
    "type": "color",
    "handle": "indigo-swatch"
  },
  "metaobject": {
    "fields": [
      {
        "key": "hex",
        "value": "#4B0082"
      }
    ]
  }
}
Hide code
Response
JSON
{
  "metaobjectUpsert": {
    "metaobject": {
      "handle": "indigo-swatch",
      "hex": {
        "value": "#4B0082"
      }
    },
    "userErrors": []
  }
}