Real-Time Notifications

The Integration API generates notification events on every platform action and data update that is available for the organization. Events are used to communicate with another applications, such as back-office systems. Amazon SNS drives the app-to-app notifications generated by the Integration API endpoints.

See this article for more information on parsing SNS message formats.

The fields of interest for the consuming application are:

  • Subject

  • Message

The message contains a Sequence Entry object as a JSON string. A client that subscribes directly to the event bus needs to convert the JSON string to a JSON object.

Samples

Here’s an example of a transaction notification:

{
  "Type" : "Notification",
  "MessageId" : "8573ee79-98cd-555b-a60b-b1b3a134969e",
  "TopicArn" : "arn:aws:sns:us-east-1:167084005627:integration-api-notifications-devg1",
  "Subject" : "Success Reconciliation on Process 8d455aac-08b0-4bc3-8e92-bcb9a191af83",
  "Message" : "{\"transaction\":{\"processId\":\"8d455aac-08b0-4bc3-8e92-bcb9a191af83\",\"status\":\"success\",\"type\":\"issuance\",\"method\":\"createInvestment\",\"timestamp\":\"2024-12-04T11:06:24.649Z\",\"blockchainDetails\":{\"blockNumber\":2298,\"channelName\":\"devg1\",\"transactionId\":\"5a3e131fa113d8798b82e1cd6e05d1df5075207b50fb27e016f1c74481513921\"},\"details\":{\"assetIds\":[\"DEVW1P6ZVMJM\"]}}}",
  "Timestamp" : "2024-12-04T11:06:33.957Z",
  "SignatureVersion" : "1",
  "Signature" : "ZdVuGHDohEnHV05x4DCLjFspeApyzYOIjI8ijn58TwwXZBTMEJstAwH0NGaeXzNuqfSplDustTMQeaWqjtRyNYYq7ekiNCkJOj9fNJHh2wzmYs3dZwxTfwAeyMnRnzUYKdbOKQlswJu/yMGku4cSukHaekmPZ4DJL7llVDSzPpXu3FQ/82OaOJ+uCCCKDIFuaEhLXT5/7TIEdJGSiUmlFFfhGr5vuV5h+KvwfcZ/LlAN6R9n2PYEl3s5u7h6S9ozjGAZWaWoC7zRdKCZxQ+weziBd/aqXEFyvwzuAV/rnZZBvUWhRsm3ChzqD5SHEgpSqQ667tgTt/7l2SVfy7Np0Q==",
  "SigningCertURL" : "",
  "UnsubscribeURL" : ""
}

Here's the parsed payload for the transaction notification:

{
  "transaction": {
    "processId": "8d455aac-08b0-4bc3-8e92-bcb9a191af83",
    "status": "success",
    "type": "issuance",
    "method": "createInvestment",
    "timestamp": "2024-12-04T11:06:24.649Z",
    "blockchainDetails": {
      "blockNumber": 2298,
      "channelName": "devg1",
      "transactionId": "5a3e131fa113d8798b82e1cd6e05d1df5075207b50fb27e016f1c74481513921"
    },
    "details": {
      "assetIds": [
        "DEVW1P6ZVMJM"
      ]
    }
  }
}

Here's an example of an error notification:

