Skip to main content
GET
/
shared-user
/
Get User List
curl --request GET \
  --url https://management.scanova.io/shared-user/ \
  --header 'Authorization: <api-key>'
{
  "count": 22,
  "next": 2,
  "previous": null,
  "results": [
    {
      "id": 0,
      "shared_user": {
        "id": 560,
        "first_name": "Akshay",
        "last_name": "",
        "full_name": "Akshay",
        "email": "akshay.sharma@scanova.io",
        "is_shared": false,
        "date_joined": "2022-07-15T15:36:23.251791+05:30",
        "is_social_signup": false,
        "is_sso_login": false,
        "has_usable_password": true,
        "language": "en",
        "last_login": "2023-09-12T15:32:09.549594+05:30",
        "first_login": false,
        "enforce_mfa": false,
        "mfa_enabled": false,
        "mfa_status": "Disabled"
      },
      "access_level": {
        "id": 0,
        "name": "OWNER"
      },
      "invitation_sent_on": null,
      "invitation_accepted_on": null,
      "is_invitation_sent": false,
      "is_invitation_accepted": false,
      "created": "2022-07-15T15:36:23.251791+05:30",
      "modified": "2022-07-15T15:36:23.251791+05:30",
      "tags": []
    }
  ]
}

Overview

Retrieves a paginated list of all users in your account, including the account owner and all shared users. This endpoint provides comprehensive information about each user’s role, invitation status, and activity.

Purpose

User Management

  • View All Users: See everyone who has access to your account
  • Monitor Invitations: Track invitation status and acceptance
  • Role Overview: See what roles users have been assigned
  • Activity Tracking: Monitor user login activity and engagement

Account Administration

  • User Audit: Review all users and their access levels
  • Invitation Management: Track pending and accepted invitations
  • Access Control: Understand who has access to what
  • User Activity: Monitor user engagement and activity

Query Parameters

ParameterTypeRequiredDescriptionExample
pageintegerNoPage number for pagination (starts from 1)1

Response Structure

The response includes pagination information and an array of user objects:
FieldTypeDescription
countintegerTotal number of users in the account
nextinteger/nullNext page number (null if no more pages)
previousinteger/nullPrevious page number (null if first page)
resultsarrayArray of user objects

User Object Structure

Each user in the results array contains:
FieldTypeDescription
idintegerShared user relationship ID
shared_userobjectUser details (name, email, etc.)
access_levelobjectUser’s role and permissions
invitation_sent_onstring/nullWhen invitation was sent
invitation_accepted_onstring/nullWhen invitation was accepted
is_invitation_sentbooleanWhether invitation has been sent
is_invitation_acceptedbooleanWhether invitation has been accepted
createdstringWhen user was added to account
modifiedstringWhen user was last modified
tagsarrayTags assigned to the user

Examples

Get All Users

curl -X GET "https://management.scanova.io/shared-user/" \
  -H "Authorization: YOUR_API_KEY"

Get Specific Page

curl -X GET "https://management.scanova.io/shared-user/?page=2" \
  -H "Authorization: YOUR_API_KEY"

Response Example

{
  "count": 22,
  "next": 2,
  "previous": null,
  "results": [
    {
      "id": 0,
      "shared_user": {
        "id": 560,
        "first_name": "Akshay",
        "last_name": "",
        "full_name": "Akshay",
        "email": "akshay.sharma@scanova.io",
        "is_shared": false,
        "date_joined": "2022-07-15T15:36:23.251791+05:30",
        "is_social_signup": false,
        "is_sso_login": false,
        "has_usable_password": true,
        "language": "en",
        "last_login": "2023-09-12T15:32:09.549594+05:30",
        "first_login": false,
        "enforce_mfa": false,
        "mfa_enabled": false,
        "mfa_status": "Disabled"
      },
      "access_level": {
        "id": 0,
        "name": "OWNER"
      },
      "invitation_sent_on": null,
      "invitation_accepted_on": null,
      "is_invitation_sent": false,
      "is_invitation_accepted": false,
      "created": "2022-07-15T15:36:23.251791+05:30",
      "modified": "2022-07-15T15:36:23.251791+05:30",
      "tags": []
    },
    {
      "id": 479,
      "shared_user": {
        "id": 1452,
        "first_name": "Jon Doe",
        "last_name": "",
        "full_name": "Jon Doe",
        "email": "jon.doe@scanova.io",
        "is_shared": true,
        "date_joined": "2023-09-11T16:28:22.113793+05:30",
        "is_social_signup": false,
        "is_sso_login": false,
        "has_usable_password": true,
        "language": "en",
        "last_login": null,
        "first_login": false,
        "enforce_mfa": false,
        "mfa_enabled": false,
        "mfa_status": "Disabled"
      },
      "access_level": {
        "id": 1,
        "name": "Manager",
        "permissions": [
          {
            "id": 22,
            "code": "QR_CODE_CAN_ADD",
            "name": "Can Add QR Code",
            "description": "Can add QR Code",
            "is_boolean": true
          }
        ],
        "is_custom": false
      },
      "invitation_sent_on": "2023-09-11T16:28:22.227002+05:30",
      "invitation_accepted_on": null,
      "is_invitation_sent": true,
      "is_invitation_accepted": false,
      "created": "2023-09-11T16:28:22.223671+05:30",
      "modified": "2023-09-11T16:28:22.227109+05:30",
      "tags": []
    }
  ]
}

User Status Indicators

Account Owner

  • is_shared: false: Indicates the account owner
  • access_level.name: "OWNER": Has full account access
  • No invitation fields: Owner doesn’t need invitations

Shared Users

  • is_shared: true: Indicates invited users
  • Invitation Status: Track invitation lifecycle
  • Role-based Access: Limited by assigned role

Invitation Status

  • Pending: is_invitation_sent: true, is_invitation_accepted: false
  • Accepted: is_invitation_sent: true, is_invitation_accepted: true
  • Never Sent: is_invitation_sent: false (shouldn’t happen)

Integration Examples

JavaScript - Display User List

async function getUserList(page = 1) {
  try {
    const response = await fetch(`https://management.scanova.io/shared-user/?page=${page}`, {
      method: 'GET',
      headers: {
        'Authorization': 'YOUR_API_KEY'
      }
    });
    
    if (response.ok) {
      const data = await response.json();
      
      // Display users in a table
      const userTable = document.getElementById('userTable');
      data.results.forEach(user => {
        const row = document.createElement('tr');
        row.innerHTML = `
          <td>${user.shared_user.full_name}</td>
          <td>${user.shared_user.email}</td>
          <td>${user.access_level.name}</td>
          <td>${user.is_invitation_accepted ? 'Active' : 'Pending'}</td>
          <td>${user.shared_user.last_login ? new Date(user.shared_user.last_login).toLocaleDateString() : 'Never'}</td>
        `;
        userTable.appendChild(row);
      });
      
      // Handle pagination
      if (data.next) {
        document.getElementById('nextPage').style.display = 'block';
        document.getElementById('nextPage').onclick = () => getUserList(data.next);
      }
      
      return data;
    } else {
      throw new Error('Failed to fetch users');
    }
  } catch (error) {
    console.error('Error fetching users:', error);
    return null;
  }
}

// Usage
getUserList();

Python - User Management Dashboard

import requests
from datetime import datetime

def get_user_list(page=1):
    url = "https://management.scanova.io/shared-user/"
    headers = {"Authorization": "YOUR_API_KEY"}
    params = {"page": page}
    
    try:
        response = requests.get(url, headers=headers, params=params)
        response.raise_for_status()
        
        data = response.json()
        
        print(f"Total Users: {data['count']}")
        print(f"Page {page} of {(data['count'] // 20) + 1}")
        print("-" * 80)
        
        for user in data['results']:
            user_info = user['shared_user']
            access_level = user['access_level']
            
            print(f"Name: {user_info['full_name']}")
            print(f"Email: {user_info['email']}")
            print(f"Role: {access_level['name']}")
            print(f"Status: {'Active' if user['is_invitation_accepted'] else 'Pending'}")
            print(f"Last Login: {user_info['last_login'] or 'Never'}")
            print("-" * 40)
        
        return data
        
    except requests.exceptions.RequestException as e:
        print(f"Error fetching users: {e}")
        return None

# Usage
user_data = get_user_list()

PHP - User List with Pagination

<?php
function getUserList($page = 1) {
    $url = "https://management.scanova.io/shared-user/";
    $headers = [
        "Authorization: YOUR_API_KEY"
    ];
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url . "?page=" . $page);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($httpCode === 200) {
        $data = json_decode($response, true);
        
        echo "<h3>Users (Page $page of " . ceil($data['count'] / 20) . ")</h3>";
        echo "<table border='1'>";
        echo "<tr><th>Name</th><th>Email</th><th>Role</th><th>Status</th><th>Last Login</th></tr>";
        
        foreach ($data['results'] as $user) {
            $userInfo = $user['shared_user'];
            $accessLevel = $user['access_level'];
            $status = $user['is_invitation_accepted'] ? 'Active' : 'Pending';
            $lastLogin = $userInfo['last_login'] ? date('Y-m-d', strtotime($userInfo['last_login'])) : 'Never';
            
            echo "<tr>";
            echo "<td>{$userInfo['full_name']}</td>";
            echo "<td>{$userInfo['email']}</td>";
            echo "<td>{$accessLevel['name']}</td>";
            echo "<td>$status</td>";
            echo "<td>$lastLogin</td>";
            echo "</tr>";
        }
        
        echo "</table>";
        
        // Pagination
        if ($data['next']) {
            echo "<a href='?page={$data['next']}'>Next Page</a>";
        }
        if ($data['previous']) {
            echo "<a href='?page={$data['previous']}'>Previous Page</a>";
        }
        
        return $data;
    } else {
        echo "Error fetching users";
        return null;
    }
}

// Usage
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$userData = getUserList($page);
?>

Use Cases

User Management Dashboard

  • User Overview: Display all users in your account
  • Status Monitoring: Track invitation and acceptance status
  • Role Management: See who has what access level
  • Activity Tracking: Monitor user login activity

Administrative Tools

  • User Audit: Review all users and their access
  • Invitation Tracking: Monitor pending invitations
  • Access Control: Understand user permissions
  • User Activity: Track user engagement

API Integration

  • User Synchronization: Sync user data with external systems
  • Access Control: Implement role-based access control
  • User Analytics: Analyze user activity and engagement
  • Automated Management: Automate user management tasks
This endpoint provides comprehensive user information including invitation status, roles, and activity. Use this data to manage user access and monitor account activity.
The account owner (is_shared: false) will always appear first in the list and has full access to the account. Shared users have limited access based on their assigned roles.

Authorizations

Authorization
string
header
required

API key authentication. Enter your API key directly in the Authorization header.

Query Parameters

page
integer
default:1

Page number for pagination

Required range: x >= 1

Response

List of users in the account

count
integer

Total number of users

Example:

22

next
integer | null

Next page number

Example:

2

previous
integer | null

Previous page number

Example:

null

results
object[]