### Basic API Key Authentication Header Example Source: https://developers.anduintransact.com/docs/authentication-copy This example shows how to include your API key in the 'Authorization' header for REST or GraphQL requests. Ensure your API key is kept secure and not exposed in public repositories. ```text --header 'authorization: anduin_api_key_abadfad1ahf23rhioadfh' ``` -------------------------------- ### Curl Request: Basic Authentication Source: https://developers.anduintransact.com/docs/authentication-copy Example of a curl request using basic authentication with an API key. This demonstrates how to set the 'accept' and 'authorization' headers for accessing API endpoints. ```bash curl --request GET \ --url https://api.anduin.app/api/v1/fundsub/fund-id \ --header 'accept: application/json' \ --header 'authorization: anduin_api_key_abadfad1ahf23rhioadfh' ``` -------------------------------- ### Plain Text Email Template Example Source: https://developers.anduintransact.com/docs/email-template A basic plain text email template for investor invitations, demonstrating the use of a placeholder for the investor's name. ```text Dear [Name], You're invited to complete your Fund Subscription. ``` -------------------------------- ### HTML Email Body Example Source: https://developers.anduintransact.com/docs/email-template An example of an HTML email body that can be used for investor invitations. It includes basic paragraph formatting and uses a placeholder for the investor's name. ```html
Dear [Name],
You're invited to complete your Fund Subcription for Acme Corp on Anduin.
Anduin's smart form will guide you through your Fund Subscription, allowing you to share with your counsel or other team members, and e-sign your documents.
Once completed, your Fund Subscription, including any required tax forms, can be submitted directly to Acme Corp and their counsel.
``` -------------------------------- ### Curl Request: Advanced Authentication with Client Certificate Source: https://developers.anduintransact.com/docs/authentication-copy Example of a curl request using advanced authentication with a client certificate and private key. This shows how to specify the certificate and key files alongside the API key. ```bash curl --request GET \ --url https://s-api.anduin.app/api/v1/fundsub/fund-id \ --header 'accept: application/json' \ --header 'authorization: anduin_api_key_abadfad1ahf23rhioadfh' \ --cert client.pem \ --key client1.key ``` -------------------------------- ### Asynchronous API Call Example Source: https://developers.anduintransact.com/docs/synchronous-vs-asynchronous Demonstrates a typical response when an asynchronous API call is successfully accepted for processing. ```APIDOC ## POST /api/v1/fundsub/async/bulk/orders ### Description Initiates a bulk invitation of investors to a fund. This is an asynchronous operation. ### Method POST ### Endpoint /api/v1/fundsub/async/bulk/orders ### Parameters #### Request Body - **investorEmails** (array[string]) - Required - A list of investor email addresses to invite. - **fundId** (string) - Required - The unique identifier of the fund. ### Request Example ```json { "investorEmails": ["investor1@example.com", "investor2@example.com"], "fundId": "fund123" } ``` ### Response #### Success Response (202 Accepted) - **requestId** (string) - A unique identifier for the asynchronous request. - **requestStatus** (string) - The initial status of the request, typically 'PENDING'. #### Response Example ```json { "requestId": "req1nsf6k39j43kgkehhfj", "requestStatus": "PENDING" } ``` ``` -------------------------------- ### Create AnduinFSOrderManagerTest Apex Test Class Source: https://developers.anduintransact.com/docs/appendix-salesforce-implementation This Apex test class provides unit tests for the `AnduinFSOrderManager`. It includes tests for the `invite` method and simulates scenarios with valid and invalid named credentials to ensure proper handling of HTTP callouts and exceptions. It utilizes a mock HTTP response generator. ```Apex @isTest public class AnduinFSOrderManagerTest { @isTest static void testInviteMethod() { ListDear [Name],
You're invited to complete your Fund Subcription for Acme Corp on Anduin.
", "cta": "Complete Fund Subscription" } ``` ``` -------------------------------- ### Get Webhook Source: https://developers.anduintransact.com/docs/to-be-deprecated-legacy-webhook Retrieve the details of a specific webhook, including its active status. ```APIDOC ## Get Webhook ### Description Retrieves the details of a specific webhook endpoint. ### Method GET ### Endpoint `/reference/getwebhook` ### Parameters #### Path Parameters - **webhookId** (string) - Required - The ID of the webhook to retrieve. ### Response #### Success Response (200) - **id** (string) - The unique identifier for the webhook. - **url** (string) - The configured webhook URL. - **events** (array of strings) - The list of subscribed events. - **fundSubscriptions** (array of strings) - The list of subscribed fund subscriptions. - **isActive** (boolean) - Indicates if the webhook is currently active. #### Response Example ```json { "id": "whk_a1b2c3d4e5f6", "url": "https:\/\/your-webhook-receiver.com\/events", "events": ["subscription.created", "subscription.updated"], "fundSubscriptions": ["fund-abc-123", "fund-xyz-789"], "isActive": true } ``` ``` -------------------------------- ### Get Snowflake Identifier URL Source: https://developers.anduintransact.com/docs/prepare-snowflake-credentials This SQL statement constructs the Snowflake Identifier URL by combining the organization name and account name. This URL is used in conjunction with the account locator to form the complete Snowflake URL for integration. ```sql SELECT CURRENT_ORGANIZATION_NAME() || '-' || CURRENT_ACCOUNT_NAME(); ``` -------------------------------- ### Upload Binary File to Amazon S3 using Node.js Source: https://developers.anduintransact.com/docs/document-upload This Node.js function uploads a binary file to a specified Amazon S3 upload URL using a PUT request. It reads the file from the given path and sends its content as the request body. Ensure you have `node-fetch` installed. Errors during the process are logged to the console. ```javascript import fs from "fs"; import fetch from "node-fetch"; async function sendBinaryFile(uploadUrl, filePath) { try { const binaryFile = fs.readFileSync(filePath); const response = await fetch(uploadUrl, { method: 'PUT', body: binaryFile }); if (response.ok) { console.log('File uploaded successfully'); } else { console.error('File upload failed:', response.statusText); } } catch (error) { console.error('Error:', error); } } ``` -------------------------------- ### Landing Page Grid Layout and Styling (HTML/CSS) Source: https://developers.anduintransact.com/docs/dropbox This snippet provides HTML structure and CSS for a responsive landing page with a custom grid layout. It includes styling for individual columns, hover effects, and navigation elements. The design adapts to different screen sizes. ```html ``` -------------------------------- ### Custom Landing Page and Footer Styling (HTML, CSS) Source: https://developers.anduintransact.com/docs/affinity-integration This snippet contains HTML and CSS code to create a custom landing page with a grid layout and a styled footer. It includes responsive design elements for various screen sizes and hover effects for interactive components. No external dependencies are required. ```html ``` -------------------------------- ### FundSub Webhook Payload Example Source: https://developers.anduintransact.com/docs/custom-column-updated An example of the JSON payload received when a custom column's value is updated. It includes event details, fund and order IDs, column information, and the old and new values. The optional oldValue and newValue fields will not be present if their value is null. ```json { "event": "fundsub.order.custom_column.value.updated", "createdAt": "2025-05-20T08:36:55.380498Z", "fundId": "txnyw4o3o1pppk02.fsb58ew", "orderId": "txnyw4o3o1pppk02.fsb58ew.lpp49ly37m", "columnName": "Custom amount", "columnId": "txnyw4o3o1pppk02.fsb58ew.cdcer3g32p", "dataType": "CURRENCY", "oldValue": { "currency": "GBP", "amount": 1000000 }, "newValue": { "currency": "GBP", "amount": 2000000 } } ``` -------------------------------- ### Get Orders Form Data API with MiniForm Data Source: https://developers.anduintransact.com/docs/retrieve-data-from-miniform This snippet demonstrates how to use the Get Orders Form Data API to include data from mini-forms, such as tax documents. The `includeTaxFormData` parameter set to `true` is crucial for retrieving this supplementary information. The response structure includes a `supplementalFormData` array for mini-form specific data. ```json { "orders": [ { "orderId": "txnolgzkkx2ww4zl.fsb76gk.lppop31xno", "formData": { "asa_aba_wireinstructionsto_wireinfo": "242333333", "asa_accountname_wireinstructionsto_wireinfo": "John Doe", "asa_accountnumber_wireinstructionsto_wireinfo": "242333333" }, "supplementalFormData": [ { "name": "W-9 2024", "formData": { "asa_fullname_investorname_generalinfo": "John Doe", "asa_entityorindiname_taxform": "John Doe Vehicle ", "asa_numberandstreet_address_taxform": "88 Washington street", "asa_state_address_taxform": "WA", "asa_country_address_taxform": "US" } } ] } ] } ``` -------------------------------- ### CSS Styling for Landing Page and Footer Source: https://developers.anduintransact.com/docs/box-integration This CSS code defines the styling for a responsive landing page and footer. It includes styles for grid layout, columns, navigation, and copyright information, with media queries for smaller screens. No external dependencies are required, and it directly affects the visual presentation of the web page. ```css body { margin: 0; padding: 0; box-sizing: border-box; } /* Basic styling for the grid layout */ .custom-landing-page { margin: 48px 0; display: grid; grid-template-columns: 1fr 1fr; gap: 24px; max-width: 1200px; margin-left: auto; margin-right: auto; padding: 0 24px; } /* Style for each box - adjusted for even spacing */ .custom-column { padding: 20px 28px; border: 1px solid rgba(56, 66, 72, 0.2); border-radius: 8px; text-align: center; transition: all 0.3s ease; text-decoration: none; color: inherit; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; overflow: hidden; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); min-height: 80px; } /* Hover state */ .custom-column:hover { border-color: #1075DC; color: #1075DC; background-color: rgba(16, 117, 220, 0.05); transform: translateY(-3px); box-shadow: 0 10px 20px rgba(16, 117, 220, 0.1); } /* Navigation alignment fix */ .nav-container { max-width: 1200px; margin-left: auto; margin-right: auto; padding: 0 24px; } /* Improved Footer styling */ footer { max-width: 1200px; margin: 48px auto 0; padding: 0 24px; } .footer-content { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: 24px; } .column { flex: 1; min-width: 160px; max-width: 200px; margin-bottom: 24px; } .title { font-weight: 600; color: #637288; font-size: 12px; margin-bottom: 16px; text-transform: uppercase; } .logo-column { flex: 1; min-width: 160px; } .logo { max-width: 125px; margin-bottom: 16px; } .links { list-style: none; padding: 0; margin: 0; } .column .links a { color: #4f5a66; text-decoration: none; display: block; padding: 4px 0; } .column .links a:hover { color: #1075DC; } .links li { margin-bottom: 8px; } .copyright { width: 100%; text-align: center; font-size: 12px; color: #637288; padding: 24px 0; border-top: 1px solid rgba(56, 66, 72, 0.1); margin-top: 16px; } .footer-divider { width: 100%; height: 1px; background-color: rgba(56, 66, 72, 0.1); margin: 40px 0; } @media (max-width: 768px) { .custom-landing-page { grid-template-columns: 1fr; } .custom-column { width: 100%; margin-right: 0; } .footer-content { flex-direction: column; align-items: flex-start; } .column, .logo-column { width: 100%; max-width: 100%; margin-right: 0; } } /* Title styling - adjusted margins for better balance */ .custom-column h3 { margin-top: 0; margin-bottom: 10px; transition: all 0.3s ease; font-size: 15.3px; /* 85% of 18px */ line-height: 1.3; } /* Paragraph styling - adjusted for better spacing */ .custom-column p { margin: 0; padding: 0; transition: all 0.3s ease; line-height: 1.5; max-width: 90%; /* Keep text from getting too wide */ font-size: 85%; /* Reduce to 85% of the default font size */ } /* Visual cue position adjustment */ .custom-column::after { bottom: 10px; right: 10px; } /* Add a visual cue for clickability */ .custom-column::after { content: ''; position: absolute; bottom: 10px; right: 10px; width: 16px; height: 16px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' stroke='%23cccccc' fill='none' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 7l10 10'/%3E%3Cpath d='M17 7v10h-10'/%3E%3C/svg%3E"); background-size: contain; background-repeat: no-repeat; opacity: 0.4; transition: all 0.3s ease; } .custom-column:hover::after { opacity: 1; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' stroke='%231075DC' fill='none' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 7l10 10'/%3E%3Cpath d='M17 7v10h-10'/%3E%3C/svg%3E"); transform: translate(-2px, 2px); } ``` -------------------------------- ### HTML Structure for Explore Further Item Source: https://developers.anduintransact.com/docs/affinity-integration Demonstrates the HTML structure for an item within the 'Explore further' grid. It uses an anchor tag with a custom class and includes an H3 for the title and a paragraph for a brief description. ```html ``` -------------------------------- ### Create Multiple Orders (Asynchronous) Source: https://developers.anduintransact.com/docs/import-export-form-data-using-templates Create multiple investor orders asynchronously using a specified template for pre-filled data. ```APIDOC ## POST /api/v1/fundsub/{fund-Id}/async/bulk/orders ### Description Creates multiple investor orders asynchronously with pre-filled data using a specified template ID and raw JSON data. A call can contain a maximum of 200 orders. ### Method POST ### Endpoint `/api/v1/fundsub/{fund-Id}/async/bulk/orders` ### Parameters #### Path Parameters - **fund-Id** (string) - Required - The ID of the fund. #### Request Body - **templateId** (string) - Required - The ID of the template to use. - **orders** (array) - Required - An array of order objects. Each object should contain: - **data** (object) - Raw data in JSON format {key, value}. Keys must match template field names. - **orderType** (string) - Optional - Specifies the order type ('Normal' or 'Offline'). ### Request Example ```json { "templateId": "tpl_12345", "orders": [ { "data": { "investorName": "John Doe", "investmentAmount": 10000 }, "orderType": "Normal" }, { "data": { "investorName": "Jane Smith", "investmentAmount": 5000 }, "orderType": "Offline" } ] } ``` ### Response #### Success Response (200) - **batchId** (string) - The ID for the bulk order creation batch. - **status** (string) - The status of the asynchronous operation. #### Response Example ```json { "batchId": "batch_xyz789", "status": "Processing" } ``` ``` -------------------------------- ### Create Single Order Source: https://developers.anduintransact.com/docs/import-export-form-data-using-templates Create a single investor order using a specified template for pre-filled data. ```APIDOC ## POST /api/v1/fundsub/{fund-Id}/orders ### Description Creates a single investor order with pre-filled data using a specified template ID and raw JSON data. ### Method POST ### Endpoint `/api/v1/fundsub/{fund-Id}/orders` ### Parameters #### Path Parameters - **fund-Id** (string) - Required - The ID of the fund. #### Request Body - **templateId** (string) - Required - The ID of the template to use. - **data** (object) - Required - Raw data in JSON format {key, value}. Keys must match template field names. - **orderType** (string) - Optional - Specifies the order type ('Normal' or 'Offline'). ### Request Example ```json { "templateId": "tpl_12345", "data": { "investorName": "John Doe", "investmentAmount": 10000 }, "orderType": "Normal" } ``` ### Response #### Success Response (200) - **orderId** (string) - The ID of the created order. - **status** (string) - The status of the order creation. #### Response Example ```json { "orderId": "ord_abcde", "status": "Created" } ``` ```