{
  "Type" : "Notification",
  "MessageId" : "56ca49e4-a67e-560e-b235-162eee3e48c5",
  "TopicArn" : "arn:aws:sns:us-east-1:167084005627:integration-api-notifications-devg1",
  "Subject" : "New error had been saved to the database.",
  "Message" : "{\"error\":{\"errorId\":\"d953a545-e64a-487e-970b-e9eb567ac4d9\",\"action\":{\"id\":\"CEOM002\",\"name\":\"Update OAuth Client\",\"httpData\":{\"method\":\"PUT\",\"url\":\"/external/v1/oauth/client\"}},\"timestamp\":\"2024-12-04T12:07:28.604Z\"}}",
  "Timestamp" : "2024-12-04T12:07:28.720Z",
  "SignatureVersion" : "1",
  "Signature" : "DDo0sRvowuioWUbSo8Kkx2rUBgfpXhAWehsAYeUt05tH2X83PMijNditGhkvjKd8bxDKVmPS1dwG9NmStlblfb9QhhAsV9sm0wGp7OQm2TpHgGlG+TQmq+jSfRDThtiUARze8Cs7lLtusKKFb9YnPWFf1/4/kOV71scy8uGJtXWCQpJsYcWTF3/CwPo6niSXleKCl/mmEcBv/J9CREKVvmgPsLhNvSwNngIuoKvq0niFiO98uGswU3llKmwdFe2EY6ZhqwEEivSMRF3u2bH0JTtOr0xHzy727+h4VOyfwLmy/QiTkefyIV8pEJ4BZAH9XFB5nxvMeSFKbhT3izsutg==",
  "SigningCertURL" : "",
  "UnsubscribeURL" : ""
}

Here's the parsed payload for the error notification:

{
  "error": {
    "errorId": "d953a545-e64a-487e-970b-e9eb567ac4d9",
    "action": {
      "id": "CEOM002",
      "name": "Update OAuth Client",
      "httpData": {
        "method": "PUT",
        "url": "/external/v1/oauth/client"
      }
    },
    "timestamp": "2024-12-04T12:07:28.604Z"
  }
}

Here's an example of an orchestration notification:

{
  "Type" : "Notification",
  "MessageId" : "ee8c8bb5-3dbd-539e-8b3b-d47f5ce46255",
  "TopicArn" : "arn:aws:sns:us-east-1:167084005627:integration-api-notifications-devg1",
  "Subject" : "Notification for orchestration 912cbbd1-584e-4e8e-a275-4ad2467b309d",
  "Message" : "{\"orchestration\":{\"orchestrationId\":\"912cbbd1-584e-4e8e-a275-4ad2467b309d\",\"status\":\"success\",\"timestamp\":\"2024-12-04T13:54:33.277\",\"processIds\":[\"79aac96a-ac70-403b-8b1f-91d8273c21ea\"]}}",
  "Timestamp" : "2024-12-04T13:54:33.277Z",
  "SignatureVersion" : "1",
  "Signature" : "dCk226+b37jGDeEFUqRnOALQoEjQ0deLfXJxC3iIkaShkzqFLHiXfjuNqQkokbCjNHZEUjHQ8wO4hO9cXb5UcyeWwffp8xkfediQLsyM0Y9Jyu9ljcd7cxR7nj1WU/F0bTvQJ2cpl7DP5crmqeyC5cea3B1uhoXjqCm2X3vopJzJ1A9NDoRFXVOUS+Qcg1KOvhI1001vvf15448aKEbuiWVnA9DWxlmQ542Azfc4z6HELpp9jc4moVl9pvWlDD/S25WSM67moBjBaxEDWCer4fXvvkzcONLoZGtdPUxJf2mnOwuTMchBzL3n2pI0OMODm1DIQweyNyoRVcYgWCoz9g==",
  "SigningCertURL" : "",
  "UnsubscribeURL" : ""
}

Here's the parsed payload for the orchestration notification:

{
  "orchestration": {
    "orchestrationId": "912cbbd1-584e-4e8e-a275-4ad2467b309d",
    "status": "success",
    "timestamp": "2024-12-04T13:54:33.277",
    "processIds": [
      "79aac96a-ac70-403b-8b1f-91d8273c21ea"
    ]
  }
}

Corastone Notifications Recipients

Only those organizations entitled to the corresponding data will receive the notifications. For example, when an investing org calls Create Asset to invest in a security, the organizations that receive notifications confirming asset creation include:

  • the investing org

  • the asset manager handling the security

  • the fund administrator handling the security

Other investing orgs, including those on the exclusivity list for the security, do not receive the notification because they are not entitled to the data for this call.

Last updated

Was this helpful?