openapi: 3.0.2 info: title: Karaoqueue API version: '0.0.1' servers: - url: 'http://localhost:3000/api' description: Local Test sever instance - url: 'https://karaoke.phillipathome.dynv6.net/api' description: Production API paths: /api/enqueue: post: summary: "Enqueue a song" requestBody: required: true content: application/json: schema: type: object properties: client_id: type: string name: type: string id: type: string responses: '200': description: "Song enqueued successfully" '400': description: "Bad request, JSON is required" '423': description: "Cannot enqueue, conditions not met" /api/queue: get: summary: "Get the queue" responses: '200': description: "Queue retrieved successfully" content: application/json: schema: type: array items: type: object /api/songs: get: summary: "Get the list of songs" responses: '200': description: "List of songs retrieved successfully" content: application/json: schema: type: array items: type: object /api/songs/update: get: summary: "Update the list of songs" responses: '200': description: "Songs updated successfully" '400': description: "Bad request" /api/songs/compl: get: summary: "Get song completions" parameters: - name: search in: query required: false schema: type: string responses: '200': description: "Song completions retrieved successfully" content: application/json: schema: type: array items: type: object '400': description: "Bad request" /api/entries/delete/{entry_id}: get: summary: "Admin deletes an entry" parameters: - name: entry_id in: path required: true schema: type: string responses: '200': description: "Entry deleted successfully" '400': description: "Entry deletion failed" post: summary: "User deletes an entry" parameters: - name: entry_id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: client_id: type: string responses: '200': description: "Entry deleted successfully" '400': description: "Bad request, JSON is required" '403': description: "Forbidden, client_id mismatch" /api/entries/delete: post: summary: "Delete multiple entries" requestBody: required: true content: application/json: schema: type: array items: type: string responses: '200': description: "Entries deleted successfully" '400': description: "Bad request, JSON is required" /api/entries/mark_sung/{entry_id}: get: summary: "Mark an entry as sung" parameters: - name: entry_id in: path required: true schema: type: string responses: '200': description: "Entry marked as sung successfully" '400': description: "Marking entry as sung failed" /api/entries/mark_transferred/{entry_id}: get: summary: "Toggle transferred status of an entry" parameters: - name: entry_id in: path required: true schema: type: string responses: '200': description: "Entry transferred status toggled successfully" '400': description: "Toggling transferred status failed" /api/entries/accept/{value}: get: summary: "Set accept entries status" parameters: - name: value in: path required: true schema: type: string responses: '200': description: "Accept entries status set successfully" '400': description: "Setting accept entries status failed" /api/entries/accept: get: summary: "Get accept entries status" responses: '200': description: "Accept entries status retrieved successfully" /api/played/clear: get: summary: "Clear played songs" responses: '200': description: "Played songs cleared successfully" '400': description: "Clearing played songs failed" /api/entries/delete_all: get: summary: "Delete all entries" responses: '200': description: "All entries deleted successfully" '400': description: "Deleting all entries failed" /api/events/current: get: summary: "Get the current event" responses: '200': description: "Current event retrieved successfully" security: - BasicAuth: [] components: securitySchemes: BasicAuth: type: http scheme: basic