From a0dd7a7270924814c022bc7e4875c6e7ae08f2e6 Mon Sep 17 00:00:00 2001 From: "Frederick [Bot]" Date: Tue, 7 Apr 2026 15:45:50 +0000 Subject: [PATCH] [skip ci] Updated swagger docs --- pkg/swagger/docs.go | 319 +++++++++++++++++++++++++++++++++++++++ pkg/swagger/swagger.json | 319 +++++++++++++++++++++++++++++++++++++++ pkg/swagger/swagger.yaml | 214 ++++++++++++++++++++++++++ 3 files changed, 852 insertions(+) diff --git a/pkg/swagger/docs.go b/pkg/swagger/docs.go index 0d7ce800f..6061a40a2 100644 --- a/pkg/swagger/docs.go +++ b/pkg/swagger/docs.go @@ -765,6 +765,198 @@ const docTemplate = `{ } } }, + "/migration/csv/detect": { + "put": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Analyzes a CSV file and returns auto-detected columns, delimiter, quote character, and date format with suggested column mappings.", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "migration" + ], + "summary": "Detect CSV structure", + "parameters": [ + { + "type": "file", + "description": "The CSV file to analyze", + "name": "import", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "Detection results with suggested mappings", + "schema": { + "$ref": "#/definitions/csv.DetectionResult" + } + }, + "400": { + "description": "Invalid CSV file", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + } + }, + "/migration/csv/migrate": { + "put": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Imports tasks from a CSV file into Vikunja with the provided configuration.", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "migration" + ], + "summary": "Import CSV file", + "parameters": [ + { + "type": "file", + "description": "The CSV file to import", + "name": "import", + "in": "formData", + "required": true + }, + { + "type": "string", + "description": "The import configuration JSON", + "name": "config", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "A message telling you everything was migrated successfully.", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, + "400": { + "description": "Invalid CSV file or configuration", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + } + }, + "/migration/csv/preview": { + "put": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Generates a preview of the first 5 tasks that would be imported with the given configuration.", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "migration" + ], + "summary": "Preview CSV import", + "parameters": [ + { + "type": "file", + "description": "The CSV file to preview", + "name": "import", + "in": "formData", + "required": true + }, + { + "type": "string", + "description": "The import configuration JSON", + "name": "config", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "Preview of tasks to import", + "schema": { + "$ref": "#/definitions/csv.PreviewResult" + } + }, + "400": { + "description": "Invalid CSV file or configuration", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + } + }, + "/migration/csv/status": { + "get": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Returns if the current user already did the CSV migration or not.", + "produces": [ + "application/json" + ], + "tags": [ + "migration" + ], + "summary": "Get CSV migration status", + "responses": { + "200": { + "description": "The migration status", + "schema": { + "$ref": "#/definitions/migration.Status" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + } + }, "/migration/microsoft-todo/auth": { "get": { "security": [ @@ -8268,6 +8460,133 @@ const docTemplate = `{ } } }, + "csv.ColumnMapping": { + "type": "object", + "properties": { + "attribute": { + "$ref": "#/definitions/csv.TaskAttribute" + }, + "column_index": { + "type": "integer" + }, + "column_name": { + "type": "string" + } + } + }, + "csv.DetectionResult": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + } + }, + "date_format": { + "type": "string" + }, + "delimiter": { + "type": "string" + }, + "preview_rows": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "quote_char": { + "type": "string" + }, + "suggested_mapping": { + "type": "array", + "items": { + "$ref": "#/definitions/csv.ColumnMapping" + } + } + } + }, + "csv.PreviewResult": { + "type": "object", + "properties": { + "tasks": { + "type": "array", + "items": { + "$ref": "#/definitions/csv.PreviewTask" + } + }, + "total_rows": { + "type": "integer" + } + } + }, + "csv.PreviewTask": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "done": { + "type": "boolean" + }, + "due_date": { + "type": "string" + }, + "end_date": { + "type": "string" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "priority": { + "type": "integer" + }, + "project": { + "type": "string" + }, + "start_date": { + "type": "string" + }, + "title": { + "type": "string" + } + } + }, + "csv.TaskAttribute": { + "type": "string", + "enum": [ + "title", + "description", + "due_date", + "start_date", + "end_date", + "done", + "priority", + "labels", + "project", + "reminder", + "ignore" + ], + "x-enum-varnames": [ + "AttrTitle", + "AttrDescription", + "AttrDueDate", + "AttrStartDate", + "AttrEndDate", + "AttrDone", + "AttrPriority", + "AttrLabels", + "AttrProject", + "AttrReminder", + "AttrIgnore" + ] + }, "files.File": { "type": "object", "properties": { diff --git a/pkg/swagger/swagger.json b/pkg/swagger/swagger.json index 022d0a275..a23bd2231 100644 --- a/pkg/swagger/swagger.json +++ b/pkg/swagger/swagger.json @@ -757,6 +757,198 @@ } } }, + "/migration/csv/detect": { + "put": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Analyzes a CSV file and returns auto-detected columns, delimiter, quote character, and date format with suggested column mappings.", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "migration" + ], + "summary": "Detect CSV structure", + "parameters": [ + { + "type": "file", + "description": "The CSV file to analyze", + "name": "import", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "Detection results with suggested mappings", + "schema": { + "$ref": "#/definitions/csv.DetectionResult" + } + }, + "400": { + "description": "Invalid CSV file", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + } + }, + "/migration/csv/migrate": { + "put": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Imports tasks from a CSV file into Vikunja with the provided configuration.", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "migration" + ], + "summary": "Import CSV file", + "parameters": [ + { + "type": "file", + "description": "The CSV file to import", + "name": "import", + "in": "formData", + "required": true + }, + { + "type": "string", + "description": "The import configuration JSON", + "name": "config", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "A message telling you everything was migrated successfully.", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, + "400": { + "description": "Invalid CSV file or configuration", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + } + }, + "/migration/csv/preview": { + "put": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Generates a preview of the first 5 tasks that would be imported with the given configuration.", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "migration" + ], + "summary": "Preview CSV import", + "parameters": [ + { + "type": "file", + "description": "The CSV file to preview", + "name": "import", + "in": "formData", + "required": true + }, + { + "type": "string", + "description": "The import configuration JSON", + "name": "config", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "Preview of tasks to import", + "schema": { + "$ref": "#/definitions/csv.PreviewResult" + } + }, + "400": { + "description": "Invalid CSV file or configuration", + "schema": { + "$ref": "#/definitions/models.Message" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + } + }, + "/migration/csv/status": { + "get": { + "security": [ + { + "JWTKeyAuth": [] + } + ], + "description": "Returns if the current user already did the CSV migration or not.", + "produces": [ + "application/json" + ], + "tags": [ + "migration" + ], + "summary": "Get CSV migration status", + "responses": { + "200": { + "description": "The migration status", + "schema": { + "$ref": "#/definitions/migration.Status" + } + }, + "500": { + "description": "Internal server error", + "schema": { + "$ref": "#/definitions/models.Message" + } + } + } + } + }, "/migration/microsoft-todo/auth": { "get": { "security": [ @@ -8260,6 +8452,133 @@ } } }, + "csv.ColumnMapping": { + "type": "object", + "properties": { + "attribute": { + "$ref": "#/definitions/csv.TaskAttribute" + }, + "column_index": { + "type": "integer" + }, + "column_name": { + "type": "string" + } + } + }, + "csv.DetectionResult": { + "type": "object", + "properties": { + "columns": { + "type": "array", + "items": { + "type": "string" + } + }, + "date_format": { + "type": "string" + }, + "delimiter": { + "type": "string" + }, + "preview_rows": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "quote_char": { + "type": "string" + }, + "suggested_mapping": { + "type": "array", + "items": { + "$ref": "#/definitions/csv.ColumnMapping" + } + } + } + }, + "csv.PreviewResult": { + "type": "object", + "properties": { + "tasks": { + "type": "array", + "items": { + "$ref": "#/definitions/csv.PreviewTask" + } + }, + "total_rows": { + "type": "integer" + } + } + }, + "csv.PreviewTask": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "done": { + "type": "boolean" + }, + "due_date": { + "type": "string" + }, + "end_date": { + "type": "string" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "priority": { + "type": "integer" + }, + "project": { + "type": "string" + }, + "start_date": { + "type": "string" + }, + "title": { + "type": "string" + } + } + }, + "csv.TaskAttribute": { + "type": "string", + "enum": [ + "title", + "description", + "due_date", + "start_date", + "end_date", + "done", + "priority", + "labels", + "project", + "reminder", + "ignore" + ], + "x-enum-varnames": [ + "AttrTitle", + "AttrDescription", + "AttrDueDate", + "AttrStartDate", + "AttrEndDate", + "AttrDone", + "AttrPriority", + "AttrLabels", + "AttrProject", + "AttrReminder", + "AttrIgnore" + ] + }, "files.File": { "type": "object", "properties": { diff --git a/pkg/swagger/swagger.yaml b/pkg/swagger/swagger.yaml index f1bfadf51..4a1a5f504 100644 --- a/pkg/swagger/swagger.yaml +++ b/pkg/swagger/swagger.yaml @@ -41,6 +41,96 @@ definitions: username_fallback: type: boolean type: object + csv.ColumnMapping: + properties: + attribute: + $ref: '#/definitions/csv.TaskAttribute' + column_index: + type: integer + column_name: + type: string + type: object + csv.DetectionResult: + properties: + columns: + items: + type: string + type: array + date_format: + type: string + delimiter: + type: string + preview_rows: + items: + items: + type: string + type: array + type: array + quote_char: + type: string + suggested_mapping: + items: + $ref: '#/definitions/csv.ColumnMapping' + type: array + type: object + csv.PreviewResult: + properties: + tasks: + items: + $ref: '#/definitions/csv.PreviewTask' + type: array + total_rows: + type: integer + type: object + csv.PreviewTask: + properties: + description: + type: string + done: + type: boolean + due_date: + type: string + end_date: + type: string + labels: + items: + type: string + type: array + priority: + type: integer + project: + type: string + start_date: + type: string + title: + type: string + type: object + csv.TaskAttribute: + enum: + - title + - description + - due_date + - start_date + - end_date + - done + - priority + - labels + - project + - reminder + - ignore + type: string + x-enum-varnames: + - AttrTitle + - AttrDescription + - AttrDueDate + - AttrStartDate + - AttrEndDate + - AttrDone + - AttrPriority + - AttrLabels + - AttrProject + - AttrReminder + - AttrIgnore files.File: properties: created: @@ -2198,6 +2288,130 @@ paths: summary: Login tags: - auth + /migration/csv/detect: + put: + consumes: + - multipart/form-data + description: Analyzes a CSV file and returns auto-detected columns, delimiter, + quote character, and date format with suggested column mappings. + parameters: + - description: The CSV file to analyze + in: formData + name: import + required: true + type: file + produces: + - application/json + responses: + "200": + description: Detection results with suggested mappings + schema: + $ref: '#/definitions/csv.DetectionResult' + "400": + description: Invalid CSV file + schema: + $ref: '#/definitions/models.Message' + "500": + description: Internal server error + schema: + $ref: '#/definitions/models.Message' + security: + - JWTKeyAuth: [] + summary: Detect CSV structure + tags: + - migration + /migration/csv/migrate: + put: + consumes: + - multipart/form-data + description: Imports tasks from a CSV file into Vikunja with the provided configuration. + parameters: + - description: The CSV file to import + in: formData + name: import + required: true + type: file + - description: The import configuration JSON + in: formData + name: config + required: true + type: string + produces: + - application/json + responses: + "200": + description: A message telling you everything was migrated successfully. + schema: + $ref: '#/definitions/models.Message' + "400": + description: Invalid CSV file or configuration + schema: + $ref: '#/definitions/models.Message' + "500": + description: Internal server error + schema: + $ref: '#/definitions/models.Message' + security: + - JWTKeyAuth: [] + summary: Import CSV file + tags: + - migration + /migration/csv/preview: + put: + consumes: + - multipart/form-data + description: Generates a preview of the first 5 tasks that would be imported + with the given configuration. + parameters: + - description: The CSV file to preview + in: formData + name: import + required: true + type: file + - description: The import configuration JSON + in: formData + name: config + required: true + type: string + produces: + - application/json + responses: + "200": + description: Preview of tasks to import + schema: + $ref: '#/definitions/csv.PreviewResult' + "400": + description: Invalid CSV file or configuration + schema: + $ref: '#/definitions/models.Message' + "500": + description: Internal server error + schema: + $ref: '#/definitions/models.Message' + security: + - JWTKeyAuth: [] + summary: Preview CSV import + tags: + - migration + /migration/csv/status: + get: + description: Returns if the current user already did the CSV migration or not. + produces: + - application/json + responses: + "200": + description: The migration status + schema: + $ref: '#/definitions/migration.Status' + "500": + description: Internal server error + schema: + $ref: '#/definitions/models.Message' + security: + - JWTKeyAuth: [] + summary: Get CSV migration status + tags: + - migration /migration/microsoft-todo/auth: get: description: Returns the auth url where the user needs to get its auth code.