{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "definitions.json",
"$defs": {
"Ack": {
"$id": "Ack",
"description": "Describes the acknowledgement sent in response to an API call. If the implementation uses HTTP/S, then Ack must be returned in the same session. Every API call to a BPP must be responded to with an Ack whether the BPP intends to respond with a callback or not. This has one property called `status` that indicates the status of the Acknowledgement.",
"type": "object",
"additionalProperties": false,
"properties": {
"status": {
"type": "string",
"description": "The status of the acknowledgement. If the request passes the validation criteria of the BPP, then this is set to ACK. If a BPP responds with status = `ACK` to a request, it is required to respond with a callback. If the request fails the validation criteria, then this is set to NACK. Additionally, if a BPP does not intend to respond with a callback even after the request meets the validation criteria, it should set this value to `NACK`.",
"enum": [
"ACK",
"NACK"
]
},
"tags": {
"description": "A list of tags containing any additional information sent along with the Acknowledgement.",
"type": "array",
"items": {
"$ref": "definitions.json#/$defs/TagGroup"
}
}
}
},
"AddOn": {
"$id": "AddOn",
"description": "Describes an additional item offered as a value-addition to a product or service. This does not exist independently in a catalog and is always associated with an item.",
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"description": "Provider-defined ID of the add-on",
"type": "string"
},
"descriptor": {
"$ref": "definitions.json#/$defs/Descriptor"
},
"price": {
"$ref": "definitions.json#/$defs/Price"
},
"quantity": {
"$ref": "definitions.json#/$defs/ItemQuantity"
}
}
},
"Address": {
"$id": "Address",
"description": "Describes a postal address.",
"type": "string"
},
"Agent": {
"$id": "Agent",
"description": "Describes the direct performer, driver or executor that fulfills an order. It is usually a person. But in some rare cases, it could be a non-living entity like a drone, or a bot. Some examples of agents are Doctor in the healthcare sector, a driver in the mobility sector, or a delivery person in the logistics sector. This object can be set at any stage of the order lifecycle. This can be set at the discovery stage when the BPP wants to provide details on the agent fulfilling the order, like in healthcare, where the doctor's name appears during search. This object can also used to search for a particular person that the customer wants fulfilling an order. Sometimes, this object gets instantiated after the order is confirmed, like in the case of on-demand taxis, where the driver is assigned after the user confirms the ride.",
"type": "object",
"additionalProperties": false,
"properties": {
"person": {
"$ref": "definitions.json#/$defs/Person"
},
"contact": {
"$ref": "definitions.json#/$defs/Contact"
},
"organization": {
"$ref": "definitions.json#/$defs/Organization"
},
"rating": {
"$ref": "definitions.json#/$defs/Rating/properties/value"
}
}
},
"Authorization": {
"$id": "Authorization",
"description": "Describes an authorization mechanism used to start or end the fulfillment of an order. For example, in the mobility sector, the driver may require a one-time password to initiate the ride. In the healthcare sector, a patient may need to provide a password to open a video conference link during a teleconsultation.",
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"description": "Type of authorization mechanism used. The allowed values for this field can be published as part of the network policy.",
"type": "string"
},
"token": {
"description": "Token used for authorization. This is typically generated at the BPP. The BAP can send this value to the user via any channel that it uses to authenticate the user like SMS, Email, Push notification, or in-app rendering.",
"type": "string"
},
"valid_from": {
"description": "Timestamp in RFC3339 format from which token is valid",
"type": "string",
"format": "date-time"
},
"valid_to": {
"description": "Timestamp in RFC3339 format until which token is valid",
"type": "string",
"format": "date-time"
},
"status": {
"description": "Status of the token",
"type": "string"
}
}
},
"Billing": {
"$id": "Billing",
"description": "Describes the billing details of an entity.
This has properties like name,organization,address,email,phone,time,tax_number, created_at,updated_at",
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"description": "Name of the billable entity",
"type": "string"
},
"organization": {
"description": "Details of the organization being billed.",
"allOf": [
{
"$ref": "definitions.json#/$defs/Organization"
}
]
},
"address": {
"description": "The address of the billable entity",
"allOf": [
{
"$ref": "definitions.json#/$defs/Address"
}
]
},
"state": {
"description": "The state where the billable entity resides. This is important for state-level tax calculation",
"allOf": [
{
"$ref": "definitions.json#/$defs/State"
}
]
},
"city": {
"description": "The city where the billable entity resides.",
"allOf": [
{
"$ref": "definitions.json#/$defs/City"
}
]
},
"email": {
"description": "Email address where the bill is sent to",
"type": "string",
"format": "email"
},
"phone": {
"description": "Phone number of the billable entity",
"type": "string"
},
"time": {
"description": "Details regarding the billing period",
"allOf": [
{
"$ref": "definitions.json#/$defs/Time"
}
]
},
"tax_id": {
"description": "ID of the billable entity as recognized by the taxation authority",
"type": "string"
}
}
},
"Cancellation": {
"$id": "Cancellation",
"description": "Describes a cancellation event",
"type": "object",
"additionalProperties": false,
"properties": {
"time": {
"description": "Date-time when the order was cancelled by the buyer",
"type": "string",
"format": "date-time"
},
"cancelled_by": {
"type": "string",
"enum": [
"CONSUMER",
"PROVIDER"
]
},
"reason": {
"description": "The reason for cancellation",
"allOf": [
{
"$ref": "definitions.json#/$defs/Option"
}
]
},
"additional_description": {
"description": "Any additional information regarding the nature of cancellation",
"allOf": [
{
"$ref": "definitions.json#/$defs/Descriptor"
}
]
}
}
},
"CancellationTerm": {
"$id": "CancellationTerm",
"description": "Describes the cancellation terms of an item or an order. This can be referenced at an item or order level. Item-level cancellation terms can override the terms at the order level.",
"type": "object",
"additionalProperties": false,
"properties": {
"fulfillment_state": {
"description": "The state of fulfillment during which this term is applicable.",
"allOf": [
{
"$ref": "definitions.json#/$defs/FulfillmentState"
}
]
},
"reason_required": {
"description": "Indicates whether a reason is required to cancel the order",
"type": "boolean"
},
"cancel_by": {
"description": "Information related to the time of cancellation.",
"allOf": [
{
"$ref": "definitions.json#/$defs/Time"
}
]
},
"cancellation_fee": {
"$ref": "definitions.json#/$defs/Fee"
},
"xinput": {
"$ref": "definitions.json#/$defs/XInput"
},
"external_ref": {
"$ref": "definitions.json#/$defs/MediaFile"
}
}
},
"Catalog": {
"$id": "Catalog",
"description": "Describes the products or services offered by a BPP. This is typically sent as the response to a search intent from a BAP. The payment terms, offers and terms of fulfillment supported by the BPP can also be included here. The BPP can show hierarchical nature of products/services in its catalog using the parent_category_id in categories. The BPP can also send a ttl (time to live) in the context which is the duration for which a BAP can cache the catalog and use the cached catalog.
This has properties like bbp/descriptor,bbp/categories,bbp/fulfillments,bbp/payments,bbp/offers,bbp/providers and exp
This is used in the following situations.