Get Started with Visier APIs

Everything you need to know to get started with Visier's suite of public APIs.

Overview

Make your first request with Visier APIs. Visier APIs make requests and return data based on your production environment in Visier unless otherwise specified.

Visier reserves the right to, without notice and at its sole discretion, add new elements to API responses. Authorized users who call Visier's APIs must set their JSON parsers to not fail on unknown properties or risk being unable to interpret such API's result set.

Get a Visier account

To use APIs, you must have a Visier account and authenticate. For more information about authenticating, see API Authentication.

Generate your API key and authentication token

To make an API request, you will need an API key and an authentication token. For more information about how to get an API key and request an authentication token, see API Authentication.

Note: If using Postman to send requests, you can request a security token directly in the tool, see Use Postman to Call Visier APIs.

Choose your tool

To use Visier APIs, you need to choose a tool to make your first request. This can be Postman or whichever method you usually use to make HTTP requests. For more information about using Postman for your first request, see Use Postman to Call Visier APIs.

Put your data files in the right place

To send data files using the API, the data files must be in a location that your API application can access. If using Postman, the data files you want to upload must be in Postman's files folder on your local device. For more information, see "Working directory" in Setting up Postman.

Make your first request

To test that you have everything set up correctly, we'll create a request to retrieve all the users in your Visier solution using the /v1/admin/users endpoint.

Replace {vanity_name} with your tenant name. The API key is expected as a header, while the security token is expected as a cookie.

Tip:  

To find your vanity name:

  • Go to the Global Workspace in Studio, click Settings > Single Sign-On. Then, under Single Sign-On, find your service provider endpoint; for example, https://jupiter.visier.com/VServer/auth. In this example, jupiter is the vanity name.
  • As an administrating tenant, go to the Global Workspace in Studio, click Settings > Partner Single Sign-On. Then under Bypass Users (Optional), find your service provider endpoint; for example, https://jupiter.visier.com/VServer/auth. In this example, jupiter is the vanity name.
Copy
cURL sample request: Retrieve a list of all users
curl -X GET --url 'https://{vanity_name}.api.visier.io/v1/admin/users' \
-H 'apikey:{api_key}' \
-H 'Cookie:VisierASIDToken={security_token}'

If everything was set up correctly and the request was successful, you should see a similar response:

Copy
Sample response
{
    "users": [
        {
            "userId": "02393fdc-3b43-9648-b042-a589a781a9d0",
            "username": "john@jupiter.com",
            "displayName": "Test User 000",
            "accountEnabled": true,
            "employeeId":  "",
            "email": "john@jupiter.com",
            "lastLogin": {
                "timestamp": "1633121685629"
            },  
        },
        {
            "userId": "72a6c22e-76be-a24a-92f7-7cbbed16fd58",
            "username": "richard@jupiter.com",
            "displayName": "Integration Test User 002",
            "accountEnabled": true,
            "employeeId":  "",
            "email": "richard@jupiter.com"
        }
    ]
}

Next steps

Now that you've successfully authenticated and completed your first API request, you can call more Visier APIs!

For detailed reference documentation, see API Reference.

Find available objects to use in an API request

To use a specific object in an API request, you must know the unique identifier of the object. For example:

  • To query the pay levels of your employees, you must know the Pay Level dimension's ID.
  • To commit a project, you must know the project ID.
  • To check an extraction job's status, you must know the dispatching job ID.

Use APIs to retrieve unique identifiers for available objects. For example, retrieve all dimensions to find the ID of Pay Level.

Example: I want to retrieve Customer Support and Dev Operations employees by pay level

Let's say you want to query the Headcount metric filtered by Function employees and grouped by Pay Level. This query involves several objects:

  • Metric: Headcount
  • Analytic object: Employee
  • Dimensions: Function, Pay Level
  • Dimension members: Function: Customer Support, Dev Operations and Pay Level: Pay Level.

To make an API request, you need the unique IDs of the metric, analytic object, and dimensions, and the paths of the dimension members.

Find metrics

First, you need to know the unique ID of Headcount. Headcount is a metric, so you'll retrieve all metrics.

Copy
Find available metrics
curl -X GET --url 'https://{vanity_name}.api.visier.io/v1/data/model/metrics' \
-H 'apikey:{api_key}'
-H 'Cookie:VisierASIDToken={security_token}'

The response returns all the metrics in your tenant. As shown in the sample response, the id for Headcount is employeeCount.

Find analytic objects and dimensions

In this example, the IDs are the same as the display names. That is, the unique IDs are Employee, Function, and Pay_Level. However, sometimes IDs are less obvious. If you don't know the IDs, call these endpoints:

  • Retrieve analytic objects: GET /v1/data/model/analytic-objects. This returns the subjects, events, and overlays in your tenant, such as Employee.
  • Retrieve dimensions:  GET /v1/data/model/analytic-objects/Employee/dimensions. This returns the Employee dimensions in your tenant, such as Function and Pay Level.

The responses are similar to the metrics response above. In the response body, find the id field.

Find dimension members

Next, find the dimension members to filter and group by in the API request. Because there are two dimensions, you have to make two requests.

Copy
Find Function dimension members
curl -X GET --url 'https://{vanity_name}.api.visier.io/v1/data/model/analytic-objects/Employee/dimensions/Function/members' \
-H 'apikey:{api_key}' \
-H 'Cookie:VisierASIDToken={security_token}'

The path to Function dimension members are identified in the path field, as shown in the following response.

Because you want to group by all pay levels, not specific pay levels, you can retrieve the dimension information of Pay Level to retrieve the overall level that contains all pay levels.

Copy
Find Pay Level dimension information
curl -X GET --url 'https://{vanity_name}.api.visier.io/v1/data/model/analytic-objects/Employee/dimensions/Pay_Level' \
-H 'apikey:{api_key}' \
-H 'Cookie:VisierASIDToken={security_token}'

The response returns the levels Level 0 and Job Pay Level. In this example, Job Pay Level is the level to query.

Write the Data Query API request

Finally, put it all together. To craft the Data Query API request, use the IDs, members, and levels to specify the exact conditions of your query.

Copy
Query Headcount filtered by Dev Operations and Customer Support and grouped by Pay Level
curl -X POST --url 'https://{vanity_name}.api.visier.io/v1/data/query/aggregate' \
-H 'apikey:{api_key}' \
-H 'Cookie:VisierASIDToken={security_token}' \
-H 'Content-Type: application/json' \
-d '{   
    "query": {
        "source": {
            "metric": "employeeCount"
        },
        "timeIntervals": {
            "intervalCount": 3,
            "dynamicDateFrom": "SOURCE"
        },
        "filters": [{
            "memberSet": {
                "dimension": {
                    "name": "Function",
                    "qualifyingPath": "Employee"
                },
                "values": {
                    "included": [{
                        "path": ["Dev Operations"]
                    },{
                        "path": ["Customer Support"]
                    }]
                }
            }
        }],
        "axes": [
            {
                "dimensionLevelSelection": {
                    "dimension": {
                        "name": "Pay_Level",
                        "qualifyingPath": "Employee"
                    },
                    "levelIds": [
                        "Pay_Level"
                    ]
                }
            }
        ]
    }
}'

The response returns the Headcount values for each Pay Level.

API references

The following screenshot shows you how to read an endpoint in the Visier API reference.

  1. APIs and endpoints: A navigation bar to find all publicly available Visier APIs.
  2. Endpoint name: An action statement about what the API endpoint does.
  3. Method and URL: The action and URL associated with the API endpoint. Visier APIs use GET, POST, PUT, PATCH, and DELETE methods. The URL shown in the API reference is a shortened version of the full API URL; for example, /v1/data/query/aggregate is short for https://{vanity-name}.api.visier.io/v1/data/query/aggregate. To copy the URL to your clipboard, click the Copy button .
  4. Request samples: An example of the request body fields and the schema for the fields. To copy the sample to your clipboard, click Copy.
  5. Headers, parameters, and request body schema: The headers, parameters, and request body fields that you can set in the API request. Each field has a description and data type. To expand a field that contains additional fields, click the Expand button .
  6. Responses: The potential response to your API call, including all possible success or error response fields.