diff --git a/.$model.drawio.bkp b/.$model.drawio.bkp
new file mode 100644
index 0000000..31ee13a
--- /dev/null
+++ b/.$model.drawio.bkp
@@ -0,0 +1,847 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/api_docs.json b/api_docs.json
new file mode 100644
index 0000000..89e632a
--- /dev/null
+++ b/api_docs.json
@@ -0,0 +1,4383 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "description": "A web service for supplying JSON formatted data to cBioPortal clients. Please note that this API is currently in beta and subject to change.",
+ "version": "1.0 (beta). Backwards compatibility will be maintained (after 1.0 release)",
+ "title": "cBioPortal web Public API [Beta]",
+ "contact": {
+ "name": "cBioPortal",
+ "url": "https://www.cbioportal.org",
+ "email": "cbioportal@googlegroups.com"
+ },
+ "license": {
+ "name": "License",
+ "url": "https://github.com/cBioPortal/cbioportal/blob/master/LICENSE"
+ }
+ },
+ "host": "www.cbioportal.org",
+ "basePath": "/api",
+ "tags": [
+ { "name": "Cancer Types" },
+ { "name": "Studies" },
+ { "name": "Patients" },
+ { "name": "Samples" },
+ { "name": "Sample Lists" },
+ { "name": "Clinical Attributes" },
+ { "name": "Clinical Data" },
+ { "name": "Molecular Data" },
+ { "name": "Molecular Profiles" },
+ { "name": "Mutations" },
+ { "name": "Discrete Copy Number Alterations" },
+ { "name": "Copy Number Segments" },
+ { "name": "Genes" },
+ { "name": "Gene Panels" },
+ { "name": "Generic Assays" },
+ { "name": "Generic Assay Data" },
+ { "name": "Info" },
+ { "name": "Gene Panel Data", "description": " " },
+ {
+ "name": "Server running status",
+ "description": "This end point does not require authentication"
+ },
+ { "name": "Treatments", "description": " " }
+ ],
+ "paths": {
+ "/cancer-types": {
+ "get": {
+ "tags": ["Cancer Types"],
+ "summary": "Get all cancer types",
+ "operationId": "getAllCancerTypesUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "cancerTypeId",
+ "dedicatedColor",
+ "name",
+ "parent",
+ "shortName"
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/TypeOfCancer" }
+ }
+ }
+ }
+ }
+ },
+ "/cancer-types/{cancerTypeId}": {
+ "get": {
+ "tags": ["Cancer Types"],
+ "summary": "Get a cancer type",
+ "operationId": "getCancerTypeUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "cancerTypeId",
+ "in": "path",
+ "description": "Cancer Type ID e.g. acc",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": { "$ref": "#/definitions/TypeOfCancer" }
+ }
+ }
+ }
+ },
+ "/clinical-attributes": {
+ "get": {
+ "tags": ["Clinical Attributes"],
+ "summary": "Get all clinical attributes",
+ "operationId": "getAllClinicalAttributesUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "clinicalAttributeId",
+ "datatype",
+ "description",
+ "displayName",
+ "patientAttribute",
+ "priority",
+ "studyId"
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/ClinicalAttribute" }
+ }
+ }
+ }
+ }
+ },
+ "/clinical-attributes/fetch": {
+ "post": {
+ "tags": ["Clinical Attributes"],
+ "summary": "Fetch clinical attributes",
+ "operationId": "fetchClinicalAttributesUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "in": "body",
+ "name": "studyIds",
+ "description": "List of Study IDs",
+ "required": true,
+ "schema": { "type": "array", "items": { "type": "string" } }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/ClinicalAttribute" }
+ }
+ }
+ }
+ }
+ },
+ "/clinical-data/fetch": {
+ "post": {
+ "tags": ["Clinical Data"],
+ "summary": "Fetch clinical data by patient IDs or sample IDs (all studies)",
+ "operationId": "fetchClinicalDataUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "clinicalDataMultiStudyFilter",
+ "description": "List of patient or sample identifiers and attribute IDs",
+ "required": true,
+ "schema": { "$ref": "#/definitions/ClinicalDataMultiStudyFilter" }
+ },
+ {
+ "name": "clinicalDataType",
+ "in": "query",
+ "description": "Type of the clinical data",
+ "required": false,
+ "type": "string",
+ "default": "SAMPLE",
+ "enum": ["PATIENT", "SAMPLE"]
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/ClinicalData" }
+ }
+ }
+ }
+ }
+ },
+ "/copy-number-segments/fetch": {
+ "post": {
+ "tags": ["Copy Number Segments"],
+ "summary": "Fetch copy number segments by sample ID",
+ "operationId": "fetchCopyNumberSegmentsUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "chromosome",
+ "in": "query",
+ "description": "Chromosome",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "in": "body",
+ "name": "sampleIdentifiers",
+ "description": "List of sample identifiers",
+ "required": true,
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/SampleIdentifier" }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/CopyNumberSeg" }
+ }
+ }
+ }
+ }
+ },
+ "/gene-panel-data/fetch": {
+ "post": {
+ "tags": ["Gene Panel Data"],
+ "summary": "Fetch gene panel data",
+ "operationId": "fetchGenePanelDataInMultipleMolecularProfilesUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "genePanelDataMultipleStudyFilter",
+ "description": "Gene panel data filter object",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/GenePanelDataMultipleStudyFilter"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GenePanelData" }
+ }
+ }
+ }
+ }
+ },
+ "/gene-panels": {
+ "get": {
+ "tags": ["Gene Panels"],
+ "summary": "Get all gene panels",
+ "operationId": "getAllGenePanelsUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": ["description", "genePanelId"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GenePanel" }
+ }
+ }
+ }
+ }
+ },
+ "/gene-panels/fetch": {
+ "post": {
+ "tags": ["Gene Panels"],
+ "summary": "Get gene panel",
+ "operationId": "fetchGenePanelsUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "genePanelIds",
+ "description": "List of Gene Panel IDs",
+ "required": true,
+ "schema": { "type": "array", "items": { "type": "string" } }
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GenePanel" }
+ }
+ }
+ }
+ }
+ },
+ "/gene-panels/{genePanelId}": {
+ "get": {
+ "tags": ["Gene Panels"],
+ "summary": "Get gene panel",
+ "operationId": "getGenePanelUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "genePanelId",
+ "in": "path",
+ "description": "Gene Panel ID e.g. NSCLC_UNITO_2016_PANEL",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": { "$ref": "#/definitions/GenePanel" }
+ }
+ }
+ }
+ },
+ "/generic-assay-data/{molecularProfileId}/generic-assay/{genericAssayStableId}": {
+ "get": {
+ "tags": ["Generic Assay Data"],
+ "summary": "Get generic_assay_data in a molecular profile",
+ "operationId": "getGenericAssayDataInMolecularProfileUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "genericAssayStableId",
+ "in": "path",
+ "description": "Generic Assay stable ID",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "molecularProfileId",
+ "in": "path",
+ "description": "Molecular Profile ID",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GenericAssayData" }
+ }
+ }
+ }
+ }
+ },
+ "/generic-assay-meta/generic-assay/{genericAssayStableId}": {
+ "get": {
+ "tags": ["Generic Assays"],
+ "summary": "Fetch meta data for generic-assay by ID",
+ "operationId": "getGenericAssayMeta_gaUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "genericAssayStableId",
+ "in": "path",
+ "description": "Generic Assay stable ID",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GenericAssayMeta" }
+ }
+ }
+ }
+ }
+ },
+ "/generic-assay-meta/{molecularProfileId}": {
+ "get": {
+ "tags": ["Generic Assays"],
+ "summary": "Fetch meta data for generic-assay by ID",
+ "operationId": "getGenericAssayMetaUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "molecularProfileId",
+ "in": "path",
+ "description": "Molecular Profile ID",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GenericAssayMeta" }
+ }
+ }
+ }
+ }
+ },
+ "/generic_assay_data/fetch": {
+ "post": {
+ "tags": ["Generic Assay Data"],
+ "summary": "Fetch generic_assay_data",
+ "operationId": "fetchGenericAssayDataInMultipleMolecularProfilesUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "genericAssayDataMultipleStudyFilter",
+ "description": "List of Molecular Profile ID and Sample ID pairs or List of MolecularProfile IDs and Generic Assay IDs",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/GenericAssayDataMultipleStudyFilter"
+ }
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GenericAssayData" }
+ }
+ }
+ }
+ }
+ },
+ "/generic_assay_data/{molecularProfileId}/fetch": {
+ "post": {
+ "tags": ["Generic Assay Data"],
+ "summary": "fetch generic_assay_data in a molecular profile",
+ "operationId": "fetchGenericAssayDataInMolecularProfileUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "genericAssayDataFilter",
+ "description": "List of Sample IDs/Sample List ID and Generic Assay IDs",
+ "required": true,
+ "schema": { "$ref": "#/definitions/GenericAssayFilter" }
+ },
+ {
+ "name": "molecularProfileId",
+ "in": "path",
+ "description": "Molecular Profile ID",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GenericAssayData" }
+ }
+ }
+ }
+ }
+ },
+ "/generic_assay_meta/fetch": {
+ "post": {
+ "tags": ["Generic Assays"],
+ "summary": "Fetch meta data for generic-assay by ID",
+ "operationId": "fetchGenericAssayMetaUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "genericAssayMetaFilter",
+ "description": "List of Molecular Profile ID or List of Stable ID",
+ "required": true,
+ "schema": { "$ref": "#/definitions/GenericAssayMetaFilter" }
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GenericAssayMeta" }
+ }
+ }
+ }
+ }
+ },
+ "/genes": {
+ "get": {
+ "tags": ["Genes"],
+ "summary": "Get all genes",
+ "operationId": "getAllGenesUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "alias",
+ "in": "query",
+ "description": "Alias of the gene",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "keyword",
+ "in": "query",
+ "description": "Search keyword that applies to hugo gene symbol of the genes",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "cytoband",
+ "entrezGeneId",
+ "hugoGeneSymbol",
+ "length",
+ "type"
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Gene" }
+ }
+ }
+ }
+ }
+ },
+ "/genes/fetch": {
+ "post": {
+ "tags": ["Genes"],
+ "summary": "Fetch genes by ID",
+ "operationId": "fetchGenesUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "geneIds",
+ "description": "List of Entrez Gene IDs or Hugo Gene Symbols",
+ "required": true,
+ "schema": { "type": "array", "items": { "type": "string" } }
+ },
+ {
+ "name": "geneIdType",
+ "in": "query",
+ "description": "Type of gene ID",
+ "required": false,
+ "type": "string",
+ "default": "ENTREZ_GENE_ID",
+ "enum": ["ENTREZ_GENE_ID", "HUGO_GENE_SYMBOL"]
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Gene" }
+ }
+ }
+ }
+ }
+ },
+ "/genes/{geneId}": {
+ "get": {
+ "tags": ["Genes"],
+ "summary": "Get a gene",
+ "operationId": "getGeneUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "geneId",
+ "in": "path",
+ "description": "Entrez Gene ID or Hugo Gene Symbol e.g. 1 or A1BG",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": { "$ref": "#/definitions/Gene" }
+ }
+ }
+ }
+ },
+ "/genes/{geneId}/aliases": {
+ "get": {
+ "tags": ["Genes"],
+ "summary": "Get aliases of a gene",
+ "operationId": "getAliasesOfGeneUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "geneId",
+ "in": "path",
+ "description": "Entrez Gene ID or Hugo Gene Symbol e.g. 1 or A1BG",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": { "type": "array", "items": { "type": "string" } }
+ }
+ }
+ }
+ },
+ "/health": {
+ "get": {
+ "tags": ["Server running status"],
+ "summary": "Get the running status of the server",
+ "operationId": "getServerStatusUsingGET",
+ "produces": ["application/json"],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": { "$ref": "#/definitions/ServerStatusMessage" }
+ }
+ }
+ }
+ },
+ "/info": {
+ "get": {
+ "tags": ["Info"],
+ "summary": "Get information about the running instance",
+ "operationId": "getInfoUsingGET",
+ "produces": ["application/json"],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": { "$ref": "#/definitions/Info" }
+ }
+ }
+ }
+ },
+ "/molecular-data/fetch": {
+ "post": {
+ "tags": ["Molecular Data"],
+ "summary": "Fetch molecular data",
+ "operationId": "fetchMolecularDataInMultipleMolecularProfilesUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "molecularDataMultipleStudyFilter",
+ "description": "List of Molecular Profile ID and Sample ID pairs or List of MolecularProfile IDs and Entrez Gene IDs",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/MolecularDataMultipleStudyFilter"
+ }
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/NumericGeneMolecularData" }
+ }
+ }
+ }
+ }
+ },
+ "/molecular-profiles": {
+ "get": {
+ "tags": ["Molecular Profiles"],
+ "summary": "Get all molecular profiles",
+ "operationId": "getAllMolecularProfilesUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "datatype",
+ "description",
+ "molecularAlterationType",
+ "molecularProfileId",
+ "name",
+ "showProfileInAnalysisTab"
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/MolecularProfile" }
+ }
+ }
+ }
+ }
+ },
+ "/molecular-profiles/fetch": {
+ "post": {
+ "tags": ["Molecular Profiles"],
+ "summary": "Fetch molecular profiles",
+ "operationId": "fetchMolecularProfilesUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "molecularProfileFilter",
+ "description": "List of Molecular Profile IDs or List of Study IDs",
+ "required": true,
+ "schema": { "$ref": "#/definitions/MolecularProfileFilter" }
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/MolecularProfile" }
+ }
+ }
+ }
+ }
+ },
+ "/molecular-profiles/{molecularProfileId}": {
+ "get": {
+ "tags": ["Molecular Profiles"],
+ "summary": "Get molecular profile",
+ "operationId": "getMolecularProfileUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "molecularProfileId",
+ "in": "path",
+ "description": "Molecular Profile ID e.g. acc_tcga_mutations",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": { "$ref": "#/definitions/MolecularProfile" }
+ }
+ }
+ }
+ },
+ "/molecular-profiles/{molecularProfileId}/discrete-copy-number": {
+ "get": {
+ "tags": ["Discrete Copy Number Alterations"],
+ "summary": "Get discrete copy number alterations in a molecular profile",
+ "operationId": "getDiscreteCopyNumbersInMolecularProfileUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "discreteCopyNumberEventType",
+ "in": "query",
+ "description": "Type of the copy number event",
+ "required": false,
+ "type": "string",
+ "default": "HOMDEL_AND_AMP",
+ "enum": [
+ "ALL",
+ "AMP",
+ "DIPLOID",
+ "GAIN",
+ "HETLOSS",
+ "HOMDEL",
+ "HOMDEL_AND_AMP"
+ ]
+ },
+ {
+ "name": "molecularProfileId",
+ "in": "path",
+ "description": "Molecular Profile ID e.g. acc_tcga_gistic",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sampleListId",
+ "in": "query",
+ "description": "Sample List ID e.g. acc_tcga_all",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/DiscreteCopyNumberData" }
+ }
+ }
+ }
+ }
+ },
+ "/molecular-profiles/{molecularProfileId}/discrete-copy-number/fetch": {
+ "post": {
+ "tags": ["Discrete Copy Number Alterations"],
+ "summary": "Fetch discrete copy number alterations in a molecular profile by sample ID",
+ "operationId": "fetchDiscreteCopyNumbersInMolecularProfileUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "discreteCopyNumberEventType",
+ "in": "query",
+ "description": "Type of the copy number event",
+ "required": false,
+ "type": "string",
+ "default": "HOMDEL_AND_AMP",
+ "enum": [
+ "ALL",
+ "AMP",
+ "DIPLOID",
+ "GAIN",
+ "HETLOSS",
+ "HOMDEL",
+ "HOMDEL_AND_AMP"
+ ]
+ },
+ {
+ "in": "body",
+ "name": "discreteCopyNumberFilter",
+ "description": "List of Sample IDs/Sample List ID and Entrez Gene IDs",
+ "required": true,
+ "schema": { "$ref": "#/definitions/DiscreteCopyNumberFilter" }
+ },
+ {
+ "name": "molecularProfileId",
+ "in": "path",
+ "description": "Molecular Profile ID e.g. acc_tcga_gistic",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/DiscreteCopyNumberData" }
+ }
+ }
+ }
+ }
+ },
+ "/molecular-profiles/{molecularProfileId}/gene-panel-data/fetch": {
+ "post": {
+ "tags": ["Gene Panel Data"],
+ "summary": "Get gene panel data",
+ "operationId": "getGenePanelDataUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "genePanelDataFilter",
+ "description": "List of Sample IDs/Sample List ID and Entrez Gene IDs",
+ "required": true,
+ "schema": { "$ref": "#/definitions/GenePanelDataFilter" }
+ },
+ {
+ "name": "molecularProfileId",
+ "in": "path",
+ "description": "Molecular Profile ID e.g. nsclc_unito_2016_mutations",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GenePanelData" }
+ }
+ }
+ }
+ }
+ },
+ "/molecular-profiles/{molecularProfileId}/molecular-data": {
+ "get": {
+ "tags": ["Molecular Data"],
+ "summary": "Get all molecular data in a molecular profile",
+ "operationId": "getAllMolecularDataInMolecularProfileUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "entrezGeneId",
+ "in": "query",
+ "description": "Entrez Gene ID e.g. 1",
+ "required": true,
+ "type": "integer",
+ "format": "int32"
+ },
+ {
+ "name": "molecularProfileId",
+ "in": "path",
+ "description": "Molecular Profile ID e.g. acc_tcga_rna_seq_v2_mrna",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sampleListId",
+ "in": "query",
+ "description": "Sample List ID e.g. acc_tcga_all",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/NumericGeneMolecularData" }
+ }
+ }
+ }
+ }
+ },
+ "/molecular-profiles/{molecularProfileId}/molecular-data/fetch": {
+ "post": {
+ "tags": ["Molecular Data"],
+ "summary": "Fetch molecular data in a molecular profile",
+ "operationId": "fetchAllMolecularDataInMolecularProfileUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "molecularDataFilter",
+ "description": "List of Sample IDs/Sample List ID and Entrez Gene IDs",
+ "required": true,
+ "schema": { "$ref": "#/definitions/MolecularDataFilter" }
+ },
+ {
+ "name": "molecularProfileId",
+ "in": "path",
+ "description": "Molecular Profile ID e.g. acc_tcga_rna_seq_v2_mrna",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/NumericGeneMolecularData" }
+ }
+ }
+ }
+ }
+ },
+ "/molecular-profiles/{molecularProfileId}/mutations": {
+ "get": {
+ "tags": ["Mutations"],
+ "summary": "Get mutations in a molecular profile by Sample List ID",
+ "operationId": "getMutationsInMolecularProfileBySampleListIdUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "entrezGeneId",
+ "in": "query",
+ "description": "Entrez Gene ID",
+ "required": false,
+ "type": "integer",
+ "format": "int32"
+ },
+ {
+ "name": "molecularProfileId",
+ "in": "path",
+ "description": "Molecular Profile ID e.g. acc_tcga_mutations",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sampleListId",
+ "in": "query",
+ "description": "Sample List ID e.g. acc_tcga_all",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "aminoAcidChange",
+ "center",
+ "endPosition",
+ "entrezGeneId",
+ "keyword",
+ "mutationStatus",
+ "mutationType",
+ "ncbiBuild",
+ "normalAltCount",
+ "normalRefCount",
+ "proteinChange",
+ "proteinPosEnd",
+ "proteinPosStart",
+ "referenceAllele",
+ "refseqMrnaId",
+ "startPosition",
+ "tumorAltCount",
+ "tumorRefCount",
+ "validationStatus",
+ "variantAllele",
+ "variantType"
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Mutation" }
+ }
+ }
+ }
+ }
+ },
+ "/molecular-profiles/{molecularProfileId}/mutations/fetch": {
+ "post": {
+ "tags": ["Mutations"],
+ "summary": "Fetch mutations in a molecular profile",
+ "operationId": "fetchMutationsInMolecularProfileUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "molecularProfileId",
+ "in": "path",
+ "description": "Molecular Profile ID e.g. acc_tcga_mutations",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "in": "body",
+ "name": "mutationFilter",
+ "description": "List of Sample IDs/Sample List ID and Entrez Gene IDs",
+ "required": true,
+ "schema": { "$ref": "#/definitions/MutationFilter" }
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "aminoAcidChange",
+ "center",
+ "endPosition",
+ "entrezGeneId",
+ "keyword",
+ "mutationStatus",
+ "mutationType",
+ "ncbiBuild",
+ "normalAltCount",
+ "normalRefCount",
+ "proteinChange",
+ "proteinPosEnd",
+ "proteinPosStart",
+ "referenceAllele",
+ "refseqMrnaId",
+ "startPosition",
+ "tumorAltCount",
+ "tumorRefCount",
+ "validationStatus",
+ "variantAllele",
+ "variantType"
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Mutation" }
+ }
+ }
+ }
+ }
+ },
+ "/mutations/fetch": {
+ "post": {
+ "tags": ["Mutations"],
+ "summary": "Fetch mutations in multiple molecular profiles by sample IDs",
+ "operationId": "fetchMutationsInMultipleMolecularProfilesUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "in": "body",
+ "name": "mutationMultipleStudyFilter",
+ "description": "List of Molecular Profile IDs or List of Molecular Profile ID / Sample ID pairs, and List of Entrez Gene IDs",
+ "required": true,
+ "schema": { "$ref": "#/definitions/MutationMultipleStudyFilter" }
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "aminoAcidChange",
+ "center",
+ "endPosition",
+ "entrezGeneId",
+ "keyword",
+ "mutationStatus",
+ "mutationType",
+ "ncbiBuild",
+ "normalAltCount",
+ "normalRefCount",
+ "proteinChange",
+ "proteinPosEnd",
+ "proteinPosStart",
+ "referenceAllele",
+ "refseqMrnaId",
+ "startPosition",
+ "tumorAltCount",
+ "tumorRefCount",
+ "validationStatus",
+ "variantAllele",
+ "variantType"
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Mutation" }
+ }
+ }
+ }
+ }
+ },
+ "/patients": {
+ "get": {
+ "tags": ["Patients"],
+ "summary": "Get all patients",
+ "operationId": "getAllPatientsUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "keyword",
+ "in": "query",
+ "description": "Search keyword that applies to ID of the patients",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": ["patientId"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Patient" }
+ }
+ }
+ }
+ }
+ },
+ "/patients/fetch": {
+ "post": {
+ "tags": ["Patients"],
+ "summary": "fetchPatients",
+ "operationId": "fetchPatientsUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "patientFilter",
+ "description": "List of patient identifiers",
+ "required": true,
+ "schema": { "$ref": "#/definitions/PatientFilter" }
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Patient" }
+ }
+ }
+ }
+ }
+ },
+ "/sample-lists": {
+ "get": {
+ "tags": ["Sample Lists"],
+ "summary": "Get all sample lists",
+ "operationId": "getAllSampleListsUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "category",
+ "description",
+ "name",
+ "sampleListId",
+ "studyId"
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/SampleList" }
+ }
+ }
+ }
+ }
+ },
+ "/sample-lists/fetch": {
+ "post": {
+ "tags": ["Sample Lists"],
+ "summary": "Fetch sample lists by ID",
+ "operationId": "fetchSampleListsUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "in": "body",
+ "name": "sampleListIds",
+ "description": "List of sample list IDs",
+ "required": true,
+ "schema": { "type": "array", "items": { "type": "string" } }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/SampleList" }
+ }
+ }
+ }
+ }
+ },
+ "/sample-lists/{sampleListId}": {
+ "get": {
+ "tags": ["Sample Lists"],
+ "summary": "Get sample list",
+ "operationId": "getSampleListUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "sampleListId",
+ "in": "path",
+ "description": "Sample List ID e.g. acc_tcga_all",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": { "$ref": "#/definitions/SampleList" }
+ }
+ }
+ }
+ },
+ "/sample-lists/{sampleListId}/sample-ids": {
+ "get": {
+ "tags": ["Sample Lists"],
+ "summary": "Get all sample IDs in a sample list",
+ "operationId": "getAllSampleIdsInSampleListUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "sampleListId",
+ "in": "path",
+ "description": "Sample List ID e.g. acc_tcga_all",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": { "type": "array", "items": { "type": "string" } }
+ }
+ }
+ }
+ },
+ "/samples": {
+ "get": {
+ "tags": ["Samples"],
+ "summary": "Get all samples matching keyword",
+ "operationId": "getSamplesByKeywordUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "keyword",
+ "in": "query",
+ "description": "Search keyword that applies to the study ID",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": ["sampleId", "sampleType"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Sample" }
+ }
+ }
+ }
+ }
+ },
+ "/samples/fetch": {
+ "post": {
+ "tags": ["Samples"],
+ "summary": "Fetch samples by ID",
+ "operationId": "fetchSamplesUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "in": "body",
+ "name": "sampleFilter",
+ "description": "List of sample identifiers",
+ "required": true,
+ "schema": { "$ref": "#/definitions/SampleFilter" }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Sample" }
+ }
+ }
+ }
+ }
+ },
+ "/studies": {
+ "get": {
+ "tags": ["Studies"],
+ "summary": "Get all studies",
+ "operationId": "getAllStudiesUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "keyword",
+ "in": "query",
+ "description": "Search keyword that applies to name and cancer type of the studies",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "cancerTypeId",
+ "citation",
+ "description",
+ "groups",
+ "importDate",
+ "name",
+ "pmid",
+ "publicStudy",
+ "status",
+ "studyId"
+ ]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/CancerStudy" }
+ }
+ }
+ }
+ }
+ },
+ "/studies/fetch": {
+ "post": {
+ "tags": ["Studies"],
+ "summary": "Fetch studies by IDs",
+ "operationId": "fetchStudiesUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "in": "body",
+ "name": "studyIds",
+ "description": "List of Study IDs",
+ "required": true,
+ "schema": { "type": "array", "items": { "type": "string" } }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/CancerStudy" }
+ }
+ }
+ }
+ }
+ },
+ "/studies/tags/fetch": {
+ "post": {
+ "tags": ["Studies"],
+ "summary": "Get the study tags by IDs",
+ "operationId": "getTagsForMultipleStudiesUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "studyIds",
+ "description": "List of Study IDs",
+ "required": true,
+ "schema": { "type": "array", "items": { "type": "string" } }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/CancerStudyTags" }
+ }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}": {
+ "get": {
+ "tags": ["Studies"],
+ "summary": "Get a study",
+ "operationId": "getStudyUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": { "$ref": "#/definitions/CancerStudy" }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/clinical-attributes": {
+ "get": {
+ "tags": ["Clinical Attributes"],
+ "summary": "Get all clinical attributes in the specified study",
+ "operationId": "getAllClinicalAttributesInStudyUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "clinicalAttributeId",
+ "datatype",
+ "description",
+ "displayName",
+ "patientAttribute",
+ "priority",
+ "studyId"
+ ]
+ },
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/ClinicalAttribute" }
+ }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/clinical-attributes/{clinicalAttributeId}": {
+ "get": {
+ "tags": ["Clinical Attributes"],
+ "summary": "Get specified clinical attribute",
+ "operationId": "getClinicalAttributeInStudyUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "clinicalAttributeId",
+ "in": "path",
+ "description": "Clinical Attribute ID e.g. CANCER_TYPE",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": { "$ref": "#/definitions/ClinicalAttribute" }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/clinical-data": {
+ "get": {
+ "tags": ["Clinical Data"],
+ "summary": "Get all clinical data in a study",
+ "operationId": "getAllClinicalDataInStudyUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "attributeId",
+ "in": "query",
+ "description": "Attribute ID e.g. CANCER_TYPE",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "clinicalDataType",
+ "in": "query",
+ "description": "Type of the clinical data",
+ "required": false,
+ "type": "string",
+ "default": "SAMPLE",
+ "enum": ["PATIENT", "SAMPLE"]
+ },
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": ["clinicalAttributeId", "value"]
+ },
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/ClinicalData" }
+ }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/clinical-data/fetch": {
+ "post": {
+ "tags": ["Clinical Data"],
+ "summary": "Fetch clinical data by patient IDs or sample IDs (specific study)",
+ "operationId": "fetchAllClinicalDataInStudyUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "clinicalDataSingleStudyFilter",
+ "description": "List of patient or sample IDs and attribute IDs",
+ "required": true,
+ "schema": { "$ref": "#/definitions/ClinicalDataSingleStudyFilter" }
+ },
+ {
+ "name": "clinicalDataType",
+ "in": "query",
+ "description": "Type of the clinical data",
+ "required": false,
+ "type": "string",
+ "default": "SAMPLE",
+ "enum": ["PATIENT", "SAMPLE"]
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/ClinicalData" }
+ }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/molecular-profiles": {
+ "get": {
+ "tags": ["Molecular Profiles"],
+ "summary": "Get all molecular profiles in a study",
+ "operationId": "getAllMolecularProfilesInStudyUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "datatype",
+ "description",
+ "molecularAlterationType",
+ "molecularProfileId",
+ "name",
+ "showProfileInAnalysisTab"
+ ]
+ },
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/MolecularProfile" }
+ }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/patients": {
+ "get": {
+ "tags": ["Patients"],
+ "summary": "Get all patients in a study",
+ "operationId": "getAllPatientsInStudyUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": ["patientId"]
+ },
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Patient" }
+ }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/patients/{patientId}": {
+ "get": {
+ "tags": ["Patients"],
+ "summary": "Get a patient in a study",
+ "operationId": "getPatientInStudyUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "patientId",
+ "in": "path",
+ "description": "Patient ID e.g. TCGA-OR-A5J2",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": { "$ref": "#/definitions/Patient" }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/patients/{patientId}/clinical-data": {
+ "get": {
+ "tags": ["Clinical Data"],
+ "summary": "Get all clinical data of a patient in a study",
+ "operationId": "getAllClinicalDataOfPatientInStudyUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "attributeId",
+ "in": "query",
+ "description": "Attribute ID e.g. AGE",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "patientId",
+ "in": "path",
+ "description": "Patient ID e.g. TCGA-OR-A5J2",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": ["clinicalAttributeId", "value"]
+ },
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/ClinicalData" }
+ }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/patients/{patientId}/samples": {
+ "get": {
+ "tags": ["Samples"],
+ "summary": "Get all samples of a patient in a study",
+ "operationId": "getAllSamplesOfPatientInStudyUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "patientId",
+ "in": "path",
+ "description": "Patient ID e.g. TCGA-OR-A5J2",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": ["sampleId", "sampleType"]
+ },
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Sample" }
+ }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/sample-lists": {
+ "get": {
+ "tags": ["Sample Lists"],
+ "summary": "Get all sample lists in a study",
+ "operationId": "getAllSampleListsInStudyUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "category",
+ "description",
+ "name",
+ "sampleListId",
+ "studyId"
+ ]
+ },
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/SampleList" }
+ }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/samples": {
+ "get": {
+ "tags": ["Samples"],
+ "summary": "Get all samples in a study",
+ "operationId": "getAllSamplesInStudyUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": ["sampleId", "sampleType"]
+ },
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/Sample" }
+ }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/samples/{sampleId}": {
+ "get": {
+ "tags": ["Samples"],
+ "summary": "Get a sample in a study",
+ "operationId": "getSampleInStudyUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "sampleId",
+ "in": "path",
+ "description": "Sample ID e.g. TCGA-OR-A5J2-01",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": { "$ref": "#/definitions/Sample" }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/samples/{sampleId}/clinical-data": {
+ "get": {
+ "tags": ["Clinical Data"],
+ "summary": "Get all clinical data of a sample in a study",
+ "operationId": "getAllClinicalDataOfSampleInStudyUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "attributeId",
+ "in": "query",
+ "description": "Attribute ID e.g. CANCER_TYPE",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 10000000,
+ "maximum": 10000000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sampleId",
+ "in": "path",
+ "description": "Sample ID e.g. TCGA-OR-A5J2-01",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": ["clinicalAttributeId", "value"]
+ },
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/ClinicalData" }
+ }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/samples/{sampleId}/copy-number-segments": {
+ "get": {
+ "tags": ["Copy Number Segments"],
+ "summary": "Get copy number segments in a sample in a study",
+ "operationId": "getCopyNumberSegmentsInSampleInStudyUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "chromosome",
+ "in": "query",
+ "description": "Chromosome",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "direction",
+ "in": "query",
+ "description": "Direction of the sort",
+ "required": false,
+ "type": "string",
+ "default": "ASC",
+ "enum": ["ASC", "DESC"]
+ },
+ {
+ "name": "pageNumber",
+ "in": "query",
+ "description": "Page number of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "pageSize",
+ "in": "query",
+ "description": "Page size of the result list",
+ "required": false,
+ "type": "integer",
+ "default": 20000,
+ "maximum": 20000,
+ "exclusiveMaximum": false,
+ "minimum": 1,
+ "exclusiveMinimum": false,
+ "format": "int32"
+ },
+ {
+ "name": "projection",
+ "in": "query",
+ "description": "Level of detail of the response",
+ "required": false,
+ "type": "string",
+ "default": "SUMMARY",
+ "enum": ["DETAILED", "ID", "META", "SUMMARY"]
+ },
+ {
+ "name": "sampleId",
+ "in": "path",
+ "description": "Sample ID e.g. TCGA-OR-A5J2-01",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "sortBy",
+ "in": "query",
+ "description": "Name of the property that the result list is sorted by",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "chromosome",
+ "end",
+ "numberOfProbes",
+ "segmentMean",
+ "start"
+ ]
+ },
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/CopyNumberSeg" }
+ }
+ }
+ }
+ }
+ },
+ "/studies/{studyId}/tags": {
+ "get": {
+ "tags": ["Studies"],
+ "summary": "Get the tags of a study",
+ "operationId": "getTagsUsingGET",
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "name": "studyId",
+ "in": "path",
+ "description": "Study ID e.g. acc_tcga",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": { "description": "OK", "schema": { "type": "object" } }
+ }
+ }
+ },
+ "/treatments/display-patient": {
+ "post": {
+ "tags": ["Treatments"],
+ "summary": "Should patient level treatments be displayed",
+ "operationId": "getContainsTreatmentDataUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "studyIds",
+ "description": "List of Study IDs",
+ "required": true,
+ "schema": { "type": "array", "items": { "type": "string" } }
+ },
+ {
+ "name": "tier",
+ "in": "query",
+ "description": "tier",
+ "required": false,
+ "type": "string",
+ "default": "Agent",
+ "enum": ["Agent", "AgentClass", "AgentTarget"]
+ }
+ ],
+ "responses": {
+ "200": { "description": "OK", "schema": { "type": "boolean" } }
+ }
+ }
+ },
+ "/treatments/display-sample": {
+ "post": {
+ "tags": ["Treatments"],
+ "summary": "Should sample level treatments be displayed",
+ "operationId": "getContainsSampleTreatmentDataUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "studyIds",
+ "description": "List of Study IDs",
+ "required": true,
+ "schema": { "type": "array", "items": { "type": "string" } }
+ },
+ {
+ "name": "tier",
+ "in": "query",
+ "description": "tier",
+ "required": false,
+ "type": "string",
+ "default": "Agent",
+ "enum": ["Agent", "AgentClass", "AgentTarget"]
+ }
+ ],
+ "responses": {
+ "200": { "description": "OK", "schema": { "type": "boolean" } }
+ }
+ }
+ },
+ "/treatments/patient": {
+ "post": {
+ "tags": ["Treatments"],
+ "summary": "Get all patient level treatments",
+ "operationId": "getAllPatientTreatmentsUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "studyViewFilter",
+ "description": "Study view filter",
+ "required": true,
+ "schema": { "$ref": "#/definitions/StudyViewFilter" }
+ },
+ {
+ "name": "tier",
+ "in": "query",
+ "description": "tier",
+ "required": false,
+ "type": "string",
+ "default": "Agent",
+ "enum": ["Agent", "AgentClass", "AgentTarget"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/PatientTreatmentRow" }
+ }
+ }
+ }
+ }
+ },
+ "/treatments/sample": {
+ "post": {
+ "tags": ["Treatments"],
+ "summary": "Get all sample level treatments",
+ "operationId": "getAllSampleTreatmentsUsingPOST",
+ "consumes": ["application/json"],
+ "produces": ["application/json"],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "studyViewFilter",
+ "description": "Study view filter",
+ "required": true,
+ "schema": { "$ref": "#/definitions/StudyViewFilter" }
+ },
+ {
+ "name": "tier",
+ "in": "query",
+ "description": "tier",
+ "required": false,
+ "type": "string",
+ "default": "Agent",
+ "enum": ["Agent", "AgentClass", "AgentTarget"]
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/SampleTreatmentRow" }
+ }
+ }
+ }
+ }
+ }
+ },
+ "definitions": {
+ "AlleleSpecificCopyNumber": {
+ "type": "object",
+ "properties": {
+ "ascnIntegerCopyNumber": { "type": "integer", "format": "int32" },
+ "ascnMethod": { "type": "string" },
+ "ccfExpectedCopies": { "type": "number", "format": "float" },
+ "ccfExpectedCopiesUpper": { "type": "number", "format": "float" },
+ "clonal": { "type": "string" },
+ "expectedAltCopies": { "type": "integer", "format": "int32" },
+ "minorCopyNumber": { "type": "integer", "format": "int32" },
+ "totalCopyNumber": { "type": "integer", "format": "int32" }
+ },
+ "title": "AlleleSpecificCopyNumber"
+ },
+ "AlterationFilter": {
+ "type": "object",
+ "properties": {
+ "copyNumberAlterationEventTypes": {
+ "type": "object",
+ "additionalProperties": { "type": "boolean" }
+ },
+ "includeDriver": { "type": "boolean" },
+ "includeGermline": { "type": "boolean" },
+ "includeSomatic": { "type": "boolean" },
+ "includeUnknownOncogenicity": { "type": "boolean" },
+ "includeUnknownStatus": { "type": "boolean" },
+ "includeUnknownTier": { "type": "boolean" },
+ "includeVUS": { "type": "boolean" },
+ "mutationEventTypes": {
+ "type": "object",
+ "additionalProperties": { "type": "boolean" }
+ },
+ "structuralVariants": { "type": "boolean" },
+ "tiersBooleanMap": {
+ "type": "object",
+ "additionalProperties": { "type": "boolean" }
+ }
+ },
+ "title": "AlterationFilter"
+ },
+ "AndedPatientTreatmentFilters": {
+ "type": "object",
+ "properties": {
+ "filters": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/OredPatientTreatmentFilters" }
+ }
+ },
+ "title": "AndedPatientTreatmentFilters"
+ },
+ "AndedSampleTreatmentFilters": {
+ "type": "object",
+ "properties": {
+ "filters": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/OredSampleTreatmentFilters" }
+ }
+ },
+ "title": "AndedSampleTreatmentFilters"
+ },
+ "CancerStudy": {
+ "type": "object",
+ "required": ["studyId"],
+ "properties": {
+ "allSampleCount": { "type": "integer", "format": "int32" },
+ "cancerType": { "$ref": "#/definitions/TypeOfCancer" },
+ "cancerTypeId": { "type": "string" },
+ "citation": { "type": "string" },
+ "cnaSampleCount": { "type": "integer", "format": "int32" },
+ "completeSampleCount": { "type": "integer", "format": "int32" },
+ "description": { "type": "string" },
+ "groups": { "type": "string" },
+ "importDate": { "type": "string", "example": "yyyy-MM-dd HH:mm:ss" },
+ "massSpectrometrySampleCount": { "type": "integer", "format": "int32" },
+ "methylationHm27SampleCount": { "type": "integer", "format": "int32" },
+ "miRnaSampleCount": { "type": "integer", "format": "int32" },
+ "mrnaMicroarraySampleCount": { "type": "integer", "format": "int32" },
+ "mrnaRnaSeqSampleCount": { "type": "integer", "format": "int32" },
+ "mrnaRnaSeqV2SampleCount": { "type": "integer", "format": "int32" },
+ "name": { "type": "string" },
+ "pmid": { "type": "string" },
+ "publicStudy": { "type": "boolean" },
+ "readPermission": { "type": "boolean" },
+ "referenceGenome": { "type": "string" },
+ "rppaSampleCount": { "type": "integer", "format": "int32" },
+ "sequencedSampleCount": { "type": "integer", "format": "int32" },
+ "status": { "type": "integer", "format": "int32" },
+ "studyId": { "type": "string" },
+ "treatmentCount": { "type": "integer", "format": "int32" }
+ },
+ "title": "CancerStudy"
+ },
+ "CancerStudyTags": {
+ "type": "object",
+ "properties": {
+ "cancerStudyId": { "type": "integer", "format": "int32" },
+ "studyId": { "type": "string" },
+ "tags": { "type": "string" }
+ },
+ "title": "CancerStudyTags"
+ },
+ "ClinicalAttribute": {
+ "type": "object",
+ "required": [
+ "clinicalAttributeId",
+ "displayName",
+ "patientAttribute",
+ "studyId"
+ ],
+ "properties": {
+ "clinicalAttributeId": { "type": "string" },
+ "datatype": { "type": "string" },
+ "description": { "type": "string" },
+ "displayName": { "type": "string" },
+ "patientAttribute": { "type": "boolean" },
+ "priority": { "type": "string" },
+ "studyId": { "type": "string" }
+ },
+ "title": "ClinicalAttribute"
+ },
+ "ClinicalData": {
+ "type": "object",
+ "required": ["clinicalAttributeId", "patientId", "studyId"],
+ "properties": {
+ "clinicalAttribute": { "$ref": "#/definitions/ClinicalAttribute" },
+ "clinicalAttributeId": { "type": "string" },
+ "patientAttribute": { "type": "boolean" },
+ "patientId": { "type": "string" },
+ "sampleId": { "type": "string" },
+ "studyId": { "type": "string" },
+ "uniquePatientKey": { "type": "string" },
+ "uniqueSampleKey": { "type": "string" },
+ "value": { "type": "string" }
+ },
+ "title": "ClinicalData"
+ },
+ "ClinicalDataFilter": {
+ "type": "object",
+ "properties": {
+ "attributeId": { "type": "string" },
+ "values": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/DataFilterValue" }
+ }
+ },
+ "title": "ClinicalDataFilter"
+ },
+ "ClinicalDataIdentifier": {
+ "type": "object",
+ "properties": {
+ "entityId": { "type": "string" },
+ "studyId": { "type": "string" }
+ },
+ "title": "ClinicalDataIdentifier"
+ },
+ "ClinicalDataMultiStudyFilter": {
+ "type": "object",
+ "properties": {
+ "attributeIds": { "type": "array", "items": { "type": "string" } },
+ "identifiers": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/ClinicalDataIdentifier" }
+ }
+ },
+ "title": "ClinicalDataMultiStudyFilter"
+ },
+ "ClinicalDataSingleStudyFilter": {
+ "type": "object",
+ "properties": {
+ "attributeIds": { "type": "array", "items": { "type": "string" } },
+ "ids": { "type": "array", "items": { "type": "string" } }
+ },
+ "title": "ClinicalDataSingleStudyFilter"
+ },
+ "ClinicalEventSample": {
+ "type": "object",
+ "properties": {
+ "patientId": { "type": "string" },
+ "sampleId": { "type": "string" },
+ "studyId": { "type": "string" },
+ "timeTaken": { "type": "integer", "format": "int32" }
+ },
+ "title": "ClinicalEventSample"
+ },
+ "CopyNumberSeg": {
+ "type": "object",
+ "required": [
+ "chromosome",
+ "end",
+ "numberOfProbes",
+ "patientId",
+ "sampleId",
+ "segmentMean",
+ "start",
+ "studyId"
+ ],
+ "properties": {
+ "chromosome": { "type": "string" },
+ "end": { "type": "integer", "format": "int32" },
+ "numberOfProbes": { "type": "integer", "format": "int32" },
+ "patientId": { "type": "string" },
+ "sampleId": { "type": "string" },
+ "segmentMean": { "type": "number" },
+ "start": { "type": "integer", "format": "int32" },
+ "studyId": { "type": "string" },
+ "uniquePatientKey": { "type": "string" },
+ "uniqueSampleKey": { "type": "string" }
+ },
+ "title": "CopyNumberSeg"
+ },
+ "DataFilter": {
+ "type": "object",
+ "properties": {
+ "values": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/DataFilterValue" }
+ }
+ },
+ "title": "DataFilter"
+ },
+ "DataFilterValue": {
+ "type": "object",
+ "properties": {
+ "end": { "type": "number" },
+ "start": { "type": "number" },
+ "value": { "type": "string" }
+ },
+ "title": "DataFilterValue"
+ },
+ "DiscreteCopyNumberData": {
+ "type": "object",
+ "required": [
+ "alteration",
+ "entrezGeneId",
+ "molecularProfileId",
+ "patientId",
+ "sampleId",
+ "studyId"
+ ],
+ "properties": {
+ "alteration": { "type": "integer", "format": "int32" },
+ "driverFilter": { "type": "string" },
+ "driverFilterAnnotation": { "type": "string" },
+ "driverTiersFilter": { "type": "string" },
+ "driverTiersFilterAnnotation": { "type": "string" },
+ "entrezGeneId": { "type": "integer", "format": "int32" },
+ "gene": { "$ref": "#/definitions/Gene" },
+ "molecularProfileId": { "type": "string" },
+ "namespaceColumns": {
+ "type": "object",
+ "additionalProperties": { "type": "object" }
+ },
+ "patientId": { "type": "string" },
+ "sampleId": { "type": "string" },
+ "studyId": { "type": "string" },
+ "uniquePatientKey": { "type": "string" },
+ "uniqueSampleKey": { "type": "string" }
+ },
+ "title": "DiscreteCopyNumberData"
+ },
+ "DiscreteCopyNumberFilter": {
+ "type": "object",
+ "properties": {
+ "entrezGeneIds": {
+ "type": "array",
+ "items": { "type": "integer", "format": "int32" }
+ },
+ "sampleIds": { "type": "array", "items": { "type": "string" } },
+ "sampleListId": { "type": "string" }
+ },
+ "title": "DiscreteCopyNumberFilter"
+ },
+ "Gene": {
+ "type": "object",
+ "required": ["entrezGeneId", "geneticEntityId", "hugoGeneSymbol"],
+ "properties": {
+ "entrezGeneId": { "type": "integer", "format": "int32" },
+ "geneticEntityId": { "type": "integer", "format": "int32" },
+ "hugoGeneSymbol": { "type": "string" },
+ "type": { "type": "string" }
+ },
+ "title": "Gene"
+ },
+ "GeneFilter": {
+ "type": "object",
+ "properties": {
+ "geneQueries": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GeneFilterQuery" }
+ }
+ },
+ "molecularProfileIds": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": { "type": "string" }
+ }
+ },
+ "title": "GeneFilter"
+ },
+ "GeneFilterQuery": {
+ "type": "object",
+ "properties": {
+ "alterations": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": ["AMP", "DIPLOID", "GAIN", "HETLOSS", "HOMDEL"]
+ }
+ },
+ "entrezGeneId": { "type": "integer", "format": "int32" },
+ "hugoGeneSymbol": { "type": "string" },
+ "includeDriver": { "type": "boolean" },
+ "includeGermline": { "type": "boolean" },
+ "includeSomatic": { "type": "boolean" },
+ "includeUnknownOncogenicity": { "type": "boolean" },
+ "includeUnknownStatus": { "type": "boolean" },
+ "includeUnknownTier": { "type": "boolean" },
+ "includeVUS": { "type": "boolean" },
+ "tiersBooleanMap": {
+ "type": "object",
+ "additionalProperties": { "type": "boolean" }
+ }
+ },
+ "title": "GeneFilterQuery"
+ },
+ "GenePanel": {
+ "type": "object",
+ "required": ["genePanelId"],
+ "properties": {
+ "description": { "type": "string" },
+ "genePanelId": { "type": "string" },
+ "genes": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GenePanelToGene" }
+ }
+ },
+ "title": "GenePanel"
+ },
+ "GenePanelData": {
+ "type": "object",
+ "required": [
+ "molecularProfileId",
+ "patientId",
+ "profiled",
+ "sampleId",
+ "studyId"
+ ],
+ "properties": {
+ "genePanelId": { "type": "string" },
+ "molecularProfileId": { "type": "string" },
+ "patientId": { "type": "string" },
+ "profiled": { "type": "boolean" },
+ "sampleId": { "type": "string" },
+ "studyId": { "type": "string" },
+ "uniquePatientKey": { "type": "string" },
+ "uniqueSampleKey": { "type": "string" }
+ },
+ "title": "GenePanelData"
+ },
+ "GenePanelDataFilter": {
+ "type": "object",
+ "properties": {
+ "sampleIds": { "type": "array", "items": { "type": "string" } },
+ "sampleListId": { "type": "string" }
+ },
+ "title": "GenePanelDataFilter"
+ },
+ "GenePanelDataMultipleStudyFilter": {
+ "type": "object",
+ "properties": {
+ "molecularProfileIds": {
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "sampleMolecularIdentifiers": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/SampleMolecularIdentifier" }
+ }
+ },
+ "title": "GenePanelDataMultipleStudyFilter"
+ },
+ "GenePanelToGene": {
+ "type": "object",
+ "required": ["entrezGeneId", "hugoGeneSymbol"],
+ "properties": {
+ "entrezGeneId": { "type": "integer", "format": "int32" },
+ "hugoGeneSymbol": { "type": "string" }
+ },
+ "title": "GenePanelToGene"
+ },
+ "GenericAssayData": {
+ "type": "object",
+ "required": [
+ "genericAssayStableId",
+ "molecularProfileId",
+ "patientId",
+ "sampleId",
+ "studyId",
+ "value"
+ ],
+ "properties": {
+ "genericAssayStableId": { "type": "string" },
+ "molecularProfileId": { "type": "string" },
+ "patientId": { "type": "string" },
+ "sampleId": { "type": "string" },
+ "stableId": { "type": "string" },
+ "studyId": { "type": "string" },
+ "uniquePatientKey": { "type": "string" },
+ "uniqueSampleKey": { "type": "string" },
+ "value": { "type": "string" }
+ },
+ "title": "GenericAssayData"
+ },
+ "GenericAssayDataFilter": {
+ "type": "object",
+ "properties": {
+ "profileType": { "type": "string" },
+ "stableId": { "type": "string" },
+ "values": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/DataFilterValue" }
+ }
+ },
+ "title": "GenericAssayDataFilter"
+ },
+ "GenericAssayDataMultipleStudyFilter": {
+ "type": "object",
+ "properties": {
+ "genericAssayStableIds": {
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "molecularProfileIds": {
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "sampleMolecularIdentifiers": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/SampleMolecularIdentifier" }
+ }
+ },
+ "title": "GenericAssayDataMultipleStudyFilter"
+ },
+ "GenericAssayFilter": {
+ "type": "object",
+ "properties": {
+ "genericAssayStableIds": {
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "sampleIds": { "type": "array", "items": { "type": "string" } },
+ "sampleListId": { "type": "string" }
+ },
+ "title": "GenericAssayFilter"
+ },
+ "GenericAssayMeta": {
+ "type": "object",
+ "properties": {
+ "entityType": { "type": "string" },
+ "genericEntityMetaProperties": {
+ "type": "object",
+ "additionalProperties": { "type": "string" }
+ },
+ "stableId": { "type": "string" }
+ },
+ "title": "GenericAssayMeta"
+ },
+ "GenericAssayMetaFilter": {
+ "type": "object",
+ "properties": {
+ "genericAssayStableIds": {
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "molecularProfileIds": {
+ "type": "array",
+ "items": { "type": "string" }
+ }
+ },
+ "title": "GenericAssayMetaFilter"
+ },
+ "GenomicDataFilter": {
+ "type": "object",
+ "properties": {
+ "hugoGeneSymbol": { "type": "string" },
+ "profileType": { "type": "string" },
+ "values": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/DataFilterValue" }
+ }
+ },
+ "title": "GenomicDataFilter"
+ },
+ "Info": {
+ "type": "object",
+ "required": [
+ "dbVersion",
+ "gitBranch",
+ "gitCommitId",
+ "gitCommitIdAbbrev",
+ "gitCommitIdDescribe",
+ "gitCommitIdDescribeShort",
+ "gitCommitMessageFull",
+ "gitCommitMessageShort",
+ "gitCommitMessageUserEmail",
+ "gitCommitMessageUserName",
+ "gitDirty",
+ "portalVersion"
+ ],
+ "properties": {
+ "dbVersion": { "type": "string" },
+ "gitBranch": { "type": "string" },
+ "gitCommitId": { "type": "string" },
+ "gitCommitIdAbbrev": { "type": "string" },
+ "gitCommitIdDescribe": { "type": "string" },
+ "gitCommitIdDescribeShort": { "type": "string" },
+ "gitCommitMessageFull": { "type": "string" },
+ "gitCommitMessageShort": { "type": "string" },
+ "gitCommitMessageUserEmail": { "type": "string" },
+ "gitCommitMessageUserName": { "type": "string" },
+ "gitDirty": { "type": "boolean" },
+ "portalVersion": { "type": "string" }
+ },
+ "title": "Info"
+ },
+ "MolecularDataFilter": {
+ "type": "object",
+ "properties": {
+ "entrezGeneIds": {
+ "type": "array",
+ "items": { "type": "integer", "format": "int32" }
+ },
+ "sampleIds": { "type": "array", "items": { "type": "string" } },
+ "sampleListId": { "type": "string" }
+ },
+ "title": "MolecularDataFilter"
+ },
+ "MolecularDataMultipleStudyFilter": {
+ "type": "object",
+ "properties": {
+ "entrezGeneIds": {
+ "type": "array",
+ "items": { "type": "integer", "format": "int32" }
+ },
+ "molecularProfileIds": {
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "sampleMolecularIdentifiers": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/SampleMolecularIdentifier" }
+ }
+ },
+ "title": "MolecularDataMultipleStudyFilter"
+ },
+ "MolecularProfile": {
+ "type": "object",
+ "required": ["molecularProfileId", "patientLevel", "studyId"],
+ "properties": {
+ "datatype": { "type": "string" },
+ "description": { "type": "string" },
+ "genericAssayType": { "type": "string" },
+ "molecularAlterationType": {
+ "type": "string",
+ "enum": [
+ "COPY_NUMBER_ALTERATION",
+ "GENERIC_ASSAY",
+ "GENESET_SCORE",
+ "METHYLATION",
+ "METHYLATION_BINARY",
+ "MICRO_RNA_EXPRESSION",
+ "MRNA_EXPRESSION",
+ "MRNA_EXPRESSION_NORMALS",
+ "MUTATION_EXTENDED",
+ "MUTATION_UNCALLED",
+ "PHOSPHORYLATION",
+ "PROTEIN_ARRAY_PHOSPHORYLATION",
+ "PROTEIN_ARRAY_PROTEIN_LEVEL",
+ "PROTEIN_LEVEL",
+ "RNA_EXPRESSION",
+ "STRUCTURAL_VARIANT"
+ ]
+ },
+ "molecularProfileId": { "type": "string" },
+ "name": { "type": "string" },
+ "patientLevel": { "type": "boolean" },
+ "pivotThreshold": { "type": "number", "format": "float" },
+ "showProfileInAnalysisTab": { "type": "boolean" },
+ "sortOrder": { "type": "string" },
+ "study": { "$ref": "#/definitions/CancerStudy" },
+ "studyId": { "type": "string" }
+ },
+ "title": "MolecularProfile"
+ },
+ "MolecularProfileFilter": {
+ "type": "object",
+ "properties": {
+ "molecularProfileIds": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": { "type": "string" }
+ },
+ "studyIds": { "type": "array", "items": { "type": "string" } }
+ },
+ "title": "MolecularProfileFilter"
+ },
+ "Mutation": {
+ "type": "object",
+ "required": [
+ "entrezGeneId",
+ "molecularProfileId",
+ "patientId",
+ "sampleId",
+ "studyId"
+ ],
+ "properties": {
+ "alleleSpecificCopyNumber": {
+ "$ref": "#/definitions/AlleleSpecificCopyNumber"
+ },
+ "aminoAcidChange": { "type": "string" },
+ "center": { "type": "string" },
+ "chr": { "type": "string" },
+ "driverFilter": { "type": "string" },
+ "driverFilterAnnotation": { "type": "string" },
+ "driverTiersFilter": { "type": "string" },
+ "driverTiersFilterAnnotation": { "type": "string" },
+ "endPosition": { "type": "integer", "format": "int64" },
+ "entrezGeneId": { "type": "integer", "format": "int32" },
+ "gene": { "$ref": "#/definitions/Gene" },
+ "keyword": { "type": "string" },
+ "molecularProfileId": { "type": "string" },
+ "mutationStatus": { "type": "string" },
+ "mutationType": { "type": "string" },
+ "namespaceColumns": {
+ "type": "object",
+ "additionalProperties": { "type": "object" }
+ },
+ "ncbiBuild": { "type": "string" },
+ "normalAltCount": { "type": "integer", "format": "int32" },
+ "normalRefCount": { "type": "integer", "format": "int32" },
+ "patientId": { "type": "string" },
+ "proteinChange": { "type": "string" },
+ "proteinPosEnd": { "type": "integer", "format": "int32" },
+ "proteinPosStart": { "type": "integer", "format": "int32" },
+ "referenceAllele": { "type": "string" },
+ "refseqMrnaId": { "type": "string" },
+ "sampleId": { "type": "string" },
+ "startPosition": { "type": "integer", "format": "int64" },
+ "studyId": { "type": "string" },
+ "tumorAltCount": { "type": "integer", "format": "int32" },
+ "tumorRefCount": { "type": "integer", "format": "int32" },
+ "uniquePatientKey": { "type": "string" },
+ "uniqueSampleKey": { "type": "string" },
+ "validationStatus": { "type": "string" },
+ "variantAllele": { "type": "string" },
+ "variantType": { "type": "string" }
+ },
+ "title": "Mutation"
+ },
+ "MutationFilter": {
+ "type": "object",
+ "properties": {
+ "entrezGeneIds": {
+ "type": "array",
+ "items": { "type": "integer", "format": "int32" }
+ },
+ "sampleIds": { "type": "array", "items": { "type": "string" } },
+ "sampleListId": { "type": "string" }
+ },
+ "title": "MutationFilter"
+ },
+ "MutationMultipleStudyFilter": {
+ "type": "object",
+ "properties": {
+ "entrezGeneIds": {
+ "type": "array",
+ "items": { "type": "integer", "format": "int32" }
+ },
+ "molecularProfileIds": {
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "sampleMolecularIdentifiers": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/SampleMolecularIdentifier" }
+ }
+ },
+ "title": "MutationMultipleStudyFilter"
+ },
+ "NumericGeneMolecularData": {
+ "type": "object",
+ "required": [
+ "entrezGeneId",
+ "molecularProfileId",
+ "patientId",
+ "sampleId",
+ "studyId",
+ "value"
+ ],
+ "properties": {
+ "entrezGeneId": { "type": "integer", "format": "int32" },
+ "gene": { "$ref": "#/definitions/Gene" },
+ "molecularProfileId": { "type": "string" },
+ "patientId": { "type": "string" },
+ "sampleId": { "type": "string" },
+ "studyId": { "type": "string" },
+ "uniquePatientKey": { "type": "string" },
+ "uniqueSampleKey": { "type": "string" },
+ "value": { "type": "number" }
+ },
+ "title": "NumericGeneMolecularData"
+ },
+ "OredPatientTreatmentFilters": {
+ "type": "object",
+ "properties": {
+ "filters": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/PatientTreatmentFilter" }
+ }
+ },
+ "title": "OredPatientTreatmentFilters"
+ },
+ "OredSampleTreatmentFilters": {
+ "type": "object",
+ "properties": {
+ "filters": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/SampleTreatmentFilter" }
+ }
+ },
+ "title": "OredSampleTreatmentFilters"
+ },
+ "Patient": {
+ "type": "object",
+ "required": ["patientId", "studyId"],
+ "properties": {
+ "cancerStudy": { "$ref": "#/definitions/CancerStudy" },
+ "patientId": { "type": "string" },
+ "studyId": { "type": "string" },
+ "uniquePatientKey": { "type": "string" },
+ "uniqueSampleKey": { "type": "string" }
+ },
+ "title": "Patient"
+ },
+ "PatientFilter": {
+ "type": "object",
+ "properties": {
+ "patientIdentifiers": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/PatientIdentifier" }
+ },
+ "uniquePatientKeys": { "type": "array", "items": { "type": "string" } }
+ },
+ "title": "PatientFilter"
+ },
+ "PatientIdentifier": {
+ "type": "object",
+ "properties": {
+ "patientId": { "type": "string" },
+ "studyId": { "type": "string" }
+ },
+ "title": "PatientIdentifier"
+ },
+ "PatientTreatmentFilter": {
+ "type": "object",
+ "properties": { "treatment": { "type": "string" } },
+ "title": "PatientTreatmentFilter"
+ },
+ "PatientTreatmentRow": {
+ "type": "object",
+ "properties": {
+ "count": { "type": "integer", "format": "int32" },
+ "samples": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": { "$ref": "#/definitions/ClinicalEventSample" }
+ },
+ "treatment": { "type": "string" }
+ },
+ "title": "PatientTreatmentRow"
+ },
+ "Sample": {
+ "type": "object",
+ "required": ["patientId", "sampleId", "studyId"],
+ "properties": {
+ "copyNumberSegmentPresent": { "type": "boolean" },
+ "patientId": { "type": "string" },
+ "sampleId": { "type": "string" },
+ "sampleType": {
+ "type": "string",
+ "enum": [
+ "BLOOD_NORMAL",
+ "METASTATIC",
+ "PRIMARY_BLOOD_TUMOR",
+ "PRIMARY_SOLID_TUMOR",
+ "RECURRENT_BLOOD_TUMOR",
+ "RECURRENT_SOLID_TUMOR",
+ "SOLID_NORMAL"
+ ]
+ },
+ "sequenced": { "type": "boolean" },
+ "studyId": { "type": "string" },
+ "uniquePatientKey": { "type": "string" },
+ "uniqueSampleKey": { "type": "string" }
+ },
+ "title": "Sample"
+ },
+ "SampleFilter": {
+ "type": "object",
+ "properties": {
+ "sampleIdentifiers": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/SampleIdentifier" }
+ },
+ "sampleListIds": { "type": "array", "items": { "type": "string" } },
+ "uniqueSampleKeys": { "type": "array", "items": { "type": "string" } }
+ },
+ "title": "SampleFilter"
+ },
+ "SampleIdentifier": {
+ "type": "object",
+ "properties": {
+ "sampleId": { "type": "string" },
+ "studyId": { "type": "string" }
+ },
+ "title": "SampleIdentifier"
+ },
+ "SampleList": {
+ "type": "object",
+ "required": ["sampleListId"],
+ "properties": {
+ "category": { "type": "string" },
+ "description": { "type": "string" },
+ "name": { "type": "string" },
+ "sampleCount": { "type": "integer", "format": "int32" },
+ "sampleIds": { "type": "array", "items": { "type": "string" } },
+ "sampleListId": { "type": "string" },
+ "studyId": { "type": "string" }
+ },
+ "title": "SampleList"
+ },
+ "SampleMolecularIdentifier": {
+ "type": "object",
+ "properties": {
+ "molecularProfileId": { "type": "string" },
+ "sampleId": { "type": "string" }
+ },
+ "title": "SampleMolecularIdentifier"
+ },
+ "SampleTreatmentFilter": {
+ "type": "object",
+ "properties": {
+ "time": { "type": "string", "enum": ["Post", "Pre"] },
+ "treatment": { "type": "string" }
+ },
+ "title": "SampleTreatmentFilter"
+ },
+ "SampleTreatmentRow": {
+ "type": "object",
+ "properties": {
+ "count": { "type": "integer", "format": "int32" },
+ "samples": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": { "$ref": "#/definitions/ClinicalEventSample" }
+ },
+ "time": { "type": "string", "enum": ["Post", "Pre"] },
+ "treatment": { "type": "string" }
+ },
+ "title": "SampleTreatmentRow"
+ },
+ "ServerStatusMessage": {
+ "type": "object",
+ "properties": { "status": { "type": "string" } },
+ "title": "ServerStatusMessage"
+ },
+ "StructuralVariantFilterQuery": {
+ "type": "object",
+ "properties": {
+ "gene1Query": { "$ref": "#/definitions/StructuralVariantGeneSubQuery" },
+ "gene2Query": { "$ref": "#/definitions/StructuralVariantGeneSubQuery" },
+ "includeDriver": { "type": "boolean" },
+ "includeGermline": { "type": "boolean" },
+ "includeSomatic": { "type": "boolean" },
+ "includeUnknownOncogenicity": { "type": "boolean" },
+ "includeUnknownStatus": { "type": "boolean" },
+ "includeUnknownTier": { "type": "boolean" },
+ "includeVUS": { "type": "boolean" },
+ "tiersBooleanMap": {
+ "type": "object",
+ "additionalProperties": { "type": "boolean" }
+ }
+ },
+ "title": "StructuralVariantFilterQuery"
+ },
+ "StructuralVariantGeneSubQuery": {
+ "type": "object",
+ "properties": {
+ "entrezId": { "type": "integer", "format": "int32" },
+ "hugoSymbol": { "type": "string" },
+ "specialValue": { "type": "string", "enum": ["ANY_GENE", "NO_GENE"] }
+ },
+ "title": "StructuralVariantGeneSubQuery"
+ },
+ "StudyViewFilter": {
+ "type": "object",
+ "properties": {
+ "alterationFilter": { "$ref": "#/definitions/AlterationFilter" },
+ "caseLists": {
+ "type": "array",
+ "items": { "type": "array", "items": { "type": "string" } }
+ },
+ "clinicalDataFilters": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/ClinicalDataFilter" }
+ },
+ "clinicalEventFilters": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/DataFilter" }
+ },
+ "customDataFilters": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/ClinicalDataFilter" }
+ },
+ "geneFilters": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GeneFilter" }
+ },
+ "genericAssayDataFilters": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GenericAssayDataFilter" }
+ },
+ "genomicDataFilters": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/GenomicDataFilter" }
+ },
+ "genomicProfiles": {
+ "type": "array",
+ "items": { "type": "array", "items": { "type": "string" } }
+ },
+ "patientTreatmentFilters": {
+ "$ref": "#/definitions/AndedPatientTreatmentFilters"
+ },
+ "patientTreatmentGroupFilters": {
+ "$ref": "#/definitions/AndedPatientTreatmentFilters"
+ },
+ "patientTreatmentTargetFilters": {
+ "$ref": "#/definitions/AndedPatientTreatmentFilters"
+ },
+ "sampleIdentifiers": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/SampleIdentifier" }
+ },
+ "sampleTreatmentFilters": {
+ "$ref": "#/definitions/AndedSampleTreatmentFilters"
+ },
+ "sampleTreatmentGroupFilters": {
+ "$ref": "#/definitions/AndedSampleTreatmentFilters"
+ },
+ "sampleTreatmentTargetFilters": {
+ "$ref": "#/definitions/AndedSampleTreatmentFilters"
+ },
+ "structuralVariantFilters": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/StudyViewStructuralVariantFilter" }
+ },
+ "studyIds": { "type": "array", "items": { "type": "string" } }
+ },
+ "title": "StudyViewFilter"
+ },
+ "StudyViewStructuralVariantFilter": {
+ "type": "object",
+ "properties": {
+ "molecularProfileIds": {
+ "type": "array",
+ "uniqueItems": true,
+ "items": { "type": "string" }
+ },
+ "structVarQueries": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": { "$ref": "#/definitions/StructuralVariantFilterQuery" }
+ }
+ }
+ },
+ "title": "StudyViewStructuralVariantFilter"
+ },
+ "TypeOfCancer": {
+ "type": "object",
+ "required": ["cancerTypeId"],
+ "properties": {
+ "cancerTypeId": { "type": "string" },
+ "dedicatedColor": { "type": "string" },
+ "name": { "type": "string" },
+ "parent": { "type": "string" },
+ "shortName": { "type": "string" }
+ },
+ "title": "TypeOfCancer"
+ }
+ }
+}
diff --git a/cbioportal/adapters/cbioportal_adapter.py b/cbioportal/adapters/cbioportal_adapter.py
index 77000b3..ab7f700 100644
--- a/cbioportal/adapters/cbioportal_adapter.py
+++ b/cbioportal/adapters/cbioportal_adapter.py
@@ -62,7 +62,6 @@ def get_data_from_api(self, _type):
if _type in [SampleField, samplePatientAssociationField]:
if "samples" in self.api_called: return self.api_called["samples"]
self.api_called["samples"] = []
- # studies = self.cbioportal.Studies.getAllStudiesUsingGET().result()
studies = self.check_api_called(StudyField)
print(f"Getting samples of {len(studies)} studies")
for i, study in enumerate(studies):
@@ -75,12 +74,11 @@ def get_data_from_api(self, _type):
if "sample_lists" in self.api_called: return self.api_called["sample_lists"]
self.api_called["sample_lists"] = self.cbioportal.Sample_Lists.getAllSampleListsUsingGET().result()[0:self.limit]
return self.api_called["sample_lists"]
-
if _type == GeneField:
if "genes" in self.api_called: return self.api_called["genes"]
self.api_called["genes"] = self.cbioportal.Genes.getAllGenesUsingGET().result()[0:self.limit]
return self.api_called["genes"]
- if _type in [GenePanelField, GenePanelGeneAssociationField]:
+ if _type in [GenePanelField]:
if "gene_panels" in self.api_called: return self.api_called["gene_panels"]
self.api_called["gene_panels"] = self.cbioportal.Gene_Panels.getAllGenePanelsUsingGET().result()[0:self.limit]
return self.api_called["gene_panels"]
@@ -92,36 +90,42 @@ def get_data_from_api(self, _type):
if "clinical_attributes" in self.api_called: return self.api_called["clinical_attributes"]
self.api_called["clinical_attributes"] = self.cbioportal.Clinical_Attributes.getAllClinicalAttributesUsingGET().result()[0:self.limit]
return self.api_called["clinical_attributes"]
- if _type in [PatientSampleStudyEntityField, PatientToPatientSampleStudyEntityField, SampleToPatientSampleStudyEntityField, StudyToPatientSampleStudyEntityField]:
- print("not correctly implemeted yet!")
- return []
- if "patient_sample_study_entities" in self.api_called: return self.api_called["patient_sample_study_entities"]
- patients = self.check_api_called(PatientField)
- samples = self.check_api_called(SampleField)
- studies = self.check_api_called(StudyField)
- self.api_called["patient_sample_study_entities"] = []
- counter = 0
- for _id1 in patients:
- for _id2 in samples:
- for _id3 in studies:
- id = hash(f"{_id1.patientId}_{_id2.sampleId}_{_id3.studyId}")
- self.api_called["patient_sample_study_entities"].append({"patientId":_id1.patientId, "sampleId":_id2.sampleId, "studyId":_id3.studyId, "id":id})
- counter += 1
- if counter == self.limit:
- return self.api_called["patient_sample_study_entities"]
- return self.api_called["patient_sample_study_entities"]
-
+ if _type in [MutationField, mutationToSampleField, mutationToGeneField, mutationToStudyField, mutationToPatientField, mutationToMolecularProfileField]:
+ if "mutations" in self.api_called: return self.api_called["mutations"]
+ profiles = self.check_api_called(MolecularProfileField)
+ # get a list of all molecular profile ids of all the profiles
+ molecularProfileIds = [profile["molecularProfileId"] for profile in profiles]
+ print(f"Getting mutations in {len(molecularProfileIds)} molecular profiles")
+ mutations_per_profile = {}
+ def get_mutations_in_profile(profile_id):
+ try:
+ return self.cbioportal.Mutations.fetchMutationsInMultipleMolecularProfilesUsingPOST(mutationMultipleStudyFilter = {"molecularProfileIds":[profile_id]}).result()[0:self.limit]
+ except HTTPNotFound:
+ return []
+ for i, profile_id in enumerate(molecularProfileIds):
+ mutations_per_profile[profile_id] = get_mutations_in_profile(profile_id)
+ print(f"Profile {i+1}/{len(molecularProfileIds)}: {len(mutations_per_profile[profile_id])} mutations")
+
+ self.api_called["mutations"] = [mutation for mutations in mutations_per_profile.values() for mutation in mutations]
+ print(f"found {len(self.api_called['mutations'])} mutations in {len(molecularProfileIds)} molecular profiles")
+ return self.api_called["mutations"]
if _type == "test":
print(dir(self.cbioportal))
- gene_panels = self.cbioportal.Gene_Panels.getAllGenePanelsUsingGET().result()
- print(gene_panels[0])
+
+
else:
raise ValueError(f"Node type {_type} not supported.")
def _yield_node_type(self, items, node_type):
for item in items:
- _id = item[node_type._ID.value]
+ if isinstance(node_type._ID.value, str):
+ _id = item[node_type._ID.value]
+ elif isinstance(node_type._ID.value, list):
+ _id = str(hash("_".join([str(item[field]) for field in node_type._ID.value])))
+ else:
+ raise ValueError("ID field must be a string or a list of strings.")
+
_type = node_type._LABEL.value
_props = {"version": self.version}
for field in node_type:
@@ -151,8 +155,19 @@ def get_nodes(self):
def _yield_edge_type(self, items, edge_type):
for item in items:
- _subject = item[edge_type._SUBJECT.value]
- _object = item[edge_type._OBJECT.value]
+ if isinstance(edge_type._SUBJECT.value, str):
+ _subject = item[edge_type._SUBJECT.value]
+ elif isinstance(edge_type._SUBJECT.value, list):
+ _subject = str(hash("_".join([str(item[field]) for field in edge_type._SUBJECT.value])))
+ else:
+ raise ValueError("_subject field must be a string or a list of strings.")
+
+ if isinstance(edge_type._OBJECT.value, str):
+ _object = item[edge_type._OBJECT.value]
+ elif isinstance(edge_type._OBJECT.value, list):
+ _object = str(hash("_".join([str(item[field]) for field in edge_type._OBJECT.value])))
+ else:
+ raise ValueError("_subject field must be a string or a list of strings.")
try:
item[edge_type._ID.value]
diff --git a/cbioportal/adapters/edge_field_classes.py b/cbioportal/adapters/edge_field_classes.py
index c8c90c0..519820c 100644
--- a/cbioportal/adapters/edge_field_classes.py
+++ b/cbioportal/adapters/edge_field_classes.py
@@ -35,14 +35,6 @@ class samplePatientAssociationField(Enum):
_OBJECT = "patientId"
_LABEL = "fromPatient"
-class GenePanelGeneAssociationField(Enum):
- """
- Define possible fields the adapter can provide for genePanel-gene associations.
- """
- _SUBJECT = "genePanelId"
- _OBJECT = "genes"
- _LABEL = "hasGene"
-
class MolecularProfiletoStudyField(Enum):
"""
Define possible fields the adapter can provide for molecular profile - study associations.
@@ -75,27 +67,42 @@ class CopyNumberSegmentToSampleField(Enum):
_OBJECT = "sampleId"
_LABEL = "fromSample"
+class mutationToSampleField(Enum):
+ """
+ Define possible fields the adapter can provide for mutation - sample associations.
+ """
+ _SUBJECT = ["molecularProfileId", "sampleId", "patientId", "entrezGeneId", "studyId"]
+ _OBJECT = "sampleId"
+ _LABEL = "fromSample"
-class PatientToPatientSampleStudyEntityField(Enum):
+class mutationToGeneField(Enum):
"""
- Define possible fields the adapter can provide for patient - patient sample study entity associations.
+ Define possible fields the adapter can provide for mutation - gene associations.
"""
- _SUBJECT = "patientId"
- _OBJECT = "id"
- _LABEL = "partOf"
+ _SUBJECT = ["molecularProfileId", "sampleId", "patientId", "entrezGeneId", "studyId"]
+ _OBJECT = "entrezGeneId"
+ _LABEL = "fromGene"
-class SampleToPatientSampleStudyEntityField(Enum):
+class mutationToStudyField(Enum):
"""
- Define possible fields the adapter can provide for sample - patient sample study entity associations.
+ Define possible fields the adapter can provide for mutation - study associations.
"""
- _SUBJECT = "sampleId"
- _OBJECT = "id"
- _LABEL = "partOf"
+ _SUBJECT = ["molecularProfileId", "sampleId", "patientId", "entrezGeneId", "studyId"]
+ _OBJECT = "studyId"
+ _LABEL = "hasStudy"
-class StudyToPatientSampleStudyEntityField(Enum):
+class mutationToPatientField(Enum):
"""
- Define possible fields the adapter can provide for study - patient sample study entity associations.
+ Define possible fields the adapter can provide for mutation - patient associations.
"""
- _SUBJECT = "studyId"
- _OBJECT = "id"
- _LABEL = "partOf"
+ _SUBJECT = ["molecularProfileId", "sampleId", "patientId", "entrezGeneId", "studyId"]
+ _OBJECT = "patientId"
+ _LABEL = "fromPatient"
+
+class mutationToMolecularProfileField(Enum):
+ """
+ Define possible fields the adapter can provide for mutation - molecular profile associations.
+ """
+ _SUBJECT = ["molecularProfileId", "sampleId", "patientId", "entrezGeneId", "studyId"]
+ _OBJECT = "molecularProfileId"
+ _LABEL = "fromMolecularProfile"
\ No newline at end of file
diff --git a/cbioportal/adapters/node_field_classes.py b/cbioportal/adapters/node_field_classes.py
index b88cb9d..eaddd82 100644
--- a/cbioportal/adapters/node_field_classes.py
+++ b/cbioportal/adapters/node_field_classes.py
@@ -48,7 +48,6 @@ class SampleListField(Enum):
NAME = "name"
CATEGORY = "category"
SAMPLE_COUNT = "sampleCount"
- SAMPLE_IDS = "sampleIds"
class GeneField(Enum):
_ID = "entrezGeneId"
@@ -111,14 +110,38 @@ class CopyNumberSegmentField(Enum):
SEGMENT_MEAN = "segmentMean"
START = "start"
STUDY_ID = "studyId"
-
-class PatientSampleStudyEntityField(Enum):
- """
- Define possible fields the adapter can provide for patient-sample-study entities.
- """
- PATIENT_ID = "patientId"
- SAMPLE_ID = "sampleId"
- STUDY_ID = "studyId"
- _LABEL = "PatientSampleStudyEntity"
- _ID = "id"
+# EXAMPLE
+# Mutation(alleleSpecificCopyNumber=None, aminoAcidChange=None, center='MSKCC', chr='15', driverFilter=None, driverFilterAnnotation=None, driverTiersFilter=None, driverTiersFilterAnnotation=None, endPosition=30700159, entrezGeneId=101059918, gene=None, keyword='GOLGA8R W275 missense', molecularProfileId='acbc_mskcc_2015_mutations', mutationStatus='SOMATIC', mutationType='Missense_Mutation', namespaceColumns=None, ncbiBuild='GRCh37', normalAltCount=None, normalRefCount=None, patientId='AdCC3T', proteinChange='W275R', proteinPosEnd=275, proteinPosStart=275, referenceAllele='A', refseqMrnaId='NM_001282484.1', sampleId='AdCC3T', startPosition=30700159, studyId='acbc_mskcc_2015', tumorAltCount=20, tumorRefCount=80, uniquePatientKey='QWRDQzNUOmFjYmNfbXNrY2NfMjAxNQ', uniqueSampleKey='QWRDQzNUOmFjYmNfbXNrY2NfMjAxNQ', validationStatus='Unknown', variantAllele='G', variantType='SNP')
+class MutationField(Enum):
+ ALLELE_SPECIFIC_COPY_NUMBER = "alleleSpecificCopyNumber"
+ AMINO_ACID_CHANGE = "aminoAcidChange"
+ CENTER = "center"
+ CHROMOSOME = "chr"
+ DRIVER_FILTER = "driverFilter"
+ DRIVER_FILTER_ANNOTATION = "driverFilterAnnotation"
+ DRIVER_TIERS_FILTER = "driverTiersFilter"
+ DRIVER_TIERS_FILTER_ANNOTATION = "driverTiersFilterAnnotation"
+ END_POSITION = "endPosition"
+ KEYWORD = "keyword"
+ MUTATION_STATUS = "mutationStatus"
+ MUTATION_TYPE = "mutationType"
+ NAMESPACE_COLUMNS = "namespaceColumns"
+ NCBI_BUILD = "ncbiBuild"
+ NORMAL_ALT_COUNT = "normalAltCount"
+ NORMAL_REF_COUNT = "normalRefCount"
+ PROTEIN_CHANGE = "proteinChange"
+ PROTEIN_POS_END = "proteinPosEnd"
+ PROTEIN_POS_START = "proteinPosStart"
+ REFERENCE_ALLELE = "referenceAllele"
+ REFSEQ_MRNA_ID = "refseqMrnaId"
+ START_POSITION = "startPosition"
+ TUMOR_ALT_COUNT = "tumorAltCount"
+ TUMOR_REF_COUNT = "tumorRefCount"
+ UNIQUE_PATIENT_KEY = "uniquePatientKey"
+ UNIQUE_SAMPLE_KEY = "uniqueSampleKey"
+ VALIDATION_STATUS = "validationStatus"
+ VARIANT_ALLELE = "variantAllele"
+ VARIANT_TYPE = "variantType"
+ _ID = ["molecularProfileId", "sampleId", "patientId", "entrezGeneId", "studyId"]
+ _LABEL = "Mutation"
\ No newline at end of file
diff --git a/config/schema_config.yaml b/config/schema_config.yaml
index d8af17b..2cc0eea 100644
--- a/config/schema_config.yaml
+++ b/config/schema_config.yaml
@@ -97,6 +97,41 @@ clinical attribute:
patientAttribute: str
priority: str
+mutation:
+ is_a: molecular entity
+ represented_as: node
+ input_label: Mutation
+ properties:
+ allele_specific_copy_number: str
+ amino_acid_change: str
+ c_position: str
+ chromosome: str
+ end_position: str
+ start_position: str
+ keyword: str
+ mutation_status: str
+ mutation_type: str
+ ncbi_build: str
+ normal_alt_count: str
+ normal_ref_count: str
+ protein_change: str
+ protein_pos_start: str
+ protein_pos_end: str
+ reference_allele: str
+ variant_allele: str
+ refseq_mrna_id: str
+ tumor_alt_count: str
+ tumor_ref_count: str
+ unique_sample_key: str
+ unique_patient_key: str
+ validation_status: str
+ variant_type: str
+
+
+
+# ---------------------------------------------------
+# associations
+
is child of:
is_a: [association, disease disease association]
represented_as: edge
@@ -127,12 +162,22 @@ has clinical attribute:
represented_as: edge
input_label: hasClinicalAttribute
-has gene:
+part of:
is_a: association
represented_as: edge
- input_label: hasGene
+ input_label: partOf
-part of:
+from sample:
+ is_a: association
+ represented_as: edge
+ input_label: fromSample
+
+from gene:
+ is_a: association
+ represented_as: edge
+ input_label: fromGene
+
+from molecular profile:
is_a: association
represented_as: edge
- input_label: partOf
\ No newline at end of file
+ input_label: fromMolecularProfile
diff --git a/create_knowledge_graph.py b/create_knowledge_graph.py
index fb72bef..21bca1c 100644
--- a/create_knowledge_graph.py
+++ b/create_knowledge_graph.py
@@ -10,29 +10,31 @@
bc = BioCypher()
node_types = [
- PatientSampleStudyEntityField,
+ MutationField,
MolecularProfileField,
- SampleListField,
- ClinicalAttributesField,
+ # SampleListField,
+ # ClinicalAttributesField,
GeneField,
- GenePanelField,
- CancerTypeField,
+ # GenePanelField,
+ # CancerTypeField,
StudyField,
PatientField,
- SampleField
+ SampleField,
]
edge_types = [
- PatientToPatientSampleStudyEntityField,
- SampleToPatientSampleStudyEntityField,
- StudyToPatientSampleStudyEntityField,
- SampleListToStudyField,
- StudyToClinicalDataField,
- MolecularProfiletoStudyField,
- GenePanelGeneAssociationField,
- DiseaseDiseaseAssociationField,
- StudyDiseaseAssociationField,
- studyPatientAssociationField,
- samplePatientAssociationField
+ # SampleListToStudyField,
+ # StudyToClinicalDataField,
+ # MolecularProfiletoStudyField,
+ # DiseaseDiseaseAssociationField,
+ # StudyDiseaseAssociationField,
+ # studyPatientAssociationField,
+ # samplePatientAssociationField,
+ mutationToMolecularProfileField,
+ mutationToSampleField,
+ mutationToGeneField,
+ mutationToStudyField,
+ mutationToPatientField
+
]
# Create a protein adapter instance
diff --git a/get_api_data.py b/get_api_data.py
new file mode 100644
index 0000000..84fe65b
--- /dev/null
+++ b/get_api_data.py
@@ -0,0 +1,4 @@
+from bravado.client import SwaggerClient
+
+SwaggerClient.from_url('https://www.cbioportal.org/api/v2/api-docs',
+ config={"validate_requests":False,"validate_responses":False,"validate_swagger_spec": False})
diff --git a/mermaid_diagram.py b/mermaid_diagram.py
new file mode 100644
index 0000000..3714b68
--- /dev/null
+++ b/mermaid_diagram.py
@@ -0,0 +1,98 @@
+## creating a mermaid diagram based on the api_docs.json file
+## the api_docs.json file contains some tags, which will be the nodes of the diagram
+## in the 'paths', there are some enum parameters which show the attributes of those nodes
+## sometimes the api needs some input id in order to retrieve the data.
+
+import json
+
+mermaid_text = "classDiagram \n"
+
+# load the api_docs.json file
+api_docs = json.load(open('api_docs.json'))
+print(api_docs.keys())
+# print(api_docs["definitions"]["Studies"].keys())
+# get the tags, these will be the classes
+tags = [tag["name"] for tag in api_docs['tags']]
+
+# print(mermaid_text)
+tag_to_definition = {}
+for path, info in api_docs["paths"].items():
+
+ if "get" in info:
+ response = info["get"]["responses"]["200"]["schema"]
+ if "items" in response:
+ if "$ref" in response["items"]:
+ # print(path)
+ tag_to_definition[info["get"]["tags"][0]] = response["items"]["$ref"].split("/")[-1]
+
+ # print(info["get"]["tags"])
+
+ # print(response["items"]["$ref"])
+ # print()
+
+# print(set(tags) - set(tag_to_definition.keys()))
+# print(tags)
+tag_to_object = {}
+for definition, data in api_docs["definitions"].items():
+ if definition not in tag_to_definition.values():
+ continue
+
+ # print(definition)
+ if "required" not in data:
+ continue
+ tag_to_object[definition] = data["required"][0]
+ # print(data["required"][1:-1])
+ mermaid_text += f"class {definition}{{ \n"
+ for attribute, value in data['properties'].items():
+ if "type" in value:
+ # print(attribute)
+ if attribute not in data["required"][1:]:
+ mermaid_text += f" +{value['type']}: {attribute} \n"
+
+ mermaid_text += f" }}\n"
+
+relations = ""
+for definition, data in api_docs["definitions"].items():
+ if definition not in tag_to_definition.values():
+ continue
+ print(definition)
+ for attribute, value in data['properties'].items():
+ print("\t", attribute, value)
+ obj = None
+
+ # optional
+ for obj, identifier in tag_to_object.items():
+ if attribute == identifier:
+ if definition != obj:
+ s = f" {definition} --> {obj} \n"
+ print(s)
+ relations += s
+
+ if "$ref" in value:
+ val = value['$ref'].split('/')[-1]
+ if obj == val:
+ continue
+ s: str = f" {definition} --> {val} \n"
+ relations +=s
+ if "type" in value:
+ if value["type"] == "array":
+ if "$ref" in value["items"]:
+ relations += f" {definition} --> {value['items']['$ref'].split('/')[-1]} \n"
+
+
+
+# for subject,identifier in tag_to_object.items():
+# # for prop in valueProps:
+# if identifier.endswith("Id"):
+# print(subject, identifier)
+# for obj, objProps in tag_to_object.items():
+# if subject == obj:
+# continue
+ # if valueProps[0] in objProps:
+ # mermaid_text += f"{obj} --|> {subject}\n"
+ # print(obj, subject)
+
+# print("\n".join(set(relations.split("\n"))))
+print(mermaid_text+ "\n"+ "\n".join(set(relations.split("\n"))))
+
+
diff --git a/model.drawio b/model.drawio
new file mode 100644
index 0000000..4e1f9f7
--- /dev/null
+++ b/model.drawio
@@ -0,0 +1,1167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+