359 lines
12 KiB
YAML
359 lines
12 KiB
YAML
openapi: 3.0.1
|
|
info:
|
|
title: Integraion layer APIs for token storage for ABT
|
|
description: >-
|
|
APIs that give business processes access to the security and authorization state of a token within the scope of HTM. In the backend this is connected to a container which handles the accessToken en refreshToken management.
|
|
version: "1.0"
|
|
servers:
|
|
- url: https://services.acc.api.htm.nl/abt/containertokens/1.0
|
|
tags:
|
|
- name: tokens
|
|
paths:
|
|
/tokens:
|
|
parameters:
|
|
post:
|
|
tags:
|
|
- tokens
|
|
summary: Create a new token entry in the vault
|
|
description: Create a new token entry in the vault, if the customerProfileId has been supplied create in the customerToken DB otherwise in the AnonymousToken DB
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/CreateTokenBody"
|
|
examples:
|
|
token:
|
|
value:
|
|
{
|
|
"xTAT": "cf694905-7f76-4799-b0bc-490716921323",
|
|
"otpKey": "123456789123456789123456789abcde"
|
|
}
|
|
responses:
|
|
"201":
|
|
description: Created
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/unavailable"
|
|
example:
|
|
"Ok"
|
|
"400":
|
|
description: Bad Request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
examples:
|
|
Missing Parameters:
|
|
value:
|
|
status: 400
|
|
title: Missing Mandatory Parameter
|
|
detail: Required parameter {0} is missing.
|
|
Invalid Parameters:
|
|
value:
|
|
status: 400
|
|
title: Invalid Parameter
|
|
detail: Required parameter {0} is invalid.
|
|
"401":
|
|
description: Unauthorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
examples:
|
|
Unauthorized:
|
|
value:
|
|
status: 401
|
|
title: Unauthorized
|
|
detail: Invalid Access Token
|
|
"404":
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
examples:
|
|
TAT not found:
|
|
value:
|
|
status: 404
|
|
title: Not Found
|
|
detail: TAT Account Not Found
|
|
"500":
|
|
description: Internal server error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
example:
|
|
error: An unknown error has occurred
|
|
/tokens/{xtat}/status:
|
|
parameters:
|
|
- name: xtat
|
|
in: path
|
|
schema:
|
|
type: string
|
|
example: uuid
|
|
required: true
|
|
description: The xTAT for the token for which the status needs to be checked
|
|
- name: customerProfileId
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 323
|
|
required: false
|
|
description: The id of the customer Profile for which the request is being done, if customer has identified themselves
|
|
get:
|
|
tags:
|
|
- tokens
|
|
summary: Request the security and authorization status of an OV pas token
|
|
description: Request the security and authorization status of an OV pas token, if the customerProfileId has been supplied look in the customerToken DB otherwise check the AnonymousToken DB.
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TokenStatusResponse"
|
|
examples:
|
|
Not secured, not authorized :
|
|
summary: Not secured, not authorized
|
|
value:
|
|
{
|
|
"isAuthorized": false,
|
|
"isSecured": false
|
|
}
|
|
Secured, not authorized :
|
|
summary: Secured, not authorized
|
|
value:
|
|
{
|
|
"isAuthorized": true,
|
|
"isSecured": false
|
|
}
|
|
Secured and authorized :
|
|
summary: Secured and authorized
|
|
value:
|
|
{
|
|
"isAuthorized": true,
|
|
"isSecured": true
|
|
}
|
|
"400":
|
|
description: Bad Request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
examples:
|
|
Missing Parameters:
|
|
value:
|
|
status: 400
|
|
title: Missing Mandatory Parameter
|
|
detail: Required parameter {0} is missing.
|
|
Invalid Parameters:
|
|
value:
|
|
status: 400
|
|
title: Invalid Parameter
|
|
detail: Required parameter {0} is invalid.
|
|
"401":
|
|
description: Unauthorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
examples:
|
|
Unauthorized:
|
|
value:
|
|
status: 401
|
|
title: Unauthorized
|
|
detail: Invalid Access Token
|
|
"404":
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
examples:
|
|
TAT not found:
|
|
value:
|
|
status: 404
|
|
title: Not Found
|
|
detail: TAT Account Not Found
|
|
"500":
|
|
description: Internal server error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
example:
|
|
error: An unknown error has occurred
|
|
/tokens/{xtat}/validate:
|
|
parameters:
|
|
- name: xtat
|
|
in: path
|
|
schema:
|
|
type: string
|
|
example: uuid
|
|
required: true
|
|
description: The xTAT for the token for which the status needs to be checked
|
|
- name: customerProfileId
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 323
|
|
required: false
|
|
description: The id of the customer Profile for which the request is being done, if customer has identified themselves
|
|
patch:
|
|
tags:
|
|
- tokens
|
|
summary: Validate the supplied OTP and secure and/or authorize the token
|
|
description: Validate the supplied OTP and secure and/or authorize the token if the customerProfileId has been supplied look in the customerToken DB otherwise check the AnonymousToken DB.
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ValidateTokenBody"
|
|
examples:
|
|
token:
|
|
value:
|
|
{
|
|
"otp": "1234564"
|
|
}
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TokenStatusResponse"
|
|
examples:
|
|
Not secured, not authorized :
|
|
summary: Not secured, not authorized
|
|
value:
|
|
{
|
|
"isAuthorized": false,
|
|
"isSecured": false
|
|
}
|
|
Secured, not authorized :
|
|
summary: Secured, not authorized
|
|
value:
|
|
{
|
|
"isAuthorized": true,
|
|
"isSecured": false
|
|
}
|
|
Secured and authorized :
|
|
summary: Secured and authorized
|
|
value:
|
|
{
|
|
"isAuthorized": true,
|
|
"isSecured": true
|
|
}
|
|
"400":
|
|
description: Bad Request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
examples:
|
|
Missing Parameters:
|
|
value:
|
|
status: 400
|
|
title: Missing Mandatory Parameter
|
|
detail: Required parameter {0} is missing.
|
|
Invalid Parameters:
|
|
value:
|
|
status: 400
|
|
title: Invalid Parameter
|
|
detail: Required parameter {0} is invalid.
|
|
"401":
|
|
description: Unauthorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
examples:
|
|
Unauthorized:
|
|
value:
|
|
status: 401
|
|
title: Unauthorized
|
|
detail: Invalid Access Token
|
|
"404":
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
examples:
|
|
TAT not found:
|
|
value:
|
|
status: 404
|
|
title: Not Found
|
|
detail: TAT Account Not Found
|
|
"500":
|
|
description: Internal server error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
example:
|
|
error: An unknown error has occurred
|
|
components:
|
|
schemas:
|
|
unavailable:
|
|
type: object
|
|
ErrorResponse:
|
|
description: Default response when an invalid request has been sent
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: integer
|
|
description: >-
|
|
A status IS An integer that represents the HTTP status code of the
|
|
response.
|
|
example: 400
|
|
title:
|
|
type: string
|
|
description: A title IS A string that provides a brief summary of the error.
|
|
detail:
|
|
type: string
|
|
description: A detail IS A string that provides more details about the error.
|
|
CreateTokenBody:
|
|
description: Body for when the a new token entry is created
|
|
type: object
|
|
required:
|
|
- xTAT
|
|
- otpKey
|
|
properties:
|
|
xTAT:
|
|
type : string
|
|
description: >-
|
|
Unique identifier for the GBO transit account
|
|
example: 03071794-482a-4168-b60f-84669a9e6a76
|
|
otpKey:
|
|
type : string
|
|
description: >-
|
|
Key used to validate the OTP at GBO
|
|
example: 123456789123456789123456789abcde
|
|
TokenStatusResponse:
|
|
description: Response for when the status of a token is requested
|
|
type: object
|
|
properties:
|
|
isSecured:
|
|
type: boolean
|
|
description: >-
|
|
Is the OVpas secured according to the GBO
|
|
example: False
|
|
isAuthorized:
|
|
type: boolean
|
|
description: >-
|
|
Does HTM have the authorization to access the secured the data of the OVpas
|
|
example: False
|
|
ValidateTokenBody:
|
|
description: Body for when the a token entry is validated
|
|
type: object
|
|
required:
|
|
- otp
|
|
properties:
|
|
otp:
|
|
type : string
|
|
description: >-
|
|
OTP to be used to secure the token and retrieve the JWT at GBO
|
|
example: 1234567 |