All pages
Powered by GitBook
1 of 8

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Service Provider Management

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.

Related Concepts

Initial Fund Setup (see optional steps)

Endpoints

The following list summarizes the primary endpoints required to support service provider management within the fund/offering life cycle:

Assign Service Provider to Offering

Accept Assignment to Offering

Reject Assignment to Offering

Remove Service Provider from Offering

Getters

Get Pending Assignments

Get Assigned Service Providers

Get Service Provider Assignment History

AM - Assign Service Provider to Offering

Asset managers can assign service providers, such as fund administrators, that take part in tasks associated with the lifecycle of an offering.

Details

Synopsis

Important Notes

  • Used by the organization that owns the security.

  • See for information on using orchestrationId and processId.

\

/external/v1/service-providers/assign
Blockchain Transaction Tracking

FA - Get Pending Assignments

Asset managers can assign service providers, such as fund administrators, that take part in tasks associated with the lifecycle of an offering.

Details

/external/v1/service-providers/pending-assignments

Synopsis

AM - Get Assigned Service Providers

Service providers are third-party organizations, such as fund administrators, that take part in tasks associated with the lifecycle of an offering.

Details

Synopsis

Important Notes

  • securityId: uniquely identifies the fund/offering. See .

/external/v1/service-providers
Managing the SecurityId

FA - Accept Assignment to Offering

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.

Details

/external/v1/service-providers/accept

Synopsis

Important Notes

  • See Blockchain Transaction Tracking for information on using orchestrationId and processId.

\

FA - Reject Assignment to Offering

A service provider, such as a fund administrator, can decline a role for an offering by rejecting the assignment.

Details

/external/v1/service-providers/reject

Synopsis

Important Notes

  • See Blockchain Transaction Tracking for information on using orchestrationId and processId.

\

AM/FA - Get Service Provider Assignment History

Details

Synopsis

AM - Remove Service Provider from Offering

Service providers are third-party organizations, such as fund administrators, that take part in tasks associated with the lifecycle of an offering.

Details

Synopsis

Important Notes

  • Caller must be the security owner.

  • securityId: uniquely identifies the fund/offering. See .

  • See for information on using orchestrationId and processId.

/external/v1/service-providers/history
/external/v1/service-providers/remove
Managing the SecurityId
Blockchain Transaction Tracking

Assign Service Provider

post

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".

Authorizations
Body
transactionDataall ofRequired

This property contains the transactional data information, i.e. which is the security being affected by this action

Example: {"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
orgIdstringRequired

The id of the service provider organization. Used to uniquely identify the organization on the ledger

Example: US9QIMA
Responses
201
Successfully triggered the assignment. The "processId" and "orchestrationId" properties can be used on the "Transactions API" to monitor the status of this asynchronous process.
application/json
400
The following error codes can be returned: - GN0002 - SP0002 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 - AU0003 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 - OG0004 - OG0005 - OG0028 - IS0099 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - OG0001 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - IS0013 - IS0010 - IS0062 - IS0012 - SP0003 Please refer to the error code dictionary for the details of each error code.
application/json
post
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"
}

Get Pending Assignments

get

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".

Authorizations
Responses
200
Successfully extracted data
application/json
401
The following error codes can be returned: - AU0001 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 Please refer to the error code dictionary for the details of each error code.
application/json
get
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"
  }
]

Get Service Providers

get

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".

Authorizations
Query parameters
pageSizenumberOptional

The number of rows being retrieved. Must be a positive integer.

offsetnumberOptional

The offset (i.e. row start index). Must be a positive integer (or 0).

orgIdsFilterstringOptional

The comma delimited list of organization ids to filter the assignment records. Each record should not exceed 12 characters.

Example: USCCWSF01I00,USCCWSF01I01
securityIdsFilterstringOptional

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.

Example: USCCWSF01I00,USCCWSF01I01
securityCorrelationIdsFilterstringOptional

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.

Example: 1234,5678,7890
securityCorrelationOrgIdstring · max: 12Optional

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.

