Skip to content

Discover organisations

GET
/identity.json
curl --request GET \
--url 'https://secure.ethicsportal.eu/identity.json?limit=50' \
--header 'Authorization: Bearer <token>'

Return the organisations that an access token can read, with the token’s scopes and expiry date. Use it to find organisation IDs. An assistant connection of a person who has no organisation yet returns an empty list.

limit
integer
default: 50 >= 1 <= 100
cursor
string

Follow the Link response header unchanged. Signed cursor expires after one hour.

If-None-Match
string

The ETag of a response you already hold. If nothing changed, the response is 304 Not Modified with no body. It still counts toward rate limits and, where reads are audited, the audit trail.

Metadata only. Dates describe recorded workflow state, not proof of notification delivery.

Media typeapplication/json
object
type
required

Personal: acts as its user, with that user’s current role, in each of their organisations. organization: belongs to one organisation and ignores roles; its scopes alone apply.

string
Allowed values: personal organization
name
required

The name given to the token when it was created, as shown on the token list.

string
<= 100 characters
last_four
required

The token’s last four characters, as shown on the token list.

string
>= 4 characters <= 4 characters
scopes
required
Array<string>
<= 14 items unique items
Allowed values: reports:read channel:read channel:write webhooks:read webhooks:write audit_log:read members:read members:write documents:read billing:read billing:write organizations:write organizations:create invitations:respond
expires_at
required
string format: date-time
last_used_at
required

When the token was last used before this request, recorded to the minute; null if this is its first use.

string | null format: date-time
organizations
required
Array<object>
<= 100 items
object
id
required
string
name
required
string
reports_url
required
string format: uri
channel_url
required
string format: uri
members_url
required
string format: uri
webhooks_url
required
string format: uri
audit_trail_url
required
string format: uri
documents_url
required
string format: uri
billing_url
required
string format: uri
next_cursor
required

Pass as the cursor parameter for the next page; null on the last page. The Link header carries the same next page.

string | null

Example

{
"type": "personal",
"name": "Case dashboard",
"last_four": "x7Qa",
"scopes": [
"reports:read",
"channel:read"
],
"expires_at": "2027-02-05T10:00:00Z",
"last_used_at": "2026-11-09T16:42:00Z",
"organizations": [
{
"id": "gHiJkl",
"name": "Example organisation",
"reports_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/whistleblower/reports.json",
"channel_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/whistleblower/portal.json",
"members_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/members.json",
"webhooks_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/webhooks.json",
"audit_trail_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/whistleblower/audit_logs.json",
"documents_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/whistleblower/documents.json",
"billing_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/subscriptions.json"
}
],
"next_cursor": null
}
ETag
string

Weak validator of this response body. Send it back as If-None-Match.

Not modified since the ETag sent in If-None-Match. No body.

Invalid query or cursor

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid_token forbidden insufficient_scope not_found invalid_request agreement_required rate_limited idempotency_key_reused idempotency_key_in_progress not_retryable channel_inactive invitation_unavailable already_subscribed no_subscription
feedback_url
required

Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.

string format: uri

Example

{
"error": {
"code": "invalid_request",
"feedback_url": "https://secure.ethicsportal.eu/me/feedback.json"
}
}

Missing, invalid, expired or revoked bearer token

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid_token forbidden insufficient_scope not_found invalid_request agreement_required rate_limited idempotency_key_reused idempotency_key_in_progress not_retryable channel_inactive invitation_unavailable already_subscribed no_subscription
feedback_url
required

Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.

string format: uri

Example

{
"error": {
"code": "invalid_token",
"feedback_url": "https://secure.ethicsportal.eu/me/feedback.json"
}
}
WWW-Authenticate
string

Bearer realm=“EthicsPortal”

Required agreement not accepted or permission denied

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid_token forbidden insufficient_scope not_found invalid_request agreement_required rate_limited idempotency_key_reused idempotency_key_in_progress not_retryable channel_inactive invitation_unavailable already_subscribed no_subscription
feedback_url
required

Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.

string format: uri

Example

{
"error": {
"code": "agreement_required",
"feedback_url": "https://secure.ethicsportal.eu/me/feedback.json"
}
}

Missing or inaccessible organisation or resource, or feature disabled

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid_token forbidden insufficient_scope not_found invalid_request agreement_required rate_limited idempotency_key_reused idempotency_key_in_progress not_retryable channel_inactive invitation_unavailable already_subscribed no_subscription
feedback_url
required

Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.

string format: uri

Example

{
"error": {
"code": "not_found",
"feedback_url": "https://secure.ethicsportal.eu/me/feedback.json"
}
}

Rate limit exceeded

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid_token forbidden insufficient_scope not_found invalid_request agreement_required rate_limited idempotency_key_reused idempotency_key_in_progress not_retryable channel_inactive invitation_unavailable already_subscribed no_subscription
feedback_url
required

Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.

string format: uri

Example

{
"error": {
"code": "rate_limited",
"feedback_url": "https://secure.ethicsportal.eu/me/feedback.json"
}
}
Retry-After
string

60 seconds