Create and manage OAuth applications

Who can use this feature?

OAuth is an open standard for access delegation, commonly used as a way for users to grant websites or applications access to their information on other websites but without giving them the passwords. 

Totango leverages the OAuth protocol to allow developers to write third-party applications that interact with Totango using secured API calls. You can then register these applications in Totango to ensure secured connectivity.

Understand key concepts

This section explains the key concepts that administrators should take into consideration when designing and maintaining third-party applications for registration with Totango.


Scope is the OAuth equivalent of permissions. Each Totango API declares the scope(s) that are required to invoke it. The application’s developer is responsible for keeping track of the set of scopes that are required by the application, so they can be configured when the application is registered in Totango.

Supported grant types

The OAuth standard defines several grant types for different use cases. Totango supports the following types:

  • Authorization Code: For applications that access Totango on behalf of end users. When a user accesses the application for the first time, they’ll be redirected to the Totango application so they can grant permission to the application to access Totango on their behalf.
  • Client Credentials:  For applications that access Totango directly (sometimes referred to as Machine-To-Machine). You’ll need to select a user that the application will use, since Totango API requires a user identity for most operations.

Mutual TLS

Mutual TLS is an optional feature that is not part of the official OAuth standard, but it provides an additional layer of trust between the interacting applications by requiring applications to use TLS client certificate bound access tokens.

Applications using this feature must send their client certificate to the token endpoint. When enabled, Totango automatically issues Public Key Infrastructure (PKI) of certificate and private key, and allows you to export it so you can include it in your application. Requests without the certificate will be rejected.

If enabling TLS, the certificate has an expiration date of one year, and should be renewed in time. If the certificate expires the application will not be able to access Totango APIs.

Register an OAuth application in Totango

Totango limits the number of applications you can create to two. Contact your Totango representative if you need additional applications.

  1. From the left nav, click Settings > OAuth Applications.
  2. Click the + Create new application button.
  3. On the Register New OAuth Application screen, enter the following details: 
    • Application name: For display purpose within Totango.
    • Mutual TLS: Choose on if the client uses TLS client certificate bound access tokens. Off by default. See additional information above.
    • Access Token Expiration: Default is 24 hours, which is the maximum value. If your security requirements are more strict, you can specify a shorter expiration period.
    • Grant type: Choose from the following:
      • Authorization Code: Specify one or more Authorization Callback URLs of your application, which are used during the authorization flow. (Totango redirects to the specified callback URL.)
      • Client Credentials: Select a user that the application will use. Note that if this user is disabled or deleted, the application will not be able to access Totango.
    • Scopes: Determine the level of access the OAuth token will have to your data in Totango. Select the scopes required by your application. (See below.)
  4. Click Create Application.
    A success message appears with the properties of your OAuth application, including the Client ID and Client Secret, which you should copy into your application’s configuration.
  5. Click Close.

For security considerations Totango stores the Client Secret as a password, to ensure it cannot be leaked. Make sure you store it securely, as it cannot be restored.

View and update application details

From the OAuth Applications list, you can click an application to view its details. In the details page you can:

  • Update the access token expiration
  • For applications with an authorized code grant type:
    • Modify the list of authorization callback URLs
  • For applications that enabled TLC (client certificates):
    • Export the certificate
    • Renew the certificate
  • Delete the application: This will also revoke all access tokens granted to the application, as well as the application certificate (if certificate binding is enabled)

For Developers

The following information is for developers designing and implementing third-party applications using Totango APIs using OAuth


In addition to the client id and client secret provided during registration, you’ll need to configure the Totango OAuth endpoints in your application’s OAuth library:

  • Authorization: /oauth/authorize
    • (Required only for Authorization Code grant type)
  • Token: /oauth/token

Note that the endpoint should be prefixed with a base url according to the region your account belongs to:


Scopes are organized based on entities (e.g., accounts, users) and operations (e.g., read, update) according to the following patterns. This structure allows you to either provide fine-grained access to specific operations, or to use the :all scope to simplify and shorten the scopes list.

  • {entity}:all - Has access for all operations and scopes in the entity
  • {entity}:read - Has access to fetch data
  • {entity}:create - Has access to create data
  • {entity}:update - Has access to update data
  • {entity}:upsert - Has access to create and update data
    • Combines update & create scopes
    • Some entities do not have different APIs for create & update
  • {entity}:delete - Has access to delete data
    • Some entities do not have this API
  • {entity}:definitions:read - Has access to read definitions (e.g., attributes)
  • {entity}:definitions:upsert - Has access to update definitions (e.g., attributes)
  • {admin} - Has access to all scopes
    • Use with caution. This is useful during the development phase, but is usually considered a security anti-pattern in production systems.

Totango APIs

The following table lists the supported APIs and their corresponding scopes. Make sure to add the prefix according to your region, as described in the configuration section.

API Endpoint Required Scopes Documentation 
POST /api/v1/search/accounts account:read Search API
POST /int-hub/api/v1/accounts account:upsert Update Accounts
POST /int-hub/api/v1/accounts/attributes account:definitions:upsert Update Account Attribute Definitions
POST /api/v1/search/users user:read Search API
POST /int-hub/api/v1/accounts/users user:upsert Update Users
POST /int-hub/api/v1/accounts/users/attributes user:definitions:upsert Update User Attribute Definitions
DELETE /api/v2/users/account-user/{account-id}/{user-id} user:delete User Delete API
POST /api/v1/search/accounts/collections collection:read N/A
POST /int-hub/api/v1/collections/{collection-type} collection:upsert Update Collections
POST /int-hub/api/v1/collections/{collection-type}/attributes collection:definitions:upsert Update Collections Attribute Definitions
GET /api/v2/events event:read Events For Account
POST /api/v2/events/search event:read Events Search API
GET /api/v1/users/whoami system_user:read  
GET /api/v2/audit system_user:read Audit Log API
GET /api/v2/scim/services/{service-id}/Users system_user:read SCIM Get Users
GET /api/v2/scim/services/{service-id}/Groups system_user:read SCIM Get Groups/Teams
POST /api/v2/scim/services/{service-id}/Users system_user:create SCIM Create User
GET /api/v2/scim/services/{service-id}/Users/{user-id} system_user:read N/A
PATCH /api/v2/scim/services/{service-id}/Users/{user-id} system_user:update SCIM Update User
PUT /api/v2/scim/services/{service-id}/Users/{user-id} system_user:update SCIM Replace User
GET /api/v2/scim/services/{service-id}/Groups/{team-id} system_user:read N/A
PUT /api/v2/scim/services/{service-id}/Groups/{team-id} system_user:update SCIM Set Users for Group / Team
PATCH /api/v2/scim/services/{service-id}/Groups/{team-id} system_user:update SCIM Add users to Group / Team
POST /api/v3/touchpoints touchpoint:create Create New TP
PUT /api/v3/touchpoints/{note-id} touchpoint:update Update Existing TP
DELETE /api/v3/touchpoints/{note-id} touchpoint:delete Remove Touchpoint
GET /api/v3/touchpoint-types touchpoint:definitions:read Touchpoint Types
GET /api/v3/touchpoint-tags touchpoint:definitions:read Touchpoint Reasons
GET /api/v3/activity-types touchpoint:definitions:read SuccessFlow Types

Was this article helpful?

1 out of 1 found this helpful

Have more questions? Submit a request