{"api_version":"1.0","name":"DOOCS Vendor API","description":"RESTful API for accessing DOOCS3 question metadata and content (FlightPHP)","server_info":{"timestamp":"2026-09-09 04:57:28","php_version":"8.4.24","framework":"FlightPHP v3","authentication_test":{"api_key_present":false,"api_key_value":null,"authorization_header":false,"client_ip":"216.73.217.173","user_agent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}},"authentication":{"system":"API Key Authentication","description":"Secure API key system for application-to-application communication","methods":{"api_key_header":{"description":"X-API-Key header (Recommended for applications)","example":"X-API-Key: your-64-char-application-token","use_case":"Alfresco integration, external applications"},"api_key_query":{"description":"Query parameter (Fallback method)","example":"GET /api/docs?api_key=your-token","note":"Less secure, only for testing"},"bearer_token":{"description":"Bearer token (Alternative format)","example":"Authorization: Bearer your-64-char-token"},"localhost_bypass":{"description":"Development access from localhost (if enabled)","example":"Automatic for 127.0.0.1, ::1"}},"security_features":{"expiry_tracking":"Automatic token expiration","usage_statistics":"Track token usage and last access","rate_limiting":"Per-token rate limits","instant_revocation":"Tokens can be revoked immediately","permissions":"Role-based access (read, write, admin)"}},"endpoints":{"POST /api/question-metadata":"Get metadata for one or more questions (send vendor_ids array in JSON body)","GET /api/test":"Test authentication (returns client info)","GET /api/tokens":"List all API tokens (admin only)","POST /api/tokens":"Create a new API token (admin only)","DELETE /api/tokens/{id|token}":"Revoke an API token by numeric ID or full token string (admin only)","GET /api/tokens/stats":"Token usage statistics (admin only)","GET /api/docs":"This documentation"},"rate_limits":{"default":"1000 requests per hour per API key","note":"Rate limits may vary based on token configuration"}}