openapi: 3.1.0 info: version: 1.0.1 title: Root Applications Notifications API description: Root is an end-to-end digital insurance platform that enables you to launch new products and digital engagement channels fast. termsOfService: https://rootplatform.com/about contact: name: Root support team url: https://rootplatform.com/contact email: support@root.co.za servers: - url: https://sandbox.uk.rootplatform.com/v1/insurance description: United Kingdom multi-tenant - sandbox - url: https://api.uk.rootplatform.com/v1/insurance description: United Kingdom multi-tenant - production - url: https://sandbox.rootplatform.com/v1/insurance description: South Africa multi-tenant - sandbox - url: https://api.rootplatform.com/v1/insurance description: South Africa multi-tenant - production security: - basicAuth: [] tags: - name: Notifications paths: /custom-notification-events/{custom_event_key}/trigger: post: operationId: trigger-custom-notification-event summary: Trigger a custom notification event description: 'Queue a custom notification request (or first queue policy documents to be generated if there are email attachments). A `200 (Success)` response does not indicate that the notification was sent successfully. Please refer to the [custom notification events](doc:custom-notification-events) guide. ' tags: - Notifications x-additional-tags: - Endpoints parameters: - name: custom_event_key in: path description: The key identifiying the custom notification event. required: true schema: type: string example: policyholder_birthday requestBody: content: application/json: schema: type: object required: - custom_event_type properties: custom_event_type: $ref: '#/components/schemas/custom-event-type' policy_id: type: string description: The UUID of the policy for which the event should be triggered. Required if `custom_event_type` is `policy` or `payment_method`. payment_id: type: string description: The UUID of the payment for which the event should be triggered. Required if `custom_event_type` is `payment`. claim_id: type: string description: The UUID of the claim for which the event should be triggered. Required if `custom_event_type` is `claim`. example: custom_event_type: policy policy_id: 21e26db0-e620-4472-ba21-886208f99b54 responses: '200': description: Success /notifications: get: operationId: fetch-notifications summary: List all notifications tags: - Notifications x-additional-tags: - Endpoints parameters: - name: channel in: query description: Either `email`, `sms` or `other`. If omitted defaults to fetching notifications across all channels. required: false schema: type: string - name: provider in: query description: Either `root_standard`, `external` or `root_webhooks`. If omitted defaults to fetching notifications across all providers. required: false schema: type: string - name: policy_id in: query description: The unique identifier for the policy to filter by. required: false schema: type: string - name: policyholder_id in: query description: The unique identifier for the policyholder to filter by. required: false schema: type: string - name: claim_id in: query description: The unique identifier for the claim to filter by. required: false schema: type: string - name: exclude_types in: query description: Optionally exclude notification types from the returned results. required: false schema: type: string responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/notifications' example: - notification_id: dccdd659-0a42-4df2-9d02-5df9f98a2433 organization_id: 00000000-0000-0000-0000-000000000001 channel: email notification_type: claim_received provider: root_mandrill created_at: '2022-06-21T08:39:24.293Z' created_by: type: user id: 00000000-0000-0000-0000-000000000001 status: queued status_updates: - status: queued createdAt: '2022-06-21T08:39:24.293Z' linked_entities: policy_id: 11111112-0000-0000-0000-000000000008 policyholder_id: 00000000-0000-0000-0000-000000000004 claim_id: 535e439c-3d75-43cc-b706-3a0b05dec894 data: to: - name: Tim type: to email: tim@smith.com html:
hello
subject: 'Claim #F0BABAC137E6 received' from_name: Policy Administration System from_email: no-reply@policy@adminsystem.com attachments: [] - notification_id: 43c13dc8-2c19-402c-bb70-a7deb56b9f38 organization_id: 00000000-0000-0000-0000-000000000001 channel: sms notification_type: policy_issued provider: root_clickatell created_at: '2022-06-23T07:59:53.261Z' created_by: type: user id: 6f852057-b381-4ab0-a53d-93a6c2ec6f26 status: delivered status_updates: - status: queued createdAt: '2022-06-23T07:59:53.261Z' - status: sent createdAt: '2022-06-23T07:59:54.000Z' description: Delivered to gateway (003) - status: delivered createdAt: '2022-06-23T07:59:57.000Z' description: Received by recipient (004) linked_entities: policy_id: b338a75b-207e-4b6c-8649-4c0ebfe39d8b policyholder_id: b5b10383-0b50-4965-8bff-addb2001c5d1 data: to: - '+27811231234' content: Congratulations! Your Cover has been activated from 01/06/2022. post: operationId: create-external-notification summary: Create an external notification tags: - Notifications x-additional-tags: - Endpoints description: Create a notification with provider of `external`. If you use an integration external to Root to send notifications to end customers, you can use this endpoint to record the notification on Root and link it to the relevant entities (such as a policy or claim). parameters: [] requestBody: content: application/json: schema: type: object required: - channel - status - notification_type - linked_entities - data properties: channel: type: string description: The channel over which the notification is sent. enum: - email - sms - other status: type: string description: The status of the notification. enum: - sent - rejected failure_reason: type: string description: Forbidden if `status` is not `rejected`. The reason for the notification failure. notification_type: type: string description: The event the notification is linked to. enum: - payment_failure_1st - payment_failure_4th - payment_failure_15th - payment_failure_debit_order - payment_success_debit_order - payment_success_external - payment_failure_eft - payment_failure_on_demand_cover_period - payment_failure_on_demand_monthly - payment_failure_card - payment_failure_external - payment_reversal - payment_method_blocked - payment_method_failed_verification - payment_method_updated - policy_issued - beneficiaries_updated - covered_people_updated - debit_orders_activated - eft_activated - policy_policyholder_updated - policy_cancelled - policy_lapsed - policy_not_taken_up - policy_expired - policy_updated - first_premium_payment - sum_assured_updated - policy_requoted - policy_reactivated - policy_anniversary - external_payments_activated - alteration_package_applied - claim_approved_beneficiary - claim_approved - claim_received - claim_repudiated - claim_linked_to_policy - claim_sent_to_review - claim_decision_review - claim_sent_to_review_claimant - send_application_pdf_to_policyholder - complaint_received - custom - custom_event linked_entities: description: Entities linked to the notification. type: object required: - policy_id properties: policy_id: type: string description: Must be a UUID. The unique identifier of the policy linked to the notification. data: $ref: '#/components/schemas/notification-data' example: channel: email status: sent notification_type: policy_issued linked_entities: policy_id: 3d292076-a531-4028-988e-e863b04d8497 data: from_email: erlich@aviato.com from_name: Erlich Bachman reply_to_email: erlich@aviato.com subject: Hello html:
hello
to: - name: Dinesh email: dinesh@piedpiper.com attachments: - type: application/pdf name: AviatoS3Script.pdf example: channel: email status: sent notification_type: policy_issued linked_entities: policy_id: 3d292076-a531-4028-988e-e863b04d8497 data: from_email: erlich@aviato.com from_name: Erlich Bachman reply_to_email: erlich@aviato.com subject: Hello html:
hello
to: - name: Dinesh email: dinesh@piedpiper.com attachments: - type: application/pdf name: AviatoS3Script.pdf responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/notification' example: notification_id: ff693e05-244a-4b48-97fa-237ebafc4c29 organization_id: 2f26d0e1-9158-4685-83e8-1660c27e4c3f channel: email notification_type: policy_issued provider: external created_at: '2022-06-23T08:38:30.703Z' created_by: type: api_key id: 95d369a6-93c0-4687-9506-86f1659a6d3e owner_id: 2f26d0e1-9158-4685-83e8-1660c27e4c3f status: sent status_updates: - status: sent created_at: '2023-02-15T09:49:45.503Z' linked_entities: policy_id: 3d292076-a531-4028-988e-e863b04d8497 data: from_email: erlich@aviato.com from_name: Erlich Bachman reply_to_email: erlich@aviato.com subject: Hello html:
hello
to: - name: Dinesh email: dinesh@piedpiper.com attachments: - name: AviatoS3Script.pdf type: application/pdf /notifications/{notification_id}: get: operationId: retrieve-a-notification summary: Retrieve a notification tags: - Notifications x-additional-tags: - Endpoints parameters: - name: notification_id in: path description: The unique identifier of the [notification](ref:notification). required: true schema: type: string example: 43c13dc8-2c19-402c-bb70-a7deb56b9f38 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/notification' patch: operationId: update-external-notification summary: Update an external notification tags: - Notifications x-additional-tags: - Endpoints description: Update the status of a notification with provider of `external`. parameters: - name: notification_id in: path description: Must be a UUID. The unique identifier of the notification to update. required: true schema: type: string example: 3ac406c1-b5f4-4850-a615-d4bb2b951039 requestBody: content: application/json: schema: type: object required: - status properties: status: type: string enum: - queued - sent - delivered - rejected - opened - unknown_error description: The new status of the notification. status_update_description: type: string description: A description of or reason for the update to the notification status. This will be stored as part of the `status_updates` array on the [notification object](ref:notification). example: status: rejected status_update_description: Hard bounce - invalid mailbox. example: status: rejected status_update_description: Hard bounce - invalid mailbox. responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/notification' example: notification_id: ff693e05-244a-4b48-97fa-237ebafc4c29 organization_id: 2f26d0e1-9158-4685-83e8-1660c27e4c3f channel: email notification_type: policy_issued provider: external created_at: '2022-06-23T08:38:30.703Z' created_by: type: api_key id: 95d369a6-93c0-4687-9506-86f1659a6d3e owner_id: 2f26d0e1-9158-4685-83e8-1660c27e4c3f status: rejected status_updates: - status: queued created_at: '2023-02-15T09:48:04.799Z' - status: rejected created_at: '2023-02-15T09:49:45.503Z' description: Hard bounce - invalid mailbox. linked_entities: policy_id: 3d292076-a531-4028-988e-e863b04d8497 data: from_email: erlich@aviato.com from_name: Erlich Bachman reply_to_email: erlich@aviato.com subject: Hello html:
hello
to: - name: Dinesh email: dinesh@piedpiper.com attachments: - name: AviatoS3Script.pdf type: application/pdf components: schemas: custom-event-type: type: string description: The type of custom event. Must match the type on the Root management dashboard. enum: - policy - payment_method - payment - claim notification-other-data: type: object required: - to - content - content_type properties: to: type: string description: An array containing phone numbers that the notification was sent to. content: type: string description: Content for the SMS notification. content_type: type: string description: Whether it was `text` or `html`. app_data: type: - object - 'null' description: '`null` is allowed. An object containing additional custom data for the SMS notification.' additionalProperties: true notification-email-data: type: object required: - subject - html - attachments - to properties: from_email: type: string description: Email address of who sent the email notification. from_name: type: string description: Name of who sent the email notification. reply_to_email: type: string description: Recipient of who to respond to for the email notification. subject: type: string description: Email subject. html: type: string description: The HTML structure of the email body. attachments: type: array description: An array of objects containing a list of `type` and `name` pairs for the attachments on the email notification. items: type: object properties: type: type: string description: Whether the file is a document or image. name: type: string description: The name of the file to: type: array description: An array of objects containing a list of `email` and `name` pairs of the recipients of the email notification. items: type: object properties: email: type: string description: The desired recipient's email. name: type: string description: The recipient's name. notification: type: object required: - notification_id - notification_type - linked_entities - channel - provider - created_at - created_by - status - status_updates properties: notification_id: type: string description: The identifier of the notification. organization_id: type: string description: The identifier of the organization. notification_type: type: string description: Indicates the type of notification (e.g., policy_issued). linked_entities: type: object description: Indicates which entities the notification is linked to. properties: policy_id: type: string description: The identifier of the policy. channel: type: string description: The channel used for the notification. Channels available include `email`, `sms` or `other`. provider: type: string description: Indicates how the notification was generated. Whether it was `external`, `root_standard` or `root_webhooks`. created_at: type: string format: date-time description: Time at which the notification was created. created_by: type: object description: An object indicating the user or API key that created the notification. See [Authentication](#client-apps). status: type: string description: The current status of the notification. enum: - queued - sent - delivered - rejected - opened - unknown_error status_updates: type: array description: An array of status update information for the notification. items: type: object properties: status: type: string description: The status that the notification was updated to. enum: - queued - sent - delivered - rejected - opened - unknown_error createdAt: type: string format: date-time description: Time at which the status update was created. description: type: string description: An optional detailed description of the status update. required: - status - createdAt data: $ref: '#/components/schemas/notification-data' example: notification_id: 43c13dc8-2c19-402c-bb70-a7deb56b9f38 organization_id: 4ce6ad99-9576-4d28-84ba-c30d2d536cbe channel: sms notification_type: policy_issued provider: root_clickatell created_at: '2022-06-23T07:59:53.261Z' created_by: type: user id: 6f852057-b381-4ab0-a53d-93a6c2ec6f26 status: delivered status_updates: - status: queued createdAt: '2022-06-23T07:59:53.261Z' - status: sent createdAt: '2022-06-23T07:59:54.000Z' description: Delivered to gateway (003) - status: delivered createdAt: '2022-06-23T07:59:57.000Z' description: Received by recipient (004) linked_entities: policy_id: b338a75b-207e-4b6c-8649-4c0ebfe39d8b policyholder_id: b5b10383-0b50-4965-8bff-addb2001c5d1 data: to: - '+27811231234' content: Congratulations! Your Cover has been activated from 01/06/2022. notification-sms-data: type: object required: - to - content properties: to: type: array items: type: string description: An array containing phone numbers that the notification was sent to. content: type: string description: Content for the SMS notification. content_type: type: string description: Whether it was `text` or `html`. app_data: type: - object - 'null' description: '`null` is allowed. An object containing additional custom data for the SMS notification.' additionalProperties: true notification-data: type: object description: An object containing additional data depending on whether the notification channel is `email`, `sms`, or `other`. oneOf: - $ref: '#/components/schemas/notification-email-data' - $ref: '#/components/schemas/notification-sms-data' - $ref: '#/components/schemas/notification-other-data' notifications: type: array items: $ref: '#/components/schemas/notification' securitySchemes: basicAuth: type: http scheme: basic x-readme: explorer-enabled: true proxy-enabled: true samples-enabled: true