openapi: 3.0.1
info:
title: Authentication Services
description: >-
Citi uses access tokens to maintain stateless sessions for API requests that
are authenticated using your client ID & secret key. Use the Authentication
API to generate your access tokens.
Once a successful server Authentication handshake is established over mTLS
and your API credentials are validated, the OAuth token will be generated
and returned to you in the response. This version of the Authentication
endpoint only supports XML.
**NOTE:** The access token is provided through the HTTP Authorization header
`Authorization: Bearer {access token}` and is valid for 1800 seconds. When
the access token has expired, your application will need to generate another
access token. Any CitiConnect API call using an expired access token will
return the HTTP status code 401 Unauthorized.
version: 1.0.0
servers:
- url: https://tts.sandbox.apib2b.citi.com/citiconnect/sb
description: 'CTE/Sandbox url '
- url: https://tts.apib2b.citi.com/citiconnect/prod
description: Production gateway url
paths:
/authenticationservices/v1/oauth/token:
post:
summary: Request v1 Access Token
description: >-
The OAuth v1 token request authenticates your API message sent in the
XML format and responds with an access token.
operationId: oAuthV1UsingPOST
parameters:
- name: Content-Type
in: header
description: Supports only \"application/xml\".
required: true
schema:
type: string
- name: Authorization
in: header
description: >
The authorization will include "Basic" followed by a single space,
followed by the Base64 encoded value of the APIm `client_id` &
`secret key`.
In the above example, the `client_id` is
*1234a5b6-cde7-8f90-12gh-345ij6789012* & secret key is
*abcdefghijklmnop*.
The Base64 value after appending by adding “:” in between will be
“MTIzNGE1YjYtY2RlNy04ZjkwLTEyZ2gtMzQ1aWo2Nzg5MDEyOmFiY2RlZmdoaWprbG1ub3A=”.
required: true
example: >-
Basic
MTIzNGE1YjYtY2RlNy04ZjkwLTEyZ2gtMzQ1aWo2Nzg5MDEyOmFiY2RlZmdoaWprbG1ub3A=
schema:
type: string
requestBody:
description: >-
The following is the request body to retrieve an OAuth token using the
V1 endpoint.
content:
application/xml:
schema:
$ref: '#/components/schemas/oAuthToken'
example: >-
client_credentials/authenticationservices/v1
required: true
responses:
'200':
description: OK
content:
application/xml:
schema:
$ref: '#/components/schemas/token'
example: >-
BearerO0n8J+fXQr32nrmBI5let6iDqg5F1iMlocBhqwokdtU3d0C/gNKVPYnmxJYheps4YdnuIijt9E3LKYMEab+lP5M34yGNumBLQUUE8myVo40y3Tyo4d2j1cYYF9RGfpOVzAtb9VrhoMdJORJaIcIvTlRpcqCI/c0kV5t5mk0wmL7blWiTF0NW+w6Y57p4iikn0H+zMQ4zMmZiYI06t0VIH4yQrFw6N4tsoN1GD2A3/XKVVi5CO+I71aq0CaDlR/qEUfyZ6psyqqg94W54Eaq5m5Wp1uq5aQXK+A1II8zHNcARV/Iot3ZUGVYcPfvNEYZaANRbJcXhGepOwkDrRu/jYBguWm+/Vmvr3cIFaQ1bvhpCHxTAW7uJerWJzBE11RE0wv8HGsznQRUsbSq0woOa69Pe0Oym5qzeo9Ar139DIpp0hmeU5Ee8qWZBTalW5QdDIEhWdizlxK/1gvrOU8TK+AR/fI/2h3ApPUf+pT67gqh+EhWlEr0U2jM3EcJmL7aMVjZu9dswX79aGK7ss+JB3iEoC9tD/2cBRbHuitrqiRqp1Bd2L6w9bKx6tUQk+l9/KOX6h/5kOxlFc2z6CXpc1MVXlBQOSdJdj/2ILJ7UPCdmlzBG3q9WtJi1MaeNefUaQlNQUGpP017zLKxNIW5OtSJCneGeOjAxsdtZunO0LUS+2Z6OiiRxsYIZJMzmQ5dh4vGLzMFTH9bG74se1EuPHw==1800/authenticationservices/v1
'201':
description: Created
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'500':
description: Internal Server Error
security:
- Basic Authentication: []
x-codegen-request-body-name: body
components:
schemas:
oAuthToken:
title: oAuthTokenRequest
description: >-
The request body for the V1 authentication service to retrieve an OAuth
token.
properties:
grantType:
type: string
description: >-
You must always pass 'client_credentials' in this field because Citi
only provides credentials-based authentication for API users.
merchantId:
type: string
scope:
type: string
description: >-
This is the version scope of the authentication call. Note that this
value will be the same for ALL versions of the Authentication API
and should be `/authenticationservices/v1`.
sourceApplication:
type: string
description: >-
This represents the route of the authentication call within
CitiConnect API.
enum:
- CCF
userDetails:
$ref: '#/components/schemas/UserDetailsType'
required:
- grantType
- scope
example:
grantType: client_credentials
scope: /authenticationservices/v1
xml:
namespace: http://com.citi.citiconnect/services/types/oauthtoken/v1
UserDetailsType:
title: UserDetailsType
type: object
properties:
userId:
type: string
xml:
name: userId
attribute: false
wrapped: false
userIdType:
type: string
xml:
name: userIdType
attribute: false
wrapped: false
enum:
- SAFEWORD
xml:
name: userDetailsType
attribute: false
wrapped: false
token:
title: oAuthTokenResponse
description: >-
The response body for the V1 authentication service to retrieve an OAuth
token.
properties:
token_type:
type: string
description: The default value will be “Bearer”.
access_token:
type: string
description: >-
Contains the OAuth Token that will be used for authenticating
successive API calls.
expires_in:
type: string
description: The expiry time limit of the OAuth Token in seconds.
scope:
type: string
description: >-
The version scope of the authentication call. The value will be the
same for all the API versions.
securitySchemes:
Basic Authentication:
type: http
description: >-
Username is the application's client_id and password is the
client_secret.
scheme: basic
clientIdHeader:
type: apiKey
name: X-IBM-Client-Id
in: header
clientSecretHeader:
type: apiKey
name: X-IBM-Client-Secret
in: header