Download OpenAPI specification:Download
Complete API documentation for Idling.app - a modern social platform
Removes a linked authentication provider account from the user's profile. Users must have at least one authentication method remaining.
providerId required | string The ID of the provider account to unlink |
{- "message": "Account unlinked successfully",
- "provider": "google"
}
Retrieve a user's public profile information by their database ID
id required | string^[0-9]+$ Example: 123 Database ID of the user |
{- "id": "string",
- "username": "string",
- "display_name": "string",
- "avatar_url": "string",
- "bio": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "profile_visibility": "public"
}
Retrieve a comprehensive list of permissions with advanced filtering, search, and pagination capabilities. Includes usage statistics and role associations.
search | string Search term to filter permissions by name, display_name, or description |
category | string Filter permissions by category |
status | string Default: "all" Enum: "all" "active" "disabled" "archived" Filter permissions by status |
risk_level | string Default: "all" Enum: "all" "low" "medium" "high" "critical" Filter permissions by risk level |
sort_by | string Default: "sort_order" Enum: "name" "display_name" "category" "created_at" "updated_at" "usage_count" "sort_order" Field to sort by |
sort_order | string Default: "asc" Enum: "asc" "desc" Sort order direction |
page | integer >= 1 Default: 1 Page number for pagination |
limit | integer [ 1 .. 100 ] Default: 20 Number of permissions per page |
{- "overview": { },
- "permissions": [
- { }
], - "pagination": {
- "page": 0,
- "limit": 0,
- "total": 0,
- "totalPages": 0,
- "hasNext": true,
- "hasPrev": true
}
}
Create a new permission with specified name, display name, category, and other properties
name required | string [ 1 .. 100 ] characters ^[a-z0-9._-]+$ Unique permission name (lowercase, alphanumeric, dots, underscores, hyphens) |
display_name required | string [ 1 .. 200 ] characters Human-readable display name |
description | string Optional description of the permission |
category required | string [ 1 .. 50 ] characters Permission category |
is_inheritable | boolean Default: false Whether this permission can be inherited |
risk_level | string Default: "low" Enum: "low" "medium" "high" "critical" Risk level associated with this permission |
dependencies | Array of strings Default: [] List of permission names this permission depends on |
metadata | object Default: {} Additional metadata for the permission |
reason | string Optional reason for creating this permission |
{- "name": "string",
- "display_name": "string",
- "description": "string",
- "category": "string",
- "is_inheritable": false,
- "risk_level": "low",
- "dependencies": [ ],
- "metadata": { },
- "reason": "string"
}
{- "success": true,
- "permission": { },
- "message": "string"
}
Retrieve a paginated list of users with comprehensive information for admin management
page | integer Default: 1 Page number for pagination |
limit | integer <= 100 Default: 20 Number of users per page |
search | string Search term to filter users by name, email, or provider |
{- "users": [
- {
- "id": 0,
- "name": "string",
- "email": "user@example.com",
- "image": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "profile_public": true,
- "bio": "string",
- "location": "string",
- "last_login": "2019-08-24T14:15:22Z",
- "login_count": 0,
- "is_active": true,
- "admin_notes": "string",
- "provider_name": "string",
- "provider_email": "string",
- "provider_verified": true,
- "provider_last_used": "2019-08-24T14:15:22Z",
- "role_count": 0,
- "role_names": "string",
- "has_admin": true,
- "has_moderator": true,
- "subscription_count": 0,
- "active_subscriptions": 0,
- "subscription_names": "string",
- "has_active_subscription": true,
- "is_timed_out": true,
- "timeout_count": 0,
- "active_timeout_reason": "string",
- "timeout_expires": "2019-08-24T14:15:22Z",
- "active_timeout_id": 0
}
], - "currentPage": 0,
- "totalPages": 0,
- "pagination": {
- "page": 0,
- "limit": 0,
- "total": 0,
- "totalPages": 0,
- "hasNext": true,
- "hasPrev": true
}
}
Retrieve a list of available roles that can be assigned to users. Excludes protected roles that can only be assigned via database.
[- {
- "id": 0,
- "name": "string",
- "display_name": "string",
- "description": "string"
}
]
Fetches OS-specific emojis with optional filtering by category and search terms
category | string Filter by emoji category (e.g., 'smileys', 'animals') |
search | string Search term to filter emojis by name |
page | integer Default: 1 Page number for pagination |
per_page | integer <= 100 Default: 50 Number of emojis per page |
include_custom | boolean Default: false Include custom user-uploaded emojis |
{- "emojis": [
- {
- "id": 0,
- "emoji_id": "string",
- "unicode_codepoint": "string",
- "unicode_char": "string",
- "name": "string",
- "description": "string",
- "category": {
- "id": 0,
- "name": "string",
- "display_name": "string"
}, - "tags": [
- "string"
], - "aliases": [
- "string"
], - "keywords": [
- "string"
], - "is_custom": true,
- "custom_image_url": "string",
- "usage_count": 0,
- "version_min": "string",
- "is_approved": true,
- "is_personal": true
}
], - "categories": [
- {
- "id": 0,
- "name": "string",
- "display_name": "string",
- "description": "string",
- "emoji_count": 0
}
], - "os_info": {
- "os": "string",
- "version": "string",
- "is_supported": true,
- "emoji_support": {
- "supports_unicode": true,
- "supports_custom": true,
- "max_emoji_version": "string",
- "recommended_format": "string"
}
}, - "total_count": 0,
- "page": 0,
- "per_page": 0
}
Upload a custom emoji image for the authenticated user
file required | string <binary> Emoji image file (PNG, JPG, GIF) |
name required | string Name for the custom emoji |
category | string Category for the emoji |
{- "success": true,
- "emoji": {
- "id": 0,
- "emoji_id": "string",
- "unicode_codepoint": "string",
- "unicode_char": "string",
- "name": "string",
- "description": "string",
- "category": {
- "id": 0,
- "name": "string",
- "display_name": "string"
}, - "tags": [
- "string"
], - "aliases": [
- "string"
], - "keywords": [
- "string"
], - "is_custom": true,
- "custom_image_url": "string",
- "usage_count": 0,
- "version_min": "string",
- "is_approved": true,
- "is_personal": true
}
}
Track usage statistics for an emoji
emoji_id required | string ID of the emoji being used |
emoji_type required | string Enum: "windows" "mac" "custom" Type of emoji being tracked |
{- "emoji_id": "string",
- "emoji_type": "windows"
}
{- "success": true
}
Records usage statistics for emojis to track popularity and usage patterns
emoji_id required | string ID of the emoji being used |
emoji_type required | string Enum: "windows" "mac" "custom" Type of emoji being tracked |
{- "emoji_id": "1f600",
- "emoji_type": "windows"
}
{- "success": true,
- "message": "Emoji usage tracked successfully"
}
Upload an image file to the server with validation and security checks
file required | string <binary> Image file to upload (JPG, PNG, GIF, WebP) |
{- "success": true,
- "url": "/uploads/images/1640995200000-a1b2c3d4.jpg",
- "filename": "1640995200000-a1b2c3d4.jpg",
- "size": 204800,
- "type": "image/jpeg"
}
Dismisses a custom alert for the authenticated user and updates analytics
alertId required | number ID of the alert to dismiss |
userId required | number ID of the user dismissing the alert (must match authenticated user) |
{- "alertId": 123,
- "userId": 456
}
{- "success": true
}
Retrieve detailed analytics data including sessions, page views, geographic data, device information, VPN usage, heatmap data, and subscription analytics for the admin dashboard.
dateRange | string Default: "30d" Enum: "7d" "30d" "90d" "1y" Date range for analytics data |
metrics | Array of strings Items Enum: "sessions" "pageviews" "clicks" "users" "geographic" "devices" "vpn" "heatmap" "subscriptions" Specific metrics to include in the response |
granularity | string Default: "daily" Enum: "hourly" "daily" "weekly" "monthly" Time granularity for time-series data |
timezone | string Default: "UTC" Timezone for time-based calculations |
country | string Filter analytics by specific country code |
device_type | string Enum: "desktop" "mobile" "tablet" Filter analytics by device type |
include_vpn | boolean Default: true Include VPN/proxy traffic in analytics |
format | string Default: "json" Enum: "json" "csv" Response format |
{- "overview": {
- "totalSessions": 0,
- "totalPageViews": 0,
- "totalClicks": 0,
- "uniqueUsers": 0,
- "avgSessionDuration": 0,
- "bounceRate": 0,
- "vpnPercentage": 0
}, - "trends": {
- "sessions": [
- {
- "date": "2019-08-24",
- "count": 0
}
], - "pageViews": [
- {
- "date": "2019-08-24",
- "count": 0
}
]
}, - "topPages": [
- {
- "path": "string",
- "views": 0,
- "uniqueViews": 0
}
], - "devices": {
- "desktop": 0,
- "mobile": 0,
- "tablet": 0
}
}