* Refactor swagger docs * Scaffold refactor * Refactor crud tasks * fixup! Refactor crud tasks * Break down task layout * fixup! Break down task layout * fixup! fixup! Break down task layout * Cleanup comments * fixup! Cleanup comments * Cleanup obsolete code * Remove helpers
234 lines
6.4 KiB
JavaScript
234 lines
6.4 KiB
JavaScript
/**
|
|
* @swagger
|
|
* /api/profile:
|
|
* get:
|
|
* summary: Get user profile
|
|
* tags: [Profile]
|
|
* security:
|
|
* - cookieAuth: []
|
|
* - BearerAuth: []
|
|
* responses:
|
|
* 200:
|
|
* description: User profile details
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* uid:
|
|
* type: string
|
|
* email:
|
|
* type: string
|
|
* name:
|
|
* type: string
|
|
* surname:
|
|
* type: string
|
|
* appearance:
|
|
* type: string
|
|
* enum: [light, dark, system]
|
|
* language:
|
|
* type: string
|
|
* timezone:
|
|
* type: string
|
|
* first_day_of_week:
|
|
* type: integer
|
|
* avatar_image:
|
|
* type: string
|
|
* telegram_bot_token:
|
|
* type: string
|
|
* telegram_chat_id:
|
|
* type: string
|
|
* task_summary_enabled:
|
|
* type: boolean
|
|
* task_summary_frequency:
|
|
* type: string
|
|
* task_intelligence_enabled:
|
|
* type: boolean
|
|
* pomodoro_enabled:
|
|
* type: boolean
|
|
* 401:
|
|
* description: Unauthorized
|
|
* 404:
|
|
* description: Profile not found
|
|
*/
|
|
|
|
/**
|
|
* @swagger
|
|
* /api/profile:
|
|
* patch:
|
|
* summary: Update user profile
|
|
* tags: [Profile]
|
|
* security:
|
|
* - cookieAuth: []
|
|
* - BearerAuth: []
|
|
* requestBody:
|
|
* required: true
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* name:
|
|
* type: string
|
|
* description: User's first name
|
|
* surname:
|
|
* type: string
|
|
* description: User's last name
|
|
* appearance:
|
|
* type: string
|
|
* enum: [light, dark, system]
|
|
* description: Theme preference
|
|
* language:
|
|
* type: string
|
|
* description: Language code (e.g., "en", "es")
|
|
* timezone:
|
|
* type: string
|
|
* description: Timezone (e.g., "America/New_York")
|
|
* first_day_of_week:
|
|
* type: integer
|
|
* description: First day of week (0=Sunday, 1=Monday)
|
|
* avatar_image:
|
|
* type: string
|
|
* description: Avatar image URL
|
|
* telegram_bot_token:
|
|
* type: string
|
|
* description: Telegram bot token
|
|
* telegram_allowed_users:
|
|
* type: string
|
|
* description: Comma-separated list of allowed Telegram users
|
|
* task_intelligence_enabled:
|
|
* type: boolean
|
|
* description: Enable task intelligence features
|
|
* task_summary_enabled:
|
|
* type: boolean
|
|
* description: Enable task summary emails
|
|
* pomodoro_enabled:
|
|
* type: boolean
|
|
* description: Enable Pomodoro timer
|
|
* responses:
|
|
* 200:
|
|
* description: Profile updated successfully
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* uid:
|
|
* type: string
|
|
* email:
|
|
* type: string
|
|
* name:
|
|
* type: string
|
|
* 400:
|
|
* description: Invalid request
|
|
* 401:
|
|
* description: Unauthorized
|
|
* 404:
|
|
* description: Profile not found
|
|
*/
|
|
|
|
/**
|
|
* @swagger
|
|
* /api/profile/api-keys:
|
|
* get:
|
|
* summary: List API keys for the current user
|
|
* tags: [Profile]
|
|
* security:
|
|
* - cookieAuth: []
|
|
* - BearerAuth: []
|
|
* responses:
|
|
* 200:
|
|
* description: List of API keys
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: array
|
|
* items:
|
|
* $ref: '#/components/schemas/ApiKey'
|
|
*/
|
|
|
|
/**
|
|
* @swagger
|
|
* /api/profile/api-keys:
|
|
* post:
|
|
* summary: Create a new API key
|
|
* tags: [Profile]
|
|
* security:
|
|
* - cookieAuth: []
|
|
* - BearerAuth: []
|
|
* requestBody:
|
|
* required: true
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* required:
|
|
* - name
|
|
* properties:
|
|
* name:
|
|
* type: string
|
|
* description: Friendly name for the API key
|
|
* expires_at:
|
|
* type: string
|
|
* format: date-time
|
|
* description: Optional expiration timestamp
|
|
* responses:
|
|
* 201:
|
|
* description: API key created
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* token:
|
|
* type: string
|
|
* description: The plain API key. This value is only returned once.
|
|
* apiKey:
|
|
* $ref: '#/components/schemas/ApiKey'
|
|
* 400:
|
|
* description: Invalid payload
|
|
*/
|
|
|
|
/**
|
|
* @swagger
|
|
* /api/profile/api-keys/{id}/revoke:
|
|
* post:
|
|
* summary: Revoke an API key
|
|
* tags: [Profile]
|
|
* security:
|
|
* - cookieAuth: []
|
|
* - BearerAuth: []
|
|
* parameters:
|
|
* - in: path
|
|
* name: id
|
|
* required: true
|
|
* schema:
|
|
* type: integer
|
|
* responses:
|
|
* 200:
|
|
* description: Revoked key details
|
|
* 404:
|
|
* description: API key not found
|
|
*/
|
|
|
|
/**
|
|
* @swagger
|
|
* /api/profile/api-keys/{id}:
|
|
* delete:
|
|
* summary: Delete an API key
|
|
* tags: [Profile]
|
|
* security:
|
|
* - cookieAuth: []
|
|
* - BearerAuth: []
|
|
* parameters:
|
|
* - in: path
|
|
* name: id
|
|
* required: true
|
|
* schema:
|
|
* type: integer
|
|
* responses:
|
|
* 204:
|
|
* description: API key deleted
|
|
* 404:
|
|
* description: API key not found
|
|
*/
|