Tremendous

Gift cards and payouts platform

developers.tremendous.com ↗
Version
2
OpenAPI
3.0.2
Endpoints
36
Schemas
228
Updated
3 days ago
Payments payments gift-cards rewards
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

https://testflight.tremendous.com/api/v2
https://www.tremendous.com/api/v2

Authentication

bearer

Endpoints

Balance transactions 1 endpoints

GET /balance_transactions

Fetch a list of all balance transactions on your account.

operationId: BalanceTransactions_listAll

Parameters

Name In Required Type Description
offset query optional integer Offsets the returned list by the given number of transactions. The returned transactions are ordered (and offsetted) by their creation date (DESC).
limit query optional integer Limits the number of transactions listed. The default value is 10.
created_at[gte] query optional string Only return results where the created_at field is greater than or equal to the supplied value. The string needs to be an ISO 8601 datetime.
created_at[lte] query optional string Only return results where the created_at field is less than or equal to the supplied value. The string needs to be an ISO 8601 datetime.

Responses

200 List of all transactions on this account
401 Authorization error e.g. due to an invalid or missing API key.
422 Validation error of the sent parameters or request body
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /balance_transactions

Campaigns 2 endpoints

GET /campaigns

Retrieve a list of all campaigns created in your account

operationId: Campaigns_getAll

Responses

200 List of all campaigns in your organization's account.
401 Authorization error e.g. due to an invalid or missing API key.
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /campaigns
GET /campaigns/{id}

Retrieve a campaign, identified by the given `id` in the URL

operationId: Campaigns_getById

Parameters

Name In Required Type Description
id path required string ID of the campaign that should be retrieved

Responses

200 Requested campaign
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /campaigns/{id}

Fields 1 endpoints

GET /fields

For reporting and analytics purposes, custom fields can be associated with rewards generated through the API. Custom fields must be first added by members of your admin team through the Tremendous Dashboard.

operationId: Fields_getCustomFields

Responses

200 List of all fields
401 Authorization error e.g. due to an invalid or missing API key.
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /fields

Funding sources 2 endpoints

GET /funding_sources

Retrieve a list of all funding sources available for ordering through the API in your organization's account.

operationId: FundingSources_getAll

Responses

200 List of all funding sources available in your organization's account.
401 Authorization error e.g. due to an invalid or missing API key.
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /funding_sources
GET /funding_sources/{id}

Retrieve a funding source, identified by the given `id` in the URL

operationId: FundingSources_getById

Parameters

Name In Required Type Description
id path required string ID of the funding source that should be retrieved

Responses

200 Requested funding source
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /funding_sources/{id}

Invoices 6 endpoints

GET /invoices

Fetch a list of all invoices on your account. > 🚧 Deleted invoices are omitted > > The response does not include any previously deleted invoices.

operationId: Invoices_getAll

Parameters

Name In Required Type Description
offset query optional integer Offsets the returned list by the given number of invoices. The returned invoices are ordered (and offsetted) by their creation date (DESC).
limit query optional integer Limits the number of invoices listed. The maximum and default value is 10.

Responses

200 List of all invoices in state `PAID` or `OPEN`
401 Authorization error e.g. due to an invalid or missing API key.
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /invoices
POST /invoices

Creating an invoice is the way for your organization to fund your account's balance. 1. Create an invoice 2. Pay the invoice 3. Funds get added to your account's balance ## Request body <div class="object-schema-request-schema"> <table> <thead> <tr> <th>Property</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody class="object-schema-table-body"> <tr class=""><td><div class="property-name"> <code class="property-name">po_number</code> </div> </td><td><span class="property-type">string</span></td><td><p>Reference to the purchase order number within your organization</p> </td></tr> <tr class=""><td><div class="property-name"> <code class="property-name">amount</code> </div> </td><td><span class="property-type">number</span> <span class="property-format">double</span></td><td><p>Amount of the invoice in USD</p> </td></tr> <tr class=""><td><div class="property-name"> <code class="property-name">memo</code> </div> </td><td><span class="property-type">string</span></td><td><p>A note to be included in the invoice. This is for your internal use and will not be visible to the recipient.</p> </td></tr> </tbody> </table> </div>

operationId: Invoices_createAndFundAccountBalance

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/InvoicesCreateAndFundAccountBalanceRequest"
      }
    }
  },
  "required": true,
  "description": "Invoice details"
}

Responses

200 An invoice (to be overwritten in specific reponses)
400 The invoice couldn't be created
401 Authorization error e.g. due to an invalid or missing API key.
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
POST /invoices
DELETE /invoices/{id}

Removes an invoice. This has no further consequences but is a rather cosmetic operation.

operationId: Invoices_removeInvoice

Parameters

Name In Required Type Description
id path required string ID of the invoice that should be retrieved

Responses

200 An invoice (to be overwritten in specific reponses)
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
DELETE /invoices/{id}
GET /invoices/{id}

Retrieve an invoice, identified by the given `id` in the URL > 📘 Deleted Invoices > > This endpoint can be used to retrieve details on deleted invoices > that the list of invoices omits.

operationId: Invoices_getById

Parameters

Name In Required Type Description
id path required string ID of the invoice that should be retrieved

Responses

200 An invoice (to be overwritten in specific reponses)
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /invoices/{id}
GET /invoices/{id}/csv

Generates a CSV version for an invoice listing the associated rewards and orders

operationId: Invoices_getCsv

Parameters

Name In Required Type Description
id path required string ID of the Invoice for that the CSV should be generated

Responses

200 CSV for the specified Invoice
400 The invoice can't be exported to CSV because it isn't associated with any rewards
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /invoices/{id}/csv
GET /invoices/{id}/pdf

Generates a PDF version for an invoice

operationId: Invoices_getPdf

Parameters

Name In Required Type Description
id path required string ID of the Invoice for that the PDF should be generated

Responses

200 PDF for the specified Invoice
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /invoices/{id}/pdf

Members 3 endpoints

GET /members

To list members of a sub-organization [create an API key for that organization](https://developers.tremendous.com/) first, then use the new API key in the list members request.

operationId: Members_listMembers

Responses

200 List of all members
401 Authorization error e.g. due to an invalid or missing API key.
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /members
POST /members

Each organization has one or more users that can access and manage that organization. These users are called members. Members can take actions via the Tremendous web dashboard directly. These actions include adding funding sources to the organization, creating Campaigns, and more. ### Permissions Members can have one of two roles that determine their permissions within the organization: 1. `MEMBER`: Limited permissions. Can view their own reward and order histories only. 2. `ADMIN`: Update organization settings, invite other members to the organization, and view all member order and reward histories within their organization. To create members of a sub-organizations [create an API key for that organization](https://developers.tremendous.com/) first, then use the new API key in the create member request. ### Inviting new members After creating a member, an automatic invite is sent to the email address. If the user is not registered yet, that person will then need to sign up for a Tremendous account. > ❗️ Automatic invitations are not available in the sandbox > > You must manually use the returned `invite_url` field in the payload instead.

operationId: Members_createNewMember

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/MembersCreateNewMemberRequest"
      }
    }
  },
  "required": true,
  "description": "Member details"
}

Responses

200 A member (to be overwritten in specific responses)
400 Validation error of the sent parameters or request body
401 Authorization error e.g. due to an invalid or missing API key.
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
POST /members
GET /members/{id}
operationId: Members_getMember

Parameters

Name In Required Type Description
id path required string ID of the member to retrieve

Responses

200 Details on the retrieved member
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /members/{id}

Orders 5 endpoints

POST /order_approvals/{id}/approve

Approves an order that is pending review, identified by the given `id` in the URL. Approvals is a feature that requires orders to be approved by an organization admin before they are sent out. To enable approvals for your organization, please enable 'Allow approvals via API' via the organization''s 'Order Approvals' settings from the Tremendous dashboard.

operationId: Orders_approveOrderById

Parameters

Name In Required Type Description
id path required string ID of the order that should be approved. In case the order has an `external_id` reference supplied by the customer on creation, it's possible to use it instead.

Responses

200 An order (to be overwritten in specific reponses)
401 Authorization error e.g. due to an invalid or missing API key.
402 Not enough funds in your account. Please send another approval request after you have deposited sufficient funds into your balance.
403 API approvals are not enabled. Enable 'Allow approvals via API' in the organization's settings on the Tremendous dashboard.
404 No resource could be found for the provided ID
422 Validation error of the sent parameters or request body
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
POST /order_approvals/{id}/approve
POST /order_approvals/{id}/reject

Rejects an order that is pending review, identified by the given `id` in the URL. Approvals is a feature that requires orders to be approved by an organization admin before they are sent out. To enable approvals for your organization, please enable 'Allow approvals via API' via the organization''s 'Order Approvals' settings from the Tremendous dashboard.

operationId: Orders_rejectById

Parameters

Name In Required Type Description
id path required string ID of the order that should be rejected. In case the order has an `external_id` reference supplied by the customer on creation, it's possible to use it instead.

Responses

200 An order (to be overwritten in specific reponses)
401 Authorization error e.g. due to an invalid or missing API key.
403 API approvals are not enabled for this organization. Enable "Allow approvals via API" via the organization's order approval settings from the Tremendous dashboard.
404 No resource could be found for the provided ID
422 Validation error of the sent parameters or request body
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
POST /order_approvals/{id}/reject
GET /orders

Retrieve a list of orders

operationId: Orders_getList

Parameters

Name In Required Type Description
offset query optional integer Offsets the returned list by the given number of orders. The returned orders are ordered (and offsetted) by their creation date (DESC).
campaign_id query optional string Only return results with a matching campaign_id.
external_id query optional string Only return results with a matching external_id.
created_at[gte] query optional string Only return results where the created_at field is greater than or equal to the supplied value. The string needs to be an ISO 8601 datetime.
created_at[lte] query optional string Only return results where the created_at field is less than or equal to the supplied value. The string needs to be an ISO 8601 datetime.
limit query optional integer Limits the number of orders listed. The maximum value is 100 and the default is 10.

Responses

200 List of existing orders. Ordered by creation date (DESC).
401 Authorization error e.g. due to an invalid or missing API key.
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /orders
POST /orders

Every time you want to send out a reward through Tremendous you need to create an order for it. > 📘 Getting started with your first order > > Our step-by-step guide walks you through everything you need > to send your first gift card through the Tremendous API: > > <strong><a style="display: block; margin-top: 20px;" href="/docs/sending-rewards-intro">Check it out!</a></strong> ## Request body <div class="object-schema-request-schema"> <table> <thead> <tr> <th>Property</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody class="object-schema-table-body"> <tr class=""><td><div class="property-name"> <code class="property-name">external_id</code> </div> </td><td><span class="property-type">string</span></td><td><p>Reference for this order, supplied by the customer.</p> <p>When set, <code>external_id</code> makes order idempotent. All requests that use the same <code>external_id</code> after the initial order creation, will result in a response that returns the data of the initially created order. The response will have a <code>201</code> response code. These responses <strong>fail</strong> to create any further orders.</p> <p>It also allows for retrieving by <code>external_id</code> instead of <code>id</code> only.</p> </td></tr> <tr class=""><td><div class="property-name"> <code class="property-name">payment</code> </div> </td><td><span class="property-type">object</span></td><td></td></tr> <tr> <td colspan="3"> <details> <summary>Show object properties</summary> <table> <thead> <tr> <th>Property</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody class="object-schema-table-body"> <tr class=""><td><div class="property-name"> <code class="property-name">funding_source_id</code> </div> </td><td><span class="property-type">string</span></td><td><p>Tremendous ID of the funding source that will be used to pay for the order. Use <code>balance</code> to use your Tremendous&#39;s balance.</p> </td></tr> </tbody> </table> </tr> <tr class=""><td><div class="property-name"> <code class="property-name">reward</code> </div> </td><td><span class="property-type">object</span></td><td><p>A single reward, sent to a recipient. A reward is always part of an order.</p> <p>Either <code>products</code> or <code>campaign_id</code> must be specified.</p> </td></tr> <tr> <td colspan="3"> <details> <summary>Show object properties</summary> <table> <thead> <tr> <th>Property</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody class="object-schema-table-body"> <tr class="property-conditional-hint-response-only"><td><div class="property-name"> <code class="property-name">id</code> </div> </td><td><span class="property-type">string</span></td><td><p>Tremendous ID of the reward</p> </td></tr> <tr class="property-conditional-hint-response-only"><td><div class="property-name"> <code class="property-name">order_id</code> </div> </td><td><span class="property-type">string</span></td><td><p>Tremendous ID of the order this reward is part of.</p> </td></tr> <tr class="property-conditional-hint-response-only"><td><div class="property-name"> <code class="property-name">created_at</code> </div> </td><td><span class="property-type">string</span> <span class="property-format">date-time</span></td><td><p>Date the reward was created</p> </td></tr> <tr class="property-conditional-hint-request-only"><td><div class="property-name"> <code class="property-name">campaign_id</code> </div> </td><td><span class="property-type">string</span></td><td><p>ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.) that the recipient can choose from.</p> </td></tr> <tr class="property-conditional-hint-request-only"><td><div class="property-name"> <code class="property-name">products</code> </div> </td><td><span class="property-type">array</span> <span class="property-format">string</span></td><td><p>List of IDs of product (different gift cards, charity, etc.) that will be available to the recipient to choose from.</p> <p>Providing a <code>products</code> array will override the products made available by the campaign specified using the <code>campaign_id</code> property unless the <code>products</code> array is empty. It will <em>not</em> override other campaign attributes, like the message and customization of the look and feel.</p> </td></tr> <tr class=""><td><div class="property-name"> <code class="property-name">value</code> </div> </td><td><span class="property-type">object</span></td><td></td></tr> <tr> <td colspan="3"> <details> <summary>Show object properties</summary> <table> <thead> <tr> <th>Property</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody class="object-schema-table-body"> <tr class=""><td><div class="property-name"> <code class="property-name">denomination</code> </div> </td><td><span class="property-type">number</span> <span class="property-format">double</span></td><td><p>Amount of the reward</p> </td></tr> <tr class=""><td><div class="property-name"> <code class="property-name">currency_code</code> </div> </td><td><span class="property-type">string</span></td><td><p>Currency of the reward</p> </td></tr> </tbody> </table> </tr> <tr class=""><td><div class="property-name"> <code class="property-name">recipient</code> </div> </td><td><span class="property-type">object</span></td><td><p>Details of the recipient of the reward</p> </td></tr> <tr> <td colspan="3"> <details> <summary>Show object properties</summary> <table> <thead> <tr> <th>Property</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody class="object-schema-table-body"> <tr class=""><td><div class="property-name"> <code class="property-name">name</code> </div> </td><td><span class="property-type">string</span></td><td><p>Name of the recipient</p> </td></tr> <tr class=""><td><div class="property-name"> <code class="property-name">email</code> </div> </td><td><span class="property-type">string</span></td><td><p>Email address of the recipient</p> </td></tr> <tr class=""><td><div class="property-name"> <code class="property-name">phone</code> </div> </td><td><span class="property-type">string</span></td><td><p>Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +).</p> </td></tr> </tbody> </table> </tr> <tr class=""><td><div class="property-name"> <code class="property-name">deliver_at</code> </div> </td><td><span class="property-type">string</span> <span class="property-format">date</span></td><td><p>Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored.</p> </td></tr> <tr class=""><td><div class="property-name"> <code class="property-name">custom_fields</code> </div> </td><td><span class="property-type">array</span></td><td></td></tr> <tr> <td colspan="3"> <details> <summary>Show array item type</summary> <table> <thead> <tr> <th>Property</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody class="object-schema-table-body"> <tr class=""><td><div class="property-name"> <code class="property-name">id</code> </div> </td><td><span class="property-type">string</span></td><td><p>Tremendous ID of the custom field</p> </td></tr> <tr class=""><td><div class="property-name"> <code class="property-name">value</code> </div> </td><td><span class="property-type">string</span></td><td><p>Value of the custom field</p> </td></tr> <tr class=""><td><div class="property-name"> <code class="property-name">label</code> </div> </td><td><span class="property-type">string</span></td><td><p>Label of the custom field</p> </td></tr> </tbody> </table> </tr> <tr class=""><td><div class="property-name"> <code class="property-name">language</code> </div> </td><td><span class="property-type">string</span></td><td><p>Set this to translate the redemption experience for this reward. Pass a 2-letter <a href="https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes">ISO-639-1 code</a> for the desired language. Defaults to <code>en</code>.</p> </td></tr> <tr class=""><td><div class="property-name"> <code class="property-name">delivery</code> </div> </td><td><span class="property-type">object</span></td><td><p>Details on how the reward is delivered to the recipient.</p> </td></tr> <tr> <td colspan="3"> <details> <summary>Show object properties</summary> <table> <thead> <tr> <th>Property</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody class="object-schema-table-body"> <tr class=""><td><div class="property-name"> <code class="property-name">method</code> </div> </td><td><span class="property-type">string</span></td><td><p>How to deliver the reward to the recipient.</p> <table> <thead> <tr> <th>Delivery Method</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><code>EMAIL</code></td> <td>Deliver the reward to the recipient by email</td> </tr> <tr> <td><code>LINK</code></td> <td> <p>Deliver the reward to the recipient via a link.</p> <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be delivered to the recipient out-of-band.</p> </td> </tr> <tr> <td><code>PHONE</code></td> <td>Deliver the reward to the recipient by SMS</td> </tr> </tbody> </table> </td></tr> </tbody> </table> </tr> </tbody> </table> </tr> </tbody> </table> </div> ### Funding sources There are different ways to pay for gift cards and rewards on Tremendous. Every payment mechanism is called a "funding source". You can retrieve a list of all available funding sources by using the [Funding sources API endpoint](https://tremendous.readme.io/reference/core-funding-source-index). The Tremendous API sandbox environment comes with a single funding source that allows you to spend up to $5,000 in *fake money* to test the API. [Learn more about the sandbox environment](https://tremendous.readme.io/reference/sandbox). The HTTP status code `200` on the response will be used to indicate success. After processing successfully the reward gets queued to be delivered to it's recipient (for delivery method `EMAIL` and `PHONE`). Delivery will happen asynchronously, after the response has been sent. ### Idempotence Requests issued with the same external_id are idempotent. Submitting an order with an already existing `external_id`, will result in a `201` response code. In this case the response will return a representation of the already existing order in the response body.

operationId: Orders_createOrder

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/OrdersCreateOrderRequest"
      }
    }
  },
  "required": true,
  "description": "Order to create"
}

Responses

200 An order (to be overwritten in specific reponses)
201 An order (to be overwritten in specific reponses)
202 An order (to be overwritten in specific reponses)
400 Validation error of the sent parameters or request body
401 Authorization error e.g. due to an invalid or missing API key.
402 Not enough funds to carry out the request. Please top-up your account
422 Validation error of the sent parameters or request body
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
POST /orders
GET /orders/{id}

Retrieve the order, identified by the given `id` in the URL

operationId: Orders_getOrderById

Parameters

Name In Required Type Description
id path required string ID of the order that should be retrieved. In case the order has an `external_id` reference supplied by the customer on creation, it's possible to use it instead.

Responses

200 An order (to be overwritten in specific reponses)
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /orders/{id}

Organizations 4 endpoints

GET /organizations

The returned list only includes the organization to which the API key belongs to, that is used for the request.

operationId: Organizations_getList

Responses

200 List of all organizations
401 Authorization error e.g. due to an invalid or missing API key.
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /organizations
POST /organizations

Organizations are a way to separate different parts of your business within the same Tremendous account. You can assign users in your Tremendous team as members to any organization. Users can be members of multiple organizations at once. API keys belong to a single organization. The API key used in a request determines on behalf of which organization the request is carried out. **Important note:** When creating an organization, you are required to either pass `with_api_key` or `copy_settings[user]` in the request body as `true`. This ensures that your new Organization can either be accessed via the API or the Dashboard.

operationId: Organizations_createNewOrganization

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/OrganizationsCreateNewOrganizationRequest"
      }
    }
  },
  "required": true,
  "description": "Organization details"
}

Responses

200 The created organization
400 Validation error of the sent parameters or request body
401 Authorization error e.g. due to an invalid or missing API key.
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
POST /organizations
POST /organizations/create_api_key

Creates a new API key. The API key used to make the request will remain active. Created API keys are generated randomly and returned in the response. **You cannot retrieve them again.**

operationId: Organizations_createApiKey

Responses

200 The created API key
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
POST /organizations/create_api_key
GET /organizations/{id}
operationId: Organizations_getOrganization

Parameters

Name In Required Type Description
id path required string ID of the organization to retrieve

Responses

200 An organization (to be overwritten in specific responses)
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /organizations/{id}

Products 2 endpoints

GET /products

Retrieve a list of available products

operationId: Products_getList

Parameters

Name In Required Type Description
country query optional string Comma-separated list of [Alpha-2 country codes](https://www.iban.com/country-codes), used to only retrieve products available in the provided countries
currency query optional string Comma-separated list of [currency codes](https://www.iban.com/currency-codes), used to only retrieve products available in the provided currencies

Responses

200 List of available products.
401 Authorization error e.g. due to an invalid or missing API key.
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /products
GET /products/{id}

Retrieve a product, identified by the given `id` in the URL

operationId: Products_getById

Parameters

Name In Required Type Description
id path required string ID of the product that should be retrieved

Responses

200 Requested product
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /products/{id}

Rewards 5 endpoints

GET /rewards

Retrieve a list of all created rewards

operationId: Rewards_listAllRewards

Parameters

Name In Required Type Description
offset query optional integer Offsets the returned list by the given number of rewards. The returned rewards are ordered (and offsetted) by their creation date (DESC).

Responses

200 List of existing rewards. Ordered by creation date (DESC).
401 Authorization error e.g. due to an invalid or missing API key.
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /rewards
GET /rewards/{id}

Retrieve the reward, identified by the given `id` in the URL

operationId: Rewards_getSingleReward

Parameters

Name In Required Type Description
id path required string ID of the reward that should be retrieved

Responses

200 A reward (to be overwritten in specific reponses)
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /rewards/{id}
POST /rewards/{id}/generate_embed_token

Generate a temporary reward token identified by the `id` in the URL. These tokens are needed to render a reward when using [Tremendous Embed](https://github.com/tremendous-rewards/embed/blob/master/docs/documentation.md). The token is valid for 24 hours.

operationId: Rewards_generateEmbedToken

Parameters

Name In Required Type Description
id path required string ID of the reward

Responses

200 A redemption token for a reward
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
POST /rewards/{id}/generate_embed_token
POST /rewards/{id}/generate_link

Generate a redemption link for the reward identified by the `id` in the URL

operationId: Rewards_generateLink

Parameters

Name In Required Type Description
id path required string ID of the reward

Responses

200 A redemption link for a reward
401 Authorization error e.g. due to an invalid or missing API key.
403 Operation not permitted; only rewards that are of type link support this operation
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
POST /rewards/{id}/generate_link
POST /rewards/{id}/resend

Resends a reward, identified by the given `id` in the URL, to its recipient.

operationId: Rewards_resendRewardById

Parameters

Name In Required Type Description
id path required string ID of the reward that should be resent

Responses

200 Reward will be resent.
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
422 Validation error of the sent parameters or request body
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
POST /rewards/{id}/resend

Webhooks 5 endpoints

GET /webhooks

Every organization can only have one webhook. This endpoint shows the details about that webhook. > 📘 Learn more about Webhooks > > Our guide explains everything you need to know about the Tremendous webhooks: > [Read it here](https://developers.tremendous.com/)

operationId: Webhooks_getDetails

Responses

200 List of configured webhooks (never more than 1 webhook)
401 Authorization error e.g. due to an invalid or missing API key.
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /webhooks
POST /webhooks

Tremendous uses webhooks as a notification system for various events that happen in your account. > 📘 Learn more about Webhooks > > Our guide explains everything you need to know about the Tremendous webhooks: > [Read it here](https://developers.tremendous.com/) Every organization can define a single webhook endpoint where we send requests to, whenever an event happens. This endpoint allows you to setup that endpoint. The URL of the endpoint can be changed by making a request to this endpoint again with the new URL. ## Request body <div class="object-schema-request-schema"> <table> <thead> <tr> <th>Property</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody class="object-schema-table-body"> <tr class=""><td><div class="property-name"> <code class="property-name">url</code> </div> </td><td><span class="property-type">string</span> <span class="property-format">uri</span></td><td><p>URL the webhook will make requests to</p> </td></tr> </tbody> </table> </div>

operationId: Webhooks_createWebhook

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/WebhooksCreateWebhookRequest"
      }
    }
  },
  "required": true,
  "description": "Webhook details"
}

Responses

200 A webhook (to be overwritten in specific responses)
400 Validation error of the sent parameters or request body
401 Authorization error e.g. due to an invalid or missing API key.
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
POST /webhooks
GET /webhooks/{id}

> 📘 Learn more about Webhooks > > Our guide explains everything you need to know about the Tremendous webhooks: > [Read it here](https://developers.tremendous.com/)

operationId: Webhooks_getDetails

Parameters

Name In Required Type Description
id path required string ID of the webhook to retrieve

Responses

200 A webhook (to be overwritten in specific responses)
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /webhooks/{id}
GET /webhooks/{id}/events

Lists all event types that can be sent to the configured webhook endpoint. > 📘 Learn more about Webhooks > > Our guide explains everything you need to know about the Tremendous webhooks: > [Read it here](https://developers.tremendous.com/)

operationId: Webhooks_listEvents

Parameters

Name In Required Type Description
id path required string ID of the webhook to list the events for

Responses

200 List of all possible event types
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
GET /webhooks/{id}/events
POST /webhooks/{id}/simulate

Making a request to this endpoint will cause our system to trigger a webhook for the specified event. This can be very useful when testing the setup that processes webhooks on your end. > 📘 Learn more about Webhooks > > Our guide explains everything you need to know about the Tremendous webhooks: > [Read it here](https://developers.tremendous.com/)

operationId: Webhooks_triggerEvent

Parameters

Name In Required Type Description
id path required string ID of the webhook to test

Request Body

{
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/WebhooksTriggerEventRequest"
      }
    }
  },
  "required": true,
  "description": "Webhook details"
}

Responses

200 Webhook simulation triggered successfully
401 Authorization error e.g. due to an invalid or missing API key.
404 No resource could be found for the provided ID
422 Validation error of the sent parameters or request body
429 Rate limit exceeded, this request was not processed. Future requests may not be processed, until your account drops below the rate limit threshold, again.
500 The server encountered an unexpected error or couldn't fulfill the request in time.
POST /webhooks/{id}/simulate

Schemas

object BalanceTransaction
{
  "type": "object",
  "properties": {
    "action": {
      "type": "string",
      "example": "Deposit",
      "description": "The action that was performed"
    },
    "amount": {
      "type": "number",
      "format": "double",
      "example": 50.35,
      "description": "Amount of the transaction in USD"
    },
    "balance": {
      "type": "number",
      "format": "double",
      "example": 92.48,
      "description": "The updated total after the transaction. Note that this running balance may be delayed and contain `null`."
    },
    "created_at": {
      "type": "string",
      "format": "date",
      "description": "Date that the transaction was created"
    },
    "description": {
      "type": "string",
      "description": "A brief description of the transaction"
    }
  },
  "description": "A balance transaction represents a specific movement or change in an account's balance.\n"
}
object BalanceTransactionsListAll401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object BalanceTransactionsListAll422Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Order failed: validation failure",
      "payload": {
        "some_field": {
          "some_sub_field": "Something went wrong with this parameter"
        }
      }
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object BalanceTransactionsListAll429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object BalanceTransactionsListAll500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object BalanceTransactionsListAllResponse
{
  "type": "object",
  "properties": {
    "invoices": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string",
            "example": "Deposit",
            "description": "The action that was performed"
          },
          "amount": {
            "type": "number",
            "format": "double",
            "example": 50.35,
            "description": "Amount of the transaction in USD"
          },
          "balance": {
            "type": "number",
            "format": "double",
            "example": 92.48,
            "description": "The updated total after the transaction. Note that this running balance may be delayed and contain `null`."
          },
          "created_at": {
            "type": "string",
            "format": "date",
            "description": "Date that the transaction was created"
          },
          "description": {
            "type": "string",
            "description": "A brief description of the transaction"
          }
        },
        "description": "A balance transaction represents a specific movement or change in an account's balance.\n"
      }
    }
  }
}
object Campaign
{
  "type": "object",
  "required": [
    "id",
    "name",
    "description",
    "products"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true
    },
    "name": {
      "type": "string",
      "example": "My Default Campaign",
      "description": "Name of the campaign"
    },
    "products": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "SOMEIDSOMEID",
        "pattern": "[A-Z0-9]{4,20}",
        "readOnly": true
      },
      "example": [
        "P3MR06THYM8R",
        "EFMULTF26PMR"
      ],
      "description": "List of IDs of products (different gift cards, charity, etc.) that are available in this campaign.\n"
    },
    "description": {
      "type": "string",
      "example": "A campaign I use as the default in Tremendous\"",
      "nullable": true,
      "description": "Description of the campaign"
    }
  },
  "description": "With a campaign you can define the look & feel of how rewards are sent out.\nIt also lets you set the available products (different gift cards, charity, etc.)\nrecipients can choose from.\n\n> Note: Campaigns must be created from the Tremendous dashboard.\n>\n> • [Production Dashboard](https://app.tremendous.com)\n> • [Sandbox Dashboard](https://app.testflight.tremendous.com/)\n"
}
object CampaignsGetAll401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object CampaignsGetAll429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object CampaignsGetAll500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object CampaignsGetAllResponse
{
  "type": "object",
  "required": [
    "campaigns"
  ],
  "properties": {
    "campaigns": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "description",
          "products"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "name": {
            "type": "string",
            "example": "My Default Campaign",
            "description": "Name of the campaign"
          },
          "products": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "SOMEIDSOMEID",
              "pattern": "[A-Z0-9]{4,20}"
            },
            "example": [
              "P3MR06THYM8R",
              "EFMULTF26PMR"
            ],
            "description": "List of IDs of products (different gift cards, charity, etc.) that are available in this campaign.\n"
          },
          "description": {
            "type": "string",
            "example": "A campaign I use as the default in Tremendous\"",
            "nullable": true,
            "description": "Description of the campaign"
          }
        },
        "description": "With a campaign you can define the look & feel of how rewards are sent out.\nIt also lets you set the available products (different gift cards, charity, etc.)\nrecipients can choose from.\n\n> Note: Campaigns must be created from the Tremendous dashboard.\n>\n> • [Production Dashboard](https://app.tremendous.com)\n> • [Sandbox Dashboard](https://app.testflight.tremendous.com/)\n"
      }
    }
  }
}
object CampaignsGetById401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object CampaignsGetById404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object CampaignsGetById429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object CampaignsGetById500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object CampaignsGetByIdResponse
{
  "type": "object",
  "required": [
    "campaign"
  ],
  "properties": {
    "campaign": {
      "type": "object",
      "required": [
        "id",
        "name",
        "description",
        "products"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}"
        },
        "name": {
          "type": "string",
          "example": "My Default Campaign",
          "description": "Name of the campaign"
        },
        "products": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "example": [
            "P3MR06THYM8R",
            "EFMULTF26PMR"
          ],
          "description": "List of IDs of products (different gift cards, charity, etc.) that are available in this campaign.\n"
        },
        "description": {
          "type": "string",
          "example": "A campaign I use as the default in Tremendous\"",
          "nullable": true,
          "description": "Description of the campaign"
        }
      },
      "description": "With a campaign you can define the look & feel of how rewards are sent out.\nIt also lets you set the available products (different gift cards, charity, etc.)\nrecipients can choose from.\n\n> Note: Campaigns must be created from the Tremendous dashboard.\n>\n> • [Production Dashboard](https://app.tremendous.com)\n> • [Sandbox Dashboard](https://app.testflight.tremendous.com/)\n"
    }
  }
}
object CreateInvoice
{
  "type": "object",
  "required": [
    "amount"
  ],
  "properties": {
    "memo": {
      "type": "string",
      "nullable": true,
      "description": "A note to be included in the invoice. This is for your internal use and will not be visible to the recipient.\n"
    },
    "amount": {
      "type": "number",
      "format": "double",
      "example": 50.35,
      "description": "Amount of the invoice in USD"
    },
    "po_number": {
      "type": "string",
      "example": "123-PO-EE",
      "nullable": true,
      "description": "Reference to the purchase order number within your organization"
    }
  }
}
object CreateMember
{
  "type": "object",
  "required": [
    "email",
    "name",
    "role"
  ],
  "properties": {
    "name": {
      "type": "string",
      "example": "Jane Doe",
      "description": "Full name of the member"
    },
    "role": {
      "enum": [
        "MEMBER",
        "ADMIN"
      ],
      "type": "string",
      "example": "MEMBER",
      "description": "Role of the member within the organization.\n\n<table>\n  <thead>\n    <tr>\n      <th>Role</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n    <tr>\n      <td><code>MEMBER</code></td>\n      <td>Limited permissions. Can view their own reward and order histories only.</td>\n    </tr>\n    <tr>\n      <td><code>ADMIN</code></td>\n      <td>Update organization settings, invite other members to the organization, and view all member order and reward histories within their organization.</td>\n    </tr>\n  <tbody>\n</table>\n"
    },
    "email": {
      "type": "string",
      "format": "email",
      "example": "jane@example.com",
      "description": "Email address of the member"
    }
  }
}
object CreateOrganization
{
  "type": "object",
  "required": [
    "name",
    "website"
  ],
  "properties": {
    "name": {
      "type": "string",
      "example": "ACME Inc.",
      "description": "Name of the organization"
    },
    "phone": {
      "type": "string",
      "example": "123-456-7890",
      "description": "Phone number of the organization. For non-US phone numbers, specify the country code (prefixed with +)."
    },
    "website": {
      "type": "string",
      "format": "uri",
      "example": "https://www.example.com/some-org",
      "description": "URL of the website of that organization"
    },
    "with_api_key": {
      "type": "boolean",
      "example": true,
      "description": "Default value is `false`. Set to true to also generate an API key associated to the new organization."
    },
    "copy_settings": {
      "type": "object",
      "properties": {
        "users": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Copy over the users from the current organization to the new organization. Defaults to `false`."
        },
        "campaigns": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Copy over the campaigns from the current organization to the new organization. Defaults to `false`."
        },
        "custom_fields": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Copy over the custom fields from the current organization to the new organization. Defaults to `false`."
        },
        "order_approvals": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Copy over the order approvals settings from the current organization to the new organization. Defaults to `false`."
        },
        "payment_methods": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Copy over the payment methods from the current organization to the new organization. Defaults to `false`."
        },
        "fraud_prevention": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Copy over the fraud prevention settings and rules from the current organization to the new organization. Defaults to `false`."
        },
        "security_settings": {
          "type": "boolean",
          "default": true,
          "example": true,
          "description": "Copy over the security settings from the current organization to the new organization. Defaults to `true`."
        }
      },
      "description": "A list of the settings that you wish to copy over to the new organization."
    }
  }
}
string CurrencyCodes
{
  "enum": [
    "USD",
    "CAD",
    "EUR",
    "AED",
    "AFN",
    "ALL",
    "AMD",
    "ARS",
    "AUD",
    "AZN",
    "BAM",
    "BDT",
    "BGN",
    "BHD",
    "BIF",
    "BND",
    "BOB",
    "BRL",
    "BWP",
    "BYR",
    "BZD",
    "CDF",
    "CHF",
    "CLP",
    "CNY",
    "COP",
    "CRC",
    "CVE",
    "CZK",
    "DJF",
    "DKK",
    "DOP",
    "DZD",
    "EEK",
    "EGP",
    "ERN",
    "ETB",
    "GBP",
    "GEL",
    "GHS",
    "GNF",
    "GTQ",
    "HKD",
    "HNL",
    "HRK",
    "HUF",
    "IDR",
    "ILS",
    "INR",
    "IQD",
    "IRR",
    "ISK",
    "JMD",
    "JOD",
    "JPY",
    "KES",
    "KHR",
    "KRW",
    "KWD",
    "KZT",
    "LBP",
    "LKR",
    "LTL",
    "LVL",
    "MAD",
    "MDL",
    "MGA",
    "MKD",
    "MMK",
    "MOP",
    "MUR",
    "MXN",
    "MYR",
    "MZN",
    "NAD",
    "NGN",
    "NIO",
    "NOK",
    "NPR",
    "NZD",
    "OMR",
    "PAB",
    "PEN",
    "PHP",
    "PKR",
    "PLN",
    "PYG",
    "QAR",
    "RON",
    "RSD",
    "RUB",
    "RWF",
    "SAR",
    "SDG",
    "SEK",
    "SGD",
    "SOS",
    "SYP",
    "THB",
    "TND",
    "TOP",
    "TRY",
    "TTD",
    "TWD",
    "TZS",
    "UAH",
    "UGX",
    "UYU",
    "UZS",
    "VEF",
    "VND",
    "XAF",
    "XOF",
    "YER",
    "ZAR",
    "ZMK"
  ],
  "type": "string",
  "example": "USD"
}
object CustomField
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": false,
      "description": "Tremendous ID of the custom field"
    },
    "label": {
      "type": "string",
      "example": "harry_potter_house",
      "readOnly": false,
      "description": "Label of the custom field"
    },
    "value": {
      "type": "string",
      "example": "Hufflepuff",
      "nullable": true,
      "readOnly": false,
      "description": "Value of the custom field"
    }
  },
  "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
}
object DeliveryDetails
{
  "type": "object",
  "required": [
    "method",
    "status"
  ],
  "properties": {
    "method": {
      "enum": [
        "EMAIL",
        "LINK",
        "PHONE"
      ],
      "type": "string",
      "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
    },
    "status": {
      "enum": [
        "SCHEDULED",
        "FAILED",
        "SUCCEEDED",
        "PENDING"
      ],
      "type": "string",
      "readOnly": true,
      "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
    }
  },
  "description": "Details on how the reward is delivered to the recipient.\n"
}
object DeliveryDetailsWithLink
{
  "type": "object",
  "required": [
    "method",
    "status"
  ],
  "properties": {
    "link": {
      "type": "string",
      "example": "https://testflight.tremendous.com/rewards/payout/z67jic92r",
      "readOnly": true,
      "description": "Link to redeem the reward at. You need to deliver this link to the recipient.\n\nOnly available for rewards for which the `method` for delivery is set to `LINK`.\n"
    },
    "method": {
      "enum": [
        "EMAIL",
        "LINK",
        "PHONE"
      ],
      "type": "string",
      "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
    },
    "status": {
      "enum": [
        "SCHEDULED",
        "FAILED",
        "SUCCEEDED",
        "PENDING"
      ],
      "type": "string",
      "readOnly": true,
      "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
    }
  },
  "description": "Details on how the reward is delivered to the recipient.\n"
}
string DeliveryMethod
{
  "enum": [
    "EMAIL",
    "LINK",
    "PHONE"
  ],
  "type": "string",
  "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
}
string DeliveryStatus
{
  "enum": [
    "SCHEDULED",
    "FAILED",
    "SUCCEEDED",
    "PENDING"
  ],
  "type": "string",
  "readOnly": true,
  "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
}
object ErrorModel
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object Field
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true
    },
    "data": {
      "type": "object",
      "additionalProperties": true
    },
    "label": {
      "type": "string",
      "example": "recipient_name",
      "description": "Label of the field"
    },
    "scope": {
      "type": "string",
      "example": "REWARD",
      "description": "Type of objects this field gets associated with"
    },
    "required": {
      "type": "boolean",
      "example": true,
      "description": "Is this field required (true) or optional (false)"
    },
    "data_type": {
      "type": "string",
      "example": "Text",
      "description": "Type of the values of the field"
    }
  }
}
object FieldsGetCustomFields401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object FieldsGetCustomFields429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object FieldsGetCustomFields500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object FieldsGetCustomFieldsResponse
{
  "type": "object",
  "properties": {
    "fields": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "data": {
            "type": "object",
            "additionalProperties": true
          },
          "label": {
            "type": "string",
            "example": "recipient_name",
            "description": "Label of the field"
          },
          "scope": {
            "type": "string",
            "example": "REWARD",
            "description": "Type of objects this field gets associated with"
          },
          "required": {
            "type": "boolean",
            "example": true,
            "description": "Is this field required (true) or optional (false)"
          },
          "data_type": {
            "type": "string",
            "example": "Text",
            "description": "Type of the values of the field"
          }
        }
      }
    }
  }
}
object FundingSource
{
  "type": "object",
  "required": [
    "id",
    "method",
    "meta"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true
    },
    "meta": {
      "type": "object",
      "properties": {
        "last4": {
          "type": "string",
          "example": "1234",
          "pattern": "[0-9]{4}",
          "description": "**Only available when `method` is set to `credit_card`.**\n\nLast 4 digits of the credit card number\n"
        },
        "expired": {
          "type": "boolean",
          "example": false,
          "description": "**Only available when `method` is set to `credit_card`.**\n\nIs this credit card expired\n"
        },
        "network": {
          "enum": [
            "MasterCard",
            "Amex",
            "JCB",
            "Diner's Club",
            "visa",
            "discover",
            "laser",
            "elo",
            "maestro",
            "solo"
          ],
          "type": "string",
          "example": "Amex",
          "description": "**Only available when `method` is set to `credit_card`.**\n\nNetwork of the credit card\n"
        },
        "bank_name": {
          "type": "string",
          "example": "Bank of Fancyland",
          "nullable": true,
          "description": "**Only available when `method` is set to `bank_account`.**\n\nName of the bank\n"
        },
        "refundable": {
          "type": "boolean",
          "example": false,
          "description": "**Only available when `method` is set to `bank_account`.**\n\nCan refunds be deposited to this bank account\n"
        },
        "account_type": {
          "enum": [
            "checking",
            "savings"
          ],
          "type": "string",
          "example": "checking",
          "description": "**Only available when `method` is set to `bank_account`.**\n\nIs this a checking or savings account\n"
        },
        "pending_cents": {
          "type": "integer",
          "example": 25000,
          "description": "**Only available when `method` is set to `balance`.**\n\nFunds that are already registered on your Tremendous account but which have not yet been deposited in your account (e.g. unpaid invoices) (in Cents USD).\n"
        },
        "available_cents": {
          "type": "integer",
          "example": 50000,
          "description": "**Only available when `method` is set to `balance`.**\n\nAvailable amount for this funding source (in Cents USD)\n"
        },
        "accountholder_name": {
          "type": "string",
          "example": "Jane Doe",
          "description": "**Only available when `method` is set to `bank_account` or `credit_card`.**\n\nName of the holder of the bank account or credit_card\n"
        },
        "account_number_mask": {
          "type": "string",
          "example": "1234",
          "pattern": "[0-9]{4}",
          "description": "**Only available when `method` is set to `bank_account`.**\n\nLast 4 digits of the account number\n"
        },
        "account_routing_mask": {
          "type": "string",
          "example": "5678",
          "pattern": "[0-9]{4}",
          "description": "**Only available when `method` is set to `bank_account`.**\n\nLast 4 digits of the routing number\n"
        },
        "last_payment_failed_at": {
          "type": "string",
          "format": "date-time",
          "nullable": true,
          "description": "**Only available when `method` is set to `bank_account` or `credit_card`.**\n\nPoint in time when the last order failed using this bank account or credit card as a funding source.\n"
        }
      }
    },
    "type": {
      "enum": [
        "COMMERCIAL",
        "PRO_FORMA",
        "PREFUNDING_ONLY"
      ],
      "type": "string",
      "example": "COMMERCIAL",
      "description": "**Only available when `method` is set to `invoice`.**\n"
    },
    "method": {
      "enum": [
        "balance",
        "bank_account",
        "credit_card",
        "invoice"
      ],
      "type": "string",
      "example": "balance",
      "description": "You can pay for rewards using different payment methods on Tremendous:\n\n<table>\n  <thead>\n    <tr>\n      <th>Payment Method</th>\n      <th>Description</th>\n      </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>balance</code></td>\n      <td>Pre-funded balance in your Tremendous account to draw funds from to send rewards to recipients.</td>\n    </tr>\n    <tr>\n      <td><code>bank_account</code></td>\n      <td>Bank account to draw funds from to send rewards to recipients.</td>\n    </tr>\n    <tr>\n      <td><code>credit_card</code></td>\n      <td>Credit card to draw funds from to send rewards to recipients.</td>\n    </tr>\n    <tr>\n      <td><code>invoice</code></td>\n      <td>Send rewards to recipients and pay by invoice.</td>\n    </tr>\n\n  </tbody>\n</table>\n"
    }
  },
  "description": ""
}
object FundingSourcesGetAll401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object FundingSourcesGetAll429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object FundingSourcesGetAll500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object FundingSourcesGetAllResponse
{
  "type": "object",
  "required": [
    "funding_sources"
  ],
  "properties": {
    "funding_sources": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "method",
          "meta"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "meta": {
            "type": "object",
            "properties": {
              "last4": {
                "type": "string",
                "example": "1234",
                "pattern": "[0-9]{4}",
                "description": "**Only available when `method` is set to `credit_card`.**\n\nLast 4 digits of the credit card number\n"
              },
              "expired": {
                "type": "boolean",
                "example": false,
                "description": "**Only available when `method` is set to `credit_card`.**\n\nIs this credit card expired\n"
              },
              "network": {
                "enum": [
                  "MasterCard",
                  "Amex",
                  "JCB",
                  "Diner's Club",
                  "visa",
                  "discover",
                  "laser",
                  "elo",
                  "maestro",
                  "solo"
                ],
                "type": "string",
                "example": "Amex",
                "description": "**Only available when `method` is set to `credit_card`.**\n\nNetwork of the credit card\n"
              },
              "bank_name": {
                "type": "string",
                "example": "Bank of Fancyland",
                "nullable": true,
                "description": "**Only available when `method` is set to `bank_account`.**\n\nName of the bank\n"
              },
              "refundable": {
                "type": "boolean",
                "example": false,
                "description": "**Only available when `method` is set to `bank_account`.**\n\nCan refunds be deposited to this bank account\n"
              },
              "account_type": {
                "enum": [
                  "checking",
                  "savings"
                ],
                "type": "string",
                "example": "checking",
                "description": "**Only available when `method` is set to `bank_account`.**\n\nIs this a checking or savings account\n"
              },
              "pending_cents": {
                "type": "integer",
                "example": 25000,
                "description": "**Only available when `method` is set to `balance`.**\n\nFunds that are already registered on your Tremendous account but which have not yet been deposited in your account (e.g. unpaid invoices) (in Cents USD).\n"
              },
              "available_cents": {
                "type": "integer",
                "example": 50000,
                "description": "**Only available when `method` is set to `balance`.**\n\nAvailable amount for this funding source (in Cents USD)\n"
              },
              "accountholder_name": {
                "type": "string",
                "example": "Jane Doe",
                "description": "**Only available when `method` is set to `bank_account` or `credit_card`.**\n\nName of the holder of the bank account or credit_card\n"
              },
              "account_number_mask": {
                "type": "string",
                "example": "1234",
                "pattern": "[0-9]{4}",
                "description": "**Only available when `method` is set to `bank_account`.**\n\nLast 4 digits of the account number\n"
              },
              "account_routing_mask": {
                "type": "string",
                "example": "5678",
                "pattern": "[0-9]{4}",
                "description": "**Only available when `method` is set to `bank_account`.**\n\nLast 4 digits of the routing number\n"
              },
              "last_payment_failed_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "**Only available when `method` is set to `bank_account` or `credit_card`.**\n\nPoint in time when the last order failed using this bank account or credit card as a funding source.\n"
              }
            }
          },
          "type": {
            "enum": [
              "COMMERCIAL",
              "PRO_FORMA",
              "PREFUNDING_ONLY"
            ],
            "type": "string",
            "example": "COMMERCIAL",
            "description": "**Only available when `method` is set to `invoice`.**\n"
          },
          "method": {
            "enum": [
              "balance",
              "bank_account",
              "credit_card",
              "invoice"
            ],
            "type": "string",
            "example": "balance",
            "description": "You can pay for rewards using different payment methods on Tremendous:\n\n<table>\n  <thead>\n    <tr>\n      <th>Payment Method</th>\n      <th>Description</th>\n      </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>balance</code></td>\n      <td>Pre-funded balance in your Tremendous account to draw funds from to send rewards to recipients.</td>\n    </tr>\n    <tr>\n      <td><code>bank_account</code></td>\n      <td>Bank account to draw funds from to send rewards to recipients.</td>\n    </tr>\n    <tr>\n      <td><code>credit_card</code></td>\n      <td>Credit card to draw funds from to send rewards to recipients.</td>\n    </tr>\n    <tr>\n      <td><code>invoice</code></td>\n      <td>Send rewards to recipients and pay by invoice.</td>\n    </tr>\n\n  </tbody>\n</table>\n"
          }
        },
        "description": ""
      }
    }
  }
}
object FundingSourcesGetById401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object FundingSourcesGetById404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object FundingSourcesGetById429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object FundingSourcesGetById500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object FundingSourcesGetByIdResponse
{
  "type": "object",
  "required": [
    "funding_source"
  ],
  "properties": {
    "funding_source": {
      "type": "object",
      "required": [
        "id",
        "method",
        "meta"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}"
        },
        "meta": {
          "type": "object",
          "properties": {
            "last4": {
              "type": "string",
              "example": "1234",
              "pattern": "[0-9]{4}",
              "description": "**Only available when `method` is set to `credit_card`.**\n\nLast 4 digits of the credit card number\n"
            },
            "expired": {
              "type": "boolean",
              "example": false,
              "description": "**Only available when `method` is set to `credit_card`.**\n\nIs this credit card expired\n"
            },
            "network": {
              "enum": [
                "MasterCard",
                "Amex",
                "JCB",
                "Diner's Club",
                "visa",
                "discover",
                "laser",
                "elo",
                "maestro",
                "solo"
              ],
              "type": "string",
              "example": "Amex",
              "description": "**Only available when `method` is set to `credit_card`.**\n\nNetwork of the credit card\n"
            },
            "bank_name": {
              "type": "string",
              "example": "Bank of Fancyland",
              "nullable": true,
              "description": "**Only available when `method` is set to `bank_account`.**\n\nName of the bank\n"
            },
            "refundable": {
              "type": "boolean",
              "example": false,
              "description": "**Only available when `method` is set to `bank_account`.**\n\nCan refunds be deposited to this bank account\n"
            },
            "account_type": {
              "enum": [
                "checking",
                "savings"
              ],
              "type": "string",
              "example": "checking",
              "description": "**Only available when `method` is set to `bank_account`.**\n\nIs this a checking or savings account\n"
            },
            "pending_cents": {
              "type": "integer",
              "example": 25000,
              "description": "**Only available when `method` is set to `balance`.**\n\nFunds that are already registered on your Tremendous account but which have not yet been deposited in your account (e.g. unpaid invoices) (in Cents USD).\n"
            },
            "available_cents": {
              "type": "integer",
              "example": 50000,
              "description": "**Only available when `method` is set to `balance`.**\n\nAvailable amount for this funding source (in Cents USD)\n"
            },
            "accountholder_name": {
              "type": "string",
              "example": "Jane Doe",
              "description": "**Only available when `method` is set to `bank_account` or `credit_card`.**\n\nName of the holder of the bank account or credit_card\n"
            },
            "account_number_mask": {
              "type": "string",
              "example": "1234",
              "pattern": "[0-9]{4}",
              "description": "**Only available when `method` is set to `bank_account`.**\n\nLast 4 digits of the account number\n"
            },
            "account_routing_mask": {
              "type": "string",
              "example": "5678",
              "pattern": "[0-9]{4}",
              "description": "**Only available when `method` is set to `bank_account`.**\n\nLast 4 digits of the routing number\n"
            },
            "last_payment_failed_at": {
              "type": "string",
              "format": "date-time",
              "nullable": true,
              "description": "**Only available when `method` is set to `bank_account` or `credit_card`.**\n\nPoint in time when the last order failed using this bank account or credit card as a funding source.\n"
            }
          }
        },
        "type": {
          "enum": [
            "COMMERCIAL",
            "PRO_FORMA",
            "PREFUNDING_ONLY"
          ],
          "type": "string",
          "example": "COMMERCIAL",
          "description": "**Only available when `method` is set to `invoice`.**\n"
        },
        "method": {
          "enum": [
            "balance",
            "bank_account",
            "credit_card",
            "invoice"
          ],
          "type": "string",
          "example": "balance",
          "description": "You can pay for rewards using different payment methods on Tremendous:\n\n<table>\n  <thead>\n    <tr>\n      <th>Payment Method</th>\n      <th>Description</th>\n      </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>balance</code></td>\n      <td>Pre-funded balance in your Tremendous account to draw funds from to send rewards to recipients.</td>\n    </tr>\n    <tr>\n      <td><code>bank_account</code></td>\n      <td>Bank account to draw funds from to send rewards to recipients.</td>\n    </tr>\n    <tr>\n      <td><code>credit_card</code></td>\n      <td>Credit card to draw funds from to send rewards to recipients.</td>\n    </tr>\n    <tr>\n      <td><code>invoice</code></td>\n      <td>Send rewards to recipients and pay by invoice.</td>\n    </tr>\n\n  </tbody>\n</table>\n"
        }
      },
      "description": ""
    }
  }
}
object Invoice
{
  "type": "object",
  "required": [
    "id",
    "amount",
    "status",
    "created_at",
    "paid_at"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "PPS-26873",
      "description": "The invoice number"
    },
    "amount": {
      "type": "number",
      "format": "double",
      "example": 50.35,
      "description": "Amount of the invoice in USD"
    },
    "orders": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "SOMEIDSOMEID",
        "pattern": "[A-Z0-9]{4,20}",
        "readOnly": true
      },
      "example": [
        "ABC123456789",
        "DEF123456789"
      ],
      "description": "List of orders related to the invoice (it doesn't apply to prefunding)"
    },
    "status": {
      "enum": [
        "DELETED",
        "PAID",
        "OPEN",
        "MARKED_AS_PAID"
      ],
      "type": "string",
      "example": "PAID",
      "description": "Status of this invoice\n\n<table>\n  <thead>\n    <tr>\n      <th>Status</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>DELETED</code></td>\n      <td>Invoice has been deleted by your organization</td>\n    </tr>\n    <tr>\n      <td><code>PAID</code></td>\n      <td>Invoice has been paid by your organization</td>\n    </tr>\n    <tr>\n      <td><code>OPEN</code></td>\n      <td>Invoice has been created by your organization but has not been paid, yet</td>\n    </tr>\n  </tbody>\n</table>\n"
    },
    "paid_at": {
      "type": "string",
      "format": "date",
      "nullable": true,
      "description": "Timestamp of when the invoice has been paid.\n"
    },
    "rewards": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "SOMEIDSOMEID",
        "pattern": "[A-Z0-9]{4,20}",
        "readOnly": true
      },
      "example": [
        "ABC123456789",
        "DEF123456789"
      ],
      "description": "List of rewards related to the invoice (it doesn't apply to prefunding)"
    },
    "po_number": {
      "type": "string",
      "example": "123-PO-EE",
      "nullable": true,
      "description": "Reference to the purchase order number within your organization"
    },
    "created_at": {
      "type": "string",
      "format": "date",
      "description": "Timestamp of when the invoice has been created.\n"
    }
  },
  "description": "Invoices are instruments to fund your Tremendous account's balance.\n\nInvoices can be created by your organization programatically.\nOnce we receive your payment, the invoice is marked as `PAID` and we add\nthe respective funds to your account's balance.\n"
}
object InvoicesCreateAndFundAccountBalance400Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesCreateAndFundAccountBalance401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesCreateAndFundAccountBalance429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesCreateAndFundAccountBalance500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesCreateAndFundAccountBalanceRequest
{
  "type": "object",
  "required": [
    "amount"
  ],
  "properties": {
    "memo": {
      "type": "string",
      "nullable": true,
      "description": "A note to be included in the invoice. This is for your internal use and will not be visible to the recipient.\n"
    },
    "amount": {
      "type": "number",
      "format": "double",
      "example": 50.35,
      "description": "Amount of the invoice in USD"
    },
    "po_number": {
      "type": "string",
      "example": "123-PO-EE",
      "nullable": true,
      "description": "Reference to the purchase order number within your organization"
    }
  }
}
object InvoicesCreateAndFundAccountBalanceResponse
{
  "type": "object",
  "required": [
    "invoice"
  ],
  "properties": {
    "invoice": {
      "type": "object",
      "required": [
        "id",
        "amount",
        "status",
        "created_at",
        "paid_at"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "PPS-26873",
          "description": "The invoice number"
        },
        "amount": {
          "type": "number",
          "format": "double",
          "example": 50.35,
          "description": "Amount of the invoice in USD"
        },
        "orders": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "example": [
            "ABC123456789",
            "DEF123456789"
          ],
          "description": "List of orders related to the invoice (it doesn't apply to prefunding)"
        },
        "status": {
          "enum": [
            "DELETED",
            "PAID",
            "OPEN",
            "MARKED_AS_PAID"
          ],
          "type": "string",
          "example": "PAID",
          "description": "Status of this invoice\n\n<table>\n  <thead>\n    <tr>\n      <th>Status</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>DELETED</code></td>\n      <td>Invoice has been deleted by your organization</td>\n    </tr>\n    <tr>\n      <td><code>PAID</code></td>\n      <td>Invoice has been paid by your organization</td>\n    </tr>\n    <tr>\n      <td><code>OPEN</code></td>\n      <td>Invoice has been created by your organization but has not been paid, yet</td>\n    </tr>\n  </tbody>\n</table>\n"
        },
        "paid_at": {
          "type": "string",
          "format": "date",
          "nullable": true,
          "description": "Timestamp of when the invoice has been paid.\n"
        },
        "rewards": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "example": [
            "ABC123456789",
            "DEF123456789"
          ],
          "description": "List of rewards related to the invoice (it doesn't apply to prefunding)"
        },
        "po_number": {
          "type": "string",
          "example": "123-PO-EE",
          "nullable": true,
          "description": "Reference to the purchase order number within your organization"
        },
        "created_at": {
          "type": "string",
          "format": "date",
          "description": "Timestamp of when the invoice has been created.\n"
        }
      },
      "description": "Invoices are instruments to fund your Tremendous account's balance.\n\nInvoices can be created by your organization programatically.\nOnce we receive your payment, the invoice is marked as `PAID` and we add\nthe respective funds to your account's balance.\n"
    }
  }
}
object InvoicesGetAll401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesGetAll429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesGetAll500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesGetAllResponse
{
  "type": "object",
  "required": [
    "invoices",
    "total_count"
  ],
  "properties": {
    "invoices": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "amount",
          "status",
          "created_at",
          "paid_at"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "PPS-26873",
            "description": "The invoice number"
          },
          "amount": {
            "type": "number",
            "format": "double",
            "example": 50.35,
            "description": "Amount of the invoice in USD"
          },
          "orders": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "SOMEIDSOMEID",
              "pattern": "[A-Z0-9]{4,20}"
            },
            "example": [
              "ABC123456789",
              "DEF123456789"
            ],
            "description": "List of orders related to the invoice (it doesn't apply to prefunding)"
          },
          "status": {
            "enum": [
              "DELETED",
              "PAID",
              "OPEN",
              "MARKED_AS_PAID"
            ],
            "type": "string",
            "example": "PAID",
            "description": "Status of this invoice\n\n<table>\n  <thead>\n    <tr>\n      <th>Status</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>DELETED</code></td>\n      <td>Invoice has been deleted by your organization</td>\n    </tr>\n    <tr>\n      <td><code>PAID</code></td>\n      <td>Invoice has been paid by your organization</td>\n    </tr>\n    <tr>\n      <td><code>OPEN</code></td>\n      <td>Invoice has been created by your organization but has not been paid, yet</td>\n    </tr>\n  </tbody>\n</table>\n"
          },
          "paid_at": {
            "type": "string",
            "format": "date",
            "nullable": true,
            "description": "Timestamp of when the invoice has been paid.\n"
          },
          "rewards": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "SOMEIDSOMEID",
              "pattern": "[A-Z0-9]{4,20}"
            },
            "example": [
              "ABC123456789",
              "DEF123456789"
            ],
            "description": "List of rewards related to the invoice (it doesn't apply to prefunding)"
          },
          "po_number": {
            "type": "string",
            "example": "123-PO-EE",
            "nullable": true,
            "description": "Reference to the purchase order number within your organization"
          },
          "created_at": {
            "type": "string",
            "format": "date",
            "description": "Timestamp of when the invoice has been created.\n"
          }
        },
        "description": "Invoices are instruments to fund your Tremendous account's balance.\n\nInvoices can be created by your organization programatically.\nOnce we receive your payment, the invoice is marked as `PAID` and we add\nthe respective funds to your account's balance.\n"
      }
    },
    "total_count": {
      "type": "integer",
      "example": 1,
      "description": "The total number of invoices across all pages"
    }
  }
}
object InvoicesGetById401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesGetById404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesGetById429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesGetById500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesGetByIdResponse
{
  "type": "object",
  "required": [
    "invoice"
  ],
  "properties": {
    "invoice": {
      "type": "object",
      "required": [
        "id",
        "amount",
        "status",
        "created_at",
        "paid_at"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "PPS-26873",
          "description": "The invoice number"
        },
        "amount": {
          "type": "number",
          "format": "double",
          "example": 50.35,
          "description": "Amount of the invoice in USD"
        },
        "orders": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "example": [
            "ABC123456789",
            "DEF123456789"
          ],
          "description": "List of orders related to the invoice (it doesn't apply to prefunding)"
        },
        "status": {
          "enum": [
            "DELETED",
            "PAID",
            "OPEN",
            "MARKED_AS_PAID"
          ],
          "type": "string",
          "example": "PAID",
          "description": "Status of this invoice\n\n<table>\n  <thead>\n    <tr>\n      <th>Status</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>DELETED</code></td>\n      <td>Invoice has been deleted by your organization</td>\n    </tr>\n    <tr>\n      <td><code>PAID</code></td>\n      <td>Invoice has been paid by your organization</td>\n    </tr>\n    <tr>\n      <td><code>OPEN</code></td>\n      <td>Invoice has been created by your organization but has not been paid, yet</td>\n    </tr>\n  </tbody>\n</table>\n"
        },
        "paid_at": {
          "type": "string",
          "format": "date",
          "nullable": true,
          "description": "Timestamp of when the invoice has been paid.\n"
        },
        "rewards": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "example": [
            "ABC123456789",
            "DEF123456789"
          ],
          "description": "List of rewards related to the invoice (it doesn't apply to prefunding)"
        },
        "po_number": {
          "type": "string",
          "example": "123-PO-EE",
          "nullable": true,
          "description": "Reference to the purchase order number within your organization"
        },
        "created_at": {
          "type": "string",
          "format": "date",
          "description": "Timestamp of when the invoice has been created.\n"
        }
      },
      "description": "Invoices are instruments to fund your Tremendous account's balance.\n\nInvoices can be created by your organization programatically.\nOnce we receive your payment, the invoice is marked as `PAID` and we add\nthe respective funds to your account's balance.\n"
    }
  }
}
object InvoicesGetCsv400Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesGetCsv401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesGetCsv404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesGetCsv429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesGetCsv500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
string InvoicesGetCsvResponse
{
  "type": "string",
  "format": "text",
  "description": "The CSV text file"
}
object InvoicesGetPdf401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesGetPdf404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesGetPdf429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesGetPdf500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
string InvoicesGetPdfResponse
{
  "type": "string",
  "format": "binary",
  "description": "The PDF binary data"
}
object InvoicesRemoveInvoice401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesRemoveInvoice404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesRemoveInvoice429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesRemoveInvoice500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object InvoicesRemoveInvoiceResponse
{
  "type": "object",
  "required": [
    "invoice"
  ],
  "properties": {
    "invoice": {
      "type": "object",
      "required": [
        "id",
        "amount",
        "status",
        "created_at",
        "paid_at"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "PPS-26873",
          "description": "The invoice number"
        },
        "amount": {
          "type": "number",
          "format": "double",
          "example": 50.35,
          "description": "Amount of the invoice in USD"
        },
        "orders": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "example": [
            "ABC123456789",
            "DEF123456789"
          ],
          "description": "List of orders related to the invoice (it doesn't apply to prefunding)"
        },
        "status": {
          "enum": [
            "DELETED",
            "PAID",
            "OPEN",
            "MARKED_AS_PAID"
          ],
          "type": "string",
          "example": "PAID",
          "description": "Status of this invoice\n\n<table>\n  <thead>\n    <tr>\n      <th>Status</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>DELETED</code></td>\n      <td>Invoice has been deleted by your organization</td>\n    </tr>\n    <tr>\n      <td><code>PAID</code></td>\n      <td>Invoice has been paid by your organization</td>\n    </tr>\n    <tr>\n      <td><code>OPEN</code></td>\n      <td>Invoice has been created by your organization but has not been paid, yet</td>\n    </tr>\n  </tbody>\n</table>\n"
        },
        "paid_at": {
          "type": "string",
          "format": "date",
          "nullable": true,
          "description": "Timestamp of when the invoice has been paid.\n"
        },
        "rewards": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "example": [
            "ABC123456789",
            "DEF123456789"
          ],
          "description": "List of rewards related to the invoice (it doesn't apply to prefunding)"
        },
        "po_number": {
          "type": "string",
          "example": "123-PO-EE",
          "nullable": true,
          "description": "Reference to the purchase order number within your organization"
        },
        "created_at": {
          "type": "string",
          "format": "date",
          "description": "Timestamp of when the invoice has been created.\n"
        }
      },
      "description": "Invoices are instruments to fund your Tremendous account's balance.\n\nInvoices can be created by your organization programatically.\nOnce we receive your payment, the invoice is marked as `PAID` and we add\nthe respective funds to your account's balance.\n"
    }
  }
}
object Member
{
  "type": "object",
  "required": [
    "id",
    "name",
    "email",
    "role",
    "status"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true
    },
    "name": {
      "type": "string",
      "example": "Jane Doe",
      "nullable": true,
      "description": "Full name of the member"
    },
    "role": {
      "enum": [
        "MEMBER",
        "ADMIN",
        "DELETED"
      ],
      "type": "string",
      "description": "Role of the member within the organization.\n\n<table>\n  <thead>\n    <tr>\n      <th>Role</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n    <tr>\n      <td><code>MEMBER</code></td>\n      <td>Limited permissions. Can view their own reward and order histories only.</td>\n    </tr>\n    <tr>\n      <td><code>ADMIN</code></td>\n      <td>Update organization settings, invite other members to the organization, and view all member order and reward histories within their organization.</td>\n    </tr>\n    <tr>\n      <td><code>DELETED</code></td>\n      <td>No longer a member of this organization.</td>\n    </tr>\n  <tbody>\n  </tbody>\n</table>\n"
    },
    "email": {
      "type": "string",
      "format": "email",
      "example": "jane@example.com",
      "description": "Email address of the member"
    },
    "status": {
      "enum": [
        "REGISTERED",
        "INVITED"
      ],
      "type": "string",
      "example": "INVITED",
      "readOnly": true,
      "description": "Current status of the member's account.\n\nWhen creating a member it starts out in the status `INVITED`. As soon as that member open the invitation link and registers an account, the status switches to `REGISTERED`.\n"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "example": "2021-08-02T11:05:59Z",
      "readOnly": true,
      "description": "Timestamp when this member was created.\n\nThe `created_at` timestamp is **NOT** returned when retrieving a member (but is part of the response when listing or creating members).\n"
    },
    "last_login_at": {
      "type": "string",
      "format": "date-time",
      "example": "2021-08-02T11:05:59Z",
      "nullable": true,
      "readOnly": true,
      "description": "Timestamp when this member most recently logged into the dashboard of the organization associated with this API key.\n"
    }
  },
  "description": "Each organization has one or more users that can access and manage that organization. These users are called members.\n\nMembers can take actions via the Tremendous web dashboard directly.\n\nThese actions include adding funding sources to the organization, creating Campaigns, and more.\n"
}
object MemberBase
{
  "type": "object",
  "required": [
    "id",
    "name",
    "email",
    "role",
    "status"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true
    },
    "name": {
      "type": "string",
      "example": "Jane Doe",
      "nullable": true,
      "description": "Full name of the member"
    },
    "role": {
      "enum": [
        "MEMBER",
        "ADMIN",
        "DELETED"
      ],
      "type": "string",
      "description": "Role of the member within the organization.\n\n<table>\n  <thead>\n    <tr>\n      <th>Role</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n    <tr>\n      <td><code>MEMBER</code></td>\n      <td>Limited permissions. Can view their own reward and order histories only.</td>\n    </tr>\n    <tr>\n      <td><code>ADMIN</code></td>\n      <td>Update organization settings, invite other members to the organization, and view all member order and reward histories within their organization.</td>\n    </tr>\n    <tr>\n      <td><code>DELETED</code></td>\n      <td>No longer a member of this organization.</td>\n    </tr>\n  <tbody>\n  </tbody>\n</table>\n"
    },
    "email": {
      "type": "string",
      "format": "email",
      "example": "jane@example.com",
      "description": "Email address of the member"
    },
    "status": {
      "enum": [
        "REGISTERED",
        "INVITED"
      ],
      "type": "string",
      "example": "INVITED",
      "readOnly": true,
      "description": "Current status of the member's account.\n\nWhen creating a member it starts out in the status `INVITED`. As soon as that member open the invitation link and registers an account, the status switches to `REGISTERED`.\n"
    }
  },
  "description": "Each organization has one or more users that can access and manage that organization. These users are called members.\n\nMembers can take actions via the Tremendous web dashboard directly.\n\nThese actions include adding funding sources to the organization, creating Campaigns, and more.\n"
}
object MemberWithEvents
{
  "type": "object",
  "required": [
    "id",
    "name",
    "email",
    "role",
    "status"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true
    },
    "name": {
      "type": "string",
      "example": "Jane Doe",
      "nullable": true,
      "description": "Full name of the member"
    },
    "role": {
      "enum": [
        "MEMBER",
        "ADMIN",
        "DELETED"
      ],
      "type": "string",
      "description": "Role of the member within the organization.\n\n<table>\n  <thead>\n    <tr>\n      <th>Role</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n    <tr>\n      <td><code>MEMBER</code></td>\n      <td>Limited permissions. Can view their own reward and order histories only.</td>\n    </tr>\n    <tr>\n      <td><code>ADMIN</code></td>\n      <td>Update organization settings, invite other members to the organization, and view all member order and reward histories within their organization.</td>\n    </tr>\n    <tr>\n      <td><code>DELETED</code></td>\n      <td>No longer a member of this organization.</td>\n    </tr>\n  <tbody>\n  </tbody>\n</table>\n"
    },
    "email": {
      "type": "string",
      "format": "email",
      "example": "jane@example.com",
      "description": "Email address of the member"
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "created",
              "last_login"
            ],
            "type": "string",
            "example": "created",
            "description": "Event type"
          },
          "date_utc": {
            "type": "string",
            "format": "date-time",
            "example": "2021-08-02T11:05:59Z",
            "nullable": true,
            "description": "Timestamp when the event happened"
          }
        }
      },
      "readOnly": true,
      "description": "List of events related to the member."
    },
    "status": {
      "enum": [
        "REGISTERED",
        "INVITED"
      ],
      "type": "string",
      "example": "INVITED",
      "readOnly": true,
      "description": "Current status of the member's account.\n\nWhen creating a member it starts out in the status `INVITED`. As soon as that member open the invitation link and registers an account, the status switches to `REGISTERED`.\n"
    }
  },
  "description": "Each organization has one or more users that can access and manage that organization. These users are called members.\n\nMembers can take actions via the Tremendous web dashboard directly.\n\nThese actions include adding funding sources to the organization, creating Campaigns, and more.\n"
}
object MemberWithoutEvents
{
  "type": "object",
  "required": [
    "id",
    "name",
    "email",
    "role",
    "status"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true
    },
    "name": {
      "type": "string",
      "example": "Jane Doe",
      "nullable": true,
      "description": "Full name of the member"
    },
    "role": {
      "enum": [
        "MEMBER",
        "ADMIN",
        "DELETED"
      ],
      "type": "string",
      "description": "Role of the member within the organization.\n\n<table>\n  <thead>\n    <tr>\n      <th>Role</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n    <tr>\n      <td><code>MEMBER</code></td>\n      <td>Limited permissions. Can view their own reward and order histories only.</td>\n    </tr>\n    <tr>\n      <td><code>ADMIN</code></td>\n      <td>Update organization settings, invite other members to the organization, and view all member order and reward histories within their organization.</td>\n    </tr>\n    <tr>\n      <td><code>DELETED</code></td>\n      <td>No longer a member of this organization.</td>\n    </tr>\n  <tbody>\n  </tbody>\n</table>\n"
    },
    "email": {
      "type": "string",
      "format": "email",
      "example": "jane@example.com",
      "description": "Email address of the member"
    },
    "status": {
      "enum": [
        "REGISTERED",
        "INVITED"
      ],
      "type": "string",
      "example": "INVITED",
      "readOnly": true,
      "description": "Current status of the member's account.\n\nWhen creating a member it starts out in the status `INVITED`. As soon as that member open the invitation link and registers an account, the status switches to `REGISTERED`.\n"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "example": "2021-08-02T11:05:59Z",
      "readOnly": true,
      "description": "Timestamp when this member was created.\n\nThe `created_at` timestamp is **NOT** returned when retrieving a member (but is part of the response when listing or creating members).\n"
    },
    "last_login_at": {
      "type": "string",
      "format": "date-time",
      "example": "2021-08-02T11:05:59Z",
      "nullable": true,
      "readOnly": true,
      "description": "Timestamp when this member most recently logged into the dashboard of the organization associated with this API key.\n"
    }
  },
  "description": "Each organization has one or more users that can access and manage that organization. These users are called members.\n\nMembers can take actions via the Tremendous web dashboard directly.\n\nThese actions include adding funding sources to the organization, creating Campaigns, and more.\n"
}
object MembersCreateNewMember400Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Order failed: validation failure",
      "payload": {
        "some_field": {
          "some_sub_field": "Something went wrong with this parameter"
        }
      }
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object MembersCreateNewMember401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object MembersCreateNewMember429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object MembersCreateNewMember500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object MembersCreateNewMemberRequest
{
  "type": "object",
  "required": [
    "email",
    "name",
    "role"
  ],
  "properties": {
    "name": {
      "type": "string",
      "example": "Jane Doe",
      "description": "Full name of the member"
    },
    "role": {
      "enum": [
        "MEMBER",
        "ADMIN"
      ],
      "type": "string",
      "example": "MEMBER",
      "description": "Role of the member within the organization.\n\n<table>\n  <thead>\n    <tr>\n      <th>Role</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n    <tr>\n      <td><code>MEMBER</code></td>\n      <td>Limited permissions. Can view their own reward and order histories only.</td>\n    </tr>\n    <tr>\n      <td><code>ADMIN</code></td>\n      <td>Update organization settings, invite other members to the organization, and view all member order and reward histories within their organization.</td>\n    </tr>\n  <tbody>\n</table>\n"
    },
    "email": {
      "type": "string",
      "format": "email",
      "example": "jane@example.com",
      "description": "Email address of the member"
    }
  }
}
object MembersCreateNewMemberResponse
{
  "type": "object",
  "required": [
    "member"
  ],
  "properties": {
    "member": {
      "type": "object",
      "required": [
        "id",
        "name",
        "email",
        "role",
        "status"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}"
        },
        "name": {
          "type": "string",
          "example": "Jane Doe",
          "nullable": true,
          "description": "Full name of the member"
        },
        "role": {
          "enum": [
            "MEMBER",
            "ADMIN",
            "DELETED"
          ],
          "type": "string",
          "description": "Role of the member within the organization.\n\n<table>\n  <thead>\n    <tr>\n      <th>Role</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n    <tr>\n      <td><code>MEMBER</code></td>\n      <td>Limited permissions. Can view their own reward and order histories only.</td>\n    </tr>\n    <tr>\n      <td><code>ADMIN</code></td>\n      <td>Update organization settings, invite other members to the organization, and view all member order and reward histories within their organization.</td>\n    </tr>\n    <tr>\n      <td><code>DELETED</code></td>\n      <td>No longer a member of this organization.</td>\n    </tr>\n  <tbody>\n  </tbody>\n</table>\n"
        },
        "email": {
          "type": "string",
          "format": "email",
          "example": "jane@example.com",
          "description": "Email address of the member"
        },
        "status": {
          "enum": [
            "REGISTERED",
            "INVITED"
          ],
          "type": "string",
          "example": "INVITED",
          "description": "Current status of the member's account.\n\nWhen creating a member it starts out in the status `INVITED`. As soon as that member open the invitation link and registers an account, the status switches to `REGISTERED`.\n"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "example": "2021-08-02T11:05:59Z",
          "description": "Timestamp when this member was created.\n\nThe `created_at` timestamp is **NOT** returned when retrieving a member (but is part of the response when listing or creating members).\n"
        },
        "last_login_at": {
          "type": "string",
          "format": "date-time",
          "example": "2021-08-02T11:05:59Z",
          "nullable": true,
          "description": "Timestamp when this member most recently logged into the dashboard of the organization associated with this API key.\n"
        }
      },
      "description": "Each organization has one or more users that can access and manage that organization. These users are called members.\n\nMembers can take actions via the Tremendous web dashboard directly.\n\nThese actions include adding funding sources to the organization, creating Campaigns, and more.\n"
    }
  }
}
object MembersGetMember401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object MembersGetMember404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object MembersGetMember429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object MembersGetMember500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object MembersGetMemberResponse
{
  "type": "object",
  "required": [
    "member"
  ],
  "properties": {
    "member": {
      "type": "object",
      "required": [
        "id",
        "name",
        "email",
        "role",
        "status"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}"
        },
        "name": {
          "type": "string",
          "example": "Jane Doe",
          "nullable": true,
          "description": "Full name of the member"
        },
        "role": {
          "enum": [
            "MEMBER",
            "ADMIN",
            "DELETED"
          ],
          "type": "string",
          "description": "Role of the member within the organization.\n\n<table>\n  <thead>\n    <tr>\n      <th>Role</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n    <tr>\n      <td><code>MEMBER</code></td>\n      <td>Limited permissions. Can view their own reward and order histories only.</td>\n    </tr>\n    <tr>\n      <td><code>ADMIN</code></td>\n      <td>Update organization settings, invite other members to the organization, and view all member order and reward histories within their organization.</td>\n    </tr>\n    <tr>\n      <td><code>DELETED</code></td>\n      <td>No longer a member of this organization.</td>\n    </tr>\n  <tbody>\n  </tbody>\n</table>\n"
        },
        "email": {
          "type": "string",
          "format": "email",
          "example": "jane@example.com",
          "description": "Email address of the member"
        },
        "events": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "enum": [
                  "created",
                  "last_login"
                ],
                "type": "string",
                "example": "created",
                "description": "Event type"
              },
              "date_utc": {
                "type": "string",
                "format": "date-time",
                "example": "2021-08-02T11:05:59Z",
                "nullable": true,
                "description": "Timestamp when the event happened"
              }
            }
          },
          "description": "List of events related to the member."
        },
        "status": {
          "enum": [
            "REGISTERED",
            "INVITED"
          ],
          "type": "string",
          "example": "INVITED",
          "description": "Current status of the member's account.\n\nWhen creating a member it starts out in the status `INVITED`. As soon as that member open the invitation link and registers an account, the status switches to `REGISTERED`.\n"
        }
      },
      "description": "Each organization has one or more users that can access and manage that organization. These users are called members.\n\nMembers can take actions via the Tremendous web dashboard directly.\n\nThese actions include adding funding sources to the organization, creating Campaigns, and more.\n"
    }
  }
}
object MembersListMembers401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object MembersListMembers429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object MembersListMembers500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object MembersListMembersResponse
{
  "type": "object",
  "required": [
    "members"
  ],
  "properties": {
    "members": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "email",
          "role",
          "status"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "name": {
            "type": "string",
            "example": "Jane Doe",
            "nullable": true,
            "description": "Full name of the member"
          },
          "role": {
            "enum": [
              "MEMBER",
              "ADMIN",
              "DELETED"
            ],
            "type": "string",
            "description": "Role of the member within the organization.\n\n<table>\n  <thead>\n    <tr>\n      <th>Role</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n    <tr>\n      <td><code>MEMBER</code></td>\n      <td>Limited permissions. Can view their own reward and order histories only.</td>\n    </tr>\n    <tr>\n      <td><code>ADMIN</code></td>\n      <td>Update organization settings, invite other members to the organization, and view all member order and reward histories within their organization.</td>\n    </tr>\n    <tr>\n      <td><code>DELETED</code></td>\n      <td>No longer a member of this organization.</td>\n    </tr>\n  <tbody>\n  </tbody>\n</table>\n"
          },
          "email": {
            "type": "string",
            "format": "email",
            "example": "jane@example.com",
            "description": "Email address of the member"
          },
          "status": {
            "enum": [
              "REGISTERED",
              "INVITED"
            ],
            "type": "string",
            "example": "INVITED",
            "description": "Current status of the member's account.\n\nWhen creating a member it starts out in the status `INVITED`. As soon as that member open the invitation link and registers an account, the status switches to `REGISTERED`.\n"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "example": "2021-08-02T11:05:59Z",
            "description": "Timestamp when this member was created.\n\nThe `created_at` timestamp is **NOT** returned when retrieving a member (but is part of the response when listing or creating members).\n"
          },
          "last_login_at": {
            "type": "string",
            "format": "date-time",
            "example": "2021-08-02T11:05:59Z",
            "nullable": true,
            "description": "Timestamp when this member most recently logged into the dashboard of the organization associated with this API key.\n"
          }
        },
        "description": "Each organization has one or more users that can access and manage that organization. These users are called members.\n\nMembers can take actions via the Tremendous web dashboard directly.\n\nThese actions include adding funding sources to the organization, creating Campaigns, and more.\n"
      }
    }
  }
}
string NullableTremendousId
{
  "type": "string",
  "example": "SOMEIDSOMEID",
  "pattern": "[A-Z0-9]{4,20}",
  "nullable": true,
  "readOnly": true
}
object Order
{
  "type": "object",
  "required": [
    "id",
    "created_at",
    "status"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the order"
    },
    "reward": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "readOnly": true,
          "description": "Tremendous ID of the reward"
        },
        "value": {
          "type": "object",
          "example": {
            "denomination": 50,
            "currency_code": "USD"
          },
          "required": [
            "denomination",
            "currency_code"
          ],
          "properties": {
            "denomination": {
              "type": "number",
              "format": "double",
              "description": "Amount of the reward"
            },
            "currency_code": {
              "enum": [
                "USD",
                "CAD",
                "EUR",
                "AED",
                "AFN",
                "ALL",
                "AMD",
                "ARS",
                "AUD",
                "AZN",
                "BAM",
                "BDT",
                "BGN",
                "BHD",
                "BIF",
                "BND",
                "BOB",
                "BRL",
                "BWP",
                "BYR",
                "BZD",
                "CDF",
                "CHF",
                "CLP",
                "CNY",
                "COP",
                "CRC",
                "CVE",
                "CZK",
                "DJF",
                "DKK",
                "DOP",
                "DZD",
                "EEK",
                "EGP",
                "ERN",
                "ETB",
                "GBP",
                "GEL",
                "GHS",
                "GNF",
                "GTQ",
                "HKD",
                "HNL",
                "HRK",
                "HUF",
                "IDR",
                "ILS",
                "INR",
                "IQD",
                "IRR",
                "ISK",
                "JMD",
                "JOD",
                "JPY",
                "KES",
                "KHR",
                "KRW",
                "KWD",
                "KZT",
                "LBP",
                "LKR",
                "LTL",
                "LVL",
                "MAD",
                "MDL",
                "MGA",
                "MKD",
                "MMK",
                "MOP",
                "MUR",
                "MXN",
                "MYR",
                "MZN",
                "NAD",
                "NGN",
                "NIO",
                "NOK",
                "NPR",
                "NZD",
                "OMR",
                "PAB",
                "PEN",
                "PHP",
                "PKR",
                "PLN",
                "PYG",
                "QAR",
                "RON",
                "RSD",
                "RUB",
                "RWF",
                "SAR",
                "SDG",
                "SEK",
                "SGD",
                "SOS",
                "SYP",
                "THB",
                "TND",
                "TOP",
                "TRY",
                "TTD",
                "TWD",
                "TZS",
                "UAH",
                "UGX",
                "UYU",
                "UZS",
                "VEF",
                "VND",
                "XAF",
                "XOF",
                "YER",
                "ZAR",
                "ZMK"
              ],
              "type": "string",
              "example": "USD",
              "description": "Currency of the reward"
            }
          }
        },
        "delivery": {
          "type": "object",
          "required": [
            "method",
            "status"
          ],
          "properties": {
            "method": {
              "enum": [
                "EMAIL",
                "LINK",
                "PHONE"
              ],
              "type": "string",
              "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
            },
            "status": {
              "enum": [
                "SCHEDULED",
                "FAILED",
                "SUCCEEDED",
                "PENDING"
              ],
              "type": "string",
              "readOnly": true,
              "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
            }
          },
          "description": "Details on how the reward is delivered to the recipient.\n"
        },
        "order_id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "readOnly": true,
          "description": "Tremendous ID of the order this reward is part of."
        },
        "products": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}",
            "readOnly": false,
            "writeOnly": true
          },
          "minItems": 1,
          "writeOnly": true,
          "description": "List of IDs of product (different gift cards, charity, etc.) that will be available\nto the recipient to choose from.\n\nProviding a `products` array will override the products made available by the campaign\nspecified using the `campaign_id` property unless the `products` array is empty. It will\n_not_ override other campaign attributes, like the message and customization of the look and feel.\n"
        },
        "recipient": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "example": "John Doe Jr.",
              "description": "Name of the recipient"
            },
            "email": {
              "type": "string",
              "example": "john.doe@example.com",
              "description": "Email address of the recipient"
            },
            "phone": {
              "type": "string",
              "example": "123-456-7890",
              "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
            }
          },
          "description": "Details of the recipient of the reward"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "readOnly": true,
          "description": "Date the reward was created"
        },
        "deliver_at": {
          "type": "string",
          "format": "date",
          "example": "2023-12-31",
          "pattern": "YYYY-MM-DD",
          "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
        },
        "campaign_id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "nullable": true,
          "readOnly": false,
          "writeOnly": true,
          "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
        },
        "custom_fields": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "SOMEIDSOMEID",
                "pattern": "[A-Z0-9]{4,20}",
                "readOnly": false,
                "description": "Tremendous ID of the custom field"
              },
              "label": {
                "type": "string",
                "example": "harry_potter_house",
                "readOnly": false,
                "description": "Label of the custom field"
              },
              "value": {
                "type": "string",
                "example": "Hufflepuff",
                "nullable": true,
                "readOnly": false,
                "description": "Value of the custom field"
              }
            },
            "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
          }
        }
      },
      "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
    },
    "status": {
      "enum": [
        "CANCELED",
        "CART",
        "EXECUTED",
        "FAILED",
        "PENDING APPROVAL",
        "PENDING INTERNAL PAYMENT APPROVAL"
      ],
      "type": "string",
      "readOnly": true,
      "description": "Execution status of a given order\n\n<table>\n  <thead>\n    <tr>\n      <th>\n        Status\n      </th>\n      <th>\n        Description\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <code>\n          CANCELED\n        </code>\n      </td>\n      <td>\n        The order and all of its rewards were canceled.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          CART\n        </code>\n      </td>\n      <td>\n        The order has been created, but hasn't yet been processed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          EXECUTED\n        </code>\n      </td>\n      <td>\n        The order has been executed. Payment has been handled and rewards are being delivered (if applicable).\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          FAILED\n        </code>\n      </td>\n      <td>\n        The order could not be processed due to an error. E.g. due to insufficient funds in the account.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but needs approval to be executed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING INTERNAL PAYMENT APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but it is under review and requires approval from our team.\n      </td>\n    </tr>\n\n  </tbody>\n</table>\n"
    },
    "payment": {
      "type": "object",
      "properties": {
        "fees": {
          "type": "number",
          "format": "double",
          "example": 2.5,
          "minimum": 0,
          "readOnly": true,
          "description": "Fees for the order (in USD)"
        },
        "total": {
          "type": "number",
          "format": "double",
          "example": 52.5,
          "minimum": 0,
          "readOnly": true,
          "description": "Total price of the order including fees (in USD)"
        },
        "refund": {
          "type": "object",
          "required": [
            "total"
          ],
          "properties": {
            "total": {
              "type": "number",
              "format": "double",
              "example": 52.5,
              "minimum": 0,
              "readOnly": true,
              "description": "Total amount of the order refunds (in USD)"
            }
          },
          "description": "Breakdown of the order refunds (total amount in USD, independent from the currency of the ordered rewards).\nNote that this property will only appear for canceled orders or orders with canceled rewards.\n"
        },
        "channel": {
          "enum": [
            "UI",
            "API",
            "EMBED",
            "DECIPHER",
            "QUALTRICS",
            "TYPEFORM",
            "SURVEY MONKEY"
          ],
          "type": "string",
          "description": "Name of the channel in which the order was created"
        },
        "subtotal": {
          "type": "number",
          "format": "double",
          "example": 50,
          "minimum": 0,
          "readOnly": true,
          "description": "Total price of the order before fees (in USD)"
        }
      },
      "description": "Cost breakdown of the order (cost of rewards + fees). Cost and fees are always denominated in USD, independent from the currency of the ordered rewards.\nNote that this property will only appear for processed orders (`status` is `EXECUTED`)."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Date the order has been created"
    },
    "invoice_id": {
      "type": "string",
      "example": "2E59A82B-0001",
      "readOnly": true,
      "description": "The ID for the invoice associated with this order"
    },
    "campaign_id": {
      "type": "string",
      "example": "IVM0I3WNJJL0",
      "pattern": "[A-Z0-9]{4,20}",
      "nullable": true,
      "readOnly": true,
      "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
    },
    "external_id": {
      "type": "string",
      "example": "Your-Individual-Identifier-for-This-Order",
      "nullable": true,
      "description": "Reference for this order, supplied by the customer.\n\nWhen set, `external_id` makes order idempotent. All requests that use the same `external_id`\nafter the initial order creation, will result in a response that returns the data of the\ninitially created order. The response will have a `201` response code. These responses\n**fail** to create any further orders.\n\nIt also allows for retrieving by `external_id` instead of `id` only.\n"
    }
  },
  "description": "An order wraps around the fulfilment of one or more rewards."
}
object OrderBase
{
  "type": "object",
  "required": [
    "id",
    "created_at",
    "status"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the order"
    },
    "status": {
      "enum": [
        "CANCELED",
        "CART",
        "EXECUTED",
        "FAILED",
        "PENDING APPROVAL",
        "PENDING INTERNAL PAYMENT APPROVAL"
      ],
      "type": "string",
      "readOnly": true,
      "description": "Execution status of a given order\n\n<table>\n  <thead>\n    <tr>\n      <th>\n        Status\n      </th>\n      <th>\n        Description\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <code>\n          CANCELED\n        </code>\n      </td>\n      <td>\n        The order and all of its rewards were canceled.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          CART\n        </code>\n      </td>\n      <td>\n        The order has been created, but hasn't yet been processed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          EXECUTED\n        </code>\n      </td>\n      <td>\n        The order has been executed. Payment has been handled and rewards are being delivered (if applicable).\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          FAILED\n        </code>\n      </td>\n      <td>\n        The order could not be processed due to an error. E.g. due to insufficient funds in the account.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but needs approval to be executed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING INTERNAL PAYMENT APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but it is under review and requires approval from our team.\n      </td>\n    </tr>\n\n  </tbody>\n</table>\n"
    },
    "payment": {
      "type": "object",
      "properties": {
        "fees": {
          "type": "number",
          "format": "double",
          "example": 2.5,
          "minimum": 0,
          "readOnly": true,
          "description": "Fees for the order (in USD)"
        },
        "total": {
          "type": "number",
          "format": "double",
          "example": 52.5,
          "minimum": 0,
          "readOnly": true,
          "description": "Total price of the order including fees (in USD)"
        },
        "refund": {
          "type": "object",
          "required": [
            "total"
          ],
          "properties": {
            "total": {
              "type": "number",
              "format": "double",
              "example": 52.5,
              "minimum": 0,
              "readOnly": true,
              "description": "Total amount of the order refunds (in USD)"
            }
          },
          "description": "Breakdown of the order refunds (total amount in USD, independent from the currency of the ordered rewards).\nNote that this property will only appear for canceled orders or orders with canceled rewards.\n"
        },
        "channel": {
          "enum": [
            "UI",
            "API",
            "EMBED",
            "DECIPHER",
            "QUALTRICS",
            "TYPEFORM",
            "SURVEY MONKEY"
          ],
          "type": "string",
          "description": "Name of the channel in which the order was created"
        },
        "subtotal": {
          "type": "number",
          "format": "double",
          "example": 50,
          "minimum": 0,
          "readOnly": true,
          "description": "Total price of the order before fees (in USD)"
        }
      },
      "description": "Cost breakdown of the order (cost of rewards + fees). Cost and fees are always denominated in USD, independent from the currency of the ordered rewards.\nNote that this property will only appear for processed orders (`status` is `EXECUTED`)."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Date the order has been created"
    },
    "invoice_id": {
      "type": "string",
      "example": "2E59A82B-0001",
      "readOnly": true,
      "description": "The ID for the invoice associated with this order"
    },
    "campaign_id": {
      "type": "string",
      "example": "IVM0I3WNJJL0",
      "pattern": "[A-Z0-9]{4,20}",
      "nullable": true,
      "readOnly": true,
      "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
    },
    "external_id": {
      "type": "string",
      "example": "Your-Individual-Identifier-for-This-Order",
      "nullable": true,
      "description": "Reference for this order, supplied by the customer.\n\nWhen set, `external_id` makes order idempotent. All requests that use the same `external_id`\nafter the initial order creation, will result in a response that returns the data of the\ninitially created order. The response will have a `201` response code. These responses\n**fail** to create any further orders.\n\nIt also allows for retrieving by `external_id` instead of `id` only.\n"
    }
  },
  "description": "An order wraps around the fulfilment of one or more rewards."
}
object OrderForCreate
{
  "type": "object",
  "required": [
    "payment",
    "reward"
  ],
  "properties": {
    "reward": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "readOnly": true,
          "description": "Tremendous ID of the reward"
        },
        "value": {
          "type": "object",
          "example": {
            "denomination": 50,
            "currency_code": "USD"
          },
          "required": [
            "denomination",
            "currency_code"
          ],
          "properties": {
            "denomination": {
              "type": "number",
              "format": "double",
              "description": "Amount of the reward"
            },
            "currency_code": {
              "enum": [
                "USD",
                "CAD",
                "EUR",
                "AED",
                "AFN",
                "ALL",
                "AMD",
                "ARS",
                "AUD",
                "AZN",
                "BAM",
                "BDT",
                "BGN",
                "BHD",
                "BIF",
                "BND",
                "BOB",
                "BRL",
                "BWP",
                "BYR",
                "BZD",
                "CDF",
                "CHF",
                "CLP",
                "CNY",
                "COP",
                "CRC",
                "CVE",
                "CZK",
                "DJF",
                "DKK",
                "DOP",
                "DZD",
                "EEK",
                "EGP",
                "ERN",
                "ETB",
                "GBP",
                "GEL",
                "GHS",
                "GNF",
                "GTQ",
                "HKD",
                "HNL",
                "HRK",
                "HUF",
                "IDR",
                "ILS",
                "INR",
                "IQD",
                "IRR",
                "ISK",
                "JMD",
                "JOD",
                "JPY",
                "KES",
                "KHR",
                "KRW",
                "KWD",
                "KZT",
                "LBP",
                "LKR",
                "LTL",
                "LVL",
                "MAD",
                "MDL",
                "MGA",
                "MKD",
                "MMK",
                "MOP",
                "MUR",
                "MXN",
                "MYR",
                "MZN",
                "NAD",
                "NGN",
                "NIO",
                "NOK",
                "NPR",
                "NZD",
                "OMR",
                "PAB",
                "PEN",
                "PHP",
                "PKR",
                "PLN",
                "PYG",
                "QAR",
                "RON",
                "RSD",
                "RUB",
                "RWF",
                "SAR",
                "SDG",
                "SEK",
                "SGD",
                "SOS",
                "SYP",
                "THB",
                "TND",
                "TOP",
                "TRY",
                "TTD",
                "TWD",
                "TZS",
                "UAH",
                "UGX",
                "UYU",
                "UZS",
                "VEF",
                "VND",
                "XAF",
                "XOF",
                "YER",
                "ZAR",
                "ZMK"
              ],
              "type": "string",
              "example": "USD",
              "description": "Currency of the reward"
            }
          }
        },
        "delivery": {
          "type": "object",
          "properties": {
            "method": {
              "enum": [
                "EMAIL",
                "LINK",
                "PHONE"
              ],
              "type": "string",
              "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
            }
          },
          "description": "Details on how the reward is delivered to the recipient.\n"
        },
        "language": {
          "type": "string",
          "example": "de",
          "description": "Set this to translate the redemption experience for this reward. Pass a 2-letter [ISO-639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) for the desired language. Defaults to `en`.\n"
        },
        "order_id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "readOnly": true,
          "description": "Tremendous ID of the order this reward is part of."
        },
        "products": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}",
            "readOnly": false,
            "writeOnly": true
          },
          "minItems": 1,
          "writeOnly": true,
          "description": "List of IDs of product (different gift cards, charity, etc.) that will be available\nto the recipient to choose from.\n\nProviding a `products` array will override the products made available by the campaign\nspecified using the `campaign_id` property unless the `products` array is empty. It will\n_not_ override other campaign attributes, like the message and customization of the look and feel.\n"
        },
        "recipient": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "example": "John Doe Jr.",
              "description": "Name of the recipient"
            },
            "email": {
              "type": "string",
              "example": "john.doe@example.com",
              "description": "Email address of the recipient"
            },
            "phone": {
              "type": "string",
              "example": "123-456-7890",
              "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
            }
          },
          "description": "Details of the recipient of the reward"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "readOnly": true,
          "description": "Date the reward was created"
        },
        "deliver_at": {
          "type": "string",
          "format": "date",
          "example": "2023-12-31",
          "pattern": "YYYY-MM-DD",
          "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
        },
        "campaign_id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "nullable": true,
          "readOnly": false,
          "writeOnly": true,
          "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
        },
        "custom_fields": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "SOMEIDSOMEID",
                "pattern": "[A-Z0-9]{4,20}",
                "readOnly": false,
                "description": "Tremendous ID of the custom field"
              },
              "label": {
                "type": "string",
                "example": "harry_potter_house",
                "readOnly": false,
                "description": "Label of the custom field"
              },
              "value": {
                "type": "string",
                "example": "Hufflepuff",
                "nullable": true,
                "readOnly": false,
                "description": "Value of the custom field"
              }
            },
            "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
          }
        }
      },
      "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
    },
    "payment": {
      "type": "object",
      "required": [
        "funding_source_id"
      ],
      "properties": {
        "funding_source_id": {
          "type": "string",
          "description": "Tremendous ID of the funding source that will be used to pay for the order. Use `balance` to use your Tremendous's balance."
        }
      }
    },
    "external_id": {
      "type": "string",
      "example": "Your-Individual-Identifier-for-This-Order",
      "nullable": true,
      "description": "Reference for this order, supplied by the customer.\n\nWhen set, `external_id` makes order idempotent. All requests that use the same `external_id`\nafter the initial order creation, will result in a response that returns the data of the\ninitially created order. The response will have a `201` response code. These responses\n**fail** to create any further orders.\n\nIt also allows for retrieving by `external_id` instead of `id` only.\n"
    }
  }
}
string OrderStatus
{
  "enum": [
    "CANCELED",
    "CART",
    "EXECUTED",
    "FAILED",
    "PENDING APPROVAL",
    "PENDING INTERNAL PAYMENT APPROVAL"
  ],
  "type": "string",
  "description": "Execution status of a given order\n\n<table>\n  <thead>\n    <tr>\n      <th>\n        Status\n      </th>\n      <th>\n        Description\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <code>\n          CANCELED\n        </code>\n      </td>\n      <td>\n        The order and all of its rewards were canceled.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          CART\n        </code>\n      </td>\n      <td>\n        The order has been created, but hasn't yet been processed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          EXECUTED\n        </code>\n      </td>\n      <td>\n        The order has been executed. Payment has been handled and rewards are being delivered (if applicable).\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          FAILED\n        </code>\n      </td>\n      <td>\n        The order could not be processed due to an error. E.g. due to insufficient funds in the account.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but needs approval to be executed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING INTERNAL PAYMENT APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but it is under review and requires approval from our team.\n      </td>\n    </tr>\n\n  </tbody>\n</table>\n"
}
object OrderWithLink
{
  "type": "object",
  "required": [
    "id",
    "created_at",
    "status"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the order"
    },
    "status": {
      "enum": [
        "CANCELED",
        "CART",
        "EXECUTED",
        "FAILED",
        "PENDING APPROVAL",
        "PENDING INTERNAL PAYMENT APPROVAL"
      ],
      "type": "string",
      "readOnly": true,
      "description": "Execution status of a given order\n\n<table>\n  <thead>\n    <tr>\n      <th>\n        Status\n      </th>\n      <th>\n        Description\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <code>\n          CANCELED\n        </code>\n      </td>\n      <td>\n        The order and all of its rewards were canceled.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          CART\n        </code>\n      </td>\n      <td>\n        The order has been created, but hasn't yet been processed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          EXECUTED\n        </code>\n      </td>\n      <td>\n        The order has been executed. Payment has been handled and rewards are being delivered (if applicable).\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          FAILED\n        </code>\n      </td>\n      <td>\n        The order could not be processed due to an error. E.g. due to insufficient funds in the account.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but needs approval to be executed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING INTERNAL PAYMENT APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but it is under review and requires approval from our team.\n      </td>\n    </tr>\n\n  </tbody>\n</table>\n"
    },
    "payment": {
      "type": "object",
      "properties": {
        "fees": {
          "type": "number",
          "format": "double",
          "example": 2.5,
          "minimum": 0,
          "readOnly": true,
          "description": "Fees for the order (in USD)"
        },
        "total": {
          "type": "number",
          "format": "double",
          "example": 52.5,
          "minimum": 0,
          "readOnly": true,
          "description": "Total price of the order including fees (in USD)"
        },
        "refund": {
          "type": "object",
          "required": [
            "total"
          ],
          "properties": {
            "total": {
              "type": "number",
              "format": "double",
              "example": 52.5,
              "minimum": 0,
              "readOnly": true,
              "description": "Total amount of the order refunds (in USD)"
            }
          },
          "description": "Breakdown of the order refunds (total amount in USD, independent from the currency of the ordered rewards).\nNote that this property will only appear for canceled orders or orders with canceled rewards.\n"
        },
        "channel": {
          "enum": [
            "UI",
            "API",
            "EMBED",
            "DECIPHER",
            "QUALTRICS",
            "TYPEFORM",
            "SURVEY MONKEY"
          ],
          "type": "string",
          "description": "Name of the channel in which the order was created"
        },
        "subtotal": {
          "type": "number",
          "format": "double",
          "example": 50,
          "minimum": 0,
          "readOnly": true,
          "description": "Total price of the order before fees (in USD)"
        }
      },
      "description": "Cost breakdown of the order (cost of rewards + fees). Cost and fees are always denominated in USD, independent from the currency of the ordered rewards.\nNote that this property will only appear for processed orders (`status` is `EXECUTED`)."
    },
    "rewards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}",
            "readOnly": true,
            "description": "Tremendous ID of the reward"
          },
          "value": {
            "type": "object",
            "example": {
              "denomination": 50,
              "currency_code": "USD"
            },
            "required": [
              "denomination",
              "currency_code"
            ],
            "properties": {
              "denomination": {
                "type": "number",
                "format": "double",
                "description": "Amount of the reward"
              },
              "currency_code": {
                "enum": [
                  "USD",
                  "CAD",
                  "EUR",
                  "AED",
                  "AFN",
                  "ALL",
                  "AMD",
                  "ARS",
                  "AUD",
                  "AZN",
                  "BAM",
                  "BDT",
                  "BGN",
                  "BHD",
                  "BIF",
                  "BND",
                  "BOB",
                  "BRL",
                  "BWP",
                  "BYR",
                  "BZD",
                  "CDF",
                  "CHF",
                  "CLP",
                  "CNY",
                  "COP",
                  "CRC",
                  "CVE",
                  "CZK",
                  "DJF",
                  "DKK",
                  "DOP",
                  "DZD",
                  "EEK",
                  "EGP",
                  "ERN",
                  "ETB",
                  "GBP",
                  "GEL",
                  "GHS",
                  "GNF",
                  "GTQ",
                  "HKD",
                  "HNL",
                  "HRK",
                  "HUF",
                  "IDR",
                  "ILS",
                  "INR",
                  "IQD",
                  "IRR",
                  "ISK",
                  "JMD",
                  "JOD",
                  "JPY",
                  "KES",
                  "KHR",
                  "KRW",
                  "KWD",
                  "KZT",
                  "LBP",
                  "LKR",
                  "LTL",
                  "LVL",
                  "MAD",
                  "MDL",
                  "MGA",
                  "MKD",
                  "MMK",
                  "MOP",
                  "MUR",
                  "MXN",
                  "MYR",
                  "MZN",
                  "NAD",
                  "NGN",
                  "NIO",
                  "NOK",
                  "NPR",
                  "NZD",
                  "OMR",
                  "PAB",
                  "PEN",
                  "PHP",
                  "PKR",
                  "PLN",
                  "PYG",
                  "QAR",
                  "RON",
                  "RSD",
                  "RUB",
                  "RWF",
                  "SAR",
                  "SDG",
                  "SEK",
                  "SGD",
                  "SOS",
                  "SYP",
                  "THB",
                  "TND",
                  "TOP",
                  "TRY",
                  "TTD",
                  "TWD",
                  "TZS",
                  "UAH",
                  "UGX",
                  "UYU",
                  "UZS",
                  "VEF",
                  "VND",
                  "XAF",
                  "XOF",
                  "YER",
                  "ZAR",
                  "ZMK"
                ],
                "type": "string",
                "example": "USD",
                "description": "Currency of the reward"
              }
            }
          },
          "delivery": {
            "type": "object",
            "required": [
              "method",
              "status"
            ],
            "properties": {
              "link": {
                "type": "string",
                "example": "https://testflight.tremendous.com/rewards/payout/z67jic92r",
                "readOnly": true,
                "description": "Link to redeem the reward at. You need to deliver this link to the recipient.\n\nOnly available for rewards for which the `method` for delivery is set to `LINK`.\n"
              },
              "method": {
                "enum": [
                  "EMAIL",
                  "LINK",
                  "PHONE"
                ],
                "type": "string",
                "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
              },
              "status": {
                "enum": [
                  "SCHEDULED",
                  "FAILED",
                  "SUCCEEDED",
                  "PENDING"
                ],
                "type": "string",
                "readOnly": true,
                "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
              }
            },
            "description": "Details on how the reward is delivered to the recipient.\n"
          },
          "order_id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}",
            "readOnly": true,
            "description": "Tremendous ID of the order this reward is part of."
          },
          "products": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "SOMEIDSOMEID",
              "pattern": "[A-Z0-9]{4,20}",
              "readOnly": false,
              "writeOnly": true
            },
            "minItems": 1,
            "writeOnly": true,
            "description": "List of IDs of product (different gift cards, charity, etc.) that will be available\nto the recipient to choose from.\n\nProviding a `products` array will override the products made available by the campaign\nspecified using the `campaign_id` property unless the `products` array is empty. It will\n_not_ override other campaign attributes, like the message and customization of the look and feel.\n"
          },
          "recipient": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "example": "John Doe Jr.",
                "description": "Name of the recipient"
              },
              "email": {
                "type": "string",
                "example": "john.doe@example.com",
                "description": "Email address of the recipient"
              },
              "phone": {
                "type": "string",
                "example": "123-456-7890",
                "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
              }
            },
            "description": "Details of the recipient of the reward"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "description": "Date the reward was created"
          },
          "deliver_at": {
            "type": "string",
            "format": "date",
            "example": "2023-12-31",
            "pattern": "YYYY-MM-DD",
            "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
          },
          "campaign_id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}",
            "nullable": true,
            "readOnly": false,
            "writeOnly": true,
            "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
          },
          "custom_fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "example": "SOMEIDSOMEID",
                  "pattern": "[A-Z0-9]{4,20}",
                  "readOnly": false,
                  "description": "Tremendous ID of the custom field"
                },
                "label": {
                  "type": "string",
                  "example": "harry_potter_house",
                  "readOnly": false,
                  "description": "Label of the custom field"
                },
                "value": {
                  "type": "string",
                  "example": "Hufflepuff",
                  "nullable": true,
                  "readOnly": false,
                  "description": "Value of the custom field"
                }
              },
              "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
            }
          }
        },
        "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
      },
      "minItems": 1
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Date the order has been created"
    },
    "invoice_id": {
      "type": "string",
      "example": "2E59A82B-0001",
      "readOnly": true,
      "description": "The ID for the invoice associated with this order"
    },
    "campaign_id": {
      "type": "string",
      "example": "IVM0I3WNJJL0",
      "pattern": "[A-Z0-9]{4,20}",
      "nullable": true,
      "readOnly": true,
      "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
    },
    "external_id": {
      "type": "string",
      "example": "Your-Individual-Identifier-for-This-Order",
      "nullable": true,
      "description": "Reference for this order, supplied by the customer.\n\nWhen set, `external_id` makes order idempotent. All requests that use the same `external_id`\nafter the initial order creation, will result in a response that returns the data of the\ninitially created order. The response will have a `201` response code. These responses\n**fail** to create any further orders.\n\nIt also allows for retrieving by `external_id` instead of `id` only.\n"
    }
  },
  "description": "An order wraps around the fulfilment of one or more rewards."
}
object OrderWithoutLink
{
  "type": "object",
  "required": [
    "id",
    "created_at",
    "status"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the order"
    },
    "reward": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "readOnly": true,
          "description": "Tremendous ID of the reward"
        },
        "value": {
          "type": "object",
          "example": {
            "denomination": 50,
            "currency_code": "USD"
          },
          "required": [
            "denomination",
            "currency_code"
          ],
          "properties": {
            "denomination": {
              "type": "number",
              "format": "double",
              "description": "Amount of the reward"
            },
            "currency_code": {
              "enum": [
                "USD",
                "CAD",
                "EUR",
                "AED",
                "AFN",
                "ALL",
                "AMD",
                "ARS",
                "AUD",
                "AZN",
                "BAM",
                "BDT",
                "BGN",
                "BHD",
                "BIF",
                "BND",
                "BOB",
                "BRL",
                "BWP",
                "BYR",
                "BZD",
                "CDF",
                "CHF",
                "CLP",
                "CNY",
                "COP",
                "CRC",
                "CVE",
                "CZK",
                "DJF",
                "DKK",
                "DOP",
                "DZD",
                "EEK",
                "EGP",
                "ERN",
                "ETB",
                "GBP",
                "GEL",
                "GHS",
                "GNF",
                "GTQ",
                "HKD",
                "HNL",
                "HRK",
                "HUF",
                "IDR",
                "ILS",
                "INR",
                "IQD",
                "IRR",
                "ISK",
                "JMD",
                "JOD",
                "JPY",
                "KES",
                "KHR",
                "KRW",
                "KWD",
                "KZT",
                "LBP",
                "LKR",
                "LTL",
                "LVL",
                "MAD",
                "MDL",
                "MGA",
                "MKD",
                "MMK",
                "MOP",
                "MUR",
                "MXN",
                "MYR",
                "MZN",
                "NAD",
                "NGN",
                "NIO",
                "NOK",
                "NPR",
                "NZD",
                "OMR",
                "PAB",
                "PEN",
                "PHP",
                "PKR",
                "PLN",
                "PYG",
                "QAR",
                "RON",
                "RSD",
                "RUB",
                "RWF",
                "SAR",
                "SDG",
                "SEK",
                "SGD",
                "SOS",
                "SYP",
                "THB",
                "TND",
                "TOP",
                "TRY",
                "TTD",
                "TWD",
                "TZS",
                "UAH",
                "UGX",
                "UYU",
                "UZS",
                "VEF",
                "VND",
                "XAF",
                "XOF",
                "YER",
                "ZAR",
                "ZMK"
              ],
              "type": "string",
              "example": "USD",
              "description": "Currency of the reward"
            }
          }
        },
        "delivery": {
          "type": "object",
          "required": [
            "method",
            "status"
          ],
          "properties": {
            "method": {
              "enum": [
                "EMAIL",
                "LINK",
                "PHONE"
              ],
              "type": "string",
              "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
            },
            "status": {
              "enum": [
                "SCHEDULED",
                "FAILED",
                "SUCCEEDED",
                "PENDING"
              ],
              "type": "string",
              "readOnly": true,
              "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
            }
          },
          "description": "Details on how the reward is delivered to the recipient.\n"
        },
        "order_id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "readOnly": true,
          "description": "Tremendous ID of the order this reward is part of."
        },
        "products": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}",
            "readOnly": false,
            "writeOnly": true
          },
          "minItems": 1,
          "writeOnly": true,
          "description": "List of IDs of product (different gift cards, charity, etc.) that will be available\nto the recipient to choose from.\n\nProviding a `products` array will override the products made available by the campaign\nspecified using the `campaign_id` property unless the `products` array is empty. It will\n_not_ override other campaign attributes, like the message and customization of the look and feel.\n"
        },
        "recipient": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "example": "John Doe Jr.",
              "description": "Name of the recipient"
            },
            "email": {
              "type": "string",
              "example": "john.doe@example.com",
              "description": "Email address of the recipient"
            },
            "phone": {
              "type": "string",
              "example": "123-456-7890",
              "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
            }
          },
          "description": "Details of the recipient of the reward"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "readOnly": true,
          "description": "Date the reward was created"
        },
        "deliver_at": {
          "type": "string",
          "format": "date",
          "example": "2023-12-31",
          "pattern": "YYYY-MM-DD",
          "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
        },
        "campaign_id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "nullable": true,
          "readOnly": false,
          "writeOnly": true,
          "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
        },
        "custom_fields": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "SOMEIDSOMEID",
                "pattern": "[A-Z0-9]{4,20}",
                "readOnly": false,
                "description": "Tremendous ID of the custom field"
              },
              "label": {
                "type": "string",
                "example": "harry_potter_house",
                "readOnly": false,
                "description": "Label of the custom field"
              },
              "value": {
                "type": "string",
                "example": "Hufflepuff",
                "nullable": true,
                "readOnly": false,
                "description": "Value of the custom field"
              }
            },
            "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
          }
        }
      },
      "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
    },
    "status": {
      "enum": [
        "CANCELED",
        "CART",
        "EXECUTED",
        "FAILED",
        "PENDING APPROVAL",
        "PENDING INTERNAL PAYMENT APPROVAL"
      ],
      "type": "string",
      "readOnly": true,
      "description": "Execution status of a given order\n\n<table>\n  <thead>\n    <tr>\n      <th>\n        Status\n      </th>\n      <th>\n        Description\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <code>\n          CANCELED\n        </code>\n      </td>\n      <td>\n        The order and all of its rewards were canceled.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          CART\n        </code>\n      </td>\n      <td>\n        The order has been created, but hasn't yet been processed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          EXECUTED\n        </code>\n      </td>\n      <td>\n        The order has been executed. Payment has been handled and rewards are being delivered (if applicable).\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          FAILED\n        </code>\n      </td>\n      <td>\n        The order could not be processed due to an error. E.g. due to insufficient funds in the account.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but needs approval to be executed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING INTERNAL PAYMENT APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but it is under review and requires approval from our team.\n      </td>\n    </tr>\n\n  </tbody>\n</table>\n"
    },
    "payment": {
      "type": "object",
      "properties": {
        "fees": {
          "type": "number",
          "format": "double",
          "example": 2.5,
          "minimum": 0,
          "readOnly": true,
          "description": "Fees for the order (in USD)"
        },
        "total": {
          "type": "number",
          "format": "double",
          "example": 52.5,
          "minimum": 0,
          "readOnly": true,
          "description": "Total price of the order including fees (in USD)"
        },
        "refund": {
          "type": "object",
          "required": [
            "total"
          ],
          "properties": {
            "total": {
              "type": "number",
              "format": "double",
              "example": 52.5,
              "minimum": 0,
              "readOnly": true,
              "description": "Total amount of the order refunds (in USD)"
            }
          },
          "description": "Breakdown of the order refunds (total amount in USD, independent from the currency of the ordered rewards).\nNote that this property will only appear for canceled orders or orders with canceled rewards.\n"
        },
        "channel": {
          "enum": [
            "UI",
            "API",
            "EMBED",
            "DECIPHER",
            "QUALTRICS",
            "TYPEFORM",
            "SURVEY MONKEY"
          ],
          "type": "string",
          "description": "Name of the channel in which the order was created"
        },
        "subtotal": {
          "type": "number",
          "format": "double",
          "example": 50,
          "minimum": 0,
          "readOnly": true,
          "description": "Total price of the order before fees (in USD)"
        }
      },
      "description": "Cost breakdown of the order (cost of rewards + fees). Cost and fees are always denominated in USD, independent from the currency of the ordered rewards.\nNote that this property will only appear for processed orders (`status` is `EXECUTED`)."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Date the order has been created"
    },
    "invoice_id": {
      "type": "string",
      "example": "2E59A82B-0001",
      "readOnly": true,
      "description": "The ID for the invoice associated with this order"
    },
    "campaign_id": {
      "type": "string",
      "example": "IVM0I3WNJJL0",
      "pattern": "[A-Z0-9]{4,20}",
      "nullable": true,
      "readOnly": true,
      "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
    },
    "external_id": {
      "type": "string",
      "example": "Your-Individual-Identifier-for-This-Order",
      "nullable": true,
      "description": "Reference for this order, supplied by the customer.\n\nWhen set, `external_id` makes order idempotent. All requests that use the same `external_id`\nafter the initial order creation, will result in a response that returns the data of the\ninitially created order. The response will have a `201` response code. These responses\n**fail** to create any further orders.\n\nIt also allows for retrieving by `external_id` instead of `id` only.\n"
    }
  },
  "description": "An order wraps around the fulfilment of one or more rewards."
}
object OrdersApproveOrderById401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersApproveOrderById402Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersApproveOrderById403Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Unsupported operation for this reward.",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersApproveOrderById404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersApproveOrderById422Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Order failed: validation failure",
      "payload": {
        "some_field": {
          "some_sub_field": "Something went wrong with this parameter"
        }
      }
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersApproveOrderById429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersApproveOrderById500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersApproveOrderByIdResponse
{
  "type": "object",
  "required": [
    "order"
  ],
  "properties": {
    "order": {
      "type": "object",
      "required": [
        "id",
        "created_at",
        "status"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "description": "Tremendous ID of the order"
        },
        "reward": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "example": "SOMEIDSOMEID",
              "pattern": "[A-Z0-9]{4,20}",
              "description": "Tremendous ID of the reward"
            },
            "value": {
              "type": "object",
              "example": {
                "denomination": 50,
                "currency_code": "USD"
              },
              "required": [
                "denomination",
                "currency_code"
              ],
              "properties": {
                "denomination": {
                  "type": "number",
                  "format": "double",
                  "description": "Amount of the reward"
                },
                "currency_code": {
                  "enum": [
                    "USD",
                    "CAD",
                    "EUR",
                    "AED",
                    "AFN",
                    "ALL",
                    "AMD",
                    "ARS",
                    "AUD",
                    "AZN",
                    "BAM",
                    "BDT",
                    "BGN",
                    "BHD",
                    "BIF",
                    "BND",
                    "BOB",
                    "BRL",
                    "BWP",
                    "BYR",
                    "BZD",
                    "CDF",
                    "CHF",
                    "CLP",
                    "CNY",
                    "COP",
                    "CRC",
                    "CVE",
                    "CZK",
                    "DJF",
                    "DKK",
                    "DOP",
                    "DZD",
                    "EEK",
                    "EGP",
                    "ERN",
                    "ETB",
                    "GBP",
                    "GEL",
                    "GHS",
                    "GNF",
                    "GTQ",
                    "HKD",
                    "HNL",
                    "HRK",
                    "HUF",
                    "IDR",
                    "ILS",
                    "INR",
                    "IQD",
                    "IRR",
                    "ISK",
                    "JMD",
                    "JOD",
                    "JPY",
                    "KES",
                    "KHR",
                    "KRW",
                    "KWD",
                    "KZT",
                    "LBP",
                    "LKR",
                    "LTL",
                    "LVL",
                    "MAD",
                    "MDL",
                    "MGA",
                    "MKD",
                    "MMK",
                    "MOP",
                    "MUR",
                    "MXN",
                    "MYR",
                    "MZN",
                    "NAD",
                    "NGN",
                    "NIO",
                    "NOK",
                    "NPR",
                    "NZD",
                    "OMR",
                    "PAB",
                    "PEN",
                    "PHP",
                    "PKR",
                    "PLN",
                    "PYG",
                    "QAR",
                    "RON",
                    "RSD",
                    "RUB",
                    "RWF",
                    "SAR",
                    "SDG",
                    "SEK",
                    "SGD",
                    "SOS",
                    "SYP",
                    "THB",
                    "TND",
                    "TOP",
                    "TRY",
                    "TTD",
                    "TWD",
                    "TZS",
                    "UAH",
                    "UGX",
                    "UYU",
                    "UZS",
                    "VEF",
                    "VND",
                    "XAF",
                    "XOF",
                    "YER",
                    "ZAR",
                    "ZMK"
                  ],
                  "type": "string",
                  "example": "USD",
                  "description": "Currency of the reward"
                }
              }
            },
            "delivery": {
              "type": "object",
              "required": [
                "method",
                "status"
              ],
              "properties": {
                "method": {
                  "enum": [
                    "EMAIL",
                    "LINK",
                    "PHONE"
                  ],
                  "type": "string",
                  "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
                },
                "status": {
                  "enum": [
                    "SCHEDULED",
                    "FAILED",
                    "SUCCEEDED",
                    "PENDING"
                  ],
                  "type": "string",
                  "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
                }
              },
              "description": "Details on how the reward is delivered to the recipient.\n"
            },
            "order_id": {
              "type": "string",
              "example": "SOMEIDSOMEID",
              "pattern": "[A-Z0-9]{4,20}",
              "description": "Tremendous ID of the order this reward is part of."
            },
            "recipient": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "example": "John Doe Jr.",
                  "description": "Name of the recipient"
                },
                "email": {
                  "type": "string",
                  "example": "john.doe@example.com",
                  "description": "Email address of the recipient"
                },
                "phone": {
                  "type": "string",
                  "example": "123-456-7890",
                  "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
                }
              },
              "description": "Details of the recipient of the reward"
            },
            "created_at": {
              "type": "string",
              "format": "date-time",
              "description": "Date the reward was created"
            },
            "deliver_at": {
              "type": "string",
              "format": "date",
              "example": "2023-12-31",
              "pattern": "YYYY-MM-DD",
              "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
            },
            "custom_fields": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "SOMEIDSOMEID",
                    "pattern": "[A-Z0-9]{4,20}",
                    "description": "Tremendous ID of the custom field"
                  },
                  "label": {
                    "type": "string",
                    "example": "harry_potter_house",
                    "description": "Label of the custom field"
                  },
                  "value": {
                    "type": "string",
                    "example": "Hufflepuff",
                    "nullable": true,
                    "description": "Value of the custom field"
                  }
                },
                "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
              }
            }
          },
          "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
        },
        "status": {
          "enum": [
            "CANCELED",
            "CART",
            "EXECUTED",
            "FAILED",
            "PENDING APPROVAL",
            "PENDING INTERNAL PAYMENT APPROVAL"
          ],
          "type": "string",
          "description": "Execution status of a given order\n\n<table>\n  <thead>\n    <tr>\n      <th>\n        Status\n      </th>\n      <th>\n        Description\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <code>\n          CANCELED\n        </code>\n      </td>\n      <td>\n        The order and all of its rewards were canceled.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          CART\n        </code>\n      </td>\n      <td>\n        The order has been created, but hasn't yet been processed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          EXECUTED\n        </code>\n      </td>\n      <td>\n        The order has been executed. Payment has been handled and rewards are being delivered (if applicable).\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          FAILED\n        </code>\n      </td>\n      <td>\n        The order could not be processed due to an error. E.g. due to insufficient funds in the account.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but needs approval to be executed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING INTERNAL PAYMENT APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but it is under review and requires approval from our team.\n      </td>\n    </tr>\n\n  </tbody>\n</table>\n"
        },
        "payment": {
          "type": "object",
          "properties": {
            "fees": {
              "type": "number",
              "format": "double",
              "example": 2.5,
              "minimum": 0,
              "description": "Fees for the order (in USD)"
            },
            "total": {
              "type": "number",
              "format": "double",
              "example": 52.5,
              "minimum": 0,
              "description": "Total price of the order including fees (in USD)"
            },
            "refund": {
              "type": "object",
              "required": [
                "total"
              ],
              "properties": {
                "total": {
                  "type": "number",
                  "format": "double",
                  "example": 52.5,
                  "minimum": 0,
                  "description": "Total amount of the order refunds (in USD)"
                }
              },
              "description": "Breakdown of the order refunds (total amount in USD, independent from the currency of the ordered rewards).\nNote that this property will only appear for canceled orders or orders with canceled rewards.\n"
            },
            "channel": {
              "enum": [
                "UI",
                "API",
                "EMBED",
                "DECIPHER",
                "QUALTRICS",
                "TYPEFORM",
                "SURVEY MONKEY"
              ],
              "type": "string",
              "description": "Name of the channel in which the order was created"
            },
            "subtotal": {
              "type": "number",
              "format": "double",
              "example": 50,
              "minimum": 0,
              "description": "Total price of the order before fees (in USD)"
            }
          },
          "description": "Cost breakdown of the order (cost of rewards + fees). Cost and fees are always denominated in USD, independent from the currency of the ordered rewards.\nNote that this property will only appear for processed orders (`status` is `EXECUTED`)."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Date the order has been created"
        },
        "invoice_id": {
          "type": "string",
          "example": "2E59A82B-0001",
          "description": "The ID for the invoice associated with this order"
        },
        "campaign_id": {
          "type": "string",
          "example": "IVM0I3WNJJL0",
          "pattern": "[A-Z0-9]{4,20}",
          "nullable": true,
          "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
        },
        "external_id": {
          "type": "string",
          "example": "Your-Individual-Identifier-for-This-Order",
          "nullable": true,
          "description": "Reference for this order, supplied by the customer.\n\nWhen set, `external_id` makes order idempotent. All requests that use the same `external_id`\nafter the initial order creation, will result in a response that returns the data of the\ninitially created order. The response will have a `201` response code. These responses\n**fail** to create any further orders.\n\nIt also allows for retrieving by `external_id` instead of `id` only.\n"
        }
      },
      "description": "An order wraps around the fulfilment of one or more rewards."
    }
  }
}
object OrdersCreateOrder201Response
{
  "type": "object",
  "required": [
    "order"
  ],
  "properties": {
    "order": {
      "type": "object",
      "required": [
        "id",
        "created_at",
        "status"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "description": "Tremendous ID of the order"
        },
        "reward": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "example": "SOMEIDSOMEID",
              "pattern": "[A-Z0-9]{4,20}",
              "description": "Tremendous ID of the reward"
            },
            "value": {
              "type": "object",
              "example": {
                "denomination": 50,
                "currency_code": "USD"
              },
              "required": [
                "denomination",
                "currency_code"
              ],
              "properties": {
                "denomination": {
                  "type": "number",
                  "format": "double",
                  "description": "Amount of the reward"
                },
                "currency_code": {
                  "enum": [
                    "USD",
                    "CAD",
                    "EUR",
                    "AED",
                    "AFN",
                    "ALL",
                    "AMD",
                    "ARS",
                    "AUD",
                    "AZN",
                    "BAM",
                    "BDT",
                    "BGN",
                    "BHD",
                    "BIF",
                    "BND",
                    "BOB",
                    "BRL",
                    "BWP",
                    "BYR",
                    "BZD",
                    "CDF",
                    "CHF",
                    "CLP",
                    "CNY",
                    "COP",
                    "CRC",
                    "CVE",
                    "CZK",
                    "DJF",
                    "DKK",
                    "DOP",
                    "DZD",
                    "EEK",
                    "EGP",
                    "ERN",
                    "ETB",
                    "GBP",
                    "GEL",
                    "GHS",
                    "GNF",
                    "GTQ",
                    "HKD",
                    "HNL",
                    "HRK",
                    "HUF",
                    "IDR",
                    "ILS",
                    "INR",
                    "IQD",
                    "IRR",
                    "ISK",
                    "JMD",
                    "JOD",
                    "JPY",
                    "KES",
                    "KHR",
                    "KRW",
                    "KWD",
                    "KZT",
                    "LBP",
                    "LKR",
                    "LTL",
                    "LVL",
                    "MAD",
                    "MDL",
                    "MGA",
                    "MKD",
                    "MMK",
                    "MOP",
                    "MUR",
                    "MXN",
                    "MYR",
                    "MZN",
                    "NAD",
                    "NGN",
                    "NIO",
                    "NOK",
                    "NPR",
                    "NZD",
                    "OMR",
                    "PAB",
                    "PEN",
                    "PHP",
                    "PKR",
                    "PLN",
                    "PYG",
                    "QAR",
                    "RON",
                    "RSD",
                    "RUB",
                    "RWF",
                    "SAR",
                    "SDG",
                    "SEK",
                    "SGD",
                    "SOS",
                    "SYP",
                    "THB",
                    "TND",
                    "TOP",
                    "TRY",
                    "TTD",
                    "TWD",
                    "TZS",
                    "UAH",
                    "UGX",
                    "UYU",
                    "UZS",
                    "VEF",
                    "VND",
                    "XAF",
                    "XOF",
                    "YER",
                    "ZAR",
                    "ZMK"
                  ],
                  "type": "string",
                  "example": "USD",
                  "description": "Currency of the reward"
                }
              }
            },
            "delivery": {
              "type": "object",
              "required": [
                "method",
                "status"
              ],
              "properties": {
                "method": {
                  "enum": [
                    "EMAIL",
                    "LINK",
                    "PHONE"
                  ],
                  "type": "string",
                  "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
                },
                "status": {
                  "enum": [
                    "SCHEDULED",
                    "FAILED",
                    "SUCCEEDED",
                    "PENDING"
                  ],
                  "type": "string",
                  "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
                }
              },
              "description": "Details on how the reward is delivered to the recipient.\n"
            },
            "order_id": {
              "type": "string",
              "example": "SOMEIDSOMEID",
              "pattern": "[A-Z0-9]{4,20}",
              "description": "Tremendous ID of the order this reward is part of."
            },
            "recipient": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "example": "John Doe Jr.",
                  "description": "Name of the recipient"
                },
                "email": {
                  "type": "string",
                  "example": "john.doe@example.com",
                  "description": "Email address of the recipient"
                },
                "phone": {
                  "type": "string",
                  "example": "123-456-7890",
                  "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
                }
              },
              "description": "Details of the recipient of the reward"
            },
            "created_at": {
              "type": "string",
              "format": "date-time",
              "description": "Date the reward was created"
            },
            "deliver_at": {
              "type": "string",
              "format": "date",
              "example": "2023-12-31",
              "pattern": "YYYY-MM-DD",
              "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
            },
            "custom_fields": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "SOMEIDSOMEID",
                    "pattern": "[A-Z0-9]{4,20}",
                    "description": "Tremendous ID of the custom field"
                  },
                  "label": {
                    "type": "string",
                    "example": "harry_potter_house",
                    "description": "Label of the custom field"
                  },
                  "value": {
                    "type": "string",
                    "example": "Hufflepuff",
                    "nullable": true,
                    "description": "Value of the custom field"
                  }
                },
                "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
              }
            }
          },
          "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
        },
        "status": {
          "enum": [
            "CANCELED",
            "CART",
            "EXECUTED",
            "FAILED",
            "PENDING APPROVAL",
            "PENDING INTERNAL PAYMENT APPROVAL"
          ],
          "type": "string",
          "description": "Execution status of a given order\n\n<table>\n  <thead>\n    <tr>\n      <th>\n        Status\n      </th>\n      <th>\n        Description\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <code>\n          CANCELED\n        </code>\n      </td>\n      <td>\n        The order and all of its rewards were canceled.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          CART\n        </code>\n      </td>\n      <td>\n        The order has been created, but hasn't yet been processed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          EXECUTED\n        </code>\n      </td>\n      <td>\n        The order has been executed. Payment has been handled and rewards are being delivered (if applicable).\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          FAILED\n        </code>\n      </td>\n      <td>\n        The order could not be processed due to an error. E.g. due to insufficient funds in the account.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but needs approval to be executed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING INTERNAL PAYMENT APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but it is under review and requires approval from our team.\n      </td>\n    </tr>\n\n  </tbody>\n</table>\n"
        },
        "payment": {
          "type": "object",
          "properties": {
            "fees": {
              "type": "number",
              "format": "double",
              "example": 2.5,
              "minimum": 0,
              "description": "Fees for the order (in USD)"
            },
            "total": {
              "type": "number",
              "format": "double",
              "example": 52.5,
              "minimum": 0,
              "description": "Total price of the order including fees (in USD)"
            },
            "refund": {
              "type": "object",
              "required": [
                "total"
              ],
              "properties": {
                "total": {
                  "type": "number",
                  "format": "double",
                  "example": 52.5,
                  "minimum": 0,
                  "description": "Total amount of the order refunds (in USD)"
                }
              },
              "description": "Breakdown of the order refunds (total amount in USD, independent from the currency of the ordered rewards).\nNote that this property will only appear for canceled orders or orders with canceled rewards.\n"
            },
            "channel": {
              "enum": [
                "UI",
                "API",
                "EMBED",
                "DECIPHER",
                "QUALTRICS",
                "TYPEFORM",
                "SURVEY MONKEY"
              ],
              "type": "string",
              "description": "Name of the channel in which the order was created"
            },
            "subtotal": {
              "type": "number",
              "format": "double",
              "example": 50,
              "minimum": 0,
              "description": "Total price of the order before fees (in USD)"
            }
          },
          "description": "Cost breakdown of the order (cost of rewards + fees). Cost and fees are always denominated in USD, independent from the currency of the ordered rewards.\nNote that this property will only appear for processed orders (`status` is `EXECUTED`)."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Date the order has been created"
        },
        "invoice_id": {
          "type": "string",
          "example": "2E59A82B-0001",
          "description": "The ID for the invoice associated with this order"
        },
        "campaign_id": {
          "type": "string",
          "example": "IVM0I3WNJJL0",
          "pattern": "[A-Z0-9]{4,20}",
          "nullable": true,
          "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
        },
        "external_id": {
          "type": "string",
          "example": "Your-Individual-Identifier-for-This-Order",
          "nullable": true,
          "description": "Reference for this order, supplied by the customer.\n\nWhen set, `external_id` makes order idempotent. All requests that use the same `external_id`\nafter the initial order creation, will result in a response that returns the data of the\ninitially created order. The response will have a `201` response code. These responses\n**fail** to create any further orders.\n\nIt also allows for retrieving by `external_id` instead of `id` only.\n"
        }
      },
      "description": "An order wraps around the fulfilment of one or more rewards."
    }
  }
}
object OrdersCreateOrder202Response
{
  "type": "object",
  "required": [
    "order"
  ],
  "properties": {
    "order": {
      "type": "object",
      "required": [
        "id",
        "created_at",
        "status"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "description": "Tremendous ID of the order"
        },
        "status": {
          "enum": [
            "CANCELED",
            "CART",
            "EXECUTED",
            "FAILED",
            "PENDING APPROVAL",
            "PENDING INTERNAL PAYMENT APPROVAL"
          ],
          "type": "string",
          "description": "Execution status of a given order\n\n<table>\n  <thead>\n    <tr>\n      <th>\n        Status\n      </th>\n      <th>\n        Description\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <code>\n          CANCELED\n        </code>\n      </td>\n      <td>\n        The order and all of its rewards were canceled.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          CART\n        </code>\n      </td>\n      <td>\n        The order has been created, but hasn't yet been processed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          EXECUTED\n        </code>\n      </td>\n      <td>\n        The order has been executed. Payment has been handled and rewards are being delivered (if applicable).\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          FAILED\n        </code>\n      </td>\n      <td>\n        The order could not be processed due to an error. E.g. due to insufficient funds in the account.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but needs approval to be executed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING INTERNAL PAYMENT APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but it is under review and requires approval from our team.\n      </td>\n    </tr>\n\n  </tbody>\n</table>\n"
        },
        "payment": {
          "type": "object",
          "properties": {
            "fees": {
              "type": "number",
              "format": "double",
              "example": 2.5,
              "minimum": 0,
              "description": "Fees for the order (in USD)"
            },
            "total": {
              "type": "number",
              "format": "double",
              "example": 52.5,
              "minimum": 0,
              "description": "Total price of the order including fees (in USD)"
            },
            "refund": {
              "type": "object",
              "required": [
                "total"
              ],
              "properties": {
                "total": {
                  "type": "number",
                  "format": "double",
                  "example": 52.5,
                  "minimum": 0,
                  "description": "Total amount of the order refunds (in USD)"
                }
              },
              "description": "Breakdown of the order refunds (total amount in USD, independent from the currency of the ordered rewards).\nNote that this property will only appear for canceled orders or orders with canceled rewards.\n"
            },
            "channel": {
              "enum": [
                "UI",
                "API",
                "EMBED",
                "DECIPHER",
                "QUALTRICS",
                "TYPEFORM",
                "SURVEY MONKEY"
              ],
              "type": "string",
              "description": "Name of the channel in which the order was created"
            },
            "subtotal": {
              "type": "number",
              "format": "double",
              "example": 50,
              "minimum": 0,
              "description": "Total price of the order before fees (in USD)"
            }
          },
          "description": "Cost breakdown of the order (cost of rewards + fees). Cost and fees are always denominated in USD, independent from the currency of the ordered rewards.\nNote that this property will only appear for processed orders (`status` is `EXECUTED`)."
        },
        "rewards": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "SOMEIDSOMEID",
                "pattern": "[A-Z0-9]{4,20}",
                "description": "Tremendous ID of the reward"
              },
              "value": {
                "type": "object",
                "example": {
                  "denomination": 50,
                  "currency_code": "USD"
                },
                "required": [
                  "denomination",
                  "currency_code"
                ],
                "properties": {
                  "denomination": {
                    "type": "number",
                    "format": "double",
                    "description": "Amount of the reward"
                  },
                  "currency_code": {
                    "enum": [
                      "USD",
                      "CAD",
                      "EUR",
                      "AED",
                      "AFN",
                      "ALL",
                      "AMD",
                      "ARS",
                      "AUD",
                      "AZN",
                      "BAM",
                      "BDT",
                      "BGN",
                      "BHD",
                      "BIF",
                      "BND",
                      "BOB",
                      "BRL",
                      "BWP",
                      "BYR",
                      "BZD",
                      "CDF",
                      "CHF",
                      "CLP",
                      "CNY",
                      "COP",
                      "CRC",
                      "CVE",
                      "CZK",
                      "DJF",
                      "DKK",
                      "DOP",
                      "DZD",
                      "EEK",
                      "EGP",
                      "ERN",
                      "ETB",
                      "GBP",
                      "GEL",
                      "GHS",
                      "GNF",
                      "GTQ",
                      "HKD",
                      "HNL",
                      "HRK",
                      "HUF",
                      "IDR",
                      "ILS",
                      "INR",
                      "IQD",
                      "IRR",
                      "ISK",
                      "JMD",
                      "JOD",
                      "JPY",
                      "KES",
                      "KHR",
                      "KRW",
                      "KWD",
                      "KZT",
                      "LBP",
                      "LKR",
                      "LTL",
                      "LVL",
                      "MAD",
                      "MDL",
                      "MGA",
                      "MKD",
                      "MMK",
                      "MOP",
                      "MUR",
                      "MXN",
                      "MYR",
                      "MZN",
                      "NAD",
                      "NGN",
                      "NIO",
                      "NOK",
                      "NPR",
                      "NZD",
                      "OMR",
                      "PAB",
                      "PEN",
                      "PHP",
                      "PKR",
                      "PLN",
                      "PYG",
                      "QAR",
                      "RON",
                      "RSD",
                      "RUB",
                      "RWF",
                      "SAR",
                      "SDG",
                      "SEK",
                      "SGD",
                      "SOS",
                      "SYP",
                      "THB",
                      "TND",
                      "TOP",
                      "TRY",
                      "TTD",
                      "TWD",
                      "TZS",
                      "UAH",
                      "UGX",
                      "UYU",
                      "UZS",
                      "VEF",
                      "VND",
                      "XAF",
                      "XOF",
                      "YER",
                      "ZAR",
                      "ZMK"
                    ],
                    "type": "string",
                    "example": "USD",
                    "description": "Currency of the reward"
                  }
                }
              },
              "delivery": {
                "type": "object",
                "required": [
                  "method",
                  "status"
                ],
                "properties": {
                  "link": {
                    "type": "string",
                    "example": "https://testflight.tremendous.com/rewards/payout/z67jic92r",
                    "description": "Link to redeem the reward at. You need to deliver this link to the recipient.\n\nOnly available for rewards for which the `method` for delivery is set to `LINK`.\n"
                  },
                  "method": {
                    "enum": [
                      "EMAIL",
                      "LINK",
                      "PHONE"
                    ],
                    "type": "string",
                    "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
                  },
                  "status": {
                    "enum": [
                      "SCHEDULED",
                      "FAILED",
                      "SUCCEEDED",
                      "PENDING"
                    ],
                    "type": "string",
                    "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
                  }
                },
                "description": "Details on how the reward is delivered to the recipient.\n"
              },
              "order_id": {
                "type": "string",
                "example": "SOMEIDSOMEID",
                "pattern": "[A-Z0-9]{4,20}",
                "description": "Tremendous ID of the order this reward is part of."
              },
              "recipient": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "John Doe Jr.",
                    "description": "Name of the recipient"
                  },
                  "email": {
                    "type": "string",
                    "example": "john.doe@example.com",
                    "description": "Email address of the recipient"
                  },
                  "phone": {
                    "type": "string",
                    "example": "123-456-7890",
                    "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
                  }
                },
                "description": "Details of the recipient of the reward"
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "description": "Date the reward was created"
              },
              "deliver_at": {
                "type": "string",
                "format": "date",
                "example": "2023-12-31",
                "pattern": "YYYY-MM-DD",
                "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
              },
              "custom_fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "SOMEIDSOMEID",
                      "pattern": "[A-Z0-9]{4,20}",
                      "description": "Tremendous ID of the custom field"
                    },
                    "label": {
                      "type": "string",
                      "example": "harry_potter_house",
                      "description": "Label of the custom field"
                    },
                    "value": {
                      "type": "string",
                      "example": "Hufflepuff",
                      "nullable": true,
                      "description": "Value of the custom field"
                    }
                  },
                  "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
                }
              }
            },
            "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
          },
          "minItems": 1
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Date the order has been created"
        },
        "invoice_id": {
          "type": "string",
          "example": "2E59A82B-0001",
          "description": "The ID for the invoice associated with this order"
        },
        "campaign_id": {
          "type": "string",
          "example": "IVM0I3WNJJL0",
          "pattern": "[A-Z0-9]{4,20}",
          "nullable": true,
          "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
        },
        "external_id": {
          "type": "string",
          "example": "Your-Individual-Identifier-for-This-Order",
          "nullable": true,
          "description": "Reference for this order, supplied by the customer.\n\nWhen set, `external_id` makes order idempotent. All requests that use the same `external_id`\nafter the initial order creation, will result in a response that returns the data of the\ninitially created order. The response will have a `201` response code. These responses\n**fail** to create any further orders.\n\nIt also allows for retrieving by `external_id` instead of `id` only.\n"
        }
      },
      "description": "An order wraps around the fulfilment of one or more rewards."
    }
  }
}
object OrdersCreateOrder400Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Order failed: validation failure",
      "payload": {
        "some_field": {
          "some_sub_field": "Something went wrong with this parameter"
        }
      }
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersCreateOrder401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersCreateOrder402Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersCreateOrder422Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Order failed: validation failure",
      "payload": {
        "some_field": {
          "some_sub_field": "Something went wrong with this parameter"
        }
      }
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersCreateOrder429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersCreateOrder500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersCreateOrderRequest
{
  "type": "object",
  "required": [
    "payment",
    "reward"
  ],
  "properties": {
    "reward": {
      "type": "object",
      "properties": {
        "value": {
          "type": "object",
          "example": {
            "denomination": 50,
            "currency_code": "USD"
          },
          "required": [
            "denomination",
            "currency_code"
          ],
          "properties": {
            "denomination": {
              "type": "number",
              "format": "double",
              "description": "Amount of the reward"
            },
            "currency_code": {
              "enum": [
                "USD",
                "CAD",
                "EUR",
                "AED",
                "AFN",
                "ALL",
                "AMD",
                "ARS",
                "AUD",
                "AZN",
                "BAM",
                "BDT",
                "BGN",
                "BHD",
                "BIF",
                "BND",
                "BOB",
                "BRL",
                "BWP",
                "BYR",
                "BZD",
                "CDF",
                "CHF",
                "CLP",
                "CNY",
                "COP",
                "CRC",
                "CVE",
                "CZK",
                "DJF",
                "DKK",
                "DOP",
                "DZD",
                "EEK",
                "EGP",
                "ERN",
                "ETB",
                "GBP",
                "GEL",
                "GHS",
                "GNF",
                "GTQ",
                "HKD",
                "HNL",
                "HRK",
                "HUF",
                "IDR",
                "ILS",
                "INR",
                "IQD",
                "IRR",
                "ISK",
                "JMD",
                "JOD",
                "JPY",
                "KES",
                "KHR",
                "KRW",
                "KWD",
                "KZT",
                "LBP",
                "LKR",
                "LTL",
                "LVL",
                "MAD",
                "MDL",
                "MGA",
                "MKD",
                "MMK",
                "MOP",
                "MUR",
                "MXN",
                "MYR",
                "MZN",
                "NAD",
                "NGN",
                "NIO",
                "NOK",
                "NPR",
                "NZD",
                "OMR",
                "PAB",
                "PEN",
                "PHP",
                "PKR",
                "PLN",
                "PYG",
                "QAR",
                "RON",
                "RSD",
                "RUB",
                "RWF",
                "SAR",
                "SDG",
                "SEK",
                "SGD",
                "SOS",
                "SYP",
                "THB",
                "TND",
                "TOP",
                "TRY",
                "TTD",
                "TWD",
                "TZS",
                "UAH",
                "UGX",
                "UYU",
                "UZS",
                "VEF",
                "VND",
                "XAF",
                "XOF",
                "YER",
                "ZAR",
                "ZMK"
              ],
              "type": "string",
              "example": "USD",
              "description": "Currency of the reward"
            }
          }
        },
        "delivery": {
          "type": "object",
          "properties": {
            "method": {
              "enum": [
                "EMAIL",
                "LINK",
                "PHONE"
              ],
              "type": "string",
              "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
            }
          },
          "description": "Details on how the reward is delivered to the recipient.\n"
        },
        "language": {
          "type": "string",
          "example": "de",
          "description": "Set this to translate the redemption experience for this reward. Pass a 2-letter [ISO-639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) for the desired language. Defaults to `en`.\n"
        },
        "products": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "minItems": 1,
          "description": "List of IDs of product (different gift cards, charity, etc.) that will be available\nto the recipient to choose from.\n\nProviding a `products` array will override the products made available by the campaign\nspecified using the `campaign_id` property unless the `products` array is empty. It will\n_not_ override other campaign attributes, like the message and customization of the look and feel.\n"
        },
        "recipient": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "example": "John Doe Jr.",
              "description": "Name of the recipient"
            },
            "email": {
              "type": "string",
              "example": "john.doe@example.com",
              "description": "Email address of the recipient"
            },
            "phone": {
              "type": "string",
              "example": "123-456-7890",
              "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
            }
          },
          "description": "Details of the recipient of the reward"
        },
        "deliver_at": {
          "type": "string",
          "format": "date",
          "example": "2023-12-31",
          "pattern": "YYYY-MM-DD",
          "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
        },
        "campaign_id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "nullable": true,
          "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
        },
        "custom_fields": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "SOMEIDSOMEID",
                "pattern": "[A-Z0-9]{4,20}",
                "description": "Tremendous ID of the custom field"
              },
              "label": {
                "type": "string",
                "example": "harry_potter_house",
                "description": "Label of the custom field"
              },
              "value": {
                "type": "string",
                "example": "Hufflepuff",
                "nullable": true,
                "description": "Value of the custom field"
              }
            },
            "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
          }
        }
      },
      "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
    },
    "payment": {
      "type": "object",
      "required": [
        "funding_source_id"
      ],
      "properties": {
        "funding_source_id": {
          "type": "string",
          "description": "Tremendous ID of the funding source that will be used to pay for the order. Use `balance` to use your Tremendous's balance."
        }
      }
    },
    "external_id": {
      "type": "string",
      "example": "Your-Individual-Identifier-for-This-Order",
      "nullable": true,
      "description": "Reference for this order, supplied by the customer.\n\nWhen set, `external_id` makes order idempotent. All requests that use the same `external_id`\nafter the initial order creation, will result in a response that returns the data of the\ninitially created order. The response will have a `201` response code. These responses\n**fail** to create any further orders.\n\nIt also allows for retrieving by `external_id` instead of `id` only.\n"
    }
  }
}
object OrdersCreateOrderResponse
{
  "type": "object",
  "required": [
    "order"
  ],
  "properties": {
    "order": {
      "type": "object",
      "required": [
        "id",
        "created_at",
        "status"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "description": "Tremendous ID of the order"
        },
        "status": {
          "enum": [
            "CANCELED",
            "CART",
            "EXECUTED",
            "FAILED",
            "PENDING APPROVAL",
            "PENDING INTERNAL PAYMENT APPROVAL"
          ],
          "type": "string",
          "description": "Execution status of a given order\n\n<table>\n  <thead>\n    <tr>\n      <th>\n        Status\n      </th>\n      <th>\n        Description\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <code>\n          CANCELED\n        </code>\n      </td>\n      <td>\n        The order and all of its rewards were canceled.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          CART\n        </code>\n      </td>\n      <td>\n        The order has been created, but hasn't yet been processed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          EXECUTED\n        </code>\n      </td>\n      <td>\n        The order has been executed. Payment has been handled and rewards are being delivered (if applicable).\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          FAILED\n        </code>\n      </td>\n      <td>\n        The order could not be processed due to an error. E.g. due to insufficient funds in the account.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but needs approval to be executed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING INTERNAL PAYMENT APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but it is under review and requires approval from our team.\n      </td>\n    </tr>\n\n  </tbody>\n</table>\n"
        },
        "payment": {
          "type": "object",
          "properties": {
            "fees": {
              "type": "number",
              "format": "double",
              "example": 2.5,
              "minimum": 0,
              "description": "Fees for the order (in USD)"
            },
            "total": {
              "type": "number",
              "format": "double",
              "example": 52.5,
              "minimum": 0,
              "description": "Total price of the order including fees (in USD)"
            },
            "refund": {
              "type": "object",
              "required": [
                "total"
              ],
              "properties": {
                "total": {
                  "type": "number",
                  "format": "double",
                  "example": 52.5,
                  "minimum": 0,
                  "description": "Total amount of the order refunds (in USD)"
                }
              },
              "description": "Breakdown of the order refunds (total amount in USD, independent from the currency of the ordered rewards).\nNote that this property will only appear for canceled orders or orders with canceled rewards.\n"
            },
            "channel": {
              "enum": [
                "UI",
                "API",
                "EMBED",
                "DECIPHER",
                "QUALTRICS",
                "TYPEFORM",
                "SURVEY MONKEY"
              ],
              "type": "string",
              "description": "Name of the channel in which the order was created"
            },
            "subtotal": {
              "type": "number",
              "format": "double",
              "example": 50,
              "minimum": 0,
              "description": "Total price of the order before fees (in USD)"
            }
          },
          "description": "Cost breakdown of the order (cost of rewards + fees). Cost and fees are always denominated in USD, independent from the currency of the ordered rewards.\nNote that this property will only appear for processed orders (`status` is `EXECUTED`)."
        },
        "rewards": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "SOMEIDSOMEID",
                "pattern": "[A-Z0-9]{4,20}",
                "description": "Tremendous ID of the reward"
              },
              "value": {
                "type": "object",
                "example": {
                  "denomination": 50,
                  "currency_code": "USD"
                },
                "required": [
                  "denomination",
                  "currency_code"
                ],
                "properties": {
                  "denomination": {
                    "type": "number",
                    "format": "double",
                    "description": "Amount of the reward"
                  },
                  "currency_code": {
                    "enum": [
                      "USD",
                      "CAD",
                      "EUR",
                      "AED",
                      "AFN",
                      "ALL",
                      "AMD",
                      "ARS",
                      "AUD",
                      "AZN",
                      "BAM",
                      "BDT",
                      "BGN",
                      "BHD",
                      "BIF",
                      "BND",
                      "BOB",
                      "BRL",
                      "BWP",
                      "BYR",
                      "BZD",
                      "CDF",
                      "CHF",
                      "CLP",
                      "CNY",
                      "COP",
                      "CRC",
                      "CVE",
                      "CZK",
                      "DJF",
                      "DKK",
                      "DOP",
                      "DZD",
                      "EEK",
                      "EGP",
                      "ERN",
                      "ETB",
                      "GBP",
                      "GEL",
                      "GHS",
                      "GNF",
                      "GTQ",
                      "HKD",
                      "HNL",
                      "HRK",
                      "HUF",
                      "IDR",
                      "ILS",
                      "INR",
                      "IQD",
                      "IRR",
                      "ISK",
                      "JMD",
                      "JOD",
                      "JPY",
                      "KES",
                      "KHR",
                      "KRW",
                      "KWD",
                      "KZT",
                      "LBP",
                      "LKR",
                      "LTL",
                      "LVL",
                      "MAD",
                      "MDL",
                      "MGA",
                      "MKD",
                      "MMK",
                      "MOP",
                      "MUR",
                      "MXN",
                      "MYR",
                      "MZN",
                      "NAD",
                      "NGN",
                      "NIO",
                      "NOK",
                      "NPR",
                      "NZD",
                      "OMR",
                      "PAB",
                      "PEN",
                      "PHP",
                      "PKR",
                      "PLN",
                      "PYG",
                      "QAR",
                      "RON",
                      "RSD",
                      "RUB",
                      "RWF",
                      "SAR",
                      "SDG",
                      "SEK",
                      "SGD",
                      "SOS",
                      "SYP",
                      "THB",
                      "TND",
                      "TOP",
                      "TRY",
                      "TTD",
                      "TWD",
                      "TZS",
                      "UAH",
                      "UGX",
                      "UYU",
                      "UZS",
                      "VEF",
                      "VND",
                      "XAF",
                      "XOF",
                      "YER",
                      "ZAR",
                      "ZMK"
                    ],
                    "type": "string",
                    "example": "USD",
                    "description": "Currency of the reward"
                  }
                }
              },
              "delivery": {
                "type": "object",
                "required": [
                  "method",
                  "status"
                ],
                "properties": {
                  "link": {
                    "type": "string",
                    "example": "https://testflight.tremendous.com/rewards/payout/z67jic92r",
                    "description": "Link to redeem the reward at. You need to deliver this link to the recipient.\n\nOnly available for rewards for which the `method` for delivery is set to `LINK`.\n"
                  },
                  "method": {
                    "enum": [
                      "EMAIL",
                      "LINK",
                      "PHONE"
                    ],
                    "type": "string",
                    "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
                  },
                  "status": {
                    "enum": [
                      "SCHEDULED",
                      "FAILED",
                      "SUCCEEDED",
                      "PENDING"
                    ],
                    "type": "string",
                    "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
                  }
                },
                "description": "Details on how the reward is delivered to the recipient.\n"
              },
              "order_id": {
                "type": "string",
                "example": "SOMEIDSOMEID",
                "pattern": "[A-Z0-9]{4,20}",
                "description": "Tremendous ID of the order this reward is part of."
              },
              "recipient": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "John Doe Jr.",
                    "description": "Name of the recipient"
                  },
                  "email": {
                    "type": "string",
                    "example": "john.doe@example.com",
                    "description": "Email address of the recipient"
                  },
                  "phone": {
                    "type": "string",
                    "example": "123-456-7890",
                    "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
                  }
                },
                "description": "Details of the recipient of the reward"
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "description": "Date the reward was created"
              },
              "deliver_at": {
                "type": "string",
                "format": "date",
                "example": "2023-12-31",
                "pattern": "YYYY-MM-DD",
                "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
              },
              "custom_fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "SOMEIDSOMEID",
                      "pattern": "[A-Z0-9]{4,20}",
                      "description": "Tremendous ID of the custom field"
                    },
                    "label": {
                      "type": "string",
                      "example": "harry_potter_house",
                      "description": "Label of the custom field"
                    },
                    "value": {
                      "type": "string",
                      "example": "Hufflepuff",
                      "nullable": true,
                      "description": "Value of the custom field"
                    }
                  },
                  "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
                }
              }
            },
            "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
          },
          "minItems": 1
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Date the order has been created"
        },
        "invoice_id": {
          "type": "string",
          "example": "2E59A82B-0001",
          "description": "The ID for the invoice associated with this order"
        },
        "campaign_id": {
          "type": "string",
          "example": "IVM0I3WNJJL0",
          "pattern": "[A-Z0-9]{4,20}",
          "nullable": true,
          "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
        },
        "external_id": {
          "type": "string",
          "example": "Your-Individual-Identifier-for-This-Order",
          "nullable": true,
          "description": "Reference for this order, supplied by the customer.\n\nWhen set, `external_id` makes order idempotent. All requests that use the same `external_id`\nafter the initial order creation, will result in a response that returns the data of the\ninitially created order. The response will have a `201` response code. These responses\n**fail** to create any further orders.\n\nIt also allows for retrieving by `external_id` instead of `id` only.\n"
        }
      },
      "description": "An order wraps around the fulfilment of one or more rewards."
    }
  }
}
object OrdersGetList401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersGetList429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersGetList500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersGetListResponse
{
  "type": "object",
  "required": [
    "orders",
    "total_count"
  ],
  "properties": {
    "orders": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "created_at",
          "status"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}",
            "description": "Tremendous ID of the order"
          },
          "reward": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "SOMEIDSOMEID",
                "pattern": "[A-Z0-9]{4,20}",
                "description": "Tremendous ID of the reward"
              },
              "value": {
                "type": "object",
                "example": {
                  "denomination": 50,
                  "currency_code": "USD"
                },
                "required": [
                  "denomination",
                  "currency_code"
                ],
                "properties": {
                  "denomination": {
                    "type": "number",
                    "format": "double",
                    "description": "Amount of the reward"
                  },
                  "currency_code": {
                    "enum": [
                      "USD",
                      "CAD",
                      "EUR",
                      "AED",
                      "AFN",
                      "ALL",
                      "AMD",
                      "ARS",
                      "AUD",
                      "AZN",
                      "BAM",
                      "BDT",
                      "BGN",
                      "BHD",
                      "BIF",
                      "BND",
                      "BOB",
                      "BRL",
                      "BWP",
                      "BYR",
                      "BZD",
                      "CDF",
                      "CHF",
                      "CLP",
                      "CNY",
                      "COP",
                      "CRC",
                      "CVE",
                      "CZK",
                      "DJF",
                      "DKK",
                      "DOP",
                      "DZD",
                      "EEK",
                      "EGP",
                      "ERN",
                      "ETB",
                      "GBP",
                      "GEL",
                      "GHS",
                      "GNF",
                      "GTQ",
                      "HKD",
                      "HNL",
                      "HRK",
                      "HUF",
                      "IDR",
                      "ILS",
                      "INR",
                      "IQD",
                      "IRR",
                      "ISK",
                      "JMD",
                      "JOD",
                      "JPY",
                      "KES",
                      "KHR",
                      "KRW",
                      "KWD",
                      "KZT",
                      "LBP",
                      "LKR",
                      "LTL",
                      "LVL",
                      "MAD",
                      "MDL",
                      "MGA",
                      "MKD",
                      "MMK",
                      "MOP",
                      "MUR",
                      "MXN",
                      "MYR",
                      "MZN",
                      "NAD",
                      "NGN",
                      "NIO",
                      "NOK",
                      "NPR",
                      "NZD",
                      "OMR",
                      "PAB",
                      "PEN",
                      "PHP",
                      "PKR",
                      "PLN",
                      "PYG",
                      "QAR",
                      "RON",
                      "RSD",
                      "RUB",
                      "RWF",
                      "SAR",
                      "SDG",
                      "SEK",
                      "SGD",
                      "SOS",
                      "SYP",
                      "THB",
                      "TND",
                      "TOP",
                      "TRY",
                      "TTD",
                      "TWD",
                      "TZS",
                      "UAH",
                      "UGX",
                      "UYU",
                      "UZS",
                      "VEF",
                      "VND",
                      "XAF",
                      "XOF",
                      "YER",
                      "ZAR",
                      "ZMK"
                    ],
                    "type": "string",
                    "example": "USD",
                    "description": "Currency of the reward"
                  }
                }
              },
              "delivery": {
                "type": "object",
                "required": [
                  "method",
                  "status"
                ],
                "properties": {
                  "method": {
                    "enum": [
                      "EMAIL",
                      "LINK",
                      "PHONE"
                    ],
                    "type": "string",
                    "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
                  },
                  "status": {
                    "enum": [
                      "SCHEDULED",
                      "FAILED",
                      "SUCCEEDED",
                      "PENDING"
                    ],
                    "type": "string",
                    "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
                  }
                },
                "description": "Details on how the reward is delivered to the recipient.\n"
              },
              "order_id": {
                "type": "string",
                "example": "SOMEIDSOMEID",
                "pattern": "[A-Z0-9]{4,20}",
                "description": "Tremendous ID of the order this reward is part of."
              },
              "recipient": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "John Doe Jr.",
                    "description": "Name of the recipient"
                  },
                  "email": {
                    "type": "string",
                    "example": "john.doe@example.com",
                    "description": "Email address of the recipient"
                  },
                  "phone": {
                    "type": "string",
                    "example": "123-456-7890",
                    "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
                  }
                },
                "description": "Details of the recipient of the reward"
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "description": "Date the reward was created"
              },
              "deliver_at": {
                "type": "string",
                "format": "date",
                "example": "2023-12-31",
                "pattern": "YYYY-MM-DD",
                "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
              },
              "custom_fields": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "SOMEIDSOMEID",
                      "pattern": "[A-Z0-9]{4,20}",
                      "description": "Tremendous ID of the custom field"
                    },
                    "label": {
                      "type": "string",
                      "example": "harry_potter_house",
                      "description": "Label of the custom field"
                    },
                    "value": {
                      "type": "string",
                      "example": "Hufflepuff",
                      "nullable": true,
                      "description": "Value of the custom field"
                    }
                  },
                  "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
                }
              }
            },
            "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
          },
          "status": {
            "enum": [
              "CANCELED",
              "CART",
              "EXECUTED",
              "FAILED",
              "PENDING APPROVAL",
              "PENDING INTERNAL PAYMENT APPROVAL"
            ],
            "type": "string",
            "description": "Execution status of a given order\n\n<table>\n  <thead>\n    <tr>\n      <th>\n        Status\n      </th>\n      <th>\n        Description\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <code>\n          CANCELED\n        </code>\n      </td>\n      <td>\n        The order and all of its rewards were canceled.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          CART\n        </code>\n      </td>\n      <td>\n        The order has been created, but hasn't yet been processed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          EXECUTED\n        </code>\n      </td>\n      <td>\n        The order has been executed. Payment has been handled and rewards are being delivered (if applicable).\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          FAILED\n        </code>\n      </td>\n      <td>\n        The order could not be processed due to an error. E.g. due to insufficient funds in the account.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but needs approval to be executed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING INTERNAL PAYMENT APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but it is under review and requires approval from our team.\n      </td>\n    </tr>\n\n  </tbody>\n</table>\n"
          },
          "payment": {
            "type": "object",
            "properties": {
              "fees": {
                "type": "number",
                "format": "double",
                "example": 2.5,
                "minimum": 0,
                "description": "Fees for the order (in USD)"
              },
              "total": {
                "type": "number",
                "format": "double",
                "example": 52.5,
                "minimum": 0,
                "description": "Total price of the order including fees (in USD)"
              },
              "refund": {
                "type": "object",
                "required": [
                  "total"
                ],
                "properties": {
                  "total": {
                    "type": "number",
                    "format": "double",
                    "example": 52.5,
                    "minimum": 0,
                    "description": "Total amount of the order refunds (in USD)"
                  }
                },
                "description": "Breakdown of the order refunds (total amount in USD, independent from the currency of the ordered rewards).\nNote that this property will only appear for canceled orders or orders with canceled rewards.\n"
              },
              "channel": {
                "enum": [
                  "UI",
                  "API",
                  "EMBED",
                  "DECIPHER",
                  "QUALTRICS",
                  "TYPEFORM",
                  "SURVEY MONKEY"
                ],
                "type": "string",
                "description": "Name of the channel in which the order was created"
              },
              "subtotal": {
                "type": "number",
                "format": "double",
                "example": 50,
                "minimum": 0,
                "description": "Total price of the order before fees (in USD)"
              }
            },
            "description": "Cost breakdown of the order (cost of rewards + fees). Cost and fees are always denominated in USD, independent from the currency of the ordered rewards.\nNote that this property will only appear for processed orders (`status` is `EXECUTED`)."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Date the order has been created"
          },
          "invoice_id": {
            "type": "string",
            "example": "2E59A82B-0001",
            "description": "The ID for the invoice associated with this order"
          },
          "campaign_id": {
            "type": "string",
            "example": "IVM0I3WNJJL0",
            "pattern": "[A-Z0-9]{4,20}",
            "nullable": true,
            "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
          },
          "external_id": {
            "type": "string",
            "example": "Your-Individual-Identifier-for-This-Order",
            "nullable": true,
            "description": "Reference for this order, supplied by the customer.\n\nWhen set, `external_id` makes order idempotent. All requests that use the same `external_id`\nafter the initial order creation, will result in a response that returns the data of the\ninitially created order. The response will have a `201` response code. These responses\n**fail** to create any further orders.\n\nIt also allows for retrieving by `external_id` instead of `id` only.\n"
          }
        },
        "description": "An order wraps around the fulfilment of one or more rewards."
      }
    },
    "total_count": {
      "type": "integer",
      "example": 1,
      "description": "The total number of orders across all pages"
    }
  }
}
object OrdersGetOrderById401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersGetOrderById404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersGetOrderById429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersGetOrderById500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersGetOrderByIdResponse
{
  "type": "object",
  "required": [
    "order"
  ],
  "properties": {
    "order": {
      "type": "object",
      "required": [
        "id",
        "created_at",
        "status"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "description": "Tremendous ID of the order"
        },
        "reward": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "example": "SOMEIDSOMEID",
              "pattern": "[A-Z0-9]{4,20}",
              "description": "Tremendous ID of the reward"
            },
            "value": {
              "type": "object",
              "example": {
                "denomination": 50,
                "currency_code": "USD"
              },
              "required": [
                "denomination",
                "currency_code"
              ],
              "properties": {
                "denomination": {
                  "type": "number",
                  "format": "double",
                  "description": "Amount of the reward"
                },
                "currency_code": {
                  "enum": [
                    "USD",
                    "CAD",
                    "EUR",
                    "AED",
                    "AFN",
                    "ALL",
                    "AMD",
                    "ARS",
                    "AUD",
                    "AZN",
                    "BAM",
                    "BDT",
                    "BGN",
                    "BHD",
                    "BIF",
                    "BND",
                    "BOB",
                    "BRL",
                    "BWP",
                    "BYR",
                    "BZD",
                    "CDF",
                    "CHF",
                    "CLP",
                    "CNY",
                    "COP",
                    "CRC",
                    "CVE",
                    "CZK",
                    "DJF",
                    "DKK",
                    "DOP",
                    "DZD",
                    "EEK",
                    "EGP",
                    "ERN",
                    "ETB",
                    "GBP",
                    "GEL",
                    "GHS",
                    "GNF",
                    "GTQ",
                    "HKD",
                    "HNL",
                    "HRK",
                    "HUF",
                    "IDR",
                    "ILS",
                    "INR",
                    "IQD",
                    "IRR",
                    "ISK",
                    "JMD",
                    "JOD",
                    "JPY",
                    "KES",
                    "KHR",
                    "KRW",
                    "KWD",
                    "KZT",
                    "LBP",
                    "LKR",
                    "LTL",
                    "LVL",
                    "MAD",
                    "MDL",
                    "MGA",
                    "MKD",
                    "MMK",
                    "MOP",
                    "MUR",
                    "MXN",
                    "MYR",
                    "MZN",
                    "NAD",
                    "NGN",
                    "NIO",
                    "NOK",
                    "NPR",
                    "NZD",
                    "OMR",
                    "PAB",
                    "PEN",
                    "PHP",
                    "PKR",
                    "PLN",
                    "PYG",
                    "QAR",
                    "RON",
                    "RSD",
                    "RUB",
                    "RWF",
                    "SAR",
                    "SDG",
                    "SEK",
                    "SGD",
                    "SOS",
                    "SYP",
                    "THB",
                    "TND",
                    "TOP",
                    "TRY",
                    "TTD",
                    "TWD",
                    "TZS",
                    "UAH",
                    "UGX",
                    "UYU",
                    "UZS",
                    "VEF",
                    "VND",
                    "XAF",
                    "XOF",
                    "YER",
                    "ZAR",
                    "ZMK"
                  ],
                  "type": "string",
                  "example": "USD",
                  "description": "Currency of the reward"
                }
              }
            },
            "delivery": {
              "type": "object",
              "required": [
                "method",
                "status"
              ],
              "properties": {
                "method": {
                  "enum": [
                    "EMAIL",
                    "LINK",
                    "PHONE"
                  ],
                  "type": "string",
                  "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
                },
                "status": {
                  "enum": [
                    "SCHEDULED",
                    "FAILED",
                    "SUCCEEDED",
                    "PENDING"
                  ],
                  "type": "string",
                  "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
                }
              },
              "description": "Details on how the reward is delivered to the recipient.\n"
            },
            "order_id": {
              "type": "string",
              "example": "SOMEIDSOMEID",
              "pattern": "[A-Z0-9]{4,20}",
              "description": "Tremendous ID of the order this reward is part of."
            },
            "recipient": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "example": "John Doe Jr.",
                  "description": "Name of the recipient"
                },
                "email": {
                  "type": "string",
                  "example": "john.doe@example.com",
                  "description": "Email address of the recipient"
                },
                "phone": {
                  "type": "string",
                  "example": "123-456-7890",
                  "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
                }
              },
              "description": "Details of the recipient of the reward"
            },
            "created_at": {
              "type": "string",
              "format": "date-time",
              "description": "Date the reward was created"
            },
            "deliver_at": {
              "type": "string",
              "format": "date",
              "example": "2023-12-31",
              "pattern": "YYYY-MM-DD",
              "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
            },
            "custom_fields": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "SOMEIDSOMEID",
                    "pattern": "[A-Z0-9]{4,20}",
                    "description": "Tremendous ID of the custom field"
                  },
                  "label": {
                    "type": "string",
                    "example": "harry_potter_house",
                    "description": "Label of the custom field"
                  },
                  "value": {
                    "type": "string",
                    "example": "Hufflepuff",
                    "nullable": true,
                    "description": "Value of the custom field"
                  }
                },
                "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
              }
            }
          },
          "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
        },
        "status": {
          "enum": [
            "CANCELED",
            "CART",
            "EXECUTED",
            "FAILED",
            "PENDING APPROVAL",
            "PENDING INTERNAL PAYMENT APPROVAL"
          ],
          "type": "string",
          "description": "Execution status of a given order\n\n<table>\n  <thead>\n    <tr>\n      <th>\n        Status\n      </th>\n      <th>\n        Description\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <code>\n          CANCELED\n        </code>\n      </td>\n      <td>\n        The order and all of its rewards were canceled.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          CART\n        </code>\n      </td>\n      <td>\n        The order has been created, but hasn't yet been processed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          EXECUTED\n        </code>\n      </td>\n      <td>\n        The order has been executed. Payment has been handled and rewards are being delivered (if applicable).\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          FAILED\n        </code>\n      </td>\n      <td>\n        The order could not be processed due to an error. E.g. due to insufficient funds in the account.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but needs approval to be executed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING INTERNAL PAYMENT APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but it is under review and requires approval from our team.\n      </td>\n    </tr>\n\n  </tbody>\n</table>\n"
        },
        "payment": {
          "type": "object",
          "properties": {
            "fees": {
              "type": "number",
              "format": "double",
              "example": 2.5,
              "minimum": 0,
              "description": "Fees for the order (in USD)"
            },
            "total": {
              "type": "number",
              "format": "double",
              "example": 52.5,
              "minimum": 0,
              "description": "Total price of the order including fees (in USD)"
            },
            "refund": {
              "type": "object",
              "required": [
                "total"
              ],
              "properties": {
                "total": {
                  "type": "number",
                  "format": "double",
                  "example": 52.5,
                  "minimum": 0,
                  "description": "Total amount of the order refunds (in USD)"
                }
              },
              "description": "Breakdown of the order refunds (total amount in USD, independent from the currency of the ordered rewards).\nNote that this property will only appear for canceled orders or orders with canceled rewards.\n"
            },
            "channel": {
              "enum": [
                "UI",
                "API",
                "EMBED",
                "DECIPHER",
                "QUALTRICS",
                "TYPEFORM",
                "SURVEY MONKEY"
              ],
              "type": "string",
              "description": "Name of the channel in which the order was created"
            },
            "subtotal": {
              "type": "number",
              "format": "double",
              "example": 50,
              "minimum": 0,
              "description": "Total price of the order before fees (in USD)"
            }
          },
          "description": "Cost breakdown of the order (cost of rewards + fees). Cost and fees are always denominated in USD, independent from the currency of the ordered rewards.\nNote that this property will only appear for processed orders (`status` is `EXECUTED`)."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Date the order has been created"
        },
        "invoice_id": {
          "type": "string",
          "example": "2E59A82B-0001",
          "description": "The ID for the invoice associated with this order"
        },
        "campaign_id": {
          "type": "string",
          "example": "IVM0I3WNJJL0",
          "pattern": "[A-Z0-9]{4,20}",
          "nullable": true,
          "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
        },
        "external_id": {
          "type": "string",
          "example": "Your-Individual-Identifier-for-This-Order",
          "nullable": true,
          "description": "Reference for this order, supplied by the customer.\n\nWhen set, `external_id` makes order idempotent. All requests that use the same `external_id`\nafter the initial order creation, will result in a response that returns the data of the\ninitially created order. The response will have a `201` response code. These responses\n**fail** to create any further orders.\n\nIt also allows for retrieving by `external_id` instead of `id` only.\n"
        }
      },
      "description": "An order wraps around the fulfilment of one or more rewards."
    }
  }
}
object OrdersRejectById401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersRejectById403Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Unsupported operation for this reward.",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersRejectById404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersRejectById422Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Order failed: validation failure",
      "payload": {
        "some_field": {
          "some_sub_field": "Something went wrong with this parameter"
        }
      }
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersRejectById429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersRejectById500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrdersRejectByIdResponse
{
  "type": "object",
  "required": [
    "order"
  ],
  "properties": {
    "order": {
      "type": "object",
      "required": [
        "id",
        "created_at",
        "status"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "description": "Tremendous ID of the order"
        },
        "reward": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "example": "SOMEIDSOMEID",
              "pattern": "[A-Z0-9]{4,20}",
              "description": "Tremendous ID of the reward"
            },
            "value": {
              "type": "object",
              "example": {
                "denomination": 50,
                "currency_code": "USD"
              },
              "required": [
                "denomination",
                "currency_code"
              ],
              "properties": {
                "denomination": {
                  "type": "number",
                  "format": "double",
                  "description": "Amount of the reward"
                },
                "currency_code": {
                  "enum": [
                    "USD",
                    "CAD",
                    "EUR",
                    "AED",
                    "AFN",
                    "ALL",
                    "AMD",
                    "ARS",
                    "AUD",
                    "AZN",
                    "BAM",
                    "BDT",
                    "BGN",
                    "BHD",
                    "BIF",
                    "BND",
                    "BOB",
                    "BRL",
                    "BWP",
                    "BYR",
                    "BZD",
                    "CDF",
                    "CHF",
                    "CLP",
                    "CNY",
                    "COP",
                    "CRC",
                    "CVE",
                    "CZK",
                    "DJF",
                    "DKK",
                    "DOP",
                    "DZD",
                    "EEK",
                    "EGP",
                    "ERN",
                    "ETB",
                    "GBP",
                    "GEL",
                    "GHS",
                    "GNF",
                    "GTQ",
                    "HKD",
                    "HNL",
                    "HRK",
                    "HUF",
                    "IDR",
                    "ILS",
                    "INR",
                    "IQD",
                    "IRR",
                    "ISK",
                    "JMD",
                    "JOD",
                    "JPY",
                    "KES",
                    "KHR",
                    "KRW",
                    "KWD",
                    "KZT",
                    "LBP",
                    "LKR",
                    "LTL",
                    "LVL",
                    "MAD",
                    "MDL",
                    "MGA",
                    "MKD",
                    "MMK",
                    "MOP",
                    "MUR",
                    "MXN",
                    "MYR",
                    "MZN",
                    "NAD",
                    "NGN",
                    "NIO",
                    "NOK",
                    "NPR",
                    "NZD",
                    "OMR",
                    "PAB",
                    "PEN",
                    "PHP",
                    "PKR",
                    "PLN",
                    "PYG",
                    "QAR",
                    "RON",
                    "RSD",
                    "RUB",
                    "RWF",
                    "SAR",
                    "SDG",
                    "SEK",
                    "SGD",
                    "SOS",
                    "SYP",
                    "THB",
                    "TND",
                    "TOP",
                    "TRY",
                    "TTD",
                    "TWD",
                    "TZS",
                    "UAH",
                    "UGX",
                    "UYU",
                    "UZS",
                    "VEF",
                    "VND",
                    "XAF",
                    "XOF",
                    "YER",
                    "ZAR",
                    "ZMK"
                  ],
                  "type": "string",
                  "example": "USD",
                  "description": "Currency of the reward"
                }
              }
            },
            "delivery": {
              "type": "object",
              "required": [
                "method",
                "status"
              ],
              "properties": {
                "method": {
                  "enum": [
                    "EMAIL",
                    "LINK",
                    "PHONE"
                  ],
                  "type": "string",
                  "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
                },
                "status": {
                  "enum": [
                    "SCHEDULED",
                    "FAILED",
                    "SUCCEEDED",
                    "PENDING"
                  ],
                  "type": "string",
                  "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
                }
              },
              "description": "Details on how the reward is delivered to the recipient.\n"
            },
            "order_id": {
              "type": "string",
              "example": "SOMEIDSOMEID",
              "pattern": "[A-Z0-9]{4,20}",
              "description": "Tremendous ID of the order this reward is part of."
            },
            "recipient": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "example": "John Doe Jr.",
                  "description": "Name of the recipient"
                },
                "email": {
                  "type": "string",
                  "example": "john.doe@example.com",
                  "description": "Email address of the recipient"
                },
                "phone": {
                  "type": "string",
                  "example": "123-456-7890",
                  "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
                }
              },
              "description": "Details of the recipient of the reward"
            },
            "created_at": {
              "type": "string",
              "format": "date-time",
              "description": "Date the reward was created"
            },
            "deliver_at": {
              "type": "string",
              "format": "date",
              "example": "2023-12-31",
              "pattern": "YYYY-MM-DD",
              "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
            },
            "custom_fields": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "example": "SOMEIDSOMEID",
                    "pattern": "[A-Z0-9]{4,20}",
                    "description": "Tremendous ID of the custom field"
                  },
                  "label": {
                    "type": "string",
                    "example": "harry_potter_house",
                    "description": "Label of the custom field"
                  },
                  "value": {
                    "type": "string",
                    "example": "Hufflepuff",
                    "nullable": true,
                    "description": "Value of the custom field"
                  }
                },
                "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
              }
            }
          },
          "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
        },
        "status": {
          "enum": [
            "CANCELED",
            "CART",
            "EXECUTED",
            "FAILED",
            "PENDING APPROVAL",
            "PENDING INTERNAL PAYMENT APPROVAL"
          ],
          "type": "string",
          "description": "Execution status of a given order\n\n<table>\n  <thead>\n    <tr>\n      <th>\n        Status\n      </th>\n      <th>\n        Description\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <code>\n          CANCELED\n        </code>\n      </td>\n      <td>\n        The order and all of its rewards were canceled.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          CART\n        </code>\n      </td>\n      <td>\n        The order has been created, but hasn't yet been processed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          EXECUTED\n        </code>\n      </td>\n      <td>\n        The order has been executed. Payment has been handled and rewards are being delivered (if applicable).\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          FAILED\n        </code>\n      </td>\n      <td>\n        The order could not be processed due to an error. E.g. due to insufficient funds in the account.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but needs approval to be executed.\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <code>\n          PENDING INTERNAL PAYMENT APPROVAL\n        </code>\n      </td>\n      <td>\n        The order has been created but it is under review and requires approval from our team.\n      </td>\n    </tr>\n\n  </tbody>\n</table>\n"
        },
        "payment": {
          "type": "object",
          "properties": {
            "fees": {
              "type": "number",
              "format": "double",
              "example": 2.5,
              "minimum": 0,
              "description": "Fees for the order (in USD)"
            },
            "total": {
              "type": "number",
              "format": "double",
              "example": 52.5,
              "minimum": 0,
              "description": "Total price of the order including fees (in USD)"
            },
            "refund": {
              "type": "object",
              "required": [
                "total"
              ],
              "properties": {
                "total": {
                  "type": "number",
                  "format": "double",
                  "example": 52.5,
                  "minimum": 0,
                  "description": "Total amount of the order refunds (in USD)"
                }
              },
              "description": "Breakdown of the order refunds (total amount in USD, independent from the currency of the ordered rewards).\nNote that this property will only appear for canceled orders or orders with canceled rewards.\n"
            },
            "channel": {
              "enum": [
                "UI",
                "API",
                "EMBED",
                "DECIPHER",
                "QUALTRICS",
                "TYPEFORM",
                "SURVEY MONKEY"
              ],
              "type": "string",
              "description": "Name of the channel in which the order was created"
            },
            "subtotal": {
              "type": "number",
              "format": "double",
              "example": 50,
              "minimum": 0,
              "description": "Total price of the order before fees (in USD)"
            }
          },
          "description": "Cost breakdown of the order (cost of rewards + fees). Cost and fees are always denominated in USD, independent from the currency of the ordered rewards.\nNote that this property will only appear for processed orders (`status` is `EXECUTED`)."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Date the order has been created"
        },
        "invoice_id": {
          "type": "string",
          "example": "2E59A82B-0001",
          "description": "The ID for the invoice associated with this order"
        },
        "campaign_id": {
          "type": "string",
          "example": "IVM0I3WNJJL0",
          "pattern": "[A-Z0-9]{4,20}",
          "nullable": true,
          "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
        },
        "external_id": {
          "type": "string",
          "example": "Your-Individual-Identifier-for-This-Order",
          "nullable": true,
          "description": "Reference for this order, supplied by the customer.\n\nWhen set, `external_id` makes order idempotent. All requests that use the same `external_id`\nafter the initial order creation, will result in a response that returns the data of the\ninitially created order. The response will have a `201` response code. These responses\n**fail** to create any further orders.\n\nIt also allows for retrieving by `external_id` instead of `id` only.\n"
        }
      },
      "description": "An order wraps around the fulfilment of one or more rewards."
    }
  }
}
object Organization
{
  "type": "object",
  "required": [
    "name",
    "website"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true
    },
    "name": {
      "type": "string",
      "example": "ACME Inc.",
      "description": "Name of the organization"
    },
    "status": {
      "enum": [
        "PENDING",
        "APPROVED",
        "REJECTED"
      ],
      "type": "string",
      "example": "APPROVED",
      "readOnly": true,
      "description": "Status of the organization. Organizations need to be approved to be able to use them to send out rewards."
    },
    "website": {
      "type": "string",
      "format": "uri",
      "example": "https://www.example.com/some-org",
      "description": "URL of the website of that organization"
    },
    "created_at": {
      "type": "string",
      "format": "date",
      "example": "2021-08-02",
      "readOnly": true,
      "description": "Timestamp of when the organization has been created.\n\n*This field is only returned when creating an organization.* It is not returned anymore when retrieving or listing organizations.\n"
    }
  },
  "description": "Organizations are a way to separate different parts of your business within the same Tremendous account.\nYour root Tremendous account is an organization itself and can have multiple sub-organizations.\n\nYou can assign users in your Tremendous team as members to any organization. Users can be members of multiple\norganizations at once.\n\nEach organizations can have it's own API key.\n"
}
object OrganizationsCreateApiKey401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsCreateApiKey404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsCreateApiKey429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsCreateApiKey500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsCreateApiKeyResponse
{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "example": "TEST_02feed72c2f6ab8dadc7f6156d1106828aabf81e5c4d38ea94d62817717ea261",
      "description": "The new API key"
    }
  }
}
object OrganizationsCreateNewOrganization400Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Order failed: validation failure",
      "payload": {
        "some_field": {
          "some_sub_field": "Something went wrong with this parameter"
        }
      }
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsCreateNewOrganization401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsCreateNewOrganization429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsCreateNewOrganization500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsCreateNewOrganizationRequest
{
  "type": "object",
  "required": [
    "name",
    "website"
  ],
  "properties": {
    "name": {
      "type": "string",
      "example": "ACME Inc.",
      "description": "Name of the organization"
    },
    "phone": {
      "type": "string",
      "example": "123-456-7890",
      "description": "Phone number of the organization. For non-US phone numbers, specify the country code (prefixed with +)."
    },
    "website": {
      "type": "string",
      "format": "uri",
      "example": "https://www.example.com/some-org",
      "description": "URL of the website of that organization"
    },
    "with_api_key": {
      "type": "boolean",
      "example": true,
      "description": "Default value is `false`. Set to true to also generate an API key associated to the new organization."
    },
    "copy_settings": {
      "type": "object",
      "properties": {
        "users": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Copy over the users from the current organization to the new organization. Defaults to `false`."
        },
        "campaigns": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Copy over the campaigns from the current organization to the new organization. Defaults to `false`."
        },
        "custom_fields": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Copy over the custom fields from the current organization to the new organization. Defaults to `false`."
        },
        "order_approvals": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Copy over the order approvals settings from the current organization to the new organization. Defaults to `false`."
        },
        "payment_methods": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Copy over the payment methods from the current organization to the new organization. Defaults to `false`."
        },
        "fraud_prevention": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Copy over the fraud prevention settings and rules from the current organization to the new organization. Defaults to `false`."
        },
        "security_settings": {
          "type": "boolean",
          "default": true,
          "example": true,
          "description": "Copy over the security settings from the current organization to the new organization. Defaults to `true`."
        }
      },
      "description": "A list of the settings that you wish to copy over to the new organization."
    }
  }
}
object OrganizationsCreateNewOrganizationResponse
{
  "type": "object",
  "properties": {
    "organization": {
      "type": "object",
      "required": [
        "name",
        "website"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}"
        },
        "name": {
          "type": "string",
          "example": "ACME Inc.",
          "description": "Name of the organization"
        },
        "status": {
          "enum": [
            "PENDING",
            "APPROVED",
            "REJECTED"
          ],
          "type": "string",
          "example": "APPROVED",
          "description": "Status of the organization. Organizations need to be approved to be able to use them to send out rewards."
        },
        "api_key": {
          "type": "string",
          "description": "The API key for the created organization.\nThis property is only returned when `with_api_key` is set to `true`.\n"
        },
        "website": {
          "type": "string",
          "format": "uri",
          "example": "https://www.example.com/some-org",
          "description": "URL of the website of that organization"
        },
        "created_at": {
          "type": "string",
          "format": "date",
          "example": "2021-08-02",
          "description": "Timestamp of when the organization has been created.\n\n*This field is only returned when creating an organization.* It is not returned anymore when retrieving or listing organizations.\n"
        }
      },
      "description": "Organizations are a way to separate different parts of your business within the same Tremendous account.\nYour root Tremendous account is an organization itself and can have multiple sub-organizations.\n\nYou can assign users in your Tremendous team as members to any organization. Users can be members of multiple\norganizations at once.\n\nEach organizations can have it's own API key.\n"
    }
  }
}
object OrganizationsGetList401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsGetList429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsGetList500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsGetListResponse
{
  "type": "object",
  "properties": {
    "organizations": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "website"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "name": {
            "type": "string",
            "example": "ACME Inc.",
            "description": "Name of the organization"
          },
          "status": {
            "enum": [
              "PENDING",
              "APPROVED",
              "REJECTED"
            ],
            "type": "string",
            "example": "APPROVED",
            "description": "Status of the organization. Organizations need to be approved to be able to use them to send out rewards."
          },
          "website": {
            "type": "string",
            "format": "uri",
            "example": "https://www.example.com/some-org",
            "description": "URL of the website of that organization"
          },
          "created_at": {
            "type": "string",
            "format": "date",
            "example": "2021-08-02",
            "description": "Timestamp of when the organization has been created.\n\n*This field is only returned when creating an organization.* It is not returned anymore when retrieving or listing organizations.\n"
          }
        },
        "description": "Organizations are a way to separate different parts of your business within the same Tremendous account.\nYour root Tremendous account is an organization itself and can have multiple sub-organizations.\n\nYou can assign users in your Tremendous team as members to any organization. Users can be members of multiple\norganizations at once.\n\nEach organizations can have it's own API key.\n"
      }
    }
  }
}
object OrganizationsGetOrganization401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsGetOrganization404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsGetOrganization429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsGetOrganization500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object OrganizationsGetOrganizationResponse
{
  "type": "object",
  "properties": {
    "organization": {
      "type": "object",
      "required": [
        "name",
        "website"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}"
        },
        "name": {
          "type": "string",
          "example": "ACME Inc.",
          "description": "Name of the organization"
        },
        "status": {
          "enum": [
            "PENDING",
            "APPROVED",
            "REJECTED"
          ],
          "type": "string",
          "example": "APPROVED",
          "description": "Status of the organization. Organizations need to be approved to be able to use them to send out rewards."
        },
        "website": {
          "type": "string",
          "format": "uri",
          "example": "https://www.example.com/some-org",
          "description": "URL of the website of that organization"
        },
        "created_at": {
          "type": "string",
          "format": "date",
          "example": "2021-08-02",
          "description": "Timestamp of when the organization has been created.\n\n*This field is only returned when creating an organization.* It is not returned anymore when retrieving or listing organizations.\n"
        }
      },
      "description": "Organizations are a way to separate different parts of your business within the same Tremendous account.\nYour root Tremendous account is an organization itself and can have multiple sub-organizations.\n\nYou can assign users in your Tremendous team as members to any organization. Users can be members of multiple\norganizations at once.\n\nEach organizations can have it's own API key.\n"
    }
  }
}
object PaymentDetails
{
  "type": "object",
  "properties": {
    "fees": {
      "type": "number",
      "format": "double",
      "example": 2.5,
      "minimum": 0,
      "readOnly": true,
      "description": "Fees for the order (in USD)"
    },
    "total": {
      "type": "number",
      "format": "double",
      "example": 52.5,
      "minimum": 0,
      "readOnly": true,
      "description": "Total price of the order including fees (in USD)"
    },
    "refund": {
      "type": "object",
      "required": [
        "total"
      ],
      "properties": {
        "total": {
          "type": "number",
          "format": "double",
          "example": 52.5,
          "minimum": 0,
          "readOnly": true,
          "description": "Total amount of the order refunds (in USD)"
        }
      },
      "description": "Breakdown of the order refunds (total amount in USD, independent from the currency of the ordered rewards).\nNote that this property will only appear for canceled orders or orders with canceled rewards.\n"
    },
    "channel": {
      "enum": [
        "UI",
        "API",
        "EMBED",
        "DECIPHER",
        "QUALTRICS",
        "TYPEFORM",
        "SURVEY MONKEY"
      ],
      "type": "string",
      "description": "Name of the channel in which the order was created"
    },
    "subtotal": {
      "type": "number",
      "format": "double",
      "example": 50,
      "minimum": 0,
      "readOnly": true,
      "description": "Total price of the order before fees (in USD)"
    }
  }
}
object Product
{
  "type": "object",
  "required": [
    "id",
    "name",
    "description",
    "category",
    "disclosure",
    "currency_codes",
    "countries",
    "images"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true
    },
    "name": {
      "type": "string",
      "description": "Name of the product"
    },
    "skus": {
      "type": "array",
      "items": {
        "type": "object",
        "example": [
          {
            "max": 100,
            "min": 20
          }
        ],
        "minItems": 0,
        "required": [
          "min",
          "max"
        ],
        "properties": {
          "max": {
            "type": "number",
            "example": 100,
            "minimum": 0,
            "description": "Maximum denomination that this product supports (in the product's currency)"
          },
          "min": {
            "type": "number",
            "example": 20,
            "minimum": 0,
            "description": "Minimal denomination that this product supports (in the product's currency)"
          }
        }
      },
      "description": "Products may are restricted in their usage based on the amount of the reward. The `skus` array defines bands of denominations in which this product may be used for payouts.\n"
    },
    "images": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "src",
          "type"
        ],
        "properties": {
          "src": {
            "type": "string",
            "format": "uri",
            "description": "URL to this image"
          },
          "type": {
            "enum": [
              "card",
              "logo"
            ],
            "type": "string",
            "description": "Type of image"
          }
        }
      },
      "example": [
        {
          "src": "https://example.com/some-logo.jpg",
          "type": "logo"
        }
      ],
      "minItems": 0,
      "description": "List of product images associated with this product (e.g. logos or images of the gift cards)"
    },
    "category": {
      "enum": [
        "ach",
        "charity",
        "merchant_card",
        "paypal",
        "venmo",
        "visa_card"
      ],
      "type": "string",
      "example": "charities",
      "description": "The category of this product\n\n<table>\n  <thead>\n    <tr>\n      <th>Category</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>ach</code></td>\n      <td>Bank transfer to the recipient</td>\n    </tr>\n    <tr>\n      <td><code>charity</code></td>\n      <td>Donations to a charity</td>\n    </tr>\n    <tr>\n      <td><code>merchant_card</code></td>\n      <td>A gift card for a certain merchant (e.g. Amazon)</td>\n    </tr>\n    <tr>\n      <td><code>paypal</code></td>\n      <td>Payout via PayPal</td>\n    </tr>\n    <tr>\n      <td><code>venmo</code></td>\n      <td>Payout via Venmo</td>\n    </tr>\n    <tr>\n      <td><code>visa_card</code></td>\n      <td>Payout in form of a Visa debit card</td>\n    </tr>\n  </tbody>\n</table>\n"
    },
    "countries": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "abbr"
        ],
        "properties": {
          "abbr": {
            "type": "string",
            "example": "US",
            "description": "ISO 3166 country code"
          }
        }
      },
      "example": [
        {
          "abbr": "US"
        }
      ],
      "minItems": 1,
      "description": "List of countries in which this product is available to recipients."
    },
    "disclosure": {
      "type": "string",
      "example": "<ul><li><p>This card may not be exchanged for cash.</p></li><li><p>…</p></li></ul>",
      "description": "Legal disclosures for this product. Can be in HTML format."
    },
    "description": {
      "type": "string",
      "description": "Detailed description of the product. Mostly used for products with a `category` of `charities`."
    },
    "currency_codes": {
      "type": "array",
      "items": {
        "enum": [
          "USD",
          "CAD",
          "EUR",
          "AED",
          "AFN",
          "ALL",
          "AMD",
          "ARS",
          "AUD",
          "AZN",
          "BAM",
          "BDT",
          "BGN",
          "BHD",
          "BIF",
          "BND",
          "BOB",
          "BRL",
          "BWP",
          "BYR",
          "BZD",
          "CDF",
          "CHF",
          "CLP",
          "CNY",
          "COP",
          "CRC",
          "CVE",
          "CZK",
          "DJF",
          "DKK",
          "DOP",
          "DZD",
          "EEK",
          "EGP",
          "ERN",
          "ETB",
          "GBP",
          "GEL",
          "GHS",
          "GNF",
          "GTQ",
          "HKD",
          "HNL",
          "HRK",
          "HUF",
          "IDR",
          "ILS",
          "INR",
          "IQD",
          "IRR",
          "ISK",
          "JMD",
          "JOD",
          "JPY",
          "KES",
          "KHR",
          "KRW",
          "KWD",
          "KZT",
          "LBP",
          "LKR",
          "LTL",
          "LVL",
          "MAD",
          "MDL",
          "MGA",
          "MKD",
          "MMK",
          "MOP",
          "MUR",
          "MXN",
          "MYR",
          "MZN",
          "NAD",
          "NGN",
          "NIO",
          "NOK",
          "NPR",
          "NZD",
          "OMR",
          "PAB",
          "PEN",
          "PHP",
          "PKR",
          "PLN",
          "PYG",
          "QAR",
          "RON",
          "RSD",
          "RUB",
          "RWF",
          "SAR",
          "SDG",
          "SEK",
          "SGD",
          "SOS",
          "SYP",
          "THB",
          "TND",
          "TOP",
          "TRY",
          "TTD",
          "TWD",
          "TZS",
          "UAH",
          "UGX",
          "UYU",
          "UZS",
          "VEF",
          "VND",
          "XAF",
          "XOF",
          "YER",
          "ZAR",
          "ZMK"
        ],
        "type": "string",
        "example": "USD"
      },
      "minItems": 1,
      "description": "Available currencies for this product"
    }
  },
  "description": "A product represents one way to payout a reward to it's recipient. Think:\n\n* Amazon.com gift card (ID: `OKMHM2X2OHYV`)\n* Donations to Save the Children (ID: `ESRNAD533W5A`)\n* Virtual Visa debit card (ID: `Q24BD9EZ332JT`)\n\neach of which is one specific product on Tremendous.\n\n> 📘 All available products\n>\n> See this [list](https://www.tremendous.com/catalog)\n\nProducts can be limited in their availability to recipients by\n\n* geography (field `countries`)\n* currency (field `currencies`)\n* amount of the reward (field `skus`)\n  * e.g. adidas gift cards accept any amount between 5 and 200 USD.\n\nSee the description of each respective parameter for further details.\n"
}
object ProductsGetById401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object ProductsGetById404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object ProductsGetById429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object ProductsGetById500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object ProductsGetByIdResponse
{
  "type": "object",
  "title": "GetProductResponse",
  "required": [
    "product"
  ],
  "properties": {
    "product": {
      "type": "object",
      "required": [
        "id",
        "name",
        "description",
        "category",
        "disclosure",
        "currency_codes",
        "countries",
        "images"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}"
        },
        "name": {
          "type": "string",
          "description": "Name of the product"
        },
        "skus": {
          "type": "array",
          "items": {
            "type": "object",
            "example": [
              {
                "max": 100,
                "min": 20
              }
            ],
            "minItems": 0,
            "required": [
              "min",
              "max"
            ],
            "properties": {
              "max": {
                "type": "number",
                "example": 100,
                "minimum": 0,
                "description": "Maximum denomination that this product supports (in the product's currency)"
              },
              "min": {
                "type": "number",
                "example": 20,
                "minimum": 0,
                "description": "Minimal denomination that this product supports (in the product's currency)"
              }
            }
          },
          "description": "Products may are restricted in their usage based on the amount of the reward. The `skus` array defines bands of denominations in which this product may be used for payouts.\n"
        },
        "images": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "src",
              "type"
            ],
            "properties": {
              "src": {
                "type": "string",
                "format": "uri",
                "description": "URL to this image"
              },
              "type": {
                "enum": [
                  "card",
                  "logo"
                ],
                "type": "string",
                "description": "Type of image"
              }
            }
          },
          "example": [
            {
              "src": "https://example.com/some-logo.jpg",
              "type": "logo"
            }
          ],
          "minItems": 0,
          "description": "List of product images associated with this product (e.g. logos or images of the gift cards)"
        },
        "category": {
          "enum": [
            "ach",
            "charity",
            "merchant_card",
            "paypal",
            "venmo",
            "visa_card"
          ],
          "type": "string",
          "example": "charities",
          "description": "The category of this product\n\n<table>\n  <thead>\n    <tr>\n      <th>Category</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>ach</code></td>\n      <td>Bank transfer to the recipient</td>\n    </tr>\n    <tr>\n      <td><code>charity</code></td>\n      <td>Donations to a charity</td>\n    </tr>\n    <tr>\n      <td><code>merchant_card</code></td>\n      <td>A gift card for a certain merchant (e.g. Amazon)</td>\n    </tr>\n    <tr>\n      <td><code>paypal</code></td>\n      <td>Payout via PayPal</td>\n    </tr>\n    <tr>\n      <td><code>venmo</code></td>\n      <td>Payout via Venmo</td>\n    </tr>\n    <tr>\n      <td><code>visa_card</code></td>\n      <td>Payout in form of a Visa debit card</td>\n    </tr>\n  </tbody>\n</table>\n"
        },
        "countries": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "abbr"
            ],
            "properties": {
              "abbr": {
                "type": "string",
                "example": "US",
                "description": "ISO 3166 country code"
              }
            }
          },
          "example": [
            {
              "abbr": "US"
            }
          ],
          "minItems": 1,
          "description": "List of countries in which this product is available to recipients."
        },
        "disclosure": {
          "type": "string",
          "example": "<ul><li><p>This card may not be exchanged for cash.</p></li><li><p>…</p></li></ul>",
          "description": "Legal disclosures for this product. Can be in HTML format."
        },
        "description": {
          "type": "string",
          "description": "Detailed description of the product. Mostly used for products with a `category` of `charities`."
        },
        "currency_codes": {
          "type": "array",
          "items": {
            "enum": [
              "USD",
              "CAD",
              "EUR",
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ARS",
              "AUD",
              "AZN",
              "BAM",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BND",
              "BOB",
              "BRL",
              "BWP",
              "BYR",
              "BZD",
              "CDF",
              "CHF",
              "CLP",
              "CNY",
              "COP",
              "CRC",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EEK",
              "EGP",
              "ERN",
              "ETB",
              "GBP",
              "GEL",
              "GHS",
              "GNF",
              "GTQ",
              "HKD",
              "HNL",
              "HRK",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KHR",
              "KRW",
              "KWD",
              "KZT",
              "LBP",
              "LKR",
              "LTL",
              "LVL",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MOP",
              "MUR",
              "MXN",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "PAB",
              "PEN",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SDG",
              "SEK",
              "SGD",
              "SOS",
              "SYP",
              "THB",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "UYU",
              "UZS",
              "VEF",
              "VND",
              "XAF",
              "XOF",
              "YER",
              "ZAR",
              "ZMK"
            ],
            "type": "string",
            "example": "USD"
          },
          "minItems": 1,
          "description": "Available currencies for this product"
        }
      },
      "description": "A product represents one way to payout a reward to it's recipient. Think:\n\n* Amazon.com gift card (ID: `OKMHM2X2OHYV`)\n* Donations to Save the Children (ID: `ESRNAD533W5A`)\n* Virtual Visa debit card (ID: `Q24BD9EZ332JT`)\n\neach of which is one specific product on Tremendous.\n\n> 📘 All available products\n>\n> See this [list](https://www.tremendous.com/catalog)\n\nProducts can be limited in their availability to recipients by\n\n* geography (field `countries`)\n* currency (field `currencies`)\n* amount of the reward (field `skus`)\n  * e.g. adidas gift cards accept any amount between 5 and 200 USD.\n\nSee the description of each respective parameter for further details.\n"
    }
  }
}
object ProductsGetList401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object ProductsGetList429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object ProductsGetList500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object ProductsGetListResponse
{
  "type": "object",
  "title": "ListProductsResponse",
  "required": [
    "products"
  ],
  "properties": {
    "products": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "description",
          "category",
          "disclosure",
          "currency_codes",
          "countries",
          "images"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "name": {
            "type": "string",
            "description": "Name of the product"
          },
          "skus": {
            "type": "array",
            "items": {
              "type": "object",
              "example": [
                {
                  "max": 100,
                  "min": 20
                }
              ],
              "minItems": 0,
              "required": [
                "min",
                "max"
              ],
              "properties": {
                "max": {
                  "type": "number",
                  "example": 100,
                  "minimum": 0,
                  "description": "Maximum denomination that this product supports (in the product's currency)"
                },
                "min": {
                  "type": "number",
                  "example": 20,
                  "minimum": 0,
                  "description": "Minimal denomination that this product supports (in the product's currency)"
                }
              }
            },
            "description": "Products may are restricted in their usage based on the amount of the reward. The `skus` array defines bands of denominations in which this product may be used for payouts.\n"
          },
          "images": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "src",
                "type"
              ],
              "properties": {
                "src": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to this image"
                },
                "type": {
                  "enum": [
                    "card",
                    "logo"
                  ],
                  "type": "string",
                  "description": "Type of image"
                }
              }
            },
            "example": [
              {
                "src": "https://example.com/some-logo.jpg",
                "type": "logo"
              }
            ],
            "minItems": 0,
            "description": "List of product images associated with this product (e.g. logos or images of the gift cards)"
          },
          "category": {
            "enum": [
              "ach",
              "charity",
              "merchant_card",
              "paypal",
              "venmo",
              "visa_card"
            ],
            "type": "string",
            "example": "charities",
            "description": "The category of this product\n\n<table>\n  <thead>\n    <tr>\n      <th>Category</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>ach</code></td>\n      <td>Bank transfer to the recipient</td>\n    </tr>\n    <tr>\n      <td><code>charity</code></td>\n      <td>Donations to a charity</td>\n    </tr>\n    <tr>\n      <td><code>merchant_card</code></td>\n      <td>A gift card for a certain merchant (e.g. Amazon)</td>\n    </tr>\n    <tr>\n      <td><code>paypal</code></td>\n      <td>Payout via PayPal</td>\n    </tr>\n    <tr>\n      <td><code>venmo</code></td>\n      <td>Payout via Venmo</td>\n    </tr>\n    <tr>\n      <td><code>visa_card</code></td>\n      <td>Payout in form of a Visa debit card</td>\n    </tr>\n  </tbody>\n</table>\n"
          },
          "countries": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "abbr"
              ],
              "properties": {
                "abbr": {
                  "type": "string",
                  "example": "US",
                  "description": "ISO 3166 country code"
                }
              }
            },
            "example": [
              {
                "abbr": "US"
              }
            ],
            "minItems": 1,
            "description": "List of countries in which this product is available to recipients."
          },
          "disclosure": {
            "type": "string",
            "example": "<ul><li><p>This card may not be exchanged for cash.</p></li><li><p>…</p></li></ul>",
            "description": "Legal disclosures for this product. Can be in HTML format."
          },
          "description": {
            "type": "string",
            "description": "Detailed description of the product. Mostly used for products with a `category` of `charities`."
          },
          "currency_codes": {
            "type": "array",
            "items": {
              "enum": [
                "USD",
                "CAD",
                "EUR",
                "AED",
                "AFN",
                "ALL",
                "AMD",
                "ARS",
                "AUD",
                "AZN",
                "BAM",
                "BDT",
                "BGN",
                "BHD",
                "BIF",
                "BND",
                "BOB",
                "BRL",
                "BWP",
                "BYR",
                "BZD",
                "CDF",
                "CHF",
                "CLP",
                "CNY",
                "COP",
                "CRC",
                "CVE",
                "CZK",
                "DJF",
                "DKK",
                "DOP",
                "DZD",
                "EEK",
                "EGP",
                "ERN",
                "ETB",
                "GBP",
                "GEL",
                "GHS",
                "GNF",
                "GTQ",
                "HKD",
                "HNL",
                "HRK",
                "HUF",
                "IDR",
                "ILS",
                "INR",
                "IQD",
                "IRR",
                "ISK",
                "JMD",
                "JOD",
                "JPY",
                "KES",
                "KHR",
                "KRW",
                "KWD",
                "KZT",
                "LBP",
                "LKR",
                "LTL",
                "LVL",
                "MAD",
                "MDL",
                "MGA",
                "MKD",
                "MMK",
                "MOP",
                "MUR",
                "MXN",
                "MYR",
                "MZN",
                "NAD",
                "NGN",
                "NIO",
                "NOK",
                "NPR",
                "NZD",
                "OMR",
                "PAB",
                "PEN",
                "PHP",
                "PKR",
                "PLN",
                "PYG",
                "QAR",
                "RON",
                "RSD",
                "RUB",
                "RWF",
                "SAR",
                "SDG",
                "SEK",
                "SGD",
                "SOS",
                "SYP",
                "THB",
                "TND",
                "TOP",
                "TRY",
                "TTD",
                "TWD",
                "TZS",
                "UAH",
                "UGX",
                "UYU",
                "UZS",
                "VEF",
                "VND",
                "XAF",
                "XOF",
                "YER",
                "ZAR",
                "ZMK"
              ],
              "type": "string",
              "example": "USD"
            },
            "minItems": 1,
            "description": "Available currencies for this product"
          }
        },
        "description": "A product represents one way to payout a reward to it's recipient. Think:\n\n* Amazon.com gift card (ID: `OKMHM2X2OHYV`)\n* Donations to Save the Children (ID: `ESRNAD533W5A`)\n* Virtual Visa debit card (ID: `Q24BD9EZ332JT`)\n\neach of which is one specific product on Tremendous.\n\n> 📘 All available products\n>\n> See this [list](https://www.tremendous.com/catalog)\n\nProducts can be limited in their availability to recipients by\n\n* geography (field `countries`)\n* currency (field `currencies`)\n* amount of the reward (field `skus`)\n  * e.g. adidas gift cards accept any amount between 5 and 200 USD.\n\nSee the description of each respective parameter for further details.\n"
      }
    }
  }
}
object Recipient
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "example": "John Doe Jr.",
      "description": "Name of the recipient"
    },
    "email": {
      "type": "string",
      "example": "john.doe@example.com",
      "description": "Email address of the recipient"
    },
    "phone": {
      "type": "string",
      "example": "123-456-7890",
      "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
    }
  },
  "description": "Details of the recipient of the reward"
}
object RefundDetails
{
  "type": "object",
  "required": [
    "total"
  ],
  "properties": {
    "total": {
      "type": "number",
      "format": "double",
      "example": 52.5,
      "minimum": 0,
      "readOnly": true,
      "description": "Total amount of the order refunds (in USD)"
    }
  }
}
object Reward
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the reward"
    },
    "value": {
      "type": "object",
      "example": {
        "denomination": 50,
        "currency_code": "USD"
      },
      "required": [
        "denomination",
        "currency_code"
      ],
      "properties": {
        "denomination": {
          "type": "number",
          "format": "double",
          "description": "Amount of the reward"
        },
        "currency_code": {
          "enum": [
            "USD",
            "CAD",
            "EUR",
            "AED",
            "AFN",
            "ALL",
            "AMD",
            "ARS",
            "AUD",
            "AZN",
            "BAM",
            "BDT",
            "BGN",
            "BHD",
            "BIF",
            "BND",
            "BOB",
            "BRL",
            "BWP",
            "BYR",
            "BZD",
            "CDF",
            "CHF",
            "CLP",
            "CNY",
            "COP",
            "CRC",
            "CVE",
            "CZK",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "EEK",
            "EGP",
            "ERN",
            "ETB",
            "GBP",
            "GEL",
            "GHS",
            "GNF",
            "GTQ",
            "HKD",
            "HNL",
            "HRK",
            "HUF",
            "IDR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISK",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KHR",
            "KRW",
            "KWD",
            "KZT",
            "LBP",
            "LKR",
            "LTL",
            "LVL",
            "MAD",
            "MDL",
            "MGA",
            "MKD",
            "MMK",
            "MOP",
            "MUR",
            "MXN",
            "MYR",
            "MZN",
            "NAD",
            "NGN",
            "NIO",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PAB",
            "PEN",
            "PHP",
            "PKR",
            "PLN",
            "PYG",
            "QAR",
            "RON",
            "RSD",
            "RUB",
            "RWF",
            "SAR",
            "SDG",
            "SEK",
            "SGD",
            "SOS",
            "SYP",
            "THB",
            "TND",
            "TOP",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UGX",
            "UYU",
            "UZS",
            "VEF",
            "VND",
            "XAF",
            "XOF",
            "YER",
            "ZAR",
            "ZMK"
          ],
          "type": "string",
          "example": "USD",
          "description": "Currency of the reward"
        }
      }
    },
    "delivery": {
      "type": "object",
      "required": [
        "method",
        "status"
      ],
      "properties": {
        "method": {
          "enum": [
            "EMAIL",
            "LINK",
            "PHONE"
          ],
          "type": "string",
          "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
        },
        "status": {
          "enum": [
            "SCHEDULED",
            "FAILED",
            "SUCCEEDED",
            "PENDING"
          ],
          "type": "string",
          "readOnly": true,
          "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
        }
      },
      "description": "Details on how the reward is delivered to the recipient.\n"
    },
    "order_id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the order this reward is part of."
    },
    "products": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "SOMEIDSOMEID",
        "pattern": "[A-Z0-9]{4,20}",
        "readOnly": false,
        "writeOnly": true
      },
      "minItems": 1,
      "writeOnly": true,
      "description": "List of IDs of product (different gift cards, charity, etc.) that will be available\nto the recipient to choose from.\n\nProviding a `products` array will override the products made available by the campaign\nspecified using the `campaign_id` property unless the `products` array is empty. It will\n_not_ override other campaign attributes, like the message and customization of the look and feel.\n"
    },
    "recipient": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "example": "John Doe Jr.",
          "description": "Name of the recipient"
        },
        "email": {
          "type": "string",
          "example": "john.doe@example.com",
          "description": "Email address of the recipient"
        },
        "phone": {
          "type": "string",
          "example": "123-456-7890",
          "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
        }
      },
      "description": "Details of the recipient of the reward"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Date the reward was created"
    },
    "deliver_at": {
      "type": "string",
      "format": "date",
      "example": "2023-12-31",
      "pattern": "YYYY-MM-DD",
      "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
    },
    "campaign_id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "nullable": true,
      "readOnly": false,
      "writeOnly": true,
      "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
    },
    "custom_fields": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}",
            "readOnly": false,
            "description": "Tremendous ID of the custom field"
          },
          "label": {
            "type": "string",
            "example": "harry_potter_house",
            "readOnly": false,
            "description": "Label of the custom field"
          },
          "value": {
            "type": "string",
            "example": "Hufflepuff",
            "nullable": true,
            "readOnly": false,
            "description": "Value of the custom field"
          }
        },
        "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
      }
    }
  },
  "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
}
object RewardBase
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the reward"
    },
    "value": {
      "type": "object",
      "example": {
        "denomination": 50,
        "currency_code": "USD"
      },
      "required": [
        "denomination",
        "currency_code"
      ],
      "properties": {
        "denomination": {
          "type": "number",
          "format": "double",
          "description": "Amount of the reward"
        },
        "currency_code": {
          "enum": [
            "USD",
            "CAD",
            "EUR",
            "AED",
            "AFN",
            "ALL",
            "AMD",
            "ARS",
            "AUD",
            "AZN",
            "BAM",
            "BDT",
            "BGN",
            "BHD",
            "BIF",
            "BND",
            "BOB",
            "BRL",
            "BWP",
            "BYR",
            "BZD",
            "CDF",
            "CHF",
            "CLP",
            "CNY",
            "COP",
            "CRC",
            "CVE",
            "CZK",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "EEK",
            "EGP",
            "ERN",
            "ETB",
            "GBP",
            "GEL",
            "GHS",
            "GNF",
            "GTQ",
            "HKD",
            "HNL",
            "HRK",
            "HUF",
            "IDR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISK",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KHR",
            "KRW",
            "KWD",
            "KZT",
            "LBP",
            "LKR",
            "LTL",
            "LVL",
            "MAD",
            "MDL",
            "MGA",
            "MKD",
            "MMK",
            "MOP",
            "MUR",
            "MXN",
            "MYR",
            "MZN",
            "NAD",
            "NGN",
            "NIO",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PAB",
            "PEN",
            "PHP",
            "PKR",
            "PLN",
            "PYG",
            "QAR",
            "RON",
            "RSD",
            "RUB",
            "RWF",
            "SAR",
            "SDG",
            "SEK",
            "SGD",
            "SOS",
            "SYP",
            "THB",
            "TND",
            "TOP",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UGX",
            "UYU",
            "UZS",
            "VEF",
            "VND",
            "XAF",
            "XOF",
            "YER",
            "ZAR",
            "ZMK"
          ],
          "type": "string",
          "example": "USD",
          "description": "Currency of the reward"
        }
      }
    },
    "order_id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the order this reward is part of."
    },
    "products": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "SOMEIDSOMEID",
        "pattern": "[A-Z0-9]{4,20}",
        "readOnly": false,
        "writeOnly": true
      },
      "minItems": 1,
      "writeOnly": true,
      "description": "List of IDs of product (different gift cards, charity, etc.) that will be available\nto the recipient to choose from.\n\nProviding a `products` array will override the products made available by the campaign\nspecified using the `campaign_id` property unless the `products` array is empty. It will\n_not_ override other campaign attributes, like the message and customization of the look and feel.\n"
    },
    "recipient": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "example": "John Doe Jr.",
          "description": "Name of the recipient"
        },
        "email": {
          "type": "string",
          "example": "john.doe@example.com",
          "description": "Email address of the recipient"
        },
        "phone": {
          "type": "string",
          "example": "123-456-7890",
          "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
        }
      },
      "description": "Details of the recipient of the reward"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Date the reward was created"
    },
    "deliver_at": {
      "type": "string",
      "format": "date",
      "example": "2023-12-31",
      "pattern": "YYYY-MM-DD",
      "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
    },
    "campaign_id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "nullable": true,
      "readOnly": false,
      "writeOnly": true,
      "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
    },
    "custom_fields": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}",
            "readOnly": false,
            "description": "Tremendous ID of the custom field"
          },
          "label": {
            "type": "string",
            "example": "harry_potter_house",
            "readOnly": false,
            "description": "Label of the custom field"
          },
          "value": {
            "type": "string",
            "example": "Hufflepuff",
            "nullable": true,
            "readOnly": false,
            "description": "Value of the custom field"
          }
        },
        "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
      }
    }
  },
  "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
}
object RewardForOrderCreate
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the reward"
    },
    "value": {
      "type": "object",
      "example": {
        "denomination": 50,
        "currency_code": "USD"
      },
      "required": [
        "denomination",
        "currency_code"
      ],
      "properties": {
        "denomination": {
          "type": "number",
          "format": "double",
          "description": "Amount of the reward"
        },
        "currency_code": {
          "enum": [
            "USD",
            "CAD",
            "EUR",
            "AED",
            "AFN",
            "ALL",
            "AMD",
            "ARS",
            "AUD",
            "AZN",
            "BAM",
            "BDT",
            "BGN",
            "BHD",
            "BIF",
            "BND",
            "BOB",
            "BRL",
            "BWP",
            "BYR",
            "BZD",
            "CDF",
            "CHF",
            "CLP",
            "CNY",
            "COP",
            "CRC",
            "CVE",
            "CZK",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "EEK",
            "EGP",
            "ERN",
            "ETB",
            "GBP",
            "GEL",
            "GHS",
            "GNF",
            "GTQ",
            "HKD",
            "HNL",
            "HRK",
            "HUF",
            "IDR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISK",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KHR",
            "KRW",
            "KWD",
            "KZT",
            "LBP",
            "LKR",
            "LTL",
            "LVL",
            "MAD",
            "MDL",
            "MGA",
            "MKD",
            "MMK",
            "MOP",
            "MUR",
            "MXN",
            "MYR",
            "MZN",
            "NAD",
            "NGN",
            "NIO",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PAB",
            "PEN",
            "PHP",
            "PKR",
            "PLN",
            "PYG",
            "QAR",
            "RON",
            "RSD",
            "RUB",
            "RWF",
            "SAR",
            "SDG",
            "SEK",
            "SGD",
            "SOS",
            "SYP",
            "THB",
            "TND",
            "TOP",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UGX",
            "UYU",
            "UZS",
            "VEF",
            "VND",
            "XAF",
            "XOF",
            "YER",
            "ZAR",
            "ZMK"
          ],
          "type": "string",
          "example": "USD",
          "description": "Currency of the reward"
        }
      }
    },
    "delivery": {
      "type": "object",
      "properties": {
        "method": {
          "enum": [
            "EMAIL",
            "LINK",
            "PHONE"
          ],
          "type": "string",
          "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
        }
      },
      "description": "Details on how the reward is delivered to the recipient.\n"
    },
    "language": {
      "type": "string",
      "example": "de",
      "description": "Set this to translate the redemption experience for this reward. Pass a 2-letter [ISO-639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) for the desired language. Defaults to `en`.\n"
    },
    "order_id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the order this reward is part of."
    },
    "products": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "SOMEIDSOMEID",
        "pattern": "[A-Z0-9]{4,20}",
        "readOnly": false,
        "writeOnly": true
      },
      "minItems": 1,
      "writeOnly": true,
      "description": "List of IDs of product (different gift cards, charity, etc.) that will be available\nto the recipient to choose from.\n\nProviding a `products` array will override the products made available by the campaign\nspecified using the `campaign_id` property unless the `products` array is empty. It will\n_not_ override other campaign attributes, like the message and customization of the look and feel.\n"
    },
    "recipient": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "example": "John Doe Jr.",
          "description": "Name of the recipient"
        },
        "email": {
          "type": "string",
          "example": "john.doe@example.com",
          "description": "Email address of the recipient"
        },
        "phone": {
          "type": "string",
          "example": "123-456-7890",
          "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
        }
      },
      "description": "Details of the recipient of the reward"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Date the reward was created"
    },
    "deliver_at": {
      "type": "string",
      "format": "date",
      "example": "2023-12-31",
      "pattern": "YYYY-MM-DD",
      "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
    },
    "campaign_id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "nullable": true,
      "readOnly": false,
      "writeOnly": true,
      "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
    },
    "custom_fields": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}",
            "readOnly": false,
            "description": "Tremendous ID of the custom field"
          },
          "label": {
            "type": "string",
            "example": "harry_potter_house",
            "readOnly": false,
            "description": "Label of the custom field"
          },
          "value": {
            "type": "string",
            "example": "Hufflepuff",
            "nullable": true,
            "readOnly": false,
            "description": "Value of the custom field"
          }
        },
        "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
      }
    }
  },
  "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
}
object RewardLink
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the reward"
    },
    "link": {
      "type": "string",
      "example": "https://testflight.tremendous.com/rewards/payout/ve0jrwn6q--ba1eoadem8ayukldsygyrlbikascdgsh",
      "readOnly": true,
      "description": "Link to redeem the reward at. You need to deliver this link to the recipient.\n"
    }
  },
  "description": "The redemption link for a reward."
}
object RewardToken
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the reward"
    },
    "token": {
      "type": "string",
      "example": "ve0jrwn6q--ba1eoadem8ayukldsygyrlbikascdgsh",
      "readOnly": true,
      "description": "The token to redeem the reward.\n"
    },
    "expires_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Date the token expires"
    }
  },
  "description": "The redemption token for a reward."
}
object RewardValue
{
  "type": "object",
  "example": {
    "denomination": 50,
    "currency_code": "USD"
  },
  "required": [
    "denomination",
    "currency_code"
  ],
  "properties": {
    "denomination": {
      "type": "number",
      "format": "double",
      "description": "Amount of the reward"
    },
    "currency_code": {
      "enum": [
        "USD",
        "CAD",
        "EUR",
        "AED",
        "AFN",
        "ALL",
        "AMD",
        "ARS",
        "AUD",
        "AZN",
        "BAM",
        "BDT",
        "BGN",
        "BHD",
        "BIF",
        "BND",
        "BOB",
        "BRL",
        "BWP",
        "BYR",
        "BZD",
        "CDF",
        "CHF",
        "CLP",
        "CNY",
        "COP",
        "CRC",
        "CVE",
        "CZK",
        "DJF",
        "DKK",
        "DOP",
        "DZD",
        "EEK",
        "EGP",
        "ERN",
        "ETB",
        "GBP",
        "GEL",
        "GHS",
        "GNF",
        "GTQ",
        "HKD",
        "HNL",
        "HRK",
        "HUF",
        "IDR",
        "ILS",
        "INR",
        "IQD",
        "IRR",
        "ISK",
        "JMD",
        "JOD",
        "JPY",
        "KES",
        "KHR",
        "KRW",
        "KWD",
        "KZT",
        "LBP",
        "LKR",
        "LTL",
        "LVL",
        "MAD",
        "MDL",
        "MGA",
        "MKD",
        "MMK",
        "MOP",
        "MUR",
        "MXN",
        "MYR",
        "MZN",
        "NAD",
        "NGN",
        "NIO",
        "NOK",
        "NPR",
        "NZD",
        "OMR",
        "PAB",
        "PEN",
        "PHP",
        "PKR",
        "PLN",
        "PYG",
        "QAR",
        "RON",
        "RSD",
        "RUB",
        "RWF",
        "SAR",
        "SDG",
        "SEK",
        "SGD",
        "SOS",
        "SYP",
        "THB",
        "TND",
        "TOP",
        "TRY",
        "TTD",
        "TWD",
        "TZS",
        "UAH",
        "UGX",
        "UYU",
        "UZS",
        "VEF",
        "VND",
        "XAF",
        "XOF",
        "YER",
        "ZAR",
        "ZMK"
      ],
      "type": "string",
      "example": "USD",
      "description": "Currency of the reward"
    }
  }
}
object RewardWithLink
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the reward"
    },
    "value": {
      "type": "object",
      "example": {
        "denomination": 50,
        "currency_code": "USD"
      },
      "required": [
        "denomination",
        "currency_code"
      ],
      "properties": {
        "denomination": {
          "type": "number",
          "format": "double",
          "description": "Amount of the reward"
        },
        "currency_code": {
          "enum": [
            "USD",
            "CAD",
            "EUR",
            "AED",
            "AFN",
            "ALL",
            "AMD",
            "ARS",
            "AUD",
            "AZN",
            "BAM",
            "BDT",
            "BGN",
            "BHD",
            "BIF",
            "BND",
            "BOB",
            "BRL",
            "BWP",
            "BYR",
            "BZD",
            "CDF",
            "CHF",
            "CLP",
            "CNY",
            "COP",
            "CRC",
            "CVE",
            "CZK",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "EEK",
            "EGP",
            "ERN",
            "ETB",
            "GBP",
            "GEL",
            "GHS",
            "GNF",
            "GTQ",
            "HKD",
            "HNL",
            "HRK",
            "HUF",
            "IDR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISK",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KHR",
            "KRW",
            "KWD",
            "KZT",
            "LBP",
            "LKR",
            "LTL",
            "LVL",
            "MAD",
            "MDL",
            "MGA",
            "MKD",
            "MMK",
            "MOP",
            "MUR",
            "MXN",
            "MYR",
            "MZN",
            "NAD",
            "NGN",
            "NIO",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PAB",
            "PEN",
            "PHP",
            "PKR",
            "PLN",
            "PYG",
            "QAR",
            "RON",
            "RSD",
            "RUB",
            "RWF",
            "SAR",
            "SDG",
            "SEK",
            "SGD",
            "SOS",
            "SYP",
            "THB",
            "TND",
            "TOP",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UGX",
            "UYU",
            "UZS",
            "VEF",
            "VND",
            "XAF",
            "XOF",
            "YER",
            "ZAR",
            "ZMK"
          ],
          "type": "string",
          "example": "USD",
          "description": "Currency of the reward"
        }
      }
    },
    "delivery": {
      "type": "object",
      "required": [
        "method",
        "status"
      ],
      "properties": {
        "link": {
          "type": "string",
          "example": "https://testflight.tremendous.com/rewards/payout/z67jic92r",
          "readOnly": true,
          "description": "Link to redeem the reward at. You need to deliver this link to the recipient.\n\nOnly available for rewards for which the `method` for delivery is set to `LINK`.\n"
        },
        "method": {
          "enum": [
            "EMAIL",
            "LINK",
            "PHONE"
          ],
          "type": "string",
          "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
        },
        "status": {
          "enum": [
            "SCHEDULED",
            "FAILED",
            "SUCCEEDED",
            "PENDING"
          ],
          "type": "string",
          "readOnly": true,
          "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
        }
      },
      "description": "Details on how the reward is delivered to the recipient.\n"
    },
    "order_id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the order this reward is part of."
    },
    "products": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "SOMEIDSOMEID",
        "pattern": "[A-Z0-9]{4,20}",
        "readOnly": false,
        "writeOnly": true
      },
      "minItems": 1,
      "writeOnly": true,
      "description": "List of IDs of product (different gift cards, charity, etc.) that will be available\nto the recipient to choose from.\n\nProviding a `products` array will override the products made available by the campaign\nspecified using the `campaign_id` property unless the `products` array is empty. It will\n_not_ override other campaign attributes, like the message and customization of the look and feel.\n"
    },
    "recipient": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "example": "John Doe Jr.",
          "description": "Name of the recipient"
        },
        "email": {
          "type": "string",
          "example": "john.doe@example.com",
          "description": "Email address of the recipient"
        },
        "phone": {
          "type": "string",
          "example": "123-456-7890",
          "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
        }
      },
      "description": "Details of the recipient of the reward"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Date the reward was created"
    },
    "deliver_at": {
      "type": "string",
      "format": "date",
      "example": "2023-12-31",
      "pattern": "YYYY-MM-DD",
      "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
    },
    "campaign_id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "nullable": true,
      "readOnly": false,
      "writeOnly": true,
      "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
    },
    "custom_fields": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}",
            "readOnly": false,
            "description": "Tremendous ID of the custom field"
          },
          "label": {
            "type": "string",
            "example": "harry_potter_house",
            "readOnly": false,
            "description": "Label of the custom field"
          },
          "value": {
            "type": "string",
            "example": "Hufflepuff",
            "nullable": true,
            "readOnly": false,
            "description": "Value of the custom field"
          }
        },
        "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
      }
    }
  },
  "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
}
object RewardWithoutLink
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the reward"
    },
    "value": {
      "type": "object",
      "example": {
        "denomination": 50,
        "currency_code": "USD"
      },
      "required": [
        "denomination",
        "currency_code"
      ],
      "properties": {
        "denomination": {
          "type": "number",
          "format": "double",
          "description": "Amount of the reward"
        },
        "currency_code": {
          "enum": [
            "USD",
            "CAD",
            "EUR",
            "AED",
            "AFN",
            "ALL",
            "AMD",
            "ARS",
            "AUD",
            "AZN",
            "BAM",
            "BDT",
            "BGN",
            "BHD",
            "BIF",
            "BND",
            "BOB",
            "BRL",
            "BWP",
            "BYR",
            "BZD",
            "CDF",
            "CHF",
            "CLP",
            "CNY",
            "COP",
            "CRC",
            "CVE",
            "CZK",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "EEK",
            "EGP",
            "ERN",
            "ETB",
            "GBP",
            "GEL",
            "GHS",
            "GNF",
            "GTQ",
            "HKD",
            "HNL",
            "HRK",
            "HUF",
            "IDR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISK",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KHR",
            "KRW",
            "KWD",
            "KZT",
            "LBP",
            "LKR",
            "LTL",
            "LVL",
            "MAD",
            "MDL",
            "MGA",
            "MKD",
            "MMK",
            "MOP",
            "MUR",
            "MXN",
            "MYR",
            "MZN",
            "NAD",
            "NGN",
            "NIO",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PAB",
            "PEN",
            "PHP",
            "PKR",
            "PLN",
            "PYG",
            "QAR",
            "RON",
            "RSD",
            "RUB",
            "RWF",
            "SAR",
            "SDG",
            "SEK",
            "SGD",
            "SOS",
            "SYP",
            "THB",
            "TND",
            "TOP",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UGX",
            "UYU",
            "UZS",
            "VEF",
            "VND",
            "XAF",
            "XOF",
            "YER",
            "ZAR",
            "ZMK"
          ],
          "type": "string",
          "example": "USD",
          "description": "Currency of the reward"
        }
      }
    },
    "delivery": {
      "type": "object",
      "required": [
        "method",
        "status"
      ],
      "properties": {
        "method": {
          "enum": [
            "EMAIL",
            "LINK",
            "PHONE"
          ],
          "type": "string",
          "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
        },
        "status": {
          "enum": [
            "SCHEDULED",
            "FAILED",
            "SUCCEEDED",
            "PENDING"
          ],
          "type": "string",
          "readOnly": true,
          "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
        }
      },
      "description": "Details on how the reward is delivered to the recipient.\n"
    },
    "order_id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true,
      "description": "Tremendous ID of the order this reward is part of."
    },
    "products": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "SOMEIDSOMEID",
        "pattern": "[A-Z0-9]{4,20}",
        "readOnly": false,
        "writeOnly": true
      },
      "minItems": 1,
      "writeOnly": true,
      "description": "List of IDs of product (different gift cards, charity, etc.) that will be available\nto the recipient to choose from.\n\nProviding a `products` array will override the products made available by the campaign\nspecified using the `campaign_id` property unless the `products` array is empty. It will\n_not_ override other campaign attributes, like the message and customization of the look and feel.\n"
    },
    "recipient": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "example": "John Doe Jr.",
          "description": "Name of the recipient"
        },
        "email": {
          "type": "string",
          "example": "john.doe@example.com",
          "description": "Email address of the recipient"
        },
        "phone": {
          "type": "string",
          "example": "123-456-7890",
          "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
        }
      },
      "description": "Details of the recipient of the reward"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "description": "Date the reward was created"
    },
    "deliver_at": {
      "type": "string",
      "format": "date",
      "example": "2023-12-31",
      "pattern": "YYYY-MM-DD",
      "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
    },
    "campaign_id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "nullable": true,
      "readOnly": false,
      "writeOnly": true,
      "description": "ID of the campaign in your account, that defines the available products (different gift cards, charity, etc.)\nthat the recipient can choose from.\n"
    },
    "custom_fields": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}",
            "readOnly": false,
            "description": "Tremendous ID of the custom field"
          },
          "label": {
            "type": "string",
            "example": "harry_potter_house",
            "readOnly": false,
            "description": "Label of the custom field"
          },
          "value": {
            "type": "string",
            "example": "Hufflepuff",
            "nullable": true,
            "readOnly": false,
            "description": "Value of the custom field"
          }
        },
        "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
      }
    }
  },
  "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
}
object RewardsGenerateEmbedToken401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsGenerateEmbedToken404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsGenerateEmbedToken429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsGenerateEmbedToken500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsGenerateEmbedTokenResponse
{
  "type": "object",
  "required": [
    "reward"
  ],
  "properties": {
    "reward": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "description": "Tremendous ID of the reward"
        },
        "token": {
          "type": "string",
          "example": "ve0jrwn6q--ba1eoadem8ayukldsygyrlbikascdgsh",
          "description": "The token to redeem the reward.\n"
        },
        "expires_at": {
          "type": "string",
          "format": "date-time",
          "description": "Date the token expires"
        }
      },
      "description": "The redemption token for a reward."
    }
  }
}
object RewardsGenerateLink401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsGenerateLink403Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Unsupported operation for this reward.",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsGenerateLink404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsGenerateLink429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsGenerateLink500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsGenerateLinkResponse
{
  "type": "object",
  "required": [
    "reward"
  ],
  "properties": {
    "reward": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "description": "Tremendous ID of the reward"
        },
        "link": {
          "type": "string",
          "example": "https://testflight.tremendous.com/rewards/payout/ve0jrwn6q--ba1eoadem8ayukldsygyrlbikascdgsh",
          "description": "Link to redeem the reward at. You need to deliver this link to the recipient.\n"
        }
      },
      "description": "The redemption link for a reward."
    }
  }
}
object RewardsGetSingleReward401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsGetSingleReward404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsGetSingleReward429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsGetSingleReward500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsGetSingleRewardResponse
{
  "type": "object",
  "required": [
    "reward"
  ],
  "properties": {
    "reward": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "description": "Tremendous ID of the reward"
        },
        "value": {
          "type": "object",
          "example": {
            "denomination": 50,
            "currency_code": "USD"
          },
          "required": [
            "denomination",
            "currency_code"
          ],
          "properties": {
            "denomination": {
              "type": "number",
              "format": "double",
              "description": "Amount of the reward"
            },
            "currency_code": {
              "enum": [
                "USD",
                "CAD",
                "EUR",
                "AED",
                "AFN",
                "ALL",
                "AMD",
                "ARS",
                "AUD",
                "AZN",
                "BAM",
                "BDT",
                "BGN",
                "BHD",
                "BIF",
                "BND",
                "BOB",
                "BRL",
                "BWP",
                "BYR",
                "BZD",
                "CDF",
                "CHF",
                "CLP",
                "CNY",
                "COP",
                "CRC",
                "CVE",
                "CZK",
                "DJF",
                "DKK",
                "DOP",
                "DZD",
                "EEK",
                "EGP",
                "ERN",
                "ETB",
                "GBP",
                "GEL",
                "GHS",
                "GNF",
                "GTQ",
                "HKD",
                "HNL",
                "HRK",
                "HUF",
                "IDR",
                "ILS",
                "INR",
                "IQD",
                "IRR",
                "ISK",
                "JMD",
                "JOD",
                "JPY",
                "KES",
                "KHR",
                "KRW",
                "KWD",
                "KZT",
                "LBP",
                "LKR",
                "LTL",
                "LVL",
                "MAD",
                "MDL",
                "MGA",
                "MKD",
                "MMK",
                "MOP",
                "MUR",
                "MXN",
                "MYR",
                "MZN",
                "NAD",
                "NGN",
                "NIO",
                "NOK",
                "NPR",
                "NZD",
                "OMR",
                "PAB",
                "PEN",
                "PHP",
                "PKR",
                "PLN",
                "PYG",
                "QAR",
                "RON",
                "RSD",
                "RUB",
                "RWF",
                "SAR",
                "SDG",
                "SEK",
                "SGD",
                "SOS",
                "SYP",
                "THB",
                "TND",
                "TOP",
                "TRY",
                "TTD",
                "TWD",
                "TZS",
                "UAH",
                "UGX",
                "UYU",
                "UZS",
                "VEF",
                "VND",
                "XAF",
                "XOF",
                "YER",
                "ZAR",
                "ZMK"
              ],
              "type": "string",
              "example": "USD",
              "description": "Currency of the reward"
            }
          }
        },
        "delivery": {
          "type": "object",
          "required": [
            "method",
            "status"
          ],
          "properties": {
            "method": {
              "enum": [
                "EMAIL",
                "LINK",
                "PHONE"
              ],
              "type": "string",
              "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
            },
            "status": {
              "enum": [
                "SCHEDULED",
                "FAILED",
                "SUCCEEDED",
                "PENDING"
              ],
              "type": "string",
              "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
            }
          },
          "description": "Details on how the reward is delivered to the recipient.\n"
        },
        "order_id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}",
          "description": "Tremendous ID of the order this reward is part of."
        },
        "recipient": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "example": "John Doe Jr.",
              "description": "Name of the recipient"
            },
            "email": {
              "type": "string",
              "example": "john.doe@example.com",
              "description": "Email address of the recipient"
            },
            "phone": {
              "type": "string",
              "example": "123-456-7890",
              "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
            }
          },
          "description": "Details of the recipient of the reward"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Date the reward was created"
        },
        "deliver_at": {
          "type": "string",
          "format": "date",
          "example": "2023-12-31",
          "pattern": "YYYY-MM-DD",
          "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
        },
        "custom_fields": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "SOMEIDSOMEID",
                "pattern": "[A-Z0-9]{4,20}",
                "description": "Tremendous ID of the custom field"
              },
              "label": {
                "type": "string",
                "example": "harry_potter_house",
                "description": "Label of the custom field"
              },
              "value": {
                "type": "string",
                "example": "Hufflepuff",
                "nullable": true,
                "description": "Value of the custom field"
              }
            },
            "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
          }
        }
      },
      "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
    }
  }
}
object RewardsListAllRewards401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsListAllRewards429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsListAllRewards500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsListAllRewardsResponse
{
  "type": "object",
  "properties": {
    "rewards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}",
            "description": "Tremendous ID of the reward"
          },
          "value": {
            "type": "object",
            "example": {
              "denomination": 50,
              "currency_code": "USD"
            },
            "required": [
              "denomination",
              "currency_code"
            ],
            "properties": {
              "denomination": {
                "type": "number",
                "format": "double",
                "description": "Amount of the reward"
              },
              "currency_code": {
                "enum": [
                  "USD",
                  "CAD",
                  "EUR",
                  "AED",
                  "AFN",
                  "ALL",
                  "AMD",
                  "ARS",
                  "AUD",
                  "AZN",
                  "BAM",
                  "BDT",
                  "BGN",
                  "BHD",
                  "BIF",
                  "BND",
                  "BOB",
                  "BRL",
                  "BWP",
                  "BYR",
                  "BZD",
                  "CDF",
                  "CHF",
                  "CLP",
                  "CNY",
                  "COP",
                  "CRC",
                  "CVE",
                  "CZK",
                  "DJF",
                  "DKK",
                  "DOP",
                  "DZD",
                  "EEK",
                  "EGP",
                  "ERN",
                  "ETB",
                  "GBP",
                  "GEL",
                  "GHS",
                  "GNF",
                  "GTQ",
                  "HKD",
                  "HNL",
                  "HRK",
                  "HUF",
                  "IDR",
                  "ILS",
                  "INR",
                  "IQD",
                  "IRR",
                  "ISK",
                  "JMD",
                  "JOD",
                  "JPY",
                  "KES",
                  "KHR",
                  "KRW",
                  "KWD",
                  "KZT",
                  "LBP",
                  "LKR",
                  "LTL",
                  "LVL",
                  "MAD",
                  "MDL",
                  "MGA",
                  "MKD",
                  "MMK",
                  "MOP",
                  "MUR",
                  "MXN",
                  "MYR",
                  "MZN",
                  "NAD",
                  "NGN",
                  "NIO",
                  "NOK",
                  "NPR",
                  "NZD",
                  "OMR",
                  "PAB",
                  "PEN",
                  "PHP",
                  "PKR",
                  "PLN",
                  "PYG",
                  "QAR",
                  "RON",
                  "RSD",
                  "RUB",
                  "RWF",
                  "SAR",
                  "SDG",
                  "SEK",
                  "SGD",
                  "SOS",
                  "SYP",
                  "THB",
                  "TND",
                  "TOP",
                  "TRY",
                  "TTD",
                  "TWD",
                  "TZS",
                  "UAH",
                  "UGX",
                  "UYU",
                  "UZS",
                  "VEF",
                  "VND",
                  "XAF",
                  "XOF",
                  "YER",
                  "ZAR",
                  "ZMK"
                ],
                "type": "string",
                "example": "USD",
                "description": "Currency of the reward"
              }
            }
          },
          "delivery": {
            "type": "object",
            "required": [
              "method",
              "status"
            ],
            "properties": {
              "method": {
                "enum": [
                  "EMAIL",
                  "LINK",
                  "PHONE"
                ],
                "type": "string",
                "description": "How to deliver the reward to the recipient.\n\n<table>\n  <thead>\n    <tr>\n      <th>Delivery Method</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><code>EMAIL</code></td>\n      <td>Deliver the reward to the recipient by email</td>\n    </tr>\n    <tr>\n      <td><code>LINK</code></td>\n      <td>\n        <p>Deliver the reward to the recipient via a link.</p>\n        <p>The link can be retrieved on a successfully ordered reward via the <code>/rewards</code> or <code>/rewards/{id}</code> endpoint. That link must then be  delivered to the recipient out-of-band.</p>\n      </td>\n    </tr>\n    <tr>\n      <td><code>PHONE</code></td>\n      <td>Deliver the reward to the recipient by SMS</td>\n    </tr>\n  </tbody>\n</table>\n"
              },
              "status": {
                "enum": [
                  "SCHEDULED",
                  "FAILED",
                  "SUCCEEDED",
                  "PENDING"
                ],
                "type": "string",
                "description": "Current status of the delivery of the reward:\n\n* `SCHEDULED` - Reward is scheduled for delivery and will be delivered soon.\n* `FAILED` - Delivery of reward failed (e.g. email bounced).\n* `SUCCEEDED` - Reward was successfully delivered (email or text message delivered or reward link opened).\n* `PENDING` - Delivery is pending but not yet scheduled.\n"
              }
            },
            "description": "Details on how the reward is delivered to the recipient.\n"
          },
          "order_id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}",
            "description": "Tremendous ID of the order this reward is part of."
          },
          "recipient": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "example": "John Doe Jr.",
                "description": "Name of the recipient"
              },
              "email": {
                "type": "string",
                "example": "john.doe@example.com",
                "description": "Email address of the recipient"
              },
              "phone": {
                "type": "string",
                "example": "123-456-7890",
                "description": "Phone number of the recipient. For non-US phone numbers, specify the country code (prefixed with +)."
              }
            },
            "description": "Details of the recipient of the reward"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Date the reward was created"
          },
          "deliver_at": {
            "type": "string",
            "format": "date",
            "example": "2023-12-31",
            "pattern": "YYYY-MM-DD",
            "description": "Timestamp of reward delivery within the next year. Note that if date-time is provided, the time values will be ignored."
          },
          "custom_fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "example": "SOMEIDSOMEID",
                  "pattern": "[A-Z0-9]{4,20}",
                  "description": "Tremendous ID of the custom field"
                },
                "label": {
                  "type": "string",
                  "example": "harry_potter_house",
                  "description": "Label of the custom field"
                },
                "value": {
                  "type": "string",
                  "example": "Hufflepuff",
                  "nullable": true,
                  "description": "Value of the custom field"
                }
              },
              "description": "Reward custom data for searching, tracking or copy (see [Adding custom fields to orders](https://developers.tremendous.com/reference/using-custom-fields-to-add-custom-data-to-rewards).)"
            }
          }
        },
        "description": "A single reward, sent to a recipient. A reward is always part of an order.\n\nEither `products` or `campaign_id` must be specified.\n"
      }
    },
    "total_count": {
      "type": "integer",
      "example": 1,
      "description": "The total number of rewards across all pages"
    }
  }
}
object RewardsResendRewardById401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsResendRewardById404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsResendRewardById422Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Order failed: validation failure",
      "payload": {
        "some_field": {
          "some_sub_field": "Something went wrong with this parameter"
        }
      }
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsResendRewardById429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsResendRewardById500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object RewardsResendRewardByIdResponse
{
  "type": "object",
  "example": {},
  "properties": {}
}
string TremendousId
{
  "type": "string",
  "example": "SOMEIDSOMEID",
  "pattern": "[A-Z0-9]{4,20}",
  "readOnly": true
}
object Webhook
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "SOMEIDSOMEID",
      "pattern": "[A-Z0-9]{4,20}",
      "readOnly": true
    },
    "url": {
      "type": "string",
      "format": "uri",
      "example": "https://example.com/webhook",
      "nullable": true,
      "description": "URL the webhook will make requests to"
    },
    "private_key": {
      "type": "string",
      "example": "jXjdU8dozx571TG6YzL4",
      "readOnly": true,
      "description": "Private key for the webhook"
    }
  }
}
object WebhookPost
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "example": "https://example.com/webhook",
      "description": "URL the webhook will make requests to"
    }
  }
}
object WebhooksCreateWebhook400Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Order failed: validation failure",
      "payload": {
        "some_field": {
          "some_sub_field": "Something went wrong with this parameter"
        }
      }
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksCreateWebhook401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksCreateWebhook429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksCreateWebhook500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksCreateWebhookRequest
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "example": "https://example.com/webhook",
      "description": "URL the webhook will make requests to"
    }
  }
}
object WebhooksCreateWebhookResponse
{
  "type": "object",
  "properties": {
    "webhook": {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "example": "https://example.com/webhook",
          "nullable": true,
          "description": "URL the webhook will make requests to"
        },
        "private_key": {
          "type": "string",
          "example": "jXjdU8dozx571TG6YzL4",
          "description": "Private key for the webhook"
        }
      }
    }
  }
}
object WebhooksGetDetails200Response
{
  "type": "object",
  "properties": {
    "webhook": {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "id": {
          "type": "string",
          "example": "SOMEIDSOMEID",
          "pattern": "[A-Z0-9]{4,20}"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "example": "https://example.com/webhook",
          "nullable": true,
          "description": "URL the webhook will make requests to"
        },
        "private_key": {
          "type": "string",
          "example": "jXjdU8dozx571TG6YzL4",
          "description": "Private key for the webhook"
        }
      }
    }
  }
}
object WebhooksGetDetails401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksGetDetails404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksGetDetails429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksGetDetails500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksGetDetailsResponse
{
  "type": "object",
  "properties": {
    "webhooks": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "SOMEIDSOMEID",
            "pattern": "[A-Z0-9]{4,20}"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "example": "https://example.com/webhook",
            "nullable": true,
            "description": "URL the webhook will make requests to"
          },
          "private_key": {
            "type": "string",
            "example": "jXjdU8dozx571TG6YzL4",
            "description": "Private key for the webhook"
          }
        }
      }
    }
  }
}
object WebhooksListEvents401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksListEvents404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksListEvents429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksListEvents500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksListEventsResponse
{
  "type": "object",
  "properties": {
    "events": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "CAMPAIGNS.CREATED"
      }
    }
  }
}
object WebhooksTriggerEvent401Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksTriggerEvent404Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksTriggerEvent422Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Order failed: validation failure",
      "payload": {
        "some_field": {
          "some_sub_field": "Something went wrong with this parameter"
        }
      }
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksTriggerEvent429Response
{
  "type": "object",
  "example": {
    "errors": {
      "message": "Too many requests",
      "payload": {}
    }
  },
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksTriggerEvent500Response
{
  "type": "object",
  "required": [
    "errors"
  ],
  "properties": {
    "errors": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Error message"
        },
        "payload": {
          "type": "object",
          "example": {
            "rewards": {
              "catalog": "At least one valid product required"
            }
          },
          "description": "Mirrors the request parameters structure, filled only with the (nested) properties that caused an error."
        }
      }
    }
  }
}
object WebhooksTriggerEventRequest
{
  "type": "object",
  "required": [
    "event"
  ],
  "properties": {
    "event": {
      "type": "string",
      "example": "INVOICES.PAID",
      "description": "The event to test. See the [List events endpoint reference](https://developers.tremendous.com/) for all available events."
    }
  }
}
string WebhooksTriggerEventResponse
{
  "type": "string",
  "description": "Empty body"
}