developer.cytobank.org
Open in
urlscan Pro
54.160.145.202
Public Scan
URL:
https://developer.cytobank.org/
Submission: On October 10 via automatic, source certstream-suspicious — Scanned from DE
Submission: On October 10 via automatic, source certstream-suspicious — Scanned from DE
Form analysis
0 forms found in the DOMText Content
Public Documentation Settings Environment No Environment Layout Double Column Language cURL CYTOBANK API ENDPOINT REFERENCE * Introduction * Documentation Overview * Rate Limiting * Error Codes and Messages Advanced Analyses Attachments Authentication Compensations DROP Experiments FCS Files Gates and Populations Panels Sample Tags Scales Sharing Statistics Users Cytobank API Endpoint Reference The Cytobank API is a RESTful JSON web API that extends use of basic and advanced functionality of the Cytobank Cloud to any software application. Learn more about the Cytobank API. This v1 API endpoint reference documentation provides information and low-level instructions for access to each API endpoint via HTTP request. Higher level wrappers in programming languages such as R are available here. If an endpoint can't be found on this page it doesn't exist yet. The Cytobank API is under continuous development. Look for exciting releases in the near future. Get in contact with Cytobank Support to request additional endpoints or get beta access to new API functionality. DOCUMENTATION OVERVIEW Cytobank API endpoints are divided into different groups in this reference guide. These groups logically separate the different functionalities of Cytobank and the API endpoints that serve them. In order to find a functionality of interest, first consult the groups on the left for relevance. Click to expand a group in order to see the API endpoints inside it. Make sure to start with the Authentication section. View an endpoint in this documentation for directions on how to access it via HTTP request and to read useful supporting information. The HTTP method (e.g. POST, GET, etc.), headers, example body, and example responses are shown where relevant. CODE SNIPPETS Code snippets in a variety of programming languages are shown for each request. The language shown can be adjusted at the top right of this page. Copy the snippets and execute them in the desired language in order to try the API in a simple context. Please note that code snippets are automatically generated and it's possible that not every snippet will work in every language. The exception to this are requests in cURL, which are all expected to work. REPLACING BRACKETED VARIABLES Capitalized variables in double brackets, {{LIKE_THIS}}, should be replaced with actual values if examples from this documentation are being used directly. These bracketed variables appear throughout the documentation. For example: https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/authenticate ...would become... https://YourCytobank.cytobank.org/cytobank/api/v1/authenticate "username": "{{user_name}}", "password": "{{userpassword}}" ...would become... "username": "YourUsername", "password": "YourPassword" RATE LIMITING Currently the Cytobank API has a default rate limit of 100 requests per 1 minute. If this rate is exceeded the server will respond with a 429 status code and an error message about the rate limits. Requests are binned per minute according to the clock on the server. ERROR CODES AND MESSAGES The Cytobank API will respond to requests with a HTTP status code and return content via JSON. In the case of an error, a status code will be accompanied by a useful message where possible. A variety of status codes are used and not all will be listed here. However, at a high level, anything in the 200 range indicates success, 400 range indicates a client-side error such as a malformatted request or disallowed operation, and 500 range indicates a server-side error. Keep in mind that Cytobank has a permissions framework that the API adheres to. If an error message of Not Authorized To Access Resource is encountered, double check the accessing account has proper access levels for the desired operation, or clone the experiment in question to make an accessible copy. Advanced Analyses Dimensionality Reduction ANALYSIS_TYPE can be any of the following: * tsne_cuda * opt_sne * umap * visne GET List dim. reduction analyses of a type https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}} List all dimensionality reduction analyses in an experiment of the specified type (tSNE-CUDA, opt-SNE, UMAP, or viSNE). HEADERS Authorization Bearer {{AUTH_TOKEN}} Example Request List dim. reduction analyses of a type curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' GET Show dim. reduction analysis details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/{{ANALYSIS_ID}} Show a specific dimensionality reduction analysis in an experiment of the specified type (tSNE-CUDA, opt-SNE, UMAP, or viSNE). HEADERS Authorization Bearer {{AUTH_TOKEN}} Example Request Show dim. reduction analysis details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/{{ANALYSIS_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' POST Create dim. reduction analysis https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/ Create a new dimensionality reduction analysis of the specified type (tSNE-CUDA, opt-SNE, UMAP, or viSNE) with default settings. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "name": "API Dim. Reduction Experiment" } Example Request Create dim. reduction analysis curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "API Dim. Reduction Experiment" } ' PUT Update dim. reduction analysis details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/{{ANALYSIS_ID}} Create a new tSNE-CUDA analysis with default settings. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw View More { "options": { "autoIterations": false, "autoLearningRate": false, "clusteringChannels": [{{CHANNEL_ID_1}}, {{CHANNEL_ID_2}}], "collapseOutliers": false, "desiredEventsPerFile": 50000, "desiredTotalEvents": 100000, "earlyExaggeration": 12, "eventSamplingMethod": "proportional", Example Request Update dim. reduction analysis details View More curl --location -g --request PUT 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/{{ANALYSIS_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "options": { "autoIterations": false, "autoLearningRate": false, "clusteringChannels": [{{CHANNEL_ID_1}}, {{CHANNEL_ID_2}}], "collapseOutliers": false, "desiredEventsPerFile": 50000, DEL Delete dim. reduction analysis https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/{{ANALYSIS_ID}} Delete a dimensionality reduction analysis of the specified type (tSNE-CUDA, opt-SNE, UMAP, or viSNE). HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Delete dim. reduction analysis curl --location -g --request DELETE 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/{{ANALYSIS_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' POST Copy dim. reduction analysis settings https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/{{ANALYSIS_ID}}/copy_settings Copy an existing dimensionality reduction analysis of the specified type (tSNE-CUDA, opt-SNE, UMAP, or viSNE) to create a new analysis with the same settings. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Copy dim. reduction analysis settings curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/{{ANALYSIS_ID}}/copy_settings' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' PUT Rename dim. reduction analysis https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/{{ANALYSIS_ID}}/rename Rename a dimensionality reduction analysis of the specified type (tSNE-CUDA, opt-SNE, UMAP, or viSNE). This is useful for post-run modifications of an analysis name, since the update command is not allowed after the run is started. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "name": "API Dim. Reduction Experiment - Rename" } Example Request Rename dim. reduction analysis curl --location -g --request PUT 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/{{ANALYSIS_ID}}/rename' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw ' { "name": "API Dim. Reduction Experiment - Rename" } ' POST Run dim. reduction analysis https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/{{ANALYSIS_ID}}/run Run a dimensionality reduction analysis of the specified type (tSNE-CUDA, opt-SNE, UMAP, or viSNE). HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Run dim. reduction analysis curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/{{ANALYSIS_ID}}/run' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' GET Show dim. reduction analysis status https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/{{ANALYSIS_ID}}/status Show the execution status of a dimensionality reduction analysis of the specified type (tSNE-CUDA, opt-SNE, UMAP, or viSNE). HEADERS Authorization Bearer {{AUTH_TOKEN}} Example Request Show dim. reduction analysis status curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/{{ANALYSIS_TYPE}}/{{ANALYSIS_ID}}/status' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' CITRUS CITRUS is an algorithm designed for the fully automated discovery of statistically significant stratifying biological signatures within single cell datasets containing numerous samples across multiple known endpoints. Learn more about CITRUS in Cytobank. GET List CITRUS Analyses https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus List all CITRUS analyses in an experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request List CITRUS Analyses curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "citrus": [ { "id": 415, "name": "Completed CITRUS Run 1", "type": "CitrusAdvancedAnalysis", "author": "Cytobank Support", "status": "Completed", "sourceExperiment": 1424, "createdExperiment": null, "attachment_id": 3227, GET Show CITRUS Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}}?include_settings=1 Show a specific CITRUS analysis in an experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} PARAMS include_settings 1 Bodyformdata Example Request Show CITRUS Details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}}?include_settings=1' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "citrus": { "id": 442, "name": "API CITRUS Experiment - Rename", "type": "CitrusAdvancedAnalysis", "author": "Cytobank Support", "status": "New", "sourceExperiment": 1424, "createdExperiment": null, "attachment_id": null, "canceled": false, POST Create CITRUS https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/ Create a new CITRUS analysis with default settings. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "name": "API CITRUS Experiment" } Example Request Create CITRUS curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "API CITRUS Experiment" } ' Example Response 200 OK Body Header(0) View More { "citrus": { "id": 442, "name": "API CITRUS Experiment", "type": "CitrusAdvancedAnalysis", "author": "Cytobank Support", "status": "New", "sourceExperiment": 1424, "createdExperiment": null, "attachment_id": null, "canceled": false, PUT Update CITRUS Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}} Update CITRUS settings. Updates can only be made before running the CITRUS analysis. Learn more about CITRUS settings. CHANNEL_ID is the normalizedShortNameId of the channel. This information is available from the Panels endpoints. The integers in the fileGrouping attribute reference the respective {{FILE_GROUP}} from the fileGroupNames attribute in the order in which they appear starting from 0. POPULATION.GATE_SET_ID parameter in the gateSetId attribute is the gateSetId attribute value of the population on which to run CITRUS. Note that this argument is the gateSetId attribute of a population object and not the ID of the object itself. This secondary ID is experiment-specific and will be a smaller number. An argument of 0 corresponds to the ungated population, i.e., the raw data with no filtering applied. Another term for a population is a "gate set" because it's a set of gates (learn more). The clusteringCharacterization attribute can have a value of "medians" or "abundances". The plotTheme attribute can have a value of "white" or "black". This corresponds to the values of "light" and "dark" in the Cytobank web interface. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw View More { "name":"My API CITRUS Experiment - Update", "options": { "clusteringChannels":[{{CHANNEL_ID_1}}, {{CHANNEL_ID_2}}], "statisticsChannels":[{{CHANNEL_ID_3}}], "fileGrouping":[[{{FCS_FILE_ID_1}}, 0], [{{FCS_FILE_ID_2}}, 0], [{{FCS_FILE_ID_3}}, 0], [{{FCS_FILE_ID_4}}, 1], [{{FCS_FILE_ID_5}}, 1], [{{FCS_FILE_ID_6}}, 1]], "fileGroupNames":[{{FILE_GROUP_1}}, {{FILE_GROUP_2}}], "gateSetId":{{POPULATION_ID}}, "compensationId":{{COMP_ID}}, Example Request Update CITRUS Details View More curl --location -g --request PUT 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "name":"My API CITRUS Experiment - Update", "options": { "clusteringChannels":[{{CHANNEL_ID_1}}, {{CHANNEL_ID_2}}], "statisticsChannels":[{{CHANNEL_ID_3}}], "fileGrouping":[[{{FCS_FILE_ID_1}}, 0], [{{FCS_FILE_ID_2}}, 0], [{{FCS_FILE_ID_3}}, 0], [{{FCS_FILE_ID_4}}, 1], [{{FCS_FILE_ID_5}}, 1], [{{FCS_FILE_ID_6}}, 1]], DEL Delete CITRUS https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}} Delete a CITRUS analysis permanently. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Delete CITRUS curl --location -g --request DELETE 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' POST Copy CITRUS Settings https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}}/copy_settings Copy an existing CITRUS analysis to create a new CITRUS analysis with the same settings. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Copy CITRUS Settings curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}}/copy_settings' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "citrus": { "id": 444, "name": "API CITRUS Experiment - Rename (copy)", "type": "CitrusAdvancedAnalysis", "author": "Cytobank Support", "status": "New", "sourceExperiment": 1424, "createdExperiment": null, "attachment_id": null, "canceled": false, PUT Rename CITRUS https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}}/rename Rename a CITRUS analysis. This is useful for post-run modifications of CITRUS analysis name, since the update command is not allowed after the run is started. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "name": "API CITRUS Experiment - Rename" } Example Request Rename CITRUS curl --location -g --request PUT 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}}/rename' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "API CITRUS Experiment - Rename" }' Example Response 200 OK Body Header(0) View More { "citrus": { "id": 442, "name": "API CITRUS Experiment - Rename", "type": "CitrusAdvancedAnalysis", "author": "Cytobank Support", "status": "New", "sourceExperiment": 1424, "createdExperiment": null, "attachment_id": null, "canceled": false, POST Run CITRUS https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}}/run Run a CITRUS analysis. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Run CITRUS curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}}/run' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "citrus": { "id": 442, "name": "API CITRUS Experiment - Rename", "type": "CitrusAdvancedAnalysis", "author": "Cytobank Support", "status": "New", "sourceExperiment": 1424, "createdExperiment": null, "attachment_id": null, "canceled": false, GET Show CITRUS Status https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}}/status Show a CITRUS analysis execution status. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Show CITRUS Status curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}}/status' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "citrusStatus": { "id": 442, "name": "API CITRUS Experiment - Rename", "status": "Running", "progress": 23, "startTime": "2017-01-04T00:26:40Z", "endTime": 0, "runtime": 0, "progressMessage": "Finalizing analysis...", "createdExperiment": null GET Download CITRUS Results https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/{{citrus_attachment_id}}/download Download the results for a successful CITRUS analysis. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Download CITRUS Results curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/{{citrus_attachment_id}}/download' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' FlowSOM FlowSOM is an algorithm that speeds time to analysis and quality of clustering with Self-Organizing Maps (SOMs) that can reveal how all markers are behaving on all cells, and can detect subsets that might otherwise be missed. It clusters cells (or other observations) based on chosen clustering channels (or markers/features), generates a SOM of clusters, produces a Minimum Spanning Tree (MST) of the clusters, and assigns each cluster to a metacluster, effectively grouping them into a population. The FlowSOM algorithm outputs SOMs and MSTs showing population abundances and marker expression in various formats including pie charts, star plots, and channel-colored plots. Cytobank has extended the functionality to automatically create a new experiment using files written out of FlowSOM that include the original channels plus the addition of cluster and metacluster ID channels, to allow interaction with the cluster and metacluster output. Read the original FlowSOM publication by Van Gassen et al, Cytometry A (2015). GET List FlowSOM Analyses https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom List all FlowSOM analyses in an experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request List FlowSOM Analyses curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "flowsom": [ { "id": 415, "name": "New FlowSOM Run", "type": "FlowsomAdvancedAnalysis", "author": "Cytobank Support", "status": "New", "sourceExperiment": 1424, "createdExperiment": null, "attachment_id": null, GET Show FlowSOM Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/{{FLOWSOM_ID}} Show a specific FlowSOM analysis in an experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Show FlowSOM Details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/{{FLOWSOM_ID}}?include_settings=1' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "flowsom": { "id": 2439, "name": "FlowSOM Demo 1", "type": "FlowsomAdvancedAnalysis", "author": "Cytobank Support", "status": "New", "sourceExperiment": 2939, "createdExperiment": null, "attachment_id": null, "canceled": false, POST Create FlowSOM https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/ Create a new FlowSOM analysis with default settings. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "name": "API FlowSOM Experiment" } Example Request Create FlowSOM curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-raw '{ "name": "API FlowSOM Analysis" } ' Example Response 200 OK Body Header(0) View More { "flowsom": { "id": 2440, "name": "New FlowSOM Analysis", "type": "FlowsomAdvancedAnalysis", "author": "stoo blair", "status": "New", "sourceExperiment": 2939, "createdExperiment": null, "attachment_id": null, "canceled": false, PUT Update FlowSOM Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/{{FLOWSOM_ID}} Update FlowSOM settings. Updates can only be made before running the FlowSOM analysis. REQUIRED SETTINGS: * clusteringChannels — An array of normalizedShortNameIds corresponding to channels shared by all FCS files specified by fcsFileIds. This information is available from the Panels endpoints. This information is available from the Panels endpoints. * fcsFileIds — An array of FCS File IDs belonging to the experiment. EVENT SAMPLING SETTINGS: * eventSamplingMethod — Valid options are proportional, equal, or all. Defaults to equal. If eventSamplingMethod is set to all, all events for the selected population from all selected files will be used, without any further subsampling. * desiredEventsPerFile — Only applies if eventSamplingMethod is set to equal. Defaults to 50000. It is the number of desired events to sample per file, but if the selected population for any selected file has less total events than the specified number, that quantity will be used instead. * desiredTotalEvents — Only applies if eventSamplingMethod is set to proportional. Defaults to 100000. Represents the total desired number of events to sample amongst all selected files, whilst keeping the numbers per file proportional to the total number of events in the selected population for that file. If any file has less events in the selected population than possible to make a perfectly proportional sampling to add up to the desired total, all of the events in the file will be used instead. OPTIONAL BASIC SETTINGS: * clusteringMethod — Valid options are consensus, hierarchical, or kmeans. Defaults to consensus. * compensationId — Valid options are -1 (Uncompensated), -1 (File-internal compensation), or the ID of an external compensation. Note that in order to run FlowSOM, all gates must be drawn on the same compensation, and if any gates exist in the experiment, that compensation must be selected. * expectedClusters — Valid options are any of 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400. Defaults to 100. * expectedMetaclusters — Valid options are any integer between 3 and 90 (inclusive), as long as this number is less than expectedClusters. Defaults to 10. * gateSetId — POPULATION_ID parameter in the gateSetId attribute is the gateSetId attribute value of the population on which to run FlowSOM. Note that this argument is the gateSetId attribute of a population object and not the ID of the object itself. This secondary ID is experiment-specific and will be a smaller number. An argument of 0 corresponds to the ungated population, i.e., the raw data with no filtering applied. The default for this setting is 0 (Ungated). Another term for a population is a "gate set" because it is a set of gates (learn more). * iterations — Can be set to any integer between 1 and 100 (inclusive). Defaults to 10. * normalizeScales — Can be true or false. Defaults to false. * randomSeed — Accepts a positive integer value and sets a specific random seed to that value. If this parameter is not specified or set to 0, autoSeed will automatically be set to true, and a seed value will be randomly chosen, so that afterward it can be referred to for reproducing the analysis results. * SOMCreationMethod — Two valid options: create_new or import_existing. If import_existing is selected, then externalSOMAnalysisId must be set to a valid value. * externalSOMAnalysisId — Only applies if SOMCreationMethod is set to import_existing. It must be set to the id of a FlowsomAdvancedAnalysis corresponding to a successfully completed FlowSOM run which has the SOM the user wishes to import. OPTIONAL ADVANCED OUTPUT SETTINGS: * channelsToPlot — An array of normalizedShortNameIds corresponding to channels to output channel-colored MST plots for. If unspecified, it will output these plots for all clustering channels and all annotated channels. * clusterSizeType — Valid options are relative, fixed, or both. Defaults to relative. * fixedClusterSize — Only applies if clusterSizeType is set to fixed or both. Accepts integers between 1 and 40 (inclusive). Defaults to 8. * gateSetNamesToLabel — An array of names of gateSets (populations) to label in the population pie plots. If unspecified, it will include all populations in these plots. * maxRelativeClusterSize — Only applies if clusterSizeType is set to relative or both. Accepts integers between 2 and 40 (inclusive). Defaults to 15. * outputFileType — Valid options are pdf, png, or both. Defaults to pdf. Note that selecting png or both will significantly increase the file size of the results .zip. * showBackgroundOnLegend — Can be true or false. Defaults to false. * showBackgroundOnChannelColoredMSTs — Can be true or false. Defaults to false. * showBackgroundOnPopulationPies — Can be true or false. Defaults to true. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw View More { "options": { "clusteringChannels": [{{CHANNEL_ID_1}}, {{CHANNEL_ID_2}}], "clusteringMethod": "consensus", "compensationId": {{COMP_ID}}, "desiredEventsPerFile": 50000, "desiredTotalEvents": 100000, "eventSamplingMethod": "proportional", "expectedClusters": 100, "expectedMetaclusters": 10, Example Request Update FlowSOM Details View More curl --location -g --request PUT 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/{{FLOWSOM_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "options": { "clusteringChannels": [{{CHANNEL_ID_1}}, {{CHANNEL_ID_2}}], "clusteringMethod": "consensus", "compensationId": {{COMP_ID}}, "desiredEventsPerFile": 50000, "desiredTotalEvents": 100000, DEL Delete FlowSOM https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/{{FLOWSOM_ID}} Delete a FlowSOM analysis permanently. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Delete FlowSOM curl --location -g --request DELETE 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/{{FLOWSOM_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' POST Copy FlowSOM Settings https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/{{FLOWSOM_ID}}/copy_settings Copy an existing FlowSOM analysis to create a new FlowSOM analysis with the same settings. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Copy FlowSOM Settings curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/{{FLOWSOM_ID}}/copy_settings' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "flowsom": { "id": 2368, "name": "FlowSOM Example Analysis (copy)", "type": "FlowsomAdvancedAnalysis", "author": "Cytobank Support", "status": "New", "sourceExperiment": 2939, "createdExperiment": null, "attachment_id": null, "canceled": false, PUT Rename FlowSOM https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/{{FLOWSOM_ID}}/rename Rename a FlowSOM analysis. This is useful for post-run modifications of FlowSOM analysis name, since the update command is not allowed after the run is started. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "name": "API FlowSOM Experiment - Rename" } Example Request Rename FlowSOM curl --location -g --request PUT 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/citrus/{{CITRUS_ID}}/rename' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "API CITRUS Experiment - Rename" }' Example Response 200 OK Body Header(0) View More { "flowsom": { "id": 442, "name": "API FlowSOM Experiment - Rename", "type": "FlowsomAdvancedAnalysis", "author": "Cytobank Support", "status": "New", "sourceExperiment": 1424, "createdExperiment": null, "attachment_id": null, "canceled": false, POST Run FlowSOM https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/{{FLOWSOM_ID}}/run Run a FlowSOM analysis. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Run FlowSOM curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/{{FLOWSOM_ID}}/run' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "citrus": { "id": 442, "name": "API FlowSOM Experiment - Rename", "type": "FlowsomAdvancedAnalysis", "author": "Cytobank Support", "status": "New", "sourceExperiment": 1424, "createdExperiment": null, "attachment_id": null, "canceled": false, GET Show FlowSOM Status https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/{{FLOWSOM_ID}}/status Show a FlowSOM analysis execution status. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Show FlowSOM Status curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/flowsom/{{FLOWSOM_ID}}/status' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "flowsomStatus": { "id": 442, "name": "API FlowSOM Experiment - Rename", "status": "Running", "progress": 23, "startTime": "2018-08-04T00:26:40Z", "endTime": 0, "runtime": 0, "progressMessage": "Initializing FlowSOM algorithm...", "createdExperiment": null GET Download FlowSOM Results https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/{{flowsom_attachment_id}}/download Download the results for a successful FlowSOM analysis. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Download FlowSOM Results curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/{{flowsom_attachment_id}}/download' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' SPADE SPADE is an algorithm available in Cytobank that takes multi-parameter data, performs clustering, and represents the clustered data as a two-dimensional minimum spanning tree of connected clusters. Learn more about SPADE in Cytobank. GET List SPADE Analyses https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade List spade tasks for an experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request List SPADE Analyses curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "spade": [ { "id": 187, "name": "Running SPADE", "status": "Running", "createdAt": "2016-11-10T07:04:58Z", "updatedAt": "2017-01-04T00:33:58Z", "author": "Cytobank Support", "sourceExperiment": 1424, "createdExperiment": 1425 GET Show SPADE Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}?include_settings=1 Show a specific SPADE analysis in an experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} PARAMS include_settings 1 Bodyformdata Example Request Show SPADE Details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}?include_settings=1' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "spade": { "id": 229, "name": "new API SPADE", "status": "New", "createdAt": "2017-01-04T00:39:20Z", "updatedAt": "2017-01-04T00:39:20Z", "author": "Cytobank Support", "sourceExperiment": 1541, "createdExperiment": 1542, "settings": { POST Create SPADE https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/ Create a new SPADE analysis with default settings. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "spade": { "name": "new spade task" } } Example Request Create SPADE View More curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "spade": { "name": "new API SPADE" } }' Example Response 200 OK Body Header(0) View More { "spade": { "id": 229, "name": "new API SPADE", "status": "New", "createdAt": "2017-01-04T00:39:20Z", "updatedAt": "2017-01-04T00:39:20Z", "author": "Cytobank Support", "sourceExperiment": 1541, "createdExperiment": 1542, "settings": { PUT Update SPADE Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/ Update SPADE settings. Updates can only be made before running the SPADE analysis. Learn more about SPADE settings. POPULATION.GATE_SET_ID parameter is the gateSetId attribute value of the population on which to run SPADE. Note that this argument is the gateSetId attribute of a population object and not the ID of the object itself. This secondary ID is experiment-specific and will be a smaller number. An argument of 0 corresponds to the ungated population, i.e., the raw data with no filtering applied. Another term for a population is a "gate set" because it's a set of gates (learn more). CHANNEL_ID parameters are the normalizedShortNameId attribute of the channels to run SPADE on. This information can be retrieved from the Panels endpoints. downSampledEventsTarget attribute can have a value of either "percent" or "absoluteNumber" with a corollary numeric argument. For analyses using fold change, all files in the experiment must be represented within a fold change group, and only within one group. Learn more about fold change setup. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw View More { "spade": { "name": "spade_update_test", "compensationId": -2, "targetNumberOfNodes": 200, "population": 1, "clusteringChannels": [1, 2, 53], "downSampledEventsTarget": { "percent": 20 }, Example Request Update SPADE Details View More curl --location -g --request PUT 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "spade": { "name": "new API SPADE - Updated", "compensationId": {{COMP_ID}}, "targetNumberOfNodes": 200, "population": {{POPULATION.GATE_SET_ID}}, "clusteringChannels": [{{CHANNEL_ID_1}}, {{CHANNEL_ID_2}}, {{CHANNEL_ID_3}}], Example Response 200 OK Body Header(0) View More { "spade": { "id": 229, "name": "new API SPADE - Updated", "status": "New", "createdAt": "2017-01-04T00:39:20Z", "updatedAt": "2017-01-04T00:51:10Z", "author": "Cytobank Support", "sourceExperiment": 1541, "createdExperiment": 1542, "settings": { DEL Delete SPADE https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}} Delete a SPADE analysis permanently. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Delete SPADE curl --location -g --request DELETE 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' POST Copy SPADE Settings https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/copy_settings Copy an existing SPADE analysis to create a new SPADE analysis with the same settings. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Copy SPADE Settings curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/copy_settings' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "spade": { "id": 230, "name": "Copy of new API SPADE - Rename", "status": "New", "createdAt": "2017-01-04T00:51:40Z", "updatedAt": "2017-01-04T00:51:40Z", "author": "Cytobank Support", "sourceExperiment": 1541, "createdExperiment": 1543 } PUT Rename SPADE https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/rename Rename a SPADE analysis. This is useful for post-run modifications of SPADE analysis name, since the update command is not allowed after the run is started. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "spade": { "name": "new API SPADE - Rename" } } Example Request Rename SPADE View More curl --location -g --request PUT 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/rename' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "spade": { "name": "new_spade_name" } }' Example Response 200 OK Body Header(0) { "name": "new API SPADE - Rename" } POST Run SPADE https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/run Run a SPADE analysis. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Run SPADE curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/run' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "spadeStatus": { "id": 229, "name": "new API SPADE - Rename", "status": "Pending", "progress": 0, "startTime": 0, "endTime": 0, "runtime": 0, "progressMessage": "Pending" } GET Show SPADE Status https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/status Show SPADE analysis execution status. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Show SPADE Status curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/status' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "spadeStatus": { "id": 229, "name": "new API SPADE - Rename", "status": "Running", "progress": 9, "startTime": "2017-01-04T00:55:17Z", "endTime": 0, "runtime": 0, "progressMessage": "Computing medians for file2_intact cells.fcs.density.fcs.cluster.fcs" } GET Download Complete Results Package https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/download?item=full_data Download the complete results package for a successful SPADE run. Includes all the components that can be downloaded seperately, and more. HEADERS Authorization Bearer {{AUTH_TOKEN}} PARAMS item full_data Bodyformdata Example Request Download Complete Results Package curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/download?item=full_data' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' GET Download GML Files https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/download?item=gml Download GML files for a successful SPADE run. The GML files represent the SPADE tree graph structure with nodes and edges. Each node object in this file also contains all statistical information. HEADERS Authorization Bearer {{AUTH_TOKEN}} PARAMS item gml Bodyformdata Example Request Download GML Files curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/download?item=gml' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' GET Download Global Boundaries Table https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/download?item=global_boundaries_table Download Global Boundaries table for a successful SPADE run. HEADERS Authorization Bearer {{AUTH_TOKEN}} PARAMS item global_boundaries_table Bodyformdata Example Request Download Global Boundaries Table curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/download?item=global_boundaries_table' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' GET Download Layout Table https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/download?item=layout_table Download Layout table for a successful SPADE run. HEADERS Authorization Bearer {{AUTH_TOKEN}} PARAMS item layout_table Bodyformdata Example Request Download Layout Table curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/download?item=layout_table' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' GET Download Statistics Table https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/download?item=statistics_table Download Statistics tables for a successful SPADE run. HEADERS Authorization Bearer {{AUTH_TOKEN}} PARAMS item statistics_table Bodyformdata Example Request Download Statistics Table curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/download?item=statistics_table' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' GET Download Clusters Table https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/download?item=clusters_table Download Clusters table for a successful SPADE run. HEADERS Authorization Bearer {{AUTH_TOKEN}} PARAMS item clusters_table Bodyformdata Example Request Download Clusters Table curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/download?item=clusters_table' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' GET Show SPADE Bubbles https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/show_bubbles Show current node:bubble relationships for a SPADE analysis. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Show SPADE Bubbles curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/show_bubbles' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "spade": { "bubbles": [ { "name": "CD8+", "nodes": [ 101, 105, 108, 117, 118, POST Set SPADE Bubbles https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/set_bubbles Set node:bubble relationships for a SPADE analysis. This will overwrite existing information. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw View More { "spade": { "bubbles": [ { "name": "CD8+", "nodes": [ 101, 105, 108, 117, 118, Example Request Set SPADE Bubbles View More curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/show_bubbles' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --data-raw '{ "spade": { "bubbles": [ { "name": "CD8+", "nodes": [ 101, 105, 108, Example Response 200 OK Body Header(0) View More { "spade": { "bubbles": [ { "name": "CD8+", "nodes": [ 101, 105, 108, 117, 118, POST Export SPADE Bubbles to New Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/export_bubbles_to_new_experiment Export the given SPADE bubbles as FCS files into a new experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "spade": { "bubbles": ["CD8+", "CD4+"] } } Example Request Export SPADE Bubbles to New Experiment View More curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/export_bubbles_to_new_experiment' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "spade": { "bubbles": ["CD8+", "CD4+"] } }' Example Response 200 OK Body Header(0) View More { "experiment": { "id": 1544, "version": 0, "purpose": "test", "comments": null, "public": false, "deleted": false, "sources": "", "experimentName": "new API SPADE (Clone)", "gateVersion": 0, POST Copy SPADE Results https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/copy_results Clone a successful completed SPADE analysis. Creates a copy in the same experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json Example Request Copy SPADE Results curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/spade/{{SPADE_ID}}/copy_results' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '' Example Response 200 OK Body Header(0) View More { "spade": { "id": 231, "name": "Copy of new API SPADE - Rename", "status": "Completed", "createdAt": "2017-01-04T00:39:20Z", "updatedAt": "2017-01-04T01:02:18Z", "author": "Chris Ciccolella", "sourceExperiment": 1541, "createdExperiment": 1545 } viSNE viSNE is a powerful algorithm for reducing dimensionality and finding patterns within data. Learn more about viSNE in Cytobank. GET List viSNE Analyses https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne List viSNE analyses in an experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request List viSNE Analyses curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "visne": [ { "id": 111, "name": "Interface viSNE run", "status": "New", "sourceExperiment": 418, "createdExperiment": null, "createdAt": "2017-04-13T06:07:27Z", "updatedAt": "2017-04-13T06:12:37Z" }, GET Show viSNE Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/{{VISNE_ID}}?include_settings=1 Show a specific viSNE analysis in an experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} PARAMS include_settings 1 Bodyformdata Example Request Show viSNE Details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/{{VISNE_ID}}?include_settings=1' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "visne": { "id": 112, "name": "New API viSNE run", "status": "New", "sourceExperiment": 418, "createdExperiment": null, "settings": { "samplingTotalCount": 100000, "samplingTargetType": "proportional", "compensationId": -2, POST Create viSNE https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/ Create a new viSNE analysis with default settings. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "visne": { "name": "visne_api_demo_day" } } Example Request Create viSNE View More curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "visne": { "name": "New API viSNE" } }' Example Response 200 OK Body Header(0) View More { "visne": { "id": 112, "name": "New API viSNE run", "status": "New", "sourceExperiment": 418, "createdExperiment": null, "settings": { "samplingTotalCount": 100000, "samplingTargetType": "proportional", "compensationId": -2, PUT Update viSNE Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/{{VISNE_ID}} Update viSNE settings. Updates can only be made before running the viSNE analysis. Learn more about viSNE settings. CHANNEL_ID parameters are the normalizedShortNameId attribute of the channels on which to run viSNE. This information can be retrieved from the Panels endpoints. SAMPLING_METHOD parameter can have a value of either "proportional" or "equal". Within the populationSelections nested object, the POPULATION.GATE_SET_ID parameters are the gateSetId attribute value of the populations on which to run viSNE. Note that this argument is the gateSetId attribute of a population object and not the ID of the object itself. This secondary ID is experiment-specific and will be a smaller number. An argument of 0 corresponds to the ungated population, i.e., the raw data with no filtering applied. Another term for a population is a "gate set" because it's a set of gates (learn more). Multiple populations can be selected for a single viSNE run and FCS files can appear redundantly among different population selections. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw View More { "visne": { "name": "visne_api_run_test", "channels": [27,28,87,268,269,270,271,272], "compensationId": -2, "samplingTotalCount": 10000, "samplingTargetType": "proportional", "populationSelections": [ { "id": 1, Example Request Update viSNE Details View More curl --location -g --request PUT 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/{{VISNE_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "visne": { "name": "viSNE analysis - Updated", "channels": [{{CHANNEL_ID_1}}, {{CHANNEL_ID_2}}, {{CHANNEL_ID_3}}], "compensationId": {{COMP_ID}}, "samplingTotalCount": {{TOTAL_EVENTS_IN_RUN}}, "samplingTargetType": "{{SAMPLING_METHOD}}", Example Response 200 OK Body Header(0) View More { "visne": { "id": 112, "name": "viSNE analysis - Updated", "status": "New", "sourceExperiment": 418, "createdExperiment": null, "settings": { "samplingTotalCount": 85000, "samplingTargetType": "proportional", "compensationId": -2, DEL Delete viSNE https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/{{VISNE_ID}} Delete a viSNE analysis permanently. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Delete viSNE curl --location -g --request DELETE 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/{{VISNE_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' POST Copy viSNE Settings https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/{{VISNE_ID}}/copy_settings Copy an existing viSNE analysis to create a new viSNE analysis with the same settings. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Copy viSNE Settings curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/{{VISNE_ID}}/copy_settings' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "visne": { "id": 114, "name": "Copy of viSNE analysis - Updated", "status": "New", "sourceExperiment": 418, "createdExperiment": null, "createdAt": "2017-04-13T06:54:55Z", "updatedAt": "2017-04-13T06:54:55Z" } } PUT Rename viSNE https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/{{VISNE_ID}}/rename Rename a viSNE analysis. This is useful for post-run modifications of viSNE analysis name, since the update command is not allowed after the run is started. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "visne": { "name": "foooname" } } Example Request Rename viSNE View More curl --location -g --request PUT 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/{{VISNE_ID}}/rename' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "visne": { "name": "API viSNE - Renamed" } }' Example Response 200 OK Body Header(0) View More { "visne": { "id": 112, "name": "API viSNE - Renamed", "status": "New", "sourceExperiment": 418, "createdExperiment": null, "createdAt": "2017-04-13T06:11:03Z", "updatedAt": "2017-04-13T06:55:54Z" } } POST Run viSNE https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/{{VISNE_ID}}/run Run a viSNE analysis. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Run viSNE curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/{{VISNE_ID}}/run' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "visneStatus": { "id": 112, "name": "API viSNE - Renamed", "status": "Pending", "progress": 0, "startTime": 0, "endTime": 0, "runtime": 0, "progressMessage": "Pending", "createdExperiment": null GET Show viSNE Status https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/{{VISNE_ID}}/status Show viSNE analysis execution status. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Show viSNE Status curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/advanced_analyses/visne/{{VISNE_ID}}/status' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "visneStatus": { "id": 112, "name": "API viSNE - Renamed", "status": "Running", "progress": 23, "startTime": "2017-04-13T07:03:25Z", "endTime": 0, "runtime": 0, "progressMessage": "Iteration 1: KL divergence is 118.202986", "createdExperiment": null Attachments Only FCS files can be analyzed in Cytobank, but any file can be uploaded as an attachment. Exported PDFs, statistics, and files also automatically attach themselves to the Experiment they are exported from. Interact with attachments using these endpoints. Learn more about attachments in Cytobank GET List Attachments for Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments List the attachments in an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request List Attachments for Experiment curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "attachments": [ { "id": 3014, "filename": "CyTOF_PBMC_27_v1.acs", "size": 12241855, "description": "Original ACS File that this experiment was created from.", "type": "UserAttachment", "experimentId": 1412, "uploadedById": 5, "mimeType": null, GET Show Attachment Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/{{ATTACHMENT_ID}} Show details for an attachment in an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Show Attachment Details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/{{ATTACHMENT_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "attachment": { "id": 3265, "filename": "Statistics_export.zip", "size": 781634, "description": "Exported statistics from experiment '2012-12 Healthy Human PBMC w/ 26 Surface Markers from DVS (Clone)'.", "type": "ExportAttachment", "experimentId": 1412, "uploadedById": 5, "mimeType": null, "md5sum": "81a9174c3ab04cc534b7e2993a2314c5", POST Upload Attachment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/upload Upload an attachment to an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata file @{{FILE_NAME}} Example Request Upload Attachment curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/upload' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --form 'file="@{{FILE_NAME}}"' GET Download Attachment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/{{ATTACHMENT_ID}}/download Download an attachment from an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Download Attachment curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/{{ATTACHMENT_ID}}/download' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' GET Download All Attachments from Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/download_zip Download a ZIP file of all attachments from an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Download All Attachments from Experiment curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/download_zip' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' PUT Update Attachment Description https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/{{ATTACHMENT_ID}} Update an attachment description. HEADERS Authorization Bearer {{JWT_TOKEN}} Content-Type application/json BODYraw { "attachments": { "description": "Description goes here..." } } Example Request Update Attachment Description View More curl --location -g --request PUT 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/{{ATTACHMENT_ID}}' \ --header 'Authorization: Bearer {{JWT_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "attachments": { "description": "Description goes here..." } }' DEL Delete Attachment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/{{ATTACHMENT_ID}} Delete an attachment from an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Delete Attachment curl --location -g --request DELETE 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/attachments/{{ATTACHMENT_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Authentication Every call to the Cytobank API must be accompanied by an authentication token. Tokens are generated from the Authenticate API endpoint with a username and password, or on a user profile page within Cytobank. Tokens should be kept secure as they confer access to the data and analyses of an account. Tokens expire after 8 hours by default but this figure my change depending on custom configurations of an Enterprise Cytobank. Use the Logout / Revoke API endpoints to invalidate one or all tokens for a user account. All issued tokens can be invalidated from the user profile page within Cytobank as well. POST Authenticate https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/authenticate Post username and password to receive an authentication token. The token comes embedded in an object that describes the user that requested it. HEADERS Accept application/json charset UTF-8 Content-Type application/json BODYraw { "username": "{{USERNAME}}", "password": "{{PASSWORD}}" } Example Request Authenticate curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/authenticate' \ --header 'Accept: application/json' \ --header 'charset: UTF-8' \ --header 'Content-Type: application/json' \ --data-raw '' Example Response 200 OK Body Header(10) View More { "user": { "id": 22, "username": "CytobankSupport", "location": "Mountain View", "organization": "Cytobank", "twitter": "", "bio": "Cytobanker", "firstName": "Cytobank", "lastName": "Support", "email": "support@cytobank.org", POST Logout https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/logout Invalidate the token used in the call to this endpoint. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Logout curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/logout' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' POST Revoke All Tokens https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/revoke_tokens Invalidate all existing tokens for the user making this call. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Revoke All Tokens curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/revoke_tokens' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' POST Revoke all Tokens for any User (Admin only) https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/revoke_user_tokens Revoke all tokens for a given user. This endpoint only works for admins of the Cytobank being accessed. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw {"user_id": {{USER_ID}}} Example Request Revoke all Tokens for any User (Admin only) curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/revoke_user_tokens' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{"user_id": {{USER_ID}}}' Compensations Get information about compensations stored in Cytobank with these endpoints. For information about file-internal compensation for an individual FCS file, consult the FCS Files endpoints. Learn more about compensation in Cytobank. GET List Compensations for Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/compensations List compensations in an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request List Compensations for Experiment curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/compensations' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "compensations": [ { "id": 151, "name": "Example Comp", "sources": [ { "name": "Ax488-A", "id": 36, "shortName": "Ax488-A" }, GET Show Compensation Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/compensations/{{COMP_ID}} Show details for a compensation. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Show Compensation Details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/compensations/151' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More { "compensation": { "id": 151, "name": "Example Comp", "sources": [ { "name": "Ax488-A", "id": 36, "shortName": "Ax488-A" }, { POST Upload Compensation CSV https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/upload_compensation_matrix Upload a compensation CSV to an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Upload Compensation CSV curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/upload_compensation_matrix' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --form 'file="@{{FILE_NAME}}"' Example Response 200 OK Body Header(0) { "message": "Successfully imported compensation from uploaded file test_comp.csv" } DROP DROP allows any numeric matrix data to be uploaded to Cytobank for analysis. Learn more about DROP. POST Upload FCS File (CSV to FCS) https://{{CYTOBANK}}/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/upload Upload spreadsheet file for conversion. The uploaded file will be converted to FCS and be found within the Experiment to which it's uploaded. HEADERS Authorization Bearer {{user_jwt}} Bodyformdata file Can upload CSV/TSV/TXT/FCS convertDelimitedFiles true This can be true/false dataMatrixStartRow 2 dataMatrixStartColumn 1 skippedColumns[] 2 Example Request Upload FCS File (CSV to FCS) curl --location -g --request POST 'https://{{CYTOBANK}}/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/upload' \ --header 'Authorization: Bearer {{user_jwt}}' \ --form 'file=@"/path/to/file"' \ --form 'convertDelimitedFiles="true"' \ --form 'dataMatrixStartRow="2"' \ --form 'dataMatrixStartColumn="1"' \ --form 'skippedColumns[]="2"' POST Upload ZIP FCS File (CSV to FCS) https://{{CYTOBANK}}/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/upload_zip Upload zip file of spreadsheets to convert. Each file within the zip should have the same properties for dataMatrixStartRow and dataMatrixStartColumn. HEADERS Authorization Bearer {{user_jwt}} Bodyformdata file Can upload CSV/TSV/TXT/FCS convertDelimitedFiles true This can be true/false dataMatrixStartRow 2 dataMatrixStartColumn 1 skippedChannels 2 [ , , ... ] Example Request Upload ZIP FCS File (CSV to FCS) curl --location -g --request POST 'https://{{CYTOBANK}}/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/upload_zip' \ --header 'Authorization: Bearer {{user_jwt}}' \ --form 'file=@"/path/to/file"' \ --form 'convertDelimitedFiles="true"' \ --form 'dataMatrixStartRow="2"' \ --form 'dataMatrixStartColumn="1"' \ --form 'skippedChannels="2"' Experiments An Experiment is a container for data and analyses in Cytobank. If data are on Cytobank, they must be within an Experiment. Configurations such as gates, compensations, scales, Sample Tags, and illustrations are also linked to an individual Experiment. Within the Cytobank interface, the Experiment Summary Page is a useful integration point for information about an Experiment. GET List Experiments https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments List all accessible Experiments. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request List Experiments curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' GET Show Experiment Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}} Show details for an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Show Experiment Details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More { "experiment": { "id": 10559, "version": 23, "purpose": "Stimulate PBMC with IL6, IL10, and LPS. Measure phosphorylation of Stat3 and p38 after 15 minutes of stimulation. Stain for CD4+ T cells, CD4- T cells, monocytes, and B cells.", "comments": null, "public": false, "deleted": false, "sources": "", "experimentName": "PBMC Experiment (fluorescence) (Clone)", "gateVersion": 1, POST Create Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments Create a new Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw View More { "experiment": { "experimentName": "My API Experiment", "primaryResearcherId": {{USER_ID}}, "principalInvestigatorId": {{PI_ID}}, "projectId": {{PROJECT_ID}}, "purpose": "Trying out the Cytobank API", "comments": "These become the comments in the Experiment" } } Example Request CreateExperiment View More curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "experiment": { "experimentName": "API Experiment", "primaryResearcherId": {{USER_ID}}, "principalInvestigatorId": {{PI_ID}}, "projectId": {{PROJECT_ID}}, "purpose": "Trying out the Cytobank API", Example Response 200 OK Body Header(9) View More { "experiment": { "id": 7598, "version": 0, "purpose": "API testing", "comments": "Testing API", "public": false, "deleted": false, "sources": "", "experimentName": "New API experiment", "gateVersion": 0, PUT Update Experiment Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}} Update details for an Experiment. To update only certain attributes for an Experiment, pass only those attributes in the update request. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw View More { "experiment": { "experimentName": "My API Experiment - updated", "primaryResearcherId": {{USER_ID}}, "principalInvestigatorId": {{PI_ID}}, "projectId": {{PROJECT_ID}}, "purpose": "Trying out the Cytobank API", "comments": "This becomes the comments in the Experiment" } } Example Request Update Experiment Details View More curl --location -g --request PUT 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "experiment": { "experimentName": "My API Experiment - updated", "primaryResearcherId": {{USER_ID}}, "principalInvestigatorId": {{PI_ID}}, "projectId": {{PROJECT_ID}}, "purpose": "Trying out the Cytobank API", POST Clone Experiment (Full Clone) https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/clone Fully clone an Experiment. Learn more about the full clone functionality. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Clone Experiment (Full Clone) curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/clone' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' POST Clone Experiment (Selective Clone) https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/selective_clone Selectively clone an Experiment. Learn more about the selective clone functionality. To include all files in the selective clone without passing all the IDs, simply but -1 as the only element in the fcsFileIds array. I.e.: "fcsFileIds": [-1] HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw View More { "experiment": { "experimentName": "selectively cloned Experiment", "primaryResearcherId": {{USER_ID}}, "principalInvestigatorId": {{PI_ID}}, "cloneGates": true, "cloneAnnotations": true, "cloneAttachments": true, "fcsFileIds": [{{FCS_FILE_ID_1}}, {{FCS_FILE_ID_2}}, {{FCS_FILE_ID_3}}], "cloneCompensations": true, Example Request Clone Experiment (Selective Clone) View More curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/selective_clone' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "experiment": { "experimentName": "selectively cloned Experiment", "primaryResearcherId": {{USER_ID}}, "principalInvestigatorId": {{PI_ID}}, "cloneGates": true, "cloneAnnotations": true, PUT Trash Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}} Set the deleted attribute of this Experiment to true, which moves it to the trash. This is reversible and not to be confused with permanent deletion. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "experiment": { "deleted": {{TRUEFALSE}} } } Example Request Trash Experiment curl --location -g --request PUT 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/10559' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '' Example Response 200 OK Body Header(10) View More { "experiment": { "id": 10559, "version": 23, "purpose": "Stimulate PBMC with IL6, IL10, and LPS. Measure phosphorylation of Stat3 and p38 after 15 minutes of stimulation. Stain for CD4+ T cells, CD4- T cells, monocytes, and B cells.", "comments": null, "public": false, "deleted": true, "sources": "", "experimentName": "PBMC Experiment (fluorescence) (Clone)", "gateVersion": 1, DEL Delete Experiment Permanently https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}} Delete the Experiment and all analyses (including SPADE, viSNE, etc.) permanently. This is not reversible. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Delete Experiment Permanently curl --location -g --request DELETE 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' FCS Files GET List FCS Files for Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files List all FCS files in an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request List FCS Files in Experiment curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More { "fcsFiles": [ { "id": 209114, "filename": "pbmc_lrs005_il10.fcs", "cytometer": "LSRII", "mode": "L", "md5sum": "0a6ce75257e4c2694643136852e5e877", "clustered": false, "guid": "823de422-6867-46f1-90b8-4de6298451a4", "threshold": "FSC,18000", GET Show FCS File Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/{{FCS_FILE_ID_1}} Show details for an FCS file in an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Show FCS File Details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/{{FCS_FILE_ID_1}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More { "fcs_file": { "id": 209114, "filename": "pbmc_lrs005_il10.fcs", "cytometer": "LSRII", "mode": "L", "md5sum": "0a6ce75257e4c2694643136852e5e877", "clustered": false, "guid": "823de422-6867-46f1-90b8-4de6298451a4", "threshold": "FSC,18000", "severity": 0, GET Show File-Internal Compensation Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/{{FCS_FILE_ID_1}}/compensation Show File-Internal Compensation (aka spillover matrix, spill matrix, spill string) details for an FCS file in an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Show File-Internal Compensation Details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/{{FCS_FILE_ID_1}}/compensation' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More { "FcsFileInternalCompensation": { "id": null, "name": "pbmc_lrs005_il10_pbmc_lrs005_il10.fcs_-_IL10_Ungated.fcs - spill string", "sources": [ { "name": "pStat3", "id": 36, "shortName": "Ax488-A" }, { GET Download Single FCS File https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/{{FCS_FILE_ID_1}}/download Download a specific FCS file from an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Download Single FCS File curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/{{FCS_FILE_ID_1}}/download' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' GET Zip & Download Specific FCS Files https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/download_zip?fcs_file_ids={{FCS_FILE_ID_1}},{{FCS_FILE_ID_2}},{{FCS_FILE_ID_3}} Download a group of FCS files from an Experiment as a ZIP file. The files to be downloaded are specified by ID in the URL. HEADERS Authorization Bearer {{AUTH_TOKEN}} PARAMS fcs_file_ids {{FCS_FILE_ID_1}},{{FCS_FILE_ID_2}},{{FCS_FILE_ID_3}} BODYraw { "fcsFiles": { "fcsFileIds": [4845, 4846] } } Example Request Zip & Download Specific FCS Files curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/download_zip?fcs_file_ids={{FCS_FILE_ID_1}},{{FCS_FILE_ID_2}},{{FCS_FILE_ID_3}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --data-raw '{ "fcsFiles": { "fcsFileIds": [4845, 4846] } }' GET Zip & Download All FCS Files https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/download_zip Zip & Download all FCS Files from an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} BODYraw { "fcsFiles": { "fcsFileIds": [4845, 4846] } } Example Request Zip & Download All FCS Files curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/download_zip' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --data-raw '{ "fcsFiles": { "fcsFileIds": [4845, 4846] } }' POST Upload FCS File to Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/upload Upload an FCS file to an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata file @{{FILE_NAME}} Example Request Upload FCS File to Experiment curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/upload' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --form 'file="@{{FILE_NAME}}"' POST Upload Zip of FCS Files to Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/upload_zip Upload one or more FCS files to an Experiment as a ZIP file. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata file @{{FILE_NAME}} Example Request Upload Zip of FCS Files to Experiment curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/fcs_files/upload_zip' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --form 'file="@{{FILE_NAME}}"' Gates and Populations In Cytobank there is a distinction between gates and populations. A gate is simply a shape drawn on a plot. A population is a set of gates and can have parents and children. Learn more about gates and populations. Currently gate and population information can only be read and not written to Cytobank via the JSON API. To write gates and populations to Cytobank via the API, the Upload Gating-ML endpoint should be used. GET List Gates for Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/gates List gates for an Experiment. Currently only the Scratch Gates from the gating interface are returned. These have a version of -1. This is to be contrasted with Experiment Gates, which will have a version number that is a positive integer equal to the number of times the version has been incremented in the gating interface. Learn more about gate versioning in Cytobank. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request List Gates for Experiment curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/gates' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More { "gates": [ { "id": 1428108, "name": "intact cells", "type": "PolygonGate", "tailored": false, "tailoredPerPopulationGateSetId": null, "tailoredPerPopulation": false, "version": -1, "experimentId": 10559, GET Show Gate Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/gates/{{GATE_ID}} Show details for a gate in an Experiment. The gate ID passed in the request is the value of the id attribute of the gate and not the gate_id attribute. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Show Gate Details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/gates/{{GATE_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More { "gate": { "id": 1428108, "name": "intact cells", "type": "PolygonGate", "tailored": false, "version": -1, "experimentId": 10559, "xNormalizedShortNameId": 1, "yNormalizedShortNameId": 4, "compensationId": 151, GET List Populations for Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/populations List populations (aka gate sets) for an Experiment. Currently only the Scratch Populations from the gating interface are returned. These have a version of -1. This is to be contrasted with Experiment Populations, which will have a version number that is a positive integer equal to the number of times the version has been incremented in the gating interface. Learn more about gate versioning in Cytobank. The same principle applies to populations. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request List Populations curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/populations' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More { "populations": [ { "id": 45547, "name": "intact cells", "version": -1, "experimentId": 10559, "gateSetId": 1, "createdAt": "2016-07-26T22:02:10Z", "updatedAt": "2016-07-26T22:02:10Z", "definition": { GET Show Population Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/populations/{{POPULATION_ID}} Show details for a population (aka gate set) in an Experiment. Pass the value for the id attribute of the population and not the gateSetId attribute. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Show Population Details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/10559/populations/{{POPULATION_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More { "population": { "id": 45549, "name": "CD33+ monocytes", "version": -1, "experimentId": 10559, "gateSetId": 3, "createdAt": "2016-07-26T22:02:10Z", "updatedAt": "2016-07-26T22:02:10Z", "definition": { "gates": [ GET Download Gating-ML https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/download_gatingml Download gates via Gating-ML for an Experiment. Learn more about Gating-ML. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Download Gating-ML curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/download_gatingml' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' POST Upload Gating-ML https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/upload_gatingml Upload gates to an Experiment via a Gating-ML file. Learn more about Gating-ML. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata file @{{FILE_NAME}} Example Request Upload Gating-ML curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/upload_gatingml' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --form 'file="@{{FILE_NAME}}"' Panels A collection of channels, the markers being studied on them, and the FCS files this applies to form a panel. Learn more about panels in Cytobank. GET List Panels for Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/panels List panels in an Experiment and associated details. The object returned is an array of panels. Each panel has an id, name, array of channels, array of files that are in the panel, and a panelChannelMappings object. Each file will only appear in one (or zero) panels. The panelChannelMappings object gives information about the order that the channels appear within files within panels, because groups of files within the same panel could have channels in different orders. While potentially critical for index-based operations on features within FCS files on a local computer, no operations via the Cytobank API will rely on this ordering information and thus this nested object can be ignored. Various functions of the Cytobank API will require a mastery of using the list of panels and nested arrays of channels and files. Many Cytobank API endpoints take an argument of normalizedShortNameId (a numeric proxy for the shortName), which is an attribute of a channel, and describes unambiguously which column of data to operate on for a given file. The longName of the channel is not guaranteed to be unique within a panel, although it usually is. Typically the longName is the starting point for analysis. Consider fetching statistics, for example. The objective might be to fetch median intensity of CD8+ T cells on the pSTAT3 channel in a particular named file. The Statistics endpoint requires id attributes for all these components to return statistics. The Gates and Populations and FCS Files endpoints would be used to get the id and gateSetId attribute for their respective components. Next, the normalizedShortNameId is needed for pSTAT3. This is obtained by first fetching panel information from this endpoint. Next, the arrays of file ids are searched to establish which panel the file is in. When the panel is found, its list of channels is searched by longName for pSTAT3. This gives a normalizedShortNameId and the key to submitting the statistics request. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request List Panels curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/panels' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More { "panels": [ { "id": 40558, "name": "Panel 1", "channels": [ { "shortName": "Ax488-A", "longName": "pStat3", "normalizedShortNameId": 36, "fcsFileChannelIndex": 3 GET Show Panel Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/panels/{{PANEL_ID}} Show details for a panel in an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Show Panel Details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/panels/{{PANEL_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More { "id": 40558, "name": "Panel 1", "channels": [ { "shortName": "Ax488-A", "longName": "pStat3", "normalizedShortNameId": 36, "fcsFileChannelIndex": 3 }, { Sample Tags GET Download Sample Tags https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/download_sample_tags Download sample tags from an Experiment as a TSV (tab separated values) table file. Learn more about exporting and importing sample tags. Currently there is no JSON support for Sample Tags and the information can only be exchanged via file. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Download Sample Tags curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/download_sample_tags' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' POST Upload sample tags to an Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/upload_sample_tags Upload sample tags to an Experiment. Sample tags should be in the form of a TSV (tab separated values) table file, which can be sourced from the Download Sample Tags endpoint. Learn more about importing and exporting sample tags. Currently there is no JSON support for Sample Tags and the information can only be exchanged via file. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata file @{{FILE_NAME}} Example Request Upload sample tags to an Experiment curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/upload_sample_tags' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --form 'file="@{{FILE_NAME}}"' Example Response 200 OK Body Header(0) { "message": "Successfully imported the sample tags annotated in the uploaded file 'test_annotations.tsv'!" } Scales Data are rarely presented exactly as they were acquired on the instrument. Learn more about data scaling. A scale type of 1 is linear. 2 is log. 4 is arcsinh. GET List Scales for Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/scales List scale settings for an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request List Scales for Experiment curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/10559/scales' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More { "scales": [ { "id": 89801, "minimum": -200, "maximum": 262144, "cofactor": 150, "experimentId": 10559, "normalizedShortNameId": 36, "scaleType": 4 }, GET Show Scale Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/scales/{{SCALE_ID}} Show details for a scale in an Experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request Show Scale Details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/10559/scales/89801' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More { "scale": { "id": 89801, "minimum": -200, "maximum": 262144, "cofactor": 150, "experimentId": 10559, "normalizedShortNameId": 36, "scaleType": 4 } } PUT Update Scale https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/scales/{{SCALE_ID}} Update settings for a single scale in an Experiment. To update only certain attributes for a scale, pass only those attributes in the update request. HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "scale": { "minimum": -200.5, "maximum": 10000, "cofactor": 10, "scaleType": 4 } } Example Request Update Scale View More curl --location -g --request PUT 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/scales/{{SCALE_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "scale": { "minimum": -200.5, "maximum": 10000, "cofactor": 10, "scaleType": 4 } }' Sharing One should never analyze alone... Learn more about sharing and collaboration in Cytobank. GET List Full Access Users for Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/full_access_users List all full access users in an experiment. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyurlencoded Example Request List Full Access Users for Experiment curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/full_access_users' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(0) View More { "experiment": { "full_access_users": [ { "id": 43, "name": "Cytobank Support", "email": "redacted@cytobank.org" }, { "id": 102, "name": "Cyril Cytometry", POST Add Full Access User to Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/add_full_access_user Add a full access user to an experiment. Users can be added by using one of the following fields: * userId * userName * userEmail HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "experiment": { "userId": {{FULL_ACCESS_USER_ID}} } } Example Request Add Full Access User to Experiment View More curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/add_full_access_user' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "experiment": { "userId": {{FULL_ACCESS_USER_ID}} } }' Example Response 200 OK Body Header(0) { "message": "Cyril Cytometry has been given full access to this experiment." } POST Remove Full Access User From Experiment https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/add_full_access_user Remove a full access user from an experiment. Users can be removed by using one of the following fields: * userId * userName * userEmail HEADERS Authorization Bearer {{AUTH_TOKEN}} Content-Type application/json BODYraw { "experiment": { "userName": {{FULL_ACCESS_USER_NAME}} } } Example Request Remove Full Access User From Experiment View More curl --location -g --request POST 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/experiments/{{EXPT_ID}}/add_full_access_user' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' \ --header 'Content-Type: application/json' \ --data-raw '{ "experiment": { "userName": {{FULL_ACCESS_USER_NAME}} } }' Example Response 200 OK Body Header(0) { "message": "Cyril Cytometry was successfully removed from the full access list." } Statistics GET Show General Statistics https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/statistics?experimentId={{EXPT_ID}}&gateVersion={{GATE_VERSION}}&experimentVersion={{EXPT_VERSION}}&compensationId={{COMP_ID}}&fcsFileIds={{FCS_FILE_ID_1}}&fcsFileIds={{FCS_FILE_ID_2}}&channelIds={{CHANNEL_ID_1}}&channelIds={{CHANNEL_ID_2}}&gateSetIds={{POPULATION_ID_1}}&gateSetIds={{POPULATION_ID_2}} Retrieve a batch of common statistics for an Experiment. Parameter Details: * EXPT_VERSION must be set to the current version of the Experiment, which can be seen as the version attribute returned from a call to the Show Experiment Details endpoint. * GATE_VERSION of -1 corresponds to the state of gates and populations in the gating interface. Faster performance can be achieved by using the maximum gate version from the experiment (learn more about gate versions). Maximum gate version can be seen as the gateVersion attribute returned from a call to the Show Experiment Details endpoint. * COMP_ID is the ID of the compensation to apply to the statistics. Use -2 for file-internal compensation. Use -1 for uncompensated. * FCS_FILE_ID parameters are the IDs of FCS files to calculate statistics on. Multiple are permitted. * CHANNEL_ID parameters are the normalizedShortNameId attribute of the channels to calculate statistics on. This information can be retrieved from the Panels endpoints. * POPULATION.GATE_SET_ID parameters are the gateSetId attribute values of the populations to calculate statistics for. Multiple are permitted. Note that this argument is the gateSetId attribute of a population object and not the ID of the object itself. This secondary ID is experiment-specific and will be a smaller number. An argument of 0 corresponds to the ungated population, i.e., the raw data with no filtering applied. Another term for a population is a "gate set" because it's a set of gates (learn more). The minimum parameters to receive a response are EXPT_VERSION, GATE_VERSION, COMP_ID, EXPT_ID, and FCS_FILE_ID. Without POPULATION.GATE_SET_ID then statistics will be returned for all populations. Without CHANNEL_ID then only event counts will be returned. When submitting a single request with multiple files and channels, make sure that all the channels appear within all the files. An error will result otherwise. Returned data: Statistics returned include event count, minimum, maximum, mean, median, variance, standard deviation, and 2nd/98th percentile. Results objects will be returned for each file by each population in the Experiment. Within each results object, results for multiple channels are keyed on the normalizedShortNameId attribute within each statistic type. The short name and long name that correspond to this ID can be deciphered using panel information from the Panels API endoints. Performance note: While this endpoint accepts multiple parameters at once, for large datasets it may be necessary to send multiple requests to avoid client timeouts. Also note that if only event counts are being fetched then optimizations can be made for a faster request (see Show Event Count Statistics endpoint below). HEADERS Authorization Bearer {{AUTH_TOKEN}} PARAMS experimentId {{EXPT_ID}} gateVersion {{GATE_VERSION}} experimentVersion {{EXPT_VERSION}} compensationId {{COMP_ID}} fcsFileIds {{FCS_FILE_ID_1}} fcsFileIds {{FCS_FILE_ID_2}} channelIds {{CHANNEL_ID_1}} channelIds {{CHANNEL_ID_2}} gateSetIds {{POPULATION_ID_1}} gateSetIds {{POPULATION_ID_2}} Bodyurlencoded Example Request Show General Statistics curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/statistics?experimentId={{EXPT_ID}}&gateVersion={{GATE_VERSION}}&experimentVersion={{EXPT_VERSION}}&compensationId={{COMP_ID}}&fcsFileIds={{FCS_FILE_ID_1}}&fcsFileIds={{FCS_FILE_ID_2}}&channelIds={{CHANNEL_ID_1}}&channelIds={{CHANNEL_ID_2}}&gateSetIds={{POPULATION.GATE_SET_ID_1}}&gateSetIds={{POPULATION.GATE_SET_ID_2}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More [ { "populationIdentifierKey": "209014,10559,32,[3],-1,-1,,30,popid", "experimentId": 10559, "gateVersion": -1, "compensationId": -1, "fcsFileId": 209014, "gateSetId": 3, "eventCount": 38420, "minimums": {}, "maximums": {}, GET Show Event Count Statistics https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/statistics?experimentId={{EXPT_ID}}&gateVersion={{GATE_VERSION}}&experimentVersion={{EXPT_VERSION}}&compensationId={{COMP_ID}}&fcsFileIds={{FCS_FILE_ID_1}}&fcsFileIds={{FCS_FILE_ID_2}}&gateSetIds={{POPULATION_ID_1}}&gateSetIds={{POPULATION_ID_2}} This is just another take on the general statistics endpoint. It works the same but excludes channel parameters. In the absence of channel information only event count data are returned. If only event count data are needed, this approach can be faster than retrieving all statistics by avoiding unnecessary computation. HEADERS Authorization Bearer {{AUTH_TOKEN}} PARAMS experimentId {{EXPT_ID}} gateVersion {{GATE_VERSION}} experimentVersion {{EXPT_VERSION}} compensationId {{COMP_ID}} fcsFileIds {{FCS_FILE_ID_1}} fcsFileIds {{FCS_FILE_ID_2}} gateSetIds {{POPULATION_ID_1}} gateSetIds {{POPULATION_ID_2}} Bodyurlencoded Example Request Show Event Count Statistics curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/statistics?experimentId={{EXPT_ID}}&gateVersion={{GATE_VERSION}}&experimentVersion={{EXPT_VERSION}}&compensationId={{COMP_ID}}&fcsFileIds={{FCS_FILE_ID_1}}&fcsFileIds={{FCS_FILE_ID_2}}&gateSetIds={{POPULATION_ID_1}}&gateSetIds={{POPULATION_ID_2}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' Example Response 200 OK Body Header(10) View More [ { "populationIdentifierKey": "209014,10559,32,[3],-1,-1,,30,popid", "experimentId": 10559, "gateVersion": -1, "compensationId": -1, "fcsFileId": 209014, "gateSetId": 3, "eventCount": 38420, "minimums": {}, "maximums": {}, Users One should never analyze alone... GET List Users https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/users List all users on this Cytobank. This endpoint is for admins only and will respond with an authorization error if accessed by a non-admin. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request List Users curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/users' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}' GET Show User Details https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/users/{{USER_ID}} Show details for a user. This endpoint is for admins only and will respond with an authorization error if accessed by a non-admin. HEADERS Authorization Bearer {{AUTH_TOKEN}} Bodyformdata Example Request Show User Details curl --location -g --request GET 'https://{{CYTOBANK}}.cytobank.org/cytobank/api/v1/users/{{USER_ID}}' \ --header 'Authorization: Bearer {{AUTH_TOKEN}}'