{"openapi":"3.1.0","info":{"title":"Stomics.io API","description":"Public API of [Stomics.io](https://stomics.io), a repository of spatial transcriptomics datasets.\n\nReading published datasets needs no authentication. Submitting data, and downloading the files\nof a controlled-access dataset you have been granted, needs an API key from your account page,\nsent as `Authorization: Bearer sk-...`.\n\nAI agents can use the remote MCP server at `/api/v1/mcp` instead; see `/llms.txt`.\n","version":"1.0.0"},"paths":{"/api/v1/auth/register":{"post":{"tags":["auth"],"summary":"Register","operationId":"register_api_v1_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/refresh":{"post":{"tags":["auth"],"summary":"Refresh","operationId":"refresh_api_v1_auth_refresh_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/me":{"get":{"tags":["auth"],"summary":"Me","operationId":"me_api_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/auth/orcid/authorize":{"get":{"tags":["auth"],"summary":"Orcid Authorize","operationId":"orcid_authorize_api_v1_auth_orcid_authorize_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrcidAuthorizeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/orcid/callback":{"get":{"tags":["auth"],"summary":"Orcid Callback","operationId":"orcid_callback_api_v1_auth_orcid_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/orcid/connect":{"post":{"tags":["auth"],"summary":"Orcid Connect","operationId":"orcid_connect_api_v1_auth_orcid_connect_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrcidConnectRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"delete":{"tags":["auth"],"summary":"Orcid Disconnect","operationId":"orcid_disconnect_api_v1_auth_orcid_connect_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/auth/okta/authorize":{"get":{"tags":["auth"],"summary":"Start Okta sign-in","description":"Returns the Okta authorization URL to redirect the browser to. The URL carries a PKCE challenge and an encrypted `state` holding the verifier and nonce, both of which are checked on the way back. Returns 404 where no Okta app integration is configured.","operationId":"okta_authorize_api_v1_auth_okta_authorize_get","parameters":[{"name":"return_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Return To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OktaAuthorizeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/okta/callback":{"get":{"tags":["auth"],"summary":"Complete Okta sign-in","description":"Exchanges the authorization code, verifies the ID token against the issuer's JWKS, links or creates the local account, and syncs the role from the Okta groups claim.","operationId":"okta_callback_api_v1_auth_okta_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/okta/connect":{"post":{"tags":["auth"],"summary":"Link Okta to the signed-in account","description":"Adds an Okta identity to an account that already exists — the path a researcher who signed up with ORCID before joining takes. There is deliberately no disconnect: Okta is authoritative for role and email on the accounts it backs, so unlinking it would strip an employee of both.","operationId":"okta_connect_api_v1_auth_okta_connect_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OktaConnectRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/auth/forgot-password":{"post":{"tags":["auth"],"summary":"Forgot Password","operationId":"forgot_password_api_v1_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/reset-password":{"post":{"tags":["auth"],"summary":"Reset Password","operationId":"reset_password_api_v1_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/api-keys":{"get":{"tags":["auth"],"summary":"List API keys","description":"List the authenticated user's API keys. Returns prefix and metadata only — the key itself is never returned after creation.","operationId":"list_api_keys_api_v1_auth_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/APIKeyResponse"},"type":"array","title":"Response List Api Keys Api V1 Auth Api Keys Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["auth"],"summary":"Create API key","description":"Generate a new API key for programmatic access. The full key is returned **exactly once** — store it securely; it cannot be retrieved again. Authenticate subsequent requests with `Authorization: Bearer sk-<key>`.","operationId":"create_api_key_api_v1_auth_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/auth/api-keys/{key_id}":{"delete":{"tags":["auth"],"summary":"Revoke API key","description":"Revoke (deactivate) an API key by ID. The key will immediately stop authenticating requests.","operationId":"revoke_api_key_api_v1_auth_api_keys__key_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets":{"get":{"tags":["datasets"],"summary":"Search published datasets","description":"Published datasets only, newest first by default. Every filter is optional and filters combine with AND; several IDs for one filter combine with OR. Each item carries its technology, organism, tissue and disease by name. Page through with `page` until `page * per_page >= total`.","operationId":"list_datasets_api_v1_datasets_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive substring of the accession, title or abstract.","title":"Q"},"description":"Case-insensitive substring of the accession, title or abstract."},{"name":"technology_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Repeat the parameter for several IDs. IDs come from `GET /vocabulary/technologies`.","title":"Technology Ids"},"description":"Repeat the parameter for several IDs. IDs come from `GET /vocabulary/technologies`."},{"name":"organism_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Repeat the parameter for several IDs. IDs come from `GET /vocabulary/terms?kind=organism`.","title":"Organism Ids"},"description":"Repeat the parameter for several IDs. IDs come from `GET /vocabulary/terms?kind=organism`."},{"name":"tissue_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Repeat the parameter for several IDs. IDs come from `GET /vocabulary/terms?kind=tissue`.","title":"Tissue Ids"},"description":"Repeat the parameter for several IDs. IDs come from `GET /vocabulary/terms?kind=tissue`."},{"name":"disease_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Repeat the parameter for several IDs. IDs come from `GET /vocabulary/terms?kind=disease`.","title":"Disease Ids"},"description":"Repeat the parameter for several IDs. IDs come from `GET /vocabulary/terms?kind=disease`."},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Published on or after this date.","title":"Date From"},"description":"Published on or after this date."},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Published on or before this date.","title":"Date To"},"description":"Published on or before this date."},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","pattern":"^(published_at|download_count|created_at)$","default":"published_at","title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","default":"desc","title":"Sort Order"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"1-based page number.","default":1,"title":"Page"},"description":"1-based page number."},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Results per page, at most 100.","default":20,"title":"Per Page"},"description":"Results per page, at most 100."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["datasets"],"summary":"Create Dataset","operationId":"create_dataset_api_v1_datasets_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/compare":{"get":{"tags":["datasets"],"summary":"Fetch several datasets at once","description":"Return metadata for multiple datasets in a single request for the comparative viewer.","operationId":"compare_datasets_api_v1_datasets_compare_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accessions","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated dataset accessions, up to 6","title":"Accessions"},"description":"Comma-separated dataset accessions, up to 6"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompareResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/facets":{"get":{"tags":["datasets"],"summary":"Count published datasets per classification term","description":"Only terms with at least one published dataset appear. `GET /vocabulary/*` lists every term.","operationId":"get_facets_api_v1_datasets_facets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FacetsResponse"}}}}}}},"/api/v1/datasets/{accession}":{"get":{"tags":["datasets"],"summary":"Get one dataset","description":"Published and embargoed datasets are public. Drafts and datasets under review are visible to their submitter, their team and curators, or with a reviewer token.","operationId":"get_dataset_api_v1_datasets__accession__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"version","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version"}},{"name":"reviewer_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewer Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["datasets"],"summary":"Update Dataset","operationId":"update_dataset_api_v1_datasets__accession__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["datasets"],"summary":"Delete Dataset","operationId":"delete_dataset_api_v1_datasets__accession__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/samples":{"get":{"tags":["datasets"],"summary":"List a dataset's samples","operationId":"list_dataset_samples_api_v1_datasets__accession__samples_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SampleResponse"},"title":"Response List Dataset Samples Api V1 Datasets  Accession  Samples Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["datasets"],"summary":"Bulk Create Samples","description":"Bulk-insert up to 500 samples for a dataset in a single transaction.","operationId":"bulk_create_samples_api_v1_datasets__accession__samples_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SampleCreate"},"title":"Samples"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkSampleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/submit":{"post":{"tags":["datasets"],"summary":"Submit Dataset","operationId":"submit_dataset_api_v1_datasets__accession__submit_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/versions":{"get":{"tags":["datasets"],"summary":"List a dataset's published versions","operationId":"list_dataset_versions_api_v1_datasets__accession__versions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetVersionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/collection":{"get":{"tags":["datasets"],"summary":"Get the primary collection for a dataset","description":"Returns the collection this dataset is associated with via collection_id. Returns 404 if the dataset has no primary collection or the collection is private and the caller is not the owner.","operationId":"get_dataset_collection_api_v1_datasets__accession__collection_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/team":{"patch":{"tags":["datasets"],"summary":"Assign Dataset Team","description":"Assign or remove a dataset's team ownership. Only the submitter can do this.","operationId":"assign_dataset_team_api_v1_datasets__accession__team_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignDatasetTeamRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/files":{"get":{"tags":["files"],"summary":"List a dataset's files","description":"Every file with its type, size and MD5. `download_url` is a presigned link valid for one hour; it is null for a controlled-access dataset unless the caller has been granted access.","operationId":"list_files_api_v1_datasets__accession__files_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"version","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Return files from a specific version snapshot","title":"Version"},"description":"Return files from a specific version snapshot"},{"name":"reviewer_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewer Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FileResponse"},"title":"Response List Files Api V1 Datasets  Accession  Files Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["files"],"summary":"Upload File","operationId":"upload_file_api_v1_datasets__accession__files_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_api_v1_datasets__accession__files_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/files/{file_id}":{"get":{"tags":["files"],"summary":"Get File","operationId":"get_file_api_v1_datasets__accession__files__file_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["files"],"summary":"Delete File","operationId":"delete_file_api_v1_datasets__accession__files__file_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/files/{file_id}/extract":{"post":{"tags":["files"],"summary":"Trigger Metadata Extraction","description":"Manually trigger metadata extraction for an already-uploaded file.","operationId":"trigger_metadata_extraction_api_v1_datasets__accession__files__file_id__extract_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/files/upload-url":{"post":{"tags":["files"],"summary":"Generate Direct Upload Url","description":"Generate a presigned S3 PUT URL for direct-to-storage upload.\n\nThe client PUTs the file bytes directly to the returned URL, then calls\nPOST /{accession}/files/{file_id}/complete to register the upload.","operationId":"generate_direct_upload_url_api_v1_datasets__accession__files_upload_url_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectUploadUrlRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectUploadUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/files/{file_id}/complete":{"post":{"tags":["files"],"summary":"Complete Direct Upload","description":"Confirm that a direct PUT upload has completed and trigger QC.","operationId":"complete_direct_upload_api_v1_datasets__accession__files__file_id__complete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteDirectUploadRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/files/{file_id}/download":{"get":{"tags":["files"],"summary":"Get a download link for one file","description":"Returns `{\"url\": ...}`, a presigned link valid for one hour that needs no authentication to use. With `redirect=true` the response is instead a 307 redirect to that link, so `curl -L` or a browser downloads the file directly. Open-access published datasets need no key; controlled-access files need an approved access request. Each call is recorded as a download.","operationId":"download_file_api_v1_datasets__accession__files__file_id__download_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}},{"name":"redirect","in":"query","required":false,"schema":{"type":"boolean","description":"Redirect to the file instead of returning JSON.","default":false,"title":"Redirect"},"description":"Redirect to the file instead of returning JSON."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{},"example":{"url":"https://..."}}}},"307":{"description":"Redirect to the file, when `redirect=true`."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/files/multipart/initiate":{"post":{"tags":["files"],"summary":"Initiate Multipart Upload","operationId":"initiate_multipart_upload_api_v1_datasets__accession__files_multipart_initiate_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateMultipartUploadRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateMultipartUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/files/{file_id}/multipart/parts":{"get":{"tags":["files"],"summary":"List Upload Parts","operationId":"list_upload_parts_api_v1_datasets__accession__files__file_id__multipart_parts_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPartsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/files/{file_id}/multipart/part-urls":{"post":{"tags":["files"],"summary":"Create Part Upload Urls","description":"Presign a PUT URL for each requested part of a multipart upload.\n\nThe client PUTs part bytes directly to object storage with these URLs, so\npayload never transits this API. Read the `ETag` response header from each\nPUT and pass it to `.../multipart/complete` unchanged.\n\nRequesting URLs for parts already uploaded is allowed — re-uploading a part\nreplaces it, which is how a failed part is retried.","operationId":"create_part_upload_urls_api_v1_datasets__accession__files__file_id__multipart_part_urls_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartUploadUrlsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartUploadUrlsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/files/{file_id}/multipart/parts/{part_number}":{"put":{"tags":["files"],"summary":"Upload a part through the API (deprecated)","description":"Proxies part bytes through the API to object storage. Superseded by `POST /{accession}/files/{file_id}/multipart/part-urls`, which lets the client PUT directly to storage. Retained for existing API consumers; prefer the presigned flow for anything new.","operationId":"upload_multipart_part_api_v1_datasets__accession__files__file_id__multipart_parts__part_number__put","deprecated":true,"security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}},{"name":"part_number","in":"path","required":true,"schema":{"type":"integer","title":"Part Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadPartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/files/{file_id}/multipart/complete":{"post":{"tags":["files"],"summary":"Complete Multipart Upload","operationId":"complete_multipart_upload_api_v1_datasets__accession__files__file_id__multipart_complete_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteMultipartUploadRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/files/{file_id}/multipart/abort":{"delete":{"tags":["files"],"summary":"Abort Multipart Upload","operationId":"abort_multipart_upload_api_v1_datasets__accession__files__file_id__multipart_abort_delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/expression/coexpression":{"get":{"tags":["expression"],"summary":"Get Coexpression","operationId":"get_coexpression_api_v1_datasets__accession__expression_coexpression_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"gene_a","in":"query","required":true,"schema":{"type":"string","description":"First gene symbol","title":"Gene A"},"description":"First gene symbol"},{"name":"gene_b","in":"query","required":true,"schema":{"type":"string","description":"Second gene symbol","title":"Gene B"},"description":"Second gene symbol"},{"name":"sample_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoexpressionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/expression":{"get":{"tags":["expression"],"summary":"Expression of one or more genes across spots","description":"Values are currently computed from synthetic expression programmes, not from the submitted matrices; see the README's Known gaps.","operationId":"get_expression_api_v1_datasets__accession__expression_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"gene","in":"query","required":true,"schema":{"type":"string","description":"Gene symbol(s), comma-separated for multi-gene (up to 4)","title":"Gene"},"description":"Gene symbol(s), comma-separated for multi-gene (up to 4)"},{"name":"sample_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/samples/{sample_id}/differential-expression":{"post":{"tags":["expression"],"summary":"Run Differential Expression","description":"Run differential expression between two spatial regions of interest.","operationId":"run_differential_expression_api_v1_datasets__accession__samples__sample_id__differential_expression_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DifferentialExpressionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DifferentialExpressionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/genes":{"get":{"tags":["expression"],"summary":"Get Genes","operationId":"get_genes_api_v1_datasets__accession__genes_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/tissue-image/metadata":{"get":{"tags":["tiles"],"summary":"Get Dataset Tissue Image Metadata","description":"Metadata for the dataset-wide tissue image (one uploaded without a sample).","operationId":"get_dataset_tissue_image_metadata_api_v1_datasets__accession__tissue_image_metadata_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TissueImageMetadataResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/tiles/{z}/{x}/{y}":{"get":{"tags":["tiles"],"summary":"Get Dataset Tile","operationId":"get_dataset_tile_api_v1_datasets__accession__tiles__z___x___y__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"z","in":"path","required":true,"schema":{"type":"integer","title":"Z"}},{"name":"x","in":"path","required":true,"schema":{"type":"integer","title":"X"}},{"name":"y","in":"path","required":true,"schema":{"type":"integer","title":"Y"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TileUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/samples/{sample_id}/tissue-image/metadata":{"get":{"tags":["tiles"],"summary":"Get Tissue Image Metadata","operationId":"get_tissue_image_metadata_api_v1_datasets__accession__samples__sample_id__tissue_image_metadata_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TissueImageMetadataResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/samples/{sample_id}/tiles/{z}/{x}/{y}":{"get":{"tags":["tiles"],"summary":"Get Tile","operationId":"get_tile_api_v1_datasets__accession__samples__sample_id__tiles__z___x___y__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}},{"name":"z","in":"path","required":true,"schema":{"type":"integer","title":"Z"}},{"name":"x","in":"path","required":true,"schema":{"type":"integer","title":"X"}},{"name":"y","in":"path","required":true,"schema":{"type":"integer","title":"Y"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TileUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/download-bundle":{"post":{"tags":["bundles"],"summary":"Create a bulk download bundle","description":"Initiates a bulk download of dataset files as a ZIP archive. For small datasets (< 2 GB), the ZIP is streamed directly in the response (HTTP 200). For large datasets, a background job is created and the job ID is returned (HTTP 202); poll `GET /{accession}/download-bundle/{job_id}` for status.","operationId":"create_download_bundle_api_v1_datasets__accession__download_bundle_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/BundleRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"ZIP streamed directly (small dataset)","content":{"application/json":{"schema":{}}}},"202":{"description":"Bundle job created (large dataset)","content":{"application/json":{"schema":{"type":"object","properties":{"job_id":{"type":"string"},"status":{"type":"string"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/download-bundle/{job_id}":{"get":{"tags":["bundles"],"summary":"Poll bundle job status","description":"Returns the current status of a bundle job. When `status` is `ready`, a presigned download URL (valid 1 hour) is included.","operationId":"get_download_bundle_status_api_v1_datasets__accession__download_bundle__job_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BundleJobStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/samples/{sample_id}/cell-types":{"get":{"tags":["cell_types"],"summary":"Get cell type annotations for a sample","description":"Returns uploaded cell type annotations for a sample. Each spot includes its barcode, spatial coordinates, cell type label, and optional confidence score. Only available for published or embargoed datasets. Controlled-access datasets require an approved grant.","operationId":"get_cell_types_api_v1_datasets__accession__samples__sample_id__cell_types_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CellTypeListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/samples/{sample_id}/cell-types/upload":{"post":{"tags":["cell_types"],"summary":"Upload cell type annotations for a sample","description":"Upload a CSV file with cell type annotations. Required columns: barcode, cell_type. Optional columns: confidence, method. All barcodes must match spots in the dataset's expression matrix. Replaces any existing annotations for this sample. Only the dataset owner or a curator/admin may upload.","operationId":"upload_cell_types_api_v1_datasets__accession__samples__sample_id__cell_types_upload_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_cell_types_api_v1_datasets__accession__samples__sample_id__cell_types_upload_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CellTypeUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/citations":{"get":{"tags":["citations"],"summary":"Get Citations","operationId":"get_citations_api_v1_datasets__accession__citations_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["citations"],"summary":"Add Citation","operationId":"add_citation_api_v1_datasets__accession__citations_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitationCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/access-requests":{"post":{"tags":["access_requests"],"summary":"Submit Access Request","operationId":"submit_access_request_api_v1_datasets__accession__access_requests_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/access-requests/me":{"get":{"tags":["access_requests"],"summary":"Get My Access Request","operationId":"get_my_access_request_api_v1_datasets__accession__access_requests_me_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/AccessRequestResponse"},{"type":"null"}],"title":"Response Get My Access Request Api V1 Datasets  Accession  Access Requests Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/qc/run":{"post":{"tags":["qc"],"summary":"Trigger QC run","description":"Manually trigger a QC check for a dataset. The check runs as a background task. Poll `GET /{accession}/qc` for results.","operationId":"trigger_qc_api_v1_datasets__accession__qc_run_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QCReportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/qc":{"get":{"tags":["qc"],"summary":"Get QC reports","description":"Return QC reports for a dataset. Accessible to the dataset owner and curators/admins.","operationId":"get_qc_reports_api_v1_datasets__accession__qc_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QCReportListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/samples/{sample_id}/module-score":{"post":{"tags":["gene_sets"],"summary":"Compute Module Score","description":"Compute per-spot module scores for a gene set or custom list of genes.","operationId":"compute_module_score_api_v1_datasets__accession__samples__sample_id__module_score_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModuleScoreRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModuleScoreResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/gene-sets":{"get":{"tags":["gene_sets"],"summary":"List Gene Sets","description":"Return a searchable catalog of built-in and custom gene sets.","operationId":"list_gene_sets_api_v1_gene_sets_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search term matched against gene set name","title":"Q"},"description":"Search term matched against gene set name"},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by source: MSigDB_Hallmark, GO_BP, KEGG, custom","title":"Source"},"description":"Filter by source: MSigDB_Hallmark, GO_BP, KEGG, custom"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneSetListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/comments":{"get":{"tags":["comments"],"summary":"List Comments","operationId":"list_comments_api_v1_datasets__accession__comments_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["comments"],"summary":"Create Comment","operationId":"create_comment_api_v1_datasets__accession__comments_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/comments/{comment_id}":{"patch":{"tags":["comments"],"summary":"Update Comment","operationId":"update_comment_api_v1_datasets__accession__comments__comment_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"integer","title":"Comment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["comments"],"summary":"Delete Comment","operationId":"delete_comment_api_v1_datasets__accession__comments__comment_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"integer","title":"Comment Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/comments/{comment_id}/reactions":{"post":{"tags":["comments"],"summary":"Add Reaction","operationId":"add_reaction_api_v1_datasets__accession__comments__comment_id__reactions_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"integer","title":"Comment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReactionCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/comments/{comment_id}/pin":{"post":{"tags":["comments"],"summary":"Pin Comment","operationId":"pin_comment_api_v1_datasets__accession__comments__comment_id__pin_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"integer","title":"Comment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/comments/{comment_id}/unpin":{"post":{"tags":["comments"],"summary":"Unpin Comment","operationId":"unpin_comment_api_v1_datasets__accession__comments__comment_id__unpin_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"integer","title":"Comment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/comments/flagged":{"get":{"tags":["admin"],"summary":"Get Flagged Comments","operationId":"get_flagged_comments_api_v1_admin_comments_flagged_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlaggedCommentsListResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/queue":{"get":{"tags":["admin"],"summary":"Get Queue","operationId":"get_queue_api_v1_admin_queue_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DatasetResponse"},"type":"array","title":"Response Get Queue Api V1 Admin Queue Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/datasets/{accession}/publish":{"post":{"tags":["admin"],"summary":"Publish Dataset","operationId":"publish_dataset_api_v1_admin_datasets__accession__publish_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/AdminPublishRequest"},{"type":"null"}],"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/datasets/{accession}/reject":{"post":{"tags":["admin"],"summary":"Reject Dataset","operationId":"reject_dataset_api_v1_admin_datasets__accession__reject_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/AdminRejectRequest"},{"type":"null"}],"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/datasets/{accession}/embargo":{"patch":{"tags":["admin"],"summary":"Set Embargo","operationId":"set_embargo_api_v1_admin_datasets__accession__embargo_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminEmbargoRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/datasets/{accession}/doi":{"patch":{"tags":["admin"],"summary":"Set Doi","operationId":"set_doi_api_v1_admin_datasets__accession__doi_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminDoiRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/datasets/{accession}/doi/mint":{"post":{"tags":["admin"],"summary":"Mint Doi","operationId":"mint_doi_api_v1_admin_datasets__accession__doi_mint_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/datasets/{accession}/citations":{"get":{"tags":["admin"],"summary":"Admin Get Citations","operationId":"admin_get_citations_api_v1_admin_datasets__accession__citations_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/datasets/{accession}/citations/scan":{"post":{"tags":["admin"],"summary":"Scan Citations","operationId":"scan_citations_api_v1_admin_datasets__accession__citations_scan_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/datasets/{accession}/citations/{citation_id}/verify":{"post":{"tags":["admin"],"summary":"Verify Citation","operationId":"verify_citation_api_v1_admin_datasets__accession__citations__citation_id__verify_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"citation_id","in":"path","required":true,"schema":{"type":"integer","title":"Citation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/datasets/{accession}/citations/{citation_id}":{"delete":{"tags":["admin"],"summary":"Delete Citation","operationId":"delete_citation_api_v1_admin_datasets__accession__citations__citation_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"citation_id","in":"path","required":true,"schema":{"type":"integer","title":"Citation Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/access-requests":{"get":{"tags":["admin"],"summary":"List Access Requests","operationId":"list_access_requests_api_v1_admin_access_requests_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"dataset_accession","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/access-requests/{request_id}/approve":{"post":{"tags":["admin"],"summary":"Approve Access Request","operationId":"approve_access_request_api_v1_admin_access_requests__request_id__approve_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/AdminApproveAccessRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/access-requests/{request_id}/reject":{"post":{"tags":["admin"],"summary":"Reject Access Request","operationId":"reject_access_request_api_v1_admin_access_requests__request_id__reject_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminRejectAccessRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/datasets/{accession}/qc/override":{"post":{"tags":["admin"],"summary":"Override Qc","operationId":"override_qc_api_v1_admin_datasets__accession__qc_override_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QCOverrideRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QCReportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/datasets/{accession}/versions":{"post":{"tags":["admin"],"summary":"Create Dataset Version","operationId":"create_dataset_version_api_v1_admin_datasets__accession__versions_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetVersionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetVersionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin"],"summary":"List Dataset Versions Admin","operationId":"list_dataset_versions_admin_api_v1_admin_datasets__accession__versions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetVersionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/me/submissions":{"get":{"tags":["me"],"summary":"My submissions","description":"Return the authenticated user's datasets with their current status, file count, and sample count. Paginated.","operationId":"my_submissions_api_v1_me_submissions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/me/downloads":{"get":{"tags":["me"],"summary":"My download history","description":"Return the user's download history (distinct datasets, ordered by most recent). Paginated.","operationId":"my_downloads_api_v1_me_downloads_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DownloadsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/me/saved":{"get":{"tags":["me"],"summary":"My saved datasets","description":"Return the user's bookmarked datasets.","operationId":"my_saved_api_v1_me_saved_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/me/saved/{accession}":{"post":{"tags":["me"],"summary":"Save a dataset","description":"Bookmark a dataset by accession. Returns 409 if already saved.","operationId":"save_dataset_api_v1_me_saved__accession__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Save Dataset Api V1 Me Saved  Accession  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["me"],"summary":"Unsave a dataset","description":"Remove a dataset from the user's bookmarks.","operationId":"unsave_dataset_api_v1_me_saved__accession__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/me/profile":{"get":{"tags":["me"],"summary":"Get my profile","description":"Return the authenticated user's profile.","operationId":"get_profile_api_v1_me_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"patch":{"tags":["me"],"summary":"Update my profile","description":"Update the authenticated user's full_name and institution.","operationId":"update_profile_api_v1_me_profile_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/me/access-requests":{"get":{"tags":["me"],"summary":"My access requests","description":"Return the authenticated user's data access request history across all datasets.","operationId":"my_access_requests_api_v1_me_access_requests_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequestListResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/me/export":{"get":{"tags":["me"],"summary":"Export my data","description":"Return everything held about the authenticated account as a JSON document (GDPR Art 15 access and Art 20 portability). Served as a file download; API key hashes and password material are described rather than reproduced.","operationId":"export_my_data_api_v1_me_export_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/me/account":{"delete":{"tags":["me"],"summary":"Close my account","description":"Erase the authenticated account (GDPR Art 17). The profile is anonymised, and API keys, saved datasets, federated identity links and unreleased drafts are deleted. Released datasets keep their accessions so citations continue to resolve, and download rows are unlinked rather than dropped so aggregate figures survive. Not available to Okta-managed accounts.","operationId":"delete_my_account_api_v1_me_account_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountErasureResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/collections":{"post":{"tags":["collections"],"summary":"Create a collection","description":"Create a new collection (authenticated). Returns the new collection.","operationId":"create_collection_api_v1_collections_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["collections"],"summary":"List public collections","description":"List all public collections with optional text search. Paginated.","operationId":"list_collections_api_v1_collections_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/my":{"get":{"tags":["collections"],"summary":"My collections","description":"List the authenticated user's collections (public and private). Paginated.","operationId":"my_collections_api_v1_collections_my_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/{accession}":{"get":{"tags":["collections"],"summary":"Get collection detail","description":"Get a public collection with its datasets. Returns 404 for private collections.","operationId":"get_collection_api_v1_collections__accession__get","parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["collections"],"summary":"Update a collection","description":"Update the title or description of a collection (owner only).","operationId":"update_collection_api_v1_collections__accession__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/{accession}/preview":{"get":{"tags":["collections"],"summary":"Get collection detail (owner preview)","description":"Get a collection by accession, accessible by the owner even if not yet public.","operationId":"get_collection_preview_api_v1_collections__accession__preview_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/{accession}/publish":{"post":{"tags":["collections"],"summary":"Publish a collection","description":"Make a collection public (owner only). Sets published_at timestamp.","operationId":"publish_collection_api_v1_collections__accession__publish_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/{accession}/datasets":{"post":{"tags":["collections"],"summary":"Add a dataset to a collection","description":"Add a dataset to this collection (owner only). The dataset must be published or owned by you.","operationId":"add_dataset_to_collection_api_v1_collections__accession__datasets_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDatasetToCollection"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Dataset To Collection Api V1 Collections  Accession  Datasets Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/collections/{accession}/datasets/{dataset_accession}":{"delete":{"tags":["collections"],"summary":"Remove a dataset from a collection","description":"Remove a dataset from this collection (owner only).","operationId":"remove_dataset_from_collection_api_v1_collections__accession__datasets__dataset_accession__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"dataset_accession","in":"path","required":true,"schema":{"type":"string","title":"Dataset Accession"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/help/categories":{"get":{"tags":["help_center"],"summary":"List help categories","description":"Return all help categories, optionally filtered by audience.","operationId":"list_categories_api_v1_help_categories_get","parameters":[{"name":"audience","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by audience role","title":"Audience"},"description":"Filter by audience role"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HelpCategoryResponse"},"title":"Response List Categories Api V1 Help Categories Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["help_center"],"summary":"[Admin] Create a help category","operationId":"create_category_api_v1_help_categories_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpCategoryCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpCategoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/help/categories/{category_slug}":{"get":{"tags":["help_center"],"summary":"Get a category with its topics and articles","operationId":"get_category_api_v1_help_categories__category_slug__get","parameters":[{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpCategoryWithTopics"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["help_center"],"summary":"[Admin] Update a help category","operationId":"update_category_api_v1_help_categories__category_slug__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpCategoryUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpCategoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["help_center"],"summary":"[Admin] Delete a help category","operationId":"delete_category_api_v1_help_categories__category_slug__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/help/categories/{category_slug}/topics/{topic_slug}":{"get":{"tags":["help_center"],"summary":"Get a topic with its articles","operationId":"get_topic_api_v1_help_categories__category_slug__topics__topic_slug__get","parameters":[{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}},{"name":"topic_slug","in":"path","required":true,"schema":{"type":"string","title":"Topic Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpTopicWithArticles"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["help_center"],"summary":"[Admin] Update a help topic","operationId":"update_topic_api_v1_help_categories__category_slug__topics__topic_slug__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}},{"name":"topic_slug","in":"path","required":true,"schema":{"type":"string","title":"Topic Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpTopicUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpTopicResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["help_center"],"summary":"[Admin] Delete a help topic","operationId":"delete_topic_api_v1_help_categories__category_slug__topics__topic_slug__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}},{"name":"topic_slug","in":"path","required":true,"schema":{"type":"string","title":"Topic Slug"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/help/categories/{category_slug}/topics/{topic_slug}/articles/{article_slug}":{"get":{"tags":["help_center"],"summary":"Get a single help article","operationId":"get_article_api_v1_help_categories__category_slug__topics__topic_slug__articles__article_slug__get","parameters":[{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}},{"name":"topic_slug","in":"path","required":true,"schema":{"type":"string","title":"Topic Slug"}},{"name":"article_slug","in":"path","required":true,"schema":{"type":"string","title":"Article Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpArticleDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["help_center"],"summary":"[Admin] Update a help article","operationId":"update_article_api_v1_help_categories__category_slug__topics__topic_slug__articles__article_slug__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}},{"name":"topic_slug","in":"path","required":true,"schema":{"type":"string","title":"Topic Slug"}},{"name":"article_slug","in":"path","required":true,"schema":{"type":"string","title":"Article Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpArticleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpArticleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["help_center"],"summary":"[Admin] Delete a help article","operationId":"delete_article_api_v1_help_categories__category_slug__topics__topic_slug__articles__article_slug__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_slug","in":"path","required":true,"schema":{"type":"string","title":"Category Slug"}},{"name":"topic_slug","in":"path","required":true,"schema":{"type":"string","title":"Topic Slug"}},{"name":"article_slug","in":"path","required":true,"schema":{"type":"string","title":"Article Slug"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/help/topics":{"post":{"tags":["help_center"],"summary":"[Admin] Create a help topic","operationId":"create_topic_api_v1_help_topics_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpTopicCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpTopicResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/help/articles":{"post":{"tags":["help_center"],"summary":"[Admin] Create a help article","operationId":"create_article_api_v1_help_articles_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpArticleCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HelpArticleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/datasets/{accession}/launch-bundle":{"post":{"tags":["launch"],"summary":"Generate a cloud-platform launch URL","description":"Returns a platform-specific URL that pre-populates Terra, Galaxy, or Seqera Platform with the dataset's files. Optionally filters by file_types. For Terra, a short-lived (1-hour) JSON manifest is written to S3 and its presigned URL is embedded in the Terra import link. Seqera requires the SEQERA_API_KEY environment variable to be set.","operationId":"launch_bundle_api_v1_datasets__accession__launch_bundle_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LaunchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LaunchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/terra-manifest":{"get":{"tags":["launch"],"summary":"Retrieve the Terra data import manifest","description":"Returns a JSON manifest listing dataset files with their presigned S3 URLs. Terra's Data Import Service fetches this URL when importing a dataset. Presigned URLs are valid for 1 hour.","operationId":"get_terra_manifest_api_v1_datasets__accession__terra_manifest_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"File Types"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/aria2c-manifest":{"get":{"tags":["launch"],"summary":"Download an aria2c URL list for parallel file download","description":"Returns a plain-text file formatted for `aria2c -i urls.txt`. Each file entry consists of its presigned S3 URL followed by an `out=filename` directive. This is a power-user download option that uses parallel connections and is faster than the ZIP bundle for large datasets.","operationId":"get_aria2c_manifest_api_v1_datasets__accession__aria2c_manifest_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"File Types"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/reviewer-tokens":{"post":{"tags":["reviewer_tokens"],"summary":"Create Reviewer Token","operationId":"create_reviewer_token_api_v1_datasets__accession__reviewer_tokens_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewerTokenCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewerTokenCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["reviewer_tokens"],"summary":"List Reviewer Tokens","operationId":"list_reviewer_tokens_api_v1_datasets__accession__reviewer_tokens_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewerTokenListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/reviewer-tokens/{token_id}":{"delete":{"tags":["reviewer_tokens"],"summary":"Revoke Reviewer Token","operationId":"revoke_reviewer_token_api_v1_datasets__accession__reviewer_tokens__token_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"token_id","in":"path","required":true,"schema":{"type":"string","title":"Token Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewerTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/samples/{sample_id}/embeddings":{"get":{"tags":["embeddings"],"summary":"List available embeddings for a sample","description":"Returns the list of dimensionality reduction embeddings available for a sample (UMAP, tSNE, PCA, UMAP3D). Only available for published or embargoed datasets.","operationId":"list_embeddings_api_v1_datasets__accession__samples__sample_id__embeddings_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbeddingListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/samples/{sample_id}/embeddings/upload":{"post":{"tags":["embeddings"],"summary":"Upload embedding coordinates from CSV","description":"Upload a CSV file containing pre-computed embedding coordinates for a sample. Expected columns: barcode plus dimension columns (e.g. UMAP_1, UMAP_2, or tSNE_1, tSNE_2). All barcodes must match spots in the dataset's expression matrix. Only the dataset owner or a curator/admin may upload.","operationId":"upload_embedding_api_v1_datasets__accession__samples__sample_id__embeddings_upload_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_embedding_api_v1_datasets__accession__samples__sample_id__embeddings_upload_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbeddingUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/samples/{sample_id}/embeddings/compute":{"post":{"tags":["embeddings"],"summary":"Trigger server-side UMAP computation","description":"Start a server-side UMAP computation on the sample's expression matrix. Returns immediately with the embedding ID and status 'pending'. Poll the status endpoint to check for completion. Only available for datasets with fewer than 100,000 spots. Rate-limited to one active computation per sample at a time. Only the dataset owner or a curator/admin may trigger computation.","operationId":"compute_embedding_api_v1_datasets__accession__samples__sample_id__embeddings_compute_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbeddingComputeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/samples/{sample_id}/embeddings/compute/status":{"get":{"tags":["embeddings"],"summary":"Check status of the latest UMAP computation","description":"Returns the status of the most recent server-side UMAP computation for this sample. Status values: pending, computing, ready, failed, not_started.","operationId":"get_compute_status_api_v1_datasets__accession__samples__sample_id__embeddings_compute_status_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbeddingComputeStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/samples/{sample_id}/embeddings/{embedding_id}":{"get":{"tags":["embeddings"],"summary":"Get embedding coordinates","description":"Returns the 2-D or 3-D embedding coordinates for all spots in the sample. Only available for published or embargoed datasets.","operationId":"get_embedding_api_v1_datasets__accession__samples__sample_id__embeddings__embedding_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}},{"name":"embedding_id","in":"path","required":true,"schema":{"type":"integer","title":"Embedding Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbeddingCoordResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/samples/{sample_id}/spatially-variable-genes":{"post":{"tags":["svg"],"summary":"Discover spatially variable genes","description":"Compute Moran's I spatial autocorrelation for each gene in the dataset and return the top spatially variable genes ranked by Moran's I score. Results are cached for 24 hours with the same parameters. Rate-limited to 5 requests per user per hour. Only available for published or embargoed datasets.","operationId":"run_spatially_variable_genes_api_v1_datasets__accession__samples__sample_id__spatially_variable_genes_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SvgRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SvgResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/files/{file_id}/convert":{"post":{"tags":["conversion"],"summary":"Initiate format conversion","description":"Start an on-the-fly conversion of an expression matrix file to a different format. If a non-expired conversion job for the same (file, target_format) pair already exists it is returned immediately. Supported target formats: h5ad, mex, loom, csv_long, h5seurat.","operationId":"create_conversion_job_api_v1_datasets__accession__files__file_id__convert_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversionRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversionJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/datasets/{accession}/files/{file_id}/convert/{job_id}":{"get":{"tags":["conversion"],"summary":"Poll conversion job status","description":"Check the status of a format conversion job. When status is 'ready', a presigned download URL (valid 1 hour) is included.","operationId":"get_conversion_job_status_api_v1_datasets__accession__files__file_id__convert__job_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversionJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/search/genes/autocomplete":{"get":{"tags":["search"],"summary":"Autocomplete gene symbols","description":"Values are currently computed from synthetic expression programmes, not from the submitted matrices; see the README's Known gaps.","operationId":"gene_autocomplete_api_v1_search_genes_autocomplete_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Q"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GeneAutocompleteSuggestion"},"title":"Response Gene Autocomplete Api V1 Search Genes Autocomplete Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/search/genes":{"get":{"tags":["search"],"summary":"Find datasets expressing a gene","description":"Values are currently computed from synthetic expression programmes, not from the submitted matrices; see the README's Known gaps.","operationId":"search_genes_api_v1_search_genes_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Q"}},{"name":"organism_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organism Id"}},{"name":"tissue_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tissue Id"}},{"name":"technology_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Technology Id"}},{"name":"min_pct_expressed","in":"query","required":false,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"default":0.1,"title":"Min Pct Expressed"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","pattern":"^(mean_expr|pct_spots_expressed)$","default":"mean_expr","title":"Sort By"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/teams":{"post":{"tags":["teams"],"summary":"Create a team","description":"Create a new team. The authenticated user becomes the team owner.","operationId":"create_team_api_v1_teams_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["teams"],"summary":"List teams","description":"List all teams (public). Paginated.","operationId":"list_teams_api_v1_teams_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/teams/my":{"get":{"tags":["teams"],"summary":"My teams","description":"List the authenticated user's teams with role information.","operationId":"my_teams_api_v1_teams_my_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TeamResponse"},"type":"array","title":"Response My Teams Api V1 Teams My Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/teams/{slug}":{"get":{"tags":["teams"],"summary":"Get team profile","description":"Get a team's public profile including member count and dataset count.","operationId":"get_team_api_v1_teams__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["teams"],"summary":"Update team","description":"Update team name or description (team owner or admin only).","operationId":"update_team_api_v1_teams__slug__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["teams"],"summary":"Delete team","description":"Delete a team (team owner only). All member records are removed.","operationId":"delete_team_api_v1_teams__slug__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/teams/{slug}/members":{"get":{"tags":["teams"],"summary":"List team members","description":"List all members of a team. Only accessible to team members.","operationId":"list_members_api_v1_teams__slug__members_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TeamMemberWithUserResponse"},"title":"Response List Members Api V1 Teams  Slug  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/teams/{slug}/invitations":{"post":{"tags":["teams"],"summary":"Invite a member","description":"Invite a user to the team by email (team owner or admin only). The user must already have an account.","operationId":"invite_member_api_v1_teams__slug__invitations_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteMemberRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberWithUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/teams/{slug}/invitations/accept":{"post":{"tags":["teams"],"summary":"Accept a team invitation","description":"Accept a pending team invitation. The authenticated user must have a pending invitation.","operationId":"accept_invitation_api_v1_teams__slug__invitations_accept_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberWithUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/teams/{slug}/members/{user_id}":{"delete":{"tags":["teams"],"summary":"Remove a team member","description":"Remove a member from the team. Team owner/admin can remove others; any member can remove themselves.","operationId":"remove_member_api_v1_teams__slug__members__user_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["teams"],"summary":"Change member role","description":"Change a team member's role (team owner only). Changing a member to 'owner' transfers ownership.","operationId":"change_member_role_api_v1_teams__slug__members__user_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeMemberRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberWithUserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/vocabulary/technologies":{"get":{"tags":["vocabulary"],"summary":"List spatial technologies","description":"Every technology a dataset can be classified with, with the number of published datasets using it. Use the `id` with `technology_ids` on `GET /datasets`.","operationId":"list_technologies_api_v1_vocabulary_technologies_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive substring of the name.","title":"Q"},"description":"Case-insensitive substring of the name."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TechnologyTerm"},"title":"Response List Technologies Api V1 Vocabulary Technologies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/vocabulary/terms":{"get":{"tags":["vocabulary"],"summary":"List organism, tissue or disease terms","description":"Ontology terms of one kind (organisms from NCBITaxon, tissues from UBERON, diseases from MONDO), with the number of published datasets annotated with each. Use the `id` with `organism_ids`, `tissue_ids` or `disease_ids` on `GET /datasets`.","operationId":"list_terms_api_v1_vocabulary_terms_get","parameters":[{"name":"kind","in":"query","required":true,"schema":{"enum":["organism","tissue","disease"],"type":"string","description":"Which terms.","title":"Kind"},"description":"Which terms."},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive substring of the label.","title":"Q"},"description":"Case-insensitive substring of the label."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OntologyTermEntry"},"title":"Response List Terms Api V1 Vocabulary Terms Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health/live":{"get":{"summary":"Health Live","description":"Liveness: is this process running?\n\nDeliberately does not touch the database. A liveness probe that fails on a\ndatabase blip gets the container killed and restarted, which cannot fix a\ndatabase problem and removes capacity while it is happening.","operationId":"health_live_health_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Live Health Live Get"}}}}}}},"/health/ready":{"get":{"summary":"Health Ready","description":"Readiness: should this instance be sent traffic?\n\nReturns 503 when the database is unreachable so a load balancer takes the\ninstance out of rotation instead of routing requests it cannot serve.","operationId":"health_ready_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Ready Health Ready Get"}}}}}}},"/health":{"get":{"summary":"Health","description":"Backwards-compatible alias for the readiness probe.\n\nThis previously returned 200 with ``db: unreachable``, so any load balancer\nchecking it kept broken instances in service. It now carries the same\nstatus code as /health/ready.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}}},"components":{"schemas":{"APIKeyResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["id","name","key_prefix","created_at","last_used_at","expires_at","is_active"],"title":"APIKeyResponse"},"AccessRequestCreate":{"properties":{"research_purpose":{"type":"string","title":"Research Purpose"},"institution":{"type":"string","title":"Institution"}},"type":"object","required":["research_purpose","institution"],"title":"AccessRequestCreate"},"AccessRequestListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AccessRequestResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"AccessRequestListResponse"},"AccessRequestResponse":{"properties":{"id":{"type":"integer","title":"Id"},"dataset_accession":{"type":"string","title":"Dataset Accession"},"requester_id":{"type":"integer","title":"Requester Id"},"status":{"type":"string","title":"Status"},"research_purpose":{"type":"string","title":"Research Purpose"},"institution":{"type":"string","title":"Institution"},"approved_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Approved By"},"approved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Approved At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"rejection_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rejection Reason"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","dataset_accession","requester_id","status","research_purpose","institution","approved_by","approved_at","expires_at","rejection_reason","created_at"],"title":"AccessRequestResponse"},"AccountErasureResponse":{"properties":{"erased_user_id":{"type":"integer","title":"Erased User Id"},"drafts_deleted":{"items":{"type":"string"},"type":"array","title":"Drafts Deleted"}},"type":"object","required":["erased_user_id","drafts_deleted"],"title":"AccountErasureResponse","description":"What was removed, so the caller can show something specific.\n\n`drafts_deleted` carries accessions rather than a count because a submitter\nwho is about to lose unreleased work should be told exactly which records\nwent, not merely how many."},"AddDatasetToCollection":{"properties":{"dataset_accession":{"type":"string","title":"Dataset Accession"},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["dataset_accession"],"title":"AddDatasetToCollection"},"AdminApproveAccessRequest":{"properties":{"expires_in_days":{"type":"integer","title":"Expires In Days","default":365}},"type":"object","title":"AdminApproveAccessRequest"},"AdminDoiRequest":{"properties":{"doi":{"type":"string","title":"Doi"}},"type":"object","required":["doi"],"title":"AdminDoiRequest"},"AdminEmbargoRequest":{"properties":{"embargo_until":{"type":"string","format":"date-time","title":"Embargo Until"}},"type":"object","required":["embargo_until"],"title":"AdminEmbargoRequest"},"AdminPublishRequest":{"properties":{"changelog":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Changelog"}},"type":"object","title":"AdminPublishRequest"},"AdminRejectAccessRequest":{"properties":{"reason":{"type":"string","title":"Reason"}},"type":"object","required":["reason"],"title":"AdminRejectAccessRequest"},"AdminRejectRequest":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"AdminRejectRequest"},"AssignDatasetTeamRequest":{"properties":{"team_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Team Id"}},"type":"object","title":"AssignDatasetTeamRequest"},"Body_upload_cell_types_api_v1_datasets__accession__samples__sample_id__cell_types_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_cell_types_api_v1_datasets__accession__samples__sample_id__cell_types_upload_post"},"Body_upload_embedding_api_v1_datasets__accession__samples__sample_id__embeddings_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_embedding_api_v1_datasets__accession__samples__sample_id__embeddings_upload_post"},"Body_upload_file_api_v1_datasets__accession__files_post":{"properties":{"file_type":{"type":"string","title":"File Type"},"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"sample_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"}},"type":"object","required":["file_type","file"],"title":"Body_upload_file_api_v1_datasets__accession__files_post"},"BulkSampleResponse":{"properties":{"inserted":{"type":"integer","title":"Inserted"},"samples":{"items":{"$ref":"#/components/schemas/SampleResponse"},"type":"array","title":"Samples"}},"type":"object","required":["inserted","samples"],"title":"BulkSampleResponse"},"BundleJobStatusResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"type":"object","required":["job_id","status"],"title":"BundleJobStatusResponse"},"BundleRequest":{"properties":{"file_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"File Ids"},"include_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Include Types"}},"type":"object","title":"BundleRequest"},"CellTypeListResponse":{"properties":{"spots":{"items":{"$ref":"#/components/schemas/CellTypeSpot"},"type":"array","title":"Spots"},"cell_types":{"items":{"type":"string"},"type":"array","title":"Cell Types"}},"type":"object","required":["spots","cell_types"],"title":"CellTypeListResponse"},"CellTypeSpot":{"properties":{"barcode":{"type":"string","title":"Barcode"},"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"},"cell_type":{"type":"string","title":"Cell Type"},"confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Confidence"}},"type":"object","required":["barcode","x","y","cell_type","confidence"],"title":"CellTypeSpot"},"CellTypeUploadResponse":{"properties":{"inserted":{"type":"integer","title":"Inserted"},"sample_id":{"type":"integer","title":"Sample Id"}},"type":"object","required":["inserted","sample_id"],"title":"CellTypeUploadResponse"},"ChangeMemberRoleRequest":{"properties":{"role":{"type":"string","title":"Role"}},"type":"object","required":["role"],"title":"ChangeMemberRoleRequest"},"CitationCreate":{"properties":{"doi":{"type":"string","title":"Doi"}},"type":"object","required":["doi"],"title":"CitationCreate"},"CitationListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CitationResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"CitationListResponse"},"CitationResponse":{"properties":{"id":{"type":"integer","title":"Id"},"dataset_accession":{"type":"string","title":"Dataset Accession"},"doi":{"type":"string","title":"Doi"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"authors":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authors"},"journal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Journal"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"},"added_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Added By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"verified":{"type":"boolean","title":"Verified"}},"type":"object","required":["id","dataset_accession","doi","title","authors","journal","year","added_by","created_at","verified"],"title":"CitationResponse"},"CoexpressionPoint":{"properties":{"barcode":{"type":"string","title":"Barcode"},"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"},"gene_a_value":{"type":"number","title":"Gene A Value"},"gene_b_value":{"type":"number","title":"Gene B Value"}},"type":"object","required":["barcode","x","y","gene_a_value","gene_b_value"],"title":"CoexpressionPoint"},"CoexpressionResponse":{"properties":{"accession":{"type":"string","title":"Accession"},"gene_a":{"type":"string","title":"Gene A"},"gene_b":{"type":"string","title":"Gene B"},"correlation":{"type":"number","title":"Correlation"},"spots":{"items":{"$ref":"#/components/schemas/CoexpressionPoint"},"type":"array","title":"Spots"}},"type":"object","required":["accession","gene_a","gene_b","correlation","spots"],"title":"CoexpressionResponse"},"CollectionCreate":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["title"],"title":"CollectionCreate"},"CollectionDatasetItem":{"properties":{"accession":{"type":"string","title":"Accession"},"title":{"type":"string","title":"Title"},"abstract":{"type":"string","title":"Abstract"},"status":{"type":"string","title":"Status"},"download_count":{"type":"integer","title":"Download Count"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"sort_order":{"type":"integer","title":"Sort Order"}},"type":"object","required":["accession","title","abstract","status","download_count","published_at","sort_order"],"title":"CollectionDatasetItem"},"CollectionDetailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"accession":{"type":"string","title":"Accession"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"owner_id":{"type":"integer","title":"Owner Id"},"is_public":{"type":"boolean","title":"Is Public"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"dataset_count":{"type":"integer","title":"Dataset Count"},"datasets":{"items":{"$ref":"#/components/schemas/CollectionDatasetItem"},"type":"array","title":"Datasets"}},"type":"object","required":["id","accession","title","description","owner_id","is_public","created_at","published_at","dataset_count","datasets"],"title":"CollectionDetailResponse"},"CollectionListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CollectionResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"}},"type":"object","required":["items","total","page","per_page"],"title":"CollectionListResponse"},"CollectionResponse":{"properties":{"id":{"type":"integer","title":"Id"},"accession":{"type":"string","title":"Accession"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"owner_id":{"type":"integer","title":"Owner Id"},"is_public":{"type":"boolean","title":"Is Public"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"dataset_count":{"type":"integer","title":"Dataset Count"}},"type":"object","required":["id","accession","title","description","owner_id","is_public","created_at","published_at","dataset_count"],"title":"CollectionResponse"},"CollectionSummary":{"properties":{"id":{"type":"integer","title":"Id"},"accession":{"type":"string","title":"Accession"},"title":{"type":"string","title":"Title"},"is_public":{"type":"boolean","title":"Is Public"}},"type":"object","required":["id","accession","title","is_public"],"title":"CollectionSummary"},"CollectionUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"CollectionUpdate"},"CommentAuthor":{"properties":{"id":{"type":"integer","title":"Id"},"full_name":{"type":"string","title":"Full Name"},"institution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Institution"}},"type":"object","required":["id","full_name","institution"],"title":"CommentAuthor"},"CommentCreate":{"properties":{"body":{"type":"string","title":"Body"},"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"}},"type":"object","required":["body"],"title":"CommentCreate"},"CommentListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CommentResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"CommentListResponse"},"CommentReactionCounts":{"properties":{"helpful":{"type":"integer","title":"Helpful","default":0},"flag":{"type":"integer","title":"Flag","default":0}},"type":"object","title":"CommentReactionCounts"},"CommentResponse":{"properties":{"id":{"type":"integer","title":"Id"},"dataset_accession":{"type":"string","title":"Dataset Accession"},"parent_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Id"},"user_id":{"type":"integer","title":"User Id"},"author":{"anyOf":[{"$ref":"#/components/schemas/CommentAuthor"},{"type":"null"}]},"body":{"type":"string","title":"Body"},"is_deleted":{"type":"boolean","title":"Is Deleted"},"is_pinned":{"type":"boolean","title":"Is Pinned"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"reactions":{"$ref":"#/components/schemas/CommentReactionCounts","default":{"helpful":0,"flag":0}},"reply_count":{"type":"integer","title":"Reply Count","default":0},"replies":{"items":{"$ref":"#/components/schemas/CommentResponse"},"type":"array","title":"Replies","default":[]},"user_reaction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Reaction"}},"type":"object","required":["id","dataset_accession","parent_id","user_id","body","is_deleted","is_pinned","created_at","updated_at"],"title":"CommentResponse"},"CommentUpdate":{"properties":{"body":{"type":"string","title":"Body"}},"type":"object","required":["body"],"title":"CommentUpdate"},"CompareResponse":{"properties":{"datasets":{"items":{"$ref":"#/components/schemas/DatasetResponse"},"type":"array","title":"Datasets"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["datasets","total"],"title":"CompareResponse"},"CompleteDirectUploadRequest":{"properties":{"sha256":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sha256"}},"type":"object","title":"CompleteDirectUploadRequest"},"CompleteMultipartUploadRequest":{"properties":{"parts":{"items":{"$ref":"#/components/schemas/PartInfo"},"type":"array","title":"Parts"}},"type":"object","required":["parts"],"title":"CompleteMultipartUploadRequest"},"ConversionJobResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"target_format":{"type":"string","title":"Target Format"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"type":"object","required":["job_id","status","target_format"],"title":"ConversionJobResponse"},"ConversionRequest":{"properties":{"target_format":{"type":"string","title":"Target Format"}},"type":"object","required":["target_format"],"title":"ConversionRequest"},"CreateAPIKeyRequest":{"properties":{"name":{"type":"string","title":"Name"},"expires_in_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires In Days"}},"type":"object","required":["name"],"title":"CreateAPIKeyRequest"},"CreateAPIKeyResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"key":{"type":"string","title":"Key"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["id","name","key_prefix","key","created_at","expires_at"],"title":"CreateAPIKeyResponse"},"DEGeneResult":{"properties":{"gene":{"type":"string","title":"Gene"},"mean_a":{"type":"number","title":"Mean A"},"mean_b":{"type":"number","title":"Mean B"},"log2fc":{"type":"number","title":"Log2Fc"},"pvalue":{"type":"number","title":"Pvalue"},"padj":{"type":"number","title":"Padj"}},"type":"object","required":["gene","mean_a","mean_b","log2fc","pvalue","padj"],"title":"DEGeneResult"},"DatasetCreate":{"properties":{"title":{"type":"string","title":"Title"},"abstract":{"type":"string","title":"Abstract"},"technology_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Technology Id"},"organism_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organism Id"},"tissue_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tissue Id"},"disease_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Disease Id"},"access_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Type"},"data_use_agreement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Use Agreement"},"team_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Team Id"},"accession":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accession"},"submitter_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Submitter Id"}},"type":"object","required":["title","abstract"],"title":"DatasetCreate"},"DatasetListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DatasetResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"}},"type":"object","required":["items","total","page","per_page"],"title":"DatasetListResponse"},"DatasetResponse":{"properties":{"id":{"type":"integer","title":"Id"},"accession":{"type":"string","title":"Accession"},"title":{"type":"string","title":"Title"},"abstract":{"type":"string","title":"Abstract"},"status":{"type":"string","title":"Status"},"access_type":{"type":"string","title":"Access Type","default":"open"},"data_use_agreement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Use Agreement"},"technology_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Technology Id"},"organism_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organism Id"},"tissue_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tissue Id"},"disease_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Disease Id"},"technology":{"anyOf":[{"$ref":"#/components/schemas/TechnologyRef"},{"type":"null"}]},"organism":{"anyOf":[{"$ref":"#/components/schemas/OntologyTermRef"},{"type":"null"}]},"tissue":{"anyOf":[{"$ref":"#/components/schemas/OntologyTermRef"},{"type":"null"}]},"disease":{"anyOf":[{"$ref":"#/components/schemas/OntologyTermRef"},{"type":"null"}]},"submitter_id":{"type":"integer","title":"Submitter Id"},"doi":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doi"},"doi_minted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Doi Minted At"},"embargo_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Embargo Until"},"download_count":{"type":"integer","title":"Download Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"collection_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Collection Id"},"team_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Team Id"},"qc_status":{"type":"string","title":"Qc Status","default":"not_run"},"current_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Version"},"gene_index_status":{"type":"string","title":"Gene Index Status","default":"not_indexed"},"reviewer_token_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Reviewer Token Expires At"}},"type":"object","required":["id","accession","title","abstract","status","technology_id","organism_id","tissue_id","disease_id","submitter_id","doi","download_count","created_at","published_at"],"title":"DatasetResponse"},"DatasetUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"abstract":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abstract"},"technology_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Technology Id"},"organism_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organism Id"},"tissue_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tissue Id"},"disease_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Disease Id"},"access_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Type"},"data_use_agreement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Use Agreement"}},"type":"object","title":"DatasetUpdate"},"DatasetVersionCreate":{"properties":{"changelog":{"type":"string","title":"Changelog"}},"type":"object","required":["changelog"],"title":"DatasetVersionCreate"},"DatasetVersionListResponse":{"properties":{"versions":{"items":{"$ref":"#/components/schemas/DatasetVersionResponse"},"type":"array","title":"Versions"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["versions","total"],"title":"DatasetVersionListResponse"},"DatasetVersionResponse":{"properties":{"id":{"type":"integer","title":"Id"},"dataset_accession":{"type":"string","title":"Dataset Accession"},"version_number":{"type":"integer","title":"Version Number"},"changelog":{"type":"string","title":"Changelog"},"published_at":{"type":"string","format":"date-time","title":"Published At"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"file_snapshot":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"File Snapshot"},"versioned_doi":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Versioned Doi"}},"type":"object","required":["id","dataset_accession","version_number","changelog","published_at","created_by","file_snapshot"],"title":"DatasetVersionResponse"},"DifferentialExpressionRequest":{"properties":{"region_a":{"items":{"type":"string"},"type":"array","title":"Region A"},"region_b":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"string","const":"rest"}],"title":"Region B","default":"rest"},"method":{"type":"string","enum":["wilcoxon","t-test"],"title":"Method","default":"wilcoxon"},"n_top_genes":{"type":"integer","title":"N Top Genes","default":50}},"type":"object","required":["region_a"],"title":"DifferentialExpressionRequest"},"DifferentialExpressionResponse":{"properties":{"genes":{"items":{"$ref":"#/components/schemas/DEGeneResult"},"type":"array","title":"Genes"},"n_spots_a":{"type":"integer","title":"N Spots A"},"n_spots_b":{"type":"integer","title":"N Spots B"},"method":{"type":"string","title":"Method"},"subsampled":{"type":"boolean","title":"Subsampled"}},"type":"object","required":["genes","n_spots_a","n_spots_b","method","subsampled"],"title":"DifferentialExpressionResponse"},"DirectUploadUrlRequest":{"properties":{"filename":{"type":"string","title":"Filename"},"file_type":{"type":"string","title":"File Type"},"size_bytes":{"type":"integer","title":"Size Bytes"},"md5_checksum":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Md5 Checksum"},"sample_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"}},"type":"object","required":["filename","file_type","size_bytes"],"title":"DirectUploadUrlRequest"},"DirectUploadUrlResponse":{"properties":{"upload_url":{"type":"string","title":"Upload Url"},"file_id":{"type":"integer","title":"File Id"}},"type":"object","required":["upload_url","file_id"],"title":"DirectUploadUrlResponse"},"DownloadHistoryItem":{"properties":{"dataset_accession":{"type":"string","title":"Dataset Accession"},"title":{"type":"string","title":"Title"},"last_downloaded_at":{"type":"string","format":"date-time","title":"Last Downloaded At"}},"type":"object","required":["dataset_accession","title","last_downloaded_at"],"title":"DownloadHistoryItem"},"DownloadsListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DownloadHistoryItem"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"}},"type":"object","required":["items","total","page","per_page"],"title":"DownloadsListResponse"},"EmbeddingComputeResponse":{"properties":{"embedding_id":{"type":"integer","title":"Embedding Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["embedding_id","status"],"title":"EmbeddingComputeResponse"},"EmbeddingComputeStatusResponse":{"properties":{"embedding_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Embedding Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["embedding_id","status"],"title":"EmbeddingComputeStatusResponse"},"EmbeddingCoordResponse":{"properties":{"embedding_id":{"type":"integer","title":"Embedding Id"},"method":{"type":"string","title":"Method"},"n_components":{"type":"integer","title":"N Components"},"spots":{"items":{"$ref":"#/components/schemas/EmbeddingPoint"},"type":"array","title":"Spots"}},"type":"object","required":["embedding_id","method","n_components","spots"],"title":"EmbeddingCoordResponse"},"EmbeddingInfo":{"properties":{"id":{"type":"integer","title":"Id"},"method":{"type":"string","title":"Method"},"n_components":{"type":"integer","title":"N Components"},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters"},"compute_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compute Status"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","method","n_components","parameters","compute_status","created_at"],"title":"EmbeddingInfo"},"EmbeddingListResponse":{"properties":{"embeddings":{"items":{"$ref":"#/components/schemas/EmbeddingInfo"},"type":"array","title":"Embeddings"}},"type":"object","required":["embeddings"],"title":"EmbeddingListResponse"},"EmbeddingPoint":{"properties":{"barcode":{"type":"string","title":"Barcode"},"dim_1":{"type":"number","title":"Dim 1"},"dim_2":{"type":"number","title":"Dim 2"},"dim_3":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dim 3"}},"type":"object","required":["barcode","dim_1","dim_2"],"title":"EmbeddingPoint"},"EmbeddingUploadResponse":{"properties":{"embedding_id":{"type":"integer","title":"Embedding Id"},"inserted":{"type":"integer","title":"Inserted"},"sample_id":{"type":"integer","title":"Sample Id"}},"type":"object","required":["embedding_id","inserted","sample_id"],"title":"EmbeddingUploadResponse"},"FacetItem":{"properties":{"id":{"type":"integer","title":"Id"},"label":{"type":"string","title":"Label"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["id","label","count"],"title":"FacetItem"},"FacetsResponse":{"properties":{"technologies":{"items":{"$ref":"#/components/schemas/FacetItem"},"type":"array","title":"Technologies"},"organisms":{"items":{"$ref":"#/components/schemas/FacetItem"},"type":"array","title":"Organisms"},"tissues":{"items":{"$ref":"#/components/schemas/FacetItem"},"type":"array","title":"Tissues"},"diseases":{"items":{"$ref":"#/components/schemas/FacetItem"},"type":"array","title":"Diseases"}},"type":"object","required":["technologies","organisms","tissues","diseases"],"title":"FacetsResponse"},"FileResponse":{"properties":{"id":{"type":"integer","title":"Id"},"dataset_id":{"type":"integer","title":"Dataset Id"},"sample_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"},"filename":{"type":"string","title":"Filename"},"file_type":{"type":"string","title":"File Type"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"},"md5_checksum":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Md5 Checksum"},"storage_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Storage Path"},"upload_status":{"type":"string","title":"Upload Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url"},"file_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"File Metadata"},"tile_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tile Status"}},"type":"object","required":["id","dataset_id","sample_id","filename","file_type","size_bytes","md5_checksum","storage_path","upload_status","created_at"],"title":"FileResponse"},"FlaggedCommentResponse":{"properties":{"id":{"type":"integer","title":"Id"},"dataset_accession":{"type":"string","title":"Dataset Accession"},"user_id":{"type":"integer","title":"User Id"},"author":{"anyOf":[{"$ref":"#/components/schemas/CommentAuthor"},{"type":"null"}]},"body":{"type":"string","title":"Body"},"is_deleted":{"type":"boolean","title":"Is Deleted"},"is_pinned":{"type":"boolean","title":"Is Pinned"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"flag_count":{"type":"integer","title":"Flag Count"}},"type":"object","required":["id","dataset_accession","user_id","body","is_deleted","is_pinned","created_at","flag_count"],"title":"FlaggedCommentResponse"},"FlaggedCommentsListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/FlaggedCommentResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"FlaggedCommentsListResponse"},"ForgotPasswordRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"ForgotPasswordRequest"},"GeneAutocompleteSuggestion":{"properties":{"gene_symbol":{"type":"string","title":"Gene Symbol"},"dataset_count":{"type":"integer","title":"Dataset Count"}},"type":"object","required":["gene_symbol","dataset_count"],"title":"GeneAutocompleteSuggestion"},"GeneSearchDataset":{"properties":{"dataset_accession":{"type":"string","title":"Dataset Accession"},"dataset_title":{"type":"string","title":"Dataset Title"},"sample_id":{"type":"integer","title":"Sample Id"},"organism":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organism"},"tissue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tissue"},"technology":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Technology"},"mean_expr":{"type":"number","title":"Mean Expr"},"pct_spots_expressed":{"type":"number","title":"Pct Spots Expressed"},"max_expr":{"type":"number","title":"Max Expr"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"}},"type":"object","required":["dataset_accession","dataset_title","sample_id","organism","tissue","technology","mean_expr","pct_spots_expressed","max_expr"],"title":"GeneSearchDataset"},"GeneSearchResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/GeneSearchDataset"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"}},"type":"object","required":["items","total","page","per_page"],"title":"GeneSearchResponse"},"GeneSetListResponse":{"properties":{"gene_sets":{"items":{"$ref":"#/components/schemas/GeneSetResponse"},"type":"array","title":"Gene Sets"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["gene_sets","total"],"title":"GeneSetListResponse"},"GeneSetResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"source":{"type":"string","title":"Source"},"gene_symbols":{"items":{"type":"string"},"type":"array","title":"Gene Symbols"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["id","name","source","gene_symbols"],"title":"GeneSetResponse"},"GenesResponse":{"properties":{"accession":{"type":"string","title":"Accession"},"genes":{"items":{"type":"string"},"type":"array","title":"Genes"}},"type":"object","required":["accession","genes"],"title":"GenesResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HelpArticleCreate":{"properties":{"title":{"type":"string","title":"Title"},"body":{"type":"string","title":"Body"},"published":{"type":"boolean","title":"Published","default":true},"position":{"type":"integer","title":"Position","default":0},"help_topic_id":{"type":"integer","title":"Help Topic Id"}},"type":"object","required":["title","body","help_topic_id"],"title":"HelpArticleCreate"},"HelpArticleDetailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"help_topic_id":{"type":"integer","title":"Help Topic Id"},"title":{"type":"string","title":"Title"},"slug":{"type":"string","title":"Slug"},"body":{"type":"string","title":"Body"},"published":{"type":"boolean","title":"Published"},"position":{"type":"integer","title":"Position"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"topic":{"$ref":"#/components/schemas/HelpTopicResponse"},"category":{"$ref":"#/components/schemas/HelpCategoryResponse"}},"type":"object","required":["id","help_topic_id","title","slug","body","published","position","created_at","updated_at","topic","category"],"title":"HelpArticleDetailResponse"},"HelpArticleResponse":{"properties":{"id":{"type":"integer","title":"Id"},"help_topic_id":{"type":"integer","title":"Help Topic Id"},"title":{"type":"string","title":"Title"},"slug":{"type":"string","title":"Slug"},"body":{"type":"string","title":"Body"},"published":{"type":"boolean","title":"Published"},"position":{"type":"integer","title":"Position"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","help_topic_id","title","slug","body","published","position","created_at","updated_at"],"title":"HelpArticleResponse"},"HelpArticleSummary":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"slug":{"type":"string","title":"Slug"},"published":{"type":"boolean","title":"Published"},"position":{"type":"integer","title":"Position"}},"type":"object","required":["id","title","slug","published","position"],"title":"HelpArticleSummary"},"HelpArticleUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"published":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Published"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"}},"type":"object","title":"HelpArticleUpdate"},"HelpCategoryCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"audience":{"type":"string","title":"Audience","default":"general"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"position":{"type":"integer","title":"Position","default":0}},"type":"object","required":["name"],"title":"HelpCategoryCreate"},"HelpCategoryResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"audience":{"type":"string","title":"Audience"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"position":{"type":"integer","title":"Position"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"topic_count":{"type":"integer","title":"Topic Count","default":0},"article_count":{"type":"integer","title":"Article Count","default":0}},"type":"object","required":["id","name","slug","description","audience","icon","position","created_at"],"title":"HelpCategoryResponse"},"HelpCategoryUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"}},"type":"object","title":"HelpCategoryUpdate"},"HelpCategoryWithTopics":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"audience":{"type":"string","title":"Audience"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"position":{"type":"integer","title":"Position"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"topic_count":{"type":"integer","title":"Topic Count","default":0},"article_count":{"type":"integer","title":"Article Count","default":0},"topics":{"items":{"$ref":"#/components/schemas/HelpTopicWithArticles"},"type":"array","title":"Topics","default":[]}},"type":"object","required":["id","name","slug","description","audience","icon","position","created_at"],"title":"HelpCategoryWithTopics"},"HelpTopicCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"position":{"type":"integer","title":"Position","default":0},"help_category_id":{"type":"integer","title":"Help Category Id"}},"type":"object","required":["name","help_category_id"],"title":"HelpTopicCreate"},"HelpTopicResponse":{"properties":{"id":{"type":"integer","title":"Id"},"help_category_id":{"type":"integer","title":"Help Category Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"position":{"type":"integer","title":"Position"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"article_count":{"type":"integer","title":"Article Count","default":0}},"type":"object","required":["id","help_category_id","name","slug","description","position","created_at"],"title":"HelpTopicResponse"},"HelpTopicUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"}},"type":"object","title":"HelpTopicUpdate"},"HelpTopicWithArticles":{"properties":{"id":{"type":"integer","title":"Id"},"help_category_id":{"type":"integer","title":"Help Category Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"position":{"type":"integer","title":"Position"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"article_count":{"type":"integer","title":"Article Count","default":0},"articles":{"items":{"$ref":"#/components/schemas/HelpArticleSummary"},"type":"array","title":"Articles","default":[]}},"type":"object","required":["id","help_category_id","name","slug","description","position","created_at"],"title":"HelpTopicWithArticles"},"InitiateMultipartUploadRequest":{"properties":{"filename":{"type":"string","title":"Filename"},"file_type":{"type":"string","title":"File Type"},"size_bytes":{"type":"integer","title":"Size Bytes"},"sample_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"}},"type":"object","required":["filename","file_type","size_bytes"],"title":"InitiateMultipartUploadRequest"},"InitiateMultipartUploadResponse":{"properties":{"file_id":{"type":"integer","title":"File Id"},"upload_id":{"type":"string","title":"Upload Id"},"part_size":{"type":"integer","title":"Part Size"}},"type":"object","required":["file_id","upload_id","part_size"],"title":"InitiateMultipartUploadResponse"},"InviteMemberRequest":{"properties":{"email":{"type":"string","title":"Email"},"role":{"type":"string","title":"Role","default":"member"}},"type":"object","required":["email"],"title":"InviteMemberRequest"},"LaunchRequest":{"properties":{"platform":{"type":"string","enum":["terra","galaxy","seqera"],"title":"Platform"},"file_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"File Types"},"workflow_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Id"}},"type":"object","required":["platform"],"title":"LaunchRequest"},"LaunchResponse":{"properties":{"launch_url":{"type":"string","title":"Launch Url"},"platform":{"type":"string","title":"Platform"}},"type":"object","required":["launch_url","platform"],"title":"LaunchResponse"},"ListPartsResponse":{"properties":{"upload_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upload Id"},"parts":{"items":{"$ref":"#/components/schemas/PartInfo"},"type":"array","title":"Parts"}},"type":"object","required":["upload_id","parts"],"title":"ListPartsResponse"},"LoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest"},"ModuleScoreRequest":{"properties":{"gene_set_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gene Set Id"},"custom_genes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Custom Genes"}},"type":"object","title":"ModuleScoreRequest"},"ModuleScoreResponse":{"properties":{"spots":{"items":{"$ref":"#/components/schemas/ModuleScoreSpot"},"type":"array","title":"Spots"},"method":{"type":"string","title":"Method"},"gene_set_name":{"type":"string","title":"Gene Set Name"},"n_genes_total":{"type":"integer","title":"N Genes Total"},"n_genes_matched":{"type":"integer","title":"N Genes Matched"},"matched_genes":{"items":{"type":"string"},"type":"array","title":"Matched Genes"}},"type":"object","required":["spots","method","gene_set_name","n_genes_total","n_genes_matched","matched_genes"],"title":"ModuleScoreResponse"},"ModuleScoreSpot":{"properties":{"barcode":{"type":"string","title":"Barcode"},"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"},"score":{"type":"number","title":"Score"}},"type":"object","required":["barcode","x","y","score"],"title":"ModuleScoreSpot"},"OktaAuthorizeResponse":{"properties":{"authorization_url":{"type":"string","title":"Authorization Url"}},"type":"object","required":["authorization_url"],"title":"OktaAuthorizeResponse"},"OktaConnectRequest":{"properties":{"code":{"type":"string","title":"Code"},"state":{"type":"string","title":"State"}},"type":"object","required":["code","state"],"title":"OktaConnectRequest"},"OntologyTermEntry":{"properties":{"id":{"type":"integer","title":"Id"},"kind":{"type":"string","title":"Kind","description":"organism, tissue or disease."},"ontology":{"type":"string","title":"Ontology","description":"Source ontology, e.g. NCBITaxon, UBERON, MONDO."},"term_id":{"type":"string","title":"Term Id","description":"Identifier within the ontology; with `ontology` forms the CURIE."},"label":{"type":"string","title":"Label"},"dataset_count":{"type":"integer","title":"Dataset Count","description":"Published datasets annotated with this term."}},"type":"object","required":["id","kind","ontology","term_id","label","dataset_count"],"title":"OntologyTermEntry"},"OntologyTermRef":{"properties":{"id":{"type":"integer","title":"Id"},"ontology":{"type":"string","title":"Ontology"},"term_id":{"type":"string","title":"Term Id"},"label":{"type":"string","title":"Label"}},"type":"object","required":["id","ontology","term_id","label"],"title":"OntologyTermRef","description":"An organism, tissue or disease term. `ontology` + `term_id` form the CURIE,\ne.g. NCBITaxon:9606."},"OrcidAuthorizeResponse":{"properties":{"authorization_url":{"type":"string","title":"Authorization Url"}},"type":"object","required":["authorization_url"],"title":"OrcidAuthorizeResponse"},"OrcidConnectRequest":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"OrcidConnectRequest"},"PartInfo":{"properties":{"part_number":{"type":"integer","title":"Part Number"},"etag":{"type":"string","title":"Etag"}},"type":"object","required":["part_number","etag"],"title":"PartInfo"},"PartUploadUrl":{"properties":{"part_number":{"type":"integer","title":"Part Number"},"upload_url":{"type":"string","title":"Upload Url"}},"type":"object","required":["part_number","upload_url"],"title":"PartUploadUrl"},"PartUploadUrlsRequest":{"properties":{"part_numbers":{"items":{"type":"integer"},"type":"array","title":"Part Numbers"}},"type":"object","required":["part_numbers"],"title":"PartUploadUrlsRequest"},"PartUploadUrlsResponse":{"properties":{"upload_id":{"type":"string","title":"Upload Id"},"expires_in":{"type":"integer","title":"Expires In"},"urls":{"items":{"$ref":"#/components/schemas/PartUploadUrl"},"type":"array","title":"Urls"}},"type":"object","required":["upload_id","expires_in","urls"],"title":"PartUploadUrlsResponse"},"ProfileResponse":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","title":"Email"},"full_name":{"type":"string","title":"Full Name"},"institution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Institution"},"orcid_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Orcid Id"},"okta_linked":{"type":"boolean","title":"Okta Linked","default":false},"role":{"type":"string","title":"Role"},"email_notifications_enabled":{"type":"boolean","title":"Email Notifications Enabled"}},"type":"object","required":["id","email","full_name","institution","orcid_id","role","email_notifications_enabled"],"title":"ProfileResponse"},"ProfileUpdate":{"properties":{"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"institution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Institution"},"email_notifications_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Notifications Enabled"}},"type":"object","title":"ProfileUpdate"},"QCCheckResult":{"properties":{"name":{"type":"string","title":"Name"},"label":{"type":"string","title":"Label"},"status":{"type":"string","title":"Status"},"metric":{"anyOf":[{},{"type":"null"}],"title":"Metric"},"threshold":{"anyOf":[{},{"type":"null"}],"title":"Threshold"},"message":{"type":"string","title":"Message"}},"type":"object","required":["name","label","status","message"],"title":"QCCheckResult"},"QCFileReport":{"properties":{"file_id":{"type":"integer","title":"File Id"},"filename":{"type":"string","title":"Filename"},"file_type":{"type":"string","title":"File Type"},"checks":{"items":{"$ref":"#/components/schemas/QCCheckResult"},"type":"array","title":"Checks"}},"type":"object","required":["file_id","filename","file_type","checks"],"title":"QCFileReport"},"QCOverrideRequest":{"properties":{"reason":{"type":"string","title":"Reason"}},"type":"object","required":["reason"],"title":"QCOverrideRequest"},"QCReportDetail":{"properties":{"metadata_checks":{"items":{"$ref":"#/components/schemas/QCCheckResult"},"type":"array","title":"Metadata Checks"},"expression_matrix_reports":{"items":{"$ref":"#/components/schemas/QCFileReport"},"type":"array","title":"Expression Matrix Reports"},"spatial_coordinate_reports":{"items":{"$ref":"#/components/schemas/QCFileReport"},"type":"array","title":"Spatial Coordinate Reports"}},"type":"object","required":["metadata_checks","expression_matrix_reports","spatial_coordinate_reports"],"title":"QCReportDetail"},"QCReportListResponse":{"properties":{"reports":{"items":{"$ref":"#/components/schemas/QCReportResponse"},"type":"array","title":"Reports"},"dataset_qc_status":{"type":"string","title":"Dataset Qc Status"}},"type":"object","required":["reports","dataset_qc_status"],"title":"QCReportListResponse"},"QCReportResponse":{"properties":{"id":{"type":"integer","title":"Id"},"dataset_accession":{"type":"string","title":"Dataset Accession"},"sample_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"},"status":{"type":"string","title":"Status"},"report_json":{"anyOf":[{"$ref":"#/components/schemas/QCReportDetail"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"curator_override":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Curator Override"}},"type":"object","required":["id","dataset_accession","sample_id","status","created_at","completed_at"],"title":"QCReportResponse"},"ReactionCreate":{"properties":{"reaction":{"type":"string","title":"Reaction"}},"type":"object","required":["reaction"],"title":"ReactionCreate"},"RefreshRequest":{"properties":{"refresh_token":{"type":"string","title":"Refresh Token"}},"type":"object","required":["refresh_token"],"title":"RefreshRequest"},"RegisterRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"full_name":{"type":"string","title":"Full Name"},"institution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Institution"}},"type":"object","required":["email","password","full_name"],"title":"RegisterRequest"},"ResetPasswordRequest":{"properties":{"token":{"type":"string","title":"Token"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["token","new_password"],"title":"ResetPasswordRequest"},"ReviewerTokenCreate":{"properties":{"label":{"type":"string","maxLength":255,"minLength":1,"title":"Label"},"expires_in_days":{"type":"integer","maximum":180.0,"minimum":1.0,"title":"Expires In Days"}},"type":"object","required":["label","expires_in_days"],"title":"ReviewerTokenCreate"},"ReviewerTokenCreateResponse":{"properties":{"id":{"type":"string","title":"Id"},"dataset_accession":{"type":"string","title":"Dataset Accession"},"label":{"type":"string","title":"Label"},"token_prefix":{"type":"string","title":"Token Prefix"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"access_count":{"type":"integer","title":"Access Count"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"token":{"type":"string","title":"Token"}},"type":"object","required":["id","dataset_accession","label","token_prefix","expires_at","access_count","last_used_at","created_at","revoked_at","token"],"title":"ReviewerTokenCreateResponse"},"ReviewerTokenListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ReviewerTokenResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"ReviewerTokenListResponse"},"ReviewerTokenResponse":{"properties":{"id":{"type":"string","title":"Id"},"dataset_accession":{"type":"string","title":"Dataset Accession"},"label":{"type":"string","title":"Label"},"token_prefix":{"type":"string","title":"Token Prefix"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"access_count":{"type":"integer","title":"Access Count"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"}},"type":"object","required":["id","dataset_accession","label","token_prefix","expires_at","access_count","last_used_at","created_at","revoked_at"],"title":"ReviewerTokenResponse"},"SampleCreate":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"section_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Id"}},"type":"object","required":["title"],"title":"SampleCreate"},"SampleResponse":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"section_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Id"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["id","title","section_id","description"],"title":"SampleResponse"},"SavedDatasetResponse":{"properties":{"id":{"type":"integer","title":"Id"},"accession":{"type":"string","title":"Accession"},"title":{"type":"string","title":"Title"},"abstract":{"type":"string","title":"Abstract"},"status":{"type":"string","title":"Status"},"download_count":{"type":"integer","title":"Download Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"saved_at":{"type":"string","format":"date-time","title":"Saved At"}},"type":"object","required":["id","accession","title","abstract","status","download_count","created_at","published_at","saved_at"],"title":"SavedDatasetResponse"},"SavedListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SavedDatasetResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"}},"type":"object","required":["items","total","page","per_page"],"title":"SavedListResponse"},"SubmissionDatasetResponse":{"properties":{"id":{"type":"integer","title":"Id"},"accession":{"type":"string","title":"Accession"},"title":{"type":"string","title":"Title"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"file_count":{"type":"integer","title":"File Count"},"sample_count":{"type":"integer","title":"Sample Count"},"citation_count":{"type":"integer","title":"Citation Count","default":0},"download_count":{"type":"integer","title":"Download Count","default":0}},"type":"object","required":["id","accession","title","status","created_at","published_at","file_count","sample_count"],"title":"SubmissionDatasetResponse"},"SubmissionsListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SubmissionDatasetResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"}},"type":"object","required":["items","total","page","per_page"],"title":"SubmissionsListResponse"},"SvgGeneResult":{"properties":{"gene":{"type":"string","title":"Gene"},"morans_i":{"type":"number","title":"Morans I"},"pvalue":{"type":"number","title":"Pvalue"},"padj":{"type":"number","title":"Padj"},"mean_expr":{"type":"number","title":"Mean Expr"},"n_spots_expressed":{"type":"integer","title":"N Spots Expressed"}},"type":"object","required":["gene","morans_i","pvalue","padj","mean_expr","n_spots_expressed"],"title":"SvgGeneResult"},"SvgRequest":{"properties":{"method":{"type":"string","enum":["moran_i","spark_x"],"title":"Method","default":"moran_i"},"n_top_genes":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"N Top Genes","default":50},"min_expr_fraction":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Min Expr Fraction","default":0.1}},"type":"object","title":"SvgRequest"},"SvgResponse":{"properties":{"genes":{"items":{"$ref":"#/components/schemas/SvgGeneResult"},"type":"array","title":"Genes"},"method":{"type":"string","title":"Method"},"n_genes_tested":{"type":"integer","title":"N Genes Tested"},"sample_id":{"type":"integer","title":"Sample Id"},"subsampled":{"type":"boolean","title":"Subsampled"},"n_spots":{"type":"integer","title":"N Spots"},"cached":{"type":"boolean","title":"Cached"}},"type":"object","required":["genes","method","n_genes_tested","sample_id","subsampled","n_spots","cached"],"title":"SvgResponse"},"TeamCreate":{"properties":{"name":{"type":"string","title":"Name"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["name"],"title":"TeamCreate"},"TeamDetailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"owner_id":{"type":"integer","title":"Owner Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"member_count":{"type":"integer","title":"Member Count","default":0},"dataset_count":{"type":"integer","title":"Dataset Count","default":0}},"type":"object","required":["id","name","slug","owner_id","created_at"],"title":"TeamDetailResponse"},"TeamListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TeamResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"}},"type":"object","required":["items","total","page","per_page"],"title":"TeamListResponse"},"TeamMemberWithUserResponse":{"properties":{"id":{"type":"integer","title":"Id"},"team_id":{"type":"integer","title":"Team Id"},"user_id":{"type":"integer","title":"User Id"},"role":{"type":"string","title":"Role"},"invited_at":{"type":"string","format":"date-time","title":"Invited At"},"accepted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Accepted At"},"invited_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Invited By"},"full_name":{"type":"string","title":"Full Name"},"email":{"type":"string","title":"Email"},"institution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Institution"}},"type":"object","required":["id","team_id","user_id","role","invited_at","full_name","email"],"title":"TeamMemberWithUserResponse"},"TeamResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"owner_id":{"type":"integer","title":"Owner Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"member_count":{"type":"integer","title":"Member Count","default":0},"dataset_count":{"type":"integer","title":"Dataset Count","default":0}},"type":"object","required":["id","name","slug","owner_id","created_at"],"title":"TeamResponse"},"TeamUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"TeamUpdate"},"TechnologyRef":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"vendor":{"type":"string","title":"Vendor"}},"type":"object","required":["id","name","vendor"],"title":"TechnologyRef","description":"A dataset's technology, embedded in the dataset so a reader needs no lookup."},"TechnologyTerm":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"vendor":{"type":"string","title":"Vendor"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"dataset_count":{"type":"integer","title":"Dataset Count","description":"Published datasets using this technology."}},"type":"object","required":["id","name","vendor","dataset_count"],"title":"TechnologyTerm"},"TileUrlResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"TileUrlResponse"},"TissueImageMetadataResponse":{"properties":{"width":{"type":"integer","title":"Width"},"height":{"type":"integer","title":"Height"},"tile_size":{"type":"integer","title":"Tile Size"},"zoom_levels":{"type":"integer","title":"Zoom Levels"},"scalefactors":{"anyOf":[{},{"type":"null"}],"title":"Scalefactors"}},"type":"object","required":["width","height","tile_size","zoom_levels"],"title":"TissueImageMetadataResponse"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"refresh_token":{"type":"string","title":"Refresh Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"}},"type":"object","required":["access_token","refresh_token"],"title":"TokenResponse"},"UploadPartResponse":{"properties":{"etag":{"type":"string","title":"Etag"},"part_number":{"type":"integer","title":"Part Number"}},"type":"object","required":["etag","part_number"],"title":"UploadPartResponse"},"UserResponse":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","title":"Email"},"full_name":{"type":"string","title":"Full Name"},"institution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Institution"},"role":{"type":"string","title":"Role"}},"type":"object","required":["id","email","full_name","institution","role"],"title":"UserResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/api/v1/auth/login"}}}}}}