Banyan Systems · Schema
OfferEntityJSON
CompanyReceipt DataTransaction EnrichmentItem-Level DataCard-Linked OffersFintechPaymentsData CollaborationWebhookData Enrichment
Properties
| Name | Type | Description |
|---|---|---|
| activation_window_minutes | integer | Activation_Window_Minutes is the number of minutes the offer is active after the customer had activated it. |
| allow_activation_after_purchase | boolean | When enabled, will allow an offer activation to occur after a purchase has already been made. |
| always_on | boolean | Enables the offer to be "Always On", whereby no activations are required and redemptions will be generated for all qualifying consumers from the publisher (transaction provider). Note: Allow Activatio |
| amount_back_limit | string | The limit of amount back rewards that can be awarded on a single offer redemption. Setting to 0 will enable no limit. |
| amount_back_per_dollar | string | The amount of rewards awarded per qualified dollar spent on the offer. |
| amount_back_per_unit | string | The amount of rewards awarded per qualified unit spent purchased. |
| amount_back_type | string | The type of the amount back award (e.g. DOLLARS, POINTS, etc.) |
| budget | integer | The total amount that can be spent on this offer during the offer's lifetime. |
| byn_advertiser_id | integer | The Banyan ID for the advertiser (receipt provider) participating in the offer. |
| byn_campaign_id | string | The Banyan ID for the campaign this offer belongs to. |
| byn_offer_id | string | The Banyan ID generated for this offer. |
| byn_publisher_id | integer | The Banyan ID for the publisher (transaction provider) owning the offer |
| card_issuer | string | |
| card_types | array | |
| created_ts | string | The timestamp the offer was created. |
| currency | string | The currency code for amount back rewards (if in DOLLARS) |
| expiration_ts | string | The timestamp at which the offer will no longer be eligible for fulfillment. |
| name | string | The name of the offer given by the publisher. |
| offer_criteria | object | |
| offer_hotel_criteria | object | |
| prorate_qualified_spend | boolean | Allows the choice of overriding the default behavior to prorate qualified item spend. Default: true. |
| publisher_offer_id | string | The offer ID given by the publisher. |
| return_receipt_detail | boolean | Will enable the Offer Redemptions generated for this offer to include receipt details. |
| start_ts | string | The timestamp at which the offer will be eligible for fulfillment. |
| updated_ts | string | The timestamp the offer was last updated. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/banyan-systems/main/json-schema/banyan-systems-offer-entity-json-schema.json",
"title": "OfferEntityJSON",
"x-generated": "2026-10-14",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/banyan-systems-rest-api-openapi.yml#/components/schemas/OfferEntityJSON",
"properties": {
"activation_window_minutes": {
"description": "Activation_Window_Minutes is the number of minutes the offer is active after the customer had activated it.",
"type": "integer"
},
"allow_activation_after_purchase": {
"description": "When enabled, will allow an offer activation to occur after a purchase has already been made.",
"type": "boolean"
},
"always_on": {
"description": "Enables the offer to be \"Always On\", whereby no activations are required and redemptions will be generated for all qualifying consumers from the publisher (transaction provider). Note: Allow Activation After Purchase must also be enabled when Always On is enabled.",
"type": "boolean"
},
"amount_back_limit": {
"description": "The limit of amount back rewards that can be awarded on a single offer redemption. Setting to 0 will enable no limit.",
"format": "decimal",
"minLength": 1,
"pattern": "^-?\\d+(\\.\\d+)?$",
"type": "string"
},
"amount_back_per_dollar": {
"description": "The amount of rewards awarded per qualified dollar spent on the offer.",
"format": "decimal",
"minLength": 1,
"pattern": "^-?\\d+(\\.\\d+)?$",
"type": "string"
},
"amount_back_per_unit": {
"description": "The amount of rewards awarded per qualified unit spent purchased.",
"format": "decimal",
"minLength": 1,
"pattern": "^-?\\d+(\\.\\d+)?$",
"type": "string"
},
"amount_back_type": {
"description": "The type of the amount back award (e.g. DOLLARS, POINTS, etc.)",
"type": "string"
},
"budget": {
"description": "The total amount that can be spent on this offer during the offer's lifetime.",
"type": "integer"
},
"byn_advertiser_id": {
"description": "The Banyan ID for the advertiser (receipt provider) participating in the offer.",
"type": "integer"
},
"byn_campaign_id": {
"description": "The Banyan ID for the campaign this offer belongs to.",
"format": "uuid",
"type": "string"
},
"byn_offer_id": {
"description": "The Banyan ID generated for this offer.",
"format": "uuid",
"type": "string"
},
"byn_publisher_id": {
"description": "The Banyan ID for the publisher (transaction provider) owning the offer",
"type": "integer"
},
"card_issuer": {
"type": "string"
},
"card_types": {
"items": {
"type": "string"
},
"type": "array"
},
"created_ts": {
"description": "The timestamp the offer was created.",
"format": "date-time",
"type": "string"
},
"currency": {
"description": "The currency code for amount back rewards (if in DOLLARS)",
"type": "string"
},
"expiration_ts": {
"description": "The timestamp at which the offer will no longer be eligible for fulfillment.",
"format": "date-time",
"type": "string"
},
"name": {
"description": "The name of the offer given by the publisher.",
"type": "string"
},
"offer_criteria": {
"$ref": "#/$defs/OfferCriteriaEntityJSON"
},
"offer_hotel_criteria": {
"$ref": "#/$defs/OfferHotelCriteriaEntityJSON"
},
"prorate_qualified_spend": {
"description": "Allows the choice of overriding the default behavior to prorate qualified item spend. Default: true.",
"type": "boolean"
},
"publisher_offer_id": {
"description": "The offer ID given by the publisher.",
"type": "string"
},
"return_receipt_detail": {
"description": "Will enable the Offer Redemptions generated for this offer to include receipt details.",
"type": "boolean"
},
"start_ts": {
"description": "The timestamp at which the offer will be eligible for fulfillment.",
"format": "date-time",
"type": "string"
},
"updated_ts": {
"description": "The timestamp the offer was last updated.",
"format": "date-time",
"type": "string"
}
},
"required": [
"byn_offer_id",
"byn_campaign_id",
"return_receipt_detail",
"always_on",
"byn_advertiser_id",
"byn_publisher_id",
"created_ts",
"updated_ts"
],
"type": "object",
"$defs": {
"OfferCriteriaEntityJSON": {
"properties": {
"amount_threshold": {
"description": "The minimum amount of cumulative spend due to qualified items that is required for the offer to be fulfilled. Setting to 0 will mean any qualifying spend will fulfill the offer.",
"format": "decimal",
"minLength": 1,
"pattern": "^-?\\d+(\\.\\d+)?$",
"type": "string"
},
"excl_sku": {
"description": "(DEPRECATED, please use item_disqualification_expression instead. SKUs set on this field will automatically be combined with excl_tags into an expression string on item_disqualification_expression) The SKU's that will disqualify an item from the offer. Has priority over included SKU's and included tags. Leaving this empty will mean no SKU's are disqualified by default.",
"items": {
"type": "string"
},
"type": "array"
},
"excl_tags": {
"description": "(DEPRECATED, please use item_disqualification_expression instead. Tags set on this field will automatically be combined with excl_sku into an expression string on item_disqualification_expression) The tags that will disqualify an item from the offer. Has priority over included tags, but is trumped by included SKU's. Leaving this empty will mean no tags are disqualified by default.",
"items": {
"description": "A key-value pair that represents some form of tagged information.",
"minLength": 5,
"pattern": "^.+:\\|:.+$",
"type": "string"
},
"type": "array"
},
"fulfillment_count_limit": {
"description": "The maximum number of times an offer can be marked as fulfilled for a single activation.",
"type": "integer"
},
"incl_sku": {
"description": "(DEPRECATED, please use item_qualification_expression instead. SKUs set on this field will automatically be combined with incl_tags into an expression string on item_qualification_expression) The SKU's that will qualify an item for the offer. Has priority over excluded tags. Leaving this empty will mean all SKU's qualify by default.",
"items": {
"type": "string"
},
"type": "array"
},
"incl_tags": {
"description": "(DEPRECATED, please use item_qualification_expression instead. Tags set on this field will automatically be combined with incl_sku into an expression string on item_qualification_expression) The tags that will qualify an item for the offer. Is trumped by excluded SKU's and excluded tags. Leaving this empty will mean all tags qualify by default.",
"items": {
"description": "A key-value pair that represents some form of tagged information.",
"minLength": 5,
"pattern": "^.+:\\|:.+$",
"type": "string"
},
"type": "array"
},
"item_disqualification_expression": {
"description": "The expression string to be applied to an item's tags and sku when determining disqualification. Has priority over item qualification expression. Leaving this empty will mean items aren't disqualified by default. Expression strings are boolean logical operations applied to the tags on an item (skus are included via tags with a prefix of `sku:|:`). The syntax is composed of the boolean operators `and` and `or` applied to tags wrapped in double quotes. Parentheses are also supported for grouping logical expressions.",
"type": "string"
},
"item_qualification_expression": {
"description": "The expression string to be applied to an item's tags and sku when determining qualification. Is trumped by the item disqualification expression. Leaving this empty will mean item qualifies by default. Expression strings are boolean logical operations applied to the tags on an item (skus are included via tags with a prefix of `sku:|:`). The syntax is composed of the boolean operators `and` and `or` applied to tags wrapped in double quotes. Parentheses are also supported for grouping logical expressions.",
"type": "string"
},
"order_types": {
"description": "The order types that qualify for the offer (e.g. in_store, web)",
"items": {
"$ref": "#/$defs/OrderType"
},
"type": "array"
},
"repeat_amount": {
"description": "(DEPRECATED, please use fulfillment_count_limit instead) The amount of times an offer can be fulfilled for a single activation following the first.",
"type": "integer"
}
},
"type": "object"
},
"OfferHotelCriteriaEntityJSON": {
"properties": {
"dining_excl_tags": {
"description": "The tags that will disqualify a dining charge from the offer. Has priority over included dining charge tags. Leaving this empty will mean none of a dining charge's tags are disqualified by default.",
"items": {
"description": "A key-value pair that represents some form of tagged information.",
"minLength": 5,
"pattern": "^.+:\\|:.+$",
"type": "string"
},
"type": "array"
},
"dining_incl_tags": {
"description": "The tags that will qualify a dining charge for the offer. Is trumped by excluded dining charge tags. Leaving this empty will mean all of a dining charge's tags qualify by default.",
"items": {
"description": "A key-value pair that represents some form of tagged information.",
"minLength": 5,
"pattern": "^.+:\\|:.+$",
"type": "string"
},
"type": "array"
},
"dining_spend_threshold": {
"description": "The minimum amount of cumulative spend due to qualified dining charges that is required for the offer to be fulfilled. Setting to 0 will mean any qualifying spend will fulfill the offer.",
"format": "decimal",
"minLength": 1,
"pattern": "^-?\\d+(\\.\\d+)?$",
"type": "string"
},
"fulfillment_count_limit": {
"description": "The maximum number of times an offer can be marked as fulfilled for a single activation.",
"type": "integer"
},
"room_disqualification_expression": {
"description": "The expression string to be applied to a room charge's tags when determining disqualification. Has priority over qualification expression. Leaving this empty will mean no tags are disqualified by default. Expression strings are boolean logical operations applied to the tags on a room charge. The syntax is composed of the boolean operators `and` and `or` applied to tags wrapped in double quotes. Parentheses are also supported for grouping logical expressions.",
"type": "string"
},
"room_excl_tags": {
"description": "(DEPRECATED, please use room_disqualification_expression instead. Tags set on this field will automatically be converted into an expression string on room_disqualification_expression) The tags that will disqualify a room charge from the offer. Has priority over included room charge tags. Leaving this empty will mean none of a room charge's tags are disqualified by default.",
"items": {
"description": "A key-value pair that represents some form of tagged information.",
"minLength": 5,
"pattern": "^.+:\\|:.+$",
"type": "string"
},
"type": "array"
},
"room_incl_tags": {
"description": "(DEPRECATED, please use room_qualification_expression instead. Tags set on this field will automatically be converted into an expression string on room_qualification_expression) The tags that will qualify a room charge for the offer. Is trumped by excluded room charge tags. Leaving this empty will mean all of a room charge's tags qualify by default.",
"items": {
"description": "A key-value pair that represents some form of tagged information.",
"minLength": 5,
"pattern": "^.+:\\|:.+$",
"type": "string"
},
"type": "array"
},
"room_qualification_expression": {
"description": "The expression string to be applied to a room charge's tags when determining qualification. Is trumped by disqualification expression. Leaving this empty will mean all tags qualify by default. Expression strings are boolean logical operations applied to the tags on a room charge. The syntax is composed of the boolean operators `and` and `or` applied to tags wrapped in double quotes. Parentheses are also supported for grouping logical expressions.",
"type": "string"
},
"room_spend_threshold": {
"description": "The minimum amount of cumulative spend due to qualified room charges that is required for the offer to be fulfilled. Setting to 0 will mean any qualifying spend will fulfill the offer.",
"format": "decimal",
"minLength": 1,
"pattern": "^-?\\d+(\\.\\d+)?$",
"type": "string"
}
},
"type": "object"
},
"OrderType": {
"enum": [
"in_store",
"web"
],
"type": "string"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/banyan-systems-offer-entity-json"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.