09. Advanced Attributes
FORMAT: 1A
# Advanced Attributes API
Improving the previous [Attributes](08.%20Attributes.md) description example,
this API example describes the `Coupon` resource attributes (data structure)
regardless of the serialization format. These attributes can be later
referenced using the resource name.
These attributes are then reused in the `Retrieve a Coupon` action. Since they
describe the complete message, no explicit JSON body example is needed.
Moving forward, the `Coupon` resource data structure is then reused when
defining the attributes of the coupons collection resource – `Coupons`.
The `Create a Coupon` action also demonstrate the description of request
attributes – once defined, these attributes are implied on every `Create a
Coupon` request unless the request specifies otherwise. Apparently, the
description of action attributes is somewhat duplicate to the definition of
`Coupon` resource attributes. We will address this in the next
[Data Structures](10.%20Data%20Structures.md) example.
# Group Coupons
## Coupon [/coupons/{id}]
A coupon contains information about a percent-off or amount-off discount you
might want to apply to a customer.
+ Parameters
+ id (string)
The ID of the desired coupon.
+ Attributes (object)
+ id: 250FF (string, required)
+ created: 1415203908 (number) - Time stamp
+ percent_off: 25 (number)
A positive integer between 1 and 100 that represents the discount the coupon will apply.
+ redeem_by (number) - Date after which the coupon can no longer be redeemed
### Retrieve a Coupon [GET]
Retrieves the coupon with the given ID.
+ Response 200 (application/json)
+ Attributes (Coupon)
## Coupons [/coupons{?limit}]
+ Attributes (array[Coupon])
### List all Coupons [GET]
Returns a list of your coupons.
+ Parameters
+ limit (number, optional)
A limit on the number of objects to be returned. Limit can range
between 1 and 100 items.
+ Default: `10`
+ Response 200 (application/json)
+ Attributes (Coupons)
### Create a Coupon [POST]
Creates a new Coupon.
+ Attributes (object)
+ percent_off: 25 (number)
+ redeem_by (number)
+ Request (application/json)
+ Response 200 (application/json)
+ Attributes (Coupon)