Anchor to section titled 'undefined'

discountCodeAppCreate
mutation

Requires write_discounts access scope.

Creates a code app discount.


The input data used to create the app discount.


Was this section helpful?

The created code app discount.

The list of errors that occurred from executing the mutation.


Was this section helpful?

Examples

Hide code
DescriptionCopy
mutation discountCodeAppCreate($codeAppDiscount: DiscountCodeAppInput!) {
  discountCodeAppCreate(codeAppDiscount: $codeAppDiscount) {
    codeAppDiscount {
      discountId
      title
      appDiscountType {
        description
        functionId
      }
      combinesWith {
        orderDiscounts
        productDiscounts
        shippingDiscounts
      }
      codes(first: 100) {
        nodes {
          code
        }
      }
      status
      usageLimit
    }
    userErrors {
      field
      message
    }
  }
}
curl -X POST \
https://your-development-store.myshopify.com/admin/api/2024-07/graphql.json \
-H 'Content-Type: application/json' \
-H 'X-Shopify-Access-Token: {access_token}' \
-d '{
"query": "mutation discountCodeAppCreate($codeAppDiscount: DiscountCodeAppInput!) { discountCodeAppCreate(codeAppDiscount: $codeAppDiscount) { codeAppDiscount { discountId title appDiscountType { description functionId } combinesWith { orderDiscounts productDiscounts shippingDiscounts } codes(first: 100) { nodes { code } } status usageLimit } userErrors { field message } } }",
 "variables": {
    "codeAppDiscount": {
      "code": "APP_DISCOUNT",
      "title": "Take 5$ from order discount",
      "functionId": "b42a026e-f96f-4423-938b-54ade7a21161",
      "appliesOncePerCustomer": true,
      "combinesWith": {
        "orderDiscounts": true,
        "productDiscounts": true,
        "shippingDiscounts": true
      },
      "startsAt": "2021-02-02T17:09:21Z",
      "endsAt": "2022-02-02T17:09:21Z",
      "usageLimit": 1,
      "metafields": [
        {
          "namespace": "default",
          "key": "function-configuration",
          "type": "json",
          "value": "{\"discounts\":[{\"value\":{\"fixedAmount\":{\"amount\":5}},\"targets\":\n                      [{\"orderSubtotal\":{\"excludedVariantIds\":[]}}]}],\"discountApplicationStrategy\":\"FIRST\"}"
        }
      ]
    }
  }
}'
const { admin } = await authenticate.admin(request);

const response = await admin.graphql(
  `#graphql
  mutation discountCodeAppCreate($codeAppDiscount: DiscountCodeAppInput!) {
    discountCodeAppCreate(codeAppDiscount: $codeAppDiscount) {
      codeAppDiscount {
        discountId
        title
        appDiscountType {
          description
          functionId
        }
        combinesWith {
          orderDiscounts
          productDiscounts
          shippingDiscounts
        }
        codes(first: 100) {
          nodes {
            code
          }
        }
        status
        usageLimit
      }
      userErrors {
        field
        message
      }
    }
  }`,
  {
    variables: {
      "codeAppDiscount": {
        "code": "APP_DISCOUNT",
        "title": "Take 5$ from order discount",
        "functionId": "b42a026e-f96f-4423-938b-54ade7a21161",
        "appliesOncePerCustomer": true,
        "combinesWith": {
          "orderDiscounts": true,
          "productDiscounts": true,
          "shippingDiscounts": true
        },
        "startsAt": "2021-02-02T17:09:21Z",
        "endsAt": "2022-02-02T17:09:21Z",
        "usageLimit": 1,
        "metafields": [
          {
            "namespace": "default",
            "key": "function-configuration",
            "type": "json",
            "value": "{\"discounts\":[{\"value\":{\"fixedAmount\":{\"amount\":5}},\"targets\":\n                      [{\"orderSubtotal\":{\"excludedVariantIds\":[]}}]}],\"discountApplicationStrategy\":\"FIRST\"}"
          }
        ]
      }
    },
  },
);

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 discountCodeAppCreate($codeAppDiscount: DiscountCodeAppInput!) {
    discountCodeAppCreate(codeAppDiscount: $codeAppDiscount) {
      codeAppDiscount {
        discountId
        title
        appDiscountType {
          description
          functionId
        }
        combinesWith {
          orderDiscounts
          productDiscounts
          shippingDiscounts
        }
        codes(first: 100) {
          nodes {
            code
          }
        }
        status
        usageLimit
      }
      userErrors {
        field
        message
      }
    }
  }
QUERY

variables = {
  "codeAppDiscount": {
    "code": "APP_DISCOUNT",
    "title": "Take 5$ from order discount",
    "functionId": "b42a026e-f96f-4423-938b-54ade7a21161",
    "appliesOncePerCustomer": true,
    "combinesWith": {
      "orderDiscounts": true,
      "productDiscounts": true,
      "shippingDiscounts": true
    },
    "startsAt": "2021-02-02T17:09:21Z",
    "endsAt": "2022-02-02T17:09:21Z",
    "usageLimit": 1,
    "metafields": [{"namespace"=>"default", "key"=>"function-configuration", "type"=>"json", "value"=>"{\"discounts\":[{\"value\":{\"fixedAmount\":{\"amount\":5}},\"targets\":\n                      [{\"orderSubtotal\":{\"excludedVariantIds\":[]}}]}],\"discountApplicationStrategy\":\"FIRST\"}"}]
  }
}

response = client.query(query: query, variables: variables)
const client = new shopify.clients.Graphql({session});
const data = await client.query({
  data: {
    "query": `mutation discountCodeAppCreate($codeAppDiscount: DiscountCodeAppInput!) {
      discountCodeAppCreate(codeAppDiscount: $codeAppDiscount) {
        codeAppDiscount {
          discountId
          title
          appDiscountType {
            description
            functionId
          }
          combinesWith {
            orderDiscounts
            productDiscounts
            shippingDiscounts
          }
          codes(first: 100) {
            nodes {
              code
            }
          }
          status
          usageLimit
        }
        userErrors {
          field
          message
        }
      }
    }`,
    "variables": {
      "codeAppDiscount": {
        "code": "APP_DISCOUNT",
        "title": "Take 5$ from order discount",
        "functionId": "b42a026e-f96f-4423-938b-54ade7a21161",
        "appliesOncePerCustomer": true,
        "combinesWith": {
          "orderDiscounts": true,
          "productDiscounts": true,
          "shippingDiscounts": true
        },
        "startsAt": "2021-02-02T17:09:21Z",
        "endsAt": "2022-02-02T17:09:21Z",
        "usageLimit": 1,
        "metafields": [
          {
            "namespace": "default",
            "key": "function-configuration",
            "type": "json",
            "value": "{\"discounts\":[{\"value\":{\"fixedAmount\":{\"amount\":5}},\"targets\":\n                      [{\"orderSubtotal\":{\"excludedVariantIds\":[]}}]}],\"discountApplicationStrategy\":\"FIRST\"}"
          }
        ]
      }
    },
  },
});
use Shopify\Clients\Graphql;

$client = new Graphql("your-development-store.myshopify.com", $accessToken);
$query = <<<QUERY
  mutation discountCodeAppCreate($codeAppDiscount: DiscountCodeAppInput!) {
    discountCodeAppCreate(codeAppDiscount: $codeAppDiscount) {
      codeAppDiscount {
        discountId
        title
        appDiscountType {
          description
          functionId
        }
        combinesWith {
          orderDiscounts
          productDiscounts
          shippingDiscounts
        }
        codes(first: 100) {
          nodes {
            code
          }
        }
        status
        usageLimit
      }
      userErrors {
        field
        message
      }
    }
  }
QUERY;

$variables = [
  "codeAppDiscount" => [
    "code" => "APP_DISCOUNT",
    "title" => "Take 5$ from order discount",
    "functionId" => "b42a026e-f96f-4423-938b-54ade7a21161",
    "appliesOncePerCustomer" => true,
    "combinesWith" => [
      "orderDiscounts" => true,
      "productDiscounts" => true,
      "shippingDiscounts" => true,
    ],
    "startsAt" => "2021-02-02T17:09:21Z",
    "endsAt" => "2022-02-02T17:09:21Z",
    "usageLimit" => 1,
    "metafields" => [{"namespace"=>"default", "key"=>"function-configuration", "type"=>"json", "value"=>"{\"discounts\":[{\"value\":{\"fixedAmount\":{\"amount\":5}},\"targets\":\n                      [{\"orderSubtotal\":{\"excludedVariantIds\":[]}}]}],\"discountApplicationStrategy\":\"FIRST\"}"}],
  ],
];

$response = $client->query(["query" => $query, "variables" => $variables]);
Hide code
Input variables
Copy
{
  "codeAppDiscount": {
    "code": "APP_DISCOUNT",
    "title": "Take 5$ from order discount",
    "functionId": "b42a026e-f96f-4423-938b-54ade7a21161",
    "appliesOncePerCustomer": true,
    "combinesWith": {
      "orderDiscounts": true,
      "productDiscounts": true,
      "shippingDiscounts": true
    },
    "startsAt": "2021-02-02T17:09:21Z",
    "endsAt": "2022-02-02T17:09:21Z",
    "usageLimit": 1,
    "metafields": [
      {
        "namespace": "default",
        "key": "function-configuration",
        "type": "json",
        "value": "{\"discounts\":[{\"value\":{\"fixedAmount\":{\"amount\":5}},\"targets\":\n                      [{\"orderSubtotal\":{\"excludedVariantIds\":[]}}]}],\"discountApplicationStrategy\":\"FIRST\"}"
      }
    ]
  }
}
Hide code
Response
JSON
{
  "discountCodeAppCreate": {
    "codeAppDiscount": {
      "discountId": "gid://shopify/DiscountCodeNode/1057371204",
      "title": "Take 5$ from order discount",
      "appDiscountType": {
        "description": "my function does a thing",
        "functionId": "9dfed7ac-5b56-4696-920a-796985c30509"
      },
      "combinesWith": {
        "orderDiscounts": true,
        "productDiscounts": true,
        "shippingDiscounts": true
      },
      "codes": {
        "nodes": [
          {
            "code": "APP_DISCOUNT"
          }
        ]
      },
      "status": "EXPIRED",
      "usageLimit": 1
    },
    "userErrors": []
  }
}