Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Rev. 27 June 2025
The Corastone platform is a distributed platform for digital securities lifecycle management, powered by a private and permissioned blockchain. All organizations that are part of this permissioned ecosystem run the same software (which is developed and distributed by Corastone) on their own Amazon Web Services (AWS) account. Each organization has an API integration point into the platform and can optionally have a set of web applications to be used as GUIs to interact with the platform.
This Integration API Guide provides:
basic flows for API calls
a synopsis of each endpoint
a link to the OpenAPI spec for each endpoint
supporting content
Multiple parties participate in transactions on the Corastone platform. For example, an asset manager and a fund administrator might make sequential calls to approve a posted balance. To clarify which calls are appropriate for which roles, we have added a prefix (using the following abbreviations) to the title of each method page.
AM
Asset Manager - General Partners (GP) align with this role.
FA
Fund Administrator
Inv
Investing Organization - Weath Manaagers (WM) align with this role.
Testing a Subscription Request
Setting dryRun to TRUE for the Create Asset endpoint causes the platform to run the data validations without creating an asset or storing data in the database and/or blockchain.
The dryRun option is useful for:
testing sample payloads during coding of an integration
providing advisors with a button that confirms the payload is complete and correct before proceeding with other steps in the subscription process, such as uploading documents
Because the only difference between running Create Asset with dryRun set to TRUE vs FALSE is the step of persisting the resulting objects to the database and blockchain, there is no need to execute a dryRun call before every Create Asset call.
About the Fund Identifier
The securityId is a 12-character alphanumeric code that uniquely identifies a security on the ledger. It has the following format
unique organization ID (5 characters)
random characters (7 characters)
Example: WM1A3ACD234A
The securityId is required for uniquely identifying the security of interest. Note the following when managing your securityIds:
Issuers have access to this identifier upon launching the security on the ledger. See .
For investing organizations and service providers (e.g., fund administrators), the securityId is returned after they are assigned to the security using .
Understanding Parent/Child Securities
An offering that includes multiple fee-structure options can have “child securities.” Each child security has its own securityId. Each securityId rolls up into the parent security.
Operations that involve securities with multiple share classes include applicable share-class securityIds when distinctions need to be made among the child securities. For example, a tender offer might specify different numbers of shares for different share classes.
Getting API Access
To enable access to Corastone from the application you are integrating:
Concatenate your Corastone clientId and clientSecret as follows:
clientId:clientSecret
Base64 encode the resulting string.
Call the token endpoint (POST <AuthURL>/oauth2/token) as follows:
Use the header to pass in the base64 encoded string: Authorization: Basic <encoded_string>
Provide the necessary scope. The description of each endpoint specifies the associated scope.
Here's an example of a scope submission:
{“grant_type”: “client_credentials”, “scope”: “createSubscription remediateSubscription cancelSubscription confirmCompleting manageServiceProviders readExclusivityOptions manageExclusivityOptions readNAV readSubscription readIssuance readInvestor readAccount readLedger readTransactionData manageExternalClients manageTrade readTrade manageReferenceData manageOrgs readOrgs readIssuanceClose readIssuanceClose completeOffering createIdBooking manageIdBooking readErrors manageErrors readSequencer readIssuingLegalEntity "}
Use the issued token as the bearer token in the call to functional APIs.
18 Jun 2025
Added happy path asset status diagram.
5 June 2025
Added History Events Reference.
2 June 2025
30 May 2025
Added isAssetCorrelationId parameter to multiple endpoints and added request body to Upload Document.
29 May 2025
Updated Data Dictionary.
28 May 2025
Added Fees article.
5 May 2025
Added Update Automation Settings endpoint. Updated Data Dictionary.
1 May 2025
Reformatted Error Codes and Messages.
30 Apr 2025
Reformatted Parser Error Codes.
23 Apr 2025
Updated Data Dictionary.
17 Apr 2025
Updated Error Codes and Messages.
16 Apr 2025
Clarified updates from 15 Apr.
15 Apr 2025
Added instructions for obtaining an access token.
14 Apr 2025
Added description of questionnaire support.
8 Apr 2025
Updated Data Dictionary.
4 Apr 2025
Updated Data Dictionary.
1 Apr 2025
Added endpoints for org correlation IDs.
26 Mar 2025
25 Mar 2025
Updated Data Dictionary.
18 Mar 2025
Added details on methods for uploading documents. Updated Data Dictionary.
17 Mar 2025
Added Upload Document endpoint.
How to Use Correlation IDs
To avoid the need to keep track of the unique identifiers for Corastone entities, you can map your internal identifiers to Corastone identifiers on the Corastone platform. Use correlationIDs to perform these mappings. You can use the correlationData structure to map your identifiers when you start the process of creating an entity, like an asset. You can use Add Correlation ID endpoints to map one or more identifiers after creating an entity. Once your identifiers are mapped to Corastone identifiers, you can use your identifiers to refer to entity in other endpoints.
The following entities can have correlation IDs:
Accounts
Advisors
Assets
Capital Calls
Custodians
Distributions
Files
Funds
Investors
Issuance Closes
Organizations
Tender Offers
Tender Requests
Transfers
The schema for the Create Asset endpoint includes a correlationData structure:
Submitting your Create Asset call with a correlationId specified maps the two identifiers for the subscription for the life of the resulting asset, unless you remove the correlationId (Remove Asset Correlation ID).
The following table details this structure.
correlationId
The identifiers to be mapped to the Corastone identifier (securityId).
MYID89647
broadcastToCounterparty
Flag to indicate whether to share each correlationId with platform counterparties who have access to the details of the subscription.
False
origin
The system that created the identifier listed in the correlationId field.
Backoffice-123
After the initial subscription request is submitted (Create Asset), you can add mapped identifiers using the Add Asset Correlation ID enpoint in the Asset API. This endpoint provides the same elements as the correlationData structure detailed above.
Once your identifier is mapped to the Corastone identifier, you can supply your identifier to work with the entity. For example, to fetch asset details where the correlationId is KFC001, you might use:
{{URL}}/external/v1/asset?correlationIdsFilter=KFC0001
If you want to submit an asset correlation ID in the assetID path parameter, you must include isAssetCorrelationID as a query parameter. For example, to request remediation for an asset using the asset correlation ID "abc123" as the identifier, you would need to use:
{{URL}}/external/v1/primary/asset/abc123/request-remediation?isAssetCorrelationID=TRUE
When an organization broadcasts a correlation ID, counterparties can use the correlation ID. To include another organization's correlation ID, you must also provide the assetCorrelationOrgId=<org> parameter, where <org> is the identifier for the organization that published the correlation ID.
For example, to use "abc123" as a correlation ID broadcast by org456, you would need to use:
{{URL}}/external/v1/primary/asset/abc123/request-remediation?isAssetCorrelationID=TRUE&assetCorrelationOrgId=org456
Working with SPC Funds
The following flows apply to segrated portfolio companies:
initial fund/offering setup (see Flows: For All Investment Vehicles)
transfers (see Flows: For All Investment Vehicles)
initial investments
The initial investments have the following flow, with securities issued when the Asset Manager or Fund Admin runs a close for a batch of accepted shares. This flow assumes that:
The investing org has been assigned to the fund.
The investing org has accepted that assignment.
The Integration API refers to the initial step in subscribing as "creating an asset."
1
Inv - Create Asset (Lot)
2
AM - Reject Asset (Investment) AM - Mark Assets Batch as Accepted
3
Inv - Mark Assets Batch as Wired
4
AM/FA - Mark Assets Batch as Settled
5
AM/FA - Run Close
Documents and Files on the Platform
There are two ways to upload a document to the Corastone platform:
via upload link as part of a transaction
via form-data using a local file
In both cases, the API returns the fileId to use when associating the document with assets or investors.
To include a new document with a new subscription request (Create Asset), the uploadData property specifies the type, extension, and a link to the document location.
To upload a local document directly to the platform without a link, you can use the Upload Document endpoint. In this case, you select the local file as a form-data parameter and specify the file type as a query parameter.
Working with LP Funds
The following flows apply to limited partnerships:
initial fund/offering setup (see Flows: For All Investment Vehicles)
transfers (see Flows: For All Investment Vehicles)
The initial investments have the following flow, with securities issued when the Asset Manager or Fund Admin runs a close for a batch of accepted shares. This flow assumes that:
The investing org has been assigned to the fund.
The investing org has accepted that assignment.
The Integration API refers to the initial step in subscribing as "creating an asset."
1
Inv - Create Asset (Lot)
2
AM - Reject Asset (Investment) AM - Mark Assets Batch as Accepted
3
Inv - Mark Assets Batch as Wired
4
AM/FA - Mark Assets Batch as Settled
5
AM/FA - Run Close
Throughout the API flows, an asset represents multiple shares, or a lot, of a given security. After an investor requests a subscription for a security, the asset manager can accept or reject it.
See for information on using orchestrationId and processId.
The dryRun option is included in the response, but is not yet used for this method.
Flows That Are Common Across Investment Vehicles
The following flows apply to all investment vehicles:
initial fund/offering setup
transfers
A fund/offering needs to be in place on the platform before transactions can occur. Once a fund/offering is active, initial investments can proceed. By default, only investing organizations that have received and accepted assignment to the exclusivity list for a security are allowed to participate. The optional flow for adding a service provider, such as a fund administrator, is valid at any point before close.
The following table lists the necessary steps to perform the outlined tasks.
1
AM - Create and Launch Offering
2
AM/FA - Add Investing Org to Fund
3
Inv - Accept Fund Assignment
4
Inv - Retrieve Fund Information
Optional Workflow
AM - Assign Fund Administrator (optional)
FA - Accept/Reject FA Assignment (optional)
Transfers apply when:
A life event, such as death or divorce, results in the need to move shares to a different account.
An advisor moves to a different firm, requiring transfer of shares for those clients who choose to follow the advisor.
The Integration API refers to shares as assets.
The following table lists the necessary steps to perform the outlined tasks.
1
Inv - Request Transfer (Receiving Org)
2
AM/FA - Approve Transfer
3
Inv - Allocate Assets (Sending Org)
4
AM/FA - Complete Transfer (Sending Org)
This should only be triggered either by the organization that owns the security or by a channel admin.
securityId: uniquely identifies the fund/offering. See Managing the SecurityId.
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
Working with LLC Funds
The following flows apply to limited liability companies:
initial fund/offering setup (see )
transfers (see )
initial investments
tender offer redemptions
The initial investments have the following flow, with securities issued when the Asset Manager or Fund Admin runs a close for a batch of accepted shares. This flow assumes that:
The investing org has been assigned to the fund.
The investing org has accepted that assignment.
The Integration API refers to the initial step in subscribing as "creating an asset."
For managed funds, either the general partner or the fund admin can initiate the event. Both must approve.
For self-managed funds, the general partner's approval is required.
Working with Dropdown Funds
The following flows apply to drawdown funds:
initial fund/offering setup (see )
transfers (see )
initial investments
capital calls
distributions
The initial investments for a drawdown fund have the following flow, with securities issued when the Asset Manager or Fund Admin runs a close for a batch of accepted shares. This flow assumes that:
The investing org has been assigned to the fund.
The investing org has accepted that assignment.
The Integration API refers to the initial step in subscribing as "creating an asset."
If a drawdown fund is configured for capital calls, the event can be started by either the general partner or the fund administrator, and both parties must approve.
If there is no fund admin, then the general partner must still approve.
If a drawdown fund is configured for distributions, the event can be started by either the general partner or the fund administrator, and both parties must approve.
If there is no fund admin, then the general partner must still approve.
Working with Registered Funds
The following flows apply to registered funds:
initial fund/offering setup (see )
transfers (see )
tender offer redemptions
The initial investments for a registered fund have the following flow, with securities issued when the Asset Manager or Fund Admin runs a close for a batch of accepted shares. This flow assumes that:
The investing org has been assigned to the fund.
The investing org has accepted that assignment.
The Integration API refers to the initial step in subscribing as "creating an asset."
For managed funds, either the general partner or the fund admin can initiate the event. Both must approve.
For self-managed funds, the general partner's approval is required.
Working with Hedge Funds
The following flows apply to hedge fund capital accounting:
initial fund/offering setup (see )
transfers (see )
initial investments
distributions
The initial investments for a hedge fund have the following flow, with securities issued when the Asset Manager or Fund Admin runs a close for a batch of settled shares. This flow assumes that:
The investing org has been assigned to the fund.
The investing org has accepted that assignment.
The Integration API refers to the initial step in subscribing as "creating an asset."
If a hedge fund is configured for distributions, the event can be started by either the general partner or the fund administrator, and both parties must approve.
If there is no fund admin, then the general partner must still approve.
Throughout the API flows, an asset represents multiple shares, or a lot, of a given security. If funds for a transaction are not received, the asset manager/fund administrator can decline the shares.
See for information on using orchestrationId and processId.
The dryRun option is included in the response, but is not yet used for this method.
\
The Integration API refers to the initial step in subscribing as "creating an asset." Throughout the API flows, an asset represents multiple shares, or a lot, of a given security.
See for information on using orchestrationId and processId.
Use the dryRun option to check the submission for completeness and correctness without persisting the information.
Managed funds may require fund administrators or other organizations to take part in tasks associated with offerings, capital events, and tender offers (redemptions). For the purposes of the Corastone platform, these organizations are considered service providers. Service providers have an official organization defined for them on the Corastone platform.
Initial Fund Setup (see optional steps)
The following list summarizes the primary endpoints required to support service provider management within the fund/offering life cycle:
Assign Service Provider to Offering
Remove Service Provider from Offering
Get Assigned Service Providers
Get Service Provider Assignment History
The flows presented in the first part of this guide summarize the order of operations for key tasks and the roles that perform each task. Because the steps and roles can depend on the investment vehicle being used, there is a separate section for each supported vehicle type.
See also Data Dictionary for details on required fields and validations.
The following articles discuss topics common across the Integration API
1
Inv - Create Asset (Lot)
2
AM - Reject Asset (Investment) AM - Mark Assets Batch as Accepted
3
Inv - Mark Assets Batch as Wired
4
AM/FA - Mark Assets Batch as Settled
5
AM/FA - Run Close
1
AM - Initiate Tender Offer Redemption
2
FA - Approve / Reject Tender Offer Redemption
3
Inv - Submit Tender Redemption Request
4
AM/FA - Close Tender Offer Redemption
5
AM/FA - Set Price
6
AM/FA - Approve/Reject Price
7
AM/FA - Apply Price
8
AM/FA - Complete Price
9
AM/FA - Settle Tender Offer Redemption
1
Inv - Create Asset (Lot)
2
AM - Reject Asset (Investment) AM - Mark Assets Batch as Accepted
3
AM/FA - Run Close
1
AM/FA - Initiate Capital Call
2
AM/FA - Approve/Reject Capital Call
3
Inv - Fund Capital Call (Mark as Funded)
4
AM/FA - Settle Capital Call
5
AM/FA - Close Capital Call
1
AM/FA - Initiate Distribution
2
AM/FA - Approve/Reject Distribution
3
AM/FA - Settle Distribution
4
AM/FA - Close Distribution
1
Inv - Create Asset (Lot)
2
AM - Reject Asset (Investment) AM - Mark Assets Batch as Accepted
3
Inv - Mark Assets Batch as Wired
4
AM/FA - Mark Assets Batch as Settled
5
AM/FA - Run Close
1
AM - Initiate Tender Offer Redemption
2
FA - Approve / Reject Tender Offer Redemption
3
Inv - Submit Tender Redemption Request
4
AM/FA - Close Tender Offer Redemption
5
AM/FA - Set Price
6
AM/FA - Approve/Reject Price
7
AM/FA - Apply Price
8
AM/FA - Complete Price
9
AM/FA - Settle Tender Offer Redemption
1
Inv - Create Asset (Lot)
2
AM - Reject Asset (Investment) AM - Mark Assets Batch as Accepted
3
Inv - Mark Assets Batch as Wired
4
AM/FA - Mark Assets Batch as Settled
5
AM/FA - Run Close
1
AM/FA - Initiate Distribution
2
AM/FA - Approve/Reject Distribution
3
AM/FA - Settle Distribution
4
AM/FA - Close Distribution
Throughout the API flows, an asset represents multiple shares, or a lot, of a given security.
/external/v1/primary/asset/{assetId}/request-remediation
The asset goes back to the investor organization to be updated using the remediation endpoint.
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
The dryRun option is included in the response, but is not yet used for this method.
Throughout the API flows, an asset represents multiple shares, or a lot, of a given security. The asset manager can dispose shares after cancelation or if the issuance has been busted.
/external/v1/primary/asset/{assetId}/dispose
Use only after the asset has been canceled or the issuance (offering) has not met its minimum investment.
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
The dryRun option is included in the response, but is not yet used for this method.
\
Throughout the API flows, an asset represents multiple shares, or a lot, of a given security.
/external/v1/primary/asset/{assetId}/remediate
Issuer requested remediation first.
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
The dryRun option is included in the response, but is not yet used for this method.
\
Use a correlation ID to associate external identifiers with platform IDs.
/external/v1.capital-events/{capitalEventId}/correlation-id/add
A correlation ID associates an external identifiers with a platform ID.
/external/v1/file/{fileId}/correlation-id/remove
Use a correlation ID to associate external identifiers with platform IDs. An asset represents multiple shares, or a lot, of a given security.
/external/v1/asset/{assetId}/correlation-id/add
After failure, the asset can be recovered if the amount is eventually received. Here, an asset represents multiple shares, or a lot, of a given security.
/external/v1/capital-events/{capitalEventId}/assets/recover
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
Service providers are third-party organizations, such as fund administrators, that take part in tasks associated with the lifecycle of an offering.
/external/v1/service-providers
securityId: uniquely identifies the fund/offering. See Managing the SecurityId.
/external/v1/exclusivity/reject
Revert using the /accept endpoint.
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
When the asset manager/fund administrator is ready to issue securities on the subscriptions received so far, they can run a close for the issuance.
/external/v1/primary/run-close
Throughout the API flows, an asset represents multiple shares, or a lot, of a given security.
/external/v1/capital-events/assets
Once an investor funds a capital call, that fact needs to be recorded in the Corastone portal. Here, an asset represents multiple shares, or a lot, of the corresponding security.
/external/v1/capital-events/{capitalEventId}/assets/fund
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
Throughout the API flows, an asset represents multiple shares, or a lot, of a given security. If an investor recalls an asset, the asset manager or fund administrator can accept or reject the request.
/external/v1/primary/asset/{assetId}/recall/accept
Throughout the API flows, an asset represents multiple shares, or a lot, of a given security. An investor can recall the asset to undo the subscription.
/external/v1/primary/asset/{assetId}/recall
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
The dryRun option is included in the response, but is not yet used for this method.
\
/external/v1/exclusivity/remove
Should only be triggered either by the organization that owns the security or by a channel admin.
securityId: uniquely identifies the fund/offering. See Managing the SecurityId.
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
Once a service provider, such as a fund administrator, accepts assignment to an offering, they can take part in certain tasks associated with the lifecycle of that offering.
/external/v1/service-providers/accept
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
\
/external/v1/exclusivity/accept
The current organization must be assigned as an investing org for this security.
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
After all shares are settled or failed, the capital event can be closed.
/external/v1/capital-events/{capitalEventId}/close
securityId: uniquely identifies the fund/offering. See Managing the SecurityId.
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
\
A capital event must be approved before it can proceed.
/external/v1/capital-events/{capitalEventId}/approve
securityId: uniquely identifies the fund/offering. See Managing the SecurityId.
See Blockchain Transaction Tracking for information on using orchestrationId and processId.
\
An active fund is visible only to those investing organizations that have accepted assignment to the exclusivity list for that fund. These steps are included as part of the standard setup flow for a new offering, but can be performed after the initial setup.
The following list summarizes the primary endpoints required to support the exclusivity life cycle:
Throughout the API flows, an asset represents multiple shares, or a lot, of a given security. The asset manager can cancel the asset after receiving funds if the investor needs to back out.
See for information on using orchestrationId and processId.
The dryRun option is included in the response, but is not yet used for this method.
Incorporating Questionnaire Data into the Platform
Questionnaires are a standard way to assess investors for participation in a fund. You can incorporate the data from a questionnaire as part of the investor details stored on the platform.
The following diagram illustrates how the questionnaires completed by an investor can be captured via the Integration API.
You can add questionnaire data using any of the following endpoints:
Create Asset
Remediate Asset
Update Investor's Reference Data
The following JSON excerpt captures a brief questionnaire:
"questionnaires": [ {
"type": "Suitability",
"questions": [
{
"question": {
"questionText": "Are you an accredited investor as defined by the SEC?",
"answerType": "Boolean"
},
"answers": [ {
"booleanValue": true
}]
},
{
"question": {
"questionText": "Which choice describes your investing style?",
"answerType": "Choice",
"allowedAnswerValues": [
"Conservative", "Moderate", "Aggressive"
]
},
"answers": [ {
"choiceValue": "Aggressive"
}]
}]
}]
Capital events refer to capital calls and distributions.
Mapping Your IDs to Corastone IDs
The following list summarizes the primary endpoints required to support the capital event life cycle:
Request Change for Capital Event
Add Capital Event Correlation ID
Remove Capital Event Correlation ID
Get Capital Event Details By ID
Get Asset Capital Event Details
Get Capital Event Correlation IDs History
Get Asset Capital Event History
Get Breakdown Categories Details
Get Breakdown Categories History
Asset managers can assign service providers, such as fund administrators, that take part in tasks associated with the lifecycle of an offering.
/external/v1/service-providers/pending-assignments
Supported Documents
The Integration API supplies numerous document types. However, only the following types impact platform behavior:
w8
w8bene
w9
These document types impact validation of investor documents.
The following table lists the descriptions of all document types listed in docType enumeration:
Service providers are third-party organizations, such as fund administrators, that take part in tasks associated with the lifecycle of an offering.
Caller must be the security owner.
securityId: uniquely identifies the fund/offering. See .
See for information on using orchestrationId and processId.
AdditionalDocuments
Supplementary documents of any type.
AdditionalSubscriptionDocument
Supplementary subscription documents.
AdditionalSubscriptionTerms
Supplementary subscription rules.
CertificateOfGoodStanding
An official document issued by a state agency confirming that a business entity is legally registered and authorized to operate in that state, demonstrating compliance with all requirements.
CommentAttachment
Not currently in use.
DownloadableMaterials
Documents that are intended for distribution.
Formation
Formal written rules on how the entity operates, including articles of incorporation, bylaws, and so on.
Governance
Formal written rules on how the entity operates, including articles of incorporation, bylaws, and so on.
HedgeFundDocument
Documents associated with a hedge fund, including operating agreements and offering offering memoranda.
IdentityVerification
A document that verifies identity, such as a passport.
InvestmentReturn
Not currently in use.
InvestmentTransferDocument
A form used to initiate the transfer of assets from one brokerage account or financial institution to another. Also called a Transfer Instruction Form (TIF).
InvestorAccreditation
Certificate confirming that the investor meets the criteria for becoming an accredited investor.
IssuanceConfidentialDocument
Not currently in use.
IssuanceDisclosures
Documents that explain factual information about the issuance and the risks of investment.
NewSharesAuthorizedUpdatedBylaws
Document amending the entity's articles of incorporation to accommodate a change in the number of shares it can issue.
Other
A document that does not fit into any other listed type.
PrivatePersonID
A document providing proof of identify for a private individual.
Prospectus
A document used to inform the public about an offering of securities, including the risks and financial outlook.
Tax
Tax-related document that is not a W9, W8-BEN, or W8-BEN-E.
TrustAgreement
Legal document outlining the terms and conditions of a trust, specifying who the grantor, trustee, and beneficiaries are, what assets are held in trust, and how the trust will be managed and distributed.
w8ben
IRS form used to collect correct Nonresident Alien (NRA) taxpayer information for individuals for reporting purposes and to document their status for tax reporting purposes.
w8bene
IRS form used to provide status of beneficial owner for US tax withholding and reporting.
W9
IRS form W-9 used to provide the correct Taxpayer Identification Number (TIN) to the person who is required to file an information return with the IRS to report.
Once a fund/offering has been launched, the offering life cycle can begin. If the fund has not been created/launched yet, see Create and Launch New Offering. The Corastone object that corresponds to a subscription is called an asset or digital asset.
Initial Investments (Drawdown Vehicles)
Initial Investments (All Other Vehicles)
Mapping Your IDs to Corastone IDs
Testing a Subscription Request
Investor data submitted via the Integration API must match the information included in uploaded W8/W9 documents. Therefore, submission of investor data triggers parsing of the W8/W9 PDF, if provided, and a comparison of that data with the data submitted via API. (An override option is available to skip the comparison.) If a mismatch is detected, the platform aborts the transaction and produces an error code that prompts the investor to re-examine submitted data and correct errors detected by the comparison.
The following list summarizes the endpoints required to support the fund/offering life cycle:
Request Digital Asset Remediation
Add Issuance Close Correlation ID
Remove Issuance Close Correlation ID
Get Security Correlation IDs History
Get Asset Correlation IDs History
Get File Correlation IDs History
Get Issuance Close Correlation IDs History
Which Documents Get Validated
Corastone provides the option of validating the content of the following investor documents against the data for the corresponding investor:
W-9
W-8 BEN
W-8-BEN-E
This validation helps ensure that subscription requests proceed "in good order", with required for fields completed and matching corresponding fields in the request or an existing investor record. For example, Corastone can parse the investor's W9 to ensure that the investor's name matches the name provided in the subscription request.
To enable investor file validation for a subscription request:
include the file information in the investor section of the request
set bypassFileDataValidation to false
set dryRun to false
The following payload from a Create Asset request provides the fileId for a W9 that has already been uploaded to the platform.
File data validation is an asynchronous process initiated by the Create Asset request. Therefore, you need to check the error log for validation errors. For example, you can use the Sequencer API to retrieve the events that occurred within the relevant timeframe.
Here's a typical error associated with file data validation:
Get the details for the errorId to retrieve the validation errors:
Parser errors like the following describe the validation errors:
{
"transactionData": {
"securityId": "CDGP1D3LESYA",
"amount": 500000,
"signer": {
"email": "[email protected]",
"name": "someone"
}},
"investors": [{
"documents": [
{
"fileId": "CDWM1BT94KD1"
}
],
"data":{
"type":"individual",
"accreditationLevel": "qualifiedEligibleParticipant",
"hasKYCPassed": true,
"isComplianceApproved": true,
"name": "Ken Smith",
"individualInfo": {
"name": "Ken Smith",
"dateOfBirth": "1957-06-10",
"taxId": "987654523",
"isUsPerson": true
} }}],
"account": {
"data": {
"name": "Individual Account",
"type": "Individual",
"relationshipType": "Advisory",
"bankAccount": {
"accountName": "savings account",
"bankABA": "555525555",
"bankName": "Test Bank"
},
"authorizedSigners": [
{
"name": "Jane Doe",
"primary": true
}
]}},
"bypassFileDataValidation": false,
"dryRun": false
}
{{URL}}/external/v1/sequencer?fromDate="2025-04-10"
{
"error": {
"errorId": "08ce57ef-7249-4304-b623-1e44e7fd5ce3",
"action": {
"id": "CEPM001",
"name": "Create Digital Asset",
"httpData": {
"url": "/external/v1/primary/asset",
"method": "POST"
}
},
"timestamp": "2025-04-10T23:04:25.338Z"
}
},
{{URL}}/external/v1/error-log?errorIdsFilter=08ce57ef-7249-4304-b623-1e44e7fd5ce3
{
"message": "TIN on tax document (ID: 'CDWM172F441T') does not match any investor provided as input",
"type": "businessRuleValidations",
"code": "PE0031",
"context": {
"entities": {
"processIds": [
"45cda088-b1be-4f90-b3e0-021da14c587b"
],
"orchestrationIds": [
"bd6ac60e-f0ab-482b-b987-aa28790105cf"
]
}
},
How to Implement a Fund's Fee Structure
The issuer can specify the fee types and tiers to apply to a fund using a fee template.
A fee template defines tiers based on investment amount.
Fee templates also define the following flat fees:
Max Frontend
Backend
Performance fees, however, do not have tiers and are organized under common fees.
The following table outlines the performance fees common for all investing orgs.
IP period
1%
Annually
Post IP period
0.5 basis points
Semi-Annually
The following JSON excerpt illustrates how this fee would be defined in the payload for creating and launching the fund.
"commonFees": {
"performanceFees": {
"hurdleRate": 1,
"highWatermark": {
"enabled": true,
"frequency": "Quarterly"
},
"grossOrNet": "Net",
"fees": [
{
"description": "IP period",
"value": 1,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP period",
"value": 0.5,
"unit": "basisPoints",
"frequency": "Semi-Annually"
}
]
}
}
The following table outlines the tiered and flat fees that need to be defined for Issuance A.
Management
NA
IP: 2% Annually Post IP: 1.5% Annually
Investor Servicing
0-4999999.99
75 basis points (one-off)
5000000-9999999.99
50 basis points (one-off)
10000000+
25 basis points (one-off)
Other (Bank Fees)
0-4999.99
1% Annually
5000-999999.99
0.5% Annually
Other (Placement Fees)
250000-999999.99
Client Pays 1.25% (one-off) GP Pays 0.75% (one-off)
1000000+
Client Pays 0.25% (one-off) GP Pays 0.75% (one-off)
Max Frontend
(flat)
1%
Backend
(flat)
1%
The following JSON excerpt illustrates how these fees would be defined in the payload for creating and launching the fund.
"feesTemplateData": {
"data": {
"name": "Fee Template 1",
"maxFrontend": 1,
"backend": 2,
"managementFees": [
{
"feesInfo": [
{
"description": "IP: annually of capital commitments",
"value": 2,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital",
"value": 1.5,
"unit": "percentage",
"frequency": "Annually"
}
]
}
],
"investorServicingFees": [
{
"maxAmount": 4999999.99,
"feesInfo": [
{
"value": 75,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
},
{
"minAmount": 5000000,
"maxAmount": 9999999.99,
"feesInfo": [
{
"value": 50,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
},
{
"minAmount": 10000000,
"feesInfo": [
{
"value": 25,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
}
],
"otherFees": [
{
"groupName": "Bank fees",
"groupDetails": [
{
"maxAmount": 4999.99,
"feesInfo": [
{
"description": "Bank fees - tier 1 - up to $4999.99",
"value": 1,
"unit": "percentage",
"frequency": "Annually"
}
]
},
{
"minAmount": 5000,
"maxAmount": 999999.99,
"feesInfo": [
{
"description": "Bank fees - tier 2 - $5000 - $999999.99",
"value": 0.5,
"unit": "percentage",
"frequency": "Annually"
}
]
}
]
},
{
"groupName": "Placement Fees",
"groupDetails": [
{
"minAmount": 250000,
"maxAmount": 999999.99,
"feesInfo": [
{
"description": "Client Pays",
"value": 1.25,
"unit": "percentage",
"frequency": "One-Off"
},
{
"description": "GP Pays",
"value": 0.75,
"unit": "percentage",
"frequency": "One-Off"
},
{
"description": "Total FA Comp",
"value": 2,
"unit": "percentage",
"frequency": "One-Off"
}
]
},
{
"minAmount": 1000000,
"feesInfo": [
{
"description": "Client Pays",
"value": 0.25,
"unit": "percentage",
"frequency": "One-Off"
},
{
"description": "GP Pays",
"value": 0.75,
"unit": "percentage",
"frequency": "One-Off"
}
]
}
]
}
]
}
},
This route is used to trigger the rejection of a digital asset on the blockchain for a particular security.
This means the issuer has not accepted the investment and the asset will be disposed.
This triggers an asynchronous process (the id of which is returned on the success response) to persist this information on the blockchain which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","paused"].
This endpoint can be invoked if the asset is in one of the following statuses: ["created","remediation_pending","remediated","modified"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "rejectSubscription".
The unique identifier of the asset on the blockchain.
This can be a 12 characters platform generated identifier or a correlation id provided by the client. If its length is different from 12 it will be treatead as a correlation id.
Particularly relevant for correlation ids, it is recommended that the ID is url encoded if it contains any special characters.
US9QIMAOAS1Q
This property is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
If set to "true" then the platform will try to obtain the asset data using the path parameter as a correlation id instead of a platform generated id.
true
This is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
This is the organization identifier linked to that path param. If not provided the organization id will be inferred from the access token.
This will be ignored if the value in the path parameter is 12 characters long and the isAssetCorrelationId is either absent or not "true".
US9QI
This property contains the transactional data information, i.e. which is the security being bought and the investment details
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
This property contains the reason for the rejection.
{"reason":[{"message":"reject reason","category":"EC006","documentWithIssues":[{"document":{"fileId":"FILE3JUS03I04"},"pages":[{"pageNumber":1,"description":"The first page has an invalid signature"}]}]}],"extraData":{"externalId":"123456789","some":"Custom Property"}}
PUT /external/v1/primary/asset/{assetId}/reject HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 394
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"rejectReason": {
"reason": [
{
"message": "reject reason",
"category": "EC006",
"documentWithIssues": [
{
"document": {
"fileId": "FILE3JUS03I04"
},
"pages": [
{
"pageNumber": 1,
"description": "The first page has an invalid signature"
}
]
}
]
}
],
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"assetId": "US9QIMAOAS1Q"
}
This route is used to retrieve the history data entries of assets given a set of filters such as blockchain details or asset identifiers.
The history entries will reflect the state of the assets on a particular block on the ledger.
This endpoint returns paginated data. Up to 500 can be extracted per call.
This endpoint can be called by applications with access to scope "readSubscription".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of events to filter the asset history records. Up to 47 entries can be provided. Available values: Remediated, Modified, RemediationRequested, Confirmed, CommitmentAccepted, Rejected, Created, Disposed, Declined, Canceled, Issued, Settled, Refunded, OfflineAssetCreated, Recalled, RecallRejected, RecallAccepted, Wired, Busted, CapitalCallCured, CapitalCallFailed, CapitalCallSettled, CapitalCallOverSettled, CapitalCallPartialSettled, NewNAV, CanceledNAV, UpdatedNAV, TenderOfferOutputAssetCreated, TenderTradeProposed, TenderAllAssetParentLock, TenderCanceledDisposed, TenderCanceledIssued, TenderPriceApplied, TenderTradeSettled, TradeProposed, TradeMatched, TransferParentInTransfer, TransferCanceled, TransferCompleted, RemovedFromTransfer, LockedForRedemption, RedemptionCanceled, Redeemed, AssetManualUpdate, ModelAssetMoneyMarketAssetConfirmed, RebalanceRequestInitiated, RebalanceRequestSettled
Created,Modified
The comma delimited list of asset ids to filter the asset records. Up to 500 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of asset correlation ids to filter the asset records. Up to 50 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "assetCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/asset/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"event": "Created",
"update": {
"assetId": "US9QIMAOAS1Q",
"securityId": "USCCWSF01I00",
"accountId": "US9QIMAOAS1Q",
"acquiredDate": "2023-02-27T22:42:06.620Z",
"acquiredPrice": 100,
"issuedDate": "2023-02-27T22:42:06.620Z",
"amount": 1000,
"currentValue": 1200,
"capitalCallDetails": {
"calledAmount": 300000,
"calledAmountOutsideCommitment": 5000,
"distributedAmount": 10000,
"enabled": true
},
"status": "issued",
"shouldReinvest": false,
"customCostBasis": false,
"subDocSignDate": "2023-02-27T22:42:06.621Z",
"extraData": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"fileIds": [
"US9QIFILE1",
"US9QIFILE2"
],
"organization": {
"orgId": "TEST1234",
"name": "Test Organization"
},
"bookingModel": "fullyDisclosedFBO",
"type": "standard"
},
"signerData": {
"email": "[email protected]",
"name": "John Doe"
},
"extraData": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
}
}
]
This route is used to retrieve the details of securities given a set of search filters.
This endpoint is paginated, up to 10 records can be retrieved per call.
This endpoint can be called by applications with access to scope "readIssuance".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The comma delimited list of statuses to filter the security records. Up to 14 entries can be provided. Available values: deleted, preSync, active, closed, completed, bust_in_progress, busted, cancel_in_progress, canceled, refund_in_progress, retired, approved_revert_to_active, paused, archived
active,closed
The comma delimited list of security types to filter the security records. Up to 7 entries can be provided. Available values: equity, lpUnits, llcUnits, spcUnits, convertible, lpInterest, llcUnitShares
equity,llcUnitShares
The comma delimited list of security ids to filter the security records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of security correlation ids to filter the security records. Up to 10 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "securityCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/securities HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"name": "Test U.S. Real Estate Fund II Access Fund, L.P.",
"shortName": "Test Real Estate Fund II",
"externalIdentifiers": {
"isin": "US0004026250",
"cusip": "056833100",
"ticker": "NYSE"
},
"settings": {
"bankAccount": {
"bankABA": "979384247",
"bankName": "Test Bank",
"accountName": "Test U.S. Real Estate Fund II Access Fund, L.P.",
"accountNumber": "457349587349587"
}
},
"securityId": "USCCWSF01I01",
"isMoneyMarket": true,
"termSheetInfo": {
"securityType": "lpUnits",
"campaignType": "NonContingent",
"allowBelowMinimum": true,
"mannerOfSaleInfo": {
"endDate": "2024-09-12T00:00:00.000Z",
"maxAmount": 750000000,
"minAmount": 0,
"startDate": "2024-09-12T00:00:00.000Z"
},
"regulation": "RegS",
"priceOptions": {
"unitized": false,
"unitPrice": 12,
"minimumInvestment": 120,
"allowsReinvestment": true,
"type": "static",
"currency": "USD",
"totalSold": 0
},
"navOptions": {
"navCurrency": "USD",
"navFrequency": "Monthly"
},
"dividendOptions": {
"dividendOption": "Mandatory Dividend",
"dividendPercentage": 3,
"dividendPaymentSchedule": "Annually",
"dividendType": "cumulative"
},
"redemptionOptions": {
"redemptionTenderOfferOptionEnabled": true,
"redemptionPercentage": 2,
"redemptionFrequency": "Monthly",
"redemptionLockupPeriodMonth": 30,
"redemptionNoticePeriod": 10
},
"shareClassInfo": [
{
"securityId": "USCCWSF01I01",
"correlationData": [
{
"correlationId": "123245573717",
"origin": "Identifies share class on backoffice",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"extraData": {
"some": "Custom Property"
}
}
]
}
],
"feesInfo": {
"feesTemplateInfo": {
"feesTemplateId": "FT123456",
"name": "Charles Schwab Fees Template",
"status": "created",
"backendFee": 0,
"managementFees": [
{
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 2,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 1.5,
"unit": "percentage",
"frequency": "Annually"
}
]
}
],
"investorServicingFees": [
{
"maxAmount": 9999.99,
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 3,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 2.5,
"unit": "percentage",
"frequency": "Annually"
}
]
},
{
"minAmount": 10000,
"maxAmount": 49999.99,
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 2,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 1.5,
"unit": "percentage",
"frequency": "Annually"
}
]
}
],
"otherFees": [
{
"groupName": "Global fees",
"groupDetails": [
{
"feesInfo": [
{
"description": "Some global fee",
"value": 75,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
}
]
},
{
"groupName": "Bank fees",
"groupDetails": [
{
"maxAmount": 4999.99,
"feesInfo": [
{
"description": "Bank fees - tier 1 - $5,000,000 - $9,999,999",
"value": 50,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
},
{
"minAmount": 5000,
"maxAmount": 999999.99,
"feesInfo": [
{
"description": "Bank fees - tier 2 - $10,000,000+",
"value": 25,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
}
]
}
]
},
"commonFees": {
"performanceFees": {
"hurdleRate": 1,
"highWatermark": {
"enabled": true,
"frequency": "Quarterly"
},
"grossOrNet": "Net",
"fees": [
{
"description": "The performance fee details during the IP period",
"value": 1,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Some other description about the fee structure in the Post-IP period",
"value": 0.5,
"unit": "basisPoints",
"frequency": "Semi-Annually"
}
]
}
}
}
},
"campaignCompletedDate": "2024-09-12T00:00:00.000Z",
"restricted": false,
"exemption": "REIT",
"parentSecurityId": "USCCWSF01I01",
"exclusivityType": "private",
"status": "active",
"shareClassOptions": {
"description": "This share class is offered to brokerage accounts",
"accountEligibility": "Brokerage"
},
"accountId": "US9QIMAOAS1Q",
"organization": {
"orgId": "TEST1234",
"name": "Test Organization"
},
"deploymentStatus": "success",
"locked": false,
"legalEntityInfo": {
"legalEntityId": "US1G14EGN",
"status": "preSync",
"locked": false,
"name": "Test Legal Entity",
"type": "LP",
"taxId": "987654321",
"address": {
"addressLineOne": "8 Greenway Plaza",
"city": "New York",
"state": "NY",
"country": "US",
"zipCode": "10165"
},
"isUsEntity": true,
"contactInfo": [
{
"email": "[email protected]",
"phoneNumber": "+1234950987"
}
],
"incorporationDate": "2024-09-12",
"incorporationState": "DE",
"incorporationCountry": "US",
"fundInfo": {
"name": "Test Fund",
"description": "This data is for test purposes",
"taxReporting": "K-1",
"exemption": "3(C)(1)",
"type": "Hedge Fund",
"strategy": "Long/Short",
"is1031Eligible": false
}
},
"correlationData": [
{
"correlationId": "123245573717",
"origin": "Identifies security on backoffice",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"extraData": {
"some": "Custom Property"
}
}
]
}
]
This route is used to add an organization to the exclusivity list. This will enable that organization to invest in this security.
This should only be triggered by the organization that owns the security.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageExclusivityOptions".
This property contains the transactional data information, i.e. which is the security being affected by this action
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
The id of the organization. Used to uniquely identify the organization on the ledger
US9QIMA
Set this value to true if the issuer of the security has a rep letter from the distribution partner being assigned to the exclusivity list. It is an optional field with default value set to false
false
Example: true
The exclusive offering's fees template details. If not provided, then new empty fees template will be created.
{"data":{"managementFees":[{"feesInfo":[{"description":"IP: annually of capital commitments | 6 years from the date of initial investment","value":2,"unit":"percentage","frequency":"Annually"},{"description":"Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options","value":1.5,"unit":"percentage","frequency":"Annually"}]}],"investorServicingFees":[{"maxAmount":9999.99,"feesInfo":[{"description":"IP: annually of capital commitments | 6 years from the date of initial investment","value":3,"unit":"percentage","frequency":"Annually"},{"description":"Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options","value":2.5,"unit":"percentage","frequency":"Annually"}]},{"minAmount":10000,"maxAmount":49999.99,"feesInfo":[{"description":"IP: annually of capital commitments | 6 years from the date of initial investment","value":2,"unit":"percentage","frequency":"Annually"},{"description":"Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options","value":1.5,"unit":"percentage","frequency":"Annually"}]}],"otherFees":[{"groupName":"Global fees","groupDetails":[{"feesInfo":[{"description":"Some global fee","value":75,"unit":"basisPoints","frequency":"One-Off"}]}]},{"groupName":"Bank fees","groupDetails":[{"maxAmount":4999.99,"feesInfo":[{"description":"Bank fees - tier 1 - $5,000,000 - $9,999,999","value":50,"unit":"basisPoints","frequency":"One-Off"}]},{"minAmount":5000,"maxAmount":999999.99,"feesInfo":[{"description":"Bank fees - tier 2 - $10,000,000+","value":25,"unit":"basisPoints","frequency":"One-Off"}]}]}]}}
POST /external/v1/exclusivity/add HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 3763
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"orgId": "US9QIMA",
"isRepLetterProvided": true,
"feesTemplateData": {
"data": {
"managementFees": [
{
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 2,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 1.5,
"unit": "percentage",
"frequency": "Annually"
}
]
}
],
"investorServicingFees": [
{
"maxAmount": 9999.99,
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 3,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 2.5,
"unit": "percentage",
"frequency": "Annually"
}
]
},
{
"minAmount": 10000,
"maxAmount": 49999.99,
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 2,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 1.5,
"unit": "percentage",
"frequency": "Annually"
}
]
}
],
"otherFees": [
{
"groupName": "Global fees",
"groupDetails": [
{
"feesInfo": [
{
"description": "Some global fee",
"value": 75,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
}
]
},
{
"groupName": "Bank fees",
"groupDetails": [
{
"maxAmount": 4999.99,
"feesInfo": [
{
"description": "Bank fees - tier 1 - $5,000,000 - $9,999,999",
"value": 50,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
},
{
"minAmount": 5000,
"maxAmount": 999999.99,
"feesInfo": [
{
"description": "Bank fees - tier 2 - $10,000,000+",
"value": 25,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
}
]
}
]
}
},
"shareClassSecurityInfo": [
{
"shareClassId": "USS3JKS01I00",
"feesTemplateData": {
"data": {
"maxFrontendFee": 1,
"backendFee": 0,
"managementFees": [
{
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 2,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 1.5,
"unit": "percentage",
"frequency": "Annually"
}
]
}
],
"investorServicingFees": [
{
"maxAmount": 9999.99,
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 3,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 2.5,
"unit": "percentage",
"frequency": "Annually"
}
]
},
{
"minAmount": 10000,
"maxAmount": 49999.99,
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 2,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 1.5,
"unit": "percentage",
"frequency": "Annually"
}
]
}
],
"otherFees": [
{
"groupName": "Global fees",
"groupDetails": [
{
"feesInfo": [
{
"description": "Some global fee",
"value": 75,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
}
]
},
{
"groupName": "Bank fees",
"groupDetails": [
{
"maxAmount": 4999.99,
"feesInfo": [
{
"description": "Bank fees - tier 1 - $5,000,000 - $9,999,999",
"value": 50,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
},
{
"minAmount": 5000,
"maxAmount": 999999.99,
"feesInfo": [
{
"description": "Bank fees - tier 2 - $10,000,000+",
"value": 25,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
}
]
}
]
}
}
}
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to retrieve the details of a file, given a set of search filters.
This endpoint is paginated, up to 25 records can be retrieved per call.
This endpoint can be called by applications with access to scope "readSubscription".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of file ids to filter the file history records. Up to 25 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of file correlation ids to filter the file history records. Up to 25 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "fileCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
True if a file download Link is meant to be generated. It is optional
true
GET /external/v1/file HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"fileId": "US9QIFILE1",
"correlationData": [
{
"correlationId": "123245573717",
"origin": "Identifies file on backoffice",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"extraData": {
"some": "Custom Property"
}
}
],
"extension": "pdf",
"name": "File name",
"size": 3856,
"status": "created",
"type": "text",
"typeLabel": "text",
"infectedState": "clean",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "456789OIJHGFCVGHJKLKJHGF67JH",
"link": "https://some-download-link.com",
"organization": {
"orgId": "TEST1234",
"name": "Test Organization"
},
"associatedInvestorIds": [
"INV1234"
]
}
]
This route is used to assign a service provider to an existing offering (e.g. assigning a fund admin).
This will allow the assigned organization to get basic information regarding the security.
This should only be triggered by the organization that owns the security.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageServiceProviders".
This property contains the transactional data information, i.e. which is the security being affected by this action
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
The id of the service provider organization. Used to uniquely identify the organization on the ledger
US9QIMA
POST /external/v1/service-providers/assign HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 127
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"orgId": "US9QIMA"
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to trigger the process to mark a list of assets of a given security as settled.
This should be called by the issuer or assigned service provider (e.g. fund admin) to aknowledge the receipt of the funds covering the investments that have been wired.
This can be called for all security types except non-unitized security types with capital calls enabled.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","paused"].
This endpoint can be invoked if the assets in the payload are in the following statuses: confirmed,settlement_confirmation_pending.
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "settleSubscription".
This property contains the transactional data information, i.e. the security id to which all the asset ids in the list belong to
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
The list of the unique identifiers of the digital assets to apply action to.
The entries on this list need to be consistent with the security id in the transaction data
["USS3JKS01I00","US9QIMAOAS1Q"]
The date in which the assets are to be issued.
If not provided, then the assets that will be issued as a result of this action (e.g. money market funds, static price offerings etc...) will have the "issuedDate" set to the current timestamp of this action
2024-09-12T00:00:00.000Z
Date-time string
2024-09-12T00:00:00.000Z
Date string
1980-01-01
Epoch timestamp (milliseconds)
1185106460000
PUT /external/v1/primary/batch-mark-settled HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 191
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"assetIds": [
"USS3JKS01I00",
"US9QIMAOAS1Q"
],
"issueDate": "2024-09-12T00:00:00.000Z"
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to add a correlation ID to an existing file. This correlation ID is an externally provided id that uniquely identifies the file within the organization making this call.
This correlation ID can't be in use by another file. This correlation ID can be broadcast to all the counterparties that have access to this file and that have a relationship with the organization making this call.
If the ID is to be broadcast, then it will trigger an asynchronous process (the id of which is returned on the success response) which can be monitored using the "Transactions API" endpoints.
This endpoint can be called by applications with access to scope "manageReferenceData".
The unique identifier of the file on the blockchain
USS3JKS01I00
Externally provided id that uniquely identifies an entity within an organization.
123245573717
This property defines if correlation information will be sent to all counterparties.
false
Example: true
The organization origin system that created this entity correlation id
Backoffice-system-123
This property contains the information regarding who is signing the transaction on the blockchain as well as how it will be signed
{"signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/file/{fileId}/correlation-id/add HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 240
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"correlationId": "123245573717",
"broadcastToCounterparty": true,
"origin": "Backoffice-system-123",
"transactionData": {
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processData": {
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
}
This route is used to trigger the decline (cancel + dispose) of a digital asset on the blockchain for a particular security.
This should be called after the asset has already been accepted by the issuer but the payment was not received.
This triggers an asynchronous process (the id of which is returned on the success response) to persist this information on the blockchain which can be monitored using the "Transactions API" endpoints.
Once processed, the asset will be disposed.
This endpoint can be invoked if the security is in one of the following statuses: ["active","paused"].
This endpoint can be invoked if the asset is in one of the following statuses: ["confirmed","settlement_confirmation_pending"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "disposeSubscription".
The unique identifier of the asset on the blockchain.
This can be a 12 characters platform generated identifier or a correlation id provided by the client. If its length is different from 12 it will be treatead as a correlation id.
Particularly relevant for correlation ids, it is recommended that the ID is url encoded if it contains any special characters.
US9QIMAOAS1Q
This property is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
If set to "true" then the platform will try to obtain the asset data using the path parameter as a correlation id instead of a platform generated id.
true
This is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
This is the organization identifier linked to that path param. If not provided the organization id will be inferred from the access token.
This will be ignored if the value in the path parameter is 12 characters long and the isAssetCorrelationId is either absent or not "true".
US9QI
This property contains the transactional data information, i.e. which is the security being bought and the investment details
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/primary/asset/{assetId}/decline HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 109
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"assetId": "US9QIMAOAS1Q"
}
This route is used to remove a correlation ID from an existing issuance close. This correlation ID is an externally provided id that uniquely identifies the issuance close within the organization making this call.
This correlation ID should be in use by the issuance close involved in this call.
This action can be broadcast to all the counterparties that have access to this issuance close.
If the action is to be broadcast, then it will trigger an asynchronous process (the id of which is returned on the success response) which can be monitored using the "Transactions API" endpoints.
This endpoint can be called by applications with access to scope "manageReferenceData".
The unique identifier of the issuance close on the ledger
US9QIMAOAS1Q
Externally provided id that uniquely identifies an entity within an organization.
123245573717
This property contains the transactional data information, i.e. which is the security where we are adding a correlation id to a entity
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/issuance-close/{closeId}/correlation-id/remove HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 204
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"correlationId": "123245573717",
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processData": {
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
}
This route is used to trigger the reject of the asset recall on the blockchain for a particular security.
Can be invoked by issuer or assigned service provider (e.g. fund admin) to reject the asset recall requested by investor.
This triggers an asynchronous process (the id of which is returned on the success response) to persist this information on the blockchain which can be monitored using the "Transactions API" endpoints.
Once processed, the asset will move back to the same status that it was prior to the "recall" action.
This endpoint can be invoked if the security is in one of the following statuses: ["active","paused"].
This endpoint can be invoked if the asset is in one of the following statuses: ["recalled"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "cancelSubscription".
The unique identifier of the asset on the blockchain.
This can be a 12 characters platform generated identifier or a correlation id provided by the client. If its length is different from 12 it will be treatead as a correlation id.
Particularly relevant for correlation ids, it is recommended that the ID is url encoded if it contains any special characters.
US9QIMAOAS1Q
This property is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
If set to "true" then the platform will try to obtain the asset data using the path parameter as a correlation id instead of a platform generated id.
true
This is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
This is the organization identifier linked to that path param. If not provided the organization id will be inferred from the access token.
This will be ignored if the value in the path parameter is 12 characters long and the isAssetCorrelationId is either absent or not "true".
US9QI
This property contains the transactional data information, i.e. which is the security being bought and the investment details
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/primary/asset/{assetId}/recall/reject HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 109
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"assetId": "US9QIMAOAS1Q"
}
This route is used to trigger the update of a capital event (capital call or distribution) on the blockchain for a particular security.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This will trigger either 1 or 2 transactions depending on the input (if assetDetails property is passed then it will be 2 transactions)
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the capital event is in one of the following statuses: ["draft","pending"]
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageCapitalEvent".
The id that uniquely identifies the capital event on the ledger.
TEST5678
This property contains the transactional data information, i.e. which is the security where the capital event is being created
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
This property contains the details of the capital event that is to be updated
{"endDate":"2024-09-12T00:00:00.000Z","amountCalled":100000,"expenses":2000,"breakdown":[{"category":{"bookedCategoryId":"USS3JKS01I00","data":{"type":"investments","flowType":"againstCommitment","extraData":{"some":"Custom Data"}}},"amount":90000,"extraData":{"some":"Global data"}},{"category":{"data":{"type":"managementFeeInsideCommitment","flowType":"againstCommitment"}},"amount":10000},{"category":{"data":{"type":"managementFeeOutsideCommitment","flowType":"expenses","extraData":{"other":"Specific Data field"}}},"amount":2000},{"category":{"categoryId":"USS3JKS01I00"},"amount":4000}]}
PUT /external/v1/capital-events/{capitalEventId} HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 717
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"eventData": {
"endDate": "2024-09-12T00:00:00.000Z",
"amountCalled": 100000,
"expenses": 2000,
"breakdown": [
{
"category": {
"bookedCategoryId": "USS3JKS01I00",
"data": {
"type": "investments",
"flowType": "againstCommitment",
"extraData": {
"some": "Custom Data"
}
}
},
"amount": 90000,
"extraData": {
"some": "Global data"
}
},
{
"category": {
"data": {
"type": "managementFeeInsideCommitment",
"flowType": "againstCommitment"
}
},
"amount": 10000
},
{
"category": {
"data": {
"type": "managementFeeOutsideCommitment",
"flowType": "expenses",
"extraData": {
"other": "Specific Data field"
}
}
},
"amount": 2000
},
{
"category": {
"categoryId": "USS3JKS01I00"
},
"amount": 4000
}
]
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used by a service provider (e.g. Fund Admin) to reject the assignment to an existing offering.
This can be invoked if the current organization has been assigned to a particular security.
It can also be invoked at any time after the "accept" endpoint has been called. In this case, this will prevent further actions from being executed on this security and this organization will no longer be entitled to receiving new transactions' data.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be called by applications with access to scope "manageServiceProviders".
This property contains the transactional data information, i.e. which is the security being affected by this action
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/service-providers/reject HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 109
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to trigger the process to mark a list of assets of a given security as accepted.
This means the issuer has accepted the investments and the assets will move on to the next stage of the lifecycle.
This triggers an asynchronous process (the id of which is returned on the success response) to persist this information on the blockchain which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","paused"].
This endpoint can be invoked if the assets are in one of the following statuses: ["created","remediation_pending","remediated","modified"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "acceptSubscription".
This property contains the transactional data information, i.e. the security id to which all the asset ids in the list belong to
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
The list of the unique identifiers of the digital assets to apply action to.
The entries on this list need to be consistent with the security id in the transaction data
["USS3JKS01I00","US9QIMAOAS1Q"]
PUT /external/v1/primary/batch-mark-accepted HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 152
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"assetIds": [
"USS3JKS01I00",
"US9QIMAOAS1Q"
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to trigger the settlement of the capital event (capital call or distribution) on a batch of assets on the blockchain for a particular security.
e.g., after the amount of the call has been received and the information that the investors have met their obligations needs to be reflected on the ledger.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the capital event is in one of the following statuses: ["active"]
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can be called by applications with access to scope "manageCapitalEvent".
The id that uniquely identifies the capital event on the ledger.
TEST5678
This property contains the transactional data information, i.e. which is the security where the capital event is happening
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/capital-events/{capitalEventId}/assets/settle HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 290
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"assetsData": [
{
"assetId": "US9QIMAOAS1Q",
"settlementData": {
"status": "settled",
"amount": 1000,
"date": "2024-09-12T00:00:00.000Z"
},
"extraData": {
"whatever": "Extra Data that is needed"
}
}
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to retrieve the history data entries of security correlation ids given a set of filters such as blockchain details.
The history entries will reflect the state of the security correlation ids on a particular block on the ledger.
This endpoint returns paginated data. Up to 20 can be extracted per call.
This endpoint can be called by applications with access to scope "manageReferenceData".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
GET /external/v1/securities/correlation-id/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"signerData": {
"name": "John Doe",
"email": "[email protected]"
},
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"event": "Created",
"update": {
"correlationId": "123245573717",
"entityType": "account",
"entityId": "OG1234567890",
"status": "broadcast",
"origin": "Backoffice-system-123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
}
}
}
]
This route is used to retrieve the history data entries of securities given a set of filters such as blockchain details or security identifiers.
The history entries will reflect the state of the securities on a particular block on the ledger.
This endpoint returns paginated data. Up to 10 can be extracted per call.
This endpoint can be called by applications with access to scope "readIssuance".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of security ids to filter the security history records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of security correlation ids to filter the security history records. Up to 10 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "securityCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/securities/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"event": "Created",
"update": {
"legalEntityInfo": {
"legalEntityId": "US1G14EGN"
},
"securityId": "USCCWSF01I01",
"termSheetInfo": {
"securityType": "lpUnits",
"campaignType": "NonContingent",
"allowBelowMinimum": true,
"mannerOfSaleInfo": {
"endDate": "2024-09-12T00:00:00.000Z",
"maxAmount": 750000000,
"minAmount": 0,
"startDate": "2024-09-12T00:00:00.000Z"
},
"regulation": "RegS",
"priceOptions": {
"unitized": false,
"unitPrice": 12,
"minimumInvestment": 120,
"allowsReinvestment": true,
"type": "static",
"currency": "USD",
"totalSold": 0
},
"navOptions": {
"navCurrency": "USD",
"navFrequency": "Monthly"
},
"dividendOptions": {
"dividendOption": "Mandatory Dividend",
"dividendPercentage": 3,
"dividendPaymentSchedule": "Annually",
"dividendType": "cumulative"
},
"redemptionOptions": {
"redemptionTenderOfferOptionEnabled": true,
"redemptionPercentage": 2,
"redemptionFrequency": "Monthly",
"redemptionLockupPeriodMonth": 30,
"redemptionNoticePeriod": 10
},
"shareClassInfo": [
{
"securityId": "USCCWSF01I01",
"correlationData": [
{
"correlationId": "123245573717",
"origin": "Identifies share class on backoffice",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"extraData": {
"some": "Custom Property"
}
}
]
}
],
"feesInfo": {
"feesTemplateInfo": {
"feesTemplateId": "FT123456",
"name": "Charles Schwab Fees Template",
"status": "created",
"backendFee": 0,
"managementFees": [
{
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 2,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 1.5,
"unit": "percentage",
"frequency": "Annually"
}
]
}
],
"investorServicingFees": [
{
"maxAmount": 9999.99,
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 3,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 2.5,
"unit": "percentage",
"frequency": "Annually"
}
]
},
{
"minAmount": 10000,
"maxAmount": 49999.99,
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 2,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 1.5,
"unit": "percentage",
"frequency": "Annually"
}
]
}
],
"otherFees": [
{
"groupName": "Global fees",
"groupDetails": [
{
"feesInfo": [
{
"description": "Some global fee",
"value": 75,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
}
]
},
{
"groupName": "Bank fees",
"groupDetails": [
{
"maxAmount": 4999.99,
"feesInfo": [
{
"description": "Bank fees - tier 1 - $5,000,000 - $9,999,999",
"value": 50,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
},
{
"minAmount": 5000,
"maxAmount": 999999.99,
"feesInfo": [
{
"description": "Bank fees - tier 2 - $10,000,000+",
"value": 25,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
}
]
}
]
},
"commonFees": {
"performanceFees": {
"hurdleRate": 1,
"highWatermark": {
"enabled": true,
"frequency": "Quarterly"
},
"grossOrNet": "Net",
"fees": [
{
"description": "The performance fee details during the IP period",
"value": 1,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Some other description about the fee structure in the Post-IP period",
"value": 0.5,
"unit": "basisPoints",
"frequency": "Semi-Annually"
}
]
}
}
}
},
"campaignCompletedDate": "2024-09-12T00:00:00.000Z",
"restricted": false,
"parentSecurityId": "USCCWSF01I01",
"exclusivityType": "private",
"status": "active",
"shareClassOptions": {
"description": "This share class is offered to brokerage accounts",
"accountEligibility": "Brokerage"
},
"accountId": "US9QIMAOAS1Q",
"organization": {
"orgId": "TEST1234",
"name": "Test Organization"
},
"deploymentStatus": "success",
"name": "Test Security",
"shortName": "Test Sec",
"externalIdentifiers": {
"isin": "US1234567890",
"cusip": "US1234567890",
"ticker": "US1234567890"
},
"settings": {
"bankAccount": {
"bankABA": "979384247",
"bankName": "Test Bank",
"accountName": "Test U.S. Real Estate Fund II Access Fund, L.P.",
"accountNumber": "457349587349587"
}
}
},
"signerData": {
"email": "[email protected]",
"name": "John Doe"
},
"extraData": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
}
}
]
This route is used to retrieve the history of a correlation IDs of a particular capital event, given a set of search filters.
This endpoint returns paginated data. Up to 20 can be extracted per call.
This endpoint can be called by applications with access to scope "manageReferenceData".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of capital event correlation ids to filter the capital event records. Up to 100 records can be provided. Each record should not exceed 100 characters.
USCCWSF01I00,USCCWSF01I01
The organization identifier linked to the correlation ids provided in the "capitalEventCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
The comma delimited list of capital event ids to filter the capital event records. Up to 100 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
GET /external/v1/capital-events/correlation-id/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"signerData": {
"name": "John Doe",
"email": "[email protected]"
},
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"event": "Created",
"update": {
"correlationId": "123245573717",
"entityType": "account",
"entityId": "OG1234567890",
"status": "broadcast",
"origin": "Backoffice-system-123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
}
}
}
]
This route is used to retrieve the details of assets, given a set of search filters.
This endpoint is paginated, up to 500 records can be retrieved per call.
This endpoint can be called by applications with access to scope "readSubscription".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The comma delimited list of statuses to filter the asset records. Up to 27 entries can be provided. Available values: deleted, preSynced, created, modified, confirmed, settlement_confirmation_pending, settled, issued, busted, canceled, disposed, recalled, remediated, remediation_pending, locked, trade_proposed, in_trade, in_trade_pending, in_transfer, in_transfer_pending, restricted, retired, refunded, in_tender, in_tender_pending, template, locked_for_redemption
created,settled
The comma delimited list of security ids to filter the asset records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of security correlation ids to filter the asset records. Up to 10 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The comma delimited list of asset ids to filter the asset records. Up to 500 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of asset correlation ids to filter the asset records. Up to 50 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The comma delimited list of account ids to filter the asset records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of account correlation ids to filter the asset records. Up to 10 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "securityCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
The organization identifier linked to the correlation ids provided in the "accountCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
The organization identifier linked to the correlation ids provided in the "assetCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
The comma delimited list of model asset ids to filter the asset records. Up to 500 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of investor ids to filter the asset records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of investor correlation ids to filter the asset records. Up to 10 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "investorCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
The comma delimited list of close ids to filter the asset records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of close correlation ids to filter the asset records. Up to 10 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "closeCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/asset HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"assetId": "US9QIMAOAS1Q",
"modelAssetId": "USS3JKS01I00",
"securityId": "USCCWSF01I00",
"closeId": "USCCWSF01I00",
"accountId": "US9QIMAOAS1Q",
"acquiredDate": "2024-09-12T00:00:00.000Z",
"disposedDate": "2024-09-12T00:00:00.000Z",
"acquiredPrice": 100,
"disposedPrice": 200,
"issuedDate": "2024-09-12T00:00:00.000Z",
"amount": 1000,
"sharesNumber": 1000,
"commission": 1000,
"currentValue": 1200,
"redemptionAmount": 500,
"remediationProposal": {
"amount": 500
},
"tenderProposal": {
"sharesNumberSubmitted": 500,
"sharesNumberAccepted": 500,
"tradeId": "TEST1234"
},
"capitalCallDetails": {
"calledAmount": 300000,
"calledAmountOutsideCommitment": 5000,
"distributedAmount": 10000,
"enabled": true
},
"status": "issued",
"shouldReinvest": false,
"customCostBasis": false,
"customCostBasisValue": 100,
"completedByAdvisorId": "text",
"subDocSignDate": "2024-09-12T00:00:00.000Z",
"originatingTradeId": 345023,
"fileIds": [
"US9QIFILE1",
"US9QIFILE2"
],
"rejectReason": {
"reason": [
{
"message": "reject reason",
"category": "EC006",
"documentWithIssues": [
{
"document": {
"fileId": "FILE3JUS03I04"
},
"pages": [
{
"pageNumber": 1,
"description": "The first page has an invalid signature"
}
]
}
]
}
],
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
}
},
"bookingModel": "fullyDisclosedFBO",
"underlyingInvestorAccountId": "US9QIMAOAC3F",
"fees": {
"frontendFee": 1,
"backendFee": 0,
"managementFees": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 2,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 1.5,
"unit": "percentage",
"frequency": "Annually"
}
],
"investorServicingFees": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 3,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 2.5,
"unit": "percentage",
"frequency": "Annually"
}
],
"otherFees": [
{
"groupName": "Global fees",
"groupDetails": [
{
"description": "Some global fee",
"value": 75,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
},
{
"groupName": "Bank fees",
"groupDetails": [
{
"description": "Bank fees - tier 1 - $5,000,000 - $9,999,999",
"value": 50,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
}
]
},
"type": "standard",
"inputIds": [
"US9QIMAOAS1Q"
],
"organization": {
"orgId": "TEST1234",
"name": "Test Organization"
},
"correlationData": [
{
"correlationId": "123245573717",
"origin": "Identifies security on backoffice",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"extraData": {
"some": "Custom Property"
}
}
],
"ownerName": "<WeInvest Inc.> fbo \"John Doe, Jane Doe\"",
"locked": false,
"latestUpdateTimestamp": "2024-09-12T00:00:00.000Z"
}
]
This route is used to retrieve the history data entries of fees templates given a set of filters such as blockchain details or fees template identifiers.
The history entries will reflect the state of the fees templates on a particular block on the ledger.
This endpoint returns paginated data. Up to 25 can be extracted per call.
This endpoint can be called by applications with access to scope "readFeesTemplate".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of fees template ids to filter the fees template records. Up to 25 ids can be provided. Each id should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
GET /external/v1/fees-template/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"event": "Created",
"update": {
"feesTemplateId": "FT123456",
"name": "Charles Schwab Fees Template",
"status": "created",
"backendFee": 0.75,
"managementFees": [
{
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 2,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 1.5,
"unit": "percentage",
"frequency": "Annually"
}
]
}
],
"investorServicingFees": [
{
"maxAmount": 9999.99,
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 3,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 2.5,
"unit": "percentage",
"frequency": "Annually"
}
]
},
{
"minAmount": 10000,
"maxAmount": 49999.99,
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 2,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 1.5,
"unit": "percentage",
"frequency": "Annually"
}
]
}
],
"otherFees": [
{
"groupName": "Global fees",
"groupDetails": [
{
"feesInfo": [
{
"description": "Some global fee",
"value": 75,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
}
]
},
{
"groupName": "Bank fees",
"groupDetails": [
{
"maxAmount": 4999.99,
"feesInfo": [
{
"description": "Bank fees - tier 1 - $5,000,000 - $9,999,999",
"value": 50,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
},
{
"minAmount": 5000,
"maxAmount": 999999.99,
"feesInfo": [
{
"description": "Bank fees - tier 2 - $10,000,000+",
"value": 25,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
}
]
}
]
},
"signerData": {
"email": "[email protected]",
"name": "John Doe"
},
"extraData": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
}
}
]
This route is used to add a correlation ID to an existing issuance close. This correlation ID is an externally provided id that uniquely identifies the issuance close within the organization making this call.
This correlation ID can't be in use by another issuance close. This correlation ID can be broadcast to all the counterparties that have access to this issuance close.
If the ID is to be broadcast, then it will trigger an asynchronous process (the id of which is returned on the success response) which can be monitored using the "Transactions API" endpoints.
This endpoint can be called by applications with access to scope "manageReferenceData".
The unique identifier of the issuance close on the ledger
US9QIMAOAS1Q
Externally provided id that uniquely identifies an entity within an organization.
123245573717
This property defines if correlation information will be sent to all counterparties.
false
Example: true
The organization origin system that created this entity correlation id
Backoffice-system-123
This property contains the transactional data information, i.e. which is the security where we are adding a correlation id to a entity
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/issuance-close/{closeId}/correlation-id/add HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 268
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"correlationId": "123245573717",
"broadcastToCounterparty": true,
"origin": "Backoffice-system-123",
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processData": {
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
}
This route is used to retrieve the history data entries of issuance close correlation ids given a set of filters such as blockchain details.
The history entries will reflect the state of the issuance close correlation ids on a particular block on the ledger.
This endpoint returns paginated data. Up to 20 can be extracted per call.
This endpoint can be called by applications with access to scope "manageReferenceData".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
GET /external/v1/issuance-close/correlation-id/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"signerData": {
"name": "John Doe",
"email": "[email protected]"
},
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"event": "Created",
"update": {
"correlationId": "123245573717",
"entityType": "account",
"entityId": "OG1234567890",
"status": "broadcast",
"origin": "Backoffice-system-123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
}
}
}
]
This route is used to retrieve the history data entries of file correlation ids given a set of filters such as blockchain details or file identifiers.
The history entries will reflect the state of the file correlation ids on a particular block on the ledger.
This endpoint returns paginated data. Up to 20 can be extracted per call.
This endpoint can be called by applications with access to scope "manageReferenceData".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of file ids to filter the file history records. Up to 25 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of file correlation ids to filter the file history records. Up to 25 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "fileCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/file/correlation-id/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"signerData": {
"name": "John Doe",
"email": "[email protected]"
},
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"hash": "$argon2id$v=19$m=4096,t=3,p=1$8AVpNOnlBvN/reiv7Rdkpw$lzXOuG0H4SibMa0elrEZ5sq3YAvdu+Y5L+ta0oSSMTg",
"update": [
{
"correlationId": "123245573717",
"entityType": "investor",
"entityId": "123245573717",
"status": "broadcast",
"origin": "Backoffice-system-123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
}
}
]
}
]
This route is used to retrieve active nav(s) given a set of filters such as security identifiers or date range.
This endpoint returns paginated data. Up to 500 can be extracted per call.
This endpoint can be called by applications with access to scope "readNAV".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The start date from which the nav records are to be retrieved.
The end date until which the nav records are to be retrieved.
The comma delimited list of security ids to filter the nav records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of security correlation ids to filter the nav records. Up to 10 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "securityCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/nav-reporting HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"price": 100,
"timestamp": "2024-09-12",
"status": "published",
"securityId": "USS3JKS01I00"
}
]
This route is used to retrieve the history data entries of asset correlation ids given a set of filters such as blockchain details.
The history entries will reflect the state of the asset correlation ids on a particular block on the ledger.
This endpoint returns paginated data. Up to 20 can be extracted per call.
This endpoint can be called by applications with access to scope "manageReferenceData".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
GET /external/v1/asset/correlation-id/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"signerData": {
"name": "John Doe",
"email": "[email protected]"
},
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"event": "Created",
"update": {
"correlationId": "123245573717",
"entityType": "account",
"entityId": "OG1234567890",
"status": "broadcast",
"origin": "Backoffice-system-123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
}
}
}
]
This route is used to trigger delete a list of NAV records for unitized instruments on the blockchain for a particular security.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This can be called either by the issuer organization that owns the security or by an assigned fund administrator to update the new price per share.
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageNAV".
This property contains the transactional data information, i.e. the security id to which all the NAVs in the list belong to
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/nav-reporting/batch-delete HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 192
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"navData": [
{
"securityId": "USS3JKS01I00",
"timestamps": [
"2024-09-13",
"2024-09-15"
]
}
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to trigger the recording of a digital asset on the blockchain for a particular security. It is the first action that should be triggered to start the subscription flow.
This triggers an asynchronous process (the id of which is returned on the success response) which can be monitored using the "Transactions API" endpoints.
This asynchronous process will either be composed of 2 transactions - if the intention is bringing a new investor/account to the ledger, or updating an existing one - or just 1 transaction if this is a subsequent investment done from an existing investor/account without any change.
This endpoint can be invoked if the security is in one of the following statuses: ["active"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["investor"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "createSubscription".
This property contains the reference data of the account that holds the digital security.
{"correlationData":[{"correlationId":"INV001"}],"data":{"name":"Individual Account","type":"Individual","relationshipType":"Brokerage","bankAccount":{"accountNumber":"111111111","accountName":"savings account","bankABA":"555555555","bankName":"Test Bank","bankSwift":"AAAA-BB-CC-123","extraData":{"settlementInstructions":"Please wire the amount within 72 hours","some":"Other Property"}},"contactInfo":[{"email":"[email protected]","phoneNumber":"832-426-4242","type":"primary"},{"email":"[email protected]","phoneNumber":"987-564-1234","type":"tax","name":"John Doe","description":"Use this contact for Tax Related Information (K-1, 1099 or other tax related information)"}],"custodian":{"data":{"name":"Charles Schwab"}},"advisors":[{"data":{"type":"FA","name":"Chris Smith","crdCode":"546321","repCode":"AB98765"}}],"authorizedSigners":[{"name":"Jane Doe","primary":true,"extraData":{"externalId":"123456","some":"Other Property"}}],"beneficiaries":[{"name":"John Doe","beneficialOwnership":40,"individualInfo":{"name":"John Doe","taxId":"123456789"}},{"name":"Jane Doe LLC","beneficialOwnership":60,"legalEntityInfo":{"name":"Jane Doe Private Investments and Capital Management, LLC","type":"LLC","taxId":"987654321"}}],"secureExtraData":{"sensitive":"Data to be protected by application encryption"}}}
This property contains the transactional data information, i.e. which is the security being bought and the investment details
{"securityId":"USS3JKS01I00","amount":50000,"signer":{"email":"[email protected]","name":"John Doe"}}
Set this to true if you want to bypass file data consistency (e.g. W9 data matching the investor/account information being provided)
true
Set this to true if you want the request to go through the typical request validation stages up until persisting objects to database. If this is set to true then no data will actually be persisted neither on the database nor the blockchain, and no data will be sent out to the issuer, but all the request validations will be executed.
A typical use case for this would be for an advisor to check that a subscription being created for a particular client is valid prior to actually sending it out.
false
Example: true
POST /external/v1/primary/asset HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2904
{
"investors": [
{
"data": {
"type": "individual",
"accreditationLevel": "qualifiedClient",
"isInstitutional": false,
"hasKYCPassed": false,
"isComplianceApproved": false,
"is5131RestrictedPerson": false,
"name": "John Doe",
"individualInfo": {
"name": "John Doe",
"dateOfBirth": "2024-09-12",
"taxId": "123456789",
"occupation": {
"role": "Software Engineer",
"companyName": "Sample Company"
},
"residentialAddress": {
"addressLineOne": "8 Greenway Plaza",
"addressLineTwo": "Suite 1515",
"country": "US",
"state": "Texas",
"city": "Houston",
"zipCode": "77046 USA"
},
"mailingAddress": {
"addressLineOne": "8 Greenway Plaza",
"addressLineTwo": "Suite 1515",
"country": "US",
"state": "Texas",
"city": "Houston",
"zipCode": "77046 USA"
},
"isUsPerson": true,
"contactInfo": [
{
"email": "[email protected]",
"phoneNumber": "832-426-4242"
}
],
"extraData": {
"externalInvestorId": "123456",
"some": "other property"
}
}
},
"documents": [
{
"uploadData": {
"type": "IdentityVerification",
"extension": "pdf",
"name": "John Doe ID",
"link": "https://test-storage.s3.amazonaws.com/some-id.pdf"
},
"extraData": {
"someCustom": "property to be shared"
}
},
{
"fileId": "FILE3JUS03I04"
}
],
"correlationData": [
{
"correlationId": "INV001"
}
],
"accountAssociationData": {
"isPrimary": true
}
}
],
"account": {
"correlationData": [
{
"correlationId": "INV001"
}
],
"data": {
"name": "Individual Account",
"type": "Individual",
"relationshipType": "Brokerage",
"bankAccount": {
"accountNumber": "111111111",
"accountName": "savings account",
"bankABA": "555555555",
"bankName": "Test Bank",
"bankSwift": "AAAA-BB-CC-123",
"extraData": {
"settlementInstructions": "Please wire the amount within 72 hours",
"some": "Other Property"
}
},
"contactInfo": [
{
"email": "[email protected]",
"phoneNumber": "832-426-4242",
"type": "primary"
},
{
"email": "[email protected]",
"phoneNumber": "987-564-1234",
"type": "tax",
"name": "John Doe",
"description": "Use this contact for Tax Related Information (K-1, 1099 or other tax related information)"
}
],
"custodian": {
"data": {
"name": "Charles Schwab"
}
},
"advisors": [
{
"data": {
"type": "FA",
"name": "Chris Smith",
"crdCode": "546321",
"repCode": "AB98765"
}
}
],
"authorizedSigners": [
{
"name": "Jane Doe",
"primary": true,
"extraData": {
"externalId": "123456",
"some": "Other Property"
}
}
],
"beneficiaries": [
{
"name": "John Doe",
"beneficialOwnership": 40,
"individualInfo": {
"name": "John Doe",
"taxId": "123456789"
}
},
{
"name": "Jane Doe LLC",
"beneficialOwnership": 60,
"legalEntityInfo": {
"name": "Jane Doe Private Investments and Capital Management, LLC",
"type": "LLC",
"taxId": "987654321"
}
}
],
"secureExtraData": {
"sensitive": "Data to be protected by application encryption"
}
}
},
"transactionData": {
"securityId": "USS3JKS01I00",
"amount": 50000,
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"documents": [
{
"uploadData": {
"type": "AdditionalSubscriptionTerms",
"extension": "pdf",
"name": "Subscription Terms",
"link": "https://test-storage.s3.amazonaws.com/sub-terms.pdf"
},
"extraData": {
"someCustom": "property to be shared"
}
},
{
"fileId": "FILE3JUS03I04"
}
],
"bypassFileDataValidation": true,
"dryRun": true
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"assetId": "US9QIMAOAS1Q",
"fileIds": [
"US9QIFILE1",
"US9QIFILE2"
],
"referenceData": {
"account": {
"accountId": "US9QIMAOAS1Q",
"custodian": {
"custodianId": "US9ZIMAOAS1Q"
}
},
"investors": [
{
"investorId": "US9QIM123S1Q"
}
]
},
"completedByAdvisor": {
"advisorId": "OG12JUS03I04"
},
"dryRun": true
}
This route is used to trigger process to request changes of the capital event (capital call or distribution).
This is to be used when an asset manager that owns this security has a fund admin assigned to this security and one of them has already approved the capital event on the ledger.
This will move the capital event back to draft and its details can be updated.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the capital event is in one of the following statuses: ["pending"]
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageCapitalEvent".
The id that uniquely identifies the capital event on the ledger.
TEST5678
This property contains basic information regarding the person that is executing this action. It is used for audit trail of who made which request.
This information will be hashed on the block and will not be shared with other organizations that are part of the blockchain network, unless with the the ones that are concerned with this transaction.
{"email":"[email protected]","name":"John Doe"}
This is an externally provided id that can be used to identify the asynchronous process that will be triggered by this action. It is optional. If not provided the system will generate a unique id for this.
If provided, it must have a v4 UUID format.
2159457f-0167-4e93-a969-9cf0db05e0bf
This is the security unique identifier on the ledger. It uniquely identifies a particular security on the blockchain. It is optional.
Either "securityId" or "securityCorrelationData" must be provided, but not both.
USS3JKS01I00
This property contains the correlation data that is used to identify a particular security within an organization. It is optional.
Either "securityId" or "securityCorrelationData" must be provided, but not both. Security Correlation IDs can be managed using the "Security Admin API".
PUT /external/v1/capital-events/{capitalEventId}/reject HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 217
{
"signer": {
"email": "[email protected]",
"name": "John Doe"
},
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"securityId": "USS3JKS01I00",
"securityCorrelationData": {
"correlationId": "USS3JKS01I00",
"orgId": "US9QIMA"
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to get the history of a capital event (Capital Call / Distribution), given a set of search filters.
This endpoint returns paginated data. Up to 100 can be extracted per call.
This endpoint can be called by applications with access to scope "readCapitalEvent".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of capital event correlation ids to filter the capital event history records. Up to 100 records can be provided. Each record should not exceed 100 characters.
USCCWSF01I00,USCCWSF01I01
The organization identifier linked to the correlation ids provided in the "capitalEventCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
The comma delimited list of capital event ids to filter the capital event history records. Up to 100 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
GET /external/v1/capital-events/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"signerData": {
"name": "John Doe",
"email": "[email protected]"
},
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"event": "Created",
"update": {
"type": "capitalCall",
"endDate": "2024-09-12T00:00:00.000Z",
"amountCalled": 100000,
"expenses": 2000,
"organization": {
"orgId": "TEST1234",
"name": "Test Organization"
},
"breakdown": [
{
"categoryId": "USS3JKS01I00",
"amount": 9000
},
{
"categoryId": "USS3JKS01I01",
"amount": 10000
},
{
"categoryId": "USS3JKS01I02",
"amount": 2000,
"extraData": {
"other": "Fund Level Information"
}
}
],
"status": "draft",
"capitalEventId": "US9QIMAOAS1Q",
"securityId": "USS3JKS01I00"
}
}
]
This route is used to trigger the request of a digital asset remediation on the blockchain for a particular security.
This means the issuer has not accepted the investment yet, so they are requesting the investment remediation.
This is typically called when the subscription is not in good order (NIGO) and this action triggers the asset to go back to the investor organization to be updated using the remediate endpoint.
This triggers an asynchronous process (the id of which is returned on the success response) to persist this information on the blockchain which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","paused"].
This endpoint can be invoked if the asset is in one of the following statuses: ["created","remediation_pending","remediated","modified"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "requestSubscriptionRemediation".
The unique identifier of the asset on the blockchain.
This can be a 12 characters platform generated identifier or a correlation id provided by the client. If its length is different from 12 it will be treatead as a correlation id.
Particularly relevant for correlation ids, it is recommended that the ID is url encoded if it contains any special characters.
US9QIMAOAS1Q
This property is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
If set to "true" then the platform will try to obtain the asset data using the path parameter as a correlation id instead of a platform generated id.
true
This is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
This is the organization identifier linked to that path param. If not provided the organization id will be inferred from the access token.
This will be ignored if the value in the path parameter is 12 characters long and the isAssetCorrelationId is either absent or not "true".
US9QI
This property contains the transactional data information, i.e. which is the security being bought and the investment details
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
This property contains the reason for the rejection.
{"reason":[{"message":"reject reason","category":"EC006","documentWithIssues":[{"document":{"fileId":"FILE3JUS03I04"},"pages":[{"pageNumber":1,"description":"The first page has an invalid signature"}]}]}],"extraData":{"externalId":"123456789","some":"Custom Property"}}
PUT /external/v1/primary/asset/{assetId}/request-remediation HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 394
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"rejectReason": {
"reason": [
{
"message": "reject reason",
"category": "EC006",
"documentWithIssues": [
{
"document": {
"fileId": "FILE3JUS03I04"
},
"pages": [
{
"pageNumber": 1,
"description": "The first page has an invalid signature"
}
]
}
]
}
],
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"assetId": "US9QIMAOAS1Q"
}
This method is used to refund an asset and consequently mark it as disposed. It should only be executed after the asset has been canceled or the issuance has been busted.
This triggers an asynchronous process (the id of which is returned on the success response) to persist this information on the blockchain which can be monitored using the "Transactions API" endpoints.
Once processed, the asset will be disposed.
This endpoint can be invoked if the asset is in one of the following statuses: ["canceled","busted"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "disposeSubscription".
The unique identifier of the asset on the blockchain.
This can be a 12 characters platform generated identifier or a correlation id provided by the client. If its length is different from 12 it will be treatead as a correlation id.
Particularly relevant for correlation ids, it is recommended that the ID is url encoded if it contains any special characters.
US9QIMAOAS1Q
This property is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
If set to "true" then the platform will try to obtain the asset data using the path parameter as a correlation id instead of a platform generated id.
true
This is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
This is the organization identifier linked to that path param. If not provided the organization id will be inferred from the access token.
This will be ignored if the value in the path parameter is 12 characters long and the isAssetCorrelationId is either absent or not "true".
US9QI
This property contains the transactional data information, i.e. which is the security being bought and the investment details
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/primary/asset/{assetId}/dispose HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 109
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"assetId": "US9QIMAOAS1Q"
}
This route is used to trigger the request of a digital asset remediation on the blockchain for a particular security.
This means the issuer has not accepted the investment yet, so they are requesting the investment remediation.
This is typically called when the subscription is not in good order (NIGO) and this action triggers the asset to go back to the investor organization to be updated using the remediate endpoint.
This triggers an asynchronous process (the id of which is returned on the success response) to persist this information on the blockchain which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","paused"].
This endpoint can be invoked if the asset is in one of the following statuses: ["created","remediation_pending","remediated","modified"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "requestSubscriptionRemediation".
The unique identifier of the asset on the blockchain.
This can be a 12 characters platform generated identifier or a correlation id provided by the client. If its length is different from 12 it will be treatead as a correlation id.
Particularly relevant for correlation ids, it is recommended that the ID is url encoded if it contains any special characters.
US9QIMAOAS1Q
This property is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
If set to "true" then the platform will try to obtain the asset data using the path parameter as a correlation id instead of a platform generated id.
true
This is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
This is the organization identifier linked to that path param. If not provided the organization id will be inferred from the access token.
This will be ignored if the value in the path parameter is 12 characters long and the isAssetCorrelationId is either absent or not "true".
US9QI
This property contains the transactional data information, i.e. which is the security being bought and the investment details
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
This property contains the reason for the rejection.
{"reason":[{"message":"reject reason","category":"EC006","documentWithIssues":[{"document":{"fileId":"FILE3JUS03I04"},"pages":[{"pageNumber":1,"description":"The first page has an invalid signature"}]}]}],"extraData":{"externalId":"123456789","some":"Custom Property"}}
PUT /external/v1/primary/asset/{assetId}/request-remediation HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 394
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"rejectReason": {
"reason": [
{
"message": "reject reason",
"category": "EC006",
"documentWithIssues": [
{
"document": {
"fileId": "FILE3JUS03I04"
},
"pages": [
{
"pageNumber": 1,
"description": "The first page has an invalid signature"
}
]
}
]
}
],
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"assetId": "US9QIMAOAS1Q"
}
This route is used to add a correlation ID to an existing capital event. This correlation ID is an externally provided id that uniquely identifies the capital event within the organization making this call.
This correlation ID can't be in use by another capital event. This correlation ID can be broadcast to all the counterparties that have access to this capital event.
If the ID is to be broadcast, then it will trigger an asynchronous process (the id of which is returned on the success response) which can be monitored using the "Transactions API" endpoints.
This endpoint can be called by applications with access to scope "manageReferenceData".
The unique identifier of the capital event on the blockchain
US9QIMAOAS1Q
Externally provided id that uniquely identifies an entity within an organization.
123245573717
This property defines if correlation information will be sent to all counterparties.
false
Example: true
The organization origin system that created this entity correlation id
Backoffice-system-123
This property contains the transactional data information, i.e. which is the security where we are adding a correlation id to a entity
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/capital-events/{capitalEventId}/correlation-id/add HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 268
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"correlationId": "123245573717",
"broadcastToCounterparty": true,
"origin": "Backoffice-system-123",
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processData": {
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
}
This route is used to remove a correlation ID from an existing file. This correlation ID is an externally provided id that uniquely identifies the file within the organization making this call.
This correlation ID should be in use by the file involved in this call.
This action can be broadcast to all the counterparties that have access to this file and that have a relationship with the organization making this call.
If the action is to be broadcast, then it will trigger an asynchronous process (the id of which is returned on the success response) which can be monitored using the "Transactions API" endpoints.
This endpoint can be called by applications with access to scope "manageReferenceData".
The unique identifier of the file on the blockchain
USS3JKS01I00
Externally provided id that uniquely identifies an entity within an organization.
123245573717
This property contains the information regarding who is signing the transaction on the blockchain as well as how it will be signed
{"signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/file/{fileId}/correlation-id/remove HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 176
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"correlationId": "123245573717",
"transactionData": {
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processData": {
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
}
This route is used to retrieve the history of a service provider assignments, given a set of filters such as blockchain details or organization or security identifiers.
This endpoint returns paginated data. Up to 100 can be extracted per call.
This endpoint can be called by applications with access to scope "readServiceProviders".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of organization ids to filter the assignment history records. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of security ids to filter the assignment history records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of security correlation ids to filter the assignment history records. Up to 10 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "securityCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/service-providers/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"signerData": {
"name": "John Doe",
"email": "[email protected]"
},
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"securityId": "USCCWSF01I00",
"event": "Added",
"update": {
"status": "assigned",
"orgId": "TEST1234",
"name": "Test Organization"
}
}
]
This route is used to retrieve the details of issuance closes given a set of search filters.
This endpoint is paginated, up to 500 records can be retrieved per call.
This endpoint can be called by applications with access to scope "readIssuanceClose".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The comma delimited list of statuses to filter the close records. Up to 3 entries can be provided. Available values: preSync, deleted, created
created,deleted
The start date from which the closes are to be retrieved.
The end date until which the closes are to be retrieved.
The comma delimited list of security ids to filter the close records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of security correlation ids to filter the close records. Up to 10 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The comma delimited list of security ids to filter the close records. Up to 500 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of close correlation ids to filter the close records. Up to 50 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "securityCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
The organization identifier linked to the correlation ids provided in the "closeCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/issuance-close HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
"closeId": "US9QIMAOAS1Q",
"correlationData": [
{
"correlationId": "123245573717",
"origin": "Identifies a \"close\" on backoffice",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"extraData": {
"some": "Custom Property"
}
}
],
"securityId": "US9QIMAOAS1Q",
"status": "created",
"issueDate": "2024-09-12T00:00:00.000Z",
"priceData": [
{
"price": 10.23,
"asOfDate": "2024-09-12T00:00:00.000Z",
"bypassNAVCheck": true
}
],
"organization": {
"orgId": "TEST1234",
"name": "Test Organization"
}
}
This route is used to add a correlation ID to an existing asset. This correlation ID is an externally provided id that uniquely identifies the asset within the organization making this call.
This correlation ID can't be in use by another asset. This correlation ID can be broadcast to all the counterparties that have access to this asset.
If the ID is to be broadcast, then it will trigger an asynchronous process (the id of which is returned on the success response) which can be monitored using the "Transactions API" endpoints.
This endpoint can be called by applications with access to scope "manageReferenceData".
The unique identifier of the asset on the blockchain.
This can be a 12 characters platform generated identifier or a correlation id provided by the client. If its length is different from 12 it will be treatead as a correlation id.
Particularly relevant for correlation ids, it is recommended that the ID is url encoded if it contains any special characters.
US9QIMAOAS1Q
This property is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
If set to "true" then the platform will try to obtain the asset data using the path parameter as a correlation id instead of a platform generated id.
true
This is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
This is the organization identifier linked to that path param. If not provided the organization id will be inferred from the access token.
This will be ignored if the value in the path parameter is 12 characters long and the isAssetCorrelationId is either absent or not "true".
US9QI
Externally provided id that uniquely identifies an entity within an organization.
123245573717
This property defines if correlation information will be sent to all counterparties.
false
Example: true
The organization origin system that created this entity correlation id
Backoffice-system-123
This property contains the transactional data information, i.e. which is the security where we are adding a correlation id to a entity
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/asset/{assetId}/correlation-id/add HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 268
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"correlationId": "123245573717",
"broadcastToCounterparty": true,
"origin": "Backoffice-system-123",
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processData": {
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
}
This route is used to retrieve the history data entries of issuance close(s) given a set of filters such as blockchain details or close identifiers.
The history entries will reflect the state of the issuance close(s) on a particular block on the ledger.
This endpoint returns paginated data. Up to 500 can be extracted per call.
This endpoint can be called by applications with access to scope "readIssuanceClose".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of security ids to filter the close records. Up to 500 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of close correlation ids to filter the close records. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "closeCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/issuance-close/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"signerData": {
"name": "John Doe",
"email": "[email protected]"
},
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"event": "Created",
"update": {
"securityId": "US9QIMAOAS1Q",
"closeId": "US9QIMAOAS1Q",
"status": "created",
"organization": {
"orgId": "TEST1234",
"name": "Test Organization"
}
}
}
]
This route is used to remove a correlation ID from an existing capital event. This correlation ID is an externally provided id that uniquely identifies the capital event within the organization making this call.
This correlation ID should be in use by the capital event involved in this call.
This action can be broadcast to all the counterparties that have access to this capital event.
If the action is to be broadcast, then it will trigger an asynchronous process (the id of which is returned on the success response) which can be monitored using the "Transactions API" endpoints.
This endpoint can be called by applications with access to scope "manageReferenceData".
The unique identifier of the capital event on the blockchain
US9QIMAOAS1Q
Externally provided id that uniquely identifies an entity within an organization.
123245573717
This property contains the transactional data information, i.e. which is the security where we are adding a correlation id to a entity
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/capital-events/{capitalEventId}/correlation-id/remove HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 204
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"correlationId": "123245573717",
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processData": {
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
}
This route is used to retrieve the history data entries of nav(s) given a set of filters such as blockchain details or security identifiers.
The history entries will reflect the state of the nav(s) on a particular block on the ledger.
This endpoint returns paginated data. Up to 500 can be extracted per call.
This endpoint can be called by applications with access to scope "readNAV".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of security ids to filter the nav records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of security correlation ids to filter the nav records. Up to 10 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "securityCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/nav-reporting/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"securityId": "USS3JKS01I00",
"timestamp": "2024-09-12",
"organization": {
"orgId": "TEST1234",
"name": "Test Organization"
},
"update": {
"status": "published",
"price": 100,
"timestamp": "2023-02-27"
},
"event": "Created",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"signerData": {
"email": "[email protected]",
"name": "John Doe",
"id": "[email protected]_TEST1234"
}
}
]
This route is used to retrieve the history data entries of breakdown categories given a set of filters such as blockchain details or categories identifiers.
The history entries will reflect the state of the breakdown categories on a particular block on the ledger.
This endpoint returns paginated data. Up to 100 can be extracted per call.
This endpoint can be called by applications with access to scope "readCapitalEvent".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of breakdown category ids to filter the category records. Up to 100 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
GET /external/v1/capital-events/categories/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"signerData": {
"name": "John Doe",
"email": "[email protected]"
},
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"event": "Published",
"update": {
"securityId": "USS3AAS34CKH",
"categoryId": "USS3JKS01I00",
"status": "published",
"type": "investments",
"flowType": "againstCommitment",
"description": "Call from LPs, on behalf of GP share of a capital call",
"organization": {
"orgId": "TEST1234",
"name": "Test Organization"
}
}
}
]
This route is used to retrieve the history data entries of all assets capital events on the ledger, given a set of search filters.
The history entries will reflect the state of the assets capital events on that particular block.
This endpoint returns paginated data. Up to 100 can be extracted per call.
This endpoint can be called by applications with access to scope "readCapitalEvent".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of capital event correlation ids to filter the asset capital event history records. Up to 100 records can be provided. Each record should not exceed 100 characters.
USCCWSF01I00,USCCWSF01I01
The organization identifier linked to the correlation ids provided in the "capitalEventCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
The comma delimited list of capital event ids to filter the asset capital event history records. Up to 100 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of asset ids to filter the asset capital event history records. Up to 500 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of asset correlation ids to filter the asset capital event history records. Up to 50 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "assetCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/capital-events/assets/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"signerData": {
"name": "John Doe",
"email": "[email protected]"
},
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"event": "CapitalCallApplied",
"update": {
"assetId": "USS3JKS01",
"capitalEventId": "US9QIMAOAS1Q",
"amountCalled": 100000,
"expenses": 2000,
"breakdown": [
{
"categoryId": "USS3JKS01I00",
"amount": 90000,
"extraData": {
"some": "Custom Data"
}
},
{
"categoryId": "USS3JKS01I01",
"amount": 10000
}
],
"status": "draft",
"extraData": {
"some": "Extra Data"
}
}
}
]
This route is used to trigger the recovery of the capital event (specific to capital calls) on a batch of assets that had previously been marked as failed on the blockchain for a particular security.
This can be used by either the asset manager that owns the security or by a fund admin that is assigned to the security, e.g. if the amount of the call has been received after the investors have failed their obligations and that information needs to be reflected.
If this is triggered then the asset will exit 'default' state and can be used on further actions.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the capital event is in one of the following statuses: ["active","closed"]
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can be called by applications with access to scope "manageCapitalEvent".
The id that uniquely identifies the capital event on the ledger.
TEST5678
This property contains the transactional data information, i.e. which is the security where the capital event is happening
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/capital-events/{capitalEventId}/assets/recover HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 290
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"assetsData": [
{
"assetId": "US9QIMAOAS1Q",
"settlementData": {
"status": "settled",
"amount": 1000,
"date": "2024-09-12T00:00:00.000Z"
},
"extraData": {
"whatever": "Extra Data that is needed"
}
}
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to apply the capital event (capital call or distribution) on a batch of assets on the blockchain for a particular security.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the capital event is in one of the following statuses: ["draft"]
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can be called by applications with access to scope "manageCapitalEvent".
The id that uniquely identifies the capital event on the ledger.
TEST5678
This property contains the transactional data information, i.e. which is the security where the capital event is being applied to assets
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/capital-events/{capitalEventId}/assets/apply HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 321
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"assetDetails": [
{
"assetId": "USS3JKS01I00",
"amountCalled": 1000,
"expenses": 9000,
"breakdown": [
{
"categoryId": "USS3JKS01I00",
"amount": 9000,
"extraData": {
"some": "Global data"
}
}
],
"extraData": {
"some": "Custom Property"
}
}
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to extract all the service providers that have been assigned to an offering specified by a set of search filters.
This endpoint is paginated, up to 50 records can be retrieved per call.
This endpoint can be called by applications with access to scope "readServiceProviders".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The comma delimited list of organization ids to filter the assignment records. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of security ids to filter the assignment records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of security correlation ids to filter the assignment records. Up to 10 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "securityCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
The comma delimited list of statuses to filter the assignment records. Up to 4 entries can be provided.
Available values: assigned, accepted, rejected, inactive
assigned,accepted
GET /external/v1/service-providers HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"orgId": "US9QIMA",
"name": "State Street",
"status": "assigned",
"role": "service_provider",
"securityId": "USCCWSF01I01"
}
]
This route is used to upload a document.
The maximum file size is 100 Megabytes.
The minimum file size is 100 bytes.
The following file extensions are supported: doc,docx,odt,rtf,txt,pdf,xps,html,epub,djvu,xlsx,xlxm,xls,xml,csv,pptx,pptm,ppt,png,jpeg,jpg bytes.
A file can be uploaded via multipart/form-data with the file key "file".
This endpoint can be called by applications with access to scope "manageReferenceData".
The type of file
Tax
Possible values: Represents the uploaded file via multipart/form-data. This endpoint supports chunked transfer encoding.
POST /external/v1/file/upload?fileType=PrivatePersonID HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: multipart/form-data
Accept: */*
Content-Length: 17
{
"file": "binary"
}
{
"fileId": "US9QIFILE1"
}
This route is used to retrieve the history of security totals given a set of filters such as blockchain details or security identifiers.
The history entries will reflect the state of the totals on a particular block on the ledger.
This endpoint returns paginated data. Up to 10 can be extracted per call.
This endpoint can be called by applications with access to scope "readIssuance".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of security ids to filter the security history records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of security correlation ids to filter the security history records. Up to 10 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "securityCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/securities/totals/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"event": "Created",
"update": {
"securityId": "USCCWSF01I01",
"totalAmount": 1000000,
"totalCalledAmount": 50000,
"totalCalledAmountOutsideCommitment": 20000,
"totalDistributedAmount": 750000,
"totalSharesAmount": 0,
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
}
},
"signerData": {
"email": "[email protected]",
"name": "John Doe"
},
"extraData": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
}
}
]
This route is used for an investing organization to reject the assignment to an exclusive offering (i.e. when the exclusivity type of the offering is set to "private").
This can be invoked if the current organization has been assigned as an investing org to this particular security.
Use this endpoint to express that you will not be performing investments in this security. This can be reverted by using the "accept" endpoint.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be called by applications with access to scope "manageExclusivityOptions".
For registered products with multiple share classes, use this as a filter to specify to which share classes the action applies to.
If not provided, then all will be affected the same way.
This should only be provided if the security has multiple share classes (e.g. security with multiple share classes and accepting/rejecting the assignment to just a subset of them).
["USS3JKS01I00"]
This property contains the transactional data information, i.e. which is the security being affected by this action
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/exclusivity/reject HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 150
{
"shareClassSecurityIds": [
"USS3JKS01I00"
],
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to trigger the process to run the close.
This should be called by the issuer or fund admin when the assets are ready to be issued. All the assets that have been accepted (and settled when there is up-front payment) will be issued.
For contingent offerings, only after the minimum amount is reached can this action be invoked.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","paused"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "closeOffering".
This property contains the transactional data information, i.e. which is the security where the close is being run
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
This property contains the close data (e.g. issue price, date)
{"priceData":[{"price":10.23,"asOfDate":"2024-09-12T00:00:00.000Z","bypassNAVCheck":true}],"issueDate":"2024-09-12T00:00:00.000Z"}
This is the booked unique identifier of the close. It is optional. If not provided, a new unique identifier will be generated.
USS3JKS01I00
POST /external/v1/primary/run-close HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 283
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"closeData": {
"priceData": [
{
"price": 10.23,
"asOfDate": "2024-09-12T00:00:00.000Z",
"bypassNAVCheck": true
}
],
"issueDate": "2024-09-12T00:00:00.000Z"
},
"bookedCloseId": "USS3JKS01I00"
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"closeId": "US9QIMAOAS1Q"
}
This route is used to get the details regarding a capital event (Capital Call / Distribution) at the asset level, given a set of search filters.
i.e., the details of how much is being called/distributed from/to each asset.
This endpoint returns paginated data. Up to 100 can be extracted per call.
This endpoint can be called by applications with access to scope "readCapitalEvent".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The comma delimited list of capital event correlation ids to filter the asset capital event records. Up to 100 records can be provided. Each record should not exceed 100 characters.
USCCWSF01I00,USCCWSF01I01
The organization identifier linked to the correlation ids provided in the "capitalEventCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
The comma delimited list of capital event ids to filter the asset capital event records. Up to 100 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of asset ids to filter the asset capital events records. Up to 500 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of asset correlation ids to filter the asset capital events records. Up to 50 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "assetCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
The comma delimited list of statuses to filter the asset capital event records. Up to 8 entries can be provided. Available values: preSync, draft, active, settled, failed, funded, fundedAfterFailure, canceled
draft,active
GET /external/v1/capital-events/assets HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"assetId": "USS3JKS01I00",
"amountCalled": 100000,
"expenses": 2000,
"temporaryDistributionAmount": 100000,
"permanentDistributionAmount": 2000,
"breakdown": [
{
"categoryId": "USS3JKS01I00",
"amount": 90000,
"extraData": {
"some": "Custom Data"
}
},
{
"categoryId": "USS3JKS01I01",
"amount": 10000
}
],
"settlementData": [
{
"date": "2024-09-12T00:00:00.000Z",
"status": "settled",
"amount": 1000
}
],
"status": "active"
}
]
This route is used to trigger the funding of the capital event by investors (specific to capital calls) on a batch of assets.
This should be called to let the issuer know when the investors meet their capital obligations
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the capital event is in one of the following statuses: ["active","closed"]
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["investor"].
This endpoint can be called by applications with access to scope "manageCapitalEvent".
The id that uniquely identifies the capital event on the ledger.
TEST5678
This property contains the transactional data information, i.e. which is the security where the capital event is happening
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/capital-events/{capitalEventId}/assets/fund HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 271
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"assetsData": [
{
"assetId": "US9QIMAOAS1Q",
"settlementData": {
"amount": 1000,
"date": "2024-09-12T00:00:00.000Z"
},
"extraData": {
"whatever": "Extra Data that is needed"
}
}
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to trigger the update a list of NAV records for unitized instruments on the blockchain for a particular security.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This can be called either by the issuer organization that owns the security or by an assigned fund administrator to update the new price per share.
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageNAV".
This property contains the transactional data information, i.e. the security id to which all the NAVs in the list belong to
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/nav-reporting/batch-update HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 246
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"navData": [
{
"securityId": "USS3JKS01I00",
"navRecords": [
{
"date": "2024-09-12",
"price": 10.123456
},
{
"date": "2024-09-13",
"price": 10.123459
}
]
}
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to trigger the accept of the asset recall on the blockchain for a particular security.
Can be invoked by issuer or assigned service provider (e.g. fund admin) to accept the asset recall requested by investor.
This triggers an asynchronous process (the id of which is returned on the success response) to persist this information on the blockchain which can be monitored using the "Transactions API" endpoints.
Once processed, the asset will be disposed. This action is not reversible
This endpoint can be invoked if the security is in one of the following statuses: ["active","paused"].
This endpoint can be invoked if the asset is in one of the following statuses: ["recalled"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "cancelSubscription".
The unique identifier of the asset on the blockchain.
This can be a 12 characters platform generated identifier or a correlation id provided by the client. If its length is different from 12 it will be treatead as a correlation id.
Particularly relevant for correlation ids, it is recommended that the ID is url encoded if it contains any special characters.
US9QIMAOAS1Q
This property is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
If set to "true" then the platform will try to obtain the asset data using the path parameter as a correlation id instead of a platform generated id.
true
This is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
This is the organization identifier linked to that path param. If not provided the organization id will be inferred from the access token.
This will be ignored if the value in the path parameter is 12 characters long and the isAssetCorrelationId is either absent or not "true".
US9QI
This property contains the transactional data information, i.e. which is the security being bought and the investment details
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/primary/asset/{assetId}/recall/accept HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 109
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"assetId": "US9QIMAOAS1Q"
}
This route is used to trigger the recall of an asset on the blockchain for a particular security.
Can be invoked at any time while the offering is still active.
This should be called by investor to stop participating in the offering.
This triggers an asynchronous process (the id of which is returned on the success response) to persist this information on the blockchain which can be monitored using the "Transactions API" endpoints.
Once processed, the asset will move to next stage of the lifecycle
This endpoint can be invoked if the security is in one of the following statuses: ["active","paused"].
This endpoint can be invoked if the asset is in one of the following statuses: ["created","remediation_pending","remediated","confirmed","modified"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["investor"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "cancelSubscription".
The unique identifier of the asset on the blockchain.
This can be a 12 characters platform generated identifier or a correlation id provided by the client. If its length is different from 12 it will be treatead as a correlation id.
Particularly relevant for correlation ids, it is recommended that the ID is url encoded if it contains any special characters.
US9QIMAOAS1Q
This property is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
If set to "true" then the platform will try to obtain the asset data using the path parameter as a correlation id instead of a platform generated id.
true
This is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
This is the organization identifier linked to that path param. If not provided the organization id will be inferred from the access token.
This will be ignored if the value in the path parameter is 12 characters long and the isAssetCorrelationId is either absent or not "true".
US9QI
This property contains the transactional data information, i.e. which is the security being bought and the investment details
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/primary/asset/{assetId}/recall HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 109
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"assetId": "US9QIMAOAS1Q"
}
This route is used to remove an organization from the exclusivity list. This will prevent that organization from executing further investments in this security.
This should only be triggered by the organization that owns the security.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageExclusivityOptions".
This property contains the transactional data information, i.e. which is the security being affected by this action
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
The id of the organization. Used to uniquely identify the organization on the ledger
US9QIMA
For registered products with multiple share classes, use this as a filter to specify to which share classes the action applies to.
If not provided, then all will be affected the same way.
This should only be provided if the security has multiple share classes (e.g. security with multiple share classes and adding/removing an organizations to just a subset of them).
["USS3JKS01I00"]
PUT /external/v1/exclusivity/remove HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 168
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"orgId": "US9QIMA",
"shareClassSecurityIds": [
"USS3JKS01I00"
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to get the history data entries of issuing legal entity given a set of filters such as blockchain details or legal entity identifiers.
The history entries will reflect the state of the legal entities on a particular block on the ledger.
This endpoint returns paginated data. Up to 20 can be extracted per call.
This endpoint can be called by applications with access to scope "readIssuingLegalEntity".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The block number where the action was recorded on the ledger.
350
The transaction id where the action was recorded on the ledger.
456789OIJHGFCVGHJKLKJHGF67JH
Pattern: ^[a-zA-Z0-9-]*$
The name of the channel where the action was recorded on the ledger.
OG123
Pattern: ^[a-zA-Z0-9-]*$
The comma delimited list of legal entity ids to filter the legal entity history records. Up to 20 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of legal entity correlation ids to filter the legal entity history records. Up to 20 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "legalEntityCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/issuing-legal-entity/history HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"signerData": {
"name": "John Doe",
"email": "[email protected]"
},
"timestamp": "2024-09-12T00:00:00.000Z",
"blockNumber": 350,
"transactionId": "456789OIJHGFCVGHJKLKJHGF67JH",
"channelName": "OG123",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"update": {
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"secureExtraData": {
"some": "Sensitive Data"
},
"description": "A custom legal entity type",
"taxId": "text",
"address": {
"addressLineOne": "8 Greenway Plaza",
"addressLineTwo": "Suite 1515",
"country": "US",
"state": "Texas",
"city": "Houston",
"zipCode": "77046 USA"
},
"mailingAddress": {
"addressLineOne": "8 Greenway Plaza",
"addressLineTwo": "Suite 1515",
"country": "US",
"state": "Texas",
"city": "Houston",
"zipCode": "77046 USA"
},
"placeOfBusinessAddress": [
{
"addressLineOne": "8 Greenway Plaza",
"addressLineTwo": "Suite 1515",
"country": "US",
"state": "Texas",
"city": "Houston",
"zipCode": "77046 USA"
}
],
"incorporationDate": "2024-09-12",
"incorporationCountry": "US",
"incorporationState": "FL",
"isUsEntity": true,
"domicileCountry": "US",
"jurisdictionCountry": "US",
"jurisdictionState": "TX",
"contactInfo": [
{
"email": "[email protected]",
"phoneNumber": "832-426-4242"
}
],
"countryIssuingTaxId": "US",
"taxYearEnd": "09-12",
"natureOfBusiness": "Semiconductor device fabrication",
"name": "Test Legal Entity",
"type": "LP",
"fundInfo": {
"name": "New fund name",
"description": "Fund description",
"type": "Hedge Fund",
"strategy": "Early Stage",
"taxReporting": "K-1",
"is1031Eligible": true,
"exemption": "REIT",
"commoditiesInfo": {
"CFTCRegisteredCommodityPoolOperator": true
}
},
"legalEntityId": "US1G14EGN",
"status": "sync",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
}
},
"hash": "$argon2id$v=19$m=4096,t=3,p=1$8AVpNOnlBvN/reiv7Rdkpw$lzXOuG0H4SibMa0elrEZ5sq3YAvdu+Y5L+ta0oSSMTg"
}
]
This route is used by a service provider (e.g. Fund Admin) to accept the assignment to an existing offering.
This can be invoked if the current organization has been assigned to a particular security.
It can also be invoked at any time after the "reject" endpoint has been called.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints, after which a background job will be triggered so that this organization can catch up to all the data related to this security (investors, accounts, assets, tender offers, capital events, ...).
This endpoint can be called by applications with access to scope "manageServiceProviders".
This property contains the transactional data information, i.e. which is the security being affected by this action
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/service-providers/accept HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 109
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used for an investing organization to accept the assignment to an exclusive offering (i.e. when the exclusivity type of the offering is set to "private").
This can be invoked if the current organization has been assigned as an investing org to this particular security.
After acceptance it will be possible to perform investments in this security.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be called by applications with access to scope "manageExclusivityOptions".
For registered products with multiple share classes, use this as a filter to specify to which share classes the action applies to.
If not provided, then all will be affected the same way.
This should only be provided if the security has multiple share classes (e.g. security with multiple share classes and accepting/rejecting the assignment to just a subset of them).
["USS3JKS01I00"]
This property contains the transactional data information, i.e. which is the security being affected by this action
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
This property contains the booking model for each account.
If not provided, the booking model for all accounts will be defaulted to 'directlyHeld' which means that the securities will be held directly by the investors.
If this is provided, it is possible to define which accounts are qualified for 'fullyDisclosedFBO' structure, where the assets are held for the benefit of the investor, or 'omnibus' structure.
If not provided on accepting after a reject it will clear previous set model.
{"fbo":{"qualifiedTypes":["Retirement"]},"omnibus":{"qualifiedTypes":["Individual","Joint"],"account":{"name":"Omnibus Account","bankAccount":{"accountNumber":"111111111","accountName":"savings account","bankABA":"555555555","bankName":"Test Bank","bankSwift":"AAAA-BB-CC-123","extraData":{"settlementInstructions":"Please wire the amount within 72 hours","some":"Other Property"}},"contactInfo":[{"email":"[email protected]","phoneNumber":"832-426-4242","type":"primary"},{"email":"[email protected]","phoneNumber":"987-564-1234","type":"tax","name":"John Doe","description":"Use this contact for Tax Related Information (K-1, 1099 or other tax related information)"}]}}}
PUT /external/v1/exclusivity/accept HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 835
{
"shareClassSecurityIds": [
"USS3JKS01I00"
],
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"bookingModel": {
"fbo": {
"qualifiedTypes": [
"Retirement"
]
},
"omnibus": {
"qualifiedTypes": [
"Individual",
"Joint"
],
"account": {
"name": "Omnibus Account",
"bankAccount": {
"accountNumber": "111111111",
"accountName": "savings account",
"bankABA": "555555555",
"bankName": "Test Bank",
"bankSwift": "AAAA-BB-CC-123",
"extraData": {
"settlementInstructions": "Please wire the amount within 72 hours",
"some": "Other Property"
}
},
"contactInfo": [
{
"email": "[email protected]",
"phoneNumber": "832-426-4242",
"type": "primary"
},
{
"email": "[email protected]",
"phoneNumber": "987-564-1234",
"type": "tax",
"name": "John Doe",
"description": "Use this contact for Tax Related Information (K-1, 1099 or other tax related information)"
}
]
}
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"omnibusAccountId": "USS3JKS01I00"
}
This route is used to trigger the closure of the capital event (capital call or distribution).
This can either be called if the event has either been settled or failed on all assets.
This is the final step in the capital event lifecycle.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the capital event is in one of the following statuses: ["active"]
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can be called by applications with access to scope "manageCapitalEvent".
The id that uniquely identifies the capital event on the ledger.
TEST5678
This property contains basic information regarding the person that is executing this action. It is used for audit trail of who made which request.
This information will be hashed on the block and will not be shared with other organizations that are part of the blockchain network, unless with the the ones that are concerned with this transaction.
{"email":"[email protected]","name":"John Doe"}
This is an externally provided id that can be used to identify the asynchronous process that will be triggered by this action. It is optional. If not provided the system will generate a unique id for this.
If provided, it must have a v4 UUID format.
2159457f-0167-4e93-a969-9cf0db05e0bf
This is the security unique identifier on the ledger. It uniquely identifies a particular security on the blockchain. It is optional.
Either "securityId" or "securityCorrelationData" must be provided, but not both.
USS3JKS01I00
This property contains the correlation data that is used to identify a particular security within an organization. It is optional.
Either "securityId" or "securityCorrelationData" must be provided, but not both. Security Correlation IDs can be managed using the "Security Admin API".
PUT /external/v1/capital-events/{capitalEventId}/close HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 217
{
"signer": {
"email": "[email protected]",
"name": "John Doe"
},
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"securityId": "USS3JKS01I00",
"securityCorrelationData": {
"correlationId": "USS3JKS01I00",
"orgId": "US9QIMA"
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to trigger approval of the capital event (capital call or distribution).
If the asset manager that owns this security does not have any fund admins assigned to this offering, then once this call is completed the capital event will be marked as active on the ledger.
If the asset manager that owns this security has a fund admin then both organizations need to call this endpoint one after the other to mark this capital event as active on the ledger.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the capital event is in one of the following statuses: ["draft","pending"]
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageCapitalEvent".
The id that uniquely identifies the capital event on the ledger.
TEST5678
This property contains basic information regarding the person that is executing this action. It is used for audit trail of who made which request.
This information will be hashed on the block and will not be shared with other organizations that are part of the blockchain network, unless with the the ones that are concerned with this transaction.
{"email":"[email protected]","name":"John Doe"}
This is an externally provided id that can be used to identify the asynchronous process that will be triggered by this action. It is optional. If not provided the system will generate a unique id for this.
If provided, it must have a v4 UUID format.
2159457f-0167-4e93-a969-9cf0db05e0bf
This is the security unique identifier on the ledger. It uniquely identifies a particular security on the blockchain. It is optional.
Either "securityId" or "securityCorrelationData" must be provided, but not both.
USS3JKS01I00
This property contains the correlation data that is used to identify a particular security within an organization. It is optional.
Either "securityId" or "securityCorrelationData" must be provided, but not both. Security Correlation IDs can be managed using the "Security Admin API".
PUT /external/v1/capital-events/{capitalEventId}/approve HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 217
{
"signer": {
"email": "[email protected]",
"name": "John Doe"
},
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"securityId": "USS3JKS01I00",
"securityCorrelationData": {
"correlationId": "USS3JKS01I00",
"orgId": "US9QIMA"
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to retrieve the details of fees template, given a set of search filters.
This endpoint is paginated, up to 25 records can be retrieved per call.
This endpoint can be called by applications with access to scope "readFeesTemplate".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The comma delimited list of fees template ids to filter the fees template records. Up to 25 ids can be provided. Each id should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of statuses to filter the fees template records. Up to 4 entries can be provided. Available values: preSync, deleted, created, updated
created,created
GET /external/v1/fees-template HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"commonFees": {
"performanceFees": {
"hurdleRate": 1,
"highWatermark": {
"enabled": true,
"frequency": "Quarterly"
},
"grossOrNet": "Net",
"fees": [
{
"description": "The performance fee details during the IP period",
"value": 1,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Some other description about the fee structure in the Post-IP period",
"value": 0.5,
"unit": "basisPoints",
"frequency": "Semi-Annually"
}
]
}
},
"feesTemplateInfo": {
"feesTemplateId": "FT123456",
"name": "Charles Schwab Fees Template",
"status": "created",
"backendFee": 0.75,
"managementFees": [
{
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 2,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 1.5,
"unit": "percentage",
"frequency": "Annually"
}
]
}
],
"investorServicingFees": [
{
"maxAmount": 9999.99,
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 3,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 2.5,
"unit": "percentage",
"frequency": "Annually"
}
]
},
{
"minAmount": 10000,
"maxAmount": 49999.99,
"feesInfo": [
{
"description": "IP: annually of capital commitments | 6 years from the date of initial investment",
"value": 2,
"unit": "percentage",
"frequency": "Annually"
},
{
"description": "Post-IP: annually on invested capital (remaining cost) | 11 years from the initial investment with 2 one-year extension options",
"value": 1.5,
"unit": "percentage",
"frequency": "Annually"
}
]
}
],
"otherFees": [
{
"groupName": "Global fees",
"groupDetails": [
{
"feesInfo": [
{
"description": "Some global fee",
"value": 75,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
}
]
},
{
"groupName": "Bank fees",
"groupDetails": [
{
"maxAmount": 4999.99,
"feesInfo": [
{
"description": "Bank fees - tier 1 - $5,000,000 - $9,999,999",
"value": 50,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
},
{
"minAmount": 5000,
"maxAmount": 999999.99,
"feesInfo": [
{
"description": "Bank fees - tier 2 - $10,000,000+",
"value": 25,
"unit": "basisPoints",
"frequency": "One-Off"
}
]
}
]
}
]
}
}
]
This route is used to trigger the creation of a list of NAV records for unitized instruments on the blockchain for a particular security.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This can be called either by the issuer organization that owns the security or by an assigned fund administrator to update the new price per share.
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can't be invoked if the security is share class.
This endpoint can be called by applications with access to scope "manageNAV".
This property contains the transactional data information, i.e. the security id to which all the NAVs in the list belong to
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
POST /external/v1/nav-reporting/batch-create HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 246
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"navData": [
{
"securityId": "USS3JKS01I00",
"navRecords": [
{
"date": "2024-09-12",
"price": 10.123456
},
{
"date": "2024-09-13",
"price": 10.123459
}
]
}
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to get the details of an issuing legal entity given a set of search filters.
This endpoint is paginated, up to 20 records can be retrieved per call.
This endpoint can be called by applications with access to scope "readIssuingLegalEntity".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The comma delimited list of legal entity ids to filter the legal entity records. Up to 20 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of legal entity correlation ids to filter the legal entity records. Up to 20 records can be provided. Each record should not exceed 100 characters.
1234,5678,7890
The organization identifier linked to the correlation ids provided in the "legalEntityCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
GET /external/v1/issuing-legal-entity HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"secureExtraData": {
"some": "Sensitive Data"
},
"description": "A custom legal entity type",
"taxId": "text",
"address": {
"addressLineOne": "8 Greenway Plaza",
"addressLineTwo": "Suite 1515",
"country": "US",
"state": "Texas",
"city": "Houston",
"zipCode": "77046 USA"
},
"mailingAddress": {
"addressLineOne": "8 Greenway Plaza",
"addressLineTwo": "Suite 1515",
"country": "US",
"state": "Texas",
"city": "Houston",
"zipCode": "77046 USA"
},
"placeOfBusinessAddress": [
{
"addressLineOne": "8 Greenway Plaza",
"addressLineTwo": "Suite 1515",
"country": "US",
"state": "Texas",
"city": "Houston",
"zipCode": "77046 USA"
}
],
"incorporationDate": "2024-09-12",
"incorporationCountry": "US",
"incorporationState": "FL",
"isUsEntity": true,
"domicileCountry": "US",
"jurisdictionCountry": "US",
"jurisdictionState": "TX",
"contactInfo": [
{
"email": "[email protected]",
"phoneNumber": "832-426-4242"
}
],
"countryIssuingTaxId": "US",
"taxYearEnd": "09-12",
"natureOfBusiness": "Semiconductor device fabrication",
"name": "Test Legal Entity",
"type": "LP",
"fundInfo": {
"name": "New fund name",
"description": "Fund description",
"type": "Hedge Fund",
"strategy": "Early Stage",
"taxReporting": "K-1",
"is1031Eligible": true,
"exemption": "REIT",
"commoditiesInfo": {
"CFTCRegisteredCommodityPoolOperator": true
}
},
"legalEntityId": "US1G14EGN",
"status": "sync",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
}
}
]
This route is used to trigger the failure of the capital event (specific to capital calls) on a batch of assets on the blockchain for a particular security.
This can be used by either the asset manager that owns the security or by a fund admin that is assigned to the security, e.g. if the amount of the call has not been received and the information that the investors have failed their obligations needs to be reflected on the ledger.
If this is triggered then the asset will enter 'default' state and will be restricted for further actions.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the capital event is in one of the following statuses: ["active","closed"]
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can be called by applications with access to scope "manageCapitalEvent".
The id that uniquely identifies the capital event on the ledger.
TEST5678
This property contains the transactional data information, i.e. which is the security where the capital event is happening
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/capital-events/{capitalEventId}/assets/fail HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 204
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"assetsData": [
{
"assetId": "US9QIMAOAS1Q",
"extraData": {
"whatever": "Extra Data that is needed"
}
}
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to get the details regarding a capital event (Capital Call / Distribution), given a set of search filters.
This endpoint returns paginated data. Up to 100 can be extracted per call.
This endpoint can be called by applications with access to scope "readCapitalEvent".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The comma delimited list of security ids to filter the capital events records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of security correlation ids to filter the capital events records. Up to 10 records can be provided. Each record should not exceed 100 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of capital event correlation ids to filter the capital event records. Up to 100 records can be provided. Each record should not exceed 100 characters.
USCCWSF01I00,USCCWSF01I01
The organization identifier linked to the correlation ids provided in the "capitalEventCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
The comma delimited list of capital event ids to filter the capital event records. Up to 100 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of statuses to filter the capital event records. Up to 9 entries can be provided. Available values: preSync, deleted, draft, pending, approval_in_progress, active, closed, canceled, cancel_in_progress
draft,active
GET /external/v1/capital-events HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"type": "capitalCall",
"endDate": "2024-09-12T00:00:00.000Z",
"amountCalled": 100000,
"expenses": 2000,
"temporaryDistributionAmount": 100000,
"permanentDistributionAmount": 2000,
"correlationData": [
{
"correlationId": "123245573717",
"origin": "Identifies capital event on backoffice",
"organization": {
"name": "Test Organization",
"orgId": "TEST1234"
},
"extraData": {
"some": "Custom Property"
}
}
],
"status": "draft",
"capitalEventId": "US9QIMAOAS1Q",
"securityId": "USS3JKS01I00",
"breakdown": [
{
"categoryId": "USS3JKS01I00",
"amount": 90000,
"extraData": {
"some": "Custom Data"
}
},
{
"categoryId": "USS3JKS01I01",
"amount": 10000
}
],
"organization": {
"orgId": "TEST1234",
"name": "Test Organization"
}
}
]
This route is used to trigger the cancellation of a digital asset on the blockchain for a particular security.
This should be called when for some reason the investor needs to stop participating in the security, after the asset has been accepted and the payment is already processed. This means that the money will need to be refunded after this action using the "dispose" action endpoint.
This triggers an asynchronous process (the id of which is returned on the success response) to persist this information on the blockchain which can be monitored using the "Transactions API" endpoints.
Once processed, the asset will move to next stage of the lifecycle
This endpoint can be invoked if the security is in one of the following statuses: ["active","paused"].
This endpoint can be invoked if the asset is in one of the following statuses: ["confirmed","settled"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "cancelSubscription".
The unique identifier of the asset on the blockchain.
This can be a 12 characters platform generated identifier or a correlation id provided by the client. If its length is different from 12 it will be treatead as a correlation id.
Particularly relevant for correlation ids, it is recommended that the ID is url encoded if it contains any special characters.
US9QIMAOAS1Q
This property is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
If set to "true" then the platform will try to obtain the asset data using the path parameter as a correlation id instead of a platform generated id.
true
This is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
This is the organization identifier linked to that path param. If not provided the organization id will be inferred from the access token.
This will be ignored if the value in the path parameter is 12 characters long and the isAssetCorrelationId is either absent or not "true".
US9QI
This property contains the transactional data information, i.e. which is the security being bought and the investment details
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/primary/asset/{assetId}/cancel HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 109
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"assetId": "US9QIMAOAS1Q"
}
This route is used to get the pending assignment requests for this current org.
This endpoint can be called by applications with access to scope "readServiceProviders".
GET /external/v1/service-providers/pending-assignments HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"securityId": "USS3JKS01I00",
"assignerOrg": {
"name": "Test Issuer",
"orgId": "US9QIMA"
},
"createdDate": "2024-09-12T00:00:00.000Z",
"syncJobStatus": "success",
"blockNumber": 350,
"blockchainTransactionId": "text"
}
]
This route is used to retrieve the details of breakdown categories, given a set of search filters.
This endpoint is paginated, up to 100 records can be retrieved per call.
This endpoint can be called by applications with access to scope "readCapitalEvent".
The number of rows being retrieved. Must be a positive integer.
The offset (i.e. row start index). Must be a positive integer (or 0).
The comma delimited list of security ids to filter the breakdown category records. Up to 10 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
The comma delimited list of security correlation ids to filter the breakdown category records. Up to 10 records can be provided. Each record should not exceed 100 characters.
USCCWSF01I00,USCCWSF01I01
The organization identifier linked to the correlation ids provided in the "securityCorrelationIdsFilter" property. If not provided the organization id will be inferred from the access token.
The comma delimited list of breakdown category ids to filter the category records. Up to 100 records can be provided. Each record should not exceed 12 characters.
USCCWSF01I00,USCCWSF01I01
GET /external/v1/capital-events/categories HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"type": "deemedGPContribution",
"typeName": "Other Expenses",
"flowType": "againstCommitment",
"description": "Call from LPs, on behalf of GP's share of a capital call (typically serves as an offset to future management fees)",
"securityId": "USS3JKS01I00",
"categoryId": "USS3JKS01I00",
"status": "published",
"organization": {
"orgId": "TEST1234",
"name": "Test Organization"
}
}
]
This route is used to remove a service provider from an existing offering (e.g. unassigning a fund admin).
This will prevent further actions from being executed by the removed organization on this security and it will no longer be entitled to receiving new transactions' data.
This should only be triggered by the organization that owns the security.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageServiceProviders".
This property contains the transactional data information, i.e. which is the security being affected by this action
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
The id of the service provider organization. Used to uniquely identify the organization on the ledger
US9QIMA
PUT /external/v1/service-providers/remove HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 127
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"orgId": "US9QIMA"
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to trigger the process to mark a list of confirmed assets of a given security as wired.
This should be called by the asset owner as the notification of the funds covering the investment being wired.
If the security is a money market fund, this should be called by the asset account owner.
This can be called for all security types except non-unitized security types with capital calls enabled.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","paused"].
This endpoint can be invoked if the assets in the payload are the following statuses: confirmed.
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","investor"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "markSubscriptionWired".
This property contains the transactional data information, i.e. the security id to which all the asset ids in the list belong to
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
The list of the unique identifiers of the digital assets to apply action to.
The entries on this list need to be consistent with the security id in the transaction data
["USS3JKS01I00","US9QIMAOAS1Q"]
PUT /external/v1/primary/batch-mark-wired HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 152
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"assetIds": [
"USS3JKS01I00",
"US9QIMAOAS1Q"
]
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to trigger the cancellation of the capital event (capital call or distribution).
This is an irreversible action that can be called if the event is in draft state. The typical use case for this endpoint is to cancel an event that was created by mistake.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked if the capital event is in one of the following statuses: ["draft"]
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can be called by applications with access to scope "manageCapitalEvent".
The id that uniquely identifies the capital event on the ledger.
TEST5678
This property contains basic information regarding the person that is executing this action. It is used for audit trail of who made which request.
This information will be hashed on the block and will not be shared with other organizations that are part of the blockchain network, unless with the the ones that are concerned with this transaction.
{"email":"[email protected]","name":"John Doe"}
This is an externally provided id that can be used to identify the asynchronous process that will be triggered by this action. It is optional. If not provided the system will generate a unique id for this.
If provided, it must have a v4 UUID format.
2159457f-0167-4e93-a969-9cf0db05e0bf
This is the security unique identifier on the ledger. It uniquely identifies a particular security on the blockchain. It is optional.
Either "securityId" or "securityCorrelationData" must be provided, but not both.
USS3JKS01I00
This property contains the correlation data that is used to identify a particular security within an organization. It is optional.
Either "securityId" or "securityCorrelationData" must be provided, but not both. Security Correlation IDs can be managed using the "Security Admin API".
PUT /external/v1/capital-events/{capitalEventId}/cancel HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 217
{
"signer": {
"email": "[email protected]",
"name": "John Doe"
},
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"securityId": "USS3JKS01I00",
"securityCorrelationData": {
"correlationId": "USS3JKS01I00",
"orgId": "US9QIMA"
}
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
This route is used to remove a correlation ID from an existing asset. This correlation ID is an externally provided id that uniquely identifies the asset within the organization making this call.
This correlation ID should be in use by the asset involved in this call.
This action can be broadcast to all the counterparties that have access to this asset.
If the action is to be broadcast, then it will trigger an asynchronous process (the id of which is returned on the success response) which can be monitored using the "Transactions API" endpoints.
This endpoint can be called by applications with access to scope "manageReferenceData".
The unique identifier of the asset on the blockchain.
This can be a 12 characters platform generated identifier or a correlation id provided by the client. If its length is different from 12 it will be treatead as a correlation id.
Particularly relevant for correlation ids, it is recommended that the ID is url encoded if it contains any special characters.
US9QIMAOAS1Q
This property is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
If set to "true" then the platform will try to obtain the asset data using the path parameter as a correlation id instead of a platform generated id.
true
This is to be used if the value passed in the "assetId" path parameter is a correlation id instead of a platform generated id.
This is the organization identifier linked to that path param. If not provided the organization id will be inferred from the access token.
This will be ignored if the value in the path parameter is 12 characters long and the isAssetCorrelationId is either absent or not "true".
US9QI
Externally provided id that uniquely identifies an entity within an organization.
123245573717
This property contains the transactional data information, i.e. which is the security where we are adding a correlation id to a entity
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
PUT /external/v1/asset/{assetId}/correlation-id/remove HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 204
{
"extraData": {
"externalId": "123456789",
"some": "Custom Property"
},
"correlationId": "123245573717",
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
}
}
{
"processData": {
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf"
}
}
This route is used to trigger the creation of a capital event (capital call or distribution) on the blockchain for a particular security.
It triggers an asynchronous process that will persist this information on the blockchain, which can be monitored using the "Transactions API" endpoints.
This will trigger either 1 or 2 transactions depending on the input (if assetDetails property is passed then it will be 2 transactions)
This endpoint can be invoked if the security is in one of the following statuses: ["active","completed","approved_revert_to_active","closed"].
This endpoint can be invoked by organizations that have at least one of the following roles on this security: ["issuer","service_provider"].
This endpoint can't be invoked if the security is restricted.
This endpoint can be called by applications with access to scope "manageCapitalEvent".
This property contains the transactional data information, i.e. which is the security where the capital event is being created
{"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
This property contains the details of the capital event that is to be created
{"type":"capitalCall","endDate":"2024-09-12T00:00:00.000Z","amountCalled":100000,"expenses":2000,"breakdown":[{"category":{"bookedCategoryId":"USS3JKS01I00","data":{"type":"investments","flowType":"againstCommitment","extraData":{"some":"Custom Data"}}},"amount":90000,"extraData":{"some":"Global data"}},{"category":{"data":{"type":"managementFeeInsideCommitment","flowType":"againstCommitment"}},"amount":10000},{"category":{"data":{"type":"managementFeeOutsideCommitment","flowType":"expenses","extraData":{"other":"Specific Data field"}}},"amount":2000},{"category":{"categoryId":"USS3JKS01I00"},"amount":4000}]}
This is the booked unique identifier of the capital event. It is optional. If not provided, a new unique identifier will be generated.
USS3JKS01I00
POST /external/v1/capital-events HTTP/1.1
Host:
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 776
{
"transactionData": {
"securityId": "USS3JKS01I00",
"signer": {
"email": "[email protected]",
"name": "John Doe"
}
},
"eventData": {
"type": "capitalCall",
"endDate": "2024-09-12T00:00:00.000Z",
"amountCalled": 100000,
"expenses": 2000,
"breakdown": [
{
"category": {
"bookedCategoryId": "USS3JKS01I00",
"data": {
"type": "investments",
"flowType": "againstCommitment",
"extraData": {
"some": "Custom Data"
}
}
},
"amount": 90000,
"extraData": {
"some": "Global data"
}
},
{
"category": {
"data": {
"type": "managementFeeInsideCommitment",
"flowType": "againstCommitment"
}
},
"amount": 10000
},
{
"category": {
"data": {
"type": "managementFeeOutsideCommitment",
"flowType": "expenses",
"extraData": {
"other": "Specific Data field"
}
}
},
"amount": 2000
},
{
"category": {
"categoryId": "USS3JKS01I00"
},
"amount": 4000
}
]
},
"bookedCapitalEventId": "USS3JKS01I00"
}
{
"processId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"orchestrationId": "2159457f-0167-4e93-a969-9cf0db05e0bf",
"capitalEventId": "US9QIMAOAS1Q",
"breakdownCategoriesIds": [
"USS3JKS01I00"
]
}