diff --git a/pkg/swagger/docs.go b/pkg/swagger/docs.go index 0ea998291..ec1464310 100644 --- a/pkg/swagger/docs.go +++ b/pkg/swagger/docs.go @@ -923,6 +923,12 @@ var doc = `{ "$ref": "#/definitions/models.Message" } }, + "400": { + "description": "File is no image.", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, "403": { "description": "File too large.", "schema": { @@ -1517,6 +1523,70 @@ var doc = `{ } } }, + "/lists/{listID}/duplicate": { + "put": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Copies the list, tasks, files, kanban data, assignees, comments, attachments, lables, relations, backgrounds, user/team rights and link shares from one list to a new namespace. The user needs read access in the list and write access in the namespace of the new list.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "list" + ], + "summary": "Duplicate an existing list", + "parameters": [ + { + "type": "integer", + "description": "The list ID to duplicate", + "name": "listID", + "in": "path", + "required": true + }, + { + "description": "The target namespace which should hold the copied list.", + "name": "list", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.ListDuplicate" + } + } + ], + "responses": { + "200": { + "description": "The created list.", + "schema": { + "$ref": "#/definitions/models.ListDuplicate" + } + }, + "400": { + "description": "Invalid list duplicate object provided.", + "schema": { + "$ref": "#/definitions/web.HTTPError" + } + }, + "403": { + "description": "The user does not have access to the list or namespace", + "schema": { + "$ref": "#/definitions/web.HTTPError" + } + }, + "500": { + "description": "Internal error", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + } + }, "/lists/{listID}/tasks": { "get": { "security": [ @@ -5476,6 +5546,150 @@ var doc = `{ } } }, + "/user/settings/avatar": { + "get": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Returns the current user's avatar setting.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Return user avatar setting", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1.UserAvatarProvider" + } + }, + "400": { + "description": "Something's invalid.", + "schema": { + "$ref": "#/definitions/web.HTTPError" + } + }, + "500": { + "description": "Internal server error.", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + }, + "post": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Changes the user avatar. Valid types are gravatar (uses the user email), upload, initials, default.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Set the user's avatar", + "parameters": [ + { + "description": "The user's avatar setting", + "name": "avatar", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.UserAvatarProvider" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1.UserAvatarProvider" + } + }, + "400": { + "description": "Something's invalid.", + "schema": { + "$ref": "#/definitions/web.HTTPError" + } + }, + "500": { + "description": "Internal server error.", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + } + }, + "/user/settings/avatar/upload": { + "put": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Upload a user avatar. This will also set the user's avatar provider to \"upload\"", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Upload a user avatar", + "parameters": [ + { + "type": "string", + "description": "The avatar as single file.", + "name": "avatar", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "The avatar was set successfully.", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, + "400": { + "description": "File is no image.", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, + "403": { + "description": "File too large.", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, + "500": { + "description": "Internal error", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + } + }, "/user/settings/email": { "post": { "security": [ @@ -6297,6 +6511,20 @@ var doc = `{ } } }, + "models.ListDuplicate": { + "type": "object", + "properties": { + "list": { + "description": "The copied list", + "type": "object", + "$ref": "#/definitions/models.List" + }, + "namespace_id": { + "description": "The target namespace ID", + "type": "integer" + } + } + }, "models.ListUser": { "type": "object", "properties": { @@ -7037,6 +7265,14 @@ var doc = `{ } } }, + "v1.UserAvatarProvider": { + "type": "object", + "properties": { + "avatar_provider": { + "type": "string" + } + } + }, "v1.UserPassword": { "type": "object", "properties": { @@ -7048,6 +7284,17 @@ var doc = `{ } } }, + "v1.legalInfo": { + "type": "object", + "properties": { + "imprint_url": { + "type": "string" + }, + "privacy_policy_url": { + "type": "string" + } + } + }, "v1.vikunjaInfos": { "type": "object", "properties": { @@ -7066,6 +7313,10 @@ var doc = `{ "frontend_url": { "type": "string" }, + "legal": { + "type": "object", + "$ref": "#/definitions/v1.legalInfo" + }, "link_sharing_enabled": { "type": "boolean" }, diff --git a/pkg/swagger/swagger.json b/pkg/swagger/swagger.json index 8a3dcc349..533f9cae9 100644 --- a/pkg/swagger/swagger.json +++ b/pkg/swagger/swagger.json @@ -906,6 +906,12 @@ "$ref": "#/definitions/models.Message" } }, + "400": { + "description": "File is no image.", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, "403": { "description": "File too large.", "schema": { @@ -1500,6 +1506,70 @@ } } }, + "/lists/{listID}/duplicate": { + "put": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Copies the list, tasks, files, kanban data, assignees, comments, attachments, lables, relations, backgrounds, user/team rights and link shares from one list to a new namespace. The user needs read access in the list and write access in the namespace of the new list.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "list" + ], + "summary": "Duplicate an existing list", + "parameters": [ + { + "type": "integer", + "description": "The list ID to duplicate", + "name": "listID", + "in": "path", + "required": true + }, + { + "description": "The target namespace which should hold the copied list.", + "name": "list", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.ListDuplicate" + } + } + ], + "responses": { + "200": { + "description": "The created list.", + "schema": { + "$ref": "#/definitions/models.ListDuplicate" + } + }, + "400": { + "description": "Invalid list duplicate object provided.", + "schema": { + "$ref": "#/definitions/web.HTTPError" + } + }, + "403": { + "description": "The user does not have access to the list or namespace", + "schema": { + "$ref": "#/definitions/web.HTTPError" + } + }, + "500": { + "description": "Internal error", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + } + }, "/lists/{listID}/tasks": { "get": { "security": [ @@ -5459,6 +5529,150 @@ } } }, + "/user/settings/avatar": { + "get": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Returns the current user's avatar setting.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Return user avatar setting", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1.UserAvatarProvider" + } + }, + "400": { + "description": "Something's invalid.", + "schema": { + "$ref": "#/definitions/web.HTTPError" + } + }, + "500": { + "description": "Internal server error.", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + }, + "post": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Changes the user avatar. Valid types are gravatar (uses the user email), upload, initials, default.", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Set the user's avatar", + "parameters": [ + { + "description": "The user's avatar setting", + "name": "avatar", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.UserAvatarProvider" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1.UserAvatarProvider" + } + }, + "400": { + "description": "Something's invalid.", + "schema": { + "$ref": "#/definitions/web.HTTPError" + } + }, + "500": { + "description": "Internal server error.", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + } + }, + "/user/settings/avatar/upload": { + "put": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Upload a user avatar. This will also set the user's avatar provider to \"upload\"", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Upload a user avatar", + "parameters": [ + { + "type": "string", + "description": "The avatar as single file.", + "name": "avatar", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "The avatar was set successfully.", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, + "400": { + "description": "File is no image.", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, + "403": { + "description": "File too large.", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, + "500": { + "description": "Internal error", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + } + }, "/user/settings/email": { "post": { "security": [ @@ -6279,6 +6493,20 @@ } } }, + "models.ListDuplicate": { + "type": "object", + "properties": { + "list": { + "description": "The copied list", + "type": "object", + "$ref": "#/definitions/models.List" + }, + "namespace_id": { + "description": "The target namespace ID", + "type": "integer" + } + } + }, "models.ListUser": { "type": "object", "properties": { @@ -7019,6 +7247,14 @@ } } }, + "v1.UserAvatarProvider": { + "type": "object", + "properties": { + "avatar_provider": { + "type": "string" + } + } + }, "v1.UserPassword": { "type": "object", "properties": { @@ -7030,6 +7266,17 @@ } } }, + "v1.legalInfo": { + "type": "object", + "properties": { + "imprint_url": { + "type": "string" + }, + "privacy_policy_url": { + "type": "string" + } + } + }, "v1.vikunjaInfos": { "type": "object", "properties": { @@ -7048,6 +7295,10 @@ "frontend_url": { "type": "string" }, + "legal": { + "type": "object", + "$ref": "#/definitions/v1.legalInfo" + }, "link_sharing_enabled": { "type": "boolean" }, diff --git a/pkg/swagger/swagger.yaml b/pkg/swagger/swagger.yaml index 5fa6ac2d4..524c69b9e 100644 --- a/pkg/swagger/swagger.yaml +++ b/pkg/swagger/swagger.yaml @@ -320,6 +320,16 @@ definitions: this value. type: string type: object + models.ListDuplicate: + properties: + list: + $ref: '#/definitions/models.List' + description: The copied list + type: object + namespace_id: + description: The target namespace ID + type: integer + type: object models.ListUser: properties: created: @@ -905,6 +915,11 @@ definitions: token: type: string type: object + v1.UserAvatarProvider: + properties: + avatar_provider: + type: string + type: object v1.UserPassword: properties: new_password: @@ -912,6 +927,13 @@ definitions: old_password: type: string type: object + v1.legalInfo: + properties: + imprint_url: + type: string + privacy_policy_url: + type: string + type: object v1.vikunjaInfos: properties: available_migrators: @@ -924,6 +946,9 @@ definitions: type: array frontend_url: type: string + legal: + $ref: '#/definitions/v1.legalInfo' + type: object link_sharing_enabled: type: boolean max_file_size: @@ -1578,6 +1603,10 @@ paths: description: The background was set successfully. schema: $ref: '#/definitions/models.Message' + "400": + description: File is no image. + schema: + $ref: '#/definitions/models.Message' "403": description: File too large. schema: @@ -2139,6 +2168,50 @@ paths: summary: Update an existing bucket tags: - task + /lists/{listID}/duplicate: + put: + consumes: + - application/json + description: Copies the list, tasks, files, kanban data, assignees, comments, + attachments, lables, relations, backgrounds, user/team rights and link shares + from one list to a new namespace. The user needs read access in the list and + write access in the namespace of the new list. + parameters: + - description: The list ID to duplicate + in: path + name: listID + required: true + type: integer + - description: The target namespace which should hold the copied list. + in: body + name: list + required: true + schema: + $ref: '#/definitions/models.ListDuplicate' + produces: + - application/json + responses: + "200": + description: The created list. + schema: + $ref: '#/definitions/models.ListDuplicate' + "400": + description: Invalid list duplicate object provided. + schema: + $ref: '#/definitions/web.HTTPError' + "403": + description: The user does not have access to the list or namespace + schema: + $ref: '#/definitions/web.HTTPError' + "500": + description: Internal error + schema: + $ref: '#/definitions/models.Message' + security: + - JWTKeyAuth: [] + summary: Duplicate an existing list + tags: + - list /lists/{listID}/tasks: get: consumes: @@ -4603,6 +4676,99 @@ paths: summary: Request password reset token tags: - user + /user/settings/avatar: + get: + consumes: + - application/json + description: Returns the current user's avatar setting. + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/v1.UserAvatarProvider' + "400": + description: Something's invalid. + schema: + $ref: '#/definitions/web.HTTPError' + "500": + description: Internal server error. + schema: + $ref: '#/definitions/models.Message' + security: + - JWTKeyAuth: [] + summary: Return user avatar setting + tags: + - user + post: + consumes: + - application/json + description: Changes the user avatar. Valid types are gravatar (uses the user + email), upload, initials, default. + parameters: + - description: The user's avatar setting + in: body + name: avatar + required: true + schema: + $ref: '#/definitions/v1.UserAvatarProvider' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/v1.UserAvatarProvider' + "400": + description: Something's invalid. + schema: + $ref: '#/definitions/web.HTTPError' + "500": + description: Internal server error. + schema: + $ref: '#/definitions/models.Message' + security: + - JWTKeyAuth: [] + summary: Set the user's avatar + tags: + - user + /user/settings/avatar/upload: + put: + consumes: + - multipart/form-data + description: Upload a user avatar. This will also set the user's avatar provider + to "upload" + parameters: + - description: The avatar as single file. + in: formData + name: avatar + required: true + type: string + produces: + - application/json + responses: + "200": + description: The avatar was set successfully. + schema: + $ref: '#/definitions/models.Message' + "400": + description: File is no image. + schema: + $ref: '#/definitions/models.Message' + "403": + description: File too large. + schema: + $ref: '#/definitions/models.Message' + "500": + description: Internal error + schema: + $ref: '#/definitions/models.Message' + security: + - JWTKeyAuth: [] + summary: Upload a user avatar + tags: + - user /user/settings/email: post: consumes: