@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Giftcard API
@base https://apiexamples.vtexcommercestable.com.br/api
@version 1.0
@auth ApiKey X-VTEX-API-AppKey in header | ApiKey X-VTEX-API-AppToken in header | ApiKey VtexIdclientAutCookie in header
@common_fields {Content-Type: str=application/json # Type of the content being sent., Accept: str=application/json # HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.}
@endpoints 11
@toc giftcards(11)

@endpoint POST /giftcards
@desc Create a gift card
@returns(200) {id: str, redemptionToken: str, redemptionCode: str, balance: num, relationName: str, emissionDate: str, expiringDate: str, caption: str, currencyCode: str, transactions: map{href: str}} # OK

@endpoint GET /giftcards/{giftCardId}
@desc Get a gift card by ID
@required {giftCardId: str # Gift card identification.}
@returns(200) {id: str, redemptionToken: str, redemptionCode: str, balance: num, emissionDate: str, expiringDate: str, currencyCode: str, transactions: map{href: str}} # OK

@endpoint POST /giftcards/_search
@desc List all gift cards
@required {cart: map{grandTotal!: int, relationName!: str, redemptionCode!: str, discounts!: int, shipping!: int, taxes!: int, items!: [map], itemsTotal!: int} # Cart information., client: map{id!: str, email!: str, document!: str} # Client information.}
@optional {REST-Range: str=resources=0-49 # Pagination control. This query variable must follow the format _resources={from}-{to}_.}
@returns(200) {items: [map], paging: map{page: int, perPage: int, total: int, pages: int}} # OK

@endpoint GET /giftcards/{giftCardId}/transactions
@desc List all gift card transactions
@required {giftCardId: str # Gift card identification.}
@returns(200) OK

@endpoint POST /giftcards/{giftCardId}/transactions
@desc Create a gift card transaction
@required {giftCardId: str # Gift card identification., operation: str # Type of operation. Possible values are: `Debit` or `Credit`., value: num(decimal) # Operation value., description: str # Description information., redemptionToken: str # Gift card redemption token., redemptionCode: str # Gift card identification code used at checkout. Minimum of 6 characters., requestId: str # Request identification of the transaction. You need to send a different `requestId` value every time you make a new transaction. If you send the same `requestId`two or more times with a specific `redemptionCode`or `redemptionToken`, the gift card balance will not be updated.}
@optional {orderInfo: map{orderId: str, sequence: int, cart: map, clientProfile: map, shipping: map} # Order information.}
@returns(200) {id: str, _self: map{href: str}} # OK

@endpoint GET /giftcards/{giftCardId}/transactions/{transactionId}
@desc Get a gift card transaction by ID
@required {giftCardId: str # Gift card identification., transactionId: str # Transaction identification.}
@returns(200) {value: num, description: str, date: str, requestId: str, settlement: map{href: str}, cancellation: map{href: str}, authorization: map{href: str}, operation: str} # OK

@endpoint GET /giftcards/{giftCardId}/transactions/{transactionId}/authorization
@desc Get a gift card transaction authorization
@required {giftCardId: str # Gift card identification., transactionId: str # Transaction identification.}
@returns(200) {oid: str, value: num, date: str} # OK

@endpoint GET /giftcards/{giftCardId}/transactions/{transactionId}/cancellations
@desc List all gift card transactions cancellations
@required {giftCardId: str # Gift card identification., transactionId: str # Transaction identification.}
@returns(200) OK

@endpoint POST /giftcards/{giftCardId}/transactions/{transactionId}/cancellations
@desc Cancel a gift card transaction
@required {giftCardId: str # Gift card identification., transactionId: str # Transaction identification., value: num # Value information., requestId: str # VTEX request identifier.}
@returns(200) {oid: str, value: num, date: str} # OK

@endpoint GET /giftcards/{giftCardId}/transactions/{transactionId}/settlements
@desc List all gift card transactions settlements
@required {giftCardId: str # Gift card identification., transactionId: str # Transaction identification.}
@returns(200) OK

@endpoint POST /giftcards/{giftCardId}/transactions/{transactionId}/settlements
@desc Settle a gift card transaction
@required {giftCardId: str # Gift card identification., transactionId: str # Transaction identification., value: num # Value information., requestId: str # VTEX request identifier.}
@returns(200) {oid: str, value: num, date: str} # OK
@example_request {"value":17.4,"requestId":"6360f98eb0cf6fd5afa77e39bba8c20fe5807d8c"}

@end
