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: NotAcceptableError: type: object properties: message: type: string supportedMediaTypes: type: array description: List of supported media types for this endpoint items: type: string UnauthorizedAltError: type: object properties: message: type: string description: Any further information errors: type: array description: Detailed error information items: $ref: '#/components/schemas/ErrorItem' ForbiddenError: type: object properties: message: type: string description: Any further information errors: type: array description: Detailed error information items: $ref: '#/components/schemas/ErrorItem' UnsupportedMediaTypeError: type: object properties: message: type: string description: Any further information errors: type: array description: Detailed error information items: $ref: '#/components/schemas/ErrorItem' InternalServerError: required: - message type: object properties: message: type: string description: Further Information description: Represents HTTP 500 Internal Server Error PaymentCards: type: array items: $ref: '#/components/schemas/PaymentCard' PaymentCardsPostResponseBody: type: object properties: id: type: string example: id: a5b0fe7d-c4dd-40a7-bd80-dfc7869327e1 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 NotFoundError: type: object properties: message: type: string description: Any further information errors: type: array description: Detailed error information items: $ref: '#/components/schemas/ErrorItem' 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 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. 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'