{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"abcf64af-5d83-47c4-9c25-a0fedda3a0ac","name":"ASA Open API Documentation","description":"Welcome to the API documentation for ASA (Account Secure Access), a trusted Digital Services Network connecting consumers, banks, and FinTech companies. ASA empowers consumers to securely share their bank data with FinTech providers through the ASA Vault app, ensuring they retain control over the data they choose to disclose.\n\nExplore our comprehensive API documentation below to learn more about implementing ASA into your applications and enhancing user experience through secure data access.\n\n---\n\n# **Prerequisites**\n\nElevate your application by integrating ASA’s secure and flexible APIs for a seamless Login with ASA (OpenID) experience. Empower your users to effortlessly connect with their bank accounts while maintaining precise control over their data sharing preferences.\n\nBefore you start the integration process, ensure you have the following essentials:\n\n- **ASA Account:** You can email us at [help@asa.financial](https://mailto:help@asa.financial) to get your account setup with the following information:\n    \n    - First Name\n        \n    - Last Name\n        \n    - Email ID\n        \n    - Phone Number\n        \n    - Fintech Name\n        \n    - Fintech Logo/App Logo\n        \n    - Website\n        \n    - iOS Application ID (if available)\n        \n    - Android Application ID (if available)\n        \n- **API Subscription Key:** Secure your `Ocp-Api-Subscription-Key` – your key to making all API requests.\n    \n- **Authentication Credentials:** Prepare your consumer credentials to generate a Bearer token via ASA's `/Authentication` endpoint.\n    \n\nLet’s get started and enhance your application with smart, secure, and user-friendly features!\n\n---\n\n# Getting Started\n\n> **To sign up at CUBuild, You need 1 developer account per Team. Please try signup @**[Developer Sign-Up](https://developer.asavault.com/#/signup) \n  \n> **In case you have any issues signing up, please send an email to us at** [help@asa.financial](https://mailto:help@asa.financial). For more details, refer to the prerequisites section. \n  \n\n#### **1\\. Developer Sign-Up**\n\n_**As a first step, developers can sign-up on our**_ [Developer Portal.](https://developer.asavault.com/#/signup) _Once the_ **Sign-Up** is complete, they will receive an email to verify their login to the developer portal. After a successful login, developers will be assigned a Subscription Key, which they will use as a header value in all REST API calls to the OpenAPI API.\n\n#### **2\\. Sandbox AsaVault Application**\n\nASA provides developers with a sandbox version of AsaVault for creating the data required to work with the API. Asavault application for Sandbox can be found [here.](https://github.com/ASAFINANCIAL/asavaultmobileapp)\n\nDownload AsaVault App for Sandbox:\n\n- For iOS Sandbox App, developers will need to download and install the TestFlight App from the App Store.\n    \n    - [<b>Sandbox - AsaVault iOS App</b>](https://testflight.apple.com/join/s55hZBcs)\n        \n    - [<b>Sandbox - AsaVault Android App</b>](https://github.com/ASAFINANCIAL/asavaultmobileapp/raw/main/asavault.v107.20240724-1.apk?download=)\n        \n\nTo request access to the Asavault app via TestFlight (Sandbox environment), please send an email to [help@asa.financial](https://null).\n\n#### **3\\. Test User Data**\n\nDevelopers can find test users that they can use to create data for their Sandbox accounts.\n\nFor the details of test user data, please refer to the [Test User Data](https://docs.asavault.com/#test-user-data) section.\n\n#### **4\\. Register Consumer using AsaVault App**\n\nAfter installing the AsaVault App, developers can register a consumer account using the test users for different banks.\n\n#### 5\\. Go to Profile Screen\n\nOnce the consumer is registered successfully using the AsaVault app, navigate to the **Profile** screen within the app. The Profile screen provides a summary of the registered consumer’s basic information and acts as a starting point for initiating various API operations.\n\n#### 6\\. Lookup\n\nThe **Lookup** functionality is used to initiate a fetch of consumer-specific data from linked banks. This is an essential step to simulate and test the flow of financial data aggregation using the OpenAPI APIs.\n\n---\n\n## Fintech Onboarding\n\nWelcome to the FinTech onboarding process with ASA Financial! This section will walk you through registration, integration, and secure data access, ensuring you have everything you need to seamlessly connect your FinTech with ASA's powerful platform.\n\n### Checklist for FinTech Onboarding Process\n\n#### Registration\n\nThe journey begins during the discussion and contract phase. Once you're on board, ASA will provide you with essential keys and codes for smooth communication with ASA APIs.\n\n- **Subscription Key**: This key is crucial for your FinTech systems to communicate with ASA APIs. It can be passed in the header as `Ocp-Apim-Subscription-Key`.\n    \n- **FinTech Code**: A unique identifier assigned by ASA to your FinTech.\n    \n- **Authorization Key**: This key is provided for each FinTech application that needs to integrate with the ASA Platform.\n    \n\n### Integration\n\nIntegrating with ASA's OpenID Authentication involves setting up authentication endpoints and managing user sessions with Bearer Tokens.\n\n**ASA Authentication API URLs:**\n\n- **Sandbox**: `https://openapiuat.asacore.com/Authentication`\n    \n- **Production**: `https://openapi.asacore.com/Authentication`\n    \n\n#### Steps to Integrate\n\n1. **Authorization Endpoint**: The endpoint for Authorization is `{Base URL}/Authorization`.\n    \n2. **Login Process**: Initiate the request, prompting the user to enter their ASA credentials (username and password). Upon successful login, the user is redirected back to the specified `RedirectURL`.\n    \n3. **Token Management**:\n    \n    - The **Bearer Token** is valid for 24 hours.\n        \n    - Use the **Refresh Token API** to extend the session while the token is valid.\n        \n    - If the token expires, users must log in again.\n        \n4. **Tokenless Request Approach**: For direct endpoint access without generating a token, use the tokenless request approach. The headers required are:\n    \n    - **ASAConsumerCode**: Used within the FinTech app for accessing consumer financial data.\n        \n    - **ASAFintechCode**: Necessary for subsequent requests to ASA Connect or Open API.\n        \n    - **Bearer Token**: Authorizes the user's session within the FinTech app.\n        \n    - **Token Expiry Date**: Specifies the expiration of the Bearer Token (valid for 24 hours).\n        \n5. **Handling Failures**: If the login fails, an error message is provided, and the user is redirected to `RedirectFailureURL`.\n    \n\n---\n\n## **LoginwithASA**\n\nWelcome to the OAuth LoginWithASA Authentication process!\n\n#### **Purpose**\n\nThis entire process ensures the secure authentication of consumers, enabling FinTechs to access user data with the right authorization. It’s all about providing a streamlined and secure login experience for your users. By following these steps, you'll ensure a secure and smooth user authentication flow, empowering your FinTech application to interact seamlessly with ASA’s platform. Welcome to a new era of secure, user-friendly authentication!\n\nThis seamless system enables FinTechs to authenticate users securely through ASA’s OAuth. Here’s how it works:\n\n#### **Step 1: Generate Authorization URL**\n\nFirst, call the `/Authentication/Authorization` endpoint. This gives you a secure URL that directs users to the ASA LoginWithASA credentials screen.\n\n#### **Step 2: User Interaction**\n\nConsumers (your users) visit this URL to enter their ASA credentials. It’s as simple as that!\n\n#### **Step 3: Redirect After Authentication**\n\nOnce the credentials are validated, users are redirected to a specified URL you provide. This redirection includes a bearer token that grants access to the consumer's authorized data.\n\nStep 4:\n\n<img src=\"https://content.pstmn.io/2cb88f81-b9d3-4fc5-9fae-9ff3b0b1ce81/U2NyZWVuc2hvdCAyMDI0LTA3LTIzIGF0IDExLjUxLjQ34oCvQU0ucG5n\">\n\n#### Headers\n\n| **Header Name** | **Description** |\n| --- | --- |\n| **Ocp-Apim-Subscription-Key** | A subscription key required for all endpoint calls to access the API. This key is essential for allowing the API Management layer to authenticate the request. |\n| **Authorization** | Contains a bearer token generated using the /Authentication endpoint. The token proves the request is made by an authenticated Fintech on behalf of a logged-in Consumer. This header is not required for tokenless requests. |\n| **RequestId (Optional)** | An optional parameter that uniquely identifies the current transaction. If provided, it will be included in the response headers. If not, it will be auto-generated by our backend layer. Recommended for transaction tracking. Present in all endpoints except the authentication endpoint. |\n| **X-ASA-ApiVersion** | Specifies the version of the endpoint expected to handle the current request. Defaults to the oldest still-supported version for backward compatibility if not provided.  <br>The default API Version is 1.07.  <br>The current API Version available is 1.07. |\n| **X-ASA-ConsumerCode** | Contains the ASA-generated ID for the currently authenticated Consumer. Required by endpoints that access Consumer data. It will be matched against the ConsumerCode associated with the given bearer token if provided. |\n| **X-ASA-FintechCode** | Includes the ASA-generated ID for the currently authenticated Fintech. Required by endpoints that access Fintech data or data explicitly authorized by the Consumer for Fintech access. It will be matched against the FintechCode associated with the given bearer token if provided. |\n| **X-ASA-FintechApplicationCode** | Contains the ASA-generated Fintech Application ID. Required for endpoints accessing Fintech data without a bearer token, designed for backend processes to access Consumer data. |\n| **X-ASA-FintechAuthorizationKey** | Includes the ASA-generated Fintech Authorization Key for the currently authenticated Fintech. Required for endpoints accessing Fintech data or data authorized by the Consumer when a bearer token is not provided. Validated to ensure secure access by Fintech's backend processes. |\n\n#### Response\n\nThe `/Authentication` endpoint returns data in a standard JSON format, which includes the following fields:\n\n| Field | Description |\n| --- | --- |\n| **status** | Standard HTTP status code indicating the result of the request. |\n| **message** | A brief description of what occurred during the request and/or what the response contains. |\n| **reference** | An object that includes the `requestId` and server `timeStamp`. |\n| **version** | The version number of the endpoint that processed the response. |\n| **data** | The processed response details, which can be various data types as required. |\n\n#### **cURL Request:**\n\n``` c\nshCopy codecurl https://api.yourdomain.com/v1/endpoint \\\n  -H \"Ocp-Apim-Subscription-Key: your_subscription_key\" \\\n  -H \"Authorization: Bearer your_bearer_token\" \\\n  -H \"RequestId: your_request_id\" \\\n  -H \"X-ASA-ApiVersion: 1.07\" \\\n  -H \"X-ASA-ConsumerCode: users_asa_consumer_code\" \\\n  -H \"X-ASA-FintechCode: your_fintech_code\" \\\n  -H \"X-ASA-FintechApplicationCode: your_fintech_application_code\" \\\n  -H \"X-ASA-FintechAuthorizationKey: your_fintech_authorization_key\"\n\n ```\n\n#### Sample Code\n\nSample Code for LoginWithASA is available in our [GitHub repository.](https://github.com/ASAFINANCIAL#sample-code)\n\n---\n\n## Fintech Certification Process\n\nAll applications in the ASA App Store must go through a certification process to ensure they meet ASA's requirements. The ASA Onboarding Team collaborates with Fintechs to test integration and validate compliance.\n\n#### Steps to Complete Certification:\n\n1. **Signup for an Account with ASA Financial**:\n    \n    - Email `help@asa.financial` with the following information to set up your account:\n        \n        - First Name\n            \n        - Last Name\n            \n        - Email ID\n            \n        - Phone Number\n            \n        - Fintech Name\n            \n        - Fintech Logo/App Logo\n            \n        - Website\n            \n        - iOS Application ID\n            \n        - Android Application ID\n            \n2. **Integrate LoginWithASA for Authentication**\n    \n3. **Integrate Dynamic Link**\n    \n4. **Integrate with OpenAPI**\n    \n5. **Integrate with Webhooks for Real-time Updates**\n    \n6. **Integrate Payments with AsaPay**\n    \n7. **Provide Test Application to ASA Team**\n    \n8. **Release Application to Production**\n    \n\n---\n\n## Implemented Fintech PII Data Table\n\nA `FintechPIIData` table has been implemented with the following main fields:\n\n- **AsaFintechCode** (`bigint`, NULL) – ASA Fintech Code or NULL. NULL means a default value for any FinTech that doesn’t have a specific record.\n    \n- **FieldName** (`varchar(50)`, NULL) – Name of the field (e.g., FirstName, LastName, etc.).\n    \n- **IsShared** (`bit`, NOT NULL, DEFAULT 0) – Allows or disallows populating the context of this field in any response. If `IsShared=0`, it returns null values for the given field.\n    \n- **IsEncrypt** (`bit`, NOT NULL, DEFAULT 0) – If `IsShared=1`, specifies encryption rules. If `IsEncrypt=1`, the content of this field will be encrypted using the FinTech Subscription Key.\n    \n\n#### Defined Field Names:\n\n- FirstName\n    \n- LastName\n    \n- Email\n    \n- Phone\n    \n- Last4AccountNumber\n    \n\nEach field can be mapped using the `PIIMeaning` attribute, for example:\n\n```\n[PIIMeaning(\"Last4AccountNumber\")]\npublic string Last4DigitAccountNumber { get; set; }\n\n ```\n\n#### Implemented Filters:\n\nA filter is implemented to validate responses based on existing rules, hiding sensitive information (`**\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*`) or encrypting fields according to predefined rules. This filter is installed on the following OpenAPI controllers:\n\n- **Consumer**\n    \n- **Holdings**\n    \n- **Transfers**\n    \n- **Payment**\n    \n\n---\n\n### Changes to `asaconnect Fintech/All` API\n\nThe API now returns an additional section:\n\n```\n\"fintechPIIData\": [\n  {\n    \"tenantId\": 0,\n    \"fintechPIIDataId\": 0,\n    \"asaFintechCode\": 0,\n    \"fieldName\": \"string\",\n    \"isShared\": true,\n    \"isEncrypt\": true,\n    \"isActive\": true,\n    \"createdBy\": 0,\n    \"dateCreated\": \"2025-02-17T15:26:38.235Z\",\n    \"updatedBy\": 0,\n    \"lastUpdated\": \"2025-02-17T15:26:38.235Z\"\n  }\n]\n\n ```\n\n### Performance Optimization\n\nTo minimize performance impact, `FintechPIIData` is cached for **1 hour**, and changes do not apply immediately.\n\n---\n\n### Setup Instructions for QA and UAT\n\nIn **QA** and **UAT**, environments must be set up to:\n\n1. Add `FIPIIData` fields to the setup.\n    \n2. Configure Fintech for PIIData.\n    \n\nSetup on **DEV** and **UAT** will be managed accordingly. QA is responsible for setting it up in their environment.\n\n#### Fields Added for PIIData:\n\n- FirstName\n    \n- LastName\n    \n- EmailAddress (actual email, not virtual email)\n    \n- PhoneNumber\n    \n- DateOfBirth\n    \n- SSN\n    \n- SSNLast4\n    \n- DriverLicense\n    \n- Address (single record for consumer)\n    \n- Address1\n    \n- Address2\n    \n- City\n    \n- State\n    \n- ZipCode\n    \n- Country\n    \n- Addresses (all available addresses for the consumer)\n    \n\n#### Notes:\n\n- Two default fields will **always** be present:\n    \n    - `AsaConsumerCode`\n        \n    - `Email` (virtual email)\n        \n- If a field is **NULL**, it will not be included in the response.\n    \n- If **no address** is present, `Addresses` will not be included.\n    \n- If an **address field is NULL** in the database, it will be returned as `NULL` in the response.\n    \n\n---\n\n<img src=\"https://content.pstmn.io/b35e9c97-b0f2-44c5-a6c0-c27bebef20c2/U2NyZWVuc2hvdCAyMDI0LTA3LTIzIGF0IDExLjUxLjAx4oCvQU0ucG5n\">\n\n<img src=\"https://content.pstmn.io/6fa30810-4faa-414e-b385-f5684c3e7cd7/U2NyZWVuc2hvdCAyMDI0LTA3LTIzIGF0IDExLjUxLjEw4oCvQU0ucG5n\">\n\n---\n\n# Test User Data\n\nThe Test User Data section provides information on test accounts to be used for various test scenarios. Below are the details for the test users that can be utilized for testing purposes.\n\n|  | **First Name** | **Middle Name** | **Last Name** | **Account Number** |\n| --- | --- | --- | --- | --- |\n| User 1 | Ralph | M | Macdonald | 0000012648 |\n| User 2 | Troy | W | Britt | 0000012649 |\n| User 3 | Kristi | J | Craft | 0000012650 |\n| User 4 | Cathy | W | Kelly | 0000012651 |\n| User 5 | Charles | G | Figueroa | 0000012652 |\n| User 6 | Gordon | G | Swanson | 0000012653 |\n| User 7 | Geneva | P | Ball | 0000012654 |\n| User 8 | Melinda | D | Sears | 0000012655 |\n| User 9 | Megan | P | Rutledge | 0000012656 |\n| User 10 | Cristina | W | Gonzalez | 0000012657 |\n\n---\n\n# Subscription Management User Guide\n\n## Overview\n\nThis guide provides step-by-step instructions for managing your subscription, including upgrading to a higher plan and downgrading to a lower or free plan. It explains the workflows, policies, and expected outcomes for each subscription action.\n\n---\n\n### Subscription Types\n\n- **New Subscription** – A fresh subscription activation.\n    \n- **Upgrade** – Moving to a higher-tier plan.\n    \n- **Downgrade** – Moving to a lower-tier or free plan.\n    \n\n### Upgrade Workflow\n\n#### When to Upgrade?\n\n- If you want access to premium features.\n    \n- If you need more advanced capabilities.\n    \n\n#### How to Upgrade?\n\n1. Navigate to the **Subscription Settings** in your account.\n    \n2. Select the **Upgrade** option.\n    \n3. Choose the **new plan** you wish to upgrade to (Gold or Platinum).\n    \n4. Review the prorated charges for the current billing cycle.\n    \n5. Confirm the upgrade. The system will:\n    \n    - Charge the prorated amount immediately.\n        \n    - Grant access to the new plan instantly.\n        \n6. You will receive a confirmation email with the details.\n    \n\n### Important Notes\n\n- Upgrades happen immediately.\n    \n- Charges are prorated based on your remaining billing cycle.\n    \n- A user can avail a trial only once in a lifetime.\n    \n\n---\n\n## Downgrade Workflow\n\n### When to Downgrade?\n\n- If you no longer require premium features.\n    \n- If you want to switch to a free plan.\n    \n\n### How to Downgrade?\n\n1. Navigate to the **Subscription Settings** in your account.\n    \n2. Select the **Downgrade** option.\n    \n3. Choose the **new plan** you wish to downgrade to (Gold or Free).\n    \n4. Confirm the downgrade. The system will:\n    \n    - Schedule the downgrade for the end of your current billing cycle.\n        \n    - Retain your current plan access until the billing cycle ends.\n        \n5. You will receive a confirmation email with the details.\n    \n\n### Important Notes\n\n- Downgrades are scheduled and do not take effect immediately.\n    \n- You will continue on your current plan until the billing cycle ends.\n    \n- No refunds are issued for downgrades.\n    \n\n---\n\n## Trial Period Considerations\n\n- If you are on a **trial period**, you will be charged at the end of the trial if you do not downgrade before it expires.\n    \n- Downgrades to a free plan during the trial will take effect immediately.\n    \n\n---\n\n## Frequently Asked Questions (FAQs)\n\n### 1\\. Can I cancel a scheduled downgrade?\n\nNo, once a downgrade is scheduled, it will take effect at the end of the billing cycle.\n\n### 2\\. Will I receive a refund if I downgrade?\n\nNo, downgrades do not include refunds. You will continue using your current plan until the end of the billing cycle.\n\n### 3\\. How does prorated billing work for upgrades?\n\nProrated billing ensures you pay only for the remaining days in your billing cycle at the new plan’s rate.\n\n## Subscription Cancellation Management\n\n### Overview\n\nThe Subscription Plan Webhooks notify Fintechs about changes in user subscriptions. These events provide real-time updates when a subscription is created, updated, or canceled.\n\n### Subscription Cancellation Information\n\nThe current CancelSubscription flow does not issue refunds. When a monthly or yearly subscription is canceled and the `SubscriptionEndDate` is in the future, the system will stop the recurring payment for that subscription. A background process is in place to handle such cases. If a consumer cancels a subscription with recurring payments stopped, the system will track its `SubscriptionEndDate` and automatically cancel the subscription on that date. Until then, the subscription remains active for the consumer.\n\n### Subscription Cancellation Workflow (OpenAPI)\n\n#### 1️⃣ Fetching Consumer Subscriptions:\n\n- The `Subscriptions` endpoint in OpenAPI returns a list of subscriptions purchased by the consumer.\n    \n- This list includes the `BillingDetailCode` for each subscription.\n    \n\n#### 2️⃣ Canceling a Subscription:\n\n- To cancel a purchased subscription, the consumer must call the `CancelSubscription` endpoint.\n    \n- The request should include the `BillingDetailCode`, based on which the system will process the cancellation.\n    \n\n#### 3️⃣ Handling Future Subscription Dates:\n\n- If the `SubscriptionEndDate` of the plan is in the future (beyond the current date):\n    \n    - The system will stop the recurring payment for that subscription.\n        \n    - A background process is already in place to handle such cases.\n        \n\n#### 4️⃣ Background Process for Subscription End Date:\n\n- If a consumer cancels a subscription with recurring payments stopped, the system will track its `SubscriptionEndDate`.\n    \n- On the `SubscriptionEndDate`, the background process will automatically cancel the subscription.\n    \n- Until then, the subscription remains active for the consumer.\n    \n\nThis ensures a smooth and automated subscription cancellation process while allowing consumers to use their subscriptions until the valid end date.\n\n### AsaOpenAPI Changes\n\n- Adds functionality to cancel recurring subscriptions in the `SubscriptionsController`.\n    \n- Added `IFintechDetailsService` interface and implemented cancellation logic for subscription plans.\n    \n- Created new models for handling cancellation requests with required validation attributes.\n    \n\n---\n\n# **Using Transfers**\n\n## Overview\n\nThe Transfers API is here to make money movement a breeze! With ASA’s ACH service, you can effortlessly transfer funds from a consumer's main account to their savings account. This is perfect for FinTechs needing ASA to handle money transfers seamlessly. Consumers can define their transfer preferences, including which accounts to use and the amounts to be transferred, all through ASA’s intuitive platform. This ensures smooth and secure transactions every time.\n\n## Scope\n\nThe Transfers API supports the following main functions:\n\n- **Consumer Accounts**: Consumers must define which accounts to use for transferring money. This can be managed through both the FinTech app and ASA’s APIs. When consumers share data with FinTechs, they select the relevant accounts to share.\n    \n- **Transfer Initiation**: Consumers identify the source (debit) and destination (credit) accounts for each transfer. This information can be obtained via the `Transfers/AccountDetails` endpoint.\n    \n- **Creating Links**: FinTechs can create links between source and receiving accounts for future transfers. Links can be either one-time or recurring. A one-time link is used for a single transfer, whereas a recurring link can be used for multiple transfers.\n    \n\n## Multi-Transfer\n\nThe Multi-Transfer feature allows consumers to initiate a single transfer from a source account and distribute the funds to multiple destination accounts. This is particularly useful for scenarios where funds need to be split between multiple accounts in a single transaction.\n\n### Multi-Transfer Requirements:\n\n- **A new transfer type called** **`multi-transfer`** **is introduced.**\n    \n- **One source account**: The transfer must originate from a single source account.\n    \n- **Multiple destination accounts**: Funds can be distributed to multiple destination accounts.\n    \n- **Each destination requires:**\n    \n    - A specified amount.\n        \n    - A reason for the transfer.\n        \n- **Validation rules:**\n    \n    - The total amount from the source account must equal the sum of the destination amounts.\n        \n    - If the amounts do not match, the API will return a failure response stating that the total of the destination amounts must equal the source amount.\n        \n\n### Multi-Transfer Configuration:\n\n- **Default Setting:** Multi-Transfers are disabled for all FinTechs unless explicitly enabled in the database.\n    \n- **FinTech Configuration:** ASA Central includes a configuration setting per FinTech to determine if they are allowed to process multi-transfers.\n    \n- **Database Changes:**\n    \n    - `AllowMultiTransfer` field added to `FintechDetails` (default: false).\n        \n    - `TurnOnMultiTransfer` added to `GeneralCodes` table (default: false).\n        \n\n### API Endpoints and Functionality\n\n#### Transfer Links\n\nFinTechs can create links between accounts by providing the following information:\n\n- Date of request\n    \n- Last 4 digits of source and receiving accounts\n    \n- Associated `ASAFiAccountCode` for both accounts\n    \n- Names as identified by the FinTech\n    \n- Reason for the connection/link\n    \n- FinTech making the request\n    \n- ASA Consumer codes for both accounts\n    \n- Retain an audit record of the request\n    \n\n#### User Notifications\n\n- Notify consumers in ASA Vault when a transfer is approved.\n    \n- This would include details such as the date of request, last 4 digits of accounts, account names, and the reason for the connection/link.\n    \n\n#### FinTech Processing\n\n- FinTechs must inform consumers about the need to identify both source and receiving accounts.\n    \n- Integrate a new Open API endpoint for triggering account transfers (`Transfers/AccountDetails`).\n    \n- The following details are required in the transfer request:\n    \n    - Date of request\n        \n    - Last 4 digits of accounts\n        \n    - Associated `FIDetail`\n        \n    - `AccountID` for both accounts\n        \n    - Names as identified by the FinTech\n        \n    - Description of the reason for the transfer\n        \n    - FinTech making the request\n        \n    - Transfer type (one-time, recurring, multi-transfer)\n        \n    - ASA Consumer codes for both accounts\n        \n    - Retain an audit record of the requests\n        \n\n#### Reconciliation and Permissions\n\n- FinTechs can reconcile transfers using the `Account/Transfers` endpoint.\n    \n- FinTechs should have permission to access consumer data before responding.\n    \n- Only FinTechs that have opted in for ASA Transfer can perform transfers.\n    \n- The `Account/Transfer` endpoint processes requests only for configured FinTechs.\n    \n\nBy following these steps, FinTechs can efficiently integrate with ASA's platform, ensuring secure and seamless money transfers for consumers.\n\n## Transfers Supported\n\n### Supported Banks\n\nASA currently supports transfers for the following banks:\n\n- First Education\n    \n- Pyramid\n    \n\n### Transfer Scenarios\n\nASA enables various types of transfers between accounts for a single consumer. Below are the supported scenarios:\n\n#### Intra-Account Transfers\n\n**Scenario:** Consumer A transfers between their own accounts.\n\n- **Transfer Types:**\n    \n    - Checking Account 01 to Savings Account 01\n        \n    - Savings Account 01 to Checking Account 01\n        \n\n#### Inter-Account Transfers\n\n**Scenario:** Consumer A transfers between different checking and savings accounts under their name.\n\n- **Transfer Types:**\n    \n    - Checking Account 01 to Checking Account 02\n        \n    - Checking Account 01 to Savings Account 02\n        \n\n#### Multi-Account Transfers\n\n**Scenario:** Consumer A transfers from a single source account to multiple destination accounts.\n\n- **Transfer Types:**\n    \n    - Checking Account 01 to (Savings Account 01 + Checking Account 02)\n        \n    - Savings Account 01 to (Checking Account 02 + Savings Account 02)\n        \n\nThis new Multi-Transfer feature enhances flexibility and efficiency, making it easier for consumers to distribute funds securely and accurately.\n\n---\n\n# Dynamic Links and Migration Guide for ASA Fintech Partners\n\nDynamic Links enable a seamless onboarding experience for apps integrated within the CU co-branded ASA Vault App Store. With the upcoming deprecation of Firebase Dynamic Links (August 2025), ASA is guiding all Fintech partners through a smooth migration to next-generation deep linking technologies.\n\n### How Dynamic Links Work\n\n**App Selection**  \nWhen a member selects an app from the ASA Vault App Store, a dynamic link first checks if the app is already installed on the device.\n\n- **If not found**, the user is redirected to the correct app store (Google Play or Apple App Store) to download the app.\n    \n\n**Guided Login Process**\n\n- The dynamic link takes the user to a dedicated landing page.\n    \n- The user logs in using **LoginWithASA**, which initiates a secure authentication flow.\n    \n\n**Secure Authentication**\n\n- Sensitive data is never exposed.\n    \n- Instead, an **ASA Consumer Code (GUID)** is passed to the app, enabling secure backend identification.\n    \n\n**Seamless User Experience**\n\n- No manual configuration required.\n    \n- Fast, frictionless, and secure user journeys for app adoption and login.\n    \n\n### Dynamic Link Setup Details\n\nASA ensures a no-friction login experience by directing users from the ASA App Store to fintech apps using dynamic links.\n\n**Requirements**\n\n- A valid **Dynamic Link**\n    \n- A corresponding **Dynamic Link Key**\n    \n\n**Data Embedded in Dynamic Links**\n\n- ASAConsumerCode\n    \n- ConsumerEmail\n    \n\n**Integration**\n\n- FinTechs must integrate with Dynamic Links for smooth login and user tracking.\n    \n\n**Reference Guide**\n\n- Create Dynamic Links using Firebase Dynamic Links Guide\n    \n- Ensure that the URL for both the Dynamic Link and the Deep Link is the same.\n    \n\n---\n\n### Migration Advisory: Firebase Deprecation & New Standards\n\nFirebase Dynamic Links will reach **end-of-life in August 2025**. All Fintech partners must migrate to one of the following modern deep linking technologies:\n\n- **iOS** → Native **Universal Links**\n    \n- **Android** → **App Links**\n    \n- Cross-platform → [http://Branch.io](http://Branch.io) **Smart Links**\n    \n\n### Migration Path\n\n#### Universal Links (iOS)\n\n1. **Enable Associated Domains**  \n    Add applinks:yourdomain.com in your app’s entitlements file.\n    \n2. **Host the AASA File**  \n    Place apple-app-site-association at:  \n    [https://yourdomain.com/.well-known/apple-app-site-association](https://yourdomain.com/.well-known/apple-app-site-association)\n    \n    - Must use HTTPS\n        \n    - No redirects\n        \n3. **Configure in Xcode**  \n    Add Associated Domains in **Capabilities**.\n    \n4. **Handle Links in Code**  \n    Implement handling in AppDelegate or SceneDelegate.\n    \n5. **Test**  \n    Open your link from Safari or Notes app.\n    \n\n#### App Links (Android)\n\n1. **Update** AndroidManifest.xml  \n    Add the required **intent filters** for deep linking.\n    \n2. **Host the** assetlinks.json **file**  \n    Place at:  \n    [https://yourdomain.com/.well-known/assetlinks.json](https://yourdomain.com/.well-known/assetlinks.json)\n    \n3. **Integrate Branch SDK**  \n    Initialize Branch in your Application class.\n    \n4. **Test Links**  \n    Use ADB or mobile browsers to verify behavior.\n    \n\n#### Migrating to [http://Branch.io](http://Branch.io) Smart Links\n\n1. **Sign Up at** [Branch.io](https://branch.io)  \n    Create apps for both Android and iOS.\n    \n2. **Install the Branch SDK**  \n    Add to both platforms.\n    \n3. **Configure Deep Link Routing**  \n    Use the Branch dashboard to set link behavior.\n    \n4. **Replace Existing Links**  \n    Replace all Firebase Dynamic Links with Branch Smart Links.\n    \n\n**Example Branch API Call**\n\nPOST [https://api2.branch.io/v1/url](https://api2.branch.io/v1/url) { \"branch_key\": \"key_live_xxxx\", \"data\": { \"$deeplink_path\": \"welcome/user123\", \"user_id\": \"user123\" } }\n\n### Testing and Validation\n\n- Validate both **cold** and **warm starts**\n    \n- Confirm **fallback behaviors** when app isn’t installed\n    \n- Monitor real-time events with **Branch Liveview**\n    \n\n### Support and Resources\n\n- **ASA Support Email:** support@asa.financial\n    \n- **ASA Docs:** [https://docs.asavault.com](https://docs.asavault.com)\n    \n- **Branch Docs:** [https://docs.branch.io](https://docs.branch.io)\n    \n\n---\n\n# Webhooks\n\n### Overview\n\nASA offers FinTechs the power of webhooks to stay in the loop with near real-time updates and new consumer data on the ASA Financial platform. Imagine getting instant notifications for key events like new transactions, consumer registrations, data access grants, email updates, transfer status changes, and more—all without lifting a finger!\n\n### **Payload Structure**\n\nEach webhook call contains a payload with a standard section and a data section specific to each event type:\n\n```\njsonCopy code{\n  \"AsaConsumerCode\": 12345,\n  \"ASAFintechCode\": 54321,\n  \"EventName\": \"EventName\",\n  \"EventDescription\": \"EventDescription\",\n  \"Data\": [\n    {\n      \"$type\": \"type of payload data\"\n    }\n  ],\n  \"Message\": \"Message\",\n  \"TimeStamp\": \"2024-07-01T07:26:20.9331169Z\",\n  \"RequestId\": \"RequestId\",\n  \"Pagination\": {\n    \"CurrentPage\": 1,\n    \"PerPage\": 20,\n    \"TotalEntries\": 1\n  }\n}\n\n ```\n\n**Payload Fields**\n\n- `Data`: Contains an array of items specific to the event type.\n    \n- `Pagination`: Provides details about pagination (current page, records per page, total entries).\n    \n\n### **Security**\n\nTo ensure that the webhook request is coming from a trusted source, ASA uses HMAC-SHA256 signatures present in the `X-ASA-Signature` header. The signature is generated based on the following data:\n\n```\ncssCopy codeDataToSign = {X-ASA-Timestamp}.{X-ASA-Webhook-Event}.{Body}\n\n ```\n\nWhere `Body` is the JSON string of the body request. The HMAC-SHA256 signature is then generated using your subscription key.\n\n## <u>List of Webhooks</u>\n\n1. **GetFiData**: When consumer adds new transactions data to the Fintech\n    \n2. **NewRegistration**: When a new consumer registers\n    \n3. **ConsumerDataAccessToFintechs**: When a consumer provides data access to a Fintech\n    \n4. **ConsumerSubscriptionCreated:** When a new subscription is created for a consumer who has granted access to the Fintech.\n    \n5. **ConsumerSubscriptionUpdated:** When an existing subscription is updated for a consumer who has granted access to the Fintech.\n    \n6. **ConsumerSubscriptionCanceled:** Provides information when a subscription is deleted or canceled for a consumer who has granted access to the Fintech. Includes consumer details and the reason for cancellation.\n    \n7. **ConsumerEmailAddressUpdated**: When a consumer Email address is updated\n    \n8. **InvalidEmailAddress**: If an email address provided by Fintech is invalid\n    \n9. **EmailRead**: When a consumer reads the email\n    \n10. **EmailDelivered**: When an Email is delivered to the consumer\n    \n11. **TransferStatusUpdate**: When Status of the transfer changes\n    \n12. **AccountConnectionStatusChange**: Account bank connection status\n    \n13. **HoldingUpdate**: Any update to Holding information\n    \n14. **PaymentTransactionUpdate**: Any update to Payment transactions status information\n    \n15. **InvoicePaymentSucceed**: Successful processing of an invoice payment with details on amount paid and payment method.\n    \n16. **InvoiceUpcoming**: Preview of an upcoming invoice, including line items, consumer details, and billing date.\n    \n17. **InvoicePaymentFailed:** Failed attempt to pay an invoice, including the reason for failure and invoice details.\n    \n18. **InvoicePaymentActionRequired**: Invoice payment requires additional user action, such as 3D secure authentication.\n    \n\n## <u>Details</u>\n\n### **GetFiData**\n\n**Description**: Provides new consumer transactions to the Fintech. Fintech will be notified by email when there are new transactions available for a consumer that has granted access to the Fintech.\n\n**Trigger**: When there are new transactions available for a consumer.\n\n**Realtime/Delay**:\n\n- RealTime: Triggered by webhook callback from the vendor.\n    \n- Not-Realtime: Triggered in a background process run, with expected delay.\n    \n\n**Email Notification Available**: Yes\n\n**Payload**:\n\n```\njsonCopy code\"Data\": [\n  {\n    \"$type\": \"consumerTransactionsModel\",\n    \"account\": {\n      \"account_id\": \"1041510450\",\n      \"asaficode\": 123456,\n      \"accountname\": \" - CLASSIC CHECKING\",\n      \"balances\": {\n        \"available\": 3132.22,\n        \"current\": 3132.22,\n        \"iso_currency_code\": \"USD\"\n      },\n      \"account_typeid\": 3,\n      \"account_type\": \"Checking\",\n      \"transactions\": [\n        {\n          \"transactiontype\": \"Credit\",\n          \"transactionid\": \"1733857\",\n          \"transactiontypeid\": 2,\n          \"transactiontypecode\": \"C\",\n          \"transactionstatus\": \"Posted\",\n          \"description\": \" From Share 0001 \",\n          \"merchantname\": \" Deposit Kiosk Transfer From Share 0001 APT-RRRRR-1733855\",\n          \"tranactiondate\": \"2010-04-24\",\n          \"transactioncategoryid\": null,\n          \"transactioncategory\": \"General\",\n          \"transactioncategorydescription\": \"General\",\n          \"currency\": \"USD\",\n          \"amount\": 3,\n          \"transactionmemo\": \" Deposit Kiosk Transfer From Share 0001 APT-RRRRR-1733855\",\n          \"isrecurring\": false,\n          \"isIgnoredTransaction\": null,\n          \"transactiontime\": \"04:03:00\"\n        }\n      ],\n      \"total_transactions\": 1,\n      \"pagenumber\": 1,\n      \"pagesize\": 100,\n      \"transactionsLastSynced\": \"2024-04-25T10:44:36.41\"\n    }\n  }\n]\n\n ```\n\n### NewRegistration\n\n**Description**: Notifies when a new consumer registers.\n\n**Trigger**: Upon new consumer registration.\n\n**Email Notification Available**: Yes\n\n**Payload**: No payload.\n\n### ConsumerDataAccessToFintechs\n\n**Description**: Notifies when a consumer grants data access to a Fintech.\n\n**Trigger**: When a consumer authorizes data access to a Fintech.\n\n**Email Notification Available**: Yes\n\n**Payload**:\n\n```\njsonCopy code\"Data\": [\n  {\n    \"$type\": \"consumerAuhtorizeFintech\",\n    \"AsaFiCode\": 1312,\n    \"AuthorizationStatus\": 1,\n    \"AsaFiAccountCode\": 1212,\n    \"TransactionData\": true,\n    \"AccountDetails\": true,\n    \"AllowTransfer\": true,\n    \"TransferThresholdAmount\": 1000\n  }\n]\n\n ```\n\n### **ConsumerSubscriptionCreated**\n\n**Description:** Provides information when a new subscription is created for a consumer who has granted access to the Fintech. Fintech will be notified when a subscription is created.\n\n**Trigger:** When a subscription is created for a consumer.\n\n**Email Notification Available:** Yes\n\n**Payload:**\n\n```\njsonCopy code{\n  \"Pagination\": {\n    \"CurrentPage\": 1,\n    \"PerPage\": 25,\n    \"TotalEntries\": 1\n  },\n  \"AsaConsumerCode\": 1953377043,\n  \"ASAFintechCode\": 891835720,\n  \"EventName\": \"SubscriptionChange\",\n  \"EventDescription\": \"SubscriptionChange Change\",\n  \"Data\": [\n    {\n      \"$type\": \"subscription\",\n      \"Action\": \"create\",\n      \"Subscription\": {\n        \"BillingDetailCode\": 2107501197,\n        \"AsaConsumerCode\": 1953377043,\n        \"AsaFintechCode\": 891835720,\n        \"BillingDate\": \"2024-08-24T16:01:59.8515368Z\",\n        \"BillingAmount\": 29,\n        \"Status\": \"Pending\",\n        \"Comment\": \"Gold Plan\",\n        \"IsSubscription\": true,\n        \"SubscriptionPlanCode\": \"4\",\n        \"SubscriptionTitle\": \"Gold\",\n        \"SubscriptionStatus\": \"Pending\",\n        \"SubscriptionStartDate\": \"2024-08-24T16:01:59.3358991Z\",\n        \"SubscriptionEndDate\": \"2024-09-24T16:01:59.335902Z\",\n        \"IsRecurring\": true,\n        \"RecurringAmount\": 29,\n        \"RecurringStartDate\": \"2024-09-24T16:01:59.3403455Z\",\n        \"NextRecurringScheduleDate\": null,\n        \"InTrial\": false,\n        \"BillingCycle\": \"Monthly\"\n      }\n    }\n  ],\n  \"Message\": \"Subscription Change triggered. Event SubscriptionChange for AsaConsumerCode 1953377043 AsaFintechCode 891835720 SubscriptionPlan changed with action create\",\n  \"TimeStamp\": \"2024-08-24T16:02:43.2538447Z\",\n  \"RequestId\": \"4fba29d1-187f-4e03-90bc-861aa39cee52\",\n  \"ProcessInfo\": {\n    \"BackgroundProcess\": \"AsaVault\",\n    \"ProcessCycleMin\": 0,\n    \"IsRealTime\": true\n  }\n}\n\n ```\n\n---\n\n### **ConsumerSubscriptionUpdated**\n\n**Description:** Provides information when an existing subscription is updated for a consumer who has granted access to the Fintech. Fintech will be notified when the subscription is updated.\n\n**Trigger:** When a subscription is updated for a consumer.\n\n**Email Notification Available:** Yes\n\n**Payload:**\n\n```\njsonCopy code{\n  \"Pagination\": {\n    \"CurrentPage\": 1,\n    \"PerPage\": 25,\n    \"TotalEntries\": 1\n  },\n  \"AsaConsumerCode\": 1953377043,\n  \"ASAFintechCode\": 891835720,\n  \"EventName\": \"SubscriptionChange\",\n  \"EventDescription\": \"SubscriptionChange Change\",\n  \"Data\": [\n    {\n      \"$type\": \"subscription\",\n      \"Action\": \"update\",\n      \"Subscription\": {\n        \"BillingDetailCode\": 2107501197,\n        \"AsaConsumerCode\": 1953377043,\n        \"AsaFintechCode\": 891835720,\n        \"BillingDate\": \"2024-08-24T16:01:59.85\",\n        \"BillingAmount\": 29,\n        \"Status\": \"Approve\",\n        \"Comment\": \"Gold Plan\",\n        \"IsSubscription\": true,\n        \"SubscriptionPlanCode\": \"4\",\n        \"SubscriptionTitle\": \"Gold\",\n        \"SubscriptionStatus\": \"Active\",\n        \"SubscriptionStartDate\": \"2024-08-24T16:01:59.337\",\n        \"SubscriptionEndDate\": \"2024-09-24T16:01:59.337\",\n        \"IsRecurring\": true,\n        \"RecurringAmount\": 29,\n        \"RecurringStartDate\": \"2024-09-24T16:01:59.3403455Z\",\n        \"NextRecurringScheduleDate\": null,\n        \"InTrial\": false,\n        \"BillingCycle\": \"Monthly\"\n      }\n    }\n  ],\n  \"Message\": \"Subscription Change triggered. Event SubscriptionChange for AsaConsumerCode 1953377043 AsaFintechCode 891835720 SubscriptionPlan changed with action update\",\n  \"TimeStamp\": \"2024-08-24T16:02:39.8427815Z\",\n  \"RequestId\": \"db40531f-7527-4d20-9b10-8b528b4929f6\",\n  \"ProcessInfo\": {\n    \"BackgroundProcess\": \"AsaVault\",\n    \"ProcessCycleMin\": 0,\n    \"IsRealTime\": true\n  }\n}\n\n ```\n\n### **ConsumerSubscriptionCanceled**\n\n**Description:** Provides information when a subscription is deleted or canceled for a consumer who has granted access to the Fintech. Includes consumer details and the reason for cancellation.\n\n**Trigger:** When a subscription is deleted or canceled for a consumer.\n\n**Email Notification Available:** Yes\n\n**Payload:**\n\n```\n{\n  \"Pagination\": {\n    \"CurrentPage\": 1,\n    \"PerPage\": 5,\n    \"TotalEntries\": 1\n  },\n  \"AsaConsumerCode\": 1411639989,\n  \"ASAFintechCode\": 12345678,\n  \"EventName\": \"SubscriptionChange\",\n  \"EventDescription\": \"SubscriptionChange Change\",\n  \"Data\": [\n    {\n      \"$type\": \"subscription\",\n      \"Action\": \"cancel\",\n      \"Subscription\": {\n        \"BillingDetailCode\": 326988897,\n        \"AsaConsumerCode\": 1411639989,\n        \"AsaFintechCode\": 12345678,\n        \"BillingDate\": \"2024-09-24T12:00:04.52\",\n        \"BillingAmount\": 2.99,\n        \"Status\": \"Approve\",\n        \"Comment\": \"Subscription plan Test Subscription Plan 1 auto renewal process canceled by 1411639989\",\n        \"IsSubscription\": false,\n        \"SubscriptionPlanCode\": 10,\n        \"SubscriptionTitle\": \"Test Subscription Plan 1\",\n        \"SubscriptionStatus\": \"Canceled\",\n        \"SubscriptionStartDate\": \"2024-09-24T12:00:04.737\",\n        \"SubscriptionEndDate\": \"2024-10-23T12:00:04.737\",\n        \"IsRecurring\": false,\n        \"RecurringAmount\": 2.99,\n        \"RecurringStartDate\": \"2024-08-24T00:00:00\",\n        \"NextRecurringScheduleDate\": \"2024-10-24T12:00:04.737\",\n        \"InTrial\": false,\n        \"BillingCycle\": \"Monthly\",\n        \"CardNumberLast4\": \"1111\",\n        \"BankAccountNumberLast4\": null\n      }\n    }\n  ],\n  \"Message\": \"Subscription Change triggered. Event SubscriptionChange for AsaConsumerCode 1411639989 AsaFintechCode 12345678  SubscriptionPlan  changed with action cancel\",\n  \"TimeStamp\": \"2024-09-24T13:19:18.4146706Z\",\n  \"RequestId\": \"59f268af-d956-41b3-8920-a718ae656c1e\",\n  \"ProcessInfo\": {\n    \"BackgroundProcess\": \"AsaVault\",\n    \"ProcessCycleMin\": 0,\n    \"IsRealTime\": true\n  }\n}\n\n ```\n\n### ConsumerEmailAddressUpdated\n\n**Description**: Notifies when a consumer's virtual email address is updated.\n\n**Trigger**: When the virtual email for a consumer is updated.\n\n**Email Notification Available**: Yes\n\n**Payload**:\n\n```\njsonCopy code\"Data\": [\n  {\n    \"$type\": \"emailUpdate\",\n    \"EmailAddress\": \"new_email@asa.com\"\n  }\n]\n\n ```\n\n### InvalidEmailAddress\n\n**Description**: Notifies if an email address provided by the Fintech is invalid.\n\n**Trigger**: When the Fintech sends an email to an invalid virtual email address.\n\n**Email Notification Available**: Yes\n\n**Payload**:\n\n```\njsonCopy code\"Data\": [\n  {\n    \"$type\": \"invalidEmail\",\n    \"EmailAddress\": \"not_exist@asa.com\"\n  }\n]\n\n ```\n\n### EmailRead\n\n**Description**: Notifies when a consumer reads an email.\n\n**Trigger**: When the consumer reads a message sent by the Fintech using the virtual email.\n\n**Email Notification Available**: Yes\n\n**Payload**: No payload.\n\n### EmailDelivered\n\n**Description**: Notifies when an email is delivered to the consumer's email.\n\n**Trigger**: When the email is delivered to the consumer's virtual email.\n\n**Email Notification Available**: Yes\n\n**Payload**:\n\n```\njsonCopy code\"Data\": [\n  {\n    \"$type\": \"emailDelivered\",\n    \"EmailAddress\": \"not_exist@email.com\",\n    \"Status\": \"delivered\"\n  }\n]\n\n ```\n\n### TransferStatusUpdate\n\n**Description**: Notifies when the status of a transfer changes.\n\n**Trigger**: Any update to the transfer status.\n\n**Email Notification Available**: Yes\n\n**Payload**:\n\n```\njsonCopy code\"Data\": [\n  {\n    \"$type\": \"transferStatus\",\n    \"RequestId\": \"123\",\n    \"Asaconsumercode\": 1212,\n    \"TransferlinkName\": \"TransferlinkName\",\n    \"TransferLinkCode\": \"2d58daa7-2569-4f4d-a5a1-88fc28e4a051\",\n    \"TransferStatus\": \"completed\",\n    \"Message\": null\n  }\n]\n\n ```\n\n### AccountConnectionStatusChange\n\n**Description**: Notifies of changes to the consumer account connection status.\n\n**Trigger**: If there is any change to the consumer account connection to the bank.\n\n**Email Notification Available**: Yes\n\n**Payload**:\n\n```\njsonCopy code\"Data\": [\n  {\n    \"$type\": \"consumerFiAccountStatusChange\",\n    \"AccountLast4\": \"1234\",\n    \"AsaFiAccountCode\": \"<AccountCode>\",\n    \"AsaConsumerCode\": \"<AsaConsumerCode>\",\n    \"AsaFiCode\": \"<FinancialInstitution>\",\n    \"AccountStatus\": \"RequireAttention\" / \"Connected\"\n  }\n]\n\n ```\n\n### HoldingUpdate\n\n**Description**: Notifies of any update to holding information.\n\n**Trigger**: When holding information is updated, added, or deleted.\n\n**Email Notification Available**: Yes\n\n**Payload**:\n\n```\njsonCopy code\"Data\": [\n  {\n    \"$type\": \"consumerHolding\",\n    \"Action\": \"Update\",\n    \"Holding\": {\n      \"AsaConsumerCode\": 150763398,\n      \"AsaFiCode\": 962506344,\n      \"AsaFiAccountCode\": 798627697,\n      \"AsaTypeId\": 2,\n      \"A\n\n ```\n\n### **PaymentTransactionUpdate**\n\n**Description**: Provides updated Payment transactions status\n\n**Trigger**: When Payment transactions status changed.\n\n**Email Notification Available**: Yes\n\n**Payload**:\n\n```\n[{\n        \"PaymentStatus\":\"Success\",\n        \"PaymentTransactionInfo\":\n            {\"BillingTransactionCode\":1384901326,\n            \"AsaConsumerCode\":875480458,\n            \"AsaFintechCode\":12345678,\"\n            BillingDetailCode\":808829842,\n            \"PaymentType\":\"ACH\",\n            \"BankAccountNumberLast4\":\"5569\",\n            \"BankName\":\"MXBank\",\n            \"CardType\":null,\n            \"CardNumberLast4\":null,\n            \"Amount\":1.02,\n            \"ResponseCode\":\"Success\",\n            \"ResponseMessage\":\"\",\n            \"TransactionPostDate\":\"2024-06-28T15:06:55.9893886Z\",\n            \"Status\":\"Approve\",\n            \"BillingTransactionGuid\":\"112d5ce0-f5d6-4c6e-bc45-236289827c22\",\n            \"Description\":\"Execute recurring payment of 1.02 amount.\",\n            \"EffectiveTransactionDate\":\"2024-06-28T15:06:55.9893888Z\",\n            \"TransactionMethod\":\"Capture\",\n            \"IsRecurring\":true\n            }\n    }\n    ]\n\n ```\n\n### **InvoicePaymentSucceed**\n\n**Description:** Notifies that a consumer’s invoice has been successfully paid.  \n**Trigger:** When an invoice payment is completed successfully.  \n**Email Notification Available:** Yes  \n**Payload:**\n\n**Plain Text**\n\n```\njsonCopyEdit\"Data\": [\n  {\n    \"$type\": \"invoicePaymentSucceed\",\n    \"InvoiceId\": \"INV-123456\",\n    \"AsaConsumerCode\": 875480458,\n    \"AmountPaid\": 150.00,\n    \"PaymentDate\": \"2024-06-28T15:06:55.9893886Z\",\n    \"PaymentMethod\": \"ACH\",\n    \"PaymentStatus\": \"Success\"\n  }\n]\n\n ```\n\n---\n\n### **InvoiceUpcoming**\n\n**Description:** Notifies that an invoice due date is approaching.  \n**Trigger:** A few days before an invoice is due.  \n**Email Notification Available:** Yes  \n**Payload:**\n\n**Plain Text**\n\n```\njsonCopyEdit\"Data\": [\n  {\n    \"$type\": \"invoiceUpcoming\",\n    \"InvoiceId\": \"INV-123457\",\n    \"AsaConsumerCode\": 875480458,\n    \"DueDate\": \"2024-07-05T00:00:00Z\",\n    \"AmountDue\": 150.00,\n    \"IsAutoPayEnabled\": true\n  }\n]\n\n ```\n\n---\n\n### **InvoicePaymentFailed**\n\n**Description:** Notifies that a consumer’s invoice payment attempt failed.  \n**Trigger:** When a payment attempt for an invoice fails.  \n**Email Notification Available:** Yes  \n**Payload:**\n\n**Plain Text**\n\n```\njsonCopyEdit\"Data\": [\n  {\n    \"$type\": \"invoicePaymentFailed\",\n    \"InvoiceId\": \"INV-123458\",\n    \"AsaConsumerCode\": 875480458,\n    \"AttemptedAmount\": 150.00,\n    \"FailureReason\": \"Insufficient Funds\",\n    \"PaymentDate\": \"2024-06-28T15:06:55.9893886Z\",\n    \"PaymentMethod\": \"ACH\"\n  }\n]\n\n ```\n\n---\n\n### **InvoicePaymentActionRequired**\n\n**Description:** Notifies that manual action is required for a pending or failed invoice payment.  \n**Trigger:** When the system requires consumer or Fintech intervention to complete an invoice payment.  \n**Email Notification Available:** Yes  \n**Payload:**\n\n**Plain Text**\n\n```\njsonCopyEdit\"Data\": [\n  {\n    \"$type\": \"invoicePaymentActionRequired\",\n    \"InvoiceId\": \"INV-123459\",\n    \"AsaConsumerCode\": 875480458,\n    \"RequiredAction\": \"Update Payment Method\",\n    \"Reason\": \"Previous method expired\",\n    \"DueDate\": \"2024-07-01T00:00:00Z\",\n    \"AmountDue\": 150.00\n  }\n]\n\n ```\n\n---\n\n## Security Best Practices for Webhooks\n\n1. **HMAC-SHA256 Signatures**: Use HMAC-SHA256 signatures to verify the authenticity of webhook requests.\n    \n2. **Timestamp Validation**: Validate the `X-ASA-Timestamp` to ensure the request is recent and prevent replay attacks.\n    \n3. **IP Whitelisting**: Allow requests only from known ASA IP addresses.\n    \n4. **Regular Audits**: Conduct regular security audits and vulnerability assessments.\n    \n5. **Incident Response Plan**: Have a plan in place to respond to data breaches or security incidents involving PII.\n    \n\n---\n\n# Account Types\n\nApi is available to lookup Tansaction Categoris as defined in ASA system [here](https://docs.asavault.com/#fba5b04d-64ad-48c5-b632-dba79ee03410).\n\nBelow are the Transaction Categories as defined in ASA System:\n\n| **Account Type** | **Account Subtype** | **Category** | **Attribute 1** | **Attribute 2** | **Attribute 3** |\n| --- | --- | --- | --- | --- | --- |\n| Bank | Savings | Asset |  |  |  |\n| Current - Remove | NA | NA |  |  |  |\n| Bank | Checking | Asset |  |  |  |\n| Investments | IRA | Asset |  |  |  |\n| Investments | Cash | Asset |  |  |  |\n| Investments | Other | Asset |  |  |  |\n| Loan | Investment | Debt |  |  |  |\n| Loan | Vehicle | Debt |  |  |  |\n| Loan | Property | Debt |  |  |  |\n| Loan | HELOC | Debt |  |  |  |\n| Credit | Line of Credit | Debt |  |  |  |\n| Credit | Credit Card | Debt |  |  |  |\n| Vehicle | Auto | Asset | Year | Make | Model |\n| Vehicle | Boat | Asset | Year | Make | Model |\n| Vehicle | Plane | Asset | Year | Make | Model |\n| Vehicle | RV | Asset | Year | Make | Model |\n| Vehicle | Motorcycle | Asset | Year | Make | Model |\n| Vehicle | ATV | Asset | Year | Make | Model |\n| Vehicle | Other | Asset | Year | Make | Model |\n| Real Estate | Residential | Asset | Property Name | Property Address |  |\n| Real Estate | Commercial | Asset | Property Name | Property Address |  |\n| Real Estate | Land | Asset | Property Name | Property Address |  |\n| Real Estate | Other | Asset | Property Name | Property Address |  |\n| Stocks Bonds | Stock | Asset | Stock Name | Stock Symbol | Number of shares |\n| Stocks Bonds | Bond | Asset | Bond Name | Bond Symbol | Number of Bonds |\n| Investments | Crypto | Asset | Crypto Name | Crypto Symbol | Number of shares |\n| Jewelry | Jewelry | Asset | Jewelry Name |  |  |\n| Precious Metal | Gold | Asset | Precious Metal Name | Weight |  |\n| Precious Metal | Silver | Asset | Precious Metal Name | Weight |  |\n| Precious Metal | Platinum | Asset | Precious Metal Name | Weight |  |\n| Precious Metal | Bullion | Asset | Precious Metal Name | Weight |  |\n| Precious Metal | Coin | Asset | Precious Metal Name | Weight |  |\n| Precious Metal | Other | Asset | Precious Metal Name | Weight |  |\n\n---\n\n# Transaction Categories\n\nAPI is available to lookup Tansaction Categoris as defined in ASA system [here](https://docs.asavault.com/#74cb630d-9a93-44af-b3ac-fa62b95e92d3).\n\nBelow are the Transaction Categories as defined in ASA System:\n\n| **Sr No.** | Parent Category | Category Name |\n| --- | --- | --- |\n| 1 | Auto & Transport | Auto & Transport |\n| 2 | Auto & Transport | Auto Insurance |\n| 3 | Auto & Transport | Auto Payment |\n| 4 | Auto & Transport | Gas |\n| 5 | Auto & Transport | Parking |\n| 6 | Auto & Transport | Public Transportation |\n| 7 | Auto & Transport | Service & Parts |\n| 8 | Bills & Utilities | Television |\n| 9 | Bills & Utilities | Utilities |\n| 10 | Bills & Utilities | Fraud Protection |\n| 11 | Bills & Utilities | Home Phone |\n| 12 | Bills & Utilities | Hosting |\n| 13 | Bills & Utilities | Internet |\n| 14 | Bills & Utilities | Mobile Phone |\n| 15 | Bills & Utilities | Bills & Utilities |\n| 16 | Bills & Utilities | Domain Names |\n| 17 | Business Services | Business Services |\n| 18 | Business Services | Advertising |\n| 19 | Business Services | Legal |\n| 20 | Business Services | Shipping |\n| 21 | Business Services | Office Supplies |\n| 22 | Business Services | Printing |\n| 23 | Education | Student Loan |\n| 24 | Education | Tution |\n| 25 | Education | Books & Supplies |\n| 26 | Education | Education |\n| 27 | Entertainment | Entertainment |\n| 28 | Entertainment | Amusement |\n| 29 | Entertainment | Arts |\n| 30 | Entertainment | Movies & DVDs |\n| 31 | Entertainment | Music |\n| 32 | Entertainment | Newspapers & Magazines |\n| 33 | Fees & Charges | Late Fee |\n| 34 | Fees & Charges | ATM Fee |\n| 35 | Fees & Charges | Banking Fee |\n| 36 | Fees & Charges | Fees & Charges |\n| 37 | Fees & Charges | Finance Charge |\n| 38 | Fees & Charges | Trade Commissions |\n| 39 | Fees & Charges | Service Fee |\n| 40 | Financial | Financial |\n| 41 | Financial | Financial Advisor |\n| 42 | Financial | Life Insurance |\n| 43 | Food & Dining | Fast Food |\n| 44 | Food & Dining | Groceries |\n| 45 | Food & Dining | Food & Dining |\n| 46 | Food & Dining | Coffee Shops |\n| 47 | Food & Dining | Alcohol & Bars |\n| 48 | Food & Dining | Restaurants |\n| 49 | Gifts & Donations | Charity |\n| 50 | Gifts & Donations | Gift |\n| 51 | Gifts & Donations | Gifts & Donations |\n| 52 | Health & Fitness | Gym |\n| 53 | Health & Fitness | Health & Fitness |\n| 54 | Health & Fitness | Health Insurance |\n| 55 | Health & Fitness | Doctor |\n| 56 | Health & Fitness | Dentist |\n| 57 | Health & Fitness | Eyecare |\n| 58 | Health & Fitness | Pharmacy |\n| 59 | Health & Fitness | Sports |\n| 60 | Home | Lawn & Garden |\n| 61 | Home | Mortgage & Rent |\n| 62 | Home | Home |\n| 63 | Home | Home Improvement |\n| 64 | Home | Home Insurance |\n| 65 | Home | Home Services |\n| 66 | Home | Home Supplies |\n| 67 | Home | Furnishings |\n| 68 | Income | Income |\n| 69 | Income | Interest Income |\n| 70 | Income | Bonus |\n| 71 | Income | Paycheck |\n| 72 | Income | Returned Purchase |\n| 73 | Income | Reimbursement |\n| 74 | Income | Rental Income |\n| 75 | Investments | Sell |\n| 76 | Investments | Withdrawal |\n| 77 | Investments | Buy |\n| 78 | Investments | Deposit |\n| 79 | Investments | Divident & Cap Gains |\n| 80 | Investments | Investments |\n| 81 | Kids | Kids |\n| 82 | Kids | Kids Activities |\n| 83 | Kids | Child Support |\n| 84 | Kids | Allowance |\n| 85 | Kids | Baby Supplies |\n| 86 | Kids | Babysitter & Daycare |\n| 87 | Kids | Toys |\n| 88 | Personal Care | Spa & Massage |\n| 89 | Personal Care | Personal Care |\n| 90 | Personal Care | Laundry |\n| 91 | Personal Care | Hair |\n| 92 | Pets | Pet Food & Supplies |\n| 93 | Pets | Pet Grooming |\n| 94 | Pets | Pets |\n| 95 | Pets | Veterinary |\n| 96 | Shopping | Sporting Goods |\n| 97 | Shopping | Shopping |\n| 98 | Shopping | Hobbies |\n| 99 | Shopping | Books |\n| 100 | Shopping | Clothing |\n| 101 | Shopping | Electronics & Software |\n| 102 | Taxes | Federal Tax |\n| 103 | Taxes | Local Tax |\n| 104 | Taxes | State Tax |\n| 105 | Taxes | Taxes |\n| 106 | Taxes | Property Tax |\n| 107 | Taxes | Sales Tax |\n| 108 | Transfer | Transfer |\n| 109 | Transfer | Transfer for Cash Spending |\n| 110 | Transfer | Transfer In |\n| 111 | Transfer | Transfer Out |\n| 112 | Transfer | Mortgage Payment |\n| 113 | Transfer | Credit Card Payment |\n| 114 | Travel | Air Travel |\n| 115 | Travel | Hotel |\n| 116 | Travel | Travel |\n| 117 | Travel | Rental Car & Taxi |\n| 118 | Travel | Vacation |\n| 119 | Uncategorized | Uncategorized |\n| 120 | Uncategorized | Cash |\n| 121 | Uncategorized | Check |\n\n---\n\n# Sample Code\n\nFor Sample Code, please check out our GitHub Repository: [https://github.com/ASAFINANCIAL](https://github.com/ASAFINANCIAL)\n\n---\n\n# **ASA MFA API (MFA-as-a-Service)**\n\n**Multi-Factor Authentication (MFA) enables providers to verify consumer logins using more than just a username and password. The most common method involves sending a numeric OTP (5-10 digit) to the consumer's phone or email linked to their account profile.**\n\n**Key Benefits:**\n\n- **Enhanced security for user authentication.**\n    \n- **Compliance with financial industry standards.**\n    \n- **Reduced risk of unauthorized access.**\n    \n\n**Key Features:**\n\n- **OTP (One-Time Passcode): A single-use passcode provided to the user.**\n    \n- **TOTP (Time-Based OTP): An OTP that expires within a set time (e.g., 30 seconds to 10 minutes).**\n    \n- **Seamless integration with existing applications.**\n    \n\n## **Asa MFA API Details**\n\n**ASA provides an MFA authentication layer via REST APIs for Sharetec to verify their users. Once authenticated, ASA provides an authentication token that can be validated with ASA.**\n\n**Supported Applications:**\n\n- **Mobile Applications**\n    \n- **Web Applications**\n    \n- **Sharetec Backend API**\n    \n- **Sharetec Support System**\n    \n\n---\n\n# Errors\n\nWhen an error occurs, the API will respond with an appropriate HTTP status code and an error message in the response body. The response will also include a unique error code to help diagnose and resolve the issue.\n\n### <u>Error Response Format</u>\n\n- **HTTP Status Code:** Indicates the type of error. Common status codes include:\n    \n\n| **HTTPS Status Code** | **Description** |\n| --- | --- |\n| 400 Bad Request | The request could not be understood or was missing required parameters. |\n| 401 Unauthorized | Authentication credentials are missing or invalid. |\n| 403 Forbidden | The request is understood but refuses to authorize it. |\n| 404 Not Found | The requested resource could not be found. |\n| 500 Internal Server Error | An error occurred on the server. |\n\n- <u>Example Error Response</u>\n    \n\n```\n400 - Bad Request\n{\n    \"status\": 400,\n    \"message\": \"Validation error occurred.\",\n    \"reference\": [\n        {\n            \"requestId\": \"ca5dab42-75f3-47d1-8a9f-9e5646ee43d1\",\n            \"timeStamp\": \"2024-07-23T14:33:30.7978514+00:00\"\n        }\n    ],\n    \"version\": \"1.07\",\n    \"data\": [\n        {\n            \"field\": \"X-ASA-FintechCode\",\n            \"message\": \"ASA Fintech Code must be greater than Zero\"\n        }\n    ]\n}\n\n ```\n\n### <u>Troubleshooting and Resolution</u>\n\n1. **Check Error Code:** Review the error code to understand the type of issue.\n    \n2. **Review Error Message:** The error message will provide specific details about the problem.\n    \n3. **Consult API Documentation:** Refer to the API documentation to ensure that all required parameters are included and correctly formatted.\n    \n4. **Contact Support:** If you need further assistance, provide the error code and message when contacting our support team to help expedite the resolution process.\n    \n\n---\n\n# **Versioning**\n\nASA OpenAPI is continually evolving to better meet our customers' needs. Our endpoint upgrade strategy ensures backward compatibility as long as the version number remains unchanged. This means that existing requests will continue to function, and the core functionality and responses will remain consistent. However, some exceptions may apply, such as when security requirements are tightened.\n\nWhen backwards-incompatible changes are made to the API, we release a new, dated version.\n\n**Current Version**: The current version is 1.08.\n\n### Versioning Strategy\n\n\\- <u>Backward-Compatible Changes </u> (e.g., new fields, minor improvements) are rolled out within the same major version  \n(e.g., 1.08 -> 1.09).  \n\\- <u>Breaking Changes </u> (e.g., renamed fields, structural overhauls) result in a new version release.  \n\\- Security Enhancements may be enforced even within the same version to maintain compliance.\n\n**Current Version: v1.09**\n\nv1.09 is the latest and most comprehensive release of ASA OpenAPI, expanding on previous versions with modular enhancements, endpoint improvements, and new services.\n\n### Changelog Comparison\n\nv1.08 - Schema & Field Standardization  \nFocus: Field naming consistency and updated responses for clarity and alignment across APIs.\n\nChanges to Existing APIs:\n\n1. POST /Transactions & Webhooks:  \n    \\- account_id -> asaFiAccountCode  \n    \\- account_typeid -> accountTypeId  \n    \\- account_type -> accountType\n    \n2. Transfer Endpoints (GET, POST, DELETE, PUT):  \n    \\- accountNumber -> asaFiAccountCode\n    \n3. ASA OpenAPI Versioning Overview  \n    \\- accountFI -> asaFiCode\n    \n4. POST /Transfers/TransferLink/Create:  \n    \\- Request and response parameters:  \n    \\- accountNumber -> asaFiAccountCode  \n    \\- accountFI -> asaFiCode\n    \n5. GET /Balance/Accounts:  \n    \\- New fields added:  \n    \\- asaFiCode  \n    \\- fiName\n    \n\n### v1.09 - Expanded Modules & Endpoint Coverage\n\nFocus: Feature expansion, improved authentication, and broader support for financial operations.\n\n<u><b><br>New/Updated API Modules:</b></u>  \n\\- LoginWithASA Authentication  \n\\- Balance  \n\\- Consumer  \n\\- Dynamic Links  \n\\- Subscriptions  \n\\- Institutions  \n\\- Notification  \n\\- Account Type  \n\\- Transaction Category  \n\\- Transactions  \n\\- Payments  \n\\- Holdings  \n\\- Transfers  \n\\- HealthCheck  \n\\- Callbacks  \n\\- AsaVerify","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"37017083","collectionId":"abcf64af-5d83-47c4-9c25-a0fedda3a0ac","publishedId":"2sAYBViXL4","public":true,"publicUrl":"https://docs.asavault.com","privateUrl":"https://go.postman.co/documentation/37017083-abcf64af-5d83-47c4-9c25-a0fedda3a0ac","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.1","publishDate":"2024-11-27T06:48:28.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[{"name":"OpenAPI Sandbox Env","id":"eceda262-95be-4818-8a78-1cb76cee46d8","owner":"25760102","values":[{"key":"Note","value":"User Collection variables","enabled":true,"type":"default"},{"key":"host_url_openapi","value":"https://openapiuat.asacore.com","enabled":true,"type":"default"},{"key":"subsciptionKeyOpenapi","value":"","enabled":true,"type":"default"},{"key":"asaFintechCode","value":"","enabled":true,"type":"default"},{"key":"asaConsumerCode","value":"","enabled":true,"type":"default"},{"key":"applicationId","value":"","enabled":true,"type":"default"},{"key":"authorizationKey","value":"","enabled":true,"type":"default"},{"key":"accountNumber","value":"","enabled":true,"type":"default"},{"key":"consumerEmail","value":"","enabled":true,"type":"default"},{"key":"consumerPassword","value":"","enabled":true,"type":"default"},{"key":"redirectFailureUrl","value":"","enabled":true,"type":"default"},{"key":"redirectUrl","value":"","enabled":true,"type":"default"},{"key":"tokenLoginWithASA","value":"","enabled":true,"type":"any"},{"key":"requestId","value":"","enabled":true,"type":"any"},{"key":"tokenRefresh","value":"","enabled":true,"type":"default"},{"key":"accountNumberList","value":"","enabled":true,"type":"any"},{"key":"fromAccountNickname","value":"","enabled":true,"type":"any"},{"key":"fromAccountNumber","value":"","enabled":true,"type":"any"},{"key":"fromAccountLast4","value":"","enabled":true,"type":"any"},{"key":"fromAccountType","value":"","enabled":true,"type":"any"},{"key":"fromAccountFi","value":"","enabled":true,"type":"any"},{"key":"toAccountNickname","value":"","enabled":true,"type":"any"},{"key":"toAccountNumber","value":"","enabled":true,"type":"any"},{"key":"toAccountLast4","value":"","enabled":true,"type":"any"},{"key":"toAccountType","value":"","enabled":true,"type":"any"},{"key":"toAccountFi","value":"","enabled":true,"type":"any"},{"key":"linkCode","value":"","enabled":true,"type":"any"},{"key":"virtualEmail","value":"","enabled":true,"type":"any"},{"key":"confirmationNumber","value":"","enabled":true,"type":"any"},{"key":"senderMessageId","value":"","enabled":true,"type":"any"},{"key":"messageId","value":"","enabled":true,"type":"any"},{"key":"X-ASA-ApiVersion","value":"","enabled":true,"type":"default"}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/768118b36f06c94b0306958b980558e6915839447e859fe16906e29d683976f0","favicon":"https://asavault.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"OpenAPI Sandbox Env","value":"25760102-eceda262-95be-4818-8a78-1cb76cee46d8"}],"canonicalUrl":"https://docs.asavault.com/view/metadata/2sAYBViXL4"}