basePath: /api/v1 definitions: internal_core_track.BatchDeleteRequest: properties: track_ids: items: type: string type: array required: - track_ids type: object internal_core_track.CompleteChunkedUploadRequest: properties: upload_id: type: string required: - upload_id type: object internal_core_track.InitiateChunkedUploadRequest: properties: filename: type: string total_chunks: minimum: 1 type: integer total_size: minimum: 1 type: integer required: - filename - total_chunks - total_size type: object internal_core_track.UpdateTrackRequest: properties: album: type: string artist: type: string genre: type: string is_public: type: boolean title: type: string year: type: integer type: object internal_handlers.APIResponse: properties: data: {} error: {} success: type: boolean type: object internal_handlers.CreateOrderRequest: properties: items: items: properties: product_id: type: string required: - product_id type: object minItems: 1 type: array required: - items type: object internal_handlers.CreatePlaylistRequest: properties: description: type: string is_public: type: boolean title: maxLength: 200 minLength: 1 type: string required: - title type: object internal_handlers.CreateProductRequest: properties: description: maxLength: 2000 type: string license_type: enum: - standard - exclusive - commercial type: string price: minimum: 0 type: number product_type: enum: - track - pack - service type: string title: maxLength: 200 minLength: 3 type: string track_id: description: UUID string type: string required: - price - product_type - title type: object internal_handlers.ReorderTracksRequest: properties: track_ids: description: Changed to []uuid.UUID items: type: string minItems: 1 type: array required: - track_ids type: object internal_handlers.UpdatePlaylistRequest: properties: description: type: string is_public: type: boolean title: maxLength: 200 minLength: 1 type: string type: object internal_handlers.UpdateProfileRequest: properties: bio: maxLength: 500 type: string birthdate: type: string first_name: maxLength: 100 type: string gender: enum: - Male - Female - Other - Prefer not to say type: string last_name: maxLength: 100 type: string location: maxLength: 100 type: string username: maxLength: 30 minLength: 3 type: string type: object veza-backend-api_internal_core_marketplace.LicenseType: enum: - basic - premium - exclusive type: string x-enum-varnames: - LicenseBasic - LicensePremium - LicenseExclusive veza-backend-api_internal_core_marketplace.Order: properties: buyer_id: type: string created_at: type: string currency: type: string id: type: string items: items: $ref: '#/definitions/veza-backend-api_internal_core_marketplace.OrderItem' type: array payment_intent: description: Stripe PaymentIntent ID type: string status: description: pending, paid, failed, refunded type: string total_amount: type: number updated_at: type: string type: object veza-backend-api_internal_core_marketplace.OrderItem: properties: id: type: string order_id: type: string price: type: number product_id: type: string type: object veza-backend-api_internal_core_marketplace.Product: properties: created_at: type: string currency: type: string description: type: string id: type: string license_type: $ref: '#/definitions/veza-backend-api_internal_core_marketplace.LicenseType' price: type: number product_type: description: '"track", "pack", "service"' type: string seller_id: type: string status: $ref: '#/definitions/veza-backend-api_internal_core_marketplace.ProductStatus' title: type: string track_id: description: Liaison optionnelle avec un Track (si ProductType == "track") type: string updated_at: type: string type: object veza-backend-api_internal_core_marketplace.ProductStatus: enum: - draft - active - archived type: string x-enum-varnames: - ProductStatusDraft - ProductStatusActive - ProductStatusArchived veza-backend-api_internal_dto.LoginRequest: properties: email: type: string password: type: string remember_me: type: boolean required: - email - password type: object veza-backend-api_internal_dto.LoginResponse: properties: token: $ref: '#/definitions/veza-backend-api_internal_dto.TokenResponse' user: $ref: '#/definitions/veza-backend-api_internal_dto.UserResponse' type: object veza-backend-api_internal_dto.RefreshRequest: properties: refresh_token: type: string required: - refresh_token type: object veza-backend-api_internal_dto.RegisterRequest: properties: email: type: string password: minLength: 12 type: string password_confirm: type: string username: maxLength: 50 minLength: 3 type: string required: - email - password - password_confirm type: object veza-backend-api_internal_dto.RegisterResponse: properties: token: $ref: '#/definitions/veza-backend-api_internal_dto.TokenResponse' user: $ref: '#/definitions/veza-backend-api_internal_dto.UserResponse' type: object veza-backend-api_internal_dto.ResendVerificationRequest: properties: email: type: string required: - email type: object veza-backend-api_internal_dto.TokenResponse: properties: access_token: type: string expires_in: type: integer refresh_token: type: string type: object veza-backend-api_internal_dto.UserResponse: properties: email: type: string id: type: string username: type: string type: object veza-backend-api_internal_models.Playlist: properties: collaborators: items: $ref: '#/definitions/veza-backend-api_internal_models.PlaylistCollaborator' type: array cover_url: type: string created_at: type: string description: type: string follower_count: type: integer id: type: string is_public: type: boolean title: type: string track_count: type: integer tracks: items: $ref: '#/definitions/veza-backend-api_internal_models.PlaylistTrack' type: array updated_at: type: string user_id: type: string type: object veza-backend-api_internal_models.PlaylistCollaborator: properties: created_at: type: string id: type: string permission: $ref: '#/definitions/veza-backend-api_internal_models.PlaylistPermission' playlist_id: type: string updated_at: type: string user: $ref: '#/definitions/veza-backend-api_internal_models.User' user_id: type: string type: object veza-backend-api_internal_models.PlaylistPermission: enum: - read - write - admin type: string x-enum-varnames: - PlaylistPermissionRead - PlaylistPermissionWrite - PlaylistPermissionAdmin veza-backend-api_internal_models.PlaylistTrack: properties: added_at: type: string id: type: string playlist_id: type: string position: type: integer track: $ref: '#/definitions/veza-backend-api_internal_models.Track' track_id: type: string type: object veza-backend-api_internal_models.Track: properties: album: type: string artist: type: string bitrate: description: kbps type: integer cover_art_path: type: string created_at: type: string duration: description: seconds type: integer file_path: type: string file_size: description: bytes type: integer format: description: mp3, flac, wav, etc. type: string genre: type: string id: type: string is_public: type: boolean like_count: type: integer play_count: type: integer sample_rate: description: Hz type: integer status: $ref: '#/definitions/veza-backend-api_internal_models.TrackStatus' status_message: type: string stream_manifest_url: type: string stream_status: description: pending, processing, ready, error type: string title: type: string updated_at: type: string user_id: type: string waveform_path: type: string year: type: integer type: object veza-backend-api_internal_models.TrackStatus: enum: - uploading - processing - completed - failed type: string x-enum-varnames: - TrackStatusUploading - TrackStatusProcessing - TrackStatusCompleted - TrackStatusFailed veza-backend-api_internal_models.User: properties: avatar: type: string bio: type: string birthdate: type: string created_at: type: string email: type: string first_name: type: string gender: type: string id: type: string is_active: type: boolean is_admin: type: boolean is_public: type: boolean is_verified: type: boolean last_login_at: type: string last_name: type: string location: type: string password: description: Virtual field for input type: string role: type: string slug: type: string token_version: type: integer updated_at: type: string username: type: string username_changed_at: type: string type: object veza-backend-api_internal_response.APIResponse: properties: data: {} error: {} success: type: boolean type: object host: localhost:8080 info: contact: email: support@veza.app name: API Support url: http://www.veza.app/support description: Backend API for Veza platform. license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html termsOfService: http://swagger.io/terms/ title: Veza Backend API version: 1.2.0 paths: /api/v1/marketplace/download/{product_id}: get: consumes: - application/json description: Get a secure download URL for a purchased product parameters: - description: Product ID in: path name: product_id required: true type: string produces: - application/json responses: "200": description: OK schema: additionalProperties: type: string type: object "403": description: No license schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "404": description: Not Found schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' security: - BearerAuth: [] summary: Get download URL tags: - Marketplace /api/v1/marketplace/orders: post: consumes: - application/json description: Purchase products parameters: - description: Order items in: body name: order required: true schema: $ref: '#/definitions/internal_handlers.CreateOrderRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/veza-backend-api_internal_core_marketplace.Order' "400": description: Validation Error schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "401": description: Unauthorized schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' security: - BearerAuth: [] summary: Create a new order tags: - Marketplace /api/v1/marketplace/products: get: consumes: - application/json description: List marketplace products with filters parameters: - description: Product status in: query name: status type: string - description: Seller ID in: query name: seller_id type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/veza-backend-api_internal_core_marketplace.Product' type: array summary: List products tags: - Marketplace post: consumes: - application/json description: Create a product (Track, Pack, Service) for sale parameters: - description: Product info in: body name: product required: true schema: $ref: '#/definitions/internal_handlers.CreateProductRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/veza-backend-api_internal_core_marketplace.Product' "400": description: Validation Error schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "401": description: Unauthorized schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' security: - BearerAuth: [] summary: Create a new product tags: - Marketplace /auth/check-username: get: consumes: - application/json description: Check if a username is already taken parameters: - description: Username to check in: query name: username required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: properties: available: type: boolean username: type: string type: object type: object "400": description: Missing Username schema: $ref: '#/definitions/internal_handlers.APIResponse' summary: Check Username Availability tags: - Auth /auth/login: post: consumes: - application/json description: Authenticate user and return access/refresh tokens parameters: - description: Login Credentials in: body name: request required: true schema: $ref: '#/definitions/veza-backend-api_internal_dto.LoginRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/veza-backend-api_internal_dto.LoginResponse' "400": description: Validation or Bad Request schema: $ref: '#/definitions/internal_handlers.APIResponse' "401": description: Invalid credentials schema: $ref: '#/definitions/internal_handlers.APIResponse' "500": description: Internal Error schema: $ref: '#/definitions/internal_handlers.APIResponse' summary: User Login tags: - Auth /auth/logout: post: consumes: - application/json description: Revoke refresh token and current session parameters: - description: Refresh Token to revoke in: body name: request required: true schema: properties: refresh_token: type: string type: object produces: - application/json responses: "200": description: Success message schema: $ref: '#/definitions/internal_handlers.APIResponse' "400": description: Validation Error schema: $ref: '#/definitions/internal_handlers.APIResponse' "401": description: Unauthorized schema: $ref: '#/definitions/internal_handlers.APIResponse' security: - BearerAuth: [] summary: Logout tags: - Auth /auth/me: get: consumes: - application/json description: Get profile information of the currently logged-in user produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: properties: email: type: string id: type: string role: type: string type: object type: object "401": description: Unauthorized schema: $ref: '#/definitions/internal_handlers.APIResponse' security: - BearerAuth: [] summary: Get Current User tags: - Auth /auth/refresh: post: consumes: - application/json description: Get a new access token using a refresh token parameters: - description: Refresh Token in: body name: request required: true schema: $ref: '#/definitions/veza-backend-api_internal_dto.RefreshRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/veza-backend-api_internal_dto.TokenResponse' "400": description: Validation Error schema: $ref: '#/definitions/internal_handlers.APIResponse' "401": description: Invalid/Expired Refresh Token schema: $ref: '#/definitions/internal_handlers.APIResponse' "500": description: Internal Error schema: $ref: '#/definitions/internal_handlers.APIResponse' summary: Refresh Token tags: - Auth /auth/register: post: consumes: - application/json description: Register a new user account parameters: - description: Registration Data in: body name: request required: true schema: $ref: '#/definitions/veza-backend-api_internal_dto.RegisterRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/veza-backend-api_internal_dto.RegisterResponse' "400": description: Validation Error schema: $ref: '#/definitions/internal_handlers.APIResponse' "409": description: User already exists schema: $ref: '#/definitions/internal_handlers.APIResponse' "500": description: Internal Error schema: $ref: '#/definitions/internal_handlers.APIResponse' summary: User Registration tags: - Auth /auth/resend-verification: post: consumes: - application/json description: Resend the email verification link parameters: - description: Email in: body name: request required: true schema: $ref: '#/definitions/veza-backend-api_internal_dto.ResendVerificationRequest' produces: - application/json responses: "200": description: Success message schema: $ref: '#/definitions/internal_handlers.APIResponse' "400": description: Validation Error schema: $ref: '#/definitions/internal_handlers.APIResponse' summary: Resend Verification Email tags: - Auth /auth/verify-email: post: consumes: - application/json description: Verify user email address using a token parameters: - description: Verification Token in: query name: token required: true type: string produces: - application/json responses: "200": description: Success message schema: $ref: '#/definitions/internal_handlers.APIResponse' "400": description: Invalid Token schema: $ref: '#/definitions/internal_handlers.APIResponse' summary: Verify Email tags: - Auth /chat/token: get: consumes: - application/json description: Generate a short-lived token for chat authentication produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: properties: token: type: string type: object type: object "401": description: Unauthorized schema: $ref: '#/definitions/internal_handlers.APIResponse' "500": description: Internal Error schema: $ref: '#/definitions/internal_handlers.APIResponse' security: - BearerAuth: [] summary: Get Chat Token tags: - Chat /playlists: get: consumes: - application/json description: Get a paginated list of playlists parameters: - default: 1 description: Page number in: query name: page type: integer - default: 20 description: Items per page in: query name: limit type: integer - description: Filter by User ID in: query name: user_id type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: properties: pagination: type: object playlists: items: $ref: '#/definitions/veza-backend-api_internal_models.Playlist' type: array type: object type: object "500": description: Internal Error schema: $ref: '#/definitions/internal_handlers.APIResponse' security: - BearerAuth: [] summary: Get Playlists tags: - Playlist post: consumes: - application/json description: Create a new playlist parameters: - description: Playlist Metadata in: body name: request required: true schema: $ref: '#/definitions/internal_handlers.CreatePlaylistRequest' produces: - application/json responses: "201": description: Created schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: properties: playlist: $ref: '#/definitions/veza-backend-api_internal_models.Playlist' type: object type: object "400": description: Validation Error schema: $ref: '#/definitions/internal_handlers.APIResponse' "401": description: Unauthorized schema: $ref: '#/definitions/internal_handlers.APIResponse' "500": description: Internal Error schema: $ref: '#/definitions/internal_handlers.APIResponse' security: - BearerAuth: [] summary: Create Playlist tags: - Playlist /playlists/{id}: delete: consumes: - application/json description: Permanently delete a playlist parameters: - description: Playlist ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: properties: message: type: string type: object type: object "401": description: Unauthorized schema: $ref: '#/definitions/internal_handlers.APIResponse' "403": description: Forbidden schema: $ref: '#/definitions/internal_handlers.APIResponse' "404": description: Playlist not found schema: $ref: '#/definitions/internal_handlers.APIResponse' security: - BearerAuth: [] summary: Delete Playlist tags: - Playlist get: consumes: - application/json description: Get detailed information about a playlist parameters: - description: Playlist ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: properties: playlist: $ref: '#/definitions/veza-backend-api_internal_models.Playlist' type: object type: object "400": description: Invalid ID schema: $ref: '#/definitions/internal_handlers.APIResponse' "404": description: Playlist not found schema: $ref: '#/definitions/internal_handlers.APIResponse' security: - BearerAuth: [] summary: Get Playlist by ID tags: - Playlist put: consumes: - application/json description: Update playlist metadata parameters: - description: Playlist ID in: path name: id required: true type: string - description: Playlist Metadata in: body name: playlist required: true schema: $ref: '#/definitions/internal_handlers.UpdatePlaylistRequest' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: properties: playlist: $ref: '#/definitions/veza-backend-api_internal_models.Playlist' type: object type: object "400": description: Validation Error schema: $ref: '#/definitions/internal_handlers.APIResponse' "401": description: Unauthorized schema: $ref: '#/definitions/internal_handlers.APIResponse' "403": description: Forbidden schema: $ref: '#/definitions/internal_handlers.APIResponse' "404": description: Playlist not found schema: $ref: '#/definitions/internal_handlers.APIResponse' security: - BearerAuth: [] summary: Update Playlist tags: - Playlist /playlists/{id}/tracks: post: consumes: - application/json description: Add a track to the playlist parameters: - description: Playlist ID in: path name: id required: true type: string - description: Track ID (in body) in: body name: trackId required: true schema: properties: track_id: type: string type: object produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: properties: message: type: string type: object type: object "400": description: Track already present or invalid ID schema: $ref: '#/definitions/internal_handlers.APIResponse' "404": description: Playlist or Track not found schema: $ref: '#/definitions/internal_handlers.APIResponse' security: - BearerAuth: [] summary: Add Track to Playlist tags: - Playlist /playlists/{id}/tracks/{trackId}: delete: consumes: - application/json description: Remove a track from the playlist parameters: - description: Playlist ID in: path name: id required: true type: string - description: Track ID in: path name: trackId required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: properties: message: type: string type: object type: object "404": description: Playlist or Track not found schema: $ref: '#/definitions/internal_handlers.APIResponse' security: - BearerAuth: [] summary: Remove Track from Playlist tags: - Playlist /playlists/{id}/tracks/reorder: put: consumes: - application/json description: Reorder tracks in the playlist parameters: - description: Playlist ID in: path name: id required: true type: string - description: New Track Order in: body name: order required: true schema: $ref: '#/definitions/internal_handlers.ReorderTracksRequest' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: properties: message: type: string type: object type: object "400": description: Validation Error schema: $ref: '#/definitions/internal_handlers.APIResponse' security: - BearerAuth: [] summary: Reorder Tracks tags: - Playlist /tracks: get: consumes: - application/json description: Get a paginated list of tracks with filters parameters: - default: 1 description: Page number in: query name: page type: integer - default: 20 description: Items per page in: query name: limit type: integer - description: Filter by User ID in: query name: user_id type: string - description: Filter by Genre in: query name: genre type: string - description: Filter by Format in: query name: format type: string - default: created_at description: Sort field in: query name: sort_by type: string - default: desc description: Sort order (asc/desc) in: query name: sort_order type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' - properties: data: properties: pagination: type: object tracks: items: $ref: '#/definitions/veza-backend-api_internal_models.Track' type: array type: object type: object "500": description: Internal Error schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' summary: List Tracks tags: - Track post: consumes: - multipart/form-data description: Upload a new track (audio file) parameters: - description: Audio File (MP3, WAV, FLAC, OGG) in: formData name: file required: true type: file produces: - application/json responses: "201": description: Created schema: allOf: - $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' - properties: data: properties: track: $ref: '#/definitions/veza-backend-api_internal_models.Track' type: object type: object "400": description: No file or validation error schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "401": description: Unauthorized schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "403": description: Quota exceeded schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "500": description: Internal Error schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' security: - BearerAuth: [] summary: Upload Track tags: - Track /tracks/{id}: delete: consumes: - application/json description: Permanently delete a track parameters: - description: Track ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' - properties: data: properties: message: type: string type: object type: object "401": description: Unauthorized schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "403": description: Forbidden schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "404": description: Track not found schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' security: - BearerAuth: [] summary: Delete Track tags: - Track get: consumes: - application/json description: Get detailed information about a track parameters: - description: Track ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' - properties: data: properties: track: $ref: '#/definitions/veza-backend-api_internal_models.Track' type: object type: object "400": description: Invalid ID schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "404": description: Track not found schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' summary: Get Track by ID tags: - Track put: consumes: - application/json description: Update track metadata parameters: - description: Track ID in: path name: id required: true type: string - description: Track Metadata in: body name: track required: true schema: $ref: '#/definitions/internal_core_track.UpdateTrackRequest' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' - properties: data: properties: track: $ref: '#/definitions/veza-backend-api_internal_models.Track' type: object type: object "400": description: Validation Error schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "401": description: Unauthorized schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "403": description: Forbidden schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "404": description: Track not found schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' security: - BearerAuth: [] summary: Update Track tags: - Track /tracks/{id}/status: get: consumes: - application/json description: Get the processing status of an uploaded track parameters: - description: Track ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' - properties: data: properties: progress: type: integer type: object type: object "400": description: Invalid ID schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "401": description: Unauthorized schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "404": description: Track not found schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' security: - BearerAuth: [] summary: Get Upload Status tags: - Track /tracks/batch/delete: post: consumes: - application/json description: Delete multiple tracks at once parameters: - description: List of Track IDs in: body name: request required: true schema: $ref: '#/definitions/internal_core_track.BatchDeleteRequest' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' - properties: data: properties: deleted: items: type: string type: array failed: type: object type: object type: object "400": description: Validation Error schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "500": description: Internal Error schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' security: - BearerAuth: [] summary: Batch Delete Tracks tags: - Track /tracks/chunk: post: consumes: - multipart/form-data description: Upload a single chunk of a file parameters: - description: Chunk Data in: formData name: chunk required: true type: file - description: Upload ID in: formData name: upload_id required: true type: string - description: Chunk Number in: formData name: chunk_number required: true type: integer - description: Total Chunks in: formData name: total_chunks required: true type: integer - description: Total Size format: int64 in: formData name: total_size required: true type: integer - description: Filename in: formData name: filename required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' - properties: data: properties: message: type: string progress: format: float64 type: number received_chunks: type: integer upload_id: type: string type: object type: object "400": description: Validation Error schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "401": description: Unauthorized schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' security: - BearerAuth: [] summary: Upload Chunk tags: - Track /tracks/complete: post: consumes: - application/json description: Finish upload session and assemble file parameters: - description: Upload ID in: body name: request required: true schema: $ref: '#/definitions/internal_core_track.CompleteChunkedUploadRequest' produces: - application/json responses: "201": description: Created schema: allOf: - $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' - properties: data: properties: md5: type: string message: type: string track: $ref: '#/definitions/veza-backend-api_internal_models.Track' type: object type: object "400": description: Validation or Assemblage Error schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "401": description: Unauthorized schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' security: - BearerAuth: [] summary: Complete Chunked Upload tags: - Track /tracks/initiate: post: consumes: - application/json description: Start a new chunked upload session parameters: - description: Upload Metadata in: body name: request required: true schema: $ref: '#/definitions/internal_core_track.InitiateChunkedUploadRequest' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' - properties: data: properties: message: type: string upload_id: type: string type: object type: object "400": description: Validation Error schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "401": description: Unauthorized schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' security: - BearerAuth: [] summary: Initiate Chunked Upload tags: - Track /tracks/quota/{id}: get: consumes: - application/json description: Get remaining upload quota for the user parameters: - description: User ID (optional, defaults to current user) in: path name: id type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' - properties: data: properties: quota: type: object type: object type: object "401": description: Unauthorized schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' "403": description: Forbidden schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' security: - BearerAuth: [] summary: Get Upload Quota tags: - Track /tracks/resume/{uploadId}: get: consumes: - application/json description: Get state of an interrupted upload parameters: - description: Upload ID in: path name: uploadId required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' - properties: data: properties: chunks_received: type: integer upload_id: type: string type: object type: object "404": description: Upload session not found schema: $ref: '#/definitions/veza-backend-api_internal_response.APIResponse' security: - BearerAuth: [] summary: Resume Upload tags: - Track /users/{id}: get: consumes: - application/json description: Get public profile information for a user parameters: - description: User ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: properties: profile: type: object type: object type: object "400": description: Invalid ID schema: $ref: '#/definitions/internal_handlers.APIResponse' "404": description: User not found schema: $ref: '#/definitions/internal_handlers.APIResponse' summary: Get Profile by ID tags: - User put: consumes: - application/json description: Update user profile details parameters: - description: User ID in: path name: id required: true type: string - description: Profile Data in: body name: profile required: true schema: $ref: '#/definitions/internal_handlers.UpdateProfileRequest' produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: properties: profile: type: object type: object type: object "400": description: Validation Error schema: $ref: '#/definitions/internal_handlers.APIResponse' "401": description: Unauthorized schema: $ref: '#/definitions/internal_handlers.APIResponse' "403": description: Forbidden schema: $ref: '#/definitions/internal_handlers.APIResponse' security: - BearerAuth: [] summary: Update Profile tags: - User /users/{id}/completion: get: consumes: - application/json description: Get profile completion percentage and missing fields parameters: - description: User ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: type: object type: object "400": description: Invalid ID schema: $ref: '#/definitions/internal_handlers.APIResponse' "401": description: Unauthorized schema: $ref: '#/definitions/internal_handlers.APIResponse' "403": description: Forbidden schema: $ref: '#/definitions/internal_handlers.APIResponse' summary: Get Profile Completion tags: - User /users/by-username/{username}: get: consumes: - application/json description: Get public profile information for a user by username parameters: - description: Username in: path name: username required: true type: string produces: - application/json responses: "200": description: OK schema: allOf: - $ref: '#/definitions/internal_handlers.APIResponse' - properties: data: properties: profile: type: object type: object type: object "400": description: Missing username schema: $ref: '#/definitions/internal_handlers.APIResponse' "404": description: User not found schema: $ref: '#/definitions/internal_handlers.APIResponse' summary: Get Profile by Username tags: - User securityDefinitions: BearerAuth: in: header name: Authorization type: apiKey swagger: "2.0"