openapi: 3.2.0 info: title: Open Finance Connect Components API description: 'OpenAPI specification for Finicity APIs. Open Finance (formerly Open Banking) solutions in the US are provided by Finicity, a Mastercard company.' contact: name: API Support email: apisupport@mastercard.com url: https://developer.mastercard.com/open-finance-us/documentation/support/ version: 1.43.0 servers: - url: https://api.finicity.com description: Production security: - FinicityAppKey: [] FinicityAppToken: [] tags: - name: Connect Components description: Allow customers to log into their financial institutions and grant Finicity authorization paths: /connect-components/institutions/{institution_id}/oauth-urls: parameters: - $ref: '#/components/parameters/InstitutionIdPathParameter' post: summary: Create OAuth URL operationId: post-institutions-institutionId-oauth-urls tags: - Connect Components responses: '201': $ref: '#/components/responses/GenerateOAuthUrl' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/ResourceNotFound' description: Generates a new OAuth URL that can be used to connect an end-user into their direct-connection institution. The `redirectURI` will be called when the oauth session has completed. An optional configuration object can be applied by including a valid `configurationId` in the request body. requestBody: $ref: '#/components/requestBodies/OauthUrl' /connect-components/institutions/{institution_id}/login-forms: parameters: - $ref: '#/components/parameters/InstitutionIdPathParameter' post: summary: Create Login Form operationId: post-institutions-institutionId-login-forms tags: - Connect Components responses: '201': $ref: '#/components/responses/LoginForms' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/ResourceNotFound' description: Generate a new login form for a given institution, customer, and language. requestBody: $ref: '#/components/requestBodies/LoginForm' /connect-components/customers/{customer_id}/institution-login-ids/{institution_login_id}/reconnections: parameters: - $ref: '#/components/parameters/CustomerIdPathParameter' - $ref: '#/components/parameters/InstitutionLoginIdPathParam' post: summary: Initiate Reconnection operationId: post-reconnections tags: - Connect Components responses: '201': $ref: '#/components/responses/LoginForms' '203': $ref: '#/components/responses/MfaChallenge' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' description: "Use the Data Connect Fix API when the following conditions occur:\n * The connection to the user's financial institution is lost.\n * The user's credentials were updated (for any number of reasons).\n * The user's MFA challenge has expired." requestBody: $ref: '#/components/requestBodies/NoBody' /connect-components/configurations: post: summary: Create Components Configuration operationId: post-configurations tags: - Connect Components responses: '201': $ref: '#/components/responses/Configuration' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' description: Optional endpoint. This endpoint is use to generate a configuration object, which an then be passed in during the login flow. If used, the ID provided will need to be passed in the Create Login Form or Create OAuth URL. requestBody: $ref: '#/components/requestBodies/CreateConfiguration' get: summary: Get All Configurations for Current Partner description: Get all previously saved Data Connect Component configurations. operationId: get-configurations tags: - Connect Components responses: '200': $ref: '#/components/responses/Configurations' '401': $ref: '#/components/responses/Unauthorized' /connect-components/configurations/{configuration_id}: parameters: - $ref: '#/components/parameters/ConfigurationIdPathParameter' get: summary: Get Configuration Details tags: - Connect Components responses: '200': $ref: '#/components/responses/Configuration' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/ResourceNotFound' operationId: get-configurations-configurationId description: Returns the configuration with the specified id if the configuration exists and belongs to the partner calling this endpoint delete: summary: Delete Configuration tags: - Connect Components operationId: delete-configurations-configurationId responses: '204': $ref: '#/components/responses/NoBody' '401': $ref: '#/components/responses/BadRequest' '404': $ref: '#/components/responses/ResourceNotFound' description: Removes the configuration from the database components: responses: ResourceNotFound: description: The resource doesn't exist content: application/json: schema: $ref: '#/components/schemas/GoldStandardErrorMessage' examples: ResourceNotFoundExample: $ref: '#/components/examples/GoldStandardResourceNotFound' BadRequest: description: The request was rejected content: application/json: schema: $ref: '#/components/schemas/GoldStandardErrorMessage' examples: InvalidFieldExample: $ref: '#/components/examples/GoldStandardInvalidField' GenerateOAuthUrl: description: The returned oauth url, as well as a reference back to this resource in case modifications are needed content: application/json: schema: type: object description: The response object for requests to generate OAuth URLs required: - id - url - eventStreamId example: id: 8d9d8f5e-2c5f-4f49-bf9b-276a7df0367f url: https://example.com eventStreamId: 208a1170-875e-4656-85d0-27dfc3ee7137 properties: id: type: string format: uuid example: 8d9d8f5e-2c5f-4f49-bf9b-276a7df0367f minLength: 36 maxLength: 36 description: Unique reference to the login session url: type: string format: uri example: https://example.com minLength: 1 maxLength: 1024 description: The oauth url to direct the user to eventStreamId: $ref: '#/components/schemas/EventStreamId' Configuration: description: An object used to modify the login behavior content: application/json: schema: $ref: '#/components/schemas/Configuration' LoginForms: description: Generate a new login form entry content: application/json: schema: type: object description: The data used by the calling application to render a login form example: id: 8d9d8f5e-2c5f-4f49-bf9b-276a7df0367f eventStreamId: 208a1170-875e-4656-85d0-27dfc3ee7137 elements: - id: 26410b1f-0347-4d57-bb03-f44d00e785e2 label: username sortOrder: 0 - id: f2ce62c2-877f-4c26-9935-d1ab6084e6d0 label: password sortOrder: 1 properties: id: type: string minLength: 36 maxLength: 36 example: 8d9d8f5e-2c5f-4f49-bf9b-276a7df0367f format: uuid description: The unique identifier associated with this session'ed form eventStreamId: $ref: '#/components/schemas/EventStreamId' elements: type: array description: An array of elements that is to be rendered items: type: object minProperties: 1 maxProperties: 10 properties: id: type: string format: uuid minLength: 36 maxLength: 36 example: 26410b1f-0347-4d57-bb03-f44d00e785e2 description: The session specific identifier for the login form element label: type: string description: The human-readable name of the element example: Username minLength: 1 maxLength: 512 sortOrder: type: integer default: 0 example: 0 minimum: 0 maximum: 10 description: A hint to indicate what order to render the elements in required: - id - label - sortOrder required: - id - elements - eventStreamId Unauthorized: description: The request lacks valid authentication credentials. Check "Finicity-App-Key" or "Finicity-App-Token". content: application/json: schema: $ref: '#/components/schemas/GoldStandardErrorMessage' examples: ExpiredTokenExample: $ref: '#/components/examples/GoldStandardExpiredToken' MissingFinicityAppKeyExample: $ref: '#/components/examples/GoldStandardMissingFinicityAppKey' NoBody: description: Empty Response Body MfaChallenge: description: MFA challenges required to log in content: application/json: schema: type: array items: type: object properties: mfaChallenges: type: array minItems: 1 description: The required MFA Challenges required in order to log in. items: type: object required: - id - prompt - mfaType - choiceIds - eventStreamId properties: id: type: string description: The unique identifier for the MFA challenge format: uuid example: 9082affa-d965-40be-a3ed-a320bb3467ff minLength: 36 maxLength: 36 mfaType: type: string description: "The type of MFA challenge:\n * TFA_TEXT: This challenge type will present a\nsingle input box to the customer and is commonly used for things like One-Time Passwords.\n * TFA_CHOICE: The TFA_CHOICE object represents a\nmultiple choice question and answer selection.\n * TFA_MULTI: The TFA_MULTI challenge type will\npresent the customer with multiple images to select from.\n * TFA_IMAGE: A TFA_IMAGE challenge will present a\ncaptcha-style image the customer will need to decipher." example: TFA_TEXT prompt: type: string description: The MFA prompt text example: Which high school did you attend choiceIds: type: array description: An array of unique identifiers for the MFA choices items: type: string description: The unique identifier for the MFA choice format: uuid example: 9082affa-d965-40be-a3ed-a320bb3467ff minLength: 36 maxLength: 36 Configurations: description: Array of available configurations content: application/json: schema: type: array description: The array of configuration objects associated with this partner items: $ref: '#/components/schemas/Configuration' parameters: InstitutionIdPathParameter: name: institution_id in: path description: The financial institution id at Mastercard. required: true schema: type: integer example: 170716 CustomerIdPathParameter: description: Unique identifier of the customer name: customer_id in: path required: true schema: $ref: '#/components/schemas/CustomerId' example: '1005061234' InstitutionLoginIdPathParam: name: institution_login_id description: Institution login id of the customer. in: path required: true schema: type: integer format: int64 example: 7008461438 ConfigurationIdPathParameter: name: configuration_id in: path required: true schema: type: string format: uuid example: 9082affa-d965-40be-a3ed-a320bb3467ff minLength: 36 maxLength: 36 description: The unique identifier for a configuration object schemas: ServiceAgreement: description: An object that contains the language the terms and conditions were present in and the date the customer accepted the terms and conditions. type: object required: - language - acceptedDate properties: language: description: The language translation of the terms and conditions as presented to the customer. type: string example: en acceptedDate: description: The date the customer accepted the terms and conditions. Must be a valid ISO-8601 date time. type: string format: date-time example: '2024-11-28T18:25:32+00:00' FilterAccounts: type: array description: An optional filter to apply during account activation with institutions that support legacy login forms. items: type: string example: Checking minLength: 1 maxLength: 512 AccountClassificationType: type: array example: - personal - business description: 'An optional filter to apply during account activation with institutions that support Oauth integration. Supported filters are: `personal`, `business`, and `unknown`.' items: type: string example: personal GoldStandardErrorMessage: required: - Errors type: object properties: Errors: type: object required: - Error properties: Error: description: Mastercard standard error message. type: array items: type: object properties: Source: type: string description: The applications that generated the error. ReasonCode: type: string description: A unique constant identifying the error case encountered during processing. Description: type: string description: Short description of the ReasonCode field. Recoverable: type: boolean description: Indicates whether this error will always be returned for this request, or retrying could change the outcome. Details: type: string description: Where appropriate, indicates detailed information about data received and calculated during request processing, to help the user with diagnosing errors. Configuration: title: Configuration type: object description: Used to modify behavior during the login flow properties: id: $ref: '#/components/schemas/ConfigurationId' filterAccounts: $ref: '#/components/schemas/FilterAccounts' accountClassificationType: $ref: '#/components/schemas/AccountClassificationType' aoRequired: $ref: '#/components/schemas/AoRequired' ConfigurationId: description: Unique identifier of the configuration object type: string format: uuid example: 605543e1-f507-48ad-8127-95c40566597b minLength: 36 maxLength: 36 CustomerId: type: string description: A customer ID. See Add Customer API for how to create a customer ID. example: '1005061234' AoRequired: type: boolean description: When set to true, the user must explicitly permission Account Owner details at OAuth-supported institutions. If they do not, a [239] error is returned, and the login attempt is blocked. Partners are responsible for handling user re-attempt flows to ensure proper permissions are granted default: false example: true EventStreamId: type: string format: uuid description: Unique reference to the event stream used to send events to the SDK minLength: 36 maxLength: 36 example: 208a1170-875e-4656-85d0-27dfc3ee7137 examples: GoldStandardInvalidField: value: Errors: Error: - Source: Connect-Components, ReasonCode: 10010, Description: All request parameters could not be validated. Ensure you are sending the correct data in your headers, query parameters, and request body. Recoverable: false, Details: One or more of the fields could not be validated. Please ensure you have entered the correct data. GoldStandardResourceNotFound: value: Errors: Error: - Source: Connect-Components, ReasonCode: 4041, Description: The requested entity was not found, Recoverable: false, Details: The requested entity was not found GoldStandardExpiredToken: value: Errors: Error: - Source: Connect-Components, ReasonCode: 10023, Description: Expired (Finicity-App-Token), Recoverable: false, Details: Expired (Finicity-App-Token) GoldStandardMissingFinicityAppKey: value: Errors: Error: - Source: Connect-Components, ReasonCode: 10026, Description: Missing parameter (Finicity-App-Key) Recoverable: false, Details: Missing parameter (Finicity-App-Key) requestBodies: OauthUrl: required: true content: application/json: schema: type: object description: Used to request an oauth url for a given a given institution and customer. required: - customerId - serviceAgreement - redirectURI properties: redirectURI: description: The `redirectURI` will be called when the oauth session has completed. type: string format: uri example: https://oauth.example.com/redirect minLength: 1 maxLength: 1024 customerId: $ref: '#/components/schemas/CustomerId' configurationId: $ref: '#/components/schemas/ConfigurationId' serviceAgreement: $ref: '#/components/schemas/ServiceAgreement' CreateConfiguration: required: true content: application/json: schema: type: object description: Used to generate a new configuration, which can be used during the login flow properties: filterAccounts: $ref: '#/components/schemas/FilterAccounts' accountClassificationType: $ref: '#/components/schemas/AccountClassificationType' aoRequired: $ref: '#/components/schemas/AoRequired' LoginForm: required: true description: "An optional configuration object can be applied by including a valid `configurationId` in the request body.

The preferred language translation for the login form is request with the `language` property in the request body. Supported languages are:\n * English: `en`\n * English-United States:'en-us`\n * Spanish: `es`\n * Spanish-United States: `es-us`\n * French: `fr`\n * French-Canada: `fr-ca`" content: application/json: schema: type: object description: Object used to generate a new session'ed login form. required: - language - customerId - serviceAgreement properties: language: type: string description: The preferred language translation of the requested login form. Supported languages are English:'en', English-United States:'en-us', Spanish:'es', Spanish-United States:'es-us', French:'fr', French-Canada:'fr-ca' example: en customerId: $ref: '#/components/schemas/CustomerId' configurationId: $ref: '#/components/schemas/ConfigurationId' serviceAgreement: $ref: '#/components/schemas/ServiceAgreement' NoBody: required: true content: application/json: schema: type: - object - 'null' securitySchemes: FinicityAppKey: name: Finicity-App-Key type: apiKey in: header description: The "Finicity-App-Key" from the developer dashboard FinicityAppToken: name: Finicity-App-Token type: apiKey in: header description: A token returned by the `/authentication` API