Aurinko.io API (1.0.0)

Introduction

The Aurinko API is a unified API platform allowing developers to quickly build integrations with many mailbox providers and services like Google, Office 365, Outlook.com, MS Exchange, IMAP. The unified API abstracts away differences between many email, calendar, contact, task APIs to make it easy to connect and sync the mailbox data.

The Aurinko API's focus is convenient and reliable data synchronization for all supported data categories (email, calendar, contacts, tasks) so the API provides methods to receive changes/deltas and be notified of the changes (through webhooks) in a unified manner. The API's sync/deltas model should allow developers to build reliable event based solutions easily.

The Aurinko API is built on HTTP. Our API is RESTful. It has predictable resource URLs. It returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body.

API Authentication

When you sign up for an account, you are given a Client Id and Secret for every application that you create. You use those to go through OAuth flows that allow you to start syncing remote account data through Aurinko. An account OAuth flow can be started with just the Client Id and the Client Secret will be required to obtain an account access token in the "authorization code" flow ("implicit grant" flow does is secured by the "trusted domains" setting).

Aurinko offers two forms of authentication:

  • Basic <Client Id, Client Secret> - used for authentication flows and administrative requests made from the server side.
  • Bearer <Account Access Token> - used for working with an account data.
  • Api Key in Cookie - for in-browser apps that use Aurinko as their backend API with user sessions.
  • Api Key in Header (X-Aurinko-Session) - for server side apps that need user sessions

Never share your client secret or access token. Keep them guarded and secure.

Getting Started Guide

If you have a use case you would like to implement, please consult us for feedback on the best API operations for the task.

Click here to visit our API Guides.

Authorization

Aurinko's Unified OAuth Flows are backed by providers’ OAuth2 flows (i.e. Google, Office 365, Salesforce, HubSpot,...) or by secure password-based authentications (i.e. MS Exchange, IMAP accounts). The following three flows are supported:

  1. Account OAuth - User delegated authorization that produces an Aurinko account and an access token.
  2. Service Account OAuth - Admin/Org-level authorization that produces an Auirnko service account and an access token.
  3. User OAuth - User delegated authorization that produces an Aurinko User, its primary account, and a user session token or cookie.

See this user guide for more information.

Validate an external identity token

This method is for Office365 web add-ins that want to implement external authentication based on Exchange Identity Token.

Here are the steps involved in establishing an Aurinko User session:

  1. Your Office 365 web add-in gets the Exchange identity token (see the link above for how it is done).

  2. Makes a POST call to the /auth/prepare endpoint with the following HTTP headers:

  • X-Aurinko-Auth-Type: exchangeIdToken

  • Authorization: Bearer <your_exchange_id_token>

    Auriko validates the identity token and provides a temporary token if the ID is valid: { "token": "your-temporary-token" }

  1. The addin then calls the /authorizeUser endpoint with the temporary token, using the query parameter ?token=your-temporary-token.

Upon successful completion of the steps a new Aurinko User is created or an existing User is re-authorized. And from now on this identity token is recognized by Aurinko and is associated with the User session.

From here on the add-in can access Aurinko API with its Exchange identity token, this way:

  • X-Aurinko-Auth-Type: exchangeIdToken
  • Authorization: Bearer <your_exchange_id_token>
Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)

Responses

Response samples

Content type
application/json
{
  • "token": "string"
}

Start an account authorization flow

query Parameters
clientId
required
string

Application Client Id from the Aurinko portal dashboard.

serviceType
required
string (ServiceTypeNonDaemon)
Enum: "Google" "Office365" "EWS" "IMAP" "Salesforce" "Salesflare" "Repfabric" "Slack" "SugarCRM" "HighLevel" "Hubspot" "Zoom" "Webex" "WebexBot" "Pipedrive" "EclipseERP" "AutoQuotes" "Teamwork" "NetSuite" "SpecPath" "Zoho" "Clientify" "QuickBooks" "ActiveCampaign" "Creatio" "ConstantContact" "Fishbowl" "iCloud"
scopes
Array of strings or null (Scope)
Enum: "Calendar.Read" "Calendar.ReadWrite" "Mail.Read" "Mail.ReadWrite" "Mail.Send" "Mail.Drafts" "Mail.All" "Contacts.Read" "Contacts.ReadWrite" "Tasks.Read" "Tasks.ReadWrite"

Space separated list of Aurinko defined scopes.

nativeScopes
Array of strings or null (NativeScope)

Space separated list of provider defined scopes

responseType
string or null
Default: "code"
Enum: "code" "token"

The type of response expected from the authorization flow. Choose token to directly receive the authentication token, or code to obtain a temporary code that can be exchanged for the token using the /auth/token endpoint.

accountId
integer or null <int64>

For re-authorizing an existing account.

loginHint
string or null

Is passed as "login_hint" in OAuth flows, suggesting user identity for a smoother login process.

returnUrl
required
string or null

Return/Callback url for receiving the authorization code or token. It must be registered on the settings page in Aurinko portal.

state
string or null

Custom state string that will be returned in the callback.

clientOrgId
string or null

Allows clients to group accounts based on their internal organization data.

serverUrl
string or null

Can be used in the form-based authentication to specify the URL of the server to which the user intends to authenticate. When included, it automatically populates the corresponding input field on the authentication form.

ensureScopes
boolean or null

When set to true, Aurinko will check if a user granted all requested permissions.

ensureAccess
boolean or null

When set to true, Aurinko will check if a user has access to the requested resources. Supported only for Google and Office365, and only for Email, Calendar, Contacts and Tasks APIs.

recycle
boolean or null

Indicates whether to reuse an existing account instead of creating a new one during authentication.

authEmail
string

Email address that must be used for authentication. Aurinko will fail the authentication flow if the email address does not match the one provided.

Responses

Request samples

curl -X GET -G https://api.aurinko.io/v1/auth/authorize \
    -d clientId='a8b7c6d5e4f3g2h1' \
    -d serviceType='Google' \
    -d scopes='Calendar.ReadWrite Mail.Read Mail.Send' \
    -d responseType='code' \
    -d returnUrl='https://yourapp.com/aurinko-redirect' \
    -d state='CustomStateString'

Start a service/daemon account authorization flow

query Parameters
clientId
required
string

Application Client Id from the Aurinko portal dashboard.

serviceType
required
string (ServiceTypeDaemon)
Enum: "Google" "GoogleBot" "Office365" "EWS" "MsTeamsBot" "Slack" "SlackBot" "ZoomBot" "MCTrade" "Zoho"
scopes
Array of strings or null (Scope)
Enum: "Calendar.Read" "Calendar.ReadWrite" "Mail.Read" "Mail.ReadWrite" "Mail.Send" "Mail.Drafts" "Mail.All" "Contacts.Read" "Contacts.ReadWrite" "Tasks.Read" "Tasks.ReadWrite"

Space separated list of Aurinko defined scopes.

nativeScopes
Array of strings or null (NativeScope)

Space separated list of provider defined scopes.

responseType
string or null
Default: "code"
Enum: "code" "token"

The type of response expected from the authorization flow. Choose token to directly receive the authentication token, or code to obtain a temporary code that can be exchanged for the token using the /auth/token endpoint.

accountId
integer or null <int64>

For re-authorizing an existing account.

returnUrl
required
string or null

Return/Callback url for receiving the authorization code or token. It must be registered on the settings page in Aurinko portal.

state
string or null

Custom state string

clientOrgId
string or null

Allows clients to group accounts based on their internal organization data.

ensureScopes
boolean or null

When set to true, Aurinko will check if a user granted all requested permissions.

Responses

Request samples

curl -X GET -G https://api.aurinko.io/v1/auth/authorizeDaemon \
    -d clientId='a8b7c6d5e4f3g2h1' \
    -d serviceType='Google' \
    -d scopes='Calendar.ReadWrite Mail.Read Mail.Send' \
    -d returnUrl='https://yourapp.com/aurinko-redirect' \
    -d state='CustomStateString'

Start a user session authorization flow

This endpoint is used to authorize accounts that are linked to Users. The accountRole parameter must be set to either primary or secondary. A primary role creates a new User entity and assigns the account as its key/primary account, with subsequent authorizations simply re-authorizing the existing primary account with its User. The secondary role requires an existing User cookie or userId+userSignature parameters and links the new account to the User specified by the cookie or userId.

query Parameters
clientId
required
string

Application Client Id from the Aurinko portal dashboard.

mailboxInfo
string or null

Relevant only for cookie-based authentication in multi-client setups. When different client apps are connected to a single Aurinko application, this string (commonly the user's email, but can be any unique identifier) is combined with "clientId" to create a distinct authentication cookie name and prevent cookie conflicts. Clients using cookie-based auth must send "clientId" and "mailboxInfo" via "X-Aurinko-Client-Id" and "X-Aurinko-Mailbox-Info" HTTP headers for accurate cookie identification.

serviceType
required
string (ServiceTypeNonDaemon)
Enum: "Google" "Office365" "EWS" "IMAP" "Salesforce" "Salesflare" "Repfabric" "Slack" "SugarCRM" "HighLevel" "Hubspot" "Zoom" "Webex" "WebexBot" "Pipedrive" "EclipseERP" "AutoQuotes" "Teamwork" "NetSuite" "SpecPath" "Zoho" "Clientify" "QuickBooks" "ActiveCampaign" "Creatio" "ConstantContact" "Fishbowl" "iCloud"
scopes
Array of strings or null (Scope)
Enum: "Calendar.Read" "Calendar.ReadWrite" "Mail.Read" "Mail.ReadWrite" "Mail.Send" "Mail.Drafts" "Mail.All" "Contacts.Read" "Contacts.ReadWrite" "Tasks.Read" "Tasks.ReadWrite"

Space separated list of Aurinko defined scopes.

nativeScopes
Array of strings or null (NativeScope)

Space separated list of provider defined scopes

responseType
string or null
Default: "cookie"
Enum: "cookie" "code" "none"

The type of response expected from the user authorization flow. For primary accounts, choose cookie or code, for secondary accounts, choose none. cookie will set a cookie in the user's browser in the callback, code will return a temporary code that can be exchanged for a user session token using the /auth/token endpoint. none will return only the status of the operation and information about an occurred error. Because secondary accounts are linked to an existing and authorized User, they don't need to receive a token or cookie in the callback.

accountId
integer or null <int64>

For re-authorizing an existing secondary account.

loginHint
string or null

Is passed as "login_hint" in OAuth flows, suggesting user identity for a smoother login process.

returnUrl
required
string or null

Return/Callback url for receiving the authorization code or token. It must be registered on the settings page in Aurinko portal.

state
string or null

Custom state string

accountRole
required
string
Enum: "primary" "secondary"

The account's role in relation to a User. Use primary for the account to act as a key account; this will create a new User if the primary account doesn't exist already. If the primary account exists, it's simply re-authorized without creating a new user. Choose secondary to associate the account with an already existing User, which requires either existing User cookie or userId + userSignature for identification.

userId
string or null

Identifies a user for whom a secondary account is being added. Should be used only when userAccount=secondary and user cookie is not present in the request. Works in conjunction with timestamp and userSignature to authorize the addition of secondary account.

timestamp
integer or null <int64>

Request timestamp in seconds. Should be used only when userAccount=secondary and user cookie is not present in the request. Works in conjunction with userId and userSignature to authorize the addition of secondary account.

userSignature
string or null

A string that is generated by concatenating userId and timestamp, then hashing with HmacSHA256 using the application's clientSecret, then encoding in Hex, base64, or base64 web format. Should be used only when userAccount=secondary and user cookie is not present in the request Works in conjunction with userId and timestamp to authorize the addition of secondary account.

serverUrl
string or null

Can be used in the form-based authentication to specify the URL of the server to which the user intends to authenticate. When included, it automatically populates the corresponding input field on the authentication form.

ensureScopes
boolean or null

When set to true, Aurinko will check if a user granted all requested permissions.

ensureAccess
boolean or null

When set to true, Aurinko will check if a user has access to the requested resources. Supported only for Google and Office365, and only for Email, Calendar, Contacts and Tasks APIs.

token
string or null

Token from the /auth/prepare endpoint.

Responses

Request samples

curl -X GET -G https://api.aurinko.io/v1/auth/authorizeUser \
    -d clientId='a8b7c6d5e4f3g2h1' \
    -d serviceType='Google' \
    -d accountRole='primary' \
    -d scopes='Calendar.ReadWrite Mail.Read Mail.Send' \
    -d responseType='cookie' \
    -d returnUrl='https://yourapp.com/aurinko-redirect' \
    -d state='CustomStateString'

Request an access token

Authorizations:
AppAuth
path Parameters
code
required
string

A code returned by /authorize

Responses

Request samples

curl -u ClientId:Secret -X POST https://api.aurinko.io/v1/auth/token/<code>

Response samples

Content type
application/json
{
  • "accountId": 0,
  • "accessToken": "string",
  • "userId": "string",
  • "userSession": "string"
}

Get access token, Deprecated use POST instead

Authorizations:
AppAuth
path Parameters
code
required
string

A code returned by /authorize

Responses

Request samples

curl -u ClientId:Secret -X GET https://api.aurinko.io/v1/auth/token/<code>

Response samples

Content type
application/json
{
  • "accountId": 0,
  • "accessToken": "string",
  • "userId": "string",
  • "userSession": "string"
}

Account

An account corresponds to an email address, mailbox, and/or calendar. When connecting to the Aurinko API, a specific access token gives you access to a specific account’s data.

Get account status

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
pingProvider
boolean or null

If true, the provider will be pinged to check if the token is still valid. Currently supported only for Google, Office365, Salesforce and NetSuite.

includeProviderAuth
boolean or null

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/account

Response samples

Content type
application/json
{
  • "id": 0,
  • "parentId": 0,
  • "serviceType": "Google",
  • "serviceProvider": "Office365",
  • "active": true,
  • "tokenStatus": "active",
  • "tokenError": "string",
  • "type": "daemon",
  • "daemon": true,
  • "loginString": "string",
  • "email": "string",
  • "mailboxAddress": "string",
  • "name": "string",
  • "name2": "string",
  • "serverUrl": "string",
  • "serverUrl2": "string",
  • "clientOrgId": "string",
  • "authUserId": "string",
  • "authOrgId": "string",
  • "timezone": "string",
  • "tokenIssuedAt": "2019-08-24T14:15:22Z",
  • "authScopes": [
    ],
  • "authNativeScopes": [
    ],
  • "authObtainedAt": "2019-08-24T14:15:22Z",
  • "authExpiresAt": "2019-08-24T14:15:22Z",
  • "userId": "string"
}

Delete the account

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)

