# Upsert a coupon

Creates or updates (upserts) a coupon with a specified coupon ID.

Endpoint: PUT /coupons/{id}
Version: latest
Security: SecretApiKey, JWT, ApplicationJWT

## Path parameters:

  - `id` (string, required)
    ID of the resource.

## Request fields (application/json):

  - `discount` (any, required)

  - `restrictions` (array)
    Coupon restrictions.
All type values in this array must be unique.

  - `description` (string)
    Description of the coupon.
Use this field to provide a description for the invoice discount item.

If this field is empty,
the invoice discount item description uses the related coupon ID,
in the following format: Coupon "COUPON-ID".

  - `issuedTime` (string, required)
    Date and time when the coupon is issued.
This value may also be described as start time of the coupon.

  - `expiredTime` (string,null)
    Date and time when the coupon expires.

## Response 200 fields (application/json):

  - `id` (string)
    ID of the coupon.
This value is also known as the coupon redemption code.
    Example: "cpn_0YVCNKF81GD778N4YNVGDJK558"

  - `discount` (any, required)

  - `restrictions` (array)
    Coupon restrictions.
All type values in this array must be unique.

  - `redemptionsCount` (integer)
    Total number of times that a coupon is redeemed.

  - `status` (string)
    Specifies the current status of the coupon.
    Enum: "draft", "issued", "expired"

  - `description` (string)
    Description of the coupon.
Use this field to provide a description for the invoice discount item.

If this field is empty,
the invoice discount item description uses the related coupon ID,
in the following format: Coupon "COUPON-ID".

  - `issuedTime` (string, required)
    Date and time when the coupon is issued.
This value may also be described as start time of the coupon.

  - `expiredTime` (string,null)
    Date and time when the coupon expires.

  - `revision` (integer)
    Number of times the coupon data has been modified.

Use the revision number when analyzing webhook data to
determine if a change should take precedence over the current
representation.

  - `createdTime` (string)
    Date and time when the resource is created.
This value is set automatically when the resource is created.

  - `updatedTime` (string)
    Date and time when the resource is updated.
This value is set automatically when the resource is updated.

  - `_links` (array)
    Related links.

  - `_links.href` (string)
    Link URL.

  - `_links.rel` (string)
    Type of link.
    Enum: "self"

## Response 201 fields (application/json):

  - `id` (string)
    ID of the coupon.
This value is also known as the coupon redemption code.
    Example: "cpn_0YVCNKF81GD778N4YNVGDJK558"

  - `discount` (any, required)

  - `restrictions` (array)
    Coupon restrictions.
All type values in this array must be unique.

  - `redemptionsCount` (integer)
    Total number of times that a coupon is redeemed.

  - `status` (string)
    Specifies the current status of the coupon.
    Enum: "draft", "issued", "expired"

  - `description` (string)
    Description of the coupon.
Use this field to provide a description for the invoice discount item.

If this field is empty,
the invoice discount item description uses the related coupon ID,
in the following format: Coupon "COUPON-ID".

  - `issuedTime` (string, required)
    Date and time when the coupon is issued.
This value may also be described as start time of the coupon.

  - `expiredTime` (string,null)
    Date and time when the coupon expires.

  - `revision` (integer)
    Number of times the coupon data has been modified.

Use the revision number when analyzing webhook data to
determine if a change should take precedence over the current
representation.

  - `createdTime` (string)
    Date and time when the resource is created.
This value is set automatically when the resource is created.

  - `updatedTime` (string)
    Date and time when the resource is updated.
This value is set automatically when the resource is updated.

  - `_links` (array)
    Related links.

  - `_links.href` (string)
    Link URL.

  - `_links.rel` (string)
    Type of link.
    Enum: "self"

## Response 401 fields (application/json):

  - `status` (integer)
    HTTP status code.

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.

## Response 404 fields (application/json):

  - `status` (integer)
    HTTP status code.

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.

## Response 409 fields (application/json):

  - `status` (integer)
    HTTP status code.

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.

## Response 422 fields (application/json):

  - `status` (integer)
    HTTP status code.

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.

  - `invalidFields` (array)
    Invalid field details.

  - `invalidFields.field` (string)
    Name of the field.
Dot notation is used for nested object field names.

  - `invalidFields.message` (string)
    Message field.

## Response 429 fields (application/json):

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".
    Example: "about:blank"

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.
    Example: "Rate Limit Exceeded"

  - `status` (integer)
    HTTP status code.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.
    Example: "A request cannot be executed because the user has sent too many requests within a certain period of time"

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.


