Grant observer
const url = 'https://example.com/api/v1/organizations/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/observers';const options = { method: 'POST', headers: { cookie: 'ttx_access_token=<ttx_access_token>', 'X-CSRF-Token': '<X-CSRF-Token>', 'Content-Type': 'application/json' }, body: '{"email":"hello@example.com"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/api/v1/organizations/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/observers \ --header 'Content-Type: application/json' \ --header 'X-CSRF-Token: <X-CSRF-Token>' \ --cookie ttx_access_token=<ttx_access_token> \ --data '{ "email": "hello@example.com" }'Grant this organization role to a person.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
Example generated
{ "email": "hello@example.com"}Responses
Section titled “Responses”Successful Response
object
object
Palette shared by both tag pools (Organization and TTX). The 8
original members plus TEAL/LIME/GRAPHITE are curated swatches chosen
to stay clear of every color already carrying a fixed meaning
elsewhere (–color-severity-*, –color-accent/-cta, -danger,
-success) – see frontend/src/index.css for their exact hex. CUSTOM
is the escape hatch: a tag with color=CUSTOM carries its real color
in the sibling custom_hex field instead (validated by
CUSTOM_HEX_PATTERN below) rather than a fixed token, at the cost of
no contrast guarantee – the fixed swatches remain the safe default;
CUSTOM is opt-in.
Where a simulated actor comes from – the actor library’s levels. An exercise’s cast only holds copies; the origin says of what.
Example
{ "tags": []}Validation Error
object
object
object
Example generated
{ "detail": [ { "ctx": {}, "input": "example", "loc": [ "example" ], "msg": "example", "type": "example" } ]}