API Reference

The Sargon API is organised around REST.

Our API has resource-oriented URLs, and uses HTTP response codes to indicate API errors.

We support cross-origin resource sharing, allowing you to interact securely with our API from a client-side web application (though you should never expose your secret API key in any public website's client-side code).

JSON is returned by all API responses, including errors, although our API libraries convert responses to appropriate language-specific objects.

To make the API as explorable as possible, we have test mode and production mode API keys. Requests made with test mode credentials are for prototyping only and do not hit our production systems.

Authentication

First, you will need some API Keys for your application. You can create and manage your API keys in the Developers section of your account. Depending on the type of application you create, you will need a Client ID and for backend applications also a Client Secret. You can create multiple sets of credentials to represent each of your applications.

Your API credentials carry many privileges, so be sure to keep them secure. Do not share your secret keys in publicly accessible areas such GitHub, client-side code, and so forth.

All API requests must be made over HTTPS. Calls made over plain HTTP will fail. In most cases, API requests without the appropriate authentication will also fail, with the exception of some endpoints as outlined in Unauthenticated Access below.

Node.js API Client Library

Once you have your credentials, you have the option of using our Node.js client library to easily get started.

npm install @sargon/api-client

Hitting Our Endpoints Directly

You can also hit our endpoints directly on api.sargon.com. We recommend using tools such as Postman or cURL to test the endpoints.

Access and Authorization Scopes

The API can be accessed in various ways:

  • Unauthenticated Access: Some endpoints may be accessed without first verifying the user's identity. An example is Create Member that is used for onboarding new members.
  • User Access: User access is for requests representing a user, for example a fund member.
  • Integration Access: Integration access is for access to fund-level data and machine-to-machine API usage.

Upon access, the API uses OAuth authorisation scopes to ensure secure access for the appropriate user and integration.

Available scopes:

  • https://api.sargon.com/member Provides 'member level' information and typically used for member-facing online experiences. For security, the API scope is restricted to access an individual member.
  • https://api.sargon.com/integration Provides 'fund level' information and facilitates flexible integrations to analytics and operational software. This only be requested using a backend client and Client Credentials grant.

Further details on the appropriate access can be found below.

Unauthenticated Access

Some endpoints may be accessed without first verifying the user's identity. An example is the Create Member endpoint, typically used in member on-boarding and "sign up" applications. For these endpoints, you can use your application's Client ID credential in the request as header X-Api-Key. The format of the request header is:

X-Api-Key: [Client ID]

User Access

The AuthenticatedUser access is for requests representing a user and requires the appropriate user credentials.

The user credentials are exchanged for an OAuth 2 token with appropriate scopes. That token is used for all subsequent requests to the API for the session.

To authenticate, you will need to first request an access token:

  • For new users: You can create a new user via the Create Member endpoint, or;
  • For existing users: You can authenticate with their username and password from the Amazon Cognito Authorization (OAuth) server that we have configured for your fund. You can obtain this information from the Developers section of your account.

Then, you will need to use the access token as part of your HTTP Bearer Token Authorization. To do this, add the following request header:

Authorization: Bearer <token>

Available scopes:

  • https://api.sargon.com/member

The authentication allows the API to be secured at the individual member level and mitigate the risks of data breach of overall fund data. Our OAuth server is powered by Amazon Cognito and allows for flexible identity integration options. Please contact helpdesk@sargon.com to learn more.

Integration Access

The Integration access is used for machine-to-machine API usage. Integration level access tokens can only be requested using a backend application and client_credentials OAuth flow and will require special access to be granted due to the increased level of risks involved.

Available scopes:

  • https://api.sargon.com/integration

Security

The API has been designed from the ground up with security in mind including access control, API security best practices including industry and widely accepted standards for authentication.

The security implementation within the API is part of a larger Sargon security environment and is enhanced by additional security measures at the network infrastructure and back-office system layers.

For production applications integrating with Sargon, an additional integration security assessment and monitoring as an additional layer of security. Please read our Security Guidelines.

Multi-Factor Authentication (MFA)

Some API operations require additional authorisation through the use of a One Time Password (OTP) from the member. In these cases the API will return a HTTP Status 401 (Unauthorised) and provide additional information in the X-Super-OTP response header. While MFA is important in mitigating security risks, OTP restrictions may be relaxed upon request of specific circumstances where other security controls are applicable.

The format of the X-Super-OTP response header is:

X-Super-OTP: [status]

Status values:

  • required - A One-time password is required for this operation. Please retry the operation including X-Super-OTP header.
  • valid - A previous challenge is still valid and a challenge is not required for this operation.

The are multiple OTP scopes that can be obtained depending on the endpoint you wish to access. Each endpoint will detail the scope required.

In general you will request a read OTP when the member first logs in, which will give read access for the duration of the session. If the member wishes to perform a more privileged operation, such as updating their details, an additional write otp can be requested.

OTP scopes:

  • read - provides limited access and once verified will be valid for the duration of the current member session.
  • write - provides full access but will expire 10 minutes after verification.

When an OTP is required the client can request one using the /members/:memberId/otp endpoint and specifying the required scope.

This will return details of the generated code, including the type so that the client can prompt the user accordingly.

Supported OTP types:

  • sms - A text message with the One Time Password has been sent to the member's registered mobile phone.

Verifying OTP codes:

Once the user has provided the code there are 2 options for verification:

  • Explicitly verify the code by calling the /members/:memberId/otp/verify endpoint. This will return details of the OTP session.
  • Send the desired request and specify the code in the X-Super-OTP request header. The OTP code will be verified and the request performed as normal.

Pagination

Some top-level API resources have support for bulk fetches via "list" API methods. For instance, you can list members and transactions.

These list API methods share a common structure, taking at least these two parameters: i (page size), and o (and the starting offset).

Errors

Sargon uses conventional HTTP response codes to indicate the success or failure of an API request.

In general:

  • Codes in the 2xx range indicate success.
  • Codes in the 4xx range indicate an error that failed given the information provided (e.g. required and/or insufficient parameters)
  • Codes in the 5xx range indicate an error with Sargon's servers (these are rare).

Errors that could be handled programmatically include an error code that briefly explains the error reported.

Versioning

We generally avoid make backwards-incompatible changes to the API. By default, all API calls will be made to the latest version of our API.

In special circumstances, you can set the API version on a specific request by using the Sargon-Version HTTP header or a corresponding API client library parameter.

Events

Events represent important things that occur in your fund. When an important event occurs we record the facts in an Event object. Some examples are when a member is created, or when a rollover is completed.

An event represents the state of the resource at the point in time that the event occurred.

You can use the list recent events endpoint to retrieve a list of recent events that have occurred within your fund. More event related endpoints will be added over time.

You can also setup event 'listeners' to receive information about events in near real-time. This is via Webhooks. A Webhook allows you to receive event data directly on an endpoint on your server.

The Event object attributes:

Attribute

Description

id

the UUID of the event

type

the name of the event type

mode

either sandbox or live

created

the date the event was created

data

Object that contains the data that is specific to the event type

TYPES OF EVENTS

This is a list of the currently supported types of events. More will be added in the short term.

Event

Description

member.created

This occurs when a new member is created

rollover.received

This occurs when a rollover is received

contribution.received

This occurs when a contribution is received

Webhooks

Sargon uses webhooks to notify your application when key events happen on your fund. When there is an important event worth notifying about, an Event object is created every time with data detailing what happens. This includes transactional events such as rollover and contribution transaction notifications.

A webhook endpoint is like a phone number that Sargon can call when events happen in your Sargon account. You will need to specify an endpoint for each webhook created. Your endpoint must be protected by SSL and the SSL certificate must be valid. Each webhook has a signing secret that we use to create a signature which we include in the webhook payload. This allows you to verify that the webhook payload can be trusted.

You can configure a webhook that defines an HTTPS endpoint on your server that will receive event related information in near real-time.

We POST a payload to your endpoint and include the following important HTTP headers:

Header

Description

x-super-signature

The timestamp the message was sent in seconds since epoch.

x-super-timestamp

The computed HMAC SHA-256 of signed payload. The signed payload is [x-super-signature].[request body].

For example, your server code can verify the message by concatenating x-super-signature, a full stop, and the request body; then computing the HMAC; then asserting that the computed HMAC matches the signature (x-super-signature).

Note: when the signing secret is regenerated it is possible to delay the expiry of the current secret to allow time to update your server endpoints. In this case, the will be multiple signatures in x-super-signature.

If your server endpoint returns an error, the webhook will retry a maximum of 20 times.

We advise that your server endpoint be designed to return a 200 response as soon as possible. If your endpoint performs potentially long running operations (e.g. connecting to other systems, sending email, etc) then these should ideally be executed asynchronously. Webhooks will wait no longer than 20 seconds for a response - at which point we will assume a failure and schedule a retry attempt.

Identifiers

Generally, the API uses UUID as the primary unique identifier for most Resources.

That being said, the API consists of a number of identifiers for a Member. The use of the appropriate identifier depends on your specific use cases. These are:

  • memberId (Member UUID): A unique UUID generated instantly and is returned synchronously upon Create New Member. This is the primary system identifier for a Member. Like other UUIDs, this is typically not communicated to the member and is used as a system identifier.
  • impactId (Impact ID or Friendly Member Id): A sequential number generated upon Create New Member by Sargon Impact. It is unique and more 'human friendly' than memberId (Member UUID). While this number is useful in some use cases, we recommend transitioning away from the use of impactId when communicating to members in favour of a more familiar and intuitive identifier such as email.
  • registryId (Registry Identifier): An identifier allocated by your applicable fund registry. It has the following characteristics:

    • The registryId is typically not generated instantly and cannot be returned synchronously upon the creation of a new member. It is typically allocated after the memberId (Member UUID) and impactId (Member Number) have been assigned.
    • The registryId may be communicated to members in their official statements and communications produced by the underlying fund registry. You can retrieve the registryId after a new Member has been created via a webhook.

Environments

Our API has two environments to facilitate testing and prototyping. Accessing different environments will require separate API keys. These environments are:

  • Sandbox: Sandbox environment for user acceptance testing.
  • Live: Production-grade environment ready for end-customers.

Each environment will connect to a separate database. In special circumstances, custom configurations and data migrations may be required. Please contact helpdesk@sargon.com to learn more.

Currency values

Our API returns dollar values as 'money objects'. In the usual case, a dollar value is represented as the number of whole cents, in currency 'AU'.

For example, the below money object represents AUD $100.10

{
  "amount": 10010,
  "currency": "AUD",
  "precision": 2
}

In the case of the Get Historical Investment Performance endpoint, the buy price and sell price values are represented like this:

{
  "amount": 1234567,
  "currency": "AUD",
  "precision": 6
}

The above example represents a dollar value of $1.234567 (precision is to 6 decimal places).

A popular javascript library such as Dinero will accept the above money objects, e.g:

const price = Dinero({ "amount": 1234567, "currency": "AUD", "precision": 6 })
Members

Member Resources represent the Members or the investors of a fund. Members are the cornerstone of the API and other resources are related to a Member. The API allows funds to efficiently and programmatically manage their Members:

  • At an individual Member level secured using the member scope, and;
  • At an overall fund level using the integration scope
Create New Member

No authentication (other than API Key) is required to create a new Member. On creation, a valid access token with member scope will be returned in the response to be used for further API requests on behalf of this member. New Member requests are created as temporary entities at the API level (not propagated to the underlying fund registry) until the member has provided sufficient details and been verified for their identity. Once a member's identity has been verified, some attributes will no longer be updatable. These attributes are shown with an unverified indicator. If no postal address is supplied it will be defaulted to be the same as the residential address.

Authorization

UnauthenticatedUser

Request body

familyName

string

required

The Member's family name. In western countries this is usually the surname or lastname.

givenName

string

required

The Member's given name. In western countries this is usually the first name.

id

string

required

The Universally Unique Resource Identifier (UUID) for this Resource.

addressPostal

object

required

Postal Address

addressResidential

object

required

Residential Address

birthDate

string

required

The Member's Date of Birth. This value may be obfuscated by the API. In this case an asterisk will replace any masked characters.

email

string

required

Email Address

gender

string

required

Gender of the person.

group

string

Member Group. This is typically used to group cohorts of members or to provide attribution on the source of the member.

memberStatus

string

required

Membership Status. The specific membership status and meanings utilised may vary on a fund by fund basis.

phoneMobile

string

required

Mobile Phone Number in E.164 international format, e.g. +61412345678.

password

string

Password of the member to login.

taxId

string

The Member's Tax Identifier. For Australia, this is the Tax File Number. This value may be obfuscated by the API. In this case an asterisk will replace any masked characters.

Responses

201 - Member Created Resource

data

object

Member Resource

links

object

meta

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

409 - Conflict - The email address has already been used

errors

array

required

POST
https://api.sargon.com/v1/members
Example request:
{ "familyName": "Doe", "givenName": "John", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "addressPostal": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "addressResidential": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "birthDate": "1967-**-**", "email": "john@test.com", "gender": "Male", "group": "string", "memberStatus": "Active", "phoneMobile": "+61412345678", "password": "pa$$word", "taxId": "123456789" }
Example response: 201 - Member Created Resource
{ "data": { "familyName": "Doe", "flagInsured": true, "flagIsContributor": true, "givenName": "John", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "impactId": "string", "joinedDate": "2014-12-15T12:31:00Z", "memberNumber": "string", "registryId": "string", "addressPostal": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "addressResidential": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "birthDate": "1967-**-**", "email": "john@test.com", "gender": "Male", "group": "string", "idVerificationStatus": "Validated", "memberStatus": "Active", "phoneMobile": "+61412345678", "taxIdStatus": "Supplied" }, "links": { "self": "string" }, "meta": { "token": { "expires_in": 0, "id_token": "string", "token_type": "string" } } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 409 - Conflict - The email address has already been used
{ "errors": [ { "code": "string", "detail": "string", "source": { "pointer": "string" }, "status": "404" } ] }
Get Member

Return the full representation of the requested member by member UUID.

When accessed using member scope, the result is limited to the currently authenticated member.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Responses

200 - Member Resource

data

object

Member Resource

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}
Example response: 200 - Member Resource
{ "data": { "familyName": "Doe", "flagInsured": true, "flagIsContributor": true, "givenName": "John", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "impactId": "string", "joinedDate": "2014-12-15T12:31:00Z", "memberNumber": "string", "registryId": "string", "addressPostal": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "addressResidential": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "birthDate": "1967-**-**", "email": "john@test.com", "gender": "Male", "group": "string", "idVerificationStatus": "Validated", "memberStatus": "Active", "phoneMobile": "+61412345678", "taxIdStatus": "Supplied" } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Update Member

Update or perform an operation on a Member resource.

Once a member has been identity verified, some attributes will become readOnly.

For an identity verified member, only these properties are updatable: addressPostal, addressResidential.

To change important communication details such as email and phoneMobile, you should first verify the member's details using Verifications.

In the case where the API detects no changes between the update request and current member details, the API will return a HTTP 200 status.

A valid OTP session with write scope is required to perform this operation.

When accessed using member scope, this operation is limited to the currently authenticated member.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

MEMBER OTP REQUIRED

scope: write

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Request body

addressPostal

object

Postal Address

addressResidential

object

Residential Address

birthDate

string

The Member's Date of Birth. This value may be obfuscated by the API. In this case an asterisk will replace any masked characters.

email

string

Email Address

familyName

string

The Member's family name. In western countries this is usually the surname or lastname.

gender

string

Gender of the person.

givenName

string

The Member's given name. In western countries this is usually the first name.

group

string

Member Group. This is typically used to group cohorts of members or to provide attribution on the source of the member.

phoneMobile

string

Mobile Phone Number in E.164 international format, e.g. +61412345678.

taxId

string

The Member's Tax Identifier. For Australia, this is the Tax File Number. This value may be obfuscated by the API. In this case an asterisk will replace any masked characters.

Responses

200 - Member Resource

data

object

Member Resource

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

404 - Not Found

errors

array

required

PUT
https://api.sargon.com/v1/members/{member}
Example request:
{ "addressPostal": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "addressResidential": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "birthDate": "1967-**-**", "email": "john@test.com", "familyName": "Doe", "gender": "Male", "givenName": "John", "group": "string", "phoneMobile": "+61412345678", "taxId": "123456789" }
Example response: 200 - Member Resource
{ "data": { "familyName": "Doe", "flagInsured": true, "flagIsContributor": true, "givenName": "John", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "impactId": "string", "joinedDate": "2014-12-15T12:31:00Z", "memberNumber": "string", "registryId": "string", "addressPostal": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "addressResidential": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "birthDate": "1967-**-**", "email": "john@test.com", "gender": "Male", "group": "string", "idVerificationStatus": "Validated", "memberStatus": "Active", "phoneMobile": "+61412345678", "taxIdStatus": "Supplied" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Balance
Get Member Account Balance

Returns an account balance summary of a member.

Note that when the member is first created, the response will be 404 - Not Found until the member has a transaction on their account.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Responses

200 - Member Balance Resource

data

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/balance
Example response: 200 - Member Balance Resource
{ "data": { "closingBalance": { "amount": 10010, "currency": "AUD", "precision": 2 }, "contribution": { "amount": 10010, "currency": "AUD", "precision": 2 }, "fee": { "amount": 10010, "currency": "AUD", "precision": 2 }, "from": "2014-10-01", "income": { "amount": 10010, "currency": "AUD", "precision": 2 }, "insurance": { "amount": 10010, "currency": "AUD", "precision": 2 }, "openingBalance": { "amount": 10010, "currency": "AUD", "precision": 2 }, "tax": { "amount": 10010, "currency": "AUD", "precision": 2 }, "to": "2014-12-31" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
List Member Balances Over Time

List member's account balance over time.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Query Parameters

frequency

string

Filter by frequency, weekly, monthly, or yearly.

page.size

integer

Pagination Page Size (number of entries per page)

page.offset

integer

Pagination Starting Offset

Responses

200 - Member Balance Collection Response

data

array

links

object

meta

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/balance-over-time
Example response: 200 - Member Balance Collection Response
{ "data": [ { "closingBalance": { "amount": 10010, "currency": "AUD", "precision": 2 }, "contribution": { "amount": 10010, "currency": "AUD", "precision": 2 }, "fee": { "amount": 10010, "currency": "AUD", "precision": 2 }, "from": "2014-10-01", "income": { "amount": 10010, "currency": "AUD", "precision": 2 }, "insurance": { "amount": 10010, "currency": "AUD", "precision": 2 }, "openingBalance": { "amount": 10010, "currency": "AUD", "precision": 2 }, "tax": { "amount": 10010, "currency": "AUD", "precision": 2 }, "to": "2014-12-31", "frequency": "weekly" } ], "links": { "self": "string" }, "meta": { "count": 0, "offset": 0, "total": 0 } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Beneficiaries

The Beneficiary Resources represents the nominated beneficiaries associated with a Member.

List Beneficiaries

List all beneficiaries for the member specified by memberId. Note: Due to a technical limitation, we are currently unable to return the beneficiaries' addresses.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Responses

200 - Beneficiary response

data

array

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/beneficiaries
Example response: 200 - Beneficiary response
{ "data": [ { "address": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "beneficiaryType": "non_binding", "benefitProportion": 100, "birthDate": "1980-01-31", "familyName": "Doe", "givenName": "John", "relationship": "aunt" } ], "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Create Beneficiary Intent

Submit beneficiary intent for the Member. HTTP Status 400 (Bad Request) will be returned by the API if the Update call is made on a Binding Beneficiary

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

MEMBER OTP REQUIRED

scope: write

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Request body

beneficiaries

array

Responses

201 - Beneficiary intent response

data

object

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

POST
https://api.sargon.com/v1/members/{member}/beneficiaries/intents
Example request:
{ "beneficiaries": [ { "address": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "beneficiaryType": "non_binding", "benefitProportion": 100, "birthDate": "1980-01-31", "familyName": "Doe", "givenName": "John", "relationship": "aunt" } ] }
Example response: 201 - Beneficiary intent response
{ "data": { "beneficiaries": [ { "address": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "beneficiaryType": "non_binding", "benefitProportion": 100, "birthDate": "1980-01-31", "familyName": "Doe", "givenName": "John", "relationship": "aunt" } ], "created": "2017-01-31T21:00Z", "id": "string", "updated": "2017-01-31T21:00Z" }, "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Retrieve Latest Beneficiary Intent

Retrieve the latest beneficiary intent for the member specified by memberId.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Responses

200 - Beneficiary intent response

data

object

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/beneficiaries/intents/latest
Example response: 200 - Beneficiary intent response
{ "data": { "beneficiaries": [ { "address": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "beneficiaryType": "non_binding", "benefitProportion": 100, "birthDate": "1980-01-31", "familyName": "Doe", "givenName": "John", "relationship": "aunt" } ], "created": "2017-01-31T21:00Z", "id": "string", "updated": "2017-01-31T21:00Z" }, "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Retrieve a Beneficiary Intent

Retrieve the beneficiary intent with the given ID.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

beneficiaryIntentId

string

Unique UUID of the Beneficiary Intent.

Responses

200 - Beneficiary intent response

data

object

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/beneficiaries/intents/{beneficiaryIntentId}
Example response: 200 - Beneficiary intent response
{ "data": { "beneficiaries": [ { "address": { "countryCode": "AU", "line1": "123 Swanston St", "line2": "Unit 7", "postcode": "3000", "state": "VIC", "suburb": "Melbourne" }, "beneficiaryType": "non_binding", "benefitProportion": 100, "birthDate": "1980-01-31", "familyName": "Doe", "givenName": "John", "relationship": "aunt" } ], "created": "2017-01-31T21:00Z", "id": "string", "updated": "2017-01-31T21:00Z" }, "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Contributions
List Contribution Intents

List all contribution intents for the member specified by memberId.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Query Parameters

page.size

integer

Pagination Page Size (number of entries per page)

page.offset

integer

Pagination Starting Offset

Responses

200 - Contribution intent collection response

data

array

links

object

meta

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/contributions/intents
Example response: 200 - Contribution intent collection response
{ "data": [ { "amount": { "amount": 10010, "currency": "AUD", "precision": 2 }, "created": "2017-01-31T21:00Z", "id": "string", "paymentType": "bpay", "referenceNumber": "string", "updated": "2017-01-31T21:00Z" } ], "links": { "self": "string" }, "meta": { "count": 0, "offset": 0, "total": 0 } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Create Contribution Intent

Submit a contribution intent for the Member. In some scenarios it is useful for customer service officers to have knowledge of the members intended contribution, for example, when manual reconciliation is required.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

MEMBER OTP REQUIRED

scope: write

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Request body

amount

object

required

A money object with a specific currency in ISO 4217 format, an amount, and a precision.

id

string

referenceNumber

string

required

Responses

201 - Contribution intent response

data

object

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

POST
https://api.sargon.com/v1/members/{member}/contributions/intents
Example request:
{ "amount": { "amount": 10010, "currency": "AUD", "precision": 2 }, "id": "string", "referenceNumber": "string" }
Example response: 201 - Contribution intent response
{ "data": { "amount": { "amount": 10010, "currency": "AUD", "precision": 2 }, "created": "2017-01-31T21:00Z", "id": "string", "paymentType": "bpay", "referenceNumber": "string", "updated": "2017-01-31T21:00Z" }, "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Retrieve a Contribution Intent

Retrieve the contribution intent with the given ID.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

contributionIntentId

string

Unique UUID of the Contribution Intent.

Responses

200 - Contribution intent response

data

object

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/contributions/intents/{contributionIntentId}
Example response: 200 - Contribution intent response
{ "data": { "amount": { "amount": 10010, "currency": "AUD", "precision": 2 }, "created": "2017-01-31T21:00Z", "id": "string", "paymentType": "bpay", "referenceNumber": "string", "updated": "2017-01-31T21:00Z" }, "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Retrieve a Contribution Payment Details

Retrieve the contribution payment details. The member should use these payment details when completing their payment, for example, via their internet banking portal.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Responses

200 - Contribution payment details response

data

object

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/contributions/payment-details
Example response: 200 - Contribution payment details response
{ "data": { "account": { "accountName": "string", "accountNumber": "string", "bsb": "string" }, "biller": { "billerCode": "string", "billerName": "string", "crn": "string" } }, "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Investments

Investment Resources represent investment choices and allocations made by the Member.

List Investments

Returns a collection of investments available.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

Responses

200 - Investment Options Collection Response

data

array

links

object

meta

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/investments
Example response: 200 - Investment Options Collection Response
{ "data": [ { "description": "string", "displayName": "string", "frozen": true, "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "key": "string", "legacy": true } ], "links": { "self": "string" }, "meta": { "count": 0, "offset": 0, "total": 0 } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Get Historical Investment Performance

Returns unit price and investment performance data points for the specified investment option.

The unit price can be used to calculate the historical investment performance of the fund. A unit price is the price of one unit of an investment option. When a member invests in their chosen investment option, the money is placed in an investment pool made up of the investments of all members who have chosen that investment option. The investment pool for each option is broken up into units. Every unit the member owns in the investment pool represents their share of the investment option, and has a value. This value is the unit price.

Both the buy_price and sell_price can be returned. For example:

  • The sell_price can be used to calculate member balances and investment performance over time.
  • The buy_price can be used to calculate the number of units that a member can obtain upon a contribution.

Further, the frequency of the unit price calculation may also be returned depending on your fund's unit pricing arrangement. For example:

  • weekly data points represent the prices as at each Friday.
  • monthly data points represent the prices as at the last day of the calendar month.

Prices are represented in whole numbers with precision of 6. This means the the price value can be divided by 10 ^ 6 to determine the floating point value. Caution: take care with floating point arithmetic in Javascript. Consider using a library such as Dinero to parse the money objects returned by this endpoint. For more detail refer to the Currency topic.

Path parameters

investment

string

Unique UUID of the Investment

Query Parameters

page.size

integer

Pagination Page Size (number of entries per page)

page.offset

integer

Pagination Starting Offset

sort

string

Sort by date in ascending/oldest first (asc) or descending/newest first (desc) order.

Responses

200 - Investment Performance Response

data

array

links

object

meta

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/investments/{investment}/performance
Example response: 200 - Investment Performance Response
{ "data": [ { "buyPrice": { "amount": 10010, "currency": "AUD", "precision": 2 }, "date": "2017-01-31", "monthly": true, "sellPrice": { "amount": 10010, "currency": "AUD", "precision": 2 }, "weekly": true } ], "links": { "self": "string" }, "meta": { "count": 0, "offset": 0, "total": 0 } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
List Investments Balance

List the balance information for the specified member's investment allocations.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Responses

200 - Investment Balance Collection Response

data

array

links

object

meta

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/investments/balance
Example response: 200 - Investment Balance Collection Response
{ "data": [ { "buyPrice": { "amount": 10010, "currency": "AUD", "precision": 2 }, "canBuy": true, "canSell": true, "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "investmentDescription": "string", "investmentType": "string", "sellPrice": { "amount": 10010, "currency": "AUD", "precision": 2 }, "units": "string", "valuation": { "amount": 10010, "currency": "AUD", "precision": 2 } } ], "links": { "self": "string" }, "meta": { "count": 0, "offset": 0, "total": 0 } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Request Investment Rebalance / Transfer

Change the investment allocation for the specified member.

The API accepts either:

  • Percentage based rebalance
  • Amount based transfer

Either percent OR transferAmount field must be present in the request.

For percentage based rebalance, a representation of all allocations must be included in the request. The sum of all percentages specified MUST equal 100.

For amount based transfer, the "source" and "destination" investments must be specified in the request. Negative amount should be used for "source" investment. The sum of all amounts specified MUST equal 0.

A valid OTP session with write scope is required to perform this operation.

API will respond with HTTP 202 Accepted status and schedule the update request with the underlying fund registry.

Example

// Percent based
[
  {
    "id": "investment option UUID",
    "percent": 60
  },
  {
    "id": "investment option UUID",
    "percent": 40
  }
]

// Amount based
[
  {
    "id": "source investment option UUID"
    "transferAmount": {
      "amount": -10000,
      "currency": "AUD"
    }
  },
  {
    "id": "destination investment option UUID"
    "transferAmount": {
      "amount": 10000,
      "currency": "AUD"
    }
  }
]

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

MEMBER OTP REQUIRED

scope: write

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Request body

id

string

required

The Universally Unique Resource Identifier (UUID) for this Resource.

percent

number

Percentage to allocate

transferAmount

object

A money object with a specific currency in ISO 4217 format, an amount, and a precision.

Responses

202 - Request Accepted

data

object

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

PUT
https://api.sargon.com/v1/members/{member}/investments/balance
Example request:
[ { "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "percent": 100, "transferAmount": { "amount": 10010, "currency": "AUD", "precision": 2 } } ]
Example response: 202 - Request Accepted
{ "data": { "description": "Your update request has been accepted", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48" }, "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
List Future Cash Allocations

Get the current investment allocation for the specified member. The investment allocation will be applied upon the next cash transaction contributed or rolled over to the member account.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Responses

200 - Investment Cash Allocation Collection Response

data

array

links

object

meta

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/investments/futurecash
Example response: 200 - Investment Cash Allocation Collection Response
{ "data": [ { "displayName": "string", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "key": "string", "percent": 100 } ], "links": { "self": "string" }, "meta": { "count": 0, "offset": 0, "total": 0 } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Update Future Cash Allocations

Update member's investment future cash allocations.

This Resource accepts a JSON array of InvestmentAllocation Resources which each contain a pointer to an Investment Resource and percentage attribute.

A representation of all allocations must be included in the request. The sum of all percentages specified MUST equal 100.

A valid OTP session with write scope is required to perform this operation.

A successful request will return a 200 OK status and include the updated future cash allocations.

If the update cannot be performed immediately the API will respond with a HTTP 202 Accepted status and schedule the update request with the investment administrator.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

MEMBER OTP REQUIRED

scope: write

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Request body

id

string

required

Investment option UUID

percent

number

required

Percentage allocated to this investment

Responses

200 - Investment Cash Allocation Collection Response

data

array

links

object

meta

202 - Request Accepted

data

object

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

PUT
https://api.sargon.com/v1/members/{member}/investments/futurecash
Example request:
[ { "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "percent": 100 } ]
Example response: 200 - Investment Cash Allocation Collection Response
{ "data": [ { "displayName": "string", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "key": "string", "percent": 100 } ], "links": { "self": "string" }, "meta": { "count": 0, "offset": 0, "total": 0 } }
Example response: 202 - Request Accepted
{ "data": { "description": "Your update request has been accepted", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48" }, "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Insurance

Insurance Resources represent the Insurance Policies associated with the Member.

For the purpose of this section, the following terms are defined:

  • Insurance Policy - A policy that may be added to a Member
  • Insurance Cover - An insurance policy attached to a Member

Applying for an Insurance Cover may require additional questions to be answered by the Member. As such, a JSON Schema will need to be configured per Insurance Policy available for the fund. The schema can be retrieved via the API, which will contain the full details of additional attributes and questions will that will need to be supplied when applying for the cover.

List Member Insurance Covers

Returns a collection of Insurance Covers applicable to the specified member.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Responses

200 - Insurance Covers Collection Response

data

array

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/insurance/covers
Example response: 200 - Insurance Covers Collection Response
{ "data": [ { "created": "2017-01-31T21:00Z", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "updated": "2017-01-31T21:00Z", "application": { "dob": "1980-01-31", "gender": "Female", "policy_id": "00dac6bb-fefe-4935-a0b4-f45fef00b9a1" }, "coverName": "string", "coverType": "string", "status": "PENDING", "terms": [ "string" ] } ], "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Apply for Insurance Cover

Create an application for a new Insurance Cover for this member, using the specified Insurance Policy. Additional dynamic properties are supported in the request payload depending on the policy being created. Refer to Get Available Insurance Policy for retrieving the JSON Schema for a specific policy. Use status OPT_OUT, if member wants to opt out from a specific insurance policy.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

MEMBER OTP REQUIRED

scope: write

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Request body

application

object

JSON object conforming to the Insurance Policy schema

policyId

string

required

status

string

terms

array

Responses

201 - Insurance Covers Response

data

array

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

POST
https://api.sargon.com/v1/members/{member}/insurance/covers
Example request:
[ { "application": { "dob": "1980-01-31", "gender": "Female", "policy_id": "00dac6bb-fefe-4935-a0b4-f45fef00b9a1" }, "policyId": "00dac6bb-fefe-4935-a0b4-f45fef00b9a1", "status": "OPT_OUT", "terms": [ "string" ] } ]
Example response: 201 - Insurance Covers Response
{ "data": [ { "created": "2017-01-31T21:00Z", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "updated": "2017-01-31T21:00Z", "application": { "dob": "1980-01-31", "gender": "Female", "policy_id": "00dac6bb-fefe-4935-a0b4-f45fef00b9a1" }, "coverName": "string", "coverType": "string", "status": "PENDING", "terms": [ "string" ] } ], "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Get Insurance Cover Details

Retrieve the full details of the specified Insurance Cover.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

cover

string

Unique UUID of the Insurance Cover.

Responses

200 - Insurance Cover Response

data

object

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/insurance/covers/{cover}
Example response: 200 - Insurance Cover Response
{ "data": { "created": "2017-01-31T21:00Z", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "updated": "2017-01-31T21:00Z", "application": { "dob": "1980-01-31", "gender": "Female", "policy_id": "00dac6bb-fefe-4935-a0b4-f45fef00b9a1" }, "coverName": "string", "coverType": "string", "status": "PENDING", "terms": [ "string" ], "covers": [ { "coverAmount": { "amount": 10010, "currency": "AUD", "precision": 2 }, "effectiveFrom": "2020-09-15", "effectiveTo": "2020-09-15", "premiumAmount": { "amount": 10010, "currency": "AUD", "precision": 2 }, "premiumPeriod": "monthly", "retail": true, "retailInsurer": "string" } ] }, "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Update Insurance Cover Details
Sargon clients only - Available upon request

Update details of the specified Insurance Cover.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

MEMBER OTP REQUIRED

scope: write

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

cover

string

Unique UUID of the Insurance Cover.

Request body

application

object

JSON object conforming to the Insurance Policy schema

terms

array

Responses

200 - Insurance Cover Response

data

object

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

PUT
https://api.sargon.com/v1/members/{member}/insurance/covers/{cover}
Example request:
{ "application": { "dob": "1980-01-31", "gender": "Female", "policy_id": "00dac6bb-fefe-4935-a0b4-f45fef00b9a1" }, "terms": [ "string" ] }
Example response: 200 - Insurance Cover Response
{ "data": { "created": "2017-01-31T21:00Z", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "updated": "2017-01-31T21:00Z", "application": { "dob": "1980-01-31", "gender": "Female", "policy_id": "00dac6bb-fefe-4935-a0b4-f45fef00b9a1" }, "coverName": "string", "coverType": "string", "status": "PENDING", "terms": [ "string" ], "covers": [ { "coverAmount": { "amount": 10010, "currency": "AUD", "precision": 2 }, "effectiveFrom": "2020-09-15", "effectiveTo": "2020-09-15", "premiumAmount": { "amount": 10010, "currency": "AUD", "precision": 2 }, "premiumPeriod": "monthly", "retail": true, "retailInsurer": "string" } ] }, "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Request Insurance Cover Cancellation
Sargon clients only - Available upon request

Request cancellation an existing (active) Insurance Cover.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

MEMBER OTP REQUIRED

scope: write

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

cover

string

Unique UUID of the Insurance Cover.

Responses

204 - Empty Body
400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

DELETE
https://api.sargon.com/v1/members/{member}/insurance/covers/{cover}
Example response: 204 - Empty Body
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
List Available Insurance Policies

Returns a collection of insurance policies that can be attached to or activated for this member.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Responses

200 - Insurance Policy Collection Response

data

array

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/insurance/policies
Example response: 200 - Insurance Policy Collection Response
{ "data": [ { "created": "2017-01-31T21:00Z", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "updated": "2017-01-31T21:00Z", "commencementDate": "2020-09-15", "currentStatus": "available", "description": "string", "policyType": "life" } ], "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Get Available Insurance Policy

Returns a specified insurance policy by ID, that can be attached to or activated for this member. It also returns a JSON Schema definition for the fields required to create a policy from this policy. You SHOULD ensure that the payload used when creating a new policy from this policy validates against this schema. "JSON Schema" is a well supported standard for annotating and validating JSON data. See http://json-schema.org/

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

policy

string

Unique UUID of the Insurance Policy.

Responses

200 - Insurance Policy Response

data

object

links

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/insurance/policies/{policy}
Example response: 200 - Insurance Policy Response
{ "data": { "created": "2017-01-31T21:00Z", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "updated": "2017-01-31T21:00Z", "commencementDate": "2020-09-15", "currentStatus": "available", "description": "string", "policyType": "life", "schema": {} }, "links": { "self": "string" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Transactions

Transaction Resources represent individual transactions for a Member. All Transaction details are returned as a read-only collection.

List Transactions

Returns a collection of Transactions. The collection defaults to transactions belonging to the currently authenticated member when accessed with member scope.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

Query Parameters

type

string

Show only Transactions of the specified type.

date

string

Return results for the specified date (or date range). Date must be provided in ISO 8601 date format (YYYY-MM-DD) with optional times.

A Range can be specified separated by a comma in the form of date=start_date,end_date

If only one date is specified the API will return results for only the specified date. If start date is empty the API will search for all dates up to and including the end date. If end date is empty the API will search for all dates including and after the start date. If the specified dates do not include a time the API will default the start dates time to 00:00 and the end dates time to 23:59:59

Examples:

  • 2016-01-01 - Single day date range covering the date 2016-01-01 only
  • 2016-01-01, - All dates from 2016-01-01, including 2016-01-01
  • ,2016-01-01 - All dates up to and including 2016-01-01
  • 2016-01-01,2016-02-28 - All dates from 2016-01-01 to 2016-02-28 inclusive
  • ,today - All dates up to and including todays date
  • today, - All dates from and including todays date

page.size

integer

Pagination Page Size (number of entries per page)

page.offset

integer

Pagination Starting Offset

sort

string

Sort by date in ascending/oldest first (asc) or descending/newest first (desc) order.

Responses

200 - Transaction Collection

data

array

links

object

meta

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/transactions
Example response: 200 - Transaction Collection
{ "data": [ { "amountIn": 912134, "amountOut": 823421, "coa": "string", "effectiveDate": "2015-01-19T17:50:00.000Z", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "paidDate": "2015-01-19T17:50:00.000Z", "transactionType": "AccountBalance" } ], "links": { "self": "string" }, "meta": { "count": 0, "offset": 0, "total": 0 } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Fund Search & Rollover

Fund search & rollover provides the ability to find and consolidate funds from other fund providers.

Fund Search Resources represent the results from a fund search performed by or on behalf of a member. The results can be consented to, for rollover and transfer into the member's account.

A full or partial transfer can be conducted, including:

  • Create Rollover Request from Fund Search: Consent to rollover ALL of the funds from the results returned. Learn more here.
  • **Create Rollover Request: ** Consent to rollover specific funds and/or transferAmount. Learn more here.

Note that if multiple unclaimedMoneys are found, the consent must be made for the ALL unclaimed monies using rolloverUnclaimedMoneys.

Perform Fund Search

Perform a new Fund Search request for the current member. The request is asychronous and you will be required to retrieve the results after the request is made.

HTTP Status 403 (Forbidden) will be returned by the API if the Fund Search call is made before member's identity has been verified.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

MEMBER OTP REQUIRED

scope: write

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Responses

202 - Fund Search Operation

data

object

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

POST
https://api.sargon.com/v1/members/{member}/fundsearch
Example response: 202 - Fund Search Operation
{ "data": { "created": "2017-01-31T21:00Z", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "status": "pending" } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Get Latest Fund Search Results

Returns the most recent fund search results.

The results contains detailed data of the member's existing accounts from third party funds (funds) and any unclaimed monies (unclaimedMoneys). The results can be consented to for rollover and transfer into the member's account, either partially or fully.

We note that:

  • Some funds cannot be consented to rollover via the API. See canRollover attribute for more details.
  • The entirety of unclaimed monies must be consented for rollover.

Please see our Testing Guidelines to learn more.

Status 204 will be returned if fund search results are not available yet.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

MEMBER OTP REQUIRED

scope: read

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Responses

200 - Fund Search Result

data

object

204 - Empty Body
401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/fundsearch/latest
Example response: 200 - Fund Search Result
{ "data": { "created": "2017-01-31T21:00Z", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "status": "pending", "funds": [ { "accountBalance": { "amount": 10010, "currency": "AUD", "precision": 2 }, "accountNumber": "109739", "activityStatus": "Open And Not Lost", "canRollover": true, "definedBenefit": false, "friendlyFundName": "RETIREMENT FUND A", "fundABN": "34090444518", "fundAcceptGovernmentContributions": true, "fundName": "THE TRUSTEE FOR RETIREMENT FUND A", "fundPhone": "0342345699", "insurance": true, "inwardRollover": true, "rolloverStatus": "None", "uniqueSuperIdentifier": "34090444518001" } ], "unclaimedMoneys": [ { "amount": { "amount": 10010, "currency": "AUD", "precision": 2 }, "typeOfFund": "SuperCoContributions" } ] } }
Example response: 204 - Empty Body
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
List Fund Search Results

Returns the results of a Fund Search for the specified ID.

Status 204 will be returned if fund search results are not available yet.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

MEMBER OTP REQUIRED

scope: read

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

fundsearchid

string

Unique UUID of the Fund Search

Responses

200 - Fund Search Result

data

object

204 - Empty Body
401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/fundsearch/{fundsearchid}
Example response: 200 - Fund Search Result
{ "data": { "created": "2017-01-31T21:00Z", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "status": "pending", "funds": [ { "accountBalance": { "amount": 10010, "currency": "AUD", "precision": 2 }, "accountNumber": "109739", "activityStatus": "Open And Not Lost", "canRollover": true, "definedBenefit": false, "friendlyFundName": "RETIREMENT FUND A", "fundABN": "34090444518", "fundAcceptGovernmentContributions": true, "fundName": "THE TRUSTEE FOR RETIREMENT FUND A", "fundPhone": "0342345699", "insurance": true, "inwardRollover": true, "rolloverStatus": "None", "uniqueSuperIdentifier": "34090444518001" } ], "unclaimedMoneys": [ { "amount": { "amount": 10010, "currency": "AUD", "precision": 2 }, "typeOfFund": "SuperCoContributions" } ] } }
Example response: 204 - Empty Body
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Create Rollover Request from Fund Search

Creating a Rollover Request from Fund Search provides a convenient way to quickly Create Rollover Request for the specified member based on the specified Fund Search Result ID. For special circumstances, the consents may be placed onHold to allow your fund operations to review and perform the request on a batch and upon discretion.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

MEMBER OTP REQUIRED

scope: write

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

fundsearchid

string

Unique UUID of the Fund Search

Query Parameters

onHold

boolean

When true, all consents created will be set to "on hold"

Responses

200 - Rollover Request Confirmation Response

data

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

POST
https://api.sargon.com/v1/members/{member}/fundsearch/{fundsearchid}/consent
Example response: 200 - Rollover Request Confirmation Response
{ "data": { "created": "2017-01-31T21:00Z" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
List Rollover Requests

Returns a collection of Rollover Requests consented by the specified member, including those created with a Consent to Fund Search Rollover.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Responses

200 - Rollover Collection Response

data

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/rollovers
Example response: 200 - Rollover Collection Response
{ "data": { "funds": [ { "accountNumber": "string", "created": "2017-01-31T21:00Z", "fundABN": "string", "fundName": "string", "status": "requested", "transferAmount": { "amount": 10010, "currency": "AUD", "precision": 2 }, "uniqueSuperIdentifier": "string", "updated": "2017-01-31T21:00Z" } ], "unclaimedMoney": { "created": "2017-01-31T21:00Z", "status": "requested", "updated": "2017-01-31T21:00Z" } } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Create Rollover Request

Creates a Rollover Request for the specified member which provides consent for funds to be transferred to the member's account. The following consents are possible:

  • Specific fund(s), and/or;
  • Entire balances or a specifically nominated transferAmount per fund, and/or;
  • All unclaimed monies using the rolloverUnclaimedMoneys attribute

Detailed data for applicable funds and unclaimedMoneys can be retrieved from the results of a fund search.

For special circumstances, the consents may be placed onHold to allow your fund operations to review and perform the request on a batch and upon discretion.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

MEMBER OTP REQUIRED

scope: write

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Query Parameters

onHold

boolean

When true, all consents created will be set to "on hold"

Request body

funds

array

List of Funds to be consented to rollover.

rolloverUnclaimedMoneys

boolean

If true, create rollover consent for all unclaimed moneys.

Responses

201 - Rollover Request Confirmation Response

data

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

POST
https://api.sargon.com/v1/members/{member}/rollovers
Example request:
{ "funds": [ { "transferAmount": { "amount": 10010, "currency": "AUD", "precision": 2 }, "accountNumber": "string", "fundABN": "string", "uniqueSuperIdentifier": "string" } ], "rolloverUnclaimedMoneys": true }
Example response: 201 - Rollover Request Confirmation Response
{ "data": { "created": "2017-01-31T21:00Z" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
OTP

One Time Password (OTP) related operations. OTP restrictions can be configured and the default configuration is designed to meet security and compliance requirements associated with the member scope.

Request Member OTP

Request a One Time Password (OTP) to be sent to the Member.

After requesting an OTP you have 10 minutes to verify it before it expires.

The scope query parameter should be specified for the desired level of member access:

  • read: provides limited access and once verified will be valid for the duration of the current member session.
  • write: provides full access but will expire 10 minutes after verification.

If not provided, the default scope is read.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Query Parameters

scope

string

OTP Scope. The level of OTP access required (i.e. read or write)

Responses

200 - OTP Resource

data

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

POST
https://api.sargon.com/v1/members/{member}/otp
Example response: 200 - OTP Resource
{ "data": { "expires": "2020-09-15T23:35:53Z", "type": "sms" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Verify Member OTP

Verify a One Time Password (OTP).
You will need to first Request a One Time Password (OTP). Then, specify the retrieved OTP code in your verify request as part of the X-Super-OTP request header. If successful, the current member will be granted access for the OTP scope requested when creating the OTP. Learn more on Security.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Responses

200 - OTP Verify Resource

data

401 - Unauthorized

errors

array

required

POST
https://api.sargon.com/v1/members/{member}/otp/verify
Example response: 200 - OTP Verify Resource
{ "data": { "expires": "2020-09-15T23:35:53Z" } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Verifications

Verififications allow you to verify the member's ownership of their email address or phone number. Separate to the One Time Password (OTP) which is used for security of certain operations, Verifications be used when changing important communication details for the member, in addition to Update Member.

Send Verification Code

Send a verification code to member using specified verification channel. This can be either email or sms. After requesting a verification code, you will have 10 minutes to check before it expires.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Request body

channel

string

required

Verification Type.

to

string

required

The mobile number or email being verified.

Responses

200 - Send verification response

data

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

POST
https://api.sargon.com/v1/members/{member}/verifications
Example request:
{ "channel": "sms", "to": "+6141234567" }
Example response: 200 - Send verification response
{ "data": { "channel": "sms", "to": "+6141234567", "expires": "2020-09-15T23:35:53Z", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48" } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Check Verification Code

Check verification code. After 5 failed attempts, you will have to request a new code.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

verificationId

string

Unique UUID of the Verification.

Request body

code

string

required

The code being verified.

Responses

200 - Check verification response

data

object

400 - Bad Request

errors

array

required

401 - Unauthorized

errors

array

required

404 - Not Found

errors

array

required

429 - Rate Limited

errors

array

required

POST
https://api.sargon.com/v1/members/{member}/verifications/{verificationId}/check
Example request:
{ "code": "23456" }
Example response: 200 - Check verification response
{ "data": { "channel": "sms", "to": "+6141234567", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "valid": true } }
Example response: 400 - Bad Request
{ "errors": [ { "detail": "\"Given Name\" is required", "source": { "pointer": "givenName" } } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Example response: 429 - Rate Limited
{ "errors": [ { "code": "string", "detail": "string", "source": { "pointer": "string" }, "status": "404" } ] }
Documents

Document Resources represent key documents associated to a Member such as welcome pack, employer contribution form and annual statements.

List Member Documents

List all documents for a member

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

Responses

200 - Document Collection Response

data

array

required

List of documents

links

object

required

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/documents
Example response: 200 - Document Collection Response
{ "data": [ { "description": "string", "documentDate": "2020-09-15T23:35:53Z", "filename": "string", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "type": "string" } ], "links": { "self": "string" } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Get Member Document

Get the details for a member document including download link.

The returned download link is a short-lived url with expiry of 30 seconds (expiry populated in urlExpiry property). If you wish to download the document file it is expected that you will call this endpoint and then immediately request or redirect to the download url.

By default the download url will return with a content-disposition header of attachment which will trigger a download in most browsers. If you'd prefer the document to open instead of download you can control this by setting the display query parameter to inline.

Authorization

AuthenticatedUser
scope: https://api.sargon.com/member
Integration
scope: https://api.sargon.com/integration

Path parameters

member

string

Unique UUID of the Member.

A value of "me" can be provided instead of a literal UUID. "me" will be expanded to represent the currently authenticated member, if any.

document

string

Unique UUID of the Document.

Query Parameters

display

string

Response display option for requested document - e.g. inline vs attachment. This controls the content-disposition header in the response when the document url is fetched. Defaults to attachment.

Responses

200 - Document Response

data

object

required

Document Details

links

object

required

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/members/{member}/documents/{document}
Example response: 200 - Document Response
{ "data": { "description": "string", "documentDate": "2020-09-15T23:35:53Z", "filename": "string", "id": "2109987f-a750-4ddf-93b3-6d4e46a17e48", "type": "string", "url": "string", "urlExpiry": "2020-09-15T23:35:53Z" }, "links": { "self": "string" } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Webhooks

Webhooks allows notifications to be sent to your applications on key Events, such as when a rollover or contribution transaction is made. We provide the ability to manage webhooks via the API.

List Webhooks

Returns a list of all your webhooks.

Authorization

Integration
scope: https://api.sargon.com/integration

Responses

200 - Webhook Collection Resource

data

array

links

object

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

GET
https://api.sargon.com/v1/webhooks
Example response: 200 - Webhook Collection Resource
{ "data": [ { "created": "2017-01-31T21:00Z", "enabled": true, "events": [ "string" ], "id": "string", "secret": "string", "updated": "2017-01-31T21:00Z", "url": "string" } ], "links": { "self": "string" } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Create Webhook

A webhook must have a url and a list of events.

Authorization

Integration
scope: https://api.sargon.com/integration

Request body

enabled

string

The status whether webhook is enabled or disabled.

events

array

required

The list of events to enable for this webhook.

url

string

required

The URL of the webhook.

Responses

201 - Webhook Resource

data

object

links

object

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

POST
https://api.sargon.com/v1/webhooks
Example request:
{ "enabled": "string", "events": [ "string" ], "url": "string" }
Example response: 201 - Webhook Resource
{ "data": { "created": "2017-01-31T21:00Z", "enabled": true, "events": [ "string" ], "id": "string", "secret": "string", "updated": "2017-01-31T21:00Z", "url": "string" }, "links": { "self": "string" } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Get Webhook

Retrieves the webhook with the given ID.

Authorization

Integration
scope: https://api.sargon.com/integration

Path parameters

webhookId

string

Unique UUID of the Webhook.

Responses

200 - Webhook Resource

data

object

links

object

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/webhooks/{webhookId}
Example response: 200 - Webhook Resource
{ "data": { "created": "2017-01-31T21:00Z", "enabled": true, "events": [ "string" ], "id": "string", "secret": "string", "updated": "2017-01-31T21:00Z", "url": "string" }, "links": { "self": "string" } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Update Webhook

Update the webhook with the given ID. You may edit the url, the list of events, and the enabled status.

Authorization

Integration
scope: https://api.sargon.com/integration

Path parameters

webhookId

string

Unique UUID of the Webhook.

Request body

enabled

string

required

The status whether webhook is enabled or disabled.

events

array

required

The list of events to enable for this webhook.

url

string

required

The URL of the webhook.

Responses

200 - Webhook Resource

data

object

links

object

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

404 - Not Found

errors

array

required

PUT
https://api.sargon.com/v1/webhooks/{webhookId}
Example request:
{ "enabled": "string", "events": [ "string" ], "url": "string" }
Example response: 200 - Webhook Resource
{ "data": { "created": "2017-01-31T21:00Z", "enabled": true, "events": [ "string" ], "id": "string", "secret": "string", "updated": "2017-01-31T21:00Z", "url": "string" }, "links": { "self": "string" } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Delete Webhook

Deletes the webhook with the given ID.

Authorization

Integration
scope: https://api.sargon.com/integration

Path parameters

webhookId

string

Unique UUID of the Webhook.

Responses

204 - Empty Body
401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

404 - Not Found

errors

array

required

DELETE
https://api.sargon.com/v1/webhooks/{webhookId}
Example response: 204 - Empty Body
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
List Webhook Attempts

Returns a list of webhooks attempts for a specified webhook.

Authorization

Integration
scope: https://api.sargon.com/integration

Path parameters

webhookId

string

Unique UUID of the Webhook.

Responses

200 - Webhook Attempts Collection Resource

data

array

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

GET
https://api.sargon.com/v1/webhooks/{webhookId}/attempts
Example response: 200 - Webhook Attempts Collection Resource
{ "data": [ { "created": "2017-01-31T21:00Z", "eventId": "string", "eventType": "string", "httpStatus": 0, "id": "string", "requestBody": "string", "requestHeaders": "string", "responseBody": "string", "responseHeaders": "string", "status": "success", "updated": "2017-01-31T21:00Z", "url": "string" } ] }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Get Webhook Secret

Returns webhook details including the signing secret.

Authorization

Integration
scope: https://api.sargon.com/integration

Path parameters

webhookId

string

Unique UUID of the Webhook.

Responses

200 - Webhook Resource

data

object

links

object

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

404 - Not Found

errors

array

required

GET
https://api.sargon.com/v1/webhooks/{webhookId}/secret
Example response: 200 - Webhook Resource
{ "data": { "created": "2017-01-31T21:00Z", "enabled": true, "events": [ "string" ], "id": "string", "secret": "string", "updated": "2017-01-31T21:00Z", "url": "string" }, "links": { "self": "string" } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Regenerate Webhook Secret

Regenerates the webhook signing secret.

Once regenerated the new signing secret will be used immediately for signing any new webhook notifications.

The existing active signing secret can be expired immediately or delayed for up to 24 hours to allow graceful updates to downstream systems. During this delay period signatures for both secrets will be included in all webhook notifications.

Authorization

Integration
scope: https://api.sargon.com/integration

Path parameters

webhookId

string

Unique UUID of the Webhook.

Request body

expiryHours

integer

required

How long the current signing secret should remain valid for (0-24 hours)

Responses

200 - Webhook Resource

data

object

links

object

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

404 - Not Found

errors

array

required

POST
https://api.sargon.com/v1/webhooks/{webhookId}/secret
Example request:
{ "expiryHours": 0 }
Example response: 200 - Webhook Resource
{ "data": { "created": "2017-01-31T21:00Z", "enabled": true, "events": [ "string" ], "id": "string", "secret": "string", "updated": "2017-01-31T21:00Z", "url": "string" }, "links": { "self": "string" } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Send Test Webhook Event

Send a test event to a webhook endpoint.

Authorization

Integration
scope: https://api.sargon.com/integration

Path parameters

webhookId

string

Unique UUID of the Webhook.

eventType

string

Event type.

Responses

200 - Webhook Attempt Response

data

object

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

404 - Not Found

errors

array

required

POST
https://api.sargon.com/v1/webhooks/{webhookId}/test/{eventType}
Example response: 200 - Webhook Attempt Response
{ "data": { "created": "2017-01-31T21:00Z", "eventId": "string", "eventType": "string", "httpStatus": 0, "id": "string", "requestBody": "string", "requestHeaders": "string", "responseBody": "string", "responseHeaders": "string", "status": "success", "updated": "2017-01-31T21:00Z", "url": "string" } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Example response: 404 - Not Found
{ "errors": [ { "detail": "Not found", "status": "404" } ] }
Events

Event Resources represent important things that occur in your fund. We create an Event object for each occurrence in your fund that is worth notifying you about, such as when a rollover or contribution transaction is made. Each event contains data explaining what happened.

List Recent Events

Returns a list of events that have occurred in the past 15 days.

Authorization

Integration
scope: https://api.sargon.com/integration

Responses

200 - Event collection response

data

array

links

object

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

GET
https://api.sargon.com/v1/events
Example response: 200 - Event collection response
{ "data": [ { "created": "2017-01-31T21:00Z", "data": {}, "id": "string", "mode": "string", "type": "string", "updated": "2017-01-31T21:00Z" } ], "links": { "self": "string" } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }
Get Supported Event Types

Retrieves all supported and available event types for webhooks.

Authorization

Integration
scope: https://api.sargon.com/integration

Responses

200 - Event type collection response

data

array

links

object

401 - Unauthorized

errors

array

required

403 - Forbidden

errors

array

required

GET
https://api.sargon.com/v1/events/types
Example response: 200 - Event type collection response
{ "data": [ "string" ], "links": { "self": "string" } }
Example response: 401 - Unauthorized
{ "errors": [ { "detail": "Unauthorized", "status": "401" } ] }
Example response: 403 - Forbidden
{ "errors": [ { "detail": "Forbidden", "status": "403" } ] }