assignmentStatusFilterstringOptional

The comma delimited list of statuses to filter the assignment records. Up to 4 entries can be provided.

Available values: assigned, accepted, rejected, inactive

Example: assigned,accepted
Responses
200
Successfully extracted data
application/json
400
The following error codes can be returned: - GN0002 - GN0004 - GN0005 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 Please refer to the error code dictionary for the details of each error code.
application/json
get
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"
  }
]

Accept Assignment to Offering

put

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".

Authorizations
Body
transactionDataall ofRequired

This property contains the transactional data information, i.e. which is the security being affected by this action

Example: {"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
Responses
200
Successfully triggered the acceptance
application/json
400
The following error codes can be returned: - GN0002 - IS0008 - IS0106 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 - AU0003 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 - OG0028 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - OG0001 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - IS0013 - IS0010 - IS0102 - IS0103 - SP0001 - SP0006 Please refer to the error code dictionary for the details of each error code.
application/json
put
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"
}

Reject Assignment to Offering

put

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".

Authorizations
Body
transactionDataall ofRequired

This property contains the transactional data information, i.e. which is the security being affected by this action

Example: {"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
Responses
200
Successfully triggered the rejection
application/json
400
The following error codes can be returned: - GN0002 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 - AU0003 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - OG0001 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - IS0013 - IS0010 - IS0102 - IS0103 - SP0001 Please refer to the error code dictionary for the details of each error code.
application/json
put
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"
}

Get Service Provider Assignment History

get

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".

Authorizations
Query parameters
pageSizenumberOptional

The number of rows being retrieved. Must be a positive integer.

offsetnumberOptional

The offset (i.e. row start index). Must be a positive integer (or 0).

blockNumbernumber · max: 2147483647Optional

The block number where the action was recorded on the ledger.

Example: 350
transactionIdstring · max: 500Optional

The transaction id where the action was recorded on the ledger.

Example: 456789OIJHGFCVGHJKLKJHGF67JHPattern: ^[a-zA-Z0-9-]*$
channelNamestring · max: 20Optional

The name of the channel where the action was recorded on the ledger.

Example: OG123Pattern: ^[a-zA-Z0-9-]*$
orgIdsFilterstringOptional

The comma delimited list of organization ids to filter the assignment history records. Each record should not exceed 12 characters.

Example: USCCWSF01I00,USCCWSF01I01
securityIdsFilterstringOptional

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.

Example: USCCWSF01I00,USCCWSF01I01
securityCorrelationIdsFilterstringOptional

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.

Example: 1234,5678,7890
securityCorrelationOrgIdstring · max: 12Optional

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.

Responses
200
Successfully retrieved the service provider assignment history
application/json
400
The following error codes can be returned: - GN0002 - GN0004 - GN0005 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 Please refer to the error code dictionary for the details of each error code.
application/json
get
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"
    }
  }
]

Remove Service Provider from Offering

put

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".

Authorizations
Body
transactionDataall ofRequired

This property contains the transactional data information, i.e. which is the security being affected by this action

Example: {"securityId":"USS3JKS01I00","signer":{"email":"[email protected]","name":"John Doe"}}
orgIdstringRequired

The id of the service provider organization. Used to uniquely identify the organization on the ledger

Example: US9QIMA
Responses
200
Successfully triggered the removal
application/json
400
The following error codes can be returned: - GN0002 Please refer to the error code dictionary for the details of each error code.
application/json
401
The following error codes can be returned: - AU0001 - AU0003 Please refer to the error code dictionary for the details of each error code.
application/json
403
The following error codes can be returned: - AU0002 - OG0004 - OG0005 - IS0099 Please refer to the error code dictionary for the details of each error code.
application/json
404
The following error codes can be returned: - IS0009 - OG0001 Please refer to the error code dictionary for the details of each error code.
application/json
409
The following error codes can be returned: - IS0013 - IS0010 - IS0062 - SP0004 - SP0005 Please refer to the error code dictionary for the details of each error code.
application/json
put
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"
}