openapi: 3.0.1
info:
title: Stand In Account Check Service – Real Time Account Update
description: Stand In Account Check Service OpenAPI Specification for the management of the Account Status updates from the customer to the SIAC module
version: 1.4.0
tags:
- name: Stand In Account Check
description: Stand In Account Check endpoint
paths:
/account:
get:
tags:
- Stand In Account Check
summary: Get accounts
description: |
Get accounts from repository.
Filter options: iban, status, reasonCode, timestamp.
Pagination options: page, size.
Sorting options: sortBy, order.
operationId: getAccounts
parameters:
- name: iban
in: query
description: Filter by IBAN
required: false
schema:
type: string
example: FR7630004000031234567890143
- name: ibanGreater
in: query
description: Filter by IBAN following the provided value in alphabetical order
required: false
schema:
type: string
example: FR7630004000031234567890143
- name: status
in: query
description: Filter by status
required: false
schema:
type: string
enum:
- OPEN
- CLOSED
example: OPEN
- name: reasonCode
in: query
description: Filter by reason code
required: false
schema:
type: string
example: '0000'
- name: timestampEquals
in: query
description: Filter by exact timestamp
required: false
schema:
type: string
example: '2023-07-21T17:32:28.120Z'
- name: timestampFrom
in: query
description: Filter by timestamp from (range filtering if timestampTo is provided)
required: false
schema:
type: string
example: '2023-07-21T17:32:28.120Z'
- name: timestampTo
in: query
description: Filter by timestamp to (range filtering if timestampFrom is provided)
required: false
schema:
type: string
example: '2023-07-21T17:32:28.120Z'
- name: page
in: query
description: Page number for pagination (1 to 9999 included)
required: false
schema:
maximum: 9999
minimum: 1
type: integer
example: 5
- name: size
in: query
description: Number of items per page for pagination (1 to 9999 included)
required: false
schema:
maximum: 9999
minimum: 1
type: integer
example: 200
- name: sortBy
in: query
description: Field to sort by
required: false
schema:
type: string
- name: order
in: query
description: Sort order (asc or desc)
required: false
schema:
type: string
enum:
- asc
- desc
responses:
'200':
description: Successfully updated
headers:
X-Total-Count:
description: Total number of rows matching the parameters, excluding those for pagination.
style: simple
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/AccountContainer'
example:
- iban: FR7630004000031234567890143
status: OPEN
reasonCode: '0000'
timestamp: '2023-07-21T17:32:28.120Z'
'400':
description: Bad request, parameters are not valid, not correctly used or not sufficiently restrictive
headers:
X-Total-Count:
description: |
- "Too many results":
Total number of rows matching the parameters, excluding those for pagination;
- Otherwise:
0
style: simple
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/AccountGatewayContainer'
examples:
Invalid format:
description: Invalid format for at least one of the parameters
value:
returnCode: KO
reasonLabel: Invalid format
reasonDescription: The value [2024-09-17T09:45:12.988Z] for [status] is invalid.
Invalid combination:
description: Invalid combination between at least two parameters
value:
returnCode: KO
reasonLabel: Invalid combination
reasonDescription: Incompatible operations between [Equals] and [To] for [timestamp].
Invalid pagination:
description: Invalid format for at least one of the parameters used to perform pagination
value:
returnCode: KO
reasonLabel: Invalid pagination
reasonDescription: Value [desc] for the pagination's property [size] is invalid.
Too many results:
description: The request is not sufficiently restrictive
value:
returnCode: KO
reasonLabel: Too many results
reasonDescription: 'Too many rows to return: 736 rows selected (limited to 500). Please refine your search.'
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'405':
description: Method Not Allowed
'409':
description: Conflict
'415':
description: Unsupported Media Type
'429':
description: Too Many Requests
'500':
description: An Internal error during account update
'504':
description: Gateway Timeout
put:
tags:
- Stand In Account Check
summary: Batch update accounts
description: Update multiple accounts. If an account is unknown, it will be created.Update is actually done by replacing the existing data account with the new ones provided.
operationId: updateMultipleAccount
requestBody:
description: List of account data
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AccountContainer'
required: true
responses:
'200':
description: Successfully updated
headers:
X-Affected-Count:
description: Number of affected accounts
style: simple
schema:
type: integer
X-Data-Size:
description: Number of accounts in the request
style: simple
schema:
type: integer
'400':
description: Invalid json / bad request
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'405':
description: Method Not Allowed
'409':
description: Conflict
'415':
description: Unsupported Media Type
'429':
description: Too Many Requests
'500':
description: Internal error during account update
'504':
description: Gateway Timeout
post:
tags:
- Stand In Account Check
summary: Create new account / accounts
description: Create new account, or accounts if several are provided. This endpoint is dedicated to account creation, not update. If you want to update an existing account, use the PUT method on /account/{IBAN} endpoint.
operationId: createAccount
requestBody:
description: Account data or list of account data.
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AccountContainer'
- type: array
items:
$ref: '#/components/schemas/AccountContainer'
example:
iban: FR7630004000031234567890143
status: OPEN
reasonCode: '0000'
timestamp: '2023-07-21T17:32:28.120Z'
required: true
responses:
'201':
description: Successfully created
headers:
X-Affected-Count:
description: Number of affected accounts
style: simple
schema:
type: integer
X-Data-Size:
description: Number of accounts in the request
style: simple
schema:
type: integer
'400':
description: Invalid json / bad request
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'405':
description: Method Not Allowed
'409':
description: Conflict
'415':
description: Unsupported Media Type
'429':
description: Too Many Requests
'500':
description: Internal error during account creation
'504':
description: Gateway Timeout
delete:
tags:
- Stand In Account Check
summary: Delete a batch of accounts
description: Delete multiple accounts. If an account is unknown, it will be ignored.
operationId: deleteMultipleAccounts
requestBody:
description: List of the IBAN of the accounts to delete
content:
application/json:
schema:
type: array
items:
pattern: ^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$
type: string
example: FR7630004000031234567890143
example:
- FR7630004000031234567890143
- FR7630004000031234567890144
required: true
responses:
'200':
description: Successfully updated
headers:
X-Affected-Count:
description: Number of affected accounts
style: simple
schema:
type: integer
X-Data-Size:
description: Number of accounts in the request
style: simple
schema:
type: integer
'400':
description: Invalid json / bad request
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'405':
description: Method Not Allowed
'409':
description: Conflict
'415':
description: Unsupported Media Type
'429':
description: Too Many Requests
'500':
description: Internal error during account update
'504':
description: Gateway Timeout
/account/{IBAN}:
get:
tags:
- Stand In Account Check
summary: Get an account
description: Get an account from repository
operationId: getAccountByIban
parameters:
- name: IBAN
in: path
description: IBAN of the account to retrieve
required: true
schema:
type: string
example: FR7630004000031234567890143
responses:
'200':
description: Successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/AccountContainer'
example:
iban: FR7630004000031234567890143
status: OPEN
reasonCode: '0000'
timestamp: '2023-07-21T17:32:28.120Z'
'400':
description: Bad request, parameters are not valid
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Account not found
'405':
description: Method Not Allowed
'409':
description: Conflict
'415':
description: Unsupported Media Type
'429':
description: Too Many Requests
'500':
description: Internal error during account retrieval
'504':
description: Gateway Timeout
put:
tags:
- Stand In Account Check
summary: Create or update an account
description: Update an already known account or create if unknown.Update is actually done by replacing the existing data account with the new one provided.
operationId: updateAccount
parameters:
- name: IBAN
in: path
description: IBAN of the account to replace / create
required: true
schema:
type: string
example: FR7630004000031234567890143
requestBody:
description: Account data
content:
application/json:
schema:
$ref: '#/components/schemas/AccountContainer'
required: true
responses:
'200':
description: Successfully updated / created
headers:
X-Affected-Count:
description: Number of affected accounts
style: simple
schema:
type: integer
X-Data-Size:
description: Number of accounts in the request
style: simple
schema:
type: integer
'400':
description: Bad request, parameters are not valid
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'405':
description: Method Not Allowed
'409':
description: Conflict
'415':
description: Unsupported Media Type
'429':
description: Too Many Requests
'500':
description: Internal error during account update
'504':
description: Gateway Timeout
delete:
tags:
- Stand In Account Check
summary: Delete an already known account
description: Delete an already known account
operationId: deleteAccount
parameters:
- name: IBAN
in: path
description: IBAN of the account to delete
required: true
schema:
type: string
example: FR7630004000031234567890143
responses:
'200':
description: Successfully deleted
headers:
X-Affected-Count:
description: Number of affected accounts
style: simple
schema:
type: integer
X-Data-Size:
description: Number of accounts in the request
style: simple
schema:
type: integer
'400':
description: Bad request, parameters are not valid
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Account not found
'405':
description: Method Not Allowed
'409':
description: Conflict
'415':
description: Unsupported Media Type
'429':
description: Too Many Requests
'500':
description: Internal error during account deletion
'504':
description: Gateway Timeout
components:
schemas:
AccountContainer:
required:
- iban
- reasonCode
- status
- timestamp
type: object
properties:
iban:
pattern: 'pattern: ^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$'
type: string
description: International Bank Account Number
example: AL4721211009000000023569874112
status:
pattern: ^(OPEN|CLOSED)$
type: string
description: Account status
example: OPEN
enum:
- OPEN
- CLOSED
reasonCode:
maxLength: 4
type: string
description: Reason code for account status if any
example: '0000'
timestamp:
pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}(Z|[+-]\d{2}:\d{2})?$
type: string
description: Timestamp in the format yyyy-MM-ddTHH:mm:ss.SSS with optional timezone, default timezone if not provided is Central European Time (CET)
example: '2024-06-18T17:32:28.120Z'
description: Account details
example:
iban: FR7630004000031234567890143
status: OPEN
reasonCode: '0000'
timestamp: '2023-07-21T17:32:28.120Z'
AccountGatewayContainer:
required:
- reasonDescription
- reasonLabel
- returnCode
type: object
properties:
returnCode:
pattern: KO
type: string
description: Return code from the gateway. Always valued with 'KO'
example: KO
reasonLabel:
type: string
description: Reason for rejection
example: Invalid format
enum:
- Invalid format
- Invalid combination
- Invalid pagination
- Too many results
reasonDescription:
type: string
description: Specify the reason for rejection
example: The value [2024-09-17T09:45:12.988Z] for [status] is invalid.