# Get promo code promotion

Gets a specified promo code promotion.

Endpoint: GET /v3/project/{project_id}/admin/promocode/{external_id}
Version: 2.0.0
Security: basicAuth

## Path parameters:

  - `project_id` (integer, required)
    Project ID. You can find this parameter in your Publisher Account next to the project name and in the browser address bar when working with a project. The URL has the following format: https://publisher.xsolla.com//projects/.
    Example: 44056

  - `external_id` (integer, required)
    Promotion external ID. Unique promotion identifier within the project.
    Example: "coupon_44056_1"

## Response 200 fields (application/json):

  - `external_id` (string)
    Unique promotion ID. The external_id may contain only lowercase and uppercase Latin alphanumeric characters, periods, dashes, and underscores.

  - `promotion_periods` (array)
    Promotion validity periods. If multiple periods are specified, both date_from and date_until are required.

  - `promotion_periods.date_from` (string, required)
    Start date for the specified promotion.
    Example: "2020-08-11T10:00:00+03:00"

  - `promotion_periods.date_until` (string,null)
    End date for the specified promotion. If set to null, the promotion is indefinite. Can be null only if a single validity period is specified.
    Example: "2020-08-11T20:00:00+03:00"

  - `name` (object)
    Name of promotion. Should contain key/value pairs
where key is a locale with "^[a-z]{2}-[A-Z]{2}$" format, value is string.

  - `bonus` (array,null)

  - `bonus.sku` (string)
    Item SKU.

  - `bonus.quantity` (number)
    Item quantity.

  - `is_enabled` (boolean)

  - `redeem_total_limit` (integer,null)
    Limits total numbers of coupons.

  - `redeem_user_limit` (integer,null)
    Limits total numbers of coupons redeemed by single user.

  - `redeem_code_limit` (integer,null)
    Number of redemptions per code.

  - `discount` (object,null)
    Example: {"discount":{"percent":"10.99"}}

  - `discount.percent` (string,null)
    Percent discount.
The price of cart will be decreased using a value calculated by using this percent and then rounded to 2 decimal places.

  - `discounted_items` (array,null)
    List of items that are discounted by a promo code.

  - `discounted_items.sku` (string, required)
    Item SKU.

  - `discounted_items.discount` (object, required)

  - `discounted_items.discount.percent` (string, required)
    Percent discount.

The price of cart item will be decreased using a value
calculated by using this percent and then rounded
to 2 decimal places.

  - `total_limit_state` (object,null)
    Limits for each unique promo code.

  - `total_limit_state.available` (integer)
    The remaining number of times a promo code can be used.
    Example: 3

  - `total_limit_state.reserved` (integer)
    The reserved number of a promo code.
    Example: 3

  - `total_limit_state.used` (integer)
    The number of times a promo code is used.
    Example: 5

  - `attribute_conditions` (array)
    Conditions for validating user attributes.
Determine promotion availability based on whether user attributes match all specified conditions.

  - `price_conditions` (array,null)
    Array of objects with conditions that set the price range for applying the promotion to the entire cart.
The total price of all items in the user's cart is compared with the price range specified in the condition. [Bonuses](/api/shop-builder/operation/create-promo-code/#!path=bonus&t=request) and [discounts](/api/shop-builder/operation/create-promo-code/#!path=discount&t=request) are applied to all items in the cart if the price of the cart meets the specified condition.
If you pass this array, set the value of the [discounted_items](/api/shop-builder/operation/create-promo-code/#!path=discounted_items&t=request) array to null.

  - `price_conditions.operator` (string, required)
    Comparison operator for setting the price range for applying the promotion.

Possible values:
- ge — Greater or equal
- gt — Greater than
- le — Less or equal
- lt — Less than
- eq — Equals
- ne — Not equals
    Enum: "ge", "gt", "le", "lt", "eq", "ne"

  - `price_conditions.value` (string, required)
    Value for determining the price range for applying the promotion.

  - `item_price_conditions` (array,null)
    Array of objects with conditions that set the price range for applying the promotion to certain items in the cart.
The price of each item in the user's cart is compared with the price range specified in the condition. [Bonuses](/api/shop-builder/operation/create-promo-code/#!path=bonus&t=request) and [discounts](/api/shop-builder/operation/create-promo-code/#!path=discount&t=request) are applied only to those items in the cart whose price meets the condition.
If you pass this array, set the value of the [discounted_items](/api/shop-builder/operation/create-promo-code/#!path=discounted_items&t=request) array to null.

  - `item_price_conditions.operator` (string, required)
    Comparison operator for setting the price range for applying the promotion.

Possible values:
- ge — Greater or equal
- gt — Greater than
- le — Less or equal
- lt — Less than
- eq — Equals
- ne — Not equals
    Enum: "ge", "gt", "le", "lt", "eq", "ne"

  - `item_price_conditions.value` (string, required)
    Value for determining the price range for applying the promotion.

  - `excluded_promotions` (array)
    List of promotion IDs to exclude when applying this promotion. Example: [12, 789]

## Response 401 fields (application/json):

  - `statusCode` (integer)
    Example: 401

  - `errorCode` (integer)
    Example: 1020

  - `errorMessage` (string)
    Example: "[0401-1020]: Error in Authentication method occurred"

## Response 404 fields (application/json):

  - `statusCode` (integer)
    Example: 404

  - `errorCode` (integer)
    Example: 4001

  - `errorMessage` (string)
    Example: "[0401-9802]: Promocode not found"

  - `transactionId` (string)
    Example: "x-x-x-x-transactionId-mock-x-x-x"


