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
}
}