User Management Endpoints
The user management endpoints provide comprehensive control over user
accounts, profiles, permissions, and company settings within the
Spartera platform. These endpoints support both individual user
management and company-wide administration.
User Profile Management
Get Current User Profile
Retrieve profile information for the authenticated user.
GET /users/me
Get Current User Profile Response
{
"data": {
"user_id": "user_123",
"email": "[email protected]",
"first_name": "John",
"last_name": "Doe",
"display_name": "John Doe",
"avatar_url": "https://cdn.spartera.com/avatars/user_123.jpg",
"company": {
"company_id": "company_456",
"name": "Analytics Corp",
"role": "admin"
},
"preferences": {
"timezone": "America/New_York",
"date_format": "YYYY-MM-DD",
"currency": "USD",
"notifications": {
"email": true,
"browser": true,
"mobile": false
}
},
"account_status": "active",
"last_login": "2025-01-20T14:30:00Z",
"created_at": "2024-03-15T10:00:00Z",
"updated_at": "2025-01-18T16:45:00Z"
}
}
Update User Profile
Update profile information for the authenticated user.
PATCH /users/me
Update User Profile Request Body
{
"first_name": "Jonathan",
"last_name": "Doe",
"display_name": "Jon Doe",
"preferences": {
"timezone": "America/Los_Angeles",
"notifications": {
"email": true,
"browser": false,
"mobile": true
}
},
"bio": "Senior Data Scientist with 10+ years experience"
}
Update User Profile Response
{
"data": {
"user_id": "user_123",
"first_name": "Jonathan",
"last_name": "Doe",
"display_name": "Jon Doe",
"preferences": {
"timezone": "America/Los_Angeles",
"notifications": {
"email": true,
"browser": false,
"mobile": true
}
},
"updated_at": "2025-01-20T18:00:00Z"
}
}
Upload User Avatar
Upload a new profile picture for the authenticated user.
POST /users/me/avatar
Upload User Avatar Request Body (multipart/form-data)
avatar: [image file]
Upload User Avatar Response
{
"data": {
"avatar_url": "https://cdn.spartera.com/avatars/user_123_v2.jpg",
"updated_at": "2025-01-20T18:15:00Z"
}
}
Company User Management
List Company Users
Get all users associated with a company.
GET /companies/{company_id}/users
List Company Users Parameters
company_id(path, required): Company identifier
List Company Users Query Parameters
role(optional): Filter by user rolestatus(optional): Filter by account status (active, inactive,
pending)search(optional): Search by name or emailsort(optional): Sort order (name, email, created_at, last_login)limit(optional): Results per page (default: 50)offset(optional): Pagination offset (default: 0)
List Company Users Response
{
"data": [
{
"user_id": "user_123",
"email": "[email protected]",
"first_name": "John",
"last_name": "Doe",
"display_name": "John Doe",
"role": "admin",
"status": "active",
"permissions": [
"manage_users",
"manage_analytics",
"view_billing",
"manage_api_keys"
],
"last_login": "2025-01-20T14:30:00Z",
"created_at": "2024-03-15T10:00:00Z",
"invited_by": "user_456"
},
{
"user_id": "user_789",
"email": "[email protected]",
"first_name": "Jane",
"last_name": "Smith",
"display_name": "Jane Smith",
"role": "analyst",
"status": "active",
"permissions": [
"view_analytics",
"execute_analytics"
],
"last_login": "2025-01-19T16:22:00Z",
"created_at": "2024-05-20T14:15:00Z"
}
],
"meta": {
"total": 25,
"active": 23,
"inactive": 1,
"pending": 1
}
}
Invite User to Company
Send an invitation to join the company.
POST /companies/{company_id}/users/invite
Invite User to Company Parameters
company_id(path, required): Company identifier
Invite User to Company Request Body
{
"email": "[email protected]",
"first_name": "New",
"last_name": "User",
"role": "analyst",
"permissions": [
"view_analytics",
"execute_analytics"
],
"welcome_message": "Welcome to our analytics team!",
"send_email": true
}
Invite User to Company Response
{
"data": {
"invitation_id": "invite_123",
"email": "[email protected]",
"role": "analyst",
"status": "sent",
"expires_at": "2025-02-03T18:30:00Z",
"invite_url": "https://app.spartera.com/invite/invite_123",
"sent_at": "2025-01-20T18:30:00Z"
}
}
Get User Details
Retrieve detailed information about a specific user.
GET /companies/{company_id}/users/{user_id}
Get User Details Parameters
company_id(path, required): Company identifieruser_id(path, required): User identifier
Get User Details Parameters Response
{
"data": {
"user_id": "user_789",
"email": "[email protected]",
"first_name": "Jane",
"last_name": "Smith",
"display_name": "Jane Smith",
"avatar_url": "https://cdn.spartera.com/avatars/user_789.jpg",
"role": "analyst",
"status": "active",
"permissions": [
"view_analytics",
"execute_analytics"
],
"activity_summary": {
"last_login": "2025-01-19T16:22:00Z",
"total_logins": 156,
"analytics_executions_last_30d": 45,
"avg_session_duration": "32_minutes"
},
"api_usage": {
"total_requests": 2340,
"requests_last_30d": 340,
"favorite_endpoints": [
"/analytics/assets/asset_123/execute",
"/marketplace/analytics"
]
},
"created_at": "2024-05-20T14:15:00Z",
"invited_by": {
"user_id": "user_123",
"name": "John Doe"
}
}
}
Update User Permissions
Modify user role and permissions within the company.
PATCH /companies/{company_id}/users/{user_id}
Update User Permissions Parameters
company_id(path, required): Company identifieruser_id(path, required): User identifier
Update User Permissions Request Body
{
"role": "senior_analyst",
"permissions": [
"view_analytics",
"execute_analytics",
"manage_analytics",
"view_usage_reports"
],
"status": "active",
"notes": "Promoted to senior analyst role"
}
Update User Permissions Response
{
"data": {
"user_id": "user_789",
"role": "senior_analyst",
"permissions": [
"view_analytics",
"execute_analytics",
"manage_analytics",
"view_usage_reports"
],
"status": "active",
"updated_at": "2025-01-20T19:00:00Z",
"updated_by": "user_123"
}
}
Remove User from Company
Remove a user's access to the company.
DELETE /companies/{company_id}/users/{user_id}
Remove User from Company Parameters
company_id(path, required): Company identifieruser_id(path, required): User identifier
Remove User from Company Query Parameters
transfer_assets(optional): User ID to transfer owned assets torevoke_api_keys(optional): Revoke user's API keys (default: true)
Remove User from Company Response
{
"data": {
"user_id": "user_789",
"status": "removed",
"removed_at": "2025-01-20T19:15:00Z",
"assets_transferred": 3,
"api_keys_revoked": 2
}
}
Invitation Management
List Pending Invitations
Get all pending invitations for a company.
GET /companies/{company_id}/invitations
List Pending Invitations Parameters
company_id(path, required): Company identifier
List Pending Invitations Query Parameters
status(optional): Filter by invitation status (pending, accepted,
expired)role(optional): Filter by invited role
List Pending Invitations Response
{
"data": [
{
"invitation_id": "invite_123",
"email": "[email protected]",
"first_name": "New",
"last_name": "User",
"role": "analyst",
"status": "pending",
"sent_at": "2025-01-20T18:30:00Z",
"expires_at": "2025-02-03T18:30:00Z",
"invited_by": {
"user_id": "user_123",
"name": "John Doe"
},
"reminder_count": 0
}
],
"meta": {
"total": 3,
"pending": 2,
"expired": 1
}
}
Resend Invitation
Send a reminder for a pending invitation.
POST /companies/{company_id}/invitations/{invitation_id}/resend
Resend Invitation Parameters
company_id(path, required): Company identifierinvitation_id(path, required): Invitation identifier
Resend Invitation Request Body
{
"message": "Gentle reminder about joining our analytics team!"
}
Resend Invitation Response
{
"data": {
"invitation_id": "invite_123",
"email": "[email protected]",
"status": "resent",
"sent_at": "2025-01-21T10:00:00Z",
"reminder_count": 1
}
}
Cancel Invitation
Cancel a pending invitation.
DELETE /companies/{company_id}/invitations/{invitation_id}
Cancel Invitation Parameters
company_id(path, required): Company identifierinvitation_id(path, required): Invitation identifier
Cancel Invitation Response
204 No Content
Role and Permission Management
List Available Roles
Get all predefined roles and their permissions.
GET /companies/{company_id}/roles
List Available Roles Parameters
company_id(path, required): Company identifier
List Available Roles Response
{
"data": [
{
"role": "admin",
"display_name": "Administrator",
"description": "Full access to all company resources",
"permissions": [
"manage_users",
"manage_analytics",
"manage_billing",
"manage_api_keys",
"view_audit_logs",
"manage_company_settings"
],
"user_count": 2
},
{
"role": "analyst",
"display_name": "Data Analyst",
"description": "Execute analytics and view results",
"permissions": [
"view_analytics",
"execute_analytics",
"view_own_usage"
],
"user_count": 18
},
{
"role": "viewer",
"display_name": "Viewer",
"description": "Read-only access to analytics and reports",
"permissions": [
"view_analytics",
"view_reports"
],
"user_count": 3
}
]
}
Create Custom Role
Create a custom role with specific permissions.
POST /companies/{company_id}/roles
Create Custom Role Parameters
company_id(path, required): Company identifier
Create Custom Role Request Body
{
"role": "senior_analyst",
"display_name": "Senior Data Analyst",
"description": "Advanced analytics access with limited admin features",
"permissions": [
"view_analytics",
"execute_analytics",
"manage_analytics",
"view_usage_reports",
"mentor_junior_analysts"
]
}
Create Custom Role Response
{
"data": {
"role": "senior_analyst",
"display_name": "Senior Data Analyst",
"description": "Advanced analytics access with limited admin features",
"permissions": [
"view_analytics",
"execute_analytics",
"manage_analytics",
"view_usage_reports",
"mentor_junior_analysts"
],
"created_at": "2025-01-20T19:30:00Z",
"created_by": "user_123"
}
}
Activity and Audit Logs
Get User Activity
Retrieve activity history for a specific user.
GET /companies/{company_id}/users/{user_id}/activity
Get User Activity Parameters
company_id(path, required): Company identifieruser_id(path, required): User identifier
Get User Activity Query Parameters
activity_type(optional): Filter by activity typestart_date(optional): Filter from dateend_date(optional): Filter to datelimit(optional): Results per pageoffset(optional): Pagination offset
Get User Activity Response
{
"data": [
{
"activity_id": "activity_123",
"user_id": "user_789",
"activity_type": "analytics_execution",
"description": "Executed Customer Churn Predictor",
"details": {
"asset_id": "asset_123",
"execution_time_ms": 165,
"records_processed": 1
},
"ip_address": "192.168.1.100",
"user_agent": "Mozilla/5.0...",
"timestamp": "2025-01-20T17:15:00Z"
},
{
"activity_id": "activity_124",
"user_id": "user_789",
"activity_type": "login",
"description": "User logged in",
"details": {
"session_id": "sess_456",
"login_method": "email_password"
},
"ip_address": "192.168.1.100",
"timestamp": "2025-01-20T16:45:00Z"
}
],
"meta": {
"total": 1247,
"date_range": {
"start": "2025-01-01T00:00:00Z",
"end": "2025-01-20T23:59:59Z"
}
}
}
User Notifications
Get User Notifications
Retrieve notifications for the authenticated user.
GET /users/me/notifications
Get User Notifications Query Parameters
status(optional): Filter by read/unread statustype(optional): Filter by notification typelimit(optional): Results per pageoffset(optional): Pagination offset
Get User Notifications Response
{
"data": [
{
"notification_id": "notif_123",
"type": "analytics_complete",
"title": "Analytics Processing Complete",
"message": "Your batch analytics job has completed successfully",
"data": {
"batch_id": "batch_456",
"asset_name": "Customer Churn Predictor"
},
"status": "unread",
"created_at": "2025-01-20T18:45:00Z",
"action_url": "https://app.spartera.com/analytics/batches/batch_456"
}
],
"meta": {
"total": 23,
"unread": 5
}
}
Mark Notifications as Read
Mark one or more notifications as read.
PATCH /users/me/notifications/read
Mark Notifications as Read Request Body
{
"notification_ids": ["notif_123", "notif_124"],
"mark_all": false
}
Mark Notifications as Read Response
{
"data": {
"marked_read": 2,
"timestamp": "2025-01-20T20:00:00Z"
}
}
The user management endpoints provide comprehensive control over user
accounts, permissions, and company administration, enabling secure and
efficient team collaboration within the Spartera platform.
