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 supports both XML and JSON. **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. This version is backward compatible with OAuth v3 and does not require signing and encryption. version: 4.0.0 x-ibm-name: authenticationservices 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/v4/oauth/token: post: summary: Request v4 Access Token description: >- The OAuth v4 token request authenticates your API message sent in either JSON or XML formats and responds with an access token. operationId: oAuthV4UsingPOST parameters: - name: Content-Type in: header description: Supports \"application/xml\" and \"application/json\". 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 schema: type: string requestBody: description: Request body for the V4 OAuth Token. content: application/json: schema: $ref: '#/components/schemas/Request' application/xml: schema: $ref: '#/components/schemas/Request' example: >- client_credentials/authenticationservices/v1CCF required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Response' application/xml: schema: $ref: '#/components/schemas/Response' 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 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' example: httpMessage: Bad Request httpCode: 400 application/xml: schema: $ref: '#/components/schemas/ErrorMessage' example: >- Bad Request400 '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' example: httpMessage: UNAUTHORIZED httpCode: 401 application/xml: schema: $ref: '#/components/schemas/ErrorMessage' example: >- UNAUTHORIZED401 '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' example: httpMessage: NOT FOUND httpCode: 404 application/xml: schema: $ref: '#/components/schemas/ErrorMessage' example: >- NOT FOUND404 '405': description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' example: httpMessage: METHOD NOT ALLOWED httpCode: 405 application/xml: schema: $ref: '#/components/schemas/ErrorMessage' example: >- METHOD NOT ALLOWED405 '415': description: Unsupported Media Type content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' example: httpMessage: UNSUPPORTED MEDIA TYPE httpCode: 415 application/xml: schema: $ref: '#/components/schemas/ErrorMessage' example: >- UNSUPPORTED MEDIA TYPE415 '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' example: httpMessage: Internal Server Error httpCode: 500 application/xml: schema: $ref: '#/components/schemas/ErrorMessage' example: >- Internal Server Error500 deprecated: false security: - Basic Authentication: [] x-codegen-request-body-name: body components: schemas: Response: title: oAuthTokenResponse description: >- The response body for the v4 authentication service to retrieve an OAuth token. type: object properties: token: required: - access_token - expires_in - scope type: object title: token properties: access_token: type: string description: >- Contains the OAuth Token that will be used for authenticating successive API calls. title: access_token token_type: type: string description: Default value will be “Bearer". title: token_type scope: type: string description: >- The version scope of the authentication call. The value will be the same for all the API versions. title: scope expires_in: type: string description: The expiry time of the OAuth Token in seconds. title: expires_in xml: name: Token example: token: token_type: Bearer access_token: >- BVG0wllkALQd773fXp6TwHj8GkQO+ck2oPXK0wRYaYH0Ellj7TQRcsZG2jtSnM7yw7V70+l11NZWw62v2XkobNa5o9qtC8wq/jKp7++ZFlFikvUlDFiaJgvj2AAqPVZpMar23fnMB4Hvy3ykXzuYqr1rlN2gqDZ02bw7GBqYOlekqs9xOjb69tHWRfqeFv+N7GN0DwUbN6YoicixWaR1TGZp1p3MaDbDwLmKA0fgwgO//14NPq2utvFLNSpPa4EgV5olzcopq3fpSvm3pxUO0pqjw8nY+ApTHcW2+Y4r2eLTBhboJFMONYw3cbI71X/LWG2Hh8HmVZ9ZEeo7oZ0poD5SBbk4a4Kf0laK0WcJ9xaGheG5WoHtc6H07d1Zgu91J0pC2cNIUSvej+6RzV/y7Ei75rxvS0zIu5vzTMu4j9UHe9cRAZv/i8o09r0VgxPYdOKrJJv3zf8hysKSEd9bFK4N5P/c3ztqRHOVQyEfYG3rR7fl80J71s0MNd7yIUy1mk5cMQJur2ggSAhrJrQKCUaBLPDCmfCEx5qpg9KdI/QELyoUlcu7MhL/AjhStEcZ/9yJJKoDieg+cDDIenGMl5LbAy3PqeuGI0lfDCKmOIh/LlHQVELJvHTkfmKlPEJV85/+edQTtvKYA4XvcOjGo1mtpAVRufHW76yraWHSHT40qeMS0RkSk+JlitSq/vQNX3BLnMAZEmb07a6KDbdrHfWQ/MYb9L7HJs5Qk7UiuuERyZMlhvsI/Y3vbzQxxLqE7GKRnNP77BHPxoviMN5mY7HEFq67ZAeo/7iQuagU779jbsPdzTH7+2cMcYru1w/XWm+hB1Sz2Mhj+N3wXsIzy1BYy3t99+FKBurRAK7KhF1iyqsOz1dqchQbkJLOsRsF expires_in: '1800' scope: /authenticationservices/v1 ErrorMessage: required: - httpCode title: ErrorMessage properties: httpCode: type: integer format: int32 title: httpCode httpMessage: type: string title: httpMessage xml: name: errormessage Request: properties: oAuthToken: $ref: '#/components/schemas/OAuthTokenType' title: Request OAuthTokenType: required: - grantType - scope title: OAuthTokenType properties: grantType: type: string title: grantType description: >- You must always pass 'client_credentials' in this field because Citi only provides credentials-based authentication for API users. xml: name: grantType attribute: false wrapped: false scope: type: string title: scope 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` (even for versions 2 and 3). xml: name: scope attribute: false wrapped: false example: grantType: client_credentials scope: /authenticationservices/v1 xml: namespace: http://com.citi.citiconnect/services/types/oauthtoken/v1 access_token_response: required: - access_token - expires_in - token_type type: object title: access_token_response properties: token_type: type: string description: Default value will be “Bearer” title: token_type enum: - bearer access_token: type: string description: >- This has the OAuth Token which will be used for authenticating successive API calls title: access_token expires_in: type: integer description: This represents the expiry time of the OAuth Token in seconds title: expires_in scope: type: string title: scope 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 x-original-swagger-version: '2.0' x-ibm-configuration: type: oauth oauth2: client-type: confidential scopes: /authenticationservices/v1: base path grants: - application - implicit authorization: type: authenticated identity-extraction: type: basic access-token: ttl: 1800 revocation: type: gateway authentication: x-ibm-authentication-url: url: https://example.com/auth/url enforced: true testable: true phase: realized cors: enabled: true