Responses

Request samples

curl -X DELETE -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/account

Delete the token and revoke all provider authentication data associated with it

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)

Responses

Request samples

curl -X DELETE -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/account/token

User sessions

User is an Aurinko managed entity that your app can leverage to implement user session management. Multiple regular Aurinko accounts can be linked to a User however there is always one primary account that acts as the user id-provider. The User sessions allow browser apps to store all their account access tokens securely on the Aurinko servers.

Get user info

Authorizations:
UserSessionCookieClientIdHeader

Responses

Request samples

curl -X GET --cookie "<END_USER_COOKIE>" \
    -H 'X-Aurinko-ClientId: <CLIENT_ID>' \
    https://api.aurinko.io/v1/user

Response samples

Content type
application/json
{
  • "id": "string",
  • "appId": 0,
  • "email": "string",
  • "name": "string",
  • "authOrgId": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "lastActivity": "2019-08-24T14:15:22Z",
  • "trustedIdentity": true,
  • "externalIdType": "exchangeIdentity",
  • "accounts": [
    ]
}

Change user settings

Authorizations:
UserSessionCookieClientIdHeader
Request Body schema: application/json
object (WeekWorkSchedule)

Responses

Request samples

Content type
application/json
{
  • "workHours": {
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "appId": 0,
  • "email": "string",
  • "name": "string",
  • "authOrgId": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "lastActivity": "2019-08-24T14:15:22Z",
  • "trustedIdentity": true,
  • "externalIdType": "exchangeIdentity",
  • "accounts": [
    ]
}

Get user accounts

Authorizations:
UserSessionCookieClientIdHeader

Responses

Request samples

curl -X GET --cookie "<END_USER_COOKIE>" \
    -H 'X-Aurinko-ClientId: <CLIENT_ID>' \
    https://api.aurinko.io/v1/user/accounts

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Get user account by id

Authorizations:
UserSessionCookieClientIdHeader
path Parameters
id
required
integer <int64>

user's account Id

Responses

Request samples

curl -X GET --cookie "<END_USER_COOKIE>" \
    -H 'X-Aurinko-ClientId: <CLIENT_ID>' \
    https://api.aurinko.io/v1/user/accounts/<id>

Response samples

Content type
application/json
{
  • "id": 0,
  • "parentId": 0,
  • "serviceType": "Google",
  • "userAccountType": "primary",
  • "type": "daemon",
  • "active": true,
  • "loginString": "string",
  • "email": "string",
  • "name": "string",
  • "serverUrl": "string",
  • "serverUrl2": "string",
  • "clientOrgId": "string",
  • "authUserId": "string",
  • "authOrgId": "string",
  • "timezone": "string",
  • "authObtainedAt": "2019-08-24T14:15:22Z",
  • "organization": {
    },
  • "tokenStatus": "active",
  • "scopes": [
    ],
  • "authScopes": [
    ],
  • "nativeScopes": [
    ],
  • "authNativeScopes": [
    ],
  • "hasApiErrors": true,
  • "bookingCount": 0,
  • "trackingActive": true,
  • "templatesCount": 0
}

Delete a user account

Deleting a primary account, also invalidates the user's session cookie (logout).

Authorizations:
UserSessionCookieClientIdHeader
path Parameters
id
required
integer <int64>

user's account Id

Responses

Request samples

curl -X DELETE --cookie "<END_USER_COOKIE>" \
    -H 'X-Aurinko-ClientId: <CLIENT_ID>' \
    https://api.aurinko.io/v1/user/accounts/<id>

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Make a user account 'managed'

Authorizations:
UserSessionCookieClientIdHeader
path Parameters
id
required
integer <int64>

user's account Id

query Parameters
clientOrgId
string or null

Responses

Request samples

curl -X POST --cookie "<END_USER_COOKIE>" \
    -H 'X-Aurinko-ClientId: <CLIENT_ID>' \
    https://api.aurinko.io/v1/user/accounts/<id>/managed

Response samples

Content type
application/json
{
  • "id": 0,
  • "parentId": 0,
  • "serviceType": "Google",
  • "userAccountType": "primary",
  • "type": "daemon",
  • "active": true,
  • "loginString": "string",
  • "email": "string",
  • "name": "string",
  • "serverUrl": "string",
  • "serverUrl2": "string",
  • "clientOrgId": "string",
  • "authUserId": "string",
  • "authOrgId": "string",
  • "timezone": "string",
  • "authObtainedAt": "2019-08-24T14:15:22Z",
  • "organization": {
    },
  • "tokenStatus": "active",
  • "scopes": [
    ],
  • "authScopes": [
    ],
  • "nativeScopes": [
    ],
  • "authNativeScopes": [
    ],
  • "hasApiErrors": true,
  • "bookingCount": 0,
  • "trackingActive": true,
  • "templatesCount": 0
}

Log out a user

Invalidates the user's session cookie

Authorizations:
UserSessionCookieClientIdHeader

Responses

Request samples

curl -X POST --cookie "<END_USER_COOKIE>" \
    -H 'X-Aurinko-ClientId: <CLIENT_ID>' \
    https://api.aurinko.io/v1/user/logout

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Accounts

These endpoints allow for account management outside the developer console interface. You can list, cancel, update, and delete accounts associated with your application.

Upsert an account

Authorizations:
AppAuth
query Parameters
userAccount
string (UserAccountType)
Enum: "primary" "secondary"

Type of user account. Required if userId is provided.

userId
string or null

ID of a user this account should be attached to.

recycleKeys
Array of strings or null (ServiceKey)
Enum: "email" "orgId" "userId" "serverUrl" "username" "clientOrgId"
ensureAccess
boolean or null

When set to true, Aurinko will check if a user has access to the requested resources. Supported only for Google and Office365, and only for Email, Calendar, Contacts and Tasks APIs.

Request Body schema: application/json
serviceType
required
string (ServiceType)
Enum: "Google" "GoogleBot" "Office365" "EWS" "IMAP" "Salesforce" "Salesflare" "Repfabric" "MsTeamsBot" "Slack" "SlackBot" "SugarCRM" "HighLevel" "Hubspot" "Zoom" "ZoomBot" "Webex" "WebexBot" "Pipedrive" "EclipseERP" "AutoQuotes" "Teamwork" "NetSuite" "MCTrade" "SpecPath" "Zoho" "Clientify" "QuickBooks" "ActiveCampaign" "Creatio" "ConstantContact" "Fishbowl" "iCloud"
serviceProvider
string (ServiceProvider)
Enum: "Office365" "Google" "Zoho" "IMAP" "EWS" "Yahoo" "AOL" "iCloud" "BigPond" "Fastmail" "Repfabric" "Salesforce" "Salesflare" "SugarCRM" "HighLevel" "Hubspot" "Pipedrive" "AutoQuotes" "SpecPath" "Clientify" "Teamwork" "EclipseERP" "NetSuite" "Fishbowl" "Slack" "Zoom" "Webex" "MCTrade" "Creatio" "QuickBooks" "ActiveCampaign" "ConstantContact" "Yoxel"
authScopes
Array of strings (Scope)
Items Enum: "Calendar.Read" "Calendar.ReadWrite" "Mail.Read" "Mail.ReadWrite" "Mail.Send" "Mail.Drafts" "Mail.All" "Contacts.Read" "Contacts.ReadWrite" "Tasks.Read" "Tasks.ReadWrite"
authOrgId
string
authUserId
string
clientOrgId
string
serverUrl
string
loginString
string

This or email field must be specified

oauthClientId
string
active
required
boolean

The account is always active in the current API version

authString1
string
authString2
string
password
string

Password for IMAP accounts

authObtainedAt
string <date-time>
authExpiresAt
string <date-time>
email
string

This or loginString field must be specified

name
string
serverInfo
string
timezone
string

Responses

Request samples

Content type
application/json
{
  • "serviceType": "Google",
  • "serviceProvider": "Office365",
  • "authScopes": [
    ],
  • "authOrgId": "string",
  • "authUserId": "string",
  • "clientOrgId": "string",
  • "serverUrl": "string",
  • "loginString": "string",
  • "oauthClientId": "string",
  • "active": true,
  • "authString1": "string",
  • "authString2": "string",
  • "password": "string",
  • "authObtainedAt": "2019-08-24T14:15:22Z",
  • "authExpiresAt": "2019-08-24T14:15:22Z",
  • "email": "string",
  • "name": "string",
  • "serverInfo": "string",
  • "timezone": "string"
}

Response samples

Content type
application/json
{
  • "accountId": 0,
  • "accessToken": "string",
  • "userId": "string",
  • "userSession": "string"
}

Get accounts

Authorizations:
AppAuth
query Parameters
limit
integer or null <int32>
Default: 50

page size

offset
integer or null <int32>
Default: 0

return records offset by the given number

authOrgId
string or null

An authenticated OrgId

serviceType
string (ServiceTypeNonDaemon)
Enum: "Google" "Office365" "EWS" "IMAP" "Salesforce" "Salesflare" "Repfabric" "Slack" "SugarCRM" "HighLevel" "Hubspot" "Zoom" "Webex" "WebexBot" "Pipedrive" "EclipseERP" "AutoQuotes" "Teamwork" "NetSuite" "SpecPath" "Zoho" "Clientify" "QuickBooks" "ActiveCampaign" "Creatio" "ConstantContact" "Fishbowl" "iCloud"
subscriptionId
integer or null <int64>

Responses

Request samples

curl -u ClientId:Secret -X GET https://api.aurinko.io/v1/am/accounts \
    -G -d clientOrgId='12345'

Response samples

Content type
application/json
{
  • "offset": 0,
  • "totalSize": 0,
  • "done": true,
  • "records": [
    ]
}

Get account by id

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

account id

Responses

Request samples

curl -u ClientId:Secret -X GET https://api.aurinko.io/v1/am/accounts/{id}

Response samples

Content type
application/json
{
  • "id": 0,
  • "parentId": 0,
  • "serviceType": "Google",
  • "serviceProvider": "Office365",
  • "active": true,
  • "tokenStatus": "active",
  • "tokenError": "string",
  • "type": "daemon",
  • "daemon": true,
  • "loginString": "string",
  • "email": "string",
  • "mailboxAddress": "string",
  • "name": "string",
  • "name2": "string",
  • "serverUrl": "string",
  • "serverUrl2": "string",
  • "clientOrgId": "string",
  • "authUserId": "string",
  • "authOrgId": "string",
  • "timezone": "string",
  • "tokenIssuedAt": "2019-08-24T14:15:22Z",
  • "authScopes": [
    ],
  • "authNativeScopes": [
    ],
  • "authObtainedAt": "2019-08-24T14:15:22Z",
  • "authExpiresAt": "2019-08-24T14:15:22Z",
  • "userId": "string"
}

Delete account by ID

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

Responses

Request samples

curl -u ClientId:Secret -X DELETE https://api.aurinko.io/v1/am/accounts/12345

Service accounts

Service accounts represent admin/service/organization level connections. List, cancel, update, and delete service accounts associated with your application.

Upsert a service account

Authorizations:
AppAuth
query Parameters
recycleKeys
Array of strings or null (ServiceKey)
Enum: "email" "orgId" "userId" "serverUrl" "username" "clientOrgId"

Recycle Keys

Request Body schema: application/json
serviceType
required
string (ServiceType)
Enum: "Google" "GoogleBot" "Office365" "EWS" "IMAP" "Salesforce" "Salesflare" "Repfabric" "MsTeamsBot" "Slack" "SlackBot" "SugarCRM" "HighLevel" "Hubspot" "Zoom" "ZoomBot" "Webex" "WebexBot" "Pipedrive" "EclipseERP" "AutoQuotes" "Teamwork" "NetSuite" "MCTrade" "SpecPath" "Zoho" "Clientify" "QuickBooks" "ActiveCampaign" "Creatio" "ConstantContact" "Fishbowl" "iCloud"
serviceProvider
string (ServiceProvider)
Enum: "Office365" "Google" "Zoho" "IMAP" "EWS" "Yahoo" "AOL" "iCloud" "BigPond" "Fastmail" "Repfabric" "Salesforce" "Salesflare" "SugarCRM" "HighLevel" "Hubspot" "Pipedrive" "AutoQuotes" "SpecPath" "Clientify" "Teamwork" "EclipseERP" "NetSuite" "Fishbowl" "Slack" "Zoom" "Webex" "MCTrade" "Creatio" "QuickBooks" "ActiveCampaign" "ConstantContact" "Yoxel"
authScopes
Array of strings (Scope)
Items Enum: "Calendar.Read" "Calendar.ReadWrite" "Mail.Read" "Mail.ReadWrite" "Mail.Send" "Mail.Drafts" "Mail.All" "Contacts.Read" "Contacts.ReadWrite" "Tasks.Read" "Tasks.ReadWrite"
authOrgId
string
authUserId
string
clientOrgId
string
serverUrl
string
loginString
string

This or email field must be specified

oauthClientId
string
active
required
boolean

The account is always active in the current API version

authString1
string
authString2
string
password
string

Password for IMAP accounts

authObtainedAt
string <date-time>
authExpiresAt
string <date-time>
email
string

This or loginString field must be specified

name
string
serverInfo
string
timezone
string

Responses

Request samples

Content type
application/json
{
  • "serviceType": "Google",
  • "serviceProvider": "Office365",
  • "authScopes": [
    ],
  • "authOrgId": "string",
  • "authUserId": "string",
  • "clientOrgId": "string",
  • "serverUrl": "string",
  • "loginString": "string",
  • "oauthClientId": "string",
  • "active": true,
  • "authString1": "string",
  • "authString2": "string",
  • "password": "string",
  • "authObtainedAt": "2019-08-24T14:15:22Z",
  • "authExpiresAt": "2019-08-24T14:15:22Z",
  • "email": "string",
  • "name": "string",
  • "serverInfo": "string",
  • "timezone": "string"
}

Response samples

Content type
application/json
{
  • "accountId": 0,
  • "accessToken": "string",
  • "userId": "string",
  • "userSession": "string"
}

Get service accounts

Authorizations:
AppAuth
query Parameters
limit
integer or null <int32>
Default: 50

page size

offset
integer or null <int32>
Default: 0

return records offset by the given number

clientOrgId
string or null

A client OrgId

authOrgId
string or null

An authenticated OrgId

serviceType
string (ServiceTypeDaemon)
Enum: "Google" "GoogleBot" "Office365" "EWS" "MsTeamsBot" "Slack" "SlackBot" "ZoomBot" "MCTrade" "Zoho"
subscriptionId
integer or null <int64>

Responses

Request samples

curl -u ClientId:Secret -X GET https://api.aurinko.io/v1/am/svc_accounts \
    -G -d clientOrgId='12345'

Response samples

Content type
application/json
{
  • "offset": 0,
  • "totalSize": 0,
  • "done": true,
  • "records": [
    ]
}

Managed accounts

Manage accounts rely on service accounts for their connections. List, cancel, update, and delete managed accounts associated with service accounts.

Upsert a managed account

Authorizations:
AppAuth
path Parameters
accId
required
integer <int64>

A service account id

query Parameters
userAccount
string (UserAccountType)
Enum: "primary" "secondary"

Type of user account. Required if userId is provided.

userId
string or null
recycleKeys
Array of strings or null (ServiceKey)
Enum: "email" "orgId" "userId" "serverUrl" "username" "clientOrgId"
ensureAccess
boolean or null

When set to true, Aurinko will check if a user has access to the requested resources. Supported only for Google and Office365, and only for Email, Calendar, Contacts and Tasks APIs.

Request Body schema: application/json
serviceType
required
string (ServiceType)
Enum: "Google" "GoogleBot" "Office365" "EWS" "IMAP" "Salesforce" "Salesflare" "Repfabric" "MsTeamsBot" "Slack" "SlackBot" "SugarCRM" "HighLevel" "Hubspot" "Zoom" "ZoomBot" "Webex" "WebexBot" "Pipedrive" "EclipseERP" "AutoQuotes" "Teamwork" "NetSuite" "MCTrade" "SpecPath" "Zoho" "Clientify" "QuickBooks" "ActiveCampaign" "Creatio" "ConstantContact" "Fishbowl" "iCloud"
serviceProvider
string (ServiceProvider)
Enum: "Office365" "Google" "Zoho" "IMAP" "EWS" "Yahoo" "AOL" "iCloud" "BigPond" "Fastmail" "Repfabric" "Salesforce" "Salesflare" "SugarCRM" "HighLevel" "Hubspot" "Pipedrive" "AutoQuotes" "SpecPath" "Clientify" "Teamwork" "EclipseERP" "NetSuite" "Fishbowl" "Slack" "Zoom" "Webex" "MCTrade" "Creatio" "QuickBooks" "ActiveCampaign" "ConstantContact" "Yoxel"
authScopes
Array of strings (Scope)
Items Enum: "Calendar.Read" "Calendar.ReadWrite" "Mail.Read" "Mail.ReadWrite" "Mail.Send" "Mail.Drafts" "Mail.All" "Contacts.Read" "Contacts.ReadWrite" "Tasks.Read" "Tasks.ReadWrite"
authOrgId
string
authUserId
string
clientOrgId
string
serverUrl
string
loginString
string

This or email field must be specified

oauthClientId
string
active
required
boolean

The account is always active in the current API version

authString1
string
authString2
string
password
string

Password for IMAP accounts

authObtainedAt
string <date-time>
authExpiresAt
string <date-time>
email
string

This or loginString field must be specified

name
string
serverInfo
string
timezone
string

Responses

Request samples

Content type
application/json
{
  • "serviceType": "Google",
  • "serviceProvider": "Office365",
  • "authScopes": [
    ],
  • "authOrgId": "string",
  • "authUserId": "string",
  • "clientOrgId": "string",
  • "serverUrl": "string",
  • "loginString": "string",
  • "oauthClientId": "string",
  • "active": true,
  • "authString1": "string",
  • "authString2": "string",
  • "password": "string",
  • "authObtainedAt": "2019-08-24T14:15:22Z",
  • "authExpiresAt": "2019-08-24T14:15:22Z",
  • "email": "string",
  • "name": "string",
  • "serverInfo": "string",
  • "timezone": "string"
}

Response samples

Content type
application/json
{
  • "accountId": 0,
  • "accessToken": "string",
  • "userId": "string",
  • "userSession": "string"
}

Email messages

Messages contain several pieces of information, such as when a message was sent, the sender's address, to whom it was sent, and the message body. They can also contain files (attachments), calendar event invitations, and more.

Send a new message

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
bodyType
string (BodyType)
Enum: "html" "text"
returnIds
boolean or null

return message id and thread id if possible

Request Body schema: application/json
object (EmailAddress)
subject
string
body
string
inReplyTo
string
references
string
Array of objects (EmailAddress)
Array of objects (EmailAddress)
Array of objects (EmailAddress)
Array of objects (EmailAddress)
Array of objects (EmailHeader)
Array of objects (OutgoingEmailAttachment)
object (OutEmailTrack)
object (FollowUpOutgoing)
keywords
Array of strings

Responses

Request samples

Content type
application/json
{
  • "from": {
    },
  • "subject": "string",
  • "body": "string",
  • "inReplyTo": "string",
  • "references": "string",
  • "to": [
    ],
  • "cc": [
    ],
  • "bcc": [
    ],
  • "replyTo": [
    ],
  • "xHeaders": [
    ],
  • "attachments": [
    ],
  • "tracking": {
    },
  • "followUp": {
    },
  • "keywords": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "Ok",
  • "id": "string",
  • "submittedMessageId": "string",
  • "threadId": "string",
  • "trackingId": "string",
  • "processingStatus": "Ok",
  • "processingError": {
    }
}

List email messages

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
pageToken
string or null
q
string or null

Only return messages matching the specified query. For example, "from:someuser@example.com after:01/01/2020"

bodyType
string (BodyType)
Enum: "html" "text"

Supported by Google and Office365 accounts only. Body preview (snippet) is returned for other providers. Always, check the omitted[] array to determine if the response contains full body.

includeTrashAndJunk
boolean or null
nativeProperties
Array of strings or null (NativeProperty)

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/email/messages
    -d q='text to:{address_or_name}'

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Get a message

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
messageId
required
string

email message identifier

query Parameters
bodyType
string (BodyType)
Enum: "html" "text"

Default html

nativeProperties
Array of strings or null (NativeProperty)
loadInlines
boolean or null
Default: false

automatically pre-load relevant inline attachments

stripQuoted
boolean or null
Default: false

strip quoted elements from message body

requireThreadId
boolean or null
Default: false

For IMAP accounts not supporting threads, wait for Aurinko to discover threads and provide its threadId

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/email/messages/{id}

Response samples

Content type
application/json
{
  • "id": "string",
  • "threadId": "string",
  • "createdTime": "2019-08-24T14:15:22Z",
  • "lastModifiedTime": "2019-08-24T14:15:22Z",
  • "sentAt": "2019-08-24T14:15:22Z",
  • "receivedAt": "2019-08-24T14:15:22Z",
  • "internetMessageId": "string",
  • "subject": "string",
  • "sysLabels": [
    ],
  • "keywords": [
    ],
  • "sysClassifications": [
    ],
  • "sensitivity": "normal",
  • "meetingMessageMethod": "request",
  • "from": {
    },
  • "to": [
    ],
  • "cc": [
    ],
  • "bcc": [
    ],
  • "replyTo": [
    ],
  • "hasAttachments": true,
  • "body": "string",
  • "bodySnippet": "string",
  • "attachments": [
    ],
  • "inReplyTo": "string",
  • "references": "string",
  • "threadIndex": "string",
  • "internetHeaders": [
    ],
  • "nativeProperties": {
    },
  • "folderId": "string",
  • "webLink": "string",
  • "omitted": [
    ]
}

Get a raw message

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
messageId
required
string

email message identifier

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/email/messages/{id}/raw

Update a message's status

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
messageId
required
string
Request Body schema: application/json
unread
boolean
archived
boolean
keywords
Array of strings

Responses

Request samples

Content type
application/json
{
  • "unread": true,
  • "archived": true,
  • "keywords": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Get messages in a conversation

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
threadId
required
string

conversation/thread identifier

query Parameters
bodyType
string (BodyType)
Enum: "html" "text"

Supported by Google and Office365 accounts only. Body preview (snippet) is returned for other providers. Always, check the omitted[] array to determine if the response contains full body.

pageToken
string or null

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/email/conversations/{threadId}

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Reply to a message

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
messageId
required
string

an identifier of a message the response is for

query Parameters
bodyType
string (BodyType)
Enum: "html" "text"
returnIds
boolean or null

return message id and thread id if possible

Request Body schema: application/json
object (EmailAddress)
subject
string
body
string
Array of objects (EmailAddress)
Array of objects (EmailAddress)
Array of objects (EmailAddress)
Array of objects (EmailAddress)
Array of objects (EmailHeader)
Array of objects (OutgoingEmailAttachment)
object (OutEmailTrack)
object (FollowUpOutgoing)

Responses

Request samples

Content type
application/json
{
  • "from": {
    },
  • "subject": "string",
  • "body": "string",
  • "to": [
    ],
  • "cc": [
    ],
  • "bcc": [
    ],
  • "replyTo": [
    ],
  • "xHeaders": [
    ],
  • "attachments": [
    ],
  • "tracking": {
    },
  • "followUp": {
    }
}

Response samples

Content type
application/json
{
  • "status": "Ok",
  • "id": "string",
  • "submittedMessageId": "string",
  • "threadId": "string",
  • "trackingId": "string",
  • "processingStatus": "Ok",
  • "processingError": {
    }
}

Get a message attachment

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
messageId
required
string

email message identifier

attachmentId
required
string

attachment identifier

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/email/messages/{msgId}/attachments/{attId}

Response samples

Content type
application/json
{
  • "content": "string"
}

Email sync

Sync/delta methods.

Start a new email sync

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
daysWithin
integer

Scan emails received within last 'daysWithin' days.

bodyType
string (BodyType)
Enum: "html" "text"

Responses

Request samples

curl -X POST -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/email/sync \
    -d daysWithin=7

Response samples

Content type
application/json
{
  • "syncUpdatedToken": "string",
  • "syncDeletedToken": "string",
  • "ready": true
}

Request changed emails (deltas)

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
deltaToken
string or null

A token received as nextDeltaToken from a previous sync request or a start sync request

pageToken
string or null

A token received as nextPageToken from a previous page request

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/email/sync/updated \
    -d deltaToken='a8b7c6d5e4f3g2h1'

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "nextDeltaToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Request deleted emails (deltas)

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
deltaToken
string or null

A token received as nextDeltaToken from a previous sync request or a start sync request

pageToken
string or null

A token received as nextPageToken from a previous page request

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/email/sync/deleted \
    -d deltaToken='a8b7c6d5e4f3g2h1'

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "nextDeltaToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Draft messages

A draft message is a message which has not been sent yet. The drafts endpoints let you create new drafts, read existing drafts, and send drafts.

Create a new draft message

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
bodyType
string (BodyType)
Enum: "html" "text"
Request Body schema: application/json
object (EmailAddress)
subject
string
body
string
inReplyTo
string
references
string
Array of objects (EmailAddress)
Array of objects (EmailAddress)
Array of objects (EmailAddress)
Array of objects (EmailAddress)
Array of objects (EmailHeader)
Array of objects (OutgoingEmailAttachment)
object (OutEmailTrack)
object (FollowUpOutgoing)
keywords
Array of strings

Responses

Request samples

Content type
application/json
{
  • "from": {
    },
  • "subject": "string",
  • "body": "string",
  • "inReplyTo": "string",
  • "references": "string",
  • "to": [
    ],
  • "cc": [
    ],
  • "bcc": [
    ],
  • "replyTo": [
    ],
  • "xHeaders": [
    ],
  • "attachments": [
    ],
  • "tracking": {
    },
  • "followUp": {
    },
  • "keywords": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "webLink": "string"
}

Get a draft message

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
draftId
required
string

draft message identifier

query Parameters
bodyType
string (BodyType)
Enum: "html" "text"
nativeProperties
Array of strings or null (NativeProperty)
loadInlines
boolean or null
Default: false

automatically pre-load relevant inline attachments

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/email/drafts/{id}

Response samples

Content type
application/json
{
  • "id": "string",
  • "message": {
    },
  • "scheduled": {
    }
}

Send a draft message

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
draftId
required
string

an identifier of a draft message

query Parameters
sendTime
string or null <date-time>
Request Body schema: application/json
object (OutEmailTrack)

Responses

Request samples

Content type
application/json
{
  • "tracking": {
    }
}

Response samples

Content type
application/json
{
  • "status": "Ok",
  • "trackingId": "string"
}

Email folders

List email folders, their attributes, and messages.

Create a new email folder

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
Request Body schema: application/json
name
string
parentId
string

parent folder identifier

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "parentId": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "fullName": "string",
  • "isFolder": true,
  • "isLabel": true,
  • "parentId": "string"
}

List email folders

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
pageToken
string or null

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/email/folders

Response samples

Content type
application/json
{
  • "length": 0,
  • "records": [
    ]
}

Update wellKnown email folders

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
Request Body schema: application/json
archive
string

an xid of folder - to mark it as Archive, set to null to clear Archive folder

Responses

Request samples

Content type
application/json
{
  • "archive": "string"
}

Response samples

Content type
application/json
{
  • "archive": "string"
}

List wellKnown email folders

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/email/folders/wellKnown

Response samples

Content type
application/json
{
  • "archive": "string"
}

Get an email folder

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
folderId
required
string

email folder identifier

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/email/folders/{id}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "fullName": "string",
  • "isFolder": true,
  • "isLabel": true,
  • "parentId": "string"
}

List email messages in a specified folder

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
folderId
required
string
query Parameters
pageToken
string or null
q
string or null

Only return messages matching the specified query. For example, "from:someuser@example.com after:01/01/2020"

bodyType
string (BodyType)
Enum: "html" "text"
nativeProperties
Array of strings or null (NativeProperty)

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/email/messages
    -d q='text to:{address_or_name}'

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Email tracking

Track email opens.

Create tracking for a draft message

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
draftId
required
string or null

an identifier of a draft message for start tracking

ignoreNotFound
string or null

if draft was not found, store tracking data anyway

Request Body schema: application/json
htmlText
string
object (OutEmailTrack)

Responses

Request samples

Content type
application/json
{
  • "htmlText": "string",
  • "tracking": {
    }
}

Response samples

Content type
application/json
{
  • "trackReplies": true,
  • "htmlBody": "string",
  • "trackingCode": "string",
  • "context": "string",
  • "linkCodes": [
    ],
  • "trackingId": "string"
}

Mark draft's tracking as sent

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
draftId
required
string

an identifier of a draft message

Request Body schema: application/json
threadId
string
messageId
string
internetMessageId
string

Responses

Request samples

Content type
application/json
{
  • "threadId": "string",
  • "messageId": "string",
  • "internetMessageId": "string"
}

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Modify draft's tracking

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
draftId
required
string

an identifier of a draft message

Request Body schema: application/json
context
string

Responses

Request samples

Content type
application/json
{
  • "context": "string"
}

Response samples

Content type
application/json
{
  • "status": "Ok"
}

List tracking data

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
withActivityOnly
boolean or null
Default: false

return only those where an open or click happened

limit
integer or null <int32>
Default: 50

page size

offset
integer or null <int32>
Default: 0

return records offset by the given number

contextContains
string or null
threadId
string or null

identifier of thread

showSentOnly
boolean or null
Default: true

return tracking which started message was sent

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/email/tracking

Response samples

Content type
application/json
{
  • "offset": 0,
  • "totalSize": 0,
  • "done": true,
  • "records": [
    ]
}

Purge recent activity for a user

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
threadId
string or null
header Parameters
User-Agent
required
string

User-Agent

Responses

Request samples

curl -H 'Authorization: Bearer <access token>' \
     -H 'User-Agent: <User-Agent>' \
    -X POST https://api.aurinko.io/v1/email/tracking/purgeMyTracking

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Set ignore open/click tracking for а message

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
messageId
string or null

message identifier

inetMessageId
string or null

internet message identifier

isIgnored
required
boolean

should be ignored or not

Responses

Request samples

curl -H 'Authorization: Bearer <access token>' \
    -X POST https://api.aurinko.io/v1/email/tracking/ignoreOpenClicks

Response samples

Content type
application/json
{
  • "status": "Ok"
}

List all tracking events

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
threadId
string or null

conversation id

from
string or null <datetime>

event start dateTime (strictly greater)

to
string or null <datetime>

event end dateTime (smaller or equal)

limit
integer or null <int32>
Default: 50

page size

offset
integer or null <int32>
Default: 0

return records offset by the given number

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/email/tracking/events

Response samples

Content type
application/json
{
  • "offset": 0,
  • "totalSize": 0,
  • "done": true,
  • "records": [
    ]
}

Get tracking data by Id

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>

Tracking data id

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/email/tracking/{id}'

Response samples

Content type
application/json
{
  • "id": 0,
  • "messageId": "string",
  • "inetMessageId": "string",
  • "threadId": "string",
  • "sendDate": "2019-08-24T14:15:22Z",
  • "lastActivityTime": "2019-08-24T14:15:22Z",
  • "lastRespondedTime": "2019-08-24T14:15:22Z",
  • "trackReplies": true,
  • "trackOpens": true,
  • "trackingCode": "string",
  • "context": "string",
  • "location": "string",
  • "userAgent": "string",
  • "remoteAddr": "string",
  • "openCount": 0,
  • "ignoreOpenClicks": true,
  • "hasBounced": true
}

List tracking events

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>

Tracking id

query Parameters
limit
integer or null <int32>
Default: 50

page size

offset
integer or null <int32>
Default: 0

return records offset by the given number

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/email/tracking/{id}/events

Response samples

Content type
application/json
{
  • "offset": 0,
  • "totalSize": 0,
  • "done": true,
  • "records": [
    ]
}

Get tracking event by Id

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
trackingId
required
integer <int64>

Tracking data id

id
required
integer <int64>

Tracking event id

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/email/tracking/{trackingId}/events/{id}'

Response samples

Content type
application/json
{
  • "id": 0,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "eventType": "open",
  • "location": "string",
  • "userAgent": "string",
  • "referrer": "string",
  • "remoteAddr": "string",
  • "openNumber": 0,
  • "threadId": "string",
  • "messageId": "string",
  • "internetMessageId": "string",
  • "trackingId": 0,
  • "trackingThreadId": "string",
  • "trackingMessageId": "string",
  • "trackingInternetMessageId": "string",
  • "context": "string",
  • "trackingCode": "string"
}

Follow-up and templates

Follow-up rules allow you to define automatic email follow-up (drip) sequences and email templates. List, create, update, and delete follow-up rules associated with a mailbox account. Check status of a drip sequence for a given email thread, or activate a drip sequence.

Get a follow up configuration

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)

Responses

Response samples

Content type
application/json
{
  • "timezone": "string",
  • "emailAliases": [
    ]
}

Update a follow up configuration

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
Request Body schema: application/json
timezone
string
emailAliases
Array of strings <email> [ items <email > ]

Responses

Request samples

Content type
application/json
{
  • "timezone": "string",
  • "emailAliases": [
    ]
}

Response samples

Content type
application/json
{
  • "timezone": "string",
  • "emailAliases": [
    ]
}

Add a follow up rule

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
Request Body schema: application/json
name
string
expectThreadResponse
boolean
templateBody
string
templateSubject
string
Array of objects (FollowupRuleAction)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "expectThreadResponse": true,
  • "templateBody": "string",
  • "templateSubject": "string",
  • "actions": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "expectThreadResponse": true,
  • "templateBody": "string",
  • "templateSubject": "string",
  • "actions": [
    ]
}

Get follow up rules

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "expectThreadResponse": true,
  • "templateBody": "string",
  • "templateSubject": "string",
  • "actions": [
    ]
}

Delete a follow up rule

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>

Responses

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Update a follow up rule

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>
Request Body schema: application/json
name
string
expectThreadResponse
boolean
templateBody
string
templateSubject
string
Array of objects (FollowupRuleAction)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "expectThreadResponse": true,
  • "templateBody": "string",
  • "templateSubject": "string",
  • "actions": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "expectThreadResponse": true,
  • "templateBody": "string",
  • "templateSubject": "string",
  • "actions": [
    ]
}

Get a list of conversations touched by followup

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
active
boolean or null

active or inactive threads, by default all threads returned

limit
integer or null <int32>
Default: 50

page size

offset
integer or null <int32>
Default: 0

page offset

Responses

Response samples

Content type
application/json
{
  • "convoId": "string",
  • "subject": "string",
  • "status": "disabled",
  • "rule": { },
  • "dripStartedAt": "2019-08-24T14:15:22Z",
  • "dripLastNum": 0,
  • "dripError": "string",
  • "dripEndedAt": "2019-08-24T14:15:22Z",
  • "actionVars": {
    },
  • "targets": [
    ],
  • "dripResponder": "string"
}

Check a conversation status

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
convoId
required
string

thread identifier

Responses

Response samples

Content type
application/json
{
  • "convoId": "string",
  • "subject": "string",
  • "status": "disabled",
  • "rule": { },
  • "dripStartedAt": "2019-08-24T14:15:22Z",
  • "dripLastNum": 0,
  • "dripError": "string",
  • "dripEndedAt": "2019-08-24T14:15:22Z",
  • "actionVars": {
    },
  • "targets": [
    ],
  • "dripResponder": "string"
}

Update a conversation status

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
convoId
required
string

thread identifier

Request Body schema: application/json
status
string
Enum: "disabled" "active"
ruleId
integer <int64>
dripAfter
string <date-time>
targets
Array of strings
object

Responses

Request samples

Content type
application/json
{
  • "status": "disabled",
  • "ruleId": 0,
  • "dripAfter": "2019-08-24T14:15:22Z",
  • "targets": [
    ],
  • "actionVars": {
    }
}

Response samples

Content type
application/json
{
  • "convoId": "string",
  • "subject": "string",
  • "status": "disabled",
  • "rule": { },
  • "dripStartedAt": "2019-08-24T14:15:22Z",
  • "dripLastNum": 0,
  • "dripError": "string",
  • "dripEndedAt": "2019-08-24T14:15:22Z",
  • "actionVars": {
    },
  • "targets": [
    ],
  • "dripResponder": "string"
}

Calendars

Each account connected to Aurino can have zero or more calendars, and each calendar has a collection of individual events.

Create new calendar

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
Request Body schema: application/json
name
string
color
string
description
string

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "color": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "color": "string",
  • "description": "string",
  • "accessRole": "owner",
  • "primary": true
}

Request list of calendars

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
pageToken
string or null

A token received as nextPageToken from a previous page request (for the first page it must be empty)

withShared
boolean or null
Default: false

Shows shared calendars if any available

mode
string (CalendarMode)
Enum: "user" "group"

Calendar type to request (make sense only for Office365)

Responses

Request samples

curl -H 'Authorization: Bearer <access token>' \
    -X GET https://api.aurinko.io/v1/calendars

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Update a calendar

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
string

Calendar id

Request Body schema: application/json
name
string
description
string

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "color": "string",
  • "description": "string",
  • "accessRole": "owner",
  • "primary": true
}

Get a calendar

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
string

Calendar id

Responses

Request samples

curl -H 'Authorization: Bearer <access token>' \
    -X GET https://api.aurinko.io/v1/calendars/primary

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "color": "string",
  • "description": "string",
  • "accessRole": "owner",
  • "primary": true
}

Calendar events

Events are objects within a calendar, generally supporting all features of modern scheduling apps. Using the calendar APIs, your application can schedule events, send meeting invitations, RSVP, and more.

Request events in a range

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
calendarId
required
string

Calendar id

query Parameters
timeMin
required
string <date-time>

Lower bound (exclusive) for an event's end time to filter by. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. If timeMax is set, timeMin must be smaller than timeMax.

timeMax
required
string <date-time>

Upper bound (exclusive) for an event's start time to filter by. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but are ignored. If timeMin is set, timeMax must be greater than timeMin.

pageToken
string or null

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/calendars/primary/events/range \
    -d timeMin=2019-06-03T10:00:00-07:00 \
    -d timeMax=2020-06-03T10:00:00-07:00

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Request events by ICalUid's

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
calendarId
required
string

Calendar id

query Parameters
iCalUId
required
Array of strings

Find all events that match specified ICalUid's

pageToken
string or null

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/calendars/primary/events/find \
    -d ICalUid=ABCID1 \
    -d ICalUid=XYZID2

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Update an event

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
calendarId
required
string

Calendar id

eventId
required
string

Event id

query Parameters
notifyAttendees
boolean or null
Default: true
returnRecord
boolean or null
Default: true

Whether response must contain a record that has been updated. This can result in an additional request to provider API.

header Parameters
If-Match
required
string

The HTTP entity tag of the resource (ETag). Used for web cache validation.

Request Body schema: application/json
subject
string
description
string
location
string
object (EventDateTime)
object (EventDateTime)
object (MeetingInfo)
object (Recurrence)
object (OccurrenceInfo)
showAs
string (ShowAs)
Enum: "free" "busy" "tentative" "outOfOffice" "unknown"
sensitivity
string (Sensitivity)
Enum: "normal" "private" "personal" "confidential"
Array of objects (EmailAttachment)

Responses

Request samples

Content type
application/json
{
  • "subject": "string",
  • "description": "string",
  • "location": "string",
  • "start": {
    },
  • "end": {
    },
  • "meetingInfo": {
    },
  • "recurrence": {
    },
  • "occurrenceInfo": {
    },
  • "showAs": "free",
  • "sensitivity": "normal",
  • "attachments": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "etag": "string",
  • "iCalUId": "string",
  • "globalId": "string",
  • "record": {
    },
  • "onlineMeetingProvider": "string",
  • "onlineMeetingDetails": {
    }
}

Get an event

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
calendarId
required
string

Calendar id

eventId
required
string

Event id

query Parameters
nativeProperties
Array of strings or null (NativeProperty)

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/calendars/primary/events/{id}

Response samples

Content type
application/json
{
  • "id": "string",
  • "etag": "string",
  • "calendarId": "string",
  • "createdTime": "2019-08-24T14:15:22Z",
  • "lastModifiedTime": "2019-08-24T14:15:22Z",
  • "subject": "string",
  • "description": "string",
  • "location": "string",
  • "start": {
    },
  • "end": {
    },
  • "organizer": {
    },
  • "meetingInfo": {
    },
  • "recurrenceType": "single",
  • "recurrence": {
    },
  • "occurrenceInfo": {
    },
  • "iCalUid": "string",
  • "globalId": "string",
  • "showAs": "free",
  • "sensitivity": "normal",
  • "categories": [
    ],
  • "htmlLink": "string",
  • "hasAttachments": true,
  • "attachments": [
    ],
  • "omitted": [
    ]
}

Delete an event

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
calendarId
required
string

Calendar id

eventId
required
string

Event id

query Parameters
notifyAttendees
boolean or null
Default: true

Responses

Request samples

curl -X DELETE -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/calendars/primary/events/<eventId>

Request a series description

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
calendarId
required
string

Calendar id

masterId
required
string

Master event id

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/calendars/primary/events/{masterId}/series

Response samples

Content type
application/json
{
  • "id": "string",
  • "globalId": "string",
  • "recurrence": {
    },
  • "modifiedOccurrences": [
    ],
  • "deletedOccurrences": [
    ]
}

Request an occurrence by original start time

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
calendarId
required
string

Calendar id

masterId
required
string

Master event id

ost
required
string <datetime>

Original start time

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/calendars/primary/events/{masterId}/occurrences/2020-04-01

Response samples

Content type
application/json
{
  • "id": "string",
  • "etag": "string",
  • "calendarId": "string",
  • "createdTime": "2019-08-24T14:15:22Z",
  • "lastModifiedTime": "2019-08-24T14:15:22Z",
  • "subject": "string",
  • "description": "string",
  • "location": "string",
  • "start": {
    },
  • "end": {
    },
  • "organizer": {
    },
  • "meetingInfo": {
    },
  • "recurrenceType": "single",
  • "recurrence": {
    },
  • "occurrenceInfo": {
    },
  • "iCalUid": "string",
  • "globalId": "string",
  • "showAs": "free",
  • "sensitivity": "normal",
  • "categories": [
    ],
  • "htmlLink": "string",
  • "hasAttachments": true,
  • "attachments": [
    ],
  • "omitted": [
    ]
}

Create a new event

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
calendarId
required
string

Calendar id

query Parameters
notifyAttendees
boolean or null
Default: true
bodyType
string (BodyType)
Enum: "html" "text"
returnRecord
boolean or null
Default: true

Whether response must contain a record that has been created. This can result in an additional request to provider API.

Request Body schema: application/json
subject
string
description
string
location
string
object (EventDateTime)
object (EventDateTime)
object (MeetingInfo)
object (Recurrence)
object (OccurrenceInfo)
showAs
string (ShowAs)
Enum: "free" "busy" "tentative" "outOfOffice" "unknown"
sensitivity
string (Sensitivity)
Enum: "normal" "private" "personal" "confidential"
Array of objects (EmailAttachment)

Responses

Request samples

Content type
application/json
{
  • "subject": "string",
  • "description": "string",
  • "location": "string",
  • "start": {
    },
  • "end": {
    },
  • "meetingInfo": {
    },
  • "recurrence": {
    },
  • "occurrenceInfo": {
    },
  • "showAs": "free",
  • "sensitivity": "normal",
  • "attachments": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "etag": "string",
  • "iCalUId": "string",
  • "globalId": "string",
  • "record": {
    },
  • "onlineMeetingProvider": "string",
  • "onlineMeetingDetails": {
    }
}

Update meeting response

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
calendarId
required
string

Calendar id

eventId
required
string

Event id

query Parameters
notifyAttendees
boolean or null
Default: true
Request Body schema: application/json
response
required
string (MeetingResponseType)
Enum: "noResponse" "declined" "tentative" "accepted"
comment
string

Responses

Request samples

Content type
application/json
{
  • "response": "noResponse",
  • "comment": "string"
}

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Get an event attachment

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
calendarId
required
string

Calendar id

eventId
required
string

Event id

attachmentId
required
string

attachment identifier

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/email/messages/{msgId}/attachments/{attId}

Response samples

Content type
application/json
{
  • "content": "string"
}

Calendar sync

Sync/delta methods.

Start a new calendar sync

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
calendarId
required
string

Calendar id

query Parameters
timeMin
required
string <date-time>

Lower bound (exclusive) for an event's end time to filter by. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. If timeMax is set, timeMin must be smaller than timeMax.

timeMax
required
string <date-time>

Upper bound (exclusive) for an event's start time to filter by. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but are ignored. If timeMin is set, timeMax must be greater than timeMin.

Responses

Request samples

curl -X POST -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/calendars/primary/sync \
    -d timeMin=2019-06-03T10:00:00-07:00 \
    -d timeMax=2020-06-03T10:00:00-07:00

Response samples

Content type
application/json
{
  • "syncUpdatedToken": "string",
  • "syncDeletedToken": "string",
  • "ready": true
}

Request changed events (deltas)

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
calendarId
required
string

Calendar id

query Parameters
deltaToken
string or null

A token received as nextDeltaToken from a previous sync request or a start sync request

pageToken
string or null

A token received as nextPageToken from a previous page request

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/calendars/primary/sync/updated \
    -d deltaToken='a8b7c6d5e4f3g2h1'

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "nextDeltaToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Request deleted events (deltas)

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
calendarId
required
string

Calendar id

query Parameters
deltaToken
string or null

A token received as nextDeltaToken from a previous sync request or a start sync request

pageToken
string or null

A token received as nextPageToken from a previous page request

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/calendars/primary/sync/deleted \
    -d deltaToken='a8b7c6d5e4f3g2h1'

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "nextDeltaToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Free/Busy schedule

Check free/busy status for a calendar or available time slots for a meeting in multiple calendars.

Get the free/busy availability information for a collection of users, or resources

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
Request Body schema: application/json
timeMin
string <date-time>
timeMax
string <date-time>
emails
Array of strings <email> [ items <email > ]

Responses

Request samples

Content type
application/json
{
  • "timeMin": "2019-08-24T14:15:22Z",
  • "timeMax": "2019-08-24T14:15:22Z",
  • "emails": [
    ]
}

Response samples

Content type
application/json
{
  • "records": [
    ]
}

Get working hours for a collection of users, or resources.

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
Request Body schema: application/json
emails
Array of strings <email> [ items <email > ]

Responses

Request samples

Content type
application/json
{
  • "emails": [
    ]
}

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Suggest meeting times for a collection of users, or resources

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
Request Body schema: application/json
timeMin
string <date-time>

The lower bound of the time interval to search for available meeting times.

timeMax
string <date-time>

The upper bound of the time interval to search for available meeting times.

durationMinutes
integer

The duration of the meeting to search time for.

availabilityStep
integer
Default: 30

Determines the interval at which new meeting slots are made available throughout the working hours.

Array of objects (MeetingAttendee)

The attendees to consider when searching for available meeting times.

defaultTimezone
string

Timezone (IANA) to use when no timezone information is available for the attendees.

object (WeekWorkSchedule)
object (AvailabilityIntervals)
freeStatuses
Array of strings (ShowAs)
Default: ["free"]
Items Enum: "free" "busy" "tentative" "outOfOffice" "unknown"

The statuses from /freeBusy request to consider as free time for the attendees.

Responses

Request samples

Content type
application/json
{
  • "timeMin": "2019-08-24T14:15:22Z",
  • "timeMax": "2019-08-24T14:15:22Z",
  • "durationMinutes": 0,
  • "availabilityStep": 30,
  • "attendees": [
    ],
  • "defaultTimezone": "string",
  • "defaultWorkHours": {
    },
  • "availabilityIntervals": {
    },
  • "freeStatuses": [
    ]
}

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "attendees": [
    ]
}

Booking (Accounts)

Booking profiles allow you to build calendar availability and meeting scheduling apps. List, create, update, and delete booking profiles associated with a calendar (Aurinko account). Gather availability information from a calendar and find time slots when the calendar owner is available. Schedule events for a calendar owner.

Get user work hours

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)

Responses

Response samples

Content type
application/json
{
  • "daySchedules": [
    ],
  • "timezone": "string"
}

Create a booking profile

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
Request Body schema: application/json
name
string

Profile name used in calendar links to identify a profile.

durationMinutes
integer

Duration of the meeting in minutes.

availabilityStep
integer

Determines the interval at which new meeting slots are made available throughout the working hours. Allowed values are 5, 10, 15, 20, 30, 60.

startTime
string <date-time>

The beginning of the formation of intervals. Must be in the future, otherwise the current time will be used.

endTime
string <date-time>

The ending of the formation of intervals. If the time specified here is in the past, the intervals will be empty, regardless of the Start time parameter.

timeAvailableFor
string

Time period (in ISO-8601 format) the profile is covering. For example, P3M (3 months), P4W (4 weeks), P5D (5 days).

subject
string

Subject for events booked using this profile.

description
string

Description for events booked using this profile.

location
string

Location for events booked using this profile.

object (WeekWorkSchedule)
object (AvailabilityIntervals)
context
string

Custom client data stored for the profile.

startConference
boolean

Whether to create an online conference (hangoutsMeet, teamsForBusiness, etc.) for the event. Note, not all providers support creating conferences.

openMeetingUrl
string

The value of the {{openMeetingUrl}} variable that can be used in the event description or subject.

Responses

Request samples

Content type
application/json
{
  • "name": "aurDemo - https://calendar.aurinko.io/aurDemo",
  • "durationMinutes": 30,
  • "availabilityStep": 0,
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "timeAvailableFor": "P4W",
  • "subject": "string",
  • "description": "string",
  • "location": "string",
  • "workHours": {
    },
  • "availabilityIntervals": {
    },
  • "context": "string",
  • "startConference": true,
  • "openMeetingUrl": "string"
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "aurDemo - https://calendar.aurinko.io/aurDemo",
  • "durationMinutes": 30,
  • "availabilityStep": 0,
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "timeAvailableFor": "P4W",
  • "subject": "string",
  • "description": "string",
  • "location": "string",
  • "workHours": {
    },
  • "availabilityIntervals": {
    },
  • "context": "string",
  • "startConference": true,
  • "openMeetingUrl": "string"
}

Get booking profiles

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
limit
integer or null <int32>
Default: 50

page size

offset
integer or null <int32>
Default: 0

return records offset by the given number

Responses

Response samples

Content type
application/json
{
  • "offset": 0,
  • "totalSize": 0,
  • "done": true,
  • "records": [
    ]
}

Update a booking profile

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>

A booking id

Request Body schema: application/json
name
string

Profile name used in calendar links to identify a profile.

durationMinutes
integer

Duration of the meeting in minutes.

availabilityStep
integer

Determines the interval at which new meeting slots are made available throughout the working hours. Allowed values are 5, 10, 15, 20, 30, 60.

startTime
string <date-time>

The beginning of the formation of intervals. Must be in the future, otherwise the current time will be used.

endTime
string <date-time>

The ending of the formation of intervals. If the time specified here is in the past, the intervals will be empty, regardless of the Start time parameter.

timeAvailableFor
string

Time period (in ISO-8601 format) the profile is covering. For example, P3M (3 months), P4W (4 weeks), P5D (5 days).

subject
string

Subject for events booked using this profile.

description
string

Description for events booked using this profile.

location
string

Location for events booked using this profile.

object (WeekWorkSchedule)
object (AvailabilityIntervals)
context
string

Custom client data stored for the profile.

startConference
boolean

Whether to create an online conference (hangoutsMeet, teamsForBusiness, etc.) for the event. Note, not all providers support creating conferences.

openMeetingUrl
string

The value of the {{openMeetingUrl}} variable that can be used in the event description or subject.

Responses

Request samples

Content type
application/json
{
  • "name": "aurDemo - https://calendar.aurinko.io/aurDemo",
  • "durationMinutes": 30,
  • "availabilityStep": 0,
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "timeAvailableFor": "P4W",
  • "subject": "string",
  • "description": "string",
  • "location": "string",
  • "workHours": {
    },
  • "availabilityIntervals": {
    },
  • "context": "string",
  • "startConference": true,
  • "openMeetingUrl": "string"
}

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Get a booking profile by id

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>

A booking id

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "aurDemo - https://calendar.aurinko.io/aurDemo",
  • "durationMinutes": 30,
  • "availabilityStep": 0,
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "timeAvailableFor": "P4W",
  • "subject": "string",
  • "description": "string",
  • "location": "string",
  • "workHours": {
    },
  • "availabilityIntervals": {
    },
  • "context": "string",
  • "startConference": true,
  • "openMeetingUrl": "string"
}

Delete a booking profile by id

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>

A booking id

Responses

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Create a meeting

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>

A booking id

query Parameters
required
string (BookingRequiredMode)
Enum: "one" "all"

a way to select times

reserveForMinutes
integer or null <int64>

Time in minutes, blocks the interval for a time (creates an unconfirmed reservation), the meeting is not created

Request Body schema: application/json
object (SelectedMeetingTime)
groupXids
Array of strings
accountIds
Array of integers <int64> [ items <int64 > ]
name
string

Username of the person requesting the meeting

email
string

Email of the person requesting the meeting, if not specified, an event will be created without an attendee

object

Data for substitution instead of templates, key - value

Responses

Request samples

Content type
application/json
{
  • "time": {
    },
  • "groupXids": [
    ],
  • "accountIds": [
    ],
  • "name": "string",
  • "email": "string",
  • "substitutionData": {
    }
}

Response samples

Content type
application/json
{
  • "created": true,
  • "id": "string",
  • "ReservationId": 0,
  • "groupXid": "string"
}

Get available meeting times

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>

A booking id

query Parameters
required
string (BookingRequiredMode)
Enum: "one" "all"

a way to select times

fromDate
string or null <date>

date to iterate a big time intervals

intervalLength
string or null

Time period (in ISO-8601 format) to iterate a big time intervals

pageToken
string or null

token to request all pages, if booking has many accounts

limit
integer or null <int32>
offset
integer or null <int32>

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "timeAvailableFor": "P4W",
  • "durationMinutes": 0,
  • "availabilityStep": 0,
  • "subject": "string",
  • "primaryColor": "string",
  • "secondaryColor": "string",
  • "additionalFields": [
    ],
  • "nextPageToken": "string",
  • "nextFromDate": "2019-08-24"
}

Convert an unconfirmed booking reservation to a calendar event

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>

An unconfirmed reservation id

Responses

Response samples

Content type
application/json
{
  • "id": "string"
}

Cancel an unconfirmed booking reservation

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>

An unconfirmed reservation id

Responses

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Group Booking

Group Booking profiles allow you to build calendar availability and meeting scheduling for a group of accounts. List, create, update, and delete booking profiles associated with a group. Gather availability information from multiple account calendars and find time slots when at least one user is available. Schedule events for available accounts.

Get available bookings for а time range

Authorizations:
AppAuth
Request Body schema: application/json
timeMin
string <date-time>
timeMax
string <date-time>
profileNames
Array of strings
profileIds
Array of integers <int64> [ items <int64 > ]
required
string (BookingRequiredMode)
Enum: "one" "all"

Responses

Request samples

Content type
application/json
{
  • "timeMin": "2019-08-24T14:15:22Z",
  • "timeMax": "2019-08-24T14:15:22Z",
  • "profileNames": [
    ],
  • "profileIds": [
    ],
  • "required": "one"
}

Response samples

Content type
application/json
{
  • "profileIds": [
    ]
}

Create a meeting

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

A booking id

query Parameters
required
string (BookingRequiredMode)
Enum: "one" "all"

a way to select times

reserveForMinutes
integer or null <int64>

Time in minutes, blocks the interval for a time (creates an unconfirmed reservation), the meeting is not created

Request Body schema: application/json
object (SelectedMeetingTime)
groupXids
Array of strings
accountIds
Array of integers <int64> [ items <int64 > ]
name
string

Username of the person requesting the meeting

email
string

Email of the person requesting the meeting, if not specified, an event will be created without an attendee

object

Data for substitution instead of templates, key - value

Responses

Request samples

Content type
application/json
{
  • "time": {
    },
  • "groupXids": [
    ],
  • "accountIds": [
    ],
  • "name": "string",
  • "email": "string",
  • "substitutionData": {
    }
}

Response samples

Content type
application/json
{
  • "created": true,
  • "id": "string",
  • "ReservationId": 0,
  • "groupXid": "string"
}

Get available meeting times

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

A booking id

query Parameters
required
string (BookingRequiredMode)
Enum: "one" "all"

a way to select times

fromDate
string or null <date>

date to iterate a big time intervals

intervalLength
string or null

Time period (in ISO-8601 format) to iterate a big time intervals

pageToken
string or null

token to request all pages, if booking has many accounts

limit
integer or null <int32>
offset
integer or null <int32>

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "timeAvailableFor": "P4W",
  • "durationMinutes": 0,
  • "availabilityStep": 0,
  • "subject": "string",
  • "primaryColor": "string",
  • "secondaryColor": "string",
  • "additionalFields": [
    ],
  • "nextPageToken": "string",
  • "nextFromDate": "2019-08-24"
}

Create a group booking profile

Authorizations:
AppAuth
Request Body schema: application/json
name
string

Profile name used in calendar links to identify a profile.

durationMinutes
integer

Duration of the meeting in minutes.

availabilityStep
integer

Determines the interval at which new meeting slots are made available throughout the working hours. Allowed values are 5, 10, 15, 20, 30, 60.

startTime
string <date-time>

The beginning of the formation of intervals. Must be in the future, otherwise the current time will be used.

endTime
string <date-time>

The ending of the formation of intervals. If the time specified here is in the past, the intervals will be empty, regardless of the Start time parameter.

timeAvailableFor
string

Time period (in ISO-8601 format) the profile is covering. For example, P3M (3 months), P4W (4 weeks), P5D (5 days).

subject
string

Subject for events booked using this profile.

description
string

Description for events booked using this profile.

location
string

Location for events booked using this profile.

object (WeekWorkSchedule)
object (AvailabilityIntervals)
context
string

Custom client data stored for the profile.

startConference
boolean

Whether to create an online conference (hangoutsMeet, teamsForBusiness, etc.) for the event. Note, not all providers support creating conferences.

openMeetingUrl
string

The value of the {{openMeetingUrl}} variable that can be used in the event description or subject.

clientOrgId
string

Responses

Request samples

Content type
application/json
{
  • "name": "aurDemo - https://calendar.aurinko.io/aurDemo",
  • "durationMinutes": 30,
  • "availabilityStep": 0,
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "timeAvailableFor": "P4W",
  • "subject": "string",
  • "description": "string",
  • "location": "string",
  • "workHours": {
    },
  • "availabilityIntervals": {
    },
  • "context": "string",
  • "startConference": true,
  • "openMeetingUrl": "string",
  • "clientOrgId": "string"
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "aurDemo - https://calendar.aurinko.io/aurDemo",
  • "durationMinutes": 30,
  • "availabilityStep": 0,
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "timeAvailableFor": "P4W",
  • "subject": "string",
  • "description": "string",
  • "location": "string",
  • "workHours": {
    },
  • "availabilityIntervals": {
    },
  • "context": "string",
  • "startConference": true,
  • "openMeetingUrl": "string",
  • "clientOrgId": "string"
}

Get group booking profiles

Authorizations:
AppAuth
query Parameters
limit
integer or null <int32>
Default: 50

page size

offset
integer or null <int32>
Default: 0

return records offset by the given number

Responses

Response samples

Content type
application/json
{
  • "offset": 0,
  • "totalSize": 0,
  • "done": true,
  • "records": [
    ]
}

Update a group booking profile

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

A booking id

Request Body schema: application/json
name
string

Profile name used in calendar links to identify a profile.

durationMinutes
integer

Duration of the meeting in minutes.

availabilityStep
integer

Determines the interval at which new meeting slots are made available throughout the working hours. Allowed values are 5, 10, 15, 20, 30, 60.

startTime
string <date-time>

The beginning of the formation of intervals. Must be in the future, otherwise the current time will be used.

endTime
string <date-time>

The ending of the formation of intervals. If the time specified here is in the past, the intervals will be empty, regardless of the Start time parameter.

timeAvailableFor
string

Time period (in ISO-8601 format) the profile is covering. For example, P3M (3 months), P4W (4 weeks), P5D (5 days).

subject
string

Subject for events booked using this profile.

description
string

Description for events booked using this profile.

location
string

Location for events booked using this profile.

object (WeekWorkSchedule)
object (AvailabilityIntervals)
context
string

Custom client data stored for the profile.

startConference
boolean

Whether to create an online conference (hangoutsMeet, teamsForBusiness, etc.) for the event. Note, not all providers support creating conferences.

openMeetingUrl
string

The value of the {{openMeetingUrl}} variable that can be used in the event description or subject.

clientOrgId
string

Responses

Request samples

Content type
application/json
{
  • "name": "aurDemo - https://calendar.aurinko.io/aurDemo",
  • "durationMinutes": 30,
  • "availabilityStep": 0,
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "timeAvailableFor": "P4W",
  • "subject": "string",
  • "description": "string",
  • "location": "string",
  • "workHours": {
    },
  • "availabilityIntervals": {
    },
  • "context": "string",
  • "startConference": true,
  • "openMeetingUrl": "string",
  • "clientOrgId": "string"
}

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Get a group booking profile by id

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

A booking id

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "aurDemo - https://calendar.aurinko.io/aurDemo",
  • "durationMinutes": 30,
  • "availabilityStep": 0,
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "timeAvailableFor": "P4W",
  • "subject": "string",
  • "description": "string",
  • "location": "string",
  • "workHours": {
    },
  • "availabilityIntervals": {
    },
  • "context": "string",
  • "startConference": true,
  • "openMeetingUrl": "string",
  • "clientOrgId": "string"
}

Delete a group booking profile by id

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

A booking id

Responses

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Assign groups to group booking

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

A booking id

Request Body schema: application/json
Array of objects (BookingAttachGroupDto)

Responses

Request samples

Content type
application/json
{
  • "groups": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "Ok"
}

List groups of a group booking profile

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

A booking id

query Parameters
limit
integer or null <int32>
Default: 50

page size

offset
integer or null <int32>
Default: 0

return records offset by the given number

Responses

Response samples

Content type
application/json
{
  • "offset": 0,
  • "totalSize": 0,
  • "done": true,
  • "records": [
    ]
}

Remove groups from group booking

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

A booking id

Request Body schema: application/json
Array of objects (BookingDetachGroupDto)

Responses

Request samples

Content type
application/json
{
  • "groups": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Assign accounts to group booking

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

A booking id

Request Body schema: application/json
accountIds
Array of integers <int64> [ items <int64 > ]

Responses

Request samples

Content type
application/json
{
  • "accountIds": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "Ok"
}

List accounts of a group booking profile

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

A booking id

query Parameters
limit
integer or null <int32>
Default: 50

page size

offset
integer or null <int32>
Default: 0

return records offset by the given number

Responses

Response samples

Content type
application/json
{
  • "offset": 0,
  • "totalSize": 0,
  • "done": true,
  • "records": [
    ]
}

Remove accounts from group booking

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

A booking id

Request Body schema: application/json
accountIds
Array of integers <int64> [ items <int64 > ]

Responses

Request samples

Content type
application/json
{
  • "accountIds": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Convert an unconfirmed booking reservation to a calendar event

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

An unconfirmed reservation id

Responses

Response samples

Content type
application/json
{
  • "id": "string"
}

Cancel an unconfirmed booking reservation

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

An unconfirmed reservation id

Responses

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Availability

See meeting time availability according to the group booking profile configuration. Book a meeting for an account or one of users in a group.

Create a meeting

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>

A booking id

query Parameters
required
string (BookingRequiredMode)
Enum: "one" "all"

a way to select times

reserveForMinutes
integer or null <int64>

Time in minutes, blocks the interval for a time (creates an unconfirmed reservation), the meeting is not created

Request Body schema: application/json
object (SelectedMeetingTime)
groupXids
Array of strings
accountIds
Array of integers <int64> [ items <int64 > ]
name
string

Username of the person requesting the meeting

email
string

Email of the person requesting the meeting, if not specified, an event will be created without an attendee

object

Data for substitution instead of templates, key - value

Responses

Request samples

Content type
application/json
{
  • "time": {
    },
  • "groupXids": [
    ],
  • "accountIds": [
    ],
  • "name": "string",
  • "email": "string",
  • "substitutionData": {
    }
}

Response samples

Content type
application/json
{
  • "created": true,
  • "id": "string",
  • "ReservationId": 0,
  • "groupXid": "string"
}

Get available meeting times

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>

A booking id

query Parameters
required
string (BookingRequiredMode)
Enum: "one" "all"

a way to select times

fromDate
string or null <date>

date to iterate a big time intervals

intervalLength
string or null

Time period (in ISO-8601 format) to iterate a big time intervals

pageToken
string or null

token to request all pages, if booking has many accounts

limit
integer or null <int32>
offset
integer or null <int32>

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "timeAvailableFor": "P4W",
  • "durationMinutes": 0,
  • "availabilityStep": 0,
  • "subject": "string",
  • "primaryColor": "string",
  • "secondaryColor": "string",
  • "additionalFields": [
    ],
  • "nextPageToken": "string",
  • "nextFromDate": "2019-08-24"
}

Get available bookings for а time range

Authorizations:
AppAuth
Request Body schema: application/json
timeMin
string <date-time>
timeMax
string <date-time>
profileNames
Array of strings
profileIds
Array of integers <int64> [ items <int64 > ]
required
string (BookingRequiredMode)
Enum: "one" "all"

Responses

Request samples

Content type
application/json
{
  • "timeMin": "2019-08-24T14:15:22Z",
  • "timeMax": "2019-08-24T14:15:22Z",
  • "profileNames": [
    ],
  • "profileIds": [
    ],
  • "required": "one"
}

Response samples

Content type
application/json
{
  • "profileIds": [
    ]
}

Create a meeting

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

A booking id

query Parameters
required
string (BookingRequiredMode)
Enum: "one" "all"

a way to select times

reserveForMinutes
integer or null <int64>

Time in minutes, blocks the interval for a time (creates an unconfirmed reservation), the meeting is not created

Request Body schema: application/json
object (SelectedMeetingTime)
groupXids
Array of strings
accountIds
Array of integers <int64> [ items <int64 > ]
name
string

Username of the person requesting the meeting

email
string

Email of the person requesting the meeting, if not specified, an event will be created without an attendee

object

Data for substitution instead of templates, key - value

Responses

Request samples

Content type
application/json
{
  • "time": {
    },
  • "groupXids": [
    ],
  • "accountIds": [
    ],
  • "name": "string",
  • "email": "string",
  • "substitutionData": {
    }
}

Response samples

Content type
application/json
{
  • "created": true,
  • "id": "string",
  • "ReservationId": 0,
  • "groupXid": "string"
}

Get available meeting times

Authorizations:
AppAuth
path Parameters
id
required
integer <int64>

A booking id

query Parameters
required
string (BookingRequiredMode)
Enum: "one" "all"

a way to select times

fromDate
string or null <date>

date to iterate a big time intervals

intervalLength
string or null

Time period (in ISO-8601 format) to iterate a big time intervals

pageToken
string or null

token to request all pages, if booking has many accounts

limit
integer or null <int32>
offset
integer or null <int32>

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "timeAvailableFor": "P4W",
  • "durationMinutes": 0,
  • "availabilityStep": 0,
  • "subject": "string",
  • "primaryColor": "string",
  • "secondaryColor": "string",
  • "additionalFields": [
    ],
  • "nextPageToken": "string",
  • "nextFromDate": "2019-08-24"
}

Create a meeting

path Parameters
aurinkoClientId
required
string

Application client Id

name
required
string

Booking profile name

query Parameters
required
string (BookingRequiredMode)
Enum: "one" "all"

a way to select times

reserveForMinutes
integer or null <int64>

Time in minutes, blocks the interval for a time (creates an unconfirmed reservation), the meeting is not created

Request Body schema: application/json
object (SelectedMeetingTime)
groupXids
Array of strings
accountIds
Array of integers <int64> [ items <int64 > ]
name
string

Username of the person requesting the meeting

email
string

Email of the person requesting the meeting, if not specified, an event will be created without an attendee

object

Data for substitution instead of templates, key - value

Responses

Request samples

Content type
application/json
{
  • "time": {
    },
  • "groupXids": [
    ],
  • "accountIds": [
    ],
  • "name": "string",
  • "email": "string",
  • "substitutionData": {
    }
}

Response samples

Content type
application/json
{
  • "created": true,
  • "id": "string",
  • "ReservationId": 0,
  • "groupXid": "string"
}

Get available meeting times

path Parameters
aurinkoClientId
required
string

Application client Id

name
required
string

Booking profile name

query Parameters
required
string (BookingRequiredMode)
Enum: "one" "all"

a way to select times

fromDate
string or null <date>

date to iterate a big time intervals

intervalLength
string or null

Time period (in ISO-8601 format) to iterate a big time intervals

pageToken
string or null

token to request all pages, if booking has many accounts

limit
integer or null <int32>
offset
integer or null <int32>

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "timeAvailableFor": "P4W",
  • "durationMinutes": 0,
  • "availabilityStep": 0,
  • "subject": "string",
  • "primaryColor": "string",
  • "secondaryColor": "string",
  • "additionalFields": [
    ],
  • "nextPageToken": "string",
  • "nextFromDate": "2019-08-24"
}

Contacts

Contacts are objects within an address book, containing several pieces of information, such as email addresses, phone numbers, postal addresses, work place details.

Update a contact

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
contId
required
string

Contact id

header Parameters
If-Match
required
string

The HTTP entity tag of the resource (ETag). Used for web cache validation.

Request Body schema: application/json
object (ContactName)
nickName
string
fileAs
string
object (ContactCompany)
Array of objects (ContactRelation)
birthday
string
keywords
Array of strings
notes
string
Array of objects (ContactEmailAddress)
Array of objects (ContactPhoneNumber)
Array of objects (ContactPostalAddress)
Array of objects (ContactUrl)
object
object (ContactPhoto)

Responses

Request samples

Content type
application/json
{
  • "name": {
    },
  • "nickName": "string",
  • "fileAs": "string",
  • "company": {
    },
  • "relations": [
    ],
  • "birthday": "string",
  • "keywords": [
    ],
  • "notes": "string",
  • "emailAddresses": [
    ],
  • "phoneNumbers": [
    ],
  • "addresses": [
    ],
  • "urls": [
    ],
  • "nativeProperties": {
    },
  • "photo": {
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "etag": "string",
  • "record": {
    }
}

Get a contact

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
contId
required
string

Contact id

query Parameters
bodyType
string (BodyType)
Enum: "html" "text"

Default text

nativeProperties
Array of strings or null (NativeProperty)
withPhoto
boolean or null
includeUpdateToken
boolean or null

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    https://api.aurinko.io/v1/contacts/{id}

Response samples

Content type
application/json
{
  • "id": "string",
  • "etag": "string",
  • "createdTime": "2019-08-24T14:15:22Z",
  • "lastModifiedTime": "2019-08-24T14:15:22Z",
  • "name": {
    },
  • "nickName": "string",
  • "fileAs": "string",
  • "company": {
    },
  • "relations": [
    ],
  • "birthday": "string",
  • "keywords": [
    ],
  • "notes": "string",
  • "emailAddresses": [
    ],
  • "phoneNumbers": [
    ],
  • "addresses": [
    ],
  • "urls": [
    ],
  • "nativeProperties": {
    },
  • "hasPhoto": true,
  • "photo": {
    }
}

Delete a contact

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
contId
required
string

Contact id

Responses

Request samples

curl -H 'Authorization: Bearer <access token>' \
    -X DELETE https://api.aurinko.io/v1/contacts/{contId}

Create a new contact

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
Request Body schema: application/json
object (ContactName)
nickName
string
fileAs
string
object (ContactCompany)
Array of objects (ContactRelation)
birthday
string
keywords
Array of strings
notes
string
Array of objects (ContactEmailAddress)
Array of objects (ContactPhoneNumber)
Array of objects (ContactPostalAddress)
Array of objects (ContactUrl)
object
object (ContactPhoto)

Responses

Request samples

Content type
application/json
{
  • "name": {
    },
  • "nickName": "string",
  • "fileAs": "string",
  • "company": {
    },
  • "relations": [
    ],
  • "birthday": "string",
  • "keywords": [
    ],
  • "notes": "string",
  • "emailAddresses": [
    ],
  • "phoneNumbers": [
    ],
  • "addresses": [
    ],
  • "urls": [
    ],
  • "nativeProperties": {
    },
  • "photo": {
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "etag": "string",
  • "record": {
    }
}

Contacts sync

Sync/delta methods.

Start a new contacts sync

For Office 365, Outlook.com, and MS Exchange accounts this method works with the default Contacts folder only. For Gmail accounts it processes all user contacts except 'Other contacts'.

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)

Responses

Request samples

curl -X POST -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/contacts/sync

Response samples

Content type
application/json
{
  • "syncUpdatedToken": "string",
  • "syncDeletedToken": "string",
  • "ready": true
}

Request changed contacts (deltas)

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
deltaToken
string or null

A token received as nextDeltaToken from a previous sync request or a start sync request

pageToken
string or null

A token received as nextPageToken from a previous page request

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/contacts/sync/updated \
    -d deltaToken='a8b7c6d5e4f3g2h1'

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "nextDeltaToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Request deleted contacts (deltas)

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
deltaToken
string or null

A token received as nextDeltaToken from a previous sync request or a start sync request

pageToken
string or null

A token received as nextPageToken from a previous page request

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/contacts/sync/deleted \
    -d deltaToken='a8b7c6d5e4f3g2h1'

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "nextDeltaToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Task Lists

TaskLists a container objects for tasks.

Create a task list

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
Request Body schema: application/json
title
string

Responses

Request samples

Content type
application/json
{
  • "title": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "etag": "string",
  • "title": "string",
  • "owner": true,
  • "shared": true,
  • "defaultList": true,
  • "emailsList": true,
  • "lastModifiedTime": "2019-08-24T14:15:22Z"
}

Request list of task lists

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
pageToken
string or null

A token received as nextPageToken from a previous page request (for the first page it must be empty)

Responses

Request samples

curl -H 'Authorization: Bearer <access token>' \
    -X GET https://api.aurinko.io/v1/tasklists

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Update a task list

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
taskListId
required
string

TaskList id

header Parameters
If-Match
required
string

The HTTP entity tag of the resource (ETag). Used for web cache validation.

Request Body schema: application/json
title
string

Responses

Request samples

Content type
application/json
{
  • "title": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "etag": "string",
  • "title": "string",
  • "owner": true,
  • "shared": true,
  • "defaultList": true,
  • "emailsList": true,
  • "lastModifiedTime": "2019-08-24T14:15:22Z"
}

Request a task list by id

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
taskListId
required
string

Task list id

Responses

Request samples

curl -H 'Authorization: Bearer <access token>' \
    -X GET https://api.aurinko.io/v1/tasklists/{taskListId}

Response samples

Content type
application/json
{
  • "id": "string",
  • "etag": "string",
  • "title": "string",
  • "owner": true,
  • "shared": true,
  • "defaultList": true,
  • "emailsList": true,
  • "lastModifiedTime": "2019-08-24T14:15:22Z"
}

Delete a task list by id

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
taskListId
required
string

Task list id

Responses

Request samples

curl -H 'Authorization: Bearer <access token>' \
    -X DELETE https://api.aurinko.io/v1/tasklists/{taskListId}

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Tasks

Tasks a work to be done.

Create a task

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
taskListId
required
string

Task list id

Request Body schema: application/json
title
string
parentId
string
previousId
string
notes
string
status
string (TaskStatus)
Enum: "notStarted" "inProgress" "completed" "waitingOnOthers" "deferred"
importance
string (TaskImportance)
Enum: "low" "normal" "high"
due
string <date-time>
startDateTime
string <date-time>
categories
Array of strings

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "parentId": "string",
  • "previousId": "string",
  • "notes": "string",
  • "status": "notStarted",
  • "importance": "low",
  • "due": "2019-08-24T14:15:22Z",
  • "startDateTime": "2019-08-24T14:15:22Z",
  • "categories": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "etag": "string",
  • "record": {
    }
}

Request list of tasks

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
taskListId
required
string

Task list id

query Parameters
pageToken
string or null

A token received as nextPageToken from a previous page request (for the first page it must be empty)

Responses

Request samples

curl -H 'Authorization: Bearer <access token>' \
    -X GET https://api.aurinko.io/v1/tasklists/{taskListId}/tasks

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Update a task

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
taskListId
required
string

Task list id

id
required
string

Task id

header Parameters
If-Match
string

The HTTP entity tag of the resource (ETag). Used for web cache validation.

Request Body schema: application/json
title
string
parentId
string
previousId
string
notes
string
status
string (TaskStatus)
Enum: "notStarted" "inProgress" "completed" "waitingOnOthers" "deferred"
importance
string (TaskImportance)
Enum: "low" "normal" "high"
due
string <date-time>
startDateTime
string <date-time>
categories
Array of strings

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "parentId": "string",
  • "previousId": "string",
  • "notes": "string",
  • "status": "notStarted",
  • "importance": "low",
  • "due": "2019-08-24T14:15:22Z",
  • "startDateTime": "2019-08-24T14:15:22Z",
  • "categories": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "etag": "string",
  • "record": {
    }
}

Request a task by id

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
taskListId
required
string

Task list id

id
required
string

Task id

Responses

Request samples

curl -H 'Authorization: Bearer <access token>' \
    -X GET https://api.aurinko.io/v1/tasklists/{taskListId}/tasks/{id}

Response samples

Content type
application/json
{
  • "id": "string",
  • "etag": "string",
  • "title": "string",
  • "lastModifiedTime": "2019-08-24T14:15:22Z",
  • "parentId": "string",
  • "position": "string",
  • "notes": "string",
  • "status": "notStarted",
  • "importance": "low",
  • "due": "2019-08-24T14:15:22Z",
  • "completed": "2019-08-24T14:15:22Z",
  • "links": [
    ],
  • "startDateTime": "2019-08-24T14:15:22Z",
  • "categories": [
    ],
  • "owner": "string",
  • "omitted": [
    ]
}

Delete a task by id

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
taskListId
required
string

Task list id

id
required
string

Task id

Responses

Request samples

curl -H 'Authorization: Bearer <access token>' \
    -X DELETE https://api.aurinko.io/v1/tasklists/{taskListId}/tasks/{id}

Response samples

Content type
application/json
{
  • "status": "Ok"
}

Task sync

Sync/delta methods.

Start a new task sync

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
taskListId
required
string

Task list id

query Parameters
skipCompletedBeforeDate
string <date-time>

Skip completed tasks before date.

Responses

Request samples

curl -X POST -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/tasklists/{taskListId}/sync \
    -d skipCompletedBeforeDate='2023-05-29T10:58:27Z'

Response samples

Content type
application/json
{
  • "syncUpdatedToken": "string",
  • "syncDeletedToken": "string",
  • "ready": true
}

Request changed tasks (deltas)

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
taskListId
required
string

Task list id

query Parameters
deltaToken
string or null

A token received as nextDeltaToken from a previous sync request or a start sync request

pageToken
string or null

A token received as nextPageToken from a previous page request

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/tasklists/{taskListId}/sync/updated \
    -d deltaToken='a8b7c6d5e4f3g2h1'

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "nextDeltaToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Request deleted tasks (deltas)

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
taskListId
required
string

Task list id

query Parameters
deltaToken
string or null

A token received as nextDeltaToken from a previous sync request or a start sync request

pageToken
string or null

A token received as nextPageToken from a previous page request

Responses

Request samples

curl -X GET -H 'Authorization: Bearer <access token>' \
    -G https://api.aurinko.io/v1/tasklists/{taskListId}/sync/deleted \
    -d deltaToken='a8b7c6d5e4f3g2h1'

Response samples

Content type
application/json
{
  • "nextPageToken": "string",
  • "nextDeltaToken": "string",
  • "length": 0,
  • "records": [
    ]
}

Webhooks

Webhooks allow your application to receive simple notifications when certain events occur. They essentially tell your application that it can run incremental syncs to obtain the changed records (updated/deleted).

Prerequisites

Gmail notifications require a special configuration, explained in this article. A PubSub PUSH subscription should specify your Aurinko endpoint https://{yourAurinkoDomain}/push/google/email so that Gmail notifications are delivered to Aurinko first. Once the PubSub subscription is configured and the publish rights are granted to gmail-api-push@system.gserviceaccount.com please specify your PubSub topic in the Application settings (Google OAuth) in the Aurinko portal.

Notification URL verification

To ensure that notifications are being delivered to a server under your direct control, we must verify your ownership by issuing you a challenge request. Please make sure your notification endpoint (specified in the notificationUrl property) responds to a validation request. If validation fails, the request to create the subscription returns a 400 Bad Request error.

  1. Aurinko sends a POST request to the notification URL:
Content-Type: text/plain; charset=utf-8
POST https://{notificationUrl}?validationToken={challenge}
  1. The client must provide a response:
  • A 200 (OK) status code.
  • The body must include the validation token provided by the validationToken query parameter

Notifications

Aurinko sends notifications as POST requests with the following json payload:

{
  "subscription" : integer, // subscription Id
  "resource" : string,
  "accountId": integer,
  "error": string,          // if any
  "lifecycleEvent": string, // Enum of `error` or `active`, when subscription state changes
  "payloads" : [...]
}

You notification endpoint should respond with the 200 (OK) status code when a notification is successfully processed.

Notification validation

Aurinko signs its requests using a secret unique to your app. Here's an overview of the process to validate a signed request from Aurinko:

  1. Retrieve the X-Aurinko-Request-Timestamp header on the HTTP request, and the body of the request (Use the raw request body, before it has been deserialized from JSON or other forms.).
  2. Concatenate the version number, the timestamp, and the body of the request to form a basestring. Use a colon as the delimiter between the three elements. The version number right now is always v0.
final byte[] signData = org.apache.commons.lang3.ArrayUtils.addAll(
    ("v0:" + timestampSeconds + ":").getBytes(StandardCharsets.UTF_8),
    payloadBytes
);
  1. With the help of HMAC SHA256 implemented in your favorite programming language, hash the above basestring, using the Aurinko Signing Secret as the key.
  2. Compare this computed signature to the X-Aurinko-Signature header on the request. If it matches - request is valid, if not - request must be discarded.

Create a push event subscription

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
Request Body schema: application/json

Resource, i.e '/email/messages', '/calendars/primary/events', '/calendars/{id}/events'

resource
string
notificationUrl
string
filters
Array of strings (DataConsumerFilter)
Items Value: "withoutDrafts"

Responses

Request samples

Content type
application/json
{
  • "resource": "string",
  • "notificationUrl": "string",
  • "filters": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "resource": "string",
  • "notificationUrl": "string",
  • "active": true,
  • "failSince": "2019-08-24T14:15:22Z",
  • "failDescription": "string",
  • "disabledByBilling": true,
  • "filters": [
    ]
}

Get a list of push event subscriptions

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
query Parameters
limit
integer or null <int32>
Default: 50

page size

offset
integer or null <int32>
Default: 0

return records offset by the given number

includeInactive
boolean or null
Default: false

include inactive subscriptions

Responses

Request samples

curl -H 'Authorization: Bearer <access token>' \
    -X POST https://api.aurinko.io/v1/subscriptions

Response samples

Content type
application/json
{
  • "offset": 0,
  • "totalSize": 0,
  • "done": true,
  • "records": [
    ]
}

Check a subscription status

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>

A subscription identifier

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "resource": "string",
  • "notificationUrl": "string",
  • "active": true,
  • "failSince": "2019-08-24T14:15:22Z",
  • "failDescription": "string",
  • "disabledByBilling": true,
  • "filters": [
    ]
}

Remove a subscription

Authorizations:
AccountToken(AppAuthAccountIdHeader) (UserSessionHeaderAccountIdHeader) (UserSessionCookieClientIdHeaderAccountIdHeader) (AuthTypeHeaderExchangeIdTokenClientIdHeaderAccountIdHeader)
path Parameters
id
required
integer <int64>

A subscription identifier

Responses

Handling errors

Failing requests

API clients must expect and gracefully handle transient errors, such as rate limiting or server errors. We recommend baking 5xx and 429 response handling into your low-level HTTP client so your integration can handle most errors automatically.

If a request fails, the error information is returned with the HTTP status code and error details are usually sent as JSON content. For instance, if a requested record could not be found, the HTTP response might look something like:

HTTP/1.1 404 The record could not be found
Date: Thu, 16 Mar 2020 17:41:40 GMT
Content-Type:	application/json
...

{
  "code": "badRequest",
  "message": "Bad Request",
  "requestId": "3cd38fee-714b-4fe2-8e41-0f358246526a",
  "originalError": {
    "error": {
      "code": "ErrorInvalidIdMalformed",
      "message": "Id is malformed.",
      "innerError": {
        "date": "2020-08-17T22:56:24",
        "request-id": "be4b9a5c-9c29-4cd4-b815-90b5e5bf8f07"
      }
    }
  }
}

Note that, in general, if a request causes a new record to be created (like a new event, or contact, etc.), the response will use the "201 Created" status. Any other successful operation (like a successful query, delete, or update) will use a 200 status code.

Rate limiting (429 Too Many Requests)

If you exceed rate limits imposed by a remote API like Google, Graph, MS Exchange, you will get a 429 Too Many Requests response. Your application should retry with exponential backoff.

5xx server errors

If Aurinko is having trouble, you will get a response with a 5xx status code indicating a server error. 500 (Internal Server Error), 502 (Bad Gateway), 503 (Service Unavailable), and 504 (Gateway Timeout) may be retried with exponential backoff.

404 Not Found

API requests may get 404 due to a deleted item or insufficient permissions, etc. Do not automatically retry these requests.

408 Request timeout

API requests may timeout for some reasons. Do automatically retry these requests.

412 Precondition Failed

PATCH API requests may get 412 due to a mismatching ETag header (If-Match) which indicates the contact has changed since its data was read.