{ "consumes": [ "application/json" ], "produces": [ "application/json" ], "schemes": [ "http", "https" ], "swagger": "2.0", "info": { "description": "This documentation describes the List API.", "title": "List API.", "license": { "name": "GPLv3" }, "version": "0.1" }, "basePath": "/api/v1", "paths": { "/item/{itemID}": { "put": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "lists" ], "summary": "Updates a list item", "operationId": "updateListItem", "parameters": [ { "type": "string", "description": "ID of the item to update", "name": "itemID", "in": "path", "required": true }, { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/ListItem" } } ], "responses": { "200": { "$ref": "#/responses/ListItem" }, "400": { "$ref": "#/responses/Message" }, "500": { "$ref": "#/responses/Message" } } }, "delete": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "lists" ], "summary": "Deletes a list item", "operationId": "deleteListItem", "parameters": [ { "type": "string", "description": "ID of the list item to delete", "name": "itemID", "in": "path", "required": true } ], "responses": { "200": { "$ref": "#/responses/Message" }, "400": { "$ref": "#/responses/Message" }, "403": { "$ref": "#/responses/Message" }, "404": { "$ref": "#/responses/Message" }, "500": { "$ref": "#/responses/Message" } } } }, "/lists": { "get": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "lists" ], "summary": "Gets all lists owned by the current user", "operationId": "getLists", "responses": { "200": { "$ref": "#/responses/List" }, "500": { "$ref": "#/responses/Message" } } }, "put": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "lists" ], "summary": "Creates a new list owned by the currently logged in user", "operationId": "addList", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/List" } } ], "responses": { "200": { "$ref": "#/responses/List" }, "400": { "$ref": "#/responses/Message" }, "403": { "$ref": "#/responses/Message" }, "500": { "$ref": "#/responses/Message" } } } }, "/lists/{listID}": { "get": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "lists" ], "summary": "gets one list with all todo items", "operationId": "getList", "parameters": [ { "type": "string", "description": "ID of the list to show", "name": "listID", "in": "path", "required": true } ], "responses": { "200": { "$ref": "#/responses/List" }, "400": { "$ref": "#/responses/Message" }, "500": { "$ref": "#/responses/Message" } } }, "put": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "lists" ], "summary": "Adds an item to a list", "operationId": "addListItem", "parameters": [ { "type": "string", "description": "ID of the list to use", "name": "listID", "in": "path", "required": true }, { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/ListItem" } } ], "responses": { "200": { "$ref": "#/responses/ListItem" }, "400": { "$ref": "#/responses/Message" }, "500": { "$ref": "#/responses/Message" } } }, "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "lists" ], "summary": "Updates a list", "operationId": "upadteList", "parameters": [ { "type": "string", "description": "ID of the list to update", "name": "listID", "in": "path", "required": true }, { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/List" } } ], "responses": { "200": { "$ref": "#/responses/List" }, "400": { "$ref": "#/responses/Message" }, "403": { "$ref": "#/responses/Message" }, "500": { "$ref": "#/responses/Message" } } }, "delete": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "lists" ], "summary": "Deletes a list with all items on it", "operationId": "deleteList", "parameters": [ { "type": "string", "description": "ID of the list to delete", "name": "listID", "in": "path", "required": true } ], "responses": { "200": { "$ref": "#/responses/Message" }, "400": { "$ref": "#/responses/Message" }, "403": { "$ref": "#/responses/Message" }, "404": { "$ref": "#/responses/Message" }, "500": { "$ref": "#/responses/Message" } } } }, "/login": { "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Logs a user in. Returns a JWT-Token to authenticate requests", "operationId": "login", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/UserLogin" } } ], "responses": { "200": { "$ref": "#/responses/Token" }, "400": { "$ref": "#/responses/Message" }, "403": { "$ref": "#/responses/Message" } } } }, "/register": { "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Creates a new user account", "operationId": "register", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/ApiUserPassword" } } ], "responses": { "200": { "$ref": "#/responses/User" }, "400": { "$ref": "#/responses/Message" }, "500": { "$ref": "#/responses/Message" } } } } }, "definitions": { "ApiUserPassword": { "type": "object", "title": "ApiUserPassword represents a user object without timestamps and a json password field.", "properties": { "email": { "type": "string", "x-go-name": "Email" }, "id": { "type": "integer", "format": "int64", "x-go-name": "ID" }, "password": { "type": "string", "x-go-name": "Password" }, "username": { "type": "string", "x-go-name": "Username" } }, "x-go-package": "git.kolaente.de/konrad/list/models" }, "List": { "description": "List represents a list of items", "type": "object", "properties": { "created": { "type": "integer", "format": "int64", "x-go-name": "Created" }, "description": { "type": "string", "x-go-name": "Description" }, "id": { "type": "integer", "format": "int64", "x-go-name": "ID" }, "items": { "type": "array", "items": { "$ref": "#/definitions/ListItem" }, "x-go-name": "Items" }, "owner": { "$ref": "#/definitions/User" }, "title": { "type": "string", "x-go-name": "Title" }, "updated": { "type": "integer", "format": "int64", "x-go-name": "Updated" } }, "x-go-package": "git.kolaente.de/konrad/list/models" }, "ListItem": { "description": "ListItem represents an item in a todolist", "type": "object", "properties": { "created": { "type": "integer", "format": "int64", "x-go-name": "Created" }, "createdBy": { "$ref": "#/definitions/User" }, "description": { "type": "string", "x-go-name": "Description" }, "done": { "type": "boolean", "x-go-name": "Done" }, "dueDate": { "type": "integer", "format": "int64", "x-go-name": "DueDateUnix" }, "id": { "type": "integer", "format": "int64", "x-go-name": "ID" }, "listID": { "type": "integer", "format": "int64", "x-go-name": "ListID" }, "reminderDate": { "type": "integer", "format": "int64", "x-go-name": "ReminderUnix" }, "text": { "type": "string", "x-go-name": "Text" }, "updated": { "type": "integer", "format": "int64", "x-go-name": "Updated" } }, "x-go-package": "git.kolaente.de/konrad/list/models" }, "Message": { "description": "Message is a standard message", "type": "object", "properties": { "message": { "type": "string", "x-go-name": "Message" } }, "x-go-package": "git.kolaente.de/konrad/list/models" }, "User": { "description": "User holds information about an user", "type": "object", "properties": { "email": { "type": "string", "x-go-name": "Email" }, "id": { "type": "integer", "format": "int64", "x-go-name": "ID" }, "username": { "type": "string", "x-go-name": "Username" } }, "x-go-package": "git.kolaente.de/konrad/list/models" }, "UserLogin": { "description": "UserLogin Object to recive user credentials in JSON format", "type": "object", "properties": { "password": { "type": "string", "x-go-name": "Password" }, "username": { "type": "string", "x-go-name": "Username" } }, "x-go-package": "git.kolaente.de/konrad/list/models" } }, "responses": { "List": { "description": "List", "schema": { "$ref": "#/definitions/List" } }, "ListItem": { "description": "ListItem", "schema": { "$ref": "#/definitions/ListItem" } }, "Message": { "description": "Message", "schema": { "$ref": "#/definitions/Message" } }, "Token": { "description": "Token", "schema": { "type": "object", "required": [ "token" ], "properties": { "token": { "description": "The token", "type": "string", "x-go-name": "Token" } } } }, "User": { "description": "User Object", "schema": { "$ref": "#/definitions/User" } }, "parameterBodies": { "description": "parameterBodies", "schema": { "$ref": "#/definitions/ListItem" } } }, "securityDefinitions": { "AuthorizationHeaderToken": { "type": "apiKey", "name": "Authorization", "in": "header" } }, "security": [ { "AuthorizationHeaderToken": [] } ] }