### 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() { List requests = new List(); AnduinFSOrderManager.OrderRequest req1 = new AnduinFSOrderManager.OrderRequest(); req1.orderId = '12345'; req1.namedCredentialName = 'Test_Named_Credential'; requests.add(req1); AnduinFSOrderManager.OrderRequest req2 = new AnduinFSOrderManager.OrderRequest(); req2.orderId = '67890'; req2.namedCredentialName = 'Test_Named_Credential'; requests.add(req2); Test.setMock(HttpCalloutMock.class, new MockHttpResponseGenerator()); Test.startTest(); AnduinFSOrderManager.invite(requests); Test.stopTest(); } @isTest static void testSendInvitationAsync_WithInvalidNamedCredential() { List requests = new List(); AnduinFSOrderManager.OrderRequest req = new AnduinFSOrderManager.OrderRequest(); req.orderId = '12345'; req.namedCredentialName = 'Invalid_Named_Credential'; // Simulating an invalid credential requests.add(req); Test.setMock(HttpCalloutMock.class, new MockHttpResponseGenerator(500, 'Error')); Test.startTest(); try { AnduinFSOrderManager.invite(requests); } catch (Exception ex) { System.assert(ex.getMessage().contains('Error'), 'Exception should be thrown for invalid named credential'); } Test.stopTest(); } private class MockHttpResponseGenerator implements HttpCalloutMock { private Integer statusCode; private String responseBody; public MockHttpResponseGenerator() { this.statusCode = 200; // Default to success this.responseBody = '{"success": true}'; } public MockHttpResponseGenerator(Integer statusCode, String responseBody) { this.statusCode = statusCode; this.responseBody = responseBody; } public HttpResponse respond(HttpRequest req) { HttpResponse res = new HttpResponse(); res.setStatusCode(this.statusCode); res.setBody(this.responseBody); return res; } } } ``` -------------------------------- ### Create Anduin FS Order Manager Test Class Source: https://developers.anduintransact.com/docs/create-custom-flow-and-trigger-point-in-salesforce-copy-1 Provides the Apex test code for the `AnduinFSOrderManager` class. It includes a mock HTTP response generator to simulate callouts and a test method `testInviteMethod` to verify the `invite` method's functionality without making actual external calls. This ensures code coverage and validates the logic for handling requests and responses. ```apex @isTest private class AnduinDataRoomInvitationManagerTest { // Mock HTTP callout class private class MockHttpResponseGenerator implements HttpCalloutMock { public HTTPResponse respond(HTTPRequest req) { HttpResponse res = new HttpResponse(); res.setHeader('Content-Type', 'application/json'); res.setBody('{"message": "Success"}'); res.setStatusCode(200); return res; } } @isTest static void testInviteMethod() { // Register mock callout Test.setMock(HttpCalloutMock.class, new MockHttpResponseGenerator()); // Prepare input AnduinDataRoomInvitationManager.OrderRequest request = new AnduinDataRoomInvitationManager.OrderRequest(); request.dataId = 'ORD123'; request.namedCredentialName = 'My_Named_Credential'; request.dataRoomId = 'FUND456'; List requests = new List{request}; // Execute method Test.startTest(); AnduinDataRoomInvitationManager.invite(requests); Test.stopTest(); // Add assertions if you log or track the status // For now we check the code runs without exception System.assert(true, 'Callout executed successfully'); } } ``` -------------------------------- ### GraphQL Response for Fund SubFunds Source: https://developers.anduintransact.com/docs/getting-commitment-amounts-in-multi-fund-setup Example JSON response showing a list of subfunds for a given fund subscription. Each subfund object includes its ID, name, and currency, illustrating multi-currency support. ```json { "data": { "getFundSubscription": { "subFunds": [ { "id": "SUB-FUND-ID-I", "name": "Fund I", "currency": "USD" }, { "id": "SUB-FUND-ID-II", "name": "Fund II", "currency": "EUR" }, { "id": "SUB-FUND-ID-III", "name": "Fund III", "currency": "USD" } ] } } } ``` -------------------------------- ### Create Anduin FS Order Manager Apex Class Source: https://developers.anduintransact.com/docs/create-custom-flow-and-trigger-point-in-salesforce-copy-1 Provides the Apex code for the `AnduinFSOrderManager` class, which handles creating invitations in an Anduin Dataroom. It includes an inner class `OrderRequest` for input parameters and an `invite` method that calls a future method `sendInvitationAsync` to make an HTTP POST callout to a specified named credential. ```apex public with sharing class AnduinDataRoomInvitationManager { public class OrderRequest { @InvocableVariable(label='Data ID') public String dataID; @InvocableVariable(label='Named Credential Name') public String namedCredentialName; @InvocableVariable(label='Dataroom ID') public String dataRoomId; } @InvocableMethod(label='Create Anduin Invitation' description='Creates a Invitation Anduin Dataroom') public static void invite(List requests) { for (OrderRequest request : requests) { sendInvitationAsync(request.dataID, request.namedCredentialName, request.dataRoomId); } } @future(callout=true) private static void sendInvitationAsync(String dataID, String namedCredentialName, String dataRoomId) { try { // Retrieving Named Credential for secure API call String endpoint = 'callout:' + namedCredentialName; // Setup HTTP request HttpRequest req = new HttpRequest(); req.setEndpoint(endpoint); req.setMethod('POST'); req.setHeader('Content-Type', 'application/json'); req.setBody('{"order_id":"' + dataID + '", "fund_id":"' + dataRoomId + '"}'); // dataRoomId is passed dynamically // Send HTTP request Http http = new Http(); HttpResponse res = http.send(req); // Handle response if (res.getStatusCode() >= 200 && res.getStatusCode() < 300) { System.debug('Data created successfully: ' + res.getBody()); } else { System.debug('Error creating contact: ' + res.getStatusCode() + ' - ' + res.getBody()); } } catch (Exception e) { System.debug('Exception in sendInvitationAsync: ' + e.getMessage()); } } } ``` -------------------------------- ### Create AnduinFSOrderManager Apex Class Source: https://developers.anduintransact.com/docs/appendix-salesforce-implementation This Apex class handles the creation of subscription orders in Anduin Fund Subscription. It includes an inner class `OrderRequest` for request parameters and an `invite` method to process multiple requests asynchronously. It relies on a named credential for secure API calls. ```Apex public with sharing class AnduinFSOrderManager { public class OrderRequest { @InvocableVariable(label='Order ID') public String orderId; @InvocableVariable(label='Named Credential Name') public String namedCredentialName; @InvocableVariable(label='Fund ID') public String fundId; } @InvocableMethod(label='Create Anduin Order' description='Creates a subscription order in Anduin Fund Subscription') public static void invite(List requests) { for (OrderRequest request : requests) { sendInvitationAsync(request.orderId, request.namedCredentialName, request.fundId); } } @future(callout=true) private static void sendInvitationAsync(String orderId, String namedCredentialName, String fundId) { // Retrieving Named Credential for secure API call String endpoint = 'callout:' + namedCredentialName; // Setup HTTP request HttpRequest req = new HttpRequest(); req.setEndpoint(endpoint); req.setMethod('POST'); req.setHeader('Content-Type', 'application/json'); req.setBody('{"order_id":"' + orderId + '", "fund_id":"' + fundId + '"}'); // Send HTTP request Http http = new Http(); HttpResponse res = http.send(req); // Handle the response as needed } } ``` -------------------------------- ### Generate Private Key and CSR with OpenSSL Source: https://developers.anduintransact.com/docs/authentication-copy This command uses OpenSSL to generate a new private key and a Certificate Signing Request (CSR) file. The private key should be kept secure, and the CSR file is sent to Anduin for signing. ```bash openssl req -new -newkey rsa:2048 -nodes -keyout client1.key -out client1.csr ``` -------------------------------- ### Salesforce Apex Class: AnduinFSOrderManager Source: https://developers.anduintransact.com/docs/appendix-salesforce-implementation This Apex class provides an invokable method 'invite' to securely trigger the 'Create Orders in Anduin' flow. It utilizes pre-configured Named Credentials and External Credentials to pass the Salesforce record ID for order creation and pre-filling in Anduin. This ensures secure and automated order processing. ```apex public class AnduinFSOrderManager { @InvocableMethod public static void invite(List recordIds) { // Implementation to securely trigger the 'Create Orders in Anduin' flow // using Named Credential and External Credential. // Pass the Salesforce record ID (from recordIds[0]) for order creation. // Example: // NamedCredential nc = [SELECT Id, DeveloperName, Url FROM NamedCredential WHERE DeveloperName = '[FundName]']; // ExternalCredential ec = [SELECT Id, MasterLabel FROM ExternalCredential WHERE MasterLabel = 'Credential: [FundName]']; // HttpRequest req = new HttpRequest(); // req.setEndpoint(nc.Url); // req.setMethod('POST'); // req.setHeader('Api-Key', 'YOUR_API_KEY'); // This should be retrieved securely // req.setBody('{"recordId": "' + recordIds[0] + '"}'); // Http http = new Http(); // HttpResponse res = http.send(req); // Handle response... } } ``` -------------------------------- ### Get Snowflake Client Secret Source: https://developers.anduintransact.com/docs/prepare-snowflake-credentials This SQL query retrieves the client secret for a specified Snowflake OAuth integration. The client secret is a critical piece of information required to authenticate and complete the integration setup. ```sql SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('INTEGRATION_DEMO') ``` -------------------------------- ### Salesforce Apex Test Class: AnduinFSOrderManagerTest Source: https://developers.anduintransact.com/docs/appendix-salesforce-implementation This Apex test class is designed for unit testing the 'AnduinFSOrderManager' Apex class. It ensures that the invokable method 'invite' functions correctly, including the secure triggering of external services and proper data handling, preparing the class for deployment to Production. ```apex public class AnduinFSOrderManagerTest { @IsTest static void testInviteMethod() { // TODO: Implement test logic // Create test data (e.g., a Salesforce record) // Call the AnduinFSOrderManager.invite method with test record IDs // Assert expected outcomes (e.g., successful execution, no exceptions) // Mocking of Named Credentials and Http requests might be necessary // Example placeholder: // List testRecordIds = new List(); // testRecordIds.add(someTestRecordId); // Test.startTest(); // AnduinFSOrderManager.invite(testRecordIds); // Test.stopTest(); // System.assertEquals(true, true); // Replace with actual assertions } } ``` -------------------------------- ### GraphQL Query to Retrieve Order Commitment Amounts Source: https://developers.anduintransact.com/docs/getting-commitment-amounts-in-multi-fund-setup Example query to fetch commitment amounts for a specific order, linked to its respective subfunds. It includes details like subfund information and various commitment amount states. ```graphql { getOrder(id: "ORDER-ID") { commitmentAmounts(first: 10) { subFund { id name currency } estimatedCommitmentAmount submittedCommitmentAmount acceptedCommitmentAmount } } } ``` -------------------------------- ### Get Invitation Email Template Source: https://developers.anduintransact.com/docs/email-template Retrieves the content of the default or a specific invitation email template. This is useful for understanding the structure and content of emails that will be sent. ```APIDOC ## GET /api/fund/invitation_email_template ### Description Retrieves the current default invitation email template configured for the fund. ### Method GET ### Endpoint /api/fund/invitation_email_template ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example None ### Response #### Success Response (200) - **subject** (string) - The subject of the email template. - **body** (string) - The HTML content of the email body. - **cta** (string) - The text for the call-to-action button. #### Response Example ```json { "subject": "Acme Corp - Invitation to complete your Fund Subscription", "body": "

Dear [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" } ``` ```