From 6b6a854a15188b9ec5f8d38eabd078c2bd9d0236 Mon Sep 17 00:00:00 2001 From: natalyatodorova Date: Wed, 11 Jun 2025 22:10:29 +0100 Subject: [PATCH 01/13] ODM-12373: add multipart/form-data to import job schema --- openapi/v1/job.yaml | 14 ++++++++++++++ openapi/v1/odmApi.yaml | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/openapi/v1/job.yaml b/openapi/v1/job.yaml index 6014bf02..b5478bf4 100644 --- a/openapi/v1/job.yaml +++ b/openapi/v1/job.yaml @@ -350,6 +350,20 @@ paths: application/json: schema: $ref: "#/components/schemas/ImportAFileRequest" + multipart/form-data: + schema: + type: object + properties: + studyAccession: + type: string + dataClass: + type: string + metadata: + type: string + format: binary + data: + type: string + format: binary required: false responses: "200": diff --git a/openapi/v1/odmApi.yaml b/openapi/v1/odmApi.yaml index 638f6879..56797b1d 100644 --- a/openapi/v1/odmApi.yaml +++ b/openapi/v1/odmApi.yaml @@ -16188,6 +16188,20 @@ paths: application/json: schema: $ref: "#/components/schemas/ImportAFileRequest" + multipart/form-data: + schema: + type: "object" + properties: + studyAccession: + type: "string" + dataClass: + type: "string" + metadata: + type: "string" + format: "binary" + data: + type: "string" + format: "binary" required: false responses: "200": From 3f14b924a3870a90fb30e49a260f50c8753b33ba Mon Sep 17 00:00:00 2001 From: natalyatodorova Date: Mon, 16 Jun 2025 16:32:16 +0100 Subject: [PATCH 02/13] ODM-12373: add multipart/form-data to import/samples --- openapi/v1/job.yaml | 11 +++++++++++ openapi/v1/odmApi.yaml | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/openapi/v1/job.yaml b/openapi/v1/job.yaml index b5478bf4..dd7c5ccf 100644 --- a/openapi/v1/job.yaml +++ b/openapi/v1/job.yaml @@ -228,6 +228,17 @@ paths: application/json: schema: $ref: "#/components/schemas/ImportMetadataRequest" + multipart/form-data: + schema: + type: object + properties: + studyAccession: + type: string + templateId: + type: string + metadata: + type: string + format: binary required: false responses: "200": diff --git a/openapi/v1/odmApi.yaml b/openapi/v1/odmApi.yaml index 56797b1d..64db098e 100644 --- a/openapi/v1/odmApi.yaml +++ b/openapi/v1/odmApi.yaml @@ -16077,6 +16077,17 @@ paths: application/json: schema: $ref: "#/components/schemas/ImportMetadataRequest" + multipart/form-data: + schema: + type: "object" + properties: + studyAccession: + type: "string" + templateId: + type: "string" + metadata: + type: "string" + format: "binary" required: false responses: "200": From 8fbdedaa4cac6d24aa51e51d8f5161fd5080c02b Mon Sep 17 00:00:00 2001 From: natalyatodorova Date: Tue, 17 Jun 2025 23:16:48 +0100 Subject: [PATCH 03/13] ODM-12373: add multipart/form-data to import/libraries, import/preparations --- openapi/v1/job.yaml | 18 +++++++++--------- openapi/v1/odmApi.yaml | 18 +++++++++--------- .../ImportMetadataFromMultipartRequest.yaml | 12 ++++++++++++ 3 files changed, 30 insertions(+), 18 deletions(-) create mode 100644 openapi/v1/schemas/job/ImportMetadataFromMultipartRequest.yaml diff --git a/openapi/v1/job.yaml b/openapi/v1/job.yaml index dd7c5ccf..be04ec57 100644 --- a/openapi/v1/job.yaml +++ b/openapi/v1/job.yaml @@ -146,6 +146,9 @@ paths: application/json: schema: $ref: "#/components/schemas/ImportMetadataRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" required: false responses: "200": @@ -187,6 +190,9 @@ paths: application/json: schema: $ref: "#/components/schemas/ImportMetadataRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" required: false responses: "200": @@ -230,15 +236,7 @@ paths: $ref: "#/components/schemas/ImportMetadataRequest" multipart/form-data: schema: - type: object - properties: - studyAccession: - type: string - templateId: - type: string - metadata: - type: string - format: binary + $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" required: false responses: "200": @@ -498,6 +496,8 @@ components: $ref: "./schemas/job/ExceptionTypeAndMessage.yaml" ImportMetadataRequest: $ref: "./schemas/job/ImportMetadataRequest.yaml" + ImportMetadataFromMultipartRequest: + $ref: "./schemas/job/ImportMetadataFromMultipartRequest.yaml" ImportSignalRunRequest: $ref: "./schemas/job/ImportSignalRunRequest.yaml" ImportExpressionSignalRunRequest: diff --git a/openapi/v1/odmApi.yaml b/openapi/v1/odmApi.yaml index 64db098e..4d44587c 100644 --- a/openapi/v1/odmApi.yaml +++ b/openapi/v1/odmApi.yaml @@ -16007,6 +16007,9 @@ paths: application/json: schema: $ref: "#/components/schemas/ImportMetadataRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" required: false responses: "200": @@ -16042,6 +16045,9 @@ paths: application/json: schema: $ref: "#/components/schemas/ImportMetadataRequest" + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" required: false responses: "200": @@ -16079,15 +16085,7 @@ paths: $ref: "#/components/schemas/ImportMetadataRequest" multipart/form-data: schema: - type: "object" - properties: - studyAccession: - type: "string" - templateId: - type: "string" - metadata: - type: "string" - format: "binary" + $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" required: false responses: "200": @@ -22169,6 +22167,8 @@ components: $ref: "./schemas/job/ExceptionTypeAndMessage.yaml" ImportMetadataRequest: $ref: "./schemas/job/ImportMetadataRequest.yaml" + ImportMetadataFromMultipartRequest: + $ref: "./schemas/job/ImportMetadataFromMultipartRequest.yaml" ImportSignalRunRequest: $ref: "./schemas/job/ImportSignalRunRequest.yaml" ImportExpressionSignalRunRequest: diff --git a/openapi/v1/schemas/job/ImportMetadataFromMultipartRequest.yaml b/openapi/v1/schemas/job/ImportMetadataFromMultipartRequest.yaml new file mode 100644 index 00000000..ad727127 --- /dev/null +++ b/openapi/v1/schemas/job/ImportMetadataFromMultipartRequest.yaml @@ -0,0 +1,12 @@ +properties: + studyAccession: + type: string + example: GSF1234567 + description: This parameter is needed for organisation files on S3 and a separate endpoint should be used for linkage to a study. + templateId: + example: GSF334953 + type: string + metadata: + type: string + format: binary +type: object From 490f3419b65dd9c6173bb508a99dd5cf218df4c0 Mon Sep 17 00:00:00 2001 From: natalyatodorova Date: Wed, 18 Jun 2025 12:09:06 +0100 Subject: [PATCH 04/13] ODM-12373: tmp change paths --- openapi/v1/job.yaml | 99 ++++++++++++++++++++++++++++++++++++++++-- openapi/v1/odmApi.yaml | 75 ++++++++++++++++++++++++++++++++ 2 files changed, 171 insertions(+), 3 deletions(-) diff --git a/openapi/v1/job.yaml b/openapi/v1/job.yaml index be04ec57..3e8d685d 100644 --- a/openapi/v1/job.yaml +++ b/openapi/v1/job.yaml @@ -164,6 +164,38 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body + /api/v1/jobs/import/libraries-from-file: + post: + description: |2 + + When job finishes successfully the following **result** object can be obtained using `GET /job/{id}/output` request: + + ``` + { + "groupAccession": "GSF1234567" + } + ``` + operationId: startImportLibrariesFromFile + requestBody: + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" + required: false + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Info" + description: successful operation + security: + - Access-token: [ ] + - Genestack-API-Token: [ ] + summary: Import a group of library metadata objects from a TSV file + tags: + - Data import jobs + x-codegen-request-body-name: body /api/v1/jobs/import/preparations: post: description: |2 @@ -208,6 +240,38 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body + /api/v1/jobs/import/preparations-from-file: + post: + description: |2 + + When job finishes successfully the following **result** object can be obtained using `GET /job/{id}/output` request: + + ``` + { + "groupAccession": "GSF1234567" + } + ``` + operationId: startImportPreparationsFromFile + requestBody: + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" + required: false + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Info" + description: successful operation + security: + - Access-token: [ ] + - Genestack-API-Token: [ ] + summary: Import a group of preparation metadata objects from a TSV file + tags: + - Data import jobs + x-codegen-request-body-name: body /api/v1/jobs/import/samples: post: description: |2 @@ -234,9 +298,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ImportMetadataRequest" - multipart/form-data: - schema: - $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" required: false responses: "200": @@ -252,6 +313,38 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body + /api/v1/jobs/import/samples-from-file: + post: + description: |2 + + When job finishes successfully the following **result** object can be obtained using `GET /job/{id}/output` request: + + ``` + { + "groupAccession": "GSF1234567" + } + ``` + operationId: startImportSamplesFromFile + requestBody: + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" + required: false + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Info" + description: successful operation + security: + - Access-token: [ ] + - Genestack-API-Token: [ ] + summary: Import a group of sample metadata objects from a TSV file + tags: + - Data import jobs + x-codegen-request-body-name: body /api/v1/jobs/import/study: post: description: |2 diff --git a/openapi/v1/odmApi.yaml b/openapi/v1/odmApi.yaml index 4d44587c..5eaf69f7 100644 --- a/openapi/v1/odmApi.yaml +++ b/openapi/v1/odmApi.yaml @@ -16025,6 +16025,32 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" + /api/v1/jobs/import/libraries-from-file: + post: + description: "\nWhen job finishes successfully the following **result** object\ + \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ + groupAccession\": \"GSF1234567\"\n}\n```\n" + operationId: "startImportLibrariesFromFile" + requestBody: + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" + required: false + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Info" + description: "successful operation" + security: + - Access-token: [] + - Genestack-API-Token: [] + summary: "Import a group of library metadata objects from a TSV file" + tags: + - "Data import jobs" + x-codegen-request-body-name: "body" /api/v1/jobs/import/preparations: post: description: "\nWhen job finishes successfully the following **result** object\ @@ -16063,6 +16089,32 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" + /api/v1/jobs/import/preparations-from-file: + post: + description: "\nWhen job finishes successfully the following **result** object\ + \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ + groupAccession\": \"GSF1234567\"\n}\n```\n" + operationId: "startImportPreparationsFromFile" + requestBody: + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" + required: false + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Info" + description: "successful operation" + security: + - Access-token: [] + - Genestack-API-Token: [] + summary: "Import a group of preparation metadata objects from a TSV file" + tags: + - "Data import jobs" + x-codegen-request-body-name: "body" /api/v1/jobs/import/samples: post: description: "\nWhen job finishes successfully the following **result** object\ @@ -16083,6 +16135,29 @@ paths: application/json: schema: $ref: "#/components/schemas/ImportMetadataRequest" + required: false + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Info" + description: "successful operation" + security: + - Access-token: [] + - Genestack-API-Token: [] + summary: "Import a group of sample metadata objects from a TSV file" + tags: + - "Data import jobs" + x-codegen-request-body-name: "body" + /api/v1/jobs/import/samples-from-file: + post: + description: "\nWhen job finishes successfully the following **result** object\ + \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ + groupAccession\": \"GSF1234567\"\n}\n```\n" + operationId: "startImportSamplesFromFile" + requestBody: + content: multipart/form-data: schema: $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" From aa29361c2683a13714ae33cedb02fcfbdee326f4 Mon Sep 17 00:00:00 2001 From: natalyatodorova Date: Wed, 18 Jun 2025 13:34:49 +0100 Subject: [PATCH 05/13] ODM-12373: tmp change paths2 --- openapi/v1/job.yaml | 6 +++--- openapi/v1/odmApi.yaml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/openapi/v1/job.yaml b/openapi/v1/job.yaml index 3e8d685d..88f00f17 100644 --- a/openapi/v1/job.yaml +++ b/openapi/v1/job.yaml @@ -164,7 +164,7 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body - /api/v1/jobs/import/libraries-from-file: + /api/v1/jobs/import/libraries/from-file: post: description: |2 @@ -240,7 +240,7 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body - /api/v1/jobs/import/preparations-from-file: + /api/v1/jobs/import/preparations/from-file: post: description: |2 @@ -313,7 +313,7 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body - /api/v1/jobs/import/samples-from-file: + /api/v1/jobs/import/samples/from-file: post: description: |2 diff --git a/openapi/v1/odmApi.yaml b/openapi/v1/odmApi.yaml index 5eaf69f7..e6fbdfa5 100644 --- a/openapi/v1/odmApi.yaml +++ b/openapi/v1/odmApi.yaml @@ -16025,7 +16025,7 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" - /api/v1/jobs/import/libraries-from-file: + /api/v1/jobs/import/libraries/from-file: post: description: "\nWhen job finishes successfully the following **result** object\ \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ @@ -16089,7 +16089,7 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" - /api/v1/jobs/import/preparations-from-file: + /api/v1/jobs/import/preparations/from-file: post: description: "\nWhen job finishes successfully the following **result** object\ \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ @@ -16150,7 +16150,7 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" - /api/v1/jobs/import/samples-from-file: + /api/v1/jobs/import/samples/from-file: post: description: "\nWhen job finishes successfully the following **result** object\ \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ From 50843c870a034a9efe2518040fbf967874b93e33 Mon Sep 17 00:00:00 2001 From: natalyatodorova Date: Wed, 18 Jun 2025 15:16:09 +0100 Subject: [PATCH 06/13] ODM-12373: update studyId param name and desc --- .../v1/schemas/job/ImportMetadataFromMultipartRequest.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/openapi/v1/schemas/job/ImportMetadataFromMultipartRequest.yaml b/openapi/v1/schemas/job/ImportMetadataFromMultipartRequest.yaml index ad727127..47b4d9f3 100644 --- a/openapi/v1/schemas/job/ImportMetadataFromMultipartRequest.yaml +++ b/openapi/v1/schemas/job/ImportMetadataFromMultipartRequest.yaml @@ -1,12 +1,15 @@ properties: - studyAccession: + studyId: type: string example: GSF1234567 - description: This parameter is needed for organisation files on S3 and a separate endpoint should be used for linkage to a study. + description: The ID (accession) of the study for organising files in the internal storage; linking to the target entity must be done through a separate endpoint. templateId: example: GSF334953 type: string metadata: type: string format: binary +required: + - studyId + - metadata type: object From ec3839b055c9cd5b5994dfb32f1608e0911050cf Mon Sep 17 00:00:00 2001 From: natalyatodorova Date: Wed, 18 Jun 2025 16:19:48 +0100 Subject: [PATCH 07/13] ODM-12373: add multipart/form-data to signals import --- openapi/v1/job.yaml | 104 ++++++++++++++++- openapi/v1/odmApi.yaml | 107 +++++++++++++++++- ...ortExpressionSignalRunFromFileRequest.yaml | 31 +++++ .../ImportSignalRunFomMultipartRequest.yaml | 21 ++++ 4 files changed, 257 insertions(+), 6 deletions(-) create mode 100644 openapi/v1/schemas/job/ImportExpressionSignalRunFromFileRequest.yaml create mode 100644 openapi/v1/schemas/job/ImportSignalRunFomMultipartRequest.yaml diff --git a/openapi/v1/job.yaml b/openapi/v1/job.yaml index 88f00f17..49b5d40c 100644 --- a/openapi/v1/job.yaml +++ b/openapi/v1/job.yaml @@ -75,6 +75,41 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body + /api/v1/jobs/import/expression/from-file: + post: + description: |- + ## Data + This operation necessitates the URL of a tabular data file, which must be either in TSV or GCT 1.2 format. Consult the user guide for a comprehensive understanding of the file content requirements. The endpoint is capable of handling uploads of any data type, which can be detailed in the parameters section, not only Gene Expression data. + + ## Metadata + It is also possible to optionally supply the URL of a metadata file. This metadata will be used as the original metadata for the created objects. The file is expected to contain single record with metadata describing the uploaded signal file. + ## Metadata file format + * Extension: any, `.zip` and `.gz` extensions are treated as archives and get decompressed + * Format: plain text, Tab-separated format (TSV), attribute names and record values are separated with tabs (`U+0009`), lines are separated with `CRLF` sequence (`U+000D U+000A`) + * Header: the first line is treated as table header that contains attribute names + * Records: the second line contains the values for each of the attributes described in the header line. Values represent single string or list of strings. List values are separated using the "pipe" `|` (`U+007C`) separator. Values are trimmed of whitespace before parsing, and a literal `|` (`U+007C`) character may be escaped by repeating it twice. + * Skip zeros in original data file: If this option is selected, zeros in the file will be ignored, thus conserving time and space. This option is particularly useful for handling very sparse data such as Single Cell data. + operationId: startImportExpressionFromFile + requestBody: + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportExpressionSignalRunFromFileRequest" + required: false + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Info" + description: successful operation + security: + - Access-token: [] + - Genestack-API-Token: [] + summary: Import any tabular data from TSV or GCT files + tags: + - Data import jobs + x-codegen-request-body-name: body /api/v1/jobs/import/flow-cytometry: post: description: |- @@ -120,6 +155,42 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body + /api/v1/jobs/import/flow-cytometry/from-file: + post: + description: |- + This operation necessitates the URL of a gated flow cytometry data file, which must be in FACS format. + Consult the user guide for a comprehensive understanding of the file content requirements. + For flow cytometry data in FCS format use expression endpoint. + + When job finishes successfully the following **result** object + can be obtained using `GET /job/{id}/output` request: + + ``` + { + "groupAccession": "GSF1234567" + } + ``` + operationId: startImportFlowCytometryFromFile + requestBody: + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportSignalRunFomMultipartRequest" + required: false + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Info" + description: successful operation + security: + - Access-token: [ ] + - Genestack-API-Token: [ ] + summary: Import flow-cytometry data and metadata from FACS and TSV files + tags: + - Data import jobs + x-codegen-request-body-name: body /api/v1/jobs/import/libraries: post: description: |2 @@ -222,9 +293,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ImportMetadataRequest" - multipart/form-data: - schema: - $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" required: false responses: "200": @@ -421,6 +489,32 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body + /api/v1/jobs/import/variant/from-file: + post: + description: "\nWhen job finishes successfully the following **result** object\ + \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ + groupAccession\": \"GSF1234567\"\n}\n```\n " + operationId: startImportVariantFromFile + requestBody: + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportSignalRunFomMultipartRequest" + required: false + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Info" + description: successful operation + security: + - Access-token: [ ] + - Genestack-API-Token: [ ] + summary: Import variation data and metadata from VCF and TSV files + tags: + - Data import jobs + x-codegen-request-body-name: body /api/v1/jobs/import/file: post: description: |- @@ -593,8 +687,12 @@ components: $ref: "./schemas/job/ImportMetadataFromMultipartRequest.yaml" ImportSignalRunRequest: $ref: "./schemas/job/ImportSignalRunRequest.yaml" + ImportSignalRunFomMultipartRequest: + $ref: "./schemas/job/ImportSignalRunFomMultipartRequest.yaml" ImportExpressionSignalRunRequest: $ref: "./schemas/job/ImportExpressionSignalRunRequest.yaml" + ImportExpressionSignalRunFromFileRequest: + $ref: "./schemas/job/ImportExpressionSignalRunFromFileRequest.yaml" ImportAFileRequest: $ref: "./schemas/job/ImportAFileRequest.yaml" Info: diff --git a/openapi/v1/odmApi.yaml b/openapi/v1/odmApi.yaml index e6fbdfa5..8e0908dc 100644 --- a/openapi/v1/odmApi.yaml +++ b/openapi/v1/odmApi.yaml @@ -15949,6 +15949,51 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" + /api/v1/jobs/import/expression/from-file: + post: + description: "## Data\n This operation necessitates the URL of a tabular data\ + \ file, which must be either in TSV or GCT 1.2 format. Consult the user guide\ + \ for a comprehensive understanding of the file content requirements. The\ + \ endpoint is capable of handling uploads of any data type, which can be detailed\ + \ in the parameters section, not only Gene Expression data.\n\n## Metadata\n\ + \ It is also possible to optionally supply the URL of a metadata file. This\ + \ metadata will be used as the original metadata for the created objects.\ + \ The file is expected to contain single record with metadata describing the\ + \ uploaded signal file.\n## Metadata file format\n * Extension: any, `.zip`\ + \ and `.gz` extensions are treated as archives and get decompressed\n * Format:\ + \ plain text, Tab-separated format (TSV), attribute names and record values\ + \ are separated with tabs (`U+0009`), lines are separated with `CRLF` sequence\ + \ (`U+000D U+000A`)\n * Header: the first line is treated as table header\ + \ that contains attribute names\n * Records: the second line contains the\ + \ values for each of the attributes described in the header line. Values\ + \ represent single string or list of strings. List values are separated using\ + \ the \"pipe\" `|` (`U+007C`) separator. Values are trimmed of whitespace\ + \ before parsing, and a literal `|` (`U+007C`) character may be escaped by\ + \ repeating it twice.\n * Skip zeros in original data file: If this option\ + \ is selected, zeros in the file will be ignored, thus conserving time and\ + \ space. This option is particularly useful for handling very sparse data\ + \ such as Single Cell data." + operationId: "startImportExpressionFromFile" + requestBody: + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportExpressionSignalRunFromFileRequest" + required: false + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Info" + description: "successful operation" + security: + - Access-token: [] + - Genestack-API-Token: [] + summary: "Import any tabular data from TSV or GCT files" + tags: + - "Data import jobs" + x-codegen-request-body-name: "body" /api/v1/jobs/import/flow-cytometry: post: description: "This operation necessitates the URL of a gated flow cytometry\ @@ -15987,6 +16032,35 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" + /api/v1/jobs/import/flow-cytometry/from-file: + post: + description: "This operation necessitates the URL of a gated flow cytometry\ + \ data file, which must be in FACS format.\nConsult the user guide for a comprehensive\ + \ understanding of the file content requirements.\nFor flow cytometry data\ + \ in FCS format use expression endpoint.\n\nWhen job finishes successfully\ + \ the following **result** object\ncan be obtained using `GET /job/{id}/output`\ + \ request:\n\n```\n{\n \"groupAccession\": \"GSF1234567\"\n}\n```" + operationId: "startImportFlowCytometryFromFile" + requestBody: + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportSignalRunFomMultipartRequest" + required: false + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Info" + description: "successful operation" + security: + - Access-token: [] + - Genestack-API-Token: [] + summary: "Import flow-cytometry data and metadata from FACS and TSV files" + tags: + - "Data import jobs" + x-codegen-request-body-name: "body" /api/v1/jobs/import/libraries: post: description: "\nWhen job finishes successfully the following **result** object\ @@ -16071,9 +16145,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ImportMetadataRequest" - multipart/form-data: - schema: - $ref: "#/components/schemas/ImportMetadataFromMultipartRequest" required: false responses: "200": @@ -16246,6 +16317,32 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" + /api/v1/jobs/import/variant/from-file: + post: + description: "\nWhen job finishes successfully the following **result** object\ + \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ + groupAccession\": \"GSF1234567\"\n}\n```\n " + operationId: "startImportVariantFromFile" + requestBody: + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportSignalRunFomMultipartRequest" + required: false + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Info" + description: "successful operation" + security: + - Access-token: [] + - Genestack-API-Token: [] + summary: "Import variation data and metadata from VCF and TSV files" + tags: + - "Data import jobs" + x-codegen-request-body-name: "body" /api/v1/jobs/import/file: post: description: "In order to import a file as an attachment to a study, please\ @@ -22246,8 +22343,12 @@ components: $ref: "./schemas/job/ImportMetadataFromMultipartRequest.yaml" ImportSignalRunRequest: $ref: "./schemas/job/ImportSignalRunRequest.yaml" + ImportSignalRunFomMultipartRequest: + $ref: "./schemas/job/ImportSignalRunFomMultipartRequest.yaml" ImportExpressionSignalRunRequest: $ref: "./schemas/job/ImportExpressionSignalRunRequest.yaml" + ImportExpressionSignalRunFromFileRequest: + $ref: "./schemas/job/ImportExpressionSignalRunFromFileRequest.yaml" ImportAFileRequest: $ref: "./schemas/job/ImportAFileRequest.yaml" Info: diff --git a/openapi/v1/schemas/job/ImportExpressionSignalRunFromFileRequest.yaml b/openapi/v1/schemas/job/ImportExpressionSignalRunFromFileRequest.yaml new file mode 100644 index 00000000..d5f182fc --- /dev/null +++ b/openapi/v1/schemas/job/ImportExpressionSignalRunFromFileRequest.yaml @@ -0,0 +1,31 @@ +allOf: +- $ref: "#/components/schemas/ImportSignalRunFomMultipartRequest" +properties: + numberOfFeatureAttributes: + description: Integer value that specifies the number of columns related to the + feature in the uploaded data frame, and indicates the starting position of the + sample data. This attribute is not needed if the uploaded file is in GCT format. + example: 5 + type: integer + dataClass: + description: "A mandatory parameter with the following possible values: `Bulk + transcriptomics`, `Single-cell transcriptomics`, `Differential abundance (FC, + pval, etc.)`, `Pathway analysis`, `Proteomics`, `Single-cell proteomics`, `Metabolomics`, + `Lipidomics`, `Epigenomics`, `DNA methylation`, `Chemoinformatics`, `Imaging features`, + `Gene panel data`, `Biomarker data`, `Physical measures`, `Blood counts`, `Other body + fluid counts`, `Nanopore`, `Flow Cytometry (FCS)`, `Document`, `Other`. \nIn case the parameter is not set + the dataClass is automatically defined as `Other`." + example: Proteomics + type: string + measurementSeparator: + description: 'This parameter is necessary when your file contains multiple measurement + columns for each sample, library, or preparation. It represents the character + that distinguishes the sample/library/preparation name from the measurement + name in column headers. Supported separators include `. , : ; _ - / \ |`, with + the allowance for multi-character separators.' + example: ':' + type: string +components: + schemas: + ImportSignalRunFomMultipartRequest: + $ref: "./ImportSignalRunFomMultipartRequest.yaml" diff --git a/openapi/v1/schemas/job/ImportSignalRunFomMultipartRequest.yaml b/openapi/v1/schemas/job/ImportSignalRunFomMultipartRequest.yaml new file mode 100644 index 00000000..ca06cd25 --- /dev/null +++ b/openapi/v1/schemas/job/ImportSignalRunFomMultipartRequest.yaml @@ -0,0 +1,21 @@ +properties: + studyId: + type: string + example: GSF1234567 + description: The ID (accession) of the study for organising files in the internal storage; linking to the target entity must be done through a separate endpoint. + metadata: + type: string + format: binary + data: + type: string + format: binary + templateId: + example: GSF334953 + type: string + previousVersion: + example: GSF334953 + type: string +required: + - studyId + - data +type: object From 630cb9ecf8732bc9019a01a05c88d0ebaf8b9f13 Mon Sep 17 00:00:00 2001 From: natalyatodorova Date: Fri, 20 Jun 2025 14:23:24 +0100 Subject: [PATCH 08/13] ODM-12373: tmp change paths3 --- openapi/v1/job.yaml | 66 ++++++++++++++----- openapi/v1/odmApi.yaml | 60 ++++++++++++----- .../job/ImportAFileFromMultipartRequest.yaml | 22 +++++++ ...ressionSignalRunFromMultipartRequest.yaml} | 0 4 files changed, 118 insertions(+), 30 deletions(-) create mode 100644 openapi/v1/schemas/job/ImportAFileFromMultipartRequest.yaml rename openapi/v1/schemas/job/{ImportExpressionSignalRunFromFileRequest.yaml => ImportExpressionSignalRunFromMultipartRequest.yaml} (100%) diff --git a/openapi/v1/job.yaml b/openapi/v1/job.yaml index 49b5d40c..4a4e73fa 100644 --- a/openapi/v1/job.yaml +++ b/openapi/v1/job.yaml @@ -94,7 +94,7 @@ paths: content: multipart/form-data: schema: - $ref: "#/components/schemas/ImportExpressionSignalRunFromFileRequest" + $ref: "#/components/schemas/ImportExpressionSignalRunFromMultipartRequest" required: false responses: "200": @@ -548,18 +548,7 @@ paths: $ref: "#/components/schemas/ImportAFileRequest" multipart/form-data: schema: - type: object - properties: - studyAccession: - type: string - dataClass: - type: string - metadata: - type: string - format: binary - data: - type: string - format: binary + $ref: "#/components/schemas/ImportAFileFromMultipartRequest" required: false responses: "200": @@ -575,6 +564,51 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body + /api/v1/jobs/import/file/from-file: + post: + description: |- + In order to import a file as an attachment to a study, please fill in the following fields: + + * `data` - a file to import as an attachment. + The file will be associated with a study and will be searchable by its name and metadata. + * `metadata` - an optional metadata file to be used as the original metadata + for the created objects. The file must contain a single record describing the uploaded attachment. + * `studyAccession` - an accession of a study the file will be associated with. + * `dataClass` - file data class with the following possible values: `Bulk + transcriptomics`, `Single-cell transcriptomics`, `Differential abundance (FC, + pval, etc.)`, `Pathway analysis`, `Proteomics`, `Single-cell proteomics`, `Metabolomics`, + `Lipidomics`, `Epigenomics`, `DNA methylation`, `Chemoinformatics`, `Imaging features`, + `Gene panel data`, `Biomarker data`, `Physical measures`, `Blood counts`, `Other body + fluid counts`, `Nanopore`, `Flow Cytometry (FCS)`, `Document`, `Other`. + + When job finishes successfully the following **result** object can be obtained using `GET /job/{id}/output` request: + + ``` + { + "accession": "GSF1234567" + } + ``` + operationId: startImportAFileFromFile + requestBody: + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportAFileFromMultipartRequest" + required: false + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Info" + description: successful operation + security: + - Access-token: [ ] + - Genestack-API-Token: [ ] + summary: Import file as an attachment + tags: + - Data import jobs + x-codegen-request-body-name: body /api/v1/jobs/{jobExecId}/info: get: operationId: info @@ -691,10 +725,12 @@ components: $ref: "./schemas/job/ImportSignalRunFomMultipartRequest.yaml" ImportExpressionSignalRunRequest: $ref: "./schemas/job/ImportExpressionSignalRunRequest.yaml" - ImportExpressionSignalRunFromFileRequest: - $ref: "./schemas/job/ImportExpressionSignalRunFromFileRequest.yaml" + ImportExpressionSignalRunFromMultipartRequest: + $ref: "./schemas/job/ImportExpressionSignalRunFromMultipartRequest.yaml" ImportAFileRequest: $ref: "./schemas/job/ImportAFileRequest.yaml" + ImportAFileFromMultipartRequest: + $ref: "./schemas/job/ImportAFileFromMultipartRequest.yaml" Info: $ref: "./schemas/job/Info.yaml" JobRuntimeError: diff --git a/openapi/v1/odmApi.yaml b/openapi/v1/odmApi.yaml index 8e0908dc..b2c4853e 100644 --- a/openapi/v1/odmApi.yaml +++ b/openapi/v1/odmApi.yaml @@ -15978,7 +15978,7 @@ paths: content: multipart/form-data: schema: - $ref: "#/components/schemas/ImportExpressionSignalRunFromFileRequest" + $ref: "#/components/schemas/ImportExpressionSignalRunFromMultipartRequest" required: false responses: "200": @@ -16371,18 +16371,46 @@ paths: $ref: "#/components/schemas/ImportAFileRequest" multipart/form-data: schema: - type: "object" - properties: - studyAccession: - type: "string" - dataClass: - type: "string" - metadata: - type: "string" - format: "binary" - data: - type: "string" - format: "binary" + $ref: "#/components/schemas/ImportAFileFromMultipartRequest" + required: false + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Info" + description: "successful operation" + security: + - Access-token: [] + - Genestack-API-Token: [] + summary: "Import file as an attachment" + tags: + - "Data import jobs" + x-codegen-request-body-name: "body" + /api/v1/jobs/import/file/from-file: + post: + description: "In order to import a file as an attachment to a study, please\ + \ fill in the following fields:\n\n* `data` - a file to import as an attachment.\n\ + The file will be associated with a study and will be searchable by its name\ + \ and metadata.\n* `metadata` - an optional metadata file to be used as the\ + \ original metadata\nfor the created objects. The file must contain a single\ + \ record describing the uploaded attachment.\n* `studyAccession` - an accession\ + \ of a study the file will be associated with.\n* `dataClass` - file data\ + \ class with the following possible values: `Bulk\ntranscriptomics`, `Single-cell\ + \ transcriptomics`, `Differential abundance (FC,\npval, etc.)`, `Pathway analysis`,\ + \ `Proteomics`, `Single-cell proteomics`, `Metabolomics`,\n`Lipidomics`, `Epigenomics`,\ + \ `DNA methylation`, `Chemoinformatics`, `Imaging features`,\n`Gene panel\ + \ data`, `Biomarker data`, `Physical measures`, `Blood counts`, `Other body\n\ + fluid counts`, `Nanopore`, `Flow Cytometry (FCS)`, `Document`, `Other`.\n\n\ + When job finishes successfully the following **result** object can be obtained\ + \ using `GET /job/{id}/output` request:\n\n```\n{\n \"accession\": \"GSF1234567\"\ + \n}\n```" + operationId: "startImportAFileFromFile" + requestBody: + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/ImportAFileFromMultipartRequest" required: false responses: "200": @@ -22347,10 +22375,12 @@ components: $ref: "./schemas/job/ImportSignalRunFomMultipartRequest.yaml" ImportExpressionSignalRunRequest: $ref: "./schemas/job/ImportExpressionSignalRunRequest.yaml" - ImportExpressionSignalRunFromFileRequest: - $ref: "./schemas/job/ImportExpressionSignalRunFromFileRequest.yaml" + ImportExpressionSignalRunFromMultipartRequest: + $ref: "./schemas/job/ImportExpressionSignalRunFromMultipartRequest.yaml" ImportAFileRequest: $ref: "./schemas/job/ImportAFileRequest.yaml" + ImportAFileFromMultipartRequest: + $ref: "./schemas/job/ImportAFileFromMultipartRequest.yaml" Info: $ref: "./schemas/job/Info.yaml" JobRuntimeError: diff --git a/openapi/v1/schemas/job/ImportAFileFromMultipartRequest.yaml b/openapi/v1/schemas/job/ImportAFileFromMultipartRequest.yaml new file mode 100644 index 00000000..55fc15c1 --- /dev/null +++ b/openapi/v1/schemas/job/ImportAFileFromMultipartRequest.yaml @@ -0,0 +1,22 @@ +properties: + metadata: + type: string + format: binary + description: The metadata file to be used as the original metadata for the created objects. The file must contain a single record describing the uploaded attachment. + data: + type: string + format: binary + description: A file to import as an attachment. The file will be associated with a study and will be searchable by its name and metadata. + studyAccession: + example: GSF334953 + type: string + description: An accession of a study the file will be associated with. + dataClass: + example: Proteomics + type: string + description: A mandatory parameter with the value from a limited set of values (see request description). +required: +- data +- studyAccession +- dataClass +type: object diff --git a/openapi/v1/schemas/job/ImportExpressionSignalRunFromFileRequest.yaml b/openapi/v1/schemas/job/ImportExpressionSignalRunFromMultipartRequest.yaml similarity index 100% rename from openapi/v1/schemas/job/ImportExpressionSignalRunFromFileRequest.yaml rename to openapi/v1/schemas/job/ImportExpressionSignalRunFromMultipartRequest.yaml From 7117444b106d3f0afdced0277319479c570cbda2 Mon Sep 17 00:00:00 2001 From: natalyatodorova Date: Sun, 22 Jun 2025 22:27:48 +0100 Subject: [PATCH 09/13] !!ODM-12373: tmp fix1 --- Earthfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Earthfile b/Earthfile index cf190b78..2aa2bbe3 100644 --- a/Earthfile +++ b/Earthfile @@ -83,7 +83,7 @@ r-api-client: # Gcc and other stuff for R source packages building RUN \ apt update && \ - apt install -y --allow-downgrades build-essential libssl-dev libcurl4-gnutls-dev curl libcom-err2=1.47.2-1+b1 && \ + apt install -y --allow-downgrades build-essential libssl-dev libcurl4-gnutls-dev curl && \ Rscript requirements.R COPY +build/generated generated From abaab7d782ae945e006cccae40b8cb4874d2759a Mon Sep 17 00:00:00 2001 From: natalyatodorova Date: Mon, 23 Jun 2025 11:18:58 +0100 Subject: [PATCH 10/13] Revert "!!ODM-12373: tmp fix1" This reverts commit 7117444b106d3f0afdced0277319479c570cbda2. --- Earthfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Earthfile b/Earthfile index 2aa2bbe3..cf190b78 100644 --- a/Earthfile +++ b/Earthfile @@ -83,7 +83,7 @@ r-api-client: # Gcc and other stuff for R source packages building RUN \ apt update && \ - apt install -y --allow-downgrades build-essential libssl-dev libcurl4-gnutls-dev curl && \ + apt install -y --allow-downgrades build-essential libssl-dev libcurl4-gnutls-dev curl libcom-err2=1.47.2-1+b1 && \ Rscript requirements.R COPY +build/generated generated From 5c68479b0104b6c7d5ef349e50fa792592dc5225 Mon Sep 17 00:00:00 2001 From: natalyatodorova Date: Mon, 23 Jun 2025 16:27:39 +0100 Subject: [PATCH 11/13] !!ODM-12373: rename endpoints to /multipart --- openapi/v1/job.yaml | 32 +++++++++++++++----------------- openapi/v1/odmApi.yaml | 32 +++++++++++++++----------------- 2 files changed, 30 insertions(+), 34 deletions(-) diff --git a/openapi/v1/job.yaml b/openapi/v1/job.yaml index 4a4e73fa..7cdd5c89 100644 --- a/openapi/v1/job.yaml +++ b/openapi/v1/job.yaml @@ -29,6 +29,7 @@ info: version: default-released tags: - name: Data import jobs +- name: Data import via direct file upload - name: Job operations paths: /api/v1/jobs/import/expression: @@ -75,7 +76,7 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body - /api/v1/jobs/import/expression/from-file: + /api/v1/jobs/import/expression/multipart: post: description: |- ## Data @@ -108,7 +109,7 @@ paths: - Genestack-API-Token: [] summary: Import any tabular data from TSV or GCT files tags: - - Data import jobs + - Data import via direct file upload x-codegen-request-body-name: body /api/v1/jobs/import/flow-cytometry: post: @@ -155,7 +156,7 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body - /api/v1/jobs/import/flow-cytometry/from-file: + /api/v1/jobs/import/flow-cytometry/multipart: post: description: |- This operation necessitates the URL of a gated flow cytometry data file, which must be in FACS format. @@ -189,7 +190,7 @@ paths: - Genestack-API-Token: [ ] summary: Import flow-cytometry data and metadata from FACS and TSV files tags: - - Data import jobs + - Data import via direct file upload x-codegen-request-body-name: body /api/v1/jobs/import/libraries: post: @@ -235,7 +236,7 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body - /api/v1/jobs/import/libraries/from-file: + /api/v1/jobs/import/libraries/multipart: post: description: |2 @@ -265,7 +266,7 @@ paths: - Genestack-API-Token: [ ] summary: Import a group of library metadata objects from a TSV file tags: - - Data import jobs + - Data import via direct file upload x-codegen-request-body-name: body /api/v1/jobs/import/preparations: post: @@ -308,7 +309,7 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body - /api/v1/jobs/import/preparations/from-file: + /api/v1/jobs/import/preparations/multipart: post: description: |2 @@ -338,7 +339,7 @@ paths: - Genestack-API-Token: [ ] summary: Import a group of preparation metadata objects from a TSV file tags: - - Data import jobs + - Data import via direct file upload x-codegen-request-body-name: body /api/v1/jobs/import/samples: post: @@ -381,7 +382,7 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body - /api/v1/jobs/import/samples/from-file: + /api/v1/jobs/import/samples/multipart: post: description: |2 @@ -411,7 +412,7 @@ paths: - Genestack-API-Token: [ ] summary: Import a group of sample metadata objects from a TSV file tags: - - Data import jobs + - Data import via direct file upload x-codegen-request-body-name: body /api/v1/jobs/import/study: post: @@ -489,7 +490,7 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body - /api/v1/jobs/import/variant/from-file: + /api/v1/jobs/import/variant/multipart: post: description: "\nWhen job finishes successfully the following **result** object\ \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ @@ -513,7 +514,7 @@ paths: - Genestack-API-Token: [ ] summary: Import variation data and metadata from VCF and TSV files tags: - - Data import jobs + - Data import via direct file upload x-codegen-request-body-name: body /api/v1/jobs/import/file: post: @@ -546,9 +547,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ImportAFileRequest" - multipart/form-data: - schema: - $ref: "#/components/schemas/ImportAFileFromMultipartRequest" required: false responses: "200": @@ -564,7 +562,7 @@ paths: tags: - Data import jobs x-codegen-request-body-name: body - /api/v1/jobs/import/file/from-file: + /api/v1/jobs/import/file/multipart: post: description: |- In order to import a file as an attachment to a study, please fill in the following fields: @@ -607,7 +605,7 @@ paths: - Genestack-API-Token: [ ] summary: Import file as an attachment tags: - - Data import jobs + - Data import via direct file upload x-codegen-request-body-name: body /api/v1/jobs/{jobExecId}/info: get: diff --git a/openapi/v1/odmApi.yaml b/openapi/v1/odmApi.yaml index b2c4853e..55d64e1b 100644 --- a/openapi/v1/odmApi.yaml +++ b/openapi/v1/odmApi.yaml @@ -43,6 +43,7 @@ tags: - name: "Study integration as User" - name: "Variant integration as User" - name: "Data import jobs" +- name: "Data import via direct file upload" - name: "Job operations" - name: "Library SPoT as Curator" - name: "Library SPoT as User" @@ -15949,7 +15950,7 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" - /api/v1/jobs/import/expression/from-file: + /api/v1/jobs/import/expression/multipart: post: description: "## Data\n This operation necessitates the URL of a tabular data\ \ file, which must be either in TSV or GCT 1.2 format. Consult the user guide\ @@ -15992,7 +15993,7 @@ paths: - Genestack-API-Token: [] summary: "Import any tabular data from TSV or GCT files" tags: - - "Data import jobs" + - "Data import via direct file upload" x-codegen-request-body-name: "body" /api/v1/jobs/import/flow-cytometry: post: @@ -16032,7 +16033,7 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" - /api/v1/jobs/import/flow-cytometry/from-file: + /api/v1/jobs/import/flow-cytometry/multipart: post: description: "This operation necessitates the URL of a gated flow cytometry\ \ data file, which must be in FACS format.\nConsult the user guide for a comprehensive\ @@ -16059,7 +16060,7 @@ paths: - Genestack-API-Token: [] summary: "Import flow-cytometry data and metadata from FACS and TSV files" tags: - - "Data import jobs" + - "Data import via direct file upload" x-codegen-request-body-name: "body" /api/v1/jobs/import/libraries: post: @@ -16099,7 +16100,7 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" - /api/v1/jobs/import/libraries/from-file: + /api/v1/jobs/import/libraries/multipart: post: description: "\nWhen job finishes successfully the following **result** object\ \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ @@ -16123,7 +16124,7 @@ paths: - Genestack-API-Token: [] summary: "Import a group of library metadata objects from a TSV file" tags: - - "Data import jobs" + - "Data import via direct file upload" x-codegen-request-body-name: "body" /api/v1/jobs/import/preparations: post: @@ -16160,7 +16161,7 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" - /api/v1/jobs/import/preparations/from-file: + /api/v1/jobs/import/preparations/multipart: post: description: "\nWhen job finishes successfully the following **result** object\ \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ @@ -16184,7 +16185,7 @@ paths: - Genestack-API-Token: [] summary: "Import a group of preparation metadata objects from a TSV file" tags: - - "Data import jobs" + - "Data import via direct file upload" x-codegen-request-body-name: "body" /api/v1/jobs/import/samples: post: @@ -16221,7 +16222,7 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" - /api/v1/jobs/import/samples/from-file: + /api/v1/jobs/import/samples/multipart: post: description: "\nWhen job finishes successfully the following **result** object\ \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ @@ -16245,7 +16246,7 @@ paths: - Genestack-API-Token: [] summary: "Import a group of sample metadata objects from a TSV file" tags: - - "Data import jobs" + - "Data import via direct file upload" x-codegen-request-body-name: "body" /api/v1/jobs/import/study: post: @@ -16317,7 +16318,7 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" - /api/v1/jobs/import/variant/from-file: + /api/v1/jobs/import/variant/multipart: post: description: "\nWhen job finishes successfully the following **result** object\ \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ @@ -16341,7 +16342,7 @@ paths: - Genestack-API-Token: [] summary: "Import variation data and metadata from VCF and TSV files" tags: - - "Data import jobs" + - "Data import via direct file upload" x-codegen-request-body-name: "body" /api/v1/jobs/import/file: post: @@ -16369,9 +16370,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ImportAFileRequest" - multipart/form-data: - schema: - $ref: "#/components/schemas/ImportAFileFromMultipartRequest" required: false responses: "200": @@ -16387,7 +16385,7 @@ paths: tags: - "Data import jobs" x-codegen-request-body-name: "body" - /api/v1/jobs/import/file/from-file: + /api/v1/jobs/import/file/multipart: post: description: "In order to import a file as an attachment to a study, please\ \ fill in the following fields:\n\n* `data` - a file to import as an attachment.\n\ @@ -16424,7 +16422,7 @@ paths: - Genestack-API-Token: [] summary: "Import file as an attachment" tags: - - "Data import jobs" + - "Data import via direct file upload" x-codegen-request-body-name: "body" /api/v1/jobs/{jobExecId}/info: get: From 42cebf74610f92f6d666c73d405ce10c6ad64766 Mon Sep 17 00:00:00 2001 From: natalyatodorova Date: Mon, 23 Jun 2025 16:38:23 +0100 Subject: [PATCH 12/13] !!ODM-12373: fix operatioId --- openapi/v1/job.yaml | 14 +++++++------- openapi/v1/odmApi.yaml | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/openapi/v1/job.yaml b/openapi/v1/job.yaml index 7cdd5c89..99a992c0 100644 --- a/openapi/v1/job.yaml +++ b/openapi/v1/job.yaml @@ -90,7 +90,7 @@ paths: * Header: the first line is treated as table header that contains attribute names * Records: the second line contains the values for each of the attributes described in the header line. Values represent single string or list of strings. List values are separated using the "pipe" `|` (`U+007C`) separator. Values are trimmed of whitespace before parsing, and a literal `|` (`U+007C`) character may be escaped by repeating it twice. * Skip zeros in original data file: If this option is selected, zeros in the file will be ignored, thus conserving time and space. This option is particularly useful for handling very sparse data such as Single Cell data. - operationId: startImportExpressionFromFile + operationId: startImportExpressionMultipart requestBody: content: multipart/form-data: @@ -171,7 +171,7 @@ paths: "groupAccession": "GSF1234567" } ``` - operationId: startImportFlowCytometryFromFile + operationId: startImportFlowCytometryMultipart requestBody: content: multipart/form-data: @@ -247,7 +247,7 @@ paths: "groupAccession": "GSF1234567" } ``` - operationId: startImportLibrariesFromFile + operationId: startImportLibrariesMultipart requestBody: content: multipart/form-data: @@ -320,7 +320,7 @@ paths: "groupAccession": "GSF1234567" } ``` - operationId: startImportPreparationsFromFile + operationId: startImportPreparationsMultipart requestBody: content: multipart/form-data: @@ -393,7 +393,7 @@ paths: "groupAccession": "GSF1234567" } ``` - operationId: startImportSamplesFromFile + operationId: startImportSamplesMultipart requestBody: content: multipart/form-data: @@ -495,7 +495,7 @@ paths: description: "\nWhen job finishes successfully the following **result** object\ \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ groupAccession\": \"GSF1234567\"\n}\n```\n " - operationId: startImportVariantFromFile + operationId: startImportVariantMultipart requestBody: content: multipart/form-data: @@ -586,7 +586,7 @@ paths: "accession": "GSF1234567" } ``` - operationId: startImportAFileFromFile + operationId: startImportAFileMultipart requestBody: content: multipart/form-data: diff --git a/openapi/v1/odmApi.yaml b/openapi/v1/odmApi.yaml index 55d64e1b..197d15eb 100644 --- a/openapi/v1/odmApi.yaml +++ b/openapi/v1/odmApi.yaml @@ -15974,7 +15974,7 @@ paths: \ is selected, zeros in the file will be ignored, thus conserving time and\ \ space. This option is particularly useful for handling very sparse data\ \ such as Single Cell data." - operationId: "startImportExpressionFromFile" + operationId: "startImportExpressionMultipart" requestBody: content: multipart/form-data: @@ -16041,7 +16041,7 @@ paths: \ in FCS format use expression endpoint.\n\nWhen job finishes successfully\ \ the following **result** object\ncan be obtained using `GET /job/{id}/output`\ \ request:\n\n```\n{\n \"groupAccession\": \"GSF1234567\"\n}\n```" - operationId: "startImportFlowCytometryFromFile" + operationId: "startImportFlowCytometryMultipart" requestBody: content: multipart/form-data: @@ -16105,7 +16105,7 @@ paths: description: "\nWhen job finishes successfully the following **result** object\ \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ groupAccession\": \"GSF1234567\"\n}\n```\n" - operationId: "startImportLibrariesFromFile" + operationId: "startImportLibrariesMultipart" requestBody: content: multipart/form-data: @@ -16166,7 +16166,7 @@ paths: description: "\nWhen job finishes successfully the following **result** object\ \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ groupAccession\": \"GSF1234567\"\n}\n```\n" - operationId: "startImportPreparationsFromFile" + operationId: "startImportPreparationsMultipart" requestBody: content: multipart/form-data: @@ -16227,7 +16227,7 @@ paths: description: "\nWhen job finishes successfully the following **result** object\ \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ groupAccession\": \"GSF1234567\"\n}\n```\n" - operationId: "startImportSamplesFromFile" + operationId: "startImportSamplesMultipart" requestBody: content: multipart/form-data: @@ -16323,7 +16323,7 @@ paths: description: "\nWhen job finishes successfully the following **result** object\ \ can be obtained using `GET /job/{id}/output` request:\n\n```\n{\n \"\ groupAccession\": \"GSF1234567\"\n}\n```\n " - operationId: "startImportVariantFromFile" + operationId: "startImportVariantMultipart" requestBody: content: multipart/form-data: @@ -16403,7 +16403,7 @@ paths: When job finishes successfully the following **result** object can be obtained\ \ using `GET /job/{id}/output` request:\n\n```\n{\n \"accession\": \"GSF1234567\"\ \n}\n```" - operationId: "startImportAFileFromFile" + operationId: "startImportAFileMultipart" requestBody: content: multipart/form-data: From 2ae014c7d45c60b391ea781fa8778f700e94f839 Mon Sep 17 00:00:00 2001 From: natalyatodorova Date: Tue, 24 Jun 2025 12:22:14 +0100 Subject: [PATCH 13/13] ODM-12373: fix descriptions --- openapi/v1/job.yaml | 14 +++++++------- openapi/v1/odmApi.yaml | 20 +++++++++++++------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/openapi/v1/job.yaml b/openapi/v1/job.yaml index 99a992c0..cf09d79f 100644 --- a/openapi/v1/job.yaml +++ b/openapi/v1/job.yaml @@ -107,7 +107,7 @@ paths: security: - Access-token: [] - Genestack-API-Token: [] - summary: Import any tabular data from TSV or GCT files + summary: Import any tabular data from TSV or GCT files via multipart/form-data upload tags: - Data import via direct file upload x-codegen-request-body-name: body @@ -188,7 +188,7 @@ paths: security: - Access-token: [ ] - Genestack-API-Token: [ ] - summary: Import flow-cytometry data and metadata from FACS and TSV files + summary: Import flow-cytometry data and metadata from FACS and TSV files via multipart/form-data upload tags: - Data import via direct file upload x-codegen-request-body-name: body @@ -264,7 +264,7 @@ paths: security: - Access-token: [ ] - Genestack-API-Token: [ ] - summary: Import a group of library metadata objects from a TSV file + summary: Import a group of library metadata objects from a TSV file via multipart/form-data upload tags: - Data import via direct file upload x-codegen-request-body-name: body @@ -337,7 +337,7 @@ paths: security: - Access-token: [ ] - Genestack-API-Token: [ ] - summary: Import a group of preparation metadata objects from a TSV file + summary: Import a group of preparation metadata objects from a TSV file via multipart/form-data upload tags: - Data import via direct file upload x-codegen-request-body-name: body @@ -410,7 +410,7 @@ paths: security: - Access-token: [ ] - Genestack-API-Token: [ ] - summary: Import a group of sample metadata objects from a TSV file + summary: Import a group of sample metadata objects from a TSV file via multipart/form-data upload tags: - Data import via direct file upload x-codegen-request-body-name: body @@ -512,7 +512,7 @@ paths: security: - Access-token: [ ] - Genestack-API-Token: [ ] - summary: Import variation data and metadata from VCF and TSV files + summary: Import variation data and metadata from VCF and TSV files via multipart/form-data upload tags: - Data import via direct file upload x-codegen-request-body-name: body @@ -603,7 +603,7 @@ paths: security: - Access-token: [ ] - Genestack-API-Token: [ ] - summary: Import file as an attachment + summary: Import file as an attachment via multipart/form-data upload tags: - Data import via direct file upload x-codegen-request-body-name: body diff --git a/openapi/v1/odmApi.yaml b/openapi/v1/odmApi.yaml index 197d15eb..68fe26bd 100644 --- a/openapi/v1/odmApi.yaml +++ b/openapi/v1/odmApi.yaml @@ -15991,7 +15991,8 @@ paths: security: - Access-token: [] - Genestack-API-Token: [] - summary: "Import any tabular data from TSV or GCT files" + summary: "Import any tabular data from TSV or GCT files via multipart/form-data\ + \ upload" tags: - "Data import via direct file upload" x-codegen-request-body-name: "body" @@ -16058,7 +16059,8 @@ paths: security: - Access-token: [] - Genestack-API-Token: [] - summary: "Import flow-cytometry data and metadata from FACS and TSV files" + summary: "Import flow-cytometry data and metadata from FACS and TSV files via\ + \ multipart/form-data upload" tags: - "Data import via direct file upload" x-codegen-request-body-name: "body" @@ -16122,7 +16124,8 @@ paths: security: - Access-token: [] - Genestack-API-Token: [] - summary: "Import a group of library metadata objects from a TSV file" + summary: "Import a group of library metadata objects from a TSV file via multipart/form-data\ + \ upload" tags: - "Data import via direct file upload" x-codegen-request-body-name: "body" @@ -16183,7 +16186,8 @@ paths: security: - Access-token: [] - Genestack-API-Token: [] - summary: "Import a group of preparation metadata objects from a TSV file" + summary: "Import a group of preparation metadata objects from a TSV file via\ + \ multipart/form-data upload" tags: - "Data import via direct file upload" x-codegen-request-body-name: "body" @@ -16244,7 +16248,8 @@ paths: security: - Access-token: [] - Genestack-API-Token: [] - summary: "Import a group of sample metadata objects from a TSV file" + summary: "Import a group of sample metadata objects from a TSV file via multipart/form-data\ + \ upload" tags: - "Data import via direct file upload" x-codegen-request-body-name: "body" @@ -16340,7 +16345,8 @@ paths: security: - Access-token: [] - Genestack-API-Token: [] - summary: "Import variation data and metadata from VCF and TSV files" + summary: "Import variation data and metadata from VCF and TSV files via multipart/form-data\ + \ upload" tags: - "Data import via direct file upload" x-codegen-request-body-name: "body" @@ -16420,7 +16426,7 @@ paths: security: - Access-token: [] - Genestack-API-Token: [] - summary: "Import file as an attachment" + summary: "Import file as an attachment via multipart/form-data upload" tags: - "Data import via direct file upload" x-codegen-request-body-name: "body"