Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Test Client Wallet API
description: No description available
version: v1
servers:
- url: /serviceName/client-api/v1
description: The server
tags:
- name: Wallet
paths:
/wallet/paymentcards:
summary: Payment Cards
description: No description available
get:
tags:
- Wallet
summary: Returns available payment card details for user, optionally filtered by…
description: Returns available payment card details for user, optionally filtered by nameOnCard
operationId: getPaymentcards
parameters:
- name: nameOnCard
in: query
description: Filter by the cardholder's name (case-insensitive), can be the first one or more characters of one of the words/names
required: false
schema:
type: string
examples:
example:
summary: example
value: Smi
- name: dateTimeOnly
in: query
description: Creation date in datetime-only format
required: false
schema:
type: string
format: date-time
examples:
example:
summary: example
value: 2017-10-04 14:54:36
- name: dateTime
in: query
description: Creation date in Zoned RFC3339 Date-time format
required: false
schema:
type: string
format: date-time
examples:
example:
summary: example
value: 2017-10-04 14:54:36+00:00
- name: dateTime2616
in: query
description: Zoned RFC2616 Date-time param example
required: false
schema:
type: string
format: date-time
examples:
example:
summary: example
value: Wed, 4 Jul 2001 12:08:56 PDT
- name: date
in: query
description: Date-only param example
required: false
schema:
type: string
format: date
examples:
example:
summary: example
value: 2017-10-04
- name: time
in: query
description: time-only param example
required: false
schema:
type: string
format: date-time
examples:
example:
summary: example
value: 53676
- name: orderBy
in: query
description: 'Order by field: nameOnCard
'
required: false
schema:
type: string
examples:
example:
summary: example
- name: direction
in: query
description: Direction
required: false
schema:
type: string
enum:
- ASC
- DESC
default: DESC
examples:
example:
summary: example
responses:
'200':
description: No description available
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentCards'
examples:
example:
value: "[ {\n \"id\" : \"a5b0fe7d-c4dd-40a7-bd80-dfc7869327e1\",\n \"pan\" : \"5434111122223333\",\n \"cvc\" : \"123\",\n \"startDate\" : \"0116\",\n \"expiryDate\" : \"1219\",\n \"nameOnCard\" : \"Mr Timmy Tester\",\n \"creationDate\" : \"2011-05-30T12:13:14+03:00\",\n \"balance\" : {\n \"amount\" : \"2001\",\n \"currencyCode\" : \"EUR\"\n },\n \"apr\" : 12.75\n}, {\n \"id\" : \"d593c212-70ad-41a6-a547-d5d9232414cb\",\n \"pan\" : \"5434111122224444\",\n \"cvc\" : \"101\",\n \"startDate\" : \"0216\",\n \"expiryDate\" : \"0120\",\n \"nameOnCard\" : \"Mr Timmothy Tester\",\n \"creationDate\" : \"2011-05-30T12:13:14+03:00\",\n \"balance\" : {\n \"amount\" : \"4.4399999999999995\",\n \"currencyCode\" : \"GBP\"\n },\n \"apr\" : 12.75\n}, {\n \"id\" : \"9635966b-28e9-4479-8121-bb7bc9beeb62\",\n \"pan\" : \"5434121212121212\",\n \"cvc\" : \"121\",\n \"startDate\" : \"0115\",\n \"expiryDate\" : \"1218\",\n \"nameOnCard\" : \"Mr Timmy Tester\",\n \"creationDate\" : \"2011-05-30T12:13:14+03:00\",\n \"balance\" : {\n \"amount\" : \"1981\",\n \"currencyCode\" : \"EUR\"\n },\n \"apr\" : 12.75\n} ]"
'400':
description: BadRequest
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
examples:
example:
value: "{\n \"message\" : \"Bad Request\",\n \"errors\" : [ {\n \"message\" : \"Value Exceeded. Must be between {min} and {max}.\",\n \"key\" : \"common.api.shoesize\",\n \"context\" : {\n \"max\" : \"50\",\n \"min\" : \"1\"\n }\n } ]\n}"
'406':
description: NotAcceptable
content:
application/json:
schema:
$ref: '#/components/schemas/NotAcceptableError'
examples:
example:
value: "{\n \"message\" : \"Could not find acceptable representation\",\n \"supportedMediaTypes\" : [ \"application/json\" ]\n}"
'500':
description: InternalServerError
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
examples:
example:
value: "{\n \"message\" : \"Description of error\"\n}"
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
examples:
example:
value: "{\n \"message\" : \"Access to requested resource denied.\",\n \"errors\" : [ {\n \"message\" : \"Resource access denied due to an insufficient user quota of {quota}.\",\n \"key\" : \"common.api.quota\",\n \"context\" : {\n \"quota\" : \"someQuota\"\n }\n } ]\n}"
'415':
description: UnsupportedMediaType
content:
application/json:
schema:
$ref: '#/components/schemas/UnsupportedMediaTypeError'
examples:
example:
value: "{\n \"message\" : \"Unsupported media type.\",\n \"errors\" : [ {\n \"message\" : \"The request entity has a media type {mediaType} which the resource does not support.\",\n \"key\" : \"common.api.mediaType\",\n \"context\" : {\n \"mediaType\" : \"application/javascript\"\n }\n } ]\n}"
'404':
description: NotFound
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
examples:
example:
value: "{\n \"message\" : \"Resource not found.\",\n \"errors\" : [ {\n \"message\" : \"Unable to find the resource requested resource: {resource}.\",\n \"key\" : \"common.api.resource\",\n \"context\" : {\n \"resource\" : \"aResource\"\n }\n } ]\n}"
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedAltError'
examples:
example:
value: "{\n \"message\" : \"Access to requested resource denied.\",\n \"errors\" : [ {\n \"message\" : \"Resource access denied due to invalid credentials.\",\n \"key\" : \"common.api.token\",\n \"context\" : {\n \"accessToken\" : \"expired\"\n }\n } ]\n}"
x-BbAccessControl-resource: WALLET
x-BbAccessControl-function: MANAGE_PAYMENT_CARDS
x-BbAccessControl-privilege: READ_PAYMENT_CARD
post:
tags:
- Wallet
summary: Adds a payment card to the user's wallet
operationId: postPaymentcards
parameters:
- name: X-Request-Id
in: header
description: Correlates HTTP requests between a client and server.
required: false
schema:
type: string
examples:
example:
summary: example
value: f058ebd6-02f7-4d3f-942e-904344e8cde5
requestBody:
description: Adds a payment card to the user's wallet
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentCard'
examples:
example:
value: "{\n \"id\" : \"a5b0fe7d-c4dd-40a7-bd80-dfc7869327e1\",\n \"pan\" : \"5434111122223333\",\n \"cvc\" : \"123\",\n \"startDate\" : \"0116\",\n \"expiryDate\" : \"1219\",\n \"nameOnCard\" : \"Mr Timmy Tester\",\n \"creationDate\" : \"2011-05-30T12:13:14+03:00\",\n \"balance\" : {\n \"amount\" : \"1000\",\n \"currencyCode\" : \"EUR\"\n },\n \"apr\" : 12.75\n}"
responses:
'201':
description: request to create payment card accepted
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentCardsPostResponseBody'
examples:
example:
value: "{\n \"id\" : \"a5b0fe7d-c4dd-40a7-bd80-dfc7869327e1\"\n}"
'400':
description: BadRequest
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
examples:
example:
value: "{\n \"message\" : \"Bad Request\",\n \"errors\" : [ {\n \"message\" : \"Value Exceeded. Must be between {min} and {max}.\",\n \"key\" : \"common.api.shoesize\",\n \"context\" : {\n \"max\" : \"50\",\n \"min\" : \"1\"\n }\n } ]\n}"
'500':
description: InternalServerError
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
examples:
example:
value: "{\n \"message\" : \"Description of error\"\n}"
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
examples:
example:
value: "{\n \"message\" : \"Access to requested resource denied.\",\n \"errors\" : [ {\n \"message\" : \"Resource access denied due to an insufficient user quota of {quota}.\",\n \"key\" : \"common.api.quota\",\n \"context\" : {\n \"quota\" : \"someQuota\"\n }\n } ]\n}"
'415':
description: UnsupportedMediaType
content:
application/json:
schema:
$ref: '#/components/schemas/UnsupportedMediaTypeError'
examples:
example:
value: "{\n \"message\" : \"Unsupported media type.\",\n \"errors\" : [ {\n \"message\" : \"The request entity has a media type {mediaType} which the resource does not support.\",\n \"key\" : \"common.api.mediaType\",\n \"context\" : {\n \"mediaType\" : \"application/javascript\"\n }\n } ]\n}"
'404':
description: NotFound
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
examples:
example:
value: "{\n \"message\" : \"Resource not found.\",\n \"errors\" : [ {\n \"message\" : \"Unable to find the resource requested resource: {resource}.\",\n \"key\" : \"common.api.resource\",\n \"context\" : {\n \"resource\" : \"aResource\"\n }\n } ]\n}"
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedAltError'
examples:
example:
value: "{\n \"message\" : \"Access to requested resource denied.\",\n \"errors\" : [ {\n \"message\" : \"Resource access denied due to invalid credentials.\",\n \"key\" : \"common.api.token\",\n \"context\" : {\n \"accessToken\" : \"expired\"\n }\n } ]\n}"
x-BbAccessControl-resource: WALLET
x-BbAccessControl-function: MANAGE_PAYMENT_CARDS
x-BbAccessControl-privilege: WRITE_PAYMENT_CARD
/wallet/paymentcards/{cardId}:
summary: Payment Card
description: No description available
parameters:
- name: cardId
in: path
description: No description available
required: true
schema:
type: string
examples:
example:
summary: example
get:
tags:
- Wallet
summary: Returns details of a specific payment card
operationId: getCardIdByCardId
responses:
'200':
description: No description available
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentCard'
examples:
example:
value: "{\n \"id\" : \"a5b0fe7d-c4dd-40a7-bd80-dfc7869327e1\",\n \"pan\" : \"5434111122223333\",\n \"cvc\" : \"123\",\n \"startDate\" : \"0116\",\n \"expiryDate\" : \"1219\",\n \"nameOnCard\" : \"Mr Timmy Tester\",\n \"creationDate\" : \"2011-05-30T12:13:14+03:00\",\n \"balance\" : {\n \"amount\" : \"1000\",\n \"currencyCode\" : \"EUR\"\n },\n \"apr\" : 12.75\n}"
'400':
description: BadRequest
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
examples:
example:
value: "{\n \"message\" : \"Bad Request\",\n \"errors\" : [ {\n \"message\" : \"Value Exceeded. Must be between {min} and {max}.\",\n \"key\" : \"common.api.shoesize\",\n \"context\" : {\n \"max\" : \"50\",\n \"min\" : \"1\"\n }\n } ]\n}"
'500':
description: InternalServerError
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
examples:
example:
value: "{\n \"message\" : \"Description of error\"\n}"
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
examples:
example:
value: "{\n \"message\" : \"Access to requested resource denied.\",\n \"errors\" : [ {\n \"message\" : \"Resource access denied due to an insufficient user quota of {quota}.\",\n \"key\" : \"common.api.quota\",\n \"context\" : {\n \"quota\" : \"someQuota\"\n }\n } ]\n}"
'415':
description: UnsupportedMediaType
content:
application/json:
schema:
$ref: '#/components/schemas/UnsupportedMediaTypeError'
examples:
example:
value: "{\n \"message\" : \"Unsupported media type.\",\n \"errors\" : [ {\n \"message\" : \"The request entity has a media type {mediaType} which the resource does not support.\",\n \"key\" : \"common.api.mediaType\",\n \"context\" : {\n \"mediaType\" : \"application/javascript\"\n }\n } ]\n}"
'404':
description: NotFound
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
examples:
example:
value: "{\n \"message\" : \"Resource not found.\",\n \"errors\" : [ {\n \"message\" : \"Unable to find the resource requested resource: {resource}.\",\n \"key\" : \"common.api.resource\",\n \"context\" : {\n \"resource\" : \"aResource\"\n }\n } ]\n}"
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedAltError'
examples:
example:
value: "{\n \"message\" : \"Access to requested resource denied.\",\n \"errors\" : [ {\n \"message\" : \"Resource access denied due to invalid credentials.\",\n \"key\" : \"common.api.token\",\n \"context\" : {\n \"accessToken\" : \"expired\"\n }\n } ]\n}"
x-BbAccessControl-resource: WALLET
x-BbAccessControl-function: MANAGE_PAYMENT_CARDS
x-BbAccessControl-privilege: READ_PAYMENT_CARD
delete:
tags:
- Wallet
summary: Deletes a payment card with a given id
operationId: deleteCardIdByCardId
responses:
'204':
description: Payment card is succesfully deleted
'400':
description: BadRequest
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
examples:
example:
value: "{\n \"message\" : \"Bad Request\",\n \"errors\" : [ {\n \"message\" : \"Value Exceeded. Must be between {min} and {max}.\",\n \"key\" : \"common.api.shoesize\",\n \"context\" : {\n \"max\" : \"50\",\n \"min\" : \"1\"\n }\n } ]\n}"
'500':
description: InternalServerError
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
examples:
example:
value: "{\n \"message\" : \"Description of error\"\n}"
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
examples:
example:
value: "{\n \"message\" : \"Access to requested resource denied.\",\n \"errors\" : [ {\n \"message\" : \"Resource access denied due to an insufficient user quota of {quota}.\",\n \"key\" : \"common.api.quota\",\n \"context\" : {\n \"quota\" : \"someQuota\"\n }\n } ]\n}"
'415':
description: UnsupportedMediaType
content:
application/json:
schema:
$ref: '#/components/schemas/UnsupportedMediaTypeError'
examples:
example:
value: "{\n \"message\" : \"Unsupported media type.\",\n \"errors\" : [ {\n \"message\" : \"The request entity has a media type {mediaType} which the resource does not support.\",\n \"key\" : \"common.api.mediaType\",\n \"context\" : {\n \"mediaType\" : \"application/javascript\"\n }\n } ]\n}"
'404':
description: NotFound
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
examples:
example:
value: "{\n \"message\" : \"Resource not found.\",\n \"errors\" : [ {\n \"message\" : \"Unable to find the resource requested resource: {resource}.\",\n \"key\" : \"common.api.resource\",\n \"context\" : {\n \"resource\" : \"aResource\"\n }\n } ]\n}"
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedAltError'
examples:
example:
value: "{\n \"message\" : \"Access to requested resource denied.\",\n \"errors\" : [ {\n \"message\" : \"Resource access denied due to invalid credentials.\",\n \"key\" : \"common.api.token\",\n \"context\" : {\n \"accessToken\" : \"expired\"\n }\n } ]\n}"
x-BbAccessControl-resource: WALLET
x-BbAccessControl-function: MANAGE_PAYMENT_CARDS
x-BbAccessControl-privilege: DELETE_PAYMENT_CARD
components:
schemas:
PaymentCardsPostResponseBody:
type: object
properties:
id:
type: string
example:
id: a5b0fe7d-c4dd-40a7-bd80-dfc7869327e1
ForbiddenError:
type: object
properties:
message:
type: string
description: Any further information
errors:
type: array
description: Detailed error information
items:
$ref: '#/components/schemas/ErrorItem'
UnauthorizedAltError:
type: object
properties:
message:
type: string
description: Any further information
errors:
type: array
description: Detailed error information
items:
$ref: '#/components/schemas/ErrorItem'
BadRequestError:
required:
- message
type: object
properties:
message:
type: string
description: Any further information
errors:
type: array
description: Detailed error information
items:
$ref: '#/components/schemas/ErrorItem'
PaymentCard:
required:
- cvc
- expiryDate
- id
- nameOnCard
- pan
- startDate
type: object
properties:
id:
type: string
pan:
maxLength: 19
type: string
description: Must be sixteen digits, optionally in blocks of 4 separated by a dash
cvc:
maxLength: 3
minLength: 3
type: string
description: Card Verification Code
startDate:
pattern: ^(0[1-9]|1[0-2])/?([0-9]{4}|[0-9]{2})$
type: string
description: 'Must be in one of these four formats: MM/YY MMYY MMYYYY MM/YYYY'
expiryDate:
pattern: ^(0[1-9]|1[0-2])/?([0-9]{4}|[0-9]{2})$
type: string
description: 'Must be in one of these four formats: MM/YY MMYY MMYYYY MM/YYYY'
nameOnCard:
type: string
creationDate:
type: string
format: date-time
balance:
$ref: '#/components/schemas/Currency'
apr:
type: number
cardtype:
type: string
enum:
- CREDIT
- DEBIT
- PREPAID
NotAcceptableError:
type: object
properties:
message:
type: string
supportedMediaTypes:
type: array
description: List of supported media types for this endpoint
items:
type: string
UnsupportedMediaTypeError:
type: object
properties:
message:
type: string
description: Any further information
errors:
type: array
description: Detailed error information
items:
$ref: '#/components/schemas/ErrorItem'
NotFoundError:
type: object
properties:
message:
type: string
description: Any further information
errors:
type: array
description: Detailed error information
items:
$ref: '#/components/schemas/ErrorItem'
PaymentCards:
type: array
items:
$ref: '#/components/schemas/PaymentCard'
InternalServerError:
required:
- message
type: object
properties:
message:
type: string
description: Further Information
description: Represents HTTP 500 Internal Server Error
Currency:
title: Monetary Amount
required:
- amount
- currencyCode
type: object
properties:
amount:
type: string
description: The amount in the specified currency
currencyCode:
pattern: ^[A-Z]{3}$
type: string
description: The alpha-3 code (complying with ISO 4217) of the currency that qualifies the amount
description: Schema defining monetary amount in given currency.
ErrorItem:
type: object
properties:
message:
type: string
description: Default Message. Any further information.
key:
type: string
description: '{capability-name}.api.{api-key-name}. For generated validation errors this is the path in the document the error resolves to. e.g. object name + ''.'' + field'
context:
type: object
description: Context can be anything used to construct localised messages.
description: A validation error