xclade
Admin APIPromotions

Create Promotion

Create a promotion.

POST
/admin/promotions
AuthorizationBearer <token>

In: header

Query Parameters

fields?string

Comma-separated fields that should be included in the returned data. if a field is prefixed with + it will be added to the default fields, using - will remove it from the default fields. without prefix it will replace the entire default fields.

Request Body

application/json

code*string

The promotion's code.

is_automatic?boolean

Whether the promotion is applied automatically.

type*string

The promotion's type.

Value in"standard" | "buyget"
campaign_id*string

The ID of the campaign that the promotion belongs to.

campaign?

The details of a campaign to create and add the promotion to it.

application_method*

The promotion's application method.

rules?

The promotion's rules.

additional_data?object

Pass additional custom data to the API route. This data is passed to the underlying workflow under the additional_data parameter.

Response Body

application/json

application/json

text/plain

application/json

application/json

application/json

application/json

curl -X POST "https://{tenant}.api.myxclade.com/admin/promotions" \  -H "Content-Type: application/json" \  -d '{    "code": "string",    "type": "standard",    "campaign_id": "string",    "application_method": {      "description": "string",      "value": 0,      "currency_code": "string",      "max_quantity": 0,      "type": "fixed",      "target_type": "order",      "apply_to_quantity": 0,      "buy_rules_min_quantity": 0    }  }'
{
  "promotion": {
    "application_method": {
      "promotion": {},
      "target_rules": [
        {
          "id": "string",
          "description": "string",
          "attribute": "customer_group_id",
          "operator": "gt",
          "values": [
            "cusgroup_123"
          ]
        }
      ],
      "buy_rules": [
        {
          "id": "string",
          "description": "string",
          "attribute": "customer_group_id",
          "operator": "gt",
          "values": [
            "cusgroup_123"
          ]
        }
      ],
      "id": "string",
      "type": "fixed",
      "target_type": "items",
      "allocation": "each",
      "value": 0,
      "currency_code": "usd",
      "max_quantity": 0,
      "buy_rules_min_quantity": 0,
      "apply_to_quantity": 0
    },
    "rules": [
      {
        "id": "string",
        "description": "string",
        "attribute": "customer_group_id",
        "operator": "gt",
        "values": [
          "cusgroup_123"
        ]
      }
    ],
    "id": "string",
    "code": "OFF50",
    "type": "standard",
    "is_automatic": true,
    "campaign_id": "string",
    "campaign": {
      "id": "string",
      "name": "string",
      "description": "string",
      "currency": "string",
      "campaign_identifier": "string",
      "starts_at": "string",
      "ends_at": "string",
      "budget": {
        "id": "string",
        "type": "spend",
        "currency_code": "string",
        "limit": 0,
        "used": 0,
        "attribute": "string"
      },
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z",
      "deleted_at": "2019-08-24T14:15:22Z"
    },
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z",
    "deleted_at": "2019-08-24T14:15:22Z",
    "status": "draft",
    "is_tax_inclusive": true
  }
}

{
  "message": "Discount must be set to dynamic",
  "type": "not_allowed"
}

"Unauthorized"
{
  "message": "Entity with id 1 was not found",
  "type": "not_found"
}
{
  "code": "unknown_error",
  "message": "The request conflicted with another request. You may retry the request with the provided Idempotency-Key.",
  "type": "QueryRunnerAlreadyReleasedError"
}
{
  "code": "invalid_request_error",
  "message": "Discount with code TEST already exists.",
  "type": "duplicate_error"
}

{
  "code": "api_error",
  "message": "An error occured while hashing password",
  "type": "database_error"
}