API reference / Operations by tag
org
Operations tagged org.
25 operations. Base URL https://api.metrixed.com/v1; see authentication, errors and pagination.
Operations
| Method | Path | Summary |
|---|---|---|
| GET | /org/admins | Org admins |
| POST | /org/admins | Invite an org admin (owner only) |
| POST | /org/admins/{adminId}/{action} | Org admin: disable | enable | reset-mfa | role (owner only; not yourself; one active owner kept) |
| GET | /org/audit | Organization audit trail (append-only): sign-ins, denials (incl. cross-organization attempts), every console action |
| POST | /org/auth/accept-invite | Public: an invited org admin sets a password (12+ characters); sign-in then forces TOTP enrolment |
| GET | /org/auth/accounts | Organizations the signed-in email administers (active memberships of active organizations); current = this session's |
| GET | /org/auth/config | Public: organization sign-in settings (self_signup flag: owner decision, off) |
| POST | /org/auth/invite-info | Public: the invited email and whether it already signs in to another organization (then the invitation is accepted without a password: the existing password and authenticator carry over) |
| POST | /org/auth/login | Org admin sign-in, step 1 (password): TOTP step or forced enrolment; no session yet |
| POST | /org/auth/logout | Org admin sign-out (revokes the session) |
| POST | /org/auth/mfa | Org admin sign-in, step 2: TOTP code (replays refused) → session cookie dtk_org |
| POST | /org/auth/mfa/enroll | Org admin first sign-in: TOTP secret + otpauth URI + QR |
| POST | /org/auth/mfa/enroll/confirm | Org admin first sign-in: confirm the code → MFA on + session cookie |
| POST | /org/auth/switch | Move this session to another organization the email administers (the session ends, a new one opens there; audited in both) |
| GET | /org/me | Signed-in org admin with permissions and the organization (limits, settings) |
| GET | /org/networks | The organization's networks with usage counts and the org limits |
| POST | /org/networks | Create a child network within limits.networks (owner admin invitation by email). Org owner / admin |
| GET | /org/networks/{id} | A child network: usage, directory (read-only), settings and hosts; 403 for any network outside the organization |
| POST | /org/networks/{id}/close | Close (never purge) a child network: org owner, only when the operator enabled allow_close_networks; typed slug confirmation |
| POST | /org/networks/{id}/impersonate | Open a child network's admin / partner / advertiser portal as one of its people (5-60 min, reason, read-only option); audited in org_audit and the network's audit log |
| GET | /org/networks/{id}/people | A child network's people and pending invitations |
| POST | /org/networks/{id}/people/{userId}/{action} | People action on a child network (same as the operator's); password / MFA resets are refused for identities that also belong to networks outside the organization |
| POST | /org/networks/{id}/people/invite | Invite a staff member into a child network (default admin) |
| GET | /org/reports/rollup | Rollup report across the child networks: one reporting query over the explicit child tenant list; totals per currency, per network and per day |
| GET | /org/usage | Organization usage (networks, seats, clicks this month, partners) against its limits |
GET /org/admins
Org admins
Operation getOrgAdmins. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OrgAdminList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/org/admins' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"roles": [
""
]
}
POST /org/admins
Invite an org admin (owner only)
Operation postOrgAdmins. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): OrgAdminInvite
| Field | Type | Flags | Description |
|---|---|---|---|
email | string (email) | required | |
name | string | ||
role | enum: owner, admin, viewer | ||
reason | string | required |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json OrgAdminInvited |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/org/admins' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"email":"user@example.com","reason":""}'
Example 201 response:
{
"id": "",
"email": "",
"role": "",
"status": ""
}
POST /org/admins/{adminId}/{action}
Org admin: disable | enable | reset-mfa | role (owner only; not yourself; one active owner kept)
Operation postOrgAdminsAdminIdAction. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
adminId | path | string | yes | |
action | path | enum: disable, enable, reset-mfa, role | yes |
Request body (application/json, required): OrgAdminAction
| Field | Type | Flags | Description |
|---|---|---|---|
reason | string | required | |
role | enum: owner, admin, viewer |
curl -X POST 'https://api.metrixed.com/v1/org/admins/<adminId>/<action>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"reason":""}'
Example 200 response:
{
"ok": false
}
GET /org/audit
Organization audit trail (append-only): sign-ins, denials (incl. cross-organization attempts), every console action
Operation getOrgAudit. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OperatorList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/org/audit?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
POST /org/auth/accept-invite
Public: an invited org admin sets a password (12+ characters); sign-in then forces TOTP enrolment
Operation postOrgAuthAcceptInvite. Auth: none (public endpoint).
Request body (application/json, required): InviteAccept
| Field | Type | Flags | Description |
|---|---|---|---|
token | string | required | |
password | string | required | |
name | string |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json InviteAccepted |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/org/auth/accept-invite' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"token":"","password":""}'
Example 200 response:
{
"ok": false,
"next": ""
}
GET /org/auth/accounts
Organizations the signed-in email administers (active memberships of active organizations); current = this session's
Operation getOrgAuthAccounts. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OrgAccounts |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/org/auth/accounts' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"current": "",
"data": [
{}
]
}
GET /org/auth/config
Public: organization sign-in settings (self_signup flag: owner decision, off)
Operation getOrgAuthConfig. Auth: none (public endpoint).
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OrgAuthConfig |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/org/auth/config' \
-H 'Accept: application/json'
Example 200 response:
{
"self_signup": false,
"mfa_required": false
}
POST /org/auth/invite-info
Public: the invited email and whether it already signs in to another organization (then the invitation is accepted without a password: the existing password and authenticator carry over)
Operation postOrgAuthInviteInfo. Auth: none (public endpoint).
Request body (application/json, required): OrgInviteInfoRequest
| Field | Type | Flags | Description |
|---|---|---|---|
token | string | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OrgInviteInfo |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/org/auth/invite-info' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"token":""}'
Example 200 response:
{
"email": "",
"organization": "",
"existing_login": false
}
POST /org/auth/login
Org admin sign-in, step 1 (password): TOTP step or forced enrolment; no session yet
Operation postOrgAuthLogin. Auth: none (public endpoint).
Request body (application/json, required): OperatorLogin
| Field | Type | Flags | Description |
|---|---|---|---|
email | string | required | |
password | string | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OperatorLoginStep |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/org/auth/login' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"email":"","password":""}'
Example 200 response:
{
"mfa_required": false,
"mfa_token": "",
"mfa_enrollment_required": false,
"enroll_token": ""
}
POST /org/auth/logout
Org admin sign-out (revokes the session)
Operation postOrgAuthLogout. Auth: none (public endpoint).
curl -X POST 'https://api.metrixed.com/v1/org/auth/logout' \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
POST /org/auth/mfa
Org admin sign-in, step 2: TOTP code (replays refused) → session cookie dtk_org
Operation postOrgAuthMfa. Auth: none (public endpoint).
Request body (application/json, required): OperatorMFA
| Field | Type | Flags | Description |
|---|---|---|---|
mfa_token | string | required | |
code | string | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OrgSession |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/org/auth/mfa' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"mfa_token":"","code":""}'
Example 200 response:
{
"ok": false,
"org_admin": {}
}
POST /org/auth/mfa/enroll
Org admin first sign-in: TOTP secret + otpauth URI + QR
Operation postOrgAuthMfaEnroll. Auth: none (public endpoint).
Request body (application/json, required): OperatorEnroll
| Field | Type | Flags | Description |
|---|---|---|---|
enroll_token | string | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OperatorEnrollSecret |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/org/auth/mfa/enroll' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"enroll_token":""}'
Example 200 response:
{
"secret": "",
"otpauth_uri": "",
"qr_png_base64": ""
}
POST /org/auth/mfa/enroll/confirm
Org admin first sign-in: confirm the code → MFA on + session cookie
Operation postOrgAuthMfaEnrollConfirm. Auth: none (public endpoint).
Request body (application/json, required): OperatorEnrollConfirm
| Field | Type | Flags | Description |
|---|---|---|---|
enroll_token | string | required | |
code | string | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OrgSession |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/org/auth/mfa/enroll/confirm' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"enroll_token":"","code":""}'
Example 200 response:
{
"ok": false,
"org_admin": {}
}
POST /org/auth/switch
Move this session to another organization the email administers (the session ends, a new one opens there; audited in both)
Operation postOrgAuthSwitch. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): OrgSwitch
| Field | Type | Flags | Description |
|---|---|---|---|
organization_id | string | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OrgSwitched |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/org/auth/switch' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"organization_id":""}'
Example 200 response:
{
"ok": false,
"organization_id": "",
"organization": "",
"role": ""
}
GET /org/me
Signed-in org admin with permissions and the organization (limits, settings)
Operation getOrgMe. Auth: API key (Bearer) or session cookie.
curl 'https://api.metrixed.com/v1/org/me' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"id": "",
"email": "",
"name": "",
"role": "owner"
}
GET /org/networks
The organization's networks with usage counts and the org limits
Operation getOrgNetworks. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OrgNetworkList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/org/networks' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"limits": {},
"settings": {}
}
POST /org/networks
Create a child network within limits.networks (owner admin invitation by email). Org owner / admin
Operation postOrgNetworks. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): NetworkProvision
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | required | |
slug | string | required | |
modes | array of enum: network, program, app_attribution, media_buying, igaming, lead_gen | ||
data_region | enum: us, eu, in, ap | ||
locale | string | ||
owner_email | string (email) | required | |
owner_name | string | ||
sample_data | boolean | ||
organization_id | string | ||
reason | string |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json OrgNetworkCreated |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/org/networks' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"","slug":"","owner_email":"user@example.com"}'
Example 201 response:
{
"network": {},
"owner_invited": ""
}
GET /org/networks/{id}
A child network: usage, directory (read-only), settings and hosts; 403 for any network outside the organization
Operation getOrgNetworksId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json NetworkDirectory |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/org/networks/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"partners": {},
"advertisers": {},
"offers": {},
"settings": {}
}
POST /org/networks/{id}/close
Close (never purge) a child network: org owner, only when the operator enabled allow_close_networks; typed slug confirmation
Operation postOrgNetworksIdClose. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): OperatorClose
| Field | Type | Flags | Description |
|---|---|---|---|
reason | string | required | |
confirm_slug | string | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json OrgNetworkClosed |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/org/networks/<id>/close' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"reason":"","confirm_slug":""}'
Example 200 response:
{
"id": "",
"status": "",
"sessions_revoked": 0
}
POST /org/networks/{id}/impersonate
Open a child network's admin / partner / advertiser portal as one of its people (5-60 min, reason, read-only option); audited in org_audit and the network's audit log
Operation postOrgNetworksIdImpersonate. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): OperatorImpersonate
| Field | Type | Flags | Description |
|---|---|---|---|
reason | string | required | |
minutes | integer | ||
user_id | string | ||
portal | enum: admin, partner, advertiser | ||
party_id | string | ||
read_only | boolean |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json OperatorImpersonation |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/org/networks/<id>/impersonate' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"reason":""}'
Example 201 response:
{
"redirect": "",
"url": "",
"portal": "",
"tenant_slug": ""
}
GET /org/networks/{id}/people
A child network's people and pending invitations
Operation getOrgNetworksIdPeople. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json NetworkPeople |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/org/networks/<id>/people' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"staff": [
{}
],
"partner_users": [
{}
],
"advertiser_users": [
{}
],
"invitations": [
{}
]
}
POST /org/networks/{id}/people/{userId}/{action}
People action on a child network (same as the operator's); password / MFA resets are refused for identities that also belong to networks outside the organization
Operation postOrgNetworksIdPeopleUserIdAction. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | |
userId | path | string | yes | |
action | path | enum: disable, enable, reset-password, reset-mfa, revoke-sessions, revoke-keys, role, transfer-ownership | yes |
Request body (application/json, required): PeopleAction
| Field | Type | Flags | Description |
|---|---|---|---|
principal_type | enum: employee, partner, advertiser | ||
party_id | string | ||
reason | string | required | |
role_key | string |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json PeopleActionResult |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/org/networks/<id>/people/<userId>/<action>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"reason":""}'
Example 200 response:
{
"user_id": "",
"email": "",
"status": "",
"sessions_revoked": 0
}
POST /org/networks/{id}/people/invite
Invite a staff member into a child network (default admin)
Operation postOrgNetworksIdPeopleInvite. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): PeopleInvite
| Field | Type | Flags | Description |
|---|---|---|---|
email | string (email) | required | |
name | string | ||
role_key | string | staff role key, default admin | |
reason | string | required |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json PeopleInvited |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/org/networks/<id>/people/invite' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"email":"user@example.com","reason":""}'
Example 201 response:
{
"invitation_id": "",
"email": "",
"role_key": ""
}
GET /org/reports/rollup
Rollup report across the child networks: one reporting query over the explicit child tenant list; totals per currency, per network and per day
Operation getOrgReportsRollup. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
from | query | string (date) | no | |
to | query | string (date) | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json RollupReport |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/org/reports/rollup' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"totals": {},
"networks": [
{}
],
"days": [
{}
],
"from": ""
}
GET /org/usage
Organization usage (networks, seats, clicks this month, partners) against its limits
Operation getOrgUsage. Auth: API key (Bearer) or session cookie.
curl 'https://api.metrixed.com/v1/org/usage' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"limits": {},
"usage": {}
}