Team Members

Base URL: https://api.cornerspot.net

Authentication: requests use a bearer token, for example Authorization: Bearer YOUR_API_KEY.

List team members

GET /c/api/v1/team_members

Returns a paginated, filterable roster of the team's members. Revoked (soft-deleted) members are included for audit visibility. Requires the team_members_read scope.

Query parameters

FIELDTYPEDESCRIPTION
querystringCase-insensitive substring search over member name and email address. (Alias of filter[q].)
filter[q]stringCase-insensitive substring search over member name and email address.
filter[role]stringComma-separated roles to include. One or more of: rep, manager, admin.
filter[status]stringComma-separated lifecycle states to include. One or more of: active, invited, suspended, revoked.
sortstringSort column, - prefix for descending. One of: name, email_address, role, created_at, invitation_sent_at. Defaults to name ascending.
pageinteger1-based page number.
per_pageintegerPage size (1-100, default 25).

Code samples

curl --request GET \
  --url 'https://api.cornerspot.net/c/api/v1/team_members' \
  --header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/team_members', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const data = await response.json();
console.log(data);
// Node.js 18+ (native fetch)
const response = await fetch('https://api.cornerspot.net/c/api/v1/team_members', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

if (!response.ok) {
  throw new Error(`Request failed: ${response.status}`);
}

const data = await response.json();
console.log(data);
import json
import urllib.request

url = "https://api.cornerspot.net/c/api/v1/team_members"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
}

request = urllib.request.Request(url, headers=headers, method="GET")

with urllib.request.urlopen(request) as response:
    data = json.loads(response.read().decode("utf-8"))
    print(data)
require "json"
require "net/http"

uri = URI("https://api.cornerspot.net/c/api/v1/team_members")

request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer YOUR_API_KEY"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
  http.request(request)
end

puts JSON.parse(response.body)
<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.cornerspot.net/c/api/v1/team_members',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer YOUR_API_KEY',
    ],
]);

$response = curl_exec($curl);
curl_close($curl);

$data = json_decode($response, true);
print_r($data);

Responses

STATUSDESCRIPTION
200 OKa page of team members
401 Unauthorizedmissing or invalid API key
403 Forbiddenthe key lacks the team_members_read scope

Get a team member

GET /c/api/v1/team_members/{id}

Returns a single team membership. Requires the team_members_read scope.

Path parameters

FIELDTYPEDESCRIPTION
idstring · requiredTeam membership id.

Code samples

curl --request GET \
  --url 'https://api.cornerspot.net/c/api/v1/team_members/abc123' \
  --header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/team_members/abc123', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const data = await response.json();
console.log(data);
// Node.js 18+ (native fetch)
const response = await fetch('https://api.cornerspot.net/c/api/v1/team_members/abc123', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

if (!response.ok) {
  throw new Error(`Request failed: ${response.status}`);
}

const data = await response.json();
console.log(data);
import json
import urllib.request

url = "https://api.cornerspot.net/c/api/v1/team_members/abc123"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
}

request = urllib.request.Request(url, headers=headers, method="GET")

with urllib.request.urlopen(request) as response:
    data = json.loads(response.read().decode("utf-8"))
    print(data)
require "json"
require "net/http"

uri = URI("https://api.cornerspot.net/c/api/v1/team_members/abc123")

request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer YOUR_API_KEY"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
  http.request(request)
end

puts JSON.parse(response.body)
<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.cornerspot.net/c/api/v1/team_members/abc123',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer YOUR_API_KEY',
    ],
]);

$response = curl_exec($curl);
curl_close($curl);

$data = json_decode($response, true);
print_r($data);

Responses

STATUSDESCRIPTION
200 OKthe team member
401 Unauthorizedmissing or invalid API key
403 Forbiddenthe key lacks the team_members_read scope
404 Not Foundno such team member in this team

Suspend a team member

POST /c/api/v1/team_members/{id}/suspend

Suspends a member's access: revokes their sessions/tokens and marks the membership inactive. The team owner cannot be suspended, and a team must always retain at least one active admin. The action is attributed to the API key's owner, who must be an active member of the team. Requires the team_members_write scope.

Path parameters

FIELDTYPEDESCRIPTION
idstring · requiredTeam membership id.

Code samples

curl --request POST \
  --url 'https://api.cornerspot.net/c/api/v1/team_members/abc123/suspend' \
  --header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/team_members/abc123/suspend', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const data = await response.json();
console.log(data);
// Node.js 18+ (native fetch)
const response = await fetch('https://api.cornerspot.net/c/api/v1/team_members/abc123/suspend', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

if (!response.ok) {
  throw new Error(`Request failed: ${response.status}`);
}

const data = await response.json();
console.log(data);
import json
import urllib.request

url = "https://api.cornerspot.net/c/api/v1/team_members/abc123/suspend"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
}

request = urllib.request.Request(url, headers=headers, method="POST")

with urllib.request.urlopen(request) as response:
    data = json.loads(response.read().decode("utf-8"))
    print(data)
require "json"
require "net/http"

uri = URI("https://api.cornerspot.net/c/api/v1/team_members/abc123/suspend")

request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer YOUR_API_KEY"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
  http.request(request)
end

puts JSON.parse(response.body)
<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.cornerspot.net/c/api/v1/team_members/abc123/suspend',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer YOUR_API_KEY',
    ],
]);

$response = curl_exec($curl);
curl_close($curl);

$data = json_decode($response, true);
print_r($data);

Responses

STATUSDESCRIPTION
200 OKthe suspended team member
401 Unauthorizedmissing or invalid API key
403 Forbiddenthe key lacks the team_members_write scope
404 Not Foundno such team member in this team
422 Unprocessable Contentthe suspension is not allowed (e.g. already_suspended, revoked, owner_protected, last_admin_required, or the actor is not a team member: actor_not_member)

Revoke a team member

POST /c/api/v1/team_members/{id}/revoke

Revokes a member's access entirely: removes them from the team (soft-delete, audit trail preserved) and revokes their sessions/tokens. The team owner cannot be revoked, and a team must always retain at least one active admin. Attributed to the API key's owner, who must be an active member of the team. Requires the team_members_write scope.

Path parameters

FIELDTYPEDESCRIPTION
idstring · requiredTeam membership id.

Code samples

curl --request POST \
  --url 'https://api.cornerspot.net/c/api/v1/team_members/abc123/revoke' \
  --header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/team_members/abc123/revoke', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const data = await response.json();
console.log(data);
// Node.js 18+ (native fetch)
const response = await fetch('https://api.cornerspot.net/c/api/v1/team_members/abc123/revoke', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

if (!response.ok) {
  throw new Error(`Request failed: ${response.status}`);
}

const data = await response.json();
console.log(data);
import json
import urllib.request

url = "https://api.cornerspot.net/c/api/v1/team_members/abc123/revoke"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
}

request = urllib.request.Request(url, headers=headers, method="POST")

with urllib.request.urlopen(request) as response:
    data = json.loads(response.read().decode("utf-8"))
    print(data)
require "json"
require "net/http"

uri = URI("https://api.cornerspot.net/c/api/v1/team_members/abc123/revoke")

request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer YOUR_API_KEY"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
  http.request(request)
end

puts JSON.parse(response.body)
<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.cornerspot.net/c/api/v1/team_members/abc123/revoke',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer YOUR_API_KEY',
    ],
]);

$response = curl_exec($curl);
curl_close($curl);

$data = json_decode($response, true);
print_r($data);

Responses

STATUSDESCRIPTION
200 OKthe revoked team member
401 Unauthorizedmissing or invalid API key
403 Forbiddenthe key lacks the team_members_write scope
404 Not Foundno such team member in this team
422 Unprocessable Contentthe revocation is not allowed (e.g. already_revoked, owner_protected, last_admin_required, or the actor is not a team member: actor_not_member)

Was this article helpful?