Workspace Access
List the organizations, tenants, and sources accessible to the current credential.
curl -X GET "https://api.beacon.hard.al/v1/workspace/access?limit=example_string&offset=example_string" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import json
url = "https://api.beacon.hard.al/v1/workspace/access?limit=example_string&offset=example_string"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://api.beacon.hard.al/v1/workspace/access?limit=example_string&offset=example_string", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://api.beacon.hard.al/v1/workspace/access?limit=example_string&offset=example_string", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api.beacon.hard.al/v1/workspace/access?limit=example_string&offset=example_string')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
response = http.request(request)
puts response.body
{
"success": true,
"data": {
"tenants": [
{
"id": "2f1c7c3e-6c1a-4f1e-9b7a-2d8e4c1a9f10",
"name": "Acme Store",
"reportType": "ecommerce",
"reportingCurrency": "USD",
"organization": {
"id": "5d2a8f41-9c3e-4b7a-8e16-0f4c2b9d7a53",
"name": "Acme"
},
"sources": [
{
"id": "7b0e5a54-1d43-4c8e-8d2f-5a9c3e6b1f27",
"name": "Website",
"domain": "acme.example"
}
]
},
{
"id": "9a6e3b70-2d5f-4c18-b3a9-6e1f8d2c4b05",
"name": "Acme Blog",
"reportType": "default",
"reportingCurrency": null,
"organization": {
"id": "5d2a8f41-9c3e-4b7a-8e16-0f4c2b9d7a53",
"name": "Acme"
},
"sources": [
{
"id": "e3f9c1d2-7a48-4b6e-9d05-1c8a2f7b6e94",
"name": "Blog",
"domain": null
}
]
}
]
},
"meta": {
"total": 2,
"limit": 50,
"offset": 0,
"hasNext": false
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/workspace/access",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "validation-error",
"message": "Validation failed: Expected number to be greater or equal to 1",
"details": {
"field": "",
"message": "Expected number to be greater or equal to 1"
}
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/workspace/access",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "bearer-required",
"message": "bearer-required"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/workspace/access",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "invalid-credential",
"message": "invalid-credential"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/workspace/access",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "credential-revoked",
"message": "credential-revoked"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/workspace/access",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "credential-expired",
"message": "credential-expired"
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/workspace/access",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "insufficient-scope",
"message": "insufficient-scope",
"details": {
"required": "reports:read"
}
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/workspace/access",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
{
"success": false,
"error": {
"code": "rate-limited",
"message": "rate-limited",
"details": {
"retryAfterSeconds": 30
}
},
"timestamp": "2026-11-01T09:30:00.000Z",
"path": "/v1/workspace/access",
"requestId": "req_01JD2V8Q9Z6R4XK7T3M5N8P2WA"
}
/v1/workspace/access
Target server for requests. Edit to use your own host.
OAuth access token (token exchange) or organization API key.
Maximum number of tenants to return, 1 to 100. Defaults to 50.
Number of tenants to skip. Defaults to 0. meta.hasNext tells whether more tenants follow.
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token. OAuth access token (token exchange) or organization API key.
Query Parameters
Maximum number of tenants to return, 1 to 100. Defaults to 50.
Number of tenants to skip. Defaults to 0. meta.hasNext tells whether more tenants follow.
Responses
true