Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi": "3.0.3",
"info": {
"title": "Program",
"description": "Management of public programs, payment products and policies that determines the system behavior and execution.",
"version": "2.0.0",
"contact": {
"email": "partnership-growth@getbread.com"
}
},
"servers": [
{
"url": "https://api-preview.platform.breadpayments.com/",
"description": "Preview environment"
},
{
"url": "https://api.platform.breadpayments.com/",
"description": "Production environment"
}
],
"paths": {
"/api/program/public/payment-product-configuration": {
"parameters": [
{
"name": "merchantID.eq",
"in": "query",
"description": "Merchant ID",
"required": true,
"schema": {
"type": "string",
"format": "uuid",
"description": "A universally unique identifier (Version 4) as defined in RFC4122. This does not allow nulls.",
"example": "dc0dc633-1760-4d43-ba1d-da94ed701f06",
"externalDocs": {
"description": "RFC4122",
"url": "https://datatracker.ietf.org/doc/html/rfc4122.html"
}
},
"example": "a89d277c-3481-464c-898a-d7709a28c86a"
},
{
"name": "programID.eq",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "uuid",
"description": "A universally unique identifier (Version 4) as defined in RFC4122. This does not allow nulls.",
"example": "dc0dc633-1760-4d43-ba1d-da94ed701f06",
"externalDocs": {
"description": "RFC4122",
"url": "https://datatracker.ietf.org/doc/html/rfc4122.html"
}
},
"example": "a89d277c-3481-464c-898a-d7709a28c86a"
},
{
"description": "API version",
"in": "header",
"name": "X-API-VERSION",
"required": true,
"schema": {
"type": "string"
},
"example": "v2"
},
{
"in": "query",
"name": "offset",
"description": "The number of records to skip before starting to collect the result set. Used in conjunction with limit query parameter for pagination support",
"required": false,
"schema": {
"type": "integer",
"minimum": 0,
"default": 0
},
"example": 20
},
{
"in": "query",
"name": "limit",
"description": "The maximum number of records that will be returned in a result set.",
"required": false,
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 200,
"default": 10
},
"example": 50
}
],
"get": {
"operationId": "getPaymentProductEnrollmentByMerchantID",
"summary": "Get payment product enrollments by merchant ID",
"description": "Get payment product enrollments by merchant ID. This is a public endpoint that does not require authentication, but the results are filtered by programID if provided.",
"tags": [
"PaymentProductEnrollments"
],
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"description": "Public response model for a list of payment product enrollments, with potentially sensitive fields removed",
"type": "object",
"properties": {
"items": {
"type": "array",
"maxItems": 200,
"items": {
"description": "Public response model for a payment product enrollment, with potentially sensitive fields removed",
"type": "object",
"properties": {
"enrollmentID": {
"description": "Unique identifier for a payment product enrollment",
"allOf": [
{
"type": "string",
"format": "uuid",
"description": "A universally unique identifier (Version 4) as defined in RFC4122. This does not allow nulls.",
"example": "dc0dc633-1760-4d43-ba1d-da94ed701f06",
"externalDocs": {
"description": "RFC4122",
"url": "https://datatracker.ietf.org/doc/html/rfc4122.html"
}
}
]
},
"paymentProductID": {
"description": "Unique identifier for the payment product",
"allOf": [
{
"type": "string",
"format": "uuid",
"description": "A universally unique identifier (Version 4) as defined in RFC4122. This does not allow nulls.",
"example": "dc0dc633-1760-4d43-ba1d-da94ed701f06",
"externalDocs": {
"description": "RFC4122",
"url": "https://datatracker.ietf.org/doc/html/rfc4122.html"
}
}
]
},
"merchantID": {
"description": "Unique identifier for a merchant (from the enrollment)",
"allOf": [
{
"type": "string",
"format": "uuid",
"description": "A universally unique identifier (Version 4) as defined in RFC4122. This does not allow nulls.",
"example": "dc0dc633-1760-4d43-ba1d-da94ed701f06",
"externalDocs": {
"description": "RFC4122",
"url": "https://datatracker.ietf.org/doc/html/rfc4122.html"
}
}
]
},
"programID": {
"description": "Unique identifier for a program",
"allOf": [
{
"type": "string",
"format": "uuid",
"description": "A universally unique identifier (Version 4) as defined in RFC4122. This does not allow nulls.",
"example": "dc0dc633-1760-4d43-ba1d-da94ed701f06",
"externalDocs": {
"description": "RFC4122",
"url": "https://datatracker.ietf.org/doc/html/rfc4122.html"
}
}
]
},
"paymentProductName": {
"description": "Human-friendly name of the payment product",
"type": "string"
},
"paymentProductType": {
"description": "Type of the payment product",
"type": "string"
},
"paymentFrequency": {
"description": "Payment frequency for the product",
"type": "string"
},
"numPayments": {
"description": "Number of scheduled payments for the product",
"type": "integer",
"format": "int32"
},
"startAt": {
"description": "Time when the payment product enrollment becomes active",
"nullable": false,
"allOf": [
{
"type": "string",
"format": "date-time",
"description": "The timestamp value formatted per RFC3339. This does not allow nulls.",
"example": "2020-12-31T15:10:55Z",
"externalDocs": {
"description": "RFC3339",
"url": "https://datatracker.ietf.org/doc/html/rfc3339#section-5.6"
}
}
]
},
"endAt": {
"description": "Time when the payment product enrollment becomes lapsed",
"nullable": true,
"allOf": [
{
"type": "string",
"format": "date-time",
"description": "The timestamp value formatted per RFC3339. This does not allow nulls.",
"example": "2020-12-31T15:10:55Z",
"externalDocs": {
"description": "RFC3339",
"url": "https://datatracker.ietf.org/doc/html/rfc3339#section-5.6"
}
}
]
},
"defaultCartAmount": {
"description": "Default cart amount for participation",
"allOf": [
{
"required": [
"currency",
"value"
],
"properties": {
"currency": {
"type": "string",
"description": "The three letter currency code as defined in ISO 4217.",
"example": "USD",
"minLength": 3,
"maxLength": 3,
"externalDocs": {
"description": "ISO 4217",
"url": "https://en.wikipedia.org/wiki/ISO_4217"
}
},
"value": {
"type": "integer",
"description": "Monetary value as an integral number of the currency fractional unit e.g for USD: cents",
"format": "int64",
"example": 100
}
},
"description": "Represents a monetary amount in the specified currency",
"example": {
"currency": "USD",
"value": 50000
}
}
]
},
"minCartSize": {
"description": "Minimum cart size for this enrollment",
"allOf": [
{
"required": [
"currency",
"value"
],
"properties": {
"currency": {
"type": "string",
"description": "The three letter currency code as defined in ISO 4217.",
"example": "USD",
"minLength": 3,
"maxLength": 3,
"externalDocs": {
"description": "ISO 4217",
"url": "https://en.wikipedia.org/wiki/ISO_4217"
}
},
"value": {
"type": "integer",
"description": "Monetary value as an integral number of the currency fractional unit e.g for USD: cents",
"format": "int64",
"example": 100
}
},
"description": "Represents a monetary amount in the specified currency",
"example": {
"currency": "USD",
"value": 50000
}
}
]
},
"maxCartSize": {
"description": "Maximum cart size for this enrollment",
"allOf": [
{
"required": [
"currency",
"value"
],
"properties": {
"currency": {
"type": "string",
"description": "The three letter currency code as defined in ISO 4217.",
"example": "USD",
"minLength": 3,
"maxLength": 3,
"externalDocs": {
"description": "ISO 4217",
"url": "https://en.wikipedia.org/wiki/ISO_4217"
}
},
"value": {
"type": "integer",
"description": "Monetary value as an integral number of the currency fractional unit e.g for USD: cents",
"format": "int64",
"example": 100
}
},
"description": "Represents a monetary amount in the specified currency",
"example": {
"currency": "USD",
"value": 50000
}
}
]
},
"minInterestRateBPS": {
"description": "Minimum interest rate in basis points (from enrollment)",
"type": "integer",
"format": "int32"
},
"maxInterestRateBPS": {
"description": "Maximum interest rate in basis points (from enrollment)",
"type": "integer",
"format": "int32"
},
"enrollmentState": {
"description": "active or scheduled",
"type": "string",
"enum": [
"ACTIVE",
"SCHEDULED"
]
},
"enrollmentCreatedAt": {
"description": "Created at time",
"nullable": false,
"allOf": [
{
"type": "string",
"format": "date-time",
"description": "The timestamp value formatted per RFC3339. This does not allow nulls.",
"example": "2020-12-31T15:10:55Z",
"externalDocs": {
"description": "RFC3339",
"url": "https://datatracker.ietf.org/doc/html/rfc3339#section-5.6"
}
}
]
}
}
}
},
"pagination": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 10
},
"offset": {
"type": "integer",
"minimum": 0
},
"total": {
"type": "integer",
"maximum": 200,
"minimum": 0
}
}
}
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Default error model for program service errors",
"allOf": [
{
"required": [
"code",
"domain",
"message"
],
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "The underlying http status code",
"format": "int32",
"example": 500
},
"message": {
"type": "string",
"description": "A simple message in english describing the error and can be returned to the consumer",
"example": "Age cannot be less than 18"
},
"domain": {
"type": "string",
"description": "The domain where the error is originating from as defined by the service",
"example": "Payments"
},
"metadata": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Any additional details to be conveyed as determined by the service. If present, will return map of key value pairs",
"example": {
"propertyName": "propertyName is required"
}
}
}
}
],
"properties": {
"reason": {
"type": "string",
"description": "Program creation error reason codes",
"enum": [
"Unauthorized",
"Request_Validation",
"Internal_Server_Failure",
"Dependency_Unavailable"
]
}
}
},
"example": {
"code": 400,
"message": "Invalid request",
"domain": "Program",
"metadata": {},
"reason": "Request_Validation"
}
}
}
},
"401": {
"description": "Unauthorized. Indicates that provided credentials is not valid",
"content": {
"text/plain": {
"schema": {
"type": "string",
"example": "Jwt is expired"
}
},
"application/json": {
"schema": {
"allOf": [
{
"required": [
"code",
"domain",
"message"
],
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "The underlying http status code",
"format": "int32",
"example": 500
},
"message": {
"type": "string",
"description": "A simple message in english describing the error and can be returned to the consumer",
"example": "Age cannot be less than 18"
},
"domain": {
"type": "string",
"description": "The domain where the error is originating from as defined by the service",
"example": "Payments"
},
"metadata": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Any additional details to be conveyed as determined by the service. If present, will return map of key value pairs",
"example": {
"propertyName": "propertyName is required"
}
}
}
}
],
"required": [
"code",
"domain",
"message",
"reason"
],
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "A reason code specific to the service and can be used to identify the exact issue. Should be unique within a domain",
"example": "Reason_Code"
}
}
},
"example": {
"code": 401,
"domain": "Auth",
"message": "Invalid authentication",
"reason": "Invalid_Authentication"
}
}
}
},
"403": {
"description": "Forbidden. Indicates that request cannot be authorized",
"content": {
"text/plain": {
"schema": {
"type": "string",
"example": "RBAC: Access Denied"
}
},
"application/json": {
"schema": {
"allOf": [
{
"required": [
"code",
"domain",
"message"
],
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "The underlying http status code",
"format": "int32",
"example": 500
},
"message": {
"type": "string",
"description": "A simple message in english describing the error and can be returned to the consumer",
"example": "Age cannot be less than 18"
},
"domain": {
"type": "string",
"description": "The domain where the error is originating from as defined by the service",
"example": "Payments"
},
"metadata": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Any additional details to be conveyed as determined by the service. If present, will return map of key value pairs",
"example": {
"propertyName": "propertyName is required"
}
}
}
}
],
"required": [
"code",
"domain",
"message",
"reason"
],
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "A reason code specific to the service and can be used to identify the exact issue. Should be unique within a domain",
"example": "Reason_Code"
}
}
},
"example": {
"code": 403,
"domain": "Auth",
"message": "RBAC: Access Denied",
"reason": "Access_Denied"
}
}
}
},
"409": {
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Default error model for program service errors",
"allOf": [
{
"required": [
"code",
"domain",
"message"
],
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "The underlying http status code",
"format": "int32",
"example": 500
},
"message": {
"type": "string",
"description": "A simple message in english describing the error and can be returned to the consumer",
"example": "Age cannot be less than 18"
},
"domain": {
"type": "string",
"description": "The domain where the error is originating from as defined by the service",
"example": "Payments"
},
"metadata": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Any additional details to be conveyed as determined by the service. If present, will return map of key value pairs",
"example": {
"propertyName": "propertyName is required"
}
}
}
}
],
"properties": {
"reason": {
"type": "string",
"description": "Program creation error reason codes",
"enum": [
"Unauthorized",
"Request_Validation",
"Internal_Server_Failure",
"Dependency_Unavailable"
]
}
}
},
"example": {
"code": 409,
"message": "Conflict",
"domain": "Program",
"metadata": {},
"reason": "Conflict"
}
}
}
},
"410": {
"description": "Resource gone",
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Default error model for program service errors",
"allOf": [
{
"required": [
"code",
"domain",
"message"
],
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "The underlying http status code",
"format": "int32",
"example": 500
},
"message": {
"type": "string",
"description": "A simple message in english describing the error and can be returned to the consumer",
"example": "Age cannot be less than 18"
},
"domain": {
"type": "string",
"description": "The domain where the error is originating from as defined by the service",
"example": "Payments"
},
"metadata": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Any additional details to be conveyed as determined by the service. If present, will return map of key value pairs",
"example": {
"propertyName": "propertyName is required"
}
}
}
}
],
"properties": {
"reason": {
"type": "string",
"description": "Program creation error reason codes",
"enum": [
"Unauthorized",
"Request_Validation",
"Internal_Server_Failure",
"Dependency_Unavailable"
]
}
}
},
"example": {
"code": 410,
"message": "Resource unavailable",
"domain": "Program",
"metadata": {},
"reason": "Resource_Gone"
}
}
}
}
}
}
}
},
"components": {
"securitySchemes": {
"bearerAuthProgram": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT",
"description": "The JW
# --- truncated at 32 KB (662 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bread-financial/refs/heads/main/openapi/bread-program-openapi.json