Skip to content

Organizations & Teams

Zatabase provides a full multi-tenant organization system with hierarchical structures, team management, workspaces, role-based access control, quota enforcement, custom branding, and cross-organization collaboration. All endpoints require authentication and are mounted under /v1 when the organizations feature is enabled.

Organizations are the top-level tenant boundary in Zatabase. Every user, team, workspace, and resource belongs to an organization. Organizations support hierarchical nesting (parent/child), tier-based feature gating, and independent settings.

Terminal window
curl -s -X POST https://your-project.zatabase.io/v1/organizations \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "acme-corp",
"display_name": "Acme Corporation",
"tier": "business",
"description": "Primary organization",
"domain": "acme.com",
"website": "https://acme.com",
"industry": "technology",
"region": "us-east-1",
"timezone": "America/New_York"
}' | jq

Response:

{
"id": 1709300000000,
"ulid": "01HQXYZ...",
"name": "acme-corp",
"display_name": "Acme Corporation",
"slug": "acme-corp",
"tier": "business",
"status": "active",
"domain": "acme.com",
"region": "us-east-1",
"timezone": "America/New_York",
"created_at": "2026-03-04T00:00:00Z",
"updated_at": "2026-03-04T00:00:00Z"
}

The slug is auto-generated from name if not provided. Slugs must be unique across the system.

Terminal window
# List all organizations
curl -s https://your-project.zatabase.io/v1/organizations \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
# List child organizations of a parent
curl -s "https://your-project.zatabase.io/v1/organizations?parent_id=1709300000000" \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000 \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
curl -s -X PUT https://your-project.zatabase.io/v1/organizations/1709300000000 \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "Acme Corp International",
"description": "Updated description",
"size": "large",
"timezone": "UTC"
}' | jq

Only provided fields are updated. Omitted fields remain unchanged.

Terminal window
curl -s -X DELETE https://your-project.zatabase.io/v1/organizations/1709300000000 \
-H "Authorization: Bearer $ZATABASE_TOKEN"

Returns 204 No Content on success. Organizations with child organizations cannot be deleted until all children are removed first.

Each organization has a tier that determines feature availability and resource limits:

TierMax MembersMax TeamsMax ProjectsMax WorkspacesMax ChildrenCustom BrandingSSO/2FA
free51320NoNo
startup25510103NoNo
business10020505010YesYes
enterprise1,00010020020050YesYes
customUnlimitedUnlimitedUnlimitedUnlimitedUnlimitedYesYes

Organizations support parent-child relationships for modeling corporate structures (e.g. parent company with subsidiaries). Child organization creation is subject to the parent’s tier limits.

Terminal window
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000/children \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq

Set parent_org_id when creating the organization:

Terminal window
curl -s -X POST https://your-project.zatabase.io/v1/organizations \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "acme-europe",
"display_name": "Acme Europe",
"tier": "business",
"parent_org_id": 1709300000000
}' | jq

Get usage metrics for an organization:

Terminal window
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000/stats \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq

Response:

{
"org_id": 1709300000000,
"member_count": 42,
"project_count": 12,
"team_count": 8,
"workspace_count": 15,
"child_organization_count": 2,
"storage_used_bytes": 5368709120,
"compute_hours_used": 84.5,
"api_requests_count": 1250000,
"last_activity": "2026-03-04T12:30:00Z",
"created_at": "2025-06-15T00:00:00Z"
}

Organization members have org-level roles that control what management actions they can perform.

RoleManage OrgManage TeamsManage BillingInvite MembersCreate Projects
ownerYesYesYesYesYes
adminYesYesNoYesYes
managerNoYesNoYesYes
memberNoNoNoNoYes
billingNoNoYesNoYes
guestNoNoNoNoNo
Terminal window
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000/members \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
curl -s -X POST https://your-project.zatabase.io/v1/organizations/1709300000000/members \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"user_id": "01HQXYZ...",
"email": "jane@acme.com",
"role": "member"
}' | jq
Terminal window
curl -s -X DELETE https://your-project.zatabase.io/v1/organizations/1709300000000/members/01HQXYZ... \
-H "Authorization: Bearer $ZATABASE_TOKEN"

Returns 204 No Content. The last admin cannot be removed from an organization.

Send an invitation by email. Invitations expire after 72 hours by default.

Terminal window
curl -s -X POST https://your-project.zatabase.io/v1/organizations/1709300000000/invitations \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "new-user@acme.com",
"role": "member",
"message": "Welcome to Acme!"
}' | jq

Response includes an invitation_token for the invitee to accept.

Terminal window
curl -s -X POST https://your-project.zatabase.io/v1/organizations/1709300000000/invitations/INVITATION_TOKEN/accept \
-H "Content-Type: application/json" \
-d '{
"user_id": "01HQXYZ...",
"user_email": "new-user@acme.com"
}' | jq

The email must match the invitation. Expired or already-accepted invitations are rejected.

Organizations have comprehensive settings covering general configuration, security policies, collaboration rules, notifications, integrations, billing, and compliance.

Terminal window
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000/settings \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
curl -s -X PUT https://your-project.zatabase.io/v1/organizations/1709300000000/settings \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"org_id": 1709300000000,
"general": {
"default_timezone": "America/New_York",
"default_language": "en",
"session_timeout_minutes": 480,
"enable_guest_access": true
},
"security": {
"require_2fa": true,
"sso_enabled": true,
"password_policy": {
"min_length": 12,
"require_uppercase": true,
"require_lowercase": true,
"require_numbers": true,
"require_symbols": true
}
}
}' | jq

Settings are validated against the organization’s tier. For example, require_2fa and sso_enabled require Business tier or higher.

Terminal window
curl -s -X PUT https://your-project.zatabase.io/v1/organizations/1709300000000/settings/general \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"default_timezone": "UTC",
"default_language": "en",
"date_format": "YYYY-MM-DD",
"time_format": "24h",
"currency": "USD",
"session_timeout_minutes": 480,
"enable_guest_access": false
}' | jq
Terminal window
curl -s -X PUT https://your-project.zatabase.io/v1/organizations/1709300000000/settings/security \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"require_2fa": true,
"sso_enabled": false,
"allowed_email_domains": ["acme.com", "acme.co.uk"],
"password_policy": {
"min_length": 10,
"require_uppercase": true,
"require_lowercase": true,
"require_numbers": true,
"require_symbols": false,
"max_age_days": 90,
"prevent_reuse_count": 5
},
"session_security": {
"max_concurrent_sessions": 3,
"idle_timeout_minutes": 30,
"ip_whitelist": ["10.0.0.0/8"]
},
"api_security": {
"rate_limit_requests_per_minute": 1000,
"require_api_key_authentication": true,
"webhook_signature_verification": true
}
}' | jq

Certain settings require a minimum organization tier:

SettingMinimum Tier
require_2faBusiness
sso_enabledBusiness
external_sharing_enabledBusiness
audit_logging_enabledBusiness
Custom brandingBusiness

Attempting to enable a setting below its required tier returns a 400 Bad Request with "Setting not allowed for tier".

Quotas enforce resource limits based on the organization’s tier. Each resource has a hard limit (enforced) and an optional soft limit (warning at 80% of hard limit).

Terminal window
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000/quotas \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000/quotas/usage \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq

Response:

{
"org_id": 1709300000000,
"usage": {
"storage_total": 5368709120,
"tables_count": 12,
"collections_count": 8,
"team_members_count": 42,
"teams_count": 8,
"workspaces_count": 15
},
"last_updated": "2026-03-04T12:00:00Z",
"billing_period_start": "2026-03-01T00:00:00Z",
"billing_period_end": "2026-04-01T00:00:00Z"
}

Shows usage status for each resource relative to its limit:

Terminal window
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000/quotas/utilization \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq

Response includes per-resource status (Normal, MediumUsage, HighUsage, or SoftLimitExceeded):

{
"org_id": 1709300000000,
"tier": "business",
"resource_status": {
"storage_total": {
"Normal": { "usage": 5368709120, "limit": 107374182400, "percentage": 5 }
},
"max_tables": {
"Normal": { "usage": 12, "limit": 100, "percentage": 12 }
},
"max_team_members": {
"MediumUsage": { "usage": 78, "limit": 100, "percentage": 78 }
}
},
"generated_at": "2026-03-04T12:00:00Z"
}

Override default tier-based quotas with custom limits:

Terminal window
curl -s -X PUT https://your-project.zatabase.io/v1/organizations/1709300000000/quotas \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"org_id": 1709300000000,
"tier": "business",
"limits": {
"storage_total": 214748364800,
"max_tables": 200,
"max_team_members": 150
},
"billing_cycle": "monthly"
}' | jq
ResourceFreeStartupBusinessEnterpriseCustom
Total Storage1 GB10 GB100 GB1 TBUnlimited
Storage per Table100 MB1 GB10 GB100 GBUnlimited
Compute Hours/Month101005002,000Unlimited
Concurrent Jobs1520100Unlimited
API Requests/Day10K100K1M10MUnlimited
API Requests/Hour1K10K100K1MUnlimited
Concurrent Connections525100500Unlimited
Max Tables525100500Unlimited
Max Collections10502001,000Unlimited
Max Indexes201005002,000Unlimited
Backup Retention7 days30 days90 days365 daysUnlimited
Audit Log Retention30 days90 days365 days7 yearsUnlimited

Organizations on Business tier or higher can customize their branding (logos, colors, themes).

Terminal window
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000/branding \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
curl -s -X PUT https://your-project.zatabase.io/v1/organizations/1709300000000/branding \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"primary_color": "#0066FF",
"secondary_color": "#004499",
"logo_url": "https://cdn.acme.com/logo.png",
"favicon_url": "https://cdn.acme.com/favicon.ico"
}' | jq

Returns 402 Payment Required if the organization’s tier does not support custom branding.

Terminal window
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000/branding/templates \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
curl -s -X POST https://your-project.zatabase.io/v1/organizations/1709300000000/branding/templates/TEMPLATE_ID \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000/branding/assets \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq

Organizations can establish collaboration agreements to share resources across organizational boundaries. This requires Business tier or higher.

Terminal window
curl -s -X POST https://your-project.zatabase.io/v1/organizations/1709300000000/collaborations/requests \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to_org_id": 1709400000000,
"collaboration_type": "data_sharing",
"message": "Would like to share analytics data"
}' | jq
Terminal window
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000/collaborations/requests \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
curl -s -X POST https://your-project.zatabase.io/v1/organizations/1709300000000/collaborations/requests/REQUEST_ID/respond \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"accepted": true,
"message": "Approved for Q2 data sharing"
}' | jq
Terminal window
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000/collaborations \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
curl -s -X POST https://your-project.zatabase.io/v1/organizations/1709300000000/collaborations/AGREEMENT_ID/terminate \
-H "Authorization: Bearer $ZATABASE_TOKEN"

Teams are groups of users within an organization. Teams support hierarchical nesting, multiple types (department, project, working group, etc.), role-based permissions, invitations, and analytics.

Terminal window
curl -s -X POST https://your-project.zatabase.io/v1/teams \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"org_id": 1709300000000,
"created_by": "01HQXYZ...",
"name": "engineering",
"display_name": "Engineering",
"description": "Core engineering team",
"team_type": "department",
"visibility": "organization",
"initial_members": [
{ "user_id": "01HQXYZ...", "role": "owner" }
]
}' | jq
TypeDescriptionAllows NestingExternal Collaboration
generalGeneral purposeYesNo
departmentDepartment-levelYesNo
projectProject-specificNoYes
working_groupCross-functionalNoYes
externalExternal collaborationNoYes
adminAdministrative/supportYesNo
temporaryTime-limited initiativeNoNo
Terminal window
# List all teams in an organization
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000/teams \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
# Or via query parameter
curl -s "https://your-project.zatabase.io/v1/teams?org_id=1709300000000" \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
curl -s https://your-project.zatabase.io/v1/teams/01HQTEAM... \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
curl -s -X PUT https://your-project.zatabase.io/v1/teams/01HQTEAM... \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "Engineering - Platform",
"description": "Platform engineering team",
"visibility": "team"
}' | jq
Terminal window
curl -s -X DELETE https://your-project.zatabase.io/v1/teams/01HQTEAM... \
-H "Authorization: Bearer $ZATABASE_TOKEN"

Teams support parent-child nesting (for types that allow it):

Terminal window
# Get hierarchy for a specific team
curl -s https://your-project.zatabase.io/v1/teams/01HQTEAM.../hierarchy \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
# Get full team hierarchy for an organization
curl -s https://your-project.zatabase.io/v1/organizations/1709300000000/teams/hierarchy \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
# List direct children of a team
curl -s https://your-project.zatabase.io/v1/teams/01HQTEAM.../children \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
curl -s https://your-project.zatabase.io/v1/teams/01HQTEAM.../stats \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
RoleManage TeamManage MembersInviteView ProjectsCreate Projects
ownerYesYesYesYesYes
adminYesYesYesYesYes
leadSettings onlyYesYesYesYes
memberNoNoYesYesYes
collaboratorNoNoNoYesNo
observerNoNoNoYesNo
Terminal window
curl -s https://your-project.zatabase.io/v1/teams/01HQTEAM.../members \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
curl -s -X POST https://your-project.zatabase.io/v1/teams/01HQTEAM.../members \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"user_id": "01HQXYZ...",
"role": "member",
"send_notification": true
}' | jq
Terminal window
curl -s -X PUT https://your-project.zatabase.io/v1/teams/01HQTEAM.../members/01HQXYZ... \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"role": "lead",
"permissions": ["view_members", "view_projects", "create_projects", "manage_projects", "invite_members"]
}' | jq
Terminal window
curl -s -X DELETE https://your-project.zatabase.io/v1/teams/01HQTEAM.../members/01HQXYZ... \
-H "Authorization: Bearer $ZATABASE_TOKEN"

Invite users to a team by user ID or email. Invitations include a token for acceptance and expire after a configurable period (default: 72 hours).

Terminal window
curl -s -X POST https://your-project.zatabase.io/v1/teams/01HQTEAM.../invitations \
-H "Authorization: Bearer $ZATABASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "developer@acme.com",
"role": "member",
"message": "Join the engineering team!",
"expires_in_hours": 168
}' | jq
Terminal window
curl -s -X POST https://your-project.zatabase.io/v1/teams/invitations/INVITATION_TOKEN/accept \
-H "Content-Type: application/json" \
-d '{
"user_id": "01HQXYZ..."
}' | jq
Terminal window
curl -s -X POST https://your-project.zatabase.io/v1/teams/invitations/INVITATION_TOKEN/reject
Terminal window
curl -s -X DELETE https://your-project.zatabase.io/v1/teams/invitations/INVITATION_TOKEN \
-H "Authorization: Bearer $ZATABASE_TOKEN"

Get activity and performance metrics for a team over a specified timeframe:

Terminal window
# Default (monthly)
curl -s https://your-project.zatabase.io/v1/teams/01HQTEAM.../analytics \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
# Specify timeframe: day, week, month, quarter, year
curl -s "https://your-project.zatabase.io/v1/teams/01HQTEAM.../analytics?timeframe=quarter" \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
Terminal window
# Get recent activities (default limit)
curl -s https://your-project.zatabase.io/v1/teams/01HQTEAM.../activities \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq
# With custom limit
curl -s "https://your-project.zatabase.io/v1/teams/01HQTEAM.../activities?limit=50" \
-H "Authorization: Bearer $ZATABASE_TOKEN" | jq

Activity types include: member_joined, member_left, member_role_changed, team_created, team_updated, team_archived, project_created, project_updated, collaboration_started, settings_changed, integration_added, and meeting_scheduled.

Workspaces are collaborative environments within an organization, optionally associated with a team. They provide scoped access to data, real-time collaboration, and configurable features based on workspace type.

TypeFeatures
generalReal-time collaboration, file sharing, comments, version history
projectAll of general, plus task management and integrations
analyticsData visualization, query editor, real-time collaboration, export
developmentCode editor, real-time collaboration, version history, testing
documentationRich text editor, collaboration, templates, version history
researchData visualization, collaboration, export, citations
trainingCollaboration, comments, templates, video conferencing
externalCollaboration, file sharing, comments, guest access
  • organization — Visible to all organization members
  • team — Restricted to team members
  • private — Visible only to specific users
  • public — Public with guest access
RoleViewEditCommentShareManage MembersManage SettingsDeleteExport
ownerYesYesYesYesYesYesYesYes
editorYesYesYesYesNoNoNoYes
contributorYesYesYesNoNoNoNoYes
viewerYesNoYesNoNoNoNoYes
guestYesNoYesNoNoNoNoNo

Workspaces are created and managed through the organization service layer. Workspace quotas are enforced by the organization’s tier limits. See the Permissions page for details on RBAC integration with workspace access control.

Organization and team roles integrate with Zatabase’s permissions system. The zpermissions crate enforces CRUD permissions at every API boundary:

  • Creating members requires CREATE permission on the Permissions resource kind
  • Removing members requires DELETE permission on the Permissions resource kind
  • Creating workspaces requires CREATE permission on the Collections resource kind
  • Reading workspaces requires READ permission on the Collections resource kind
  • Inviting members is subject to both permission checks and tier-based quota enforcement

The permission check uses the acting user’s principal (User, Role, Group, or Label) against the organization’s permission grants. See Authentication for session management and Permissions for the full RBAC model.

MethodPathDescription
POST/v1/organizationsCreate organization
GET/v1/organizationsList organizations
GET/v1/organizations/:org_idGet organization
PUT/v1/organizations/:org_idUpdate organization
DELETE/v1/organizations/:org_idDelete organization
GET/v1/organizations/:org_id/childrenList child organizations
GET/v1/organizations/:org_id/statsGet organization statistics
GET/v1/organizations/:org_id/membersList members
POST/v1/organizations/:org_id/membersAdd member
DELETE/v1/organizations/:org_id/members/:user_idRemove member
POST/v1/organizations/:org_id/invitationsInvite member
POST/v1/organizations/:org_id/invitations/:token/acceptAccept invitation
GET/v1/organizations/:org_id/settingsGet settings
PUT/v1/organizations/:org_id/settingsUpdate all settings
PUT/v1/organizations/:org_id/settings/generalUpdate general settings
PUT/v1/organizations/:org_id/settings/securityUpdate security settings
GET/v1/organizations/:org_id/quotasGet quota configuration
PUT/v1/organizations/:org_id/quotasUpdate quotas
GET/v1/organizations/:org_id/quotas/usageGet current usage
GET/v1/organizations/:org_id/quotas/utilizationGet utilization report
GET/v1/organizations/:org_id/brandingGet branding
PUT/v1/organizations/:org_id/brandingUpdate branding
GET/v1/organizations/:org_id/branding/templatesList branding templates
POST/v1/organizations/:org_id/branding/templates/:template_idApply template
GET/v1/organizations/:org_id/branding/assetsGet generated assets
GET/v1/organizations/:org_id/collaborations/requestsList collaboration requests
POST/v1/organizations/:org_id/collaborations/requestsCreate collaboration request
POST/v1/organizations/:org_id/collaborations/requests/:request_id/respondRespond to request
GET/v1/organizations/:org_id/collaborationsList active collaborations
GET/v1/organizations/:org_id/collaborations/:agreement_idGet collaboration details
POST/v1/organizations/:org_id/collaborations/:agreement_id/terminateTerminate collaboration
MethodPathDescription
POST/v1/teamsCreate team
GET/v1/teamsList teams (use ?org_id= filter)
GET/v1/teams/:team_idGet team
PUT/v1/teams/:team_idUpdate team
DELETE/v1/teams/:team_idDelete team
GET/v1/teams/:team_id/hierarchyGet team hierarchy
GET/v1/teams/:team_id/childrenList child teams
GET/v1/teams/:team_id/statsGet team statistics
GET/v1/teams/:team_id/membersList team members
POST/v1/teams/:team_id/membersAdd team member
PUT/v1/teams/:team_id/members/:user_idUpdate member role
DELETE/v1/teams/:team_id/members/:user_idRemove team member
POST/v1/teams/:team_id/invitationsInvite to team
POST/v1/teams/invitations/:token/acceptAccept invitation
POST/v1/teams/invitations/:token/rejectReject invitation
DELETE/v1/teams/invitations/:tokenCancel invitation
GET/v1/teams/:team_id/analyticsGet team analytics
GET/v1/teams/:team_id/activitiesGet activity log
GET/v1/organizations/:org_id/teamsList organization teams
GET/v1/organizations/:org_id/teams/hierarchyGet org team hierarchy