\n\n```\n\nThe Javascript creates a CSRF token and attaches it to the button to be transmitted and verified on our servers each time a user clicks on the button. The CSRF token expires after 5 minutes. In case the CSRF token is expired or tampered, the user will be redirected to your website where it's up to you to decide what to do next - reload the page with the button or show the customer an error message.\n\nThe `cwl.js` file is loaded as a deferred resource, which means that it will load after all the webpage code execution has been finished, so it will not have any impact on your website load speed.\n\n### Chose a button colour\n\nThere are two type of buttons, so you can pick one that matches your branding. The buttons are SVG images, which means that you can scale them up or down to fit your design, without compromising on image quality. You can do this by changing the image height.\n\n##### a. White button version\n\n\n\"Lumminary\n\n
\n\n```html\n\" data-request=\"\" style=\"cursor:pointer; text-decoration:none;\" href=\"https://lumminary.com\">\n \"Lumminary\n\n```\n\n##### b. Black button version\n\n\"Lumminary\n\n
\n\n```html\n\" data-request=\"\" style=\"cursor:pointer; text-decoration:none;\" href=\"https://lumminary.com\">\n \"Lumminary\n\n```\n\n## Button configuration\n\nEach button has 2 attributes which need to be configured:\n\n1. **data-partner-uuid** where you have to add your partner UUID (you have received the partner UUID after filling in the form for product registration). \n2. **data-request** which is a string obtained by encrypting a serialized JSON (you have received the CWL encryption key after filling in the form for product registration). See details below. \n\n#### Data-request object\n\nThe data-request object has a standard format which needs to be preserved. It is formed of two types of data, some mandatory and some optional. You can use the optional fields to add any metadata or other information for your own use. The data-request object is going to be returned with the response from the authentication without being altered.\n\n##### Mandatory information\n\nThe mandatory information is a list of scopes which you ask the client to grant permission for. These scopes are comma delimited, and the possible options are: `address`, `email`, `dataset`.\n\nThe scopes _address_, _email_, and _dataset_ can be used in any combination; you must request at least one scope.\n\n| Attribute name | Description |\n|:-----------------:|:----------------------------------------------------|\n| `address` | Requests access to a customer's name and address. |\n| `email` | Requests access to a customer's email address. |\n| `dataset` | Requests access to a customer's genetic data |\n\n#### PHP example:\n```php\n$objAuthorizationRequest [\"scopes\"] = \"address,dataset,email\";\n```\n\n#### Python example:\n```python\nobjAuthorizationRequest [\"scopes\"] = \"address,dataset,email\"\n```\n\nProduct UUID is your `productUuid` for which you ask customer permissions.\n\n#### PHP example:\n```php\n$objAuthorizationRequest[\"productUuid\"] = $credentials->getProductUuid();\n```\n\n#### Python example:\n```python\nobjAuthorizationRequest[\"productUuid\"] = credentials.product_uuid\n```\n\n##### Optional information\n\nIn the optional part of the object, you can add any useful data, such as customer ID, session ID, or any parameter which can help you identify the response from Lumminary.\n\n#### PHP example:\n```php\n$objAuthorizationRequest[\"customData\"] = array();\n$objAuthorizationRequest[\"customData\"][\"customerId\"] = ;\n$objAuthorizationRequest[\"customData\"][\"websiteSession\"] = ;\n$objAuthorizationRequest[\"customData\"][\"customData3\"] = ;\n```\n\n#### Python example:\n```python\nobjAuthorizationRequest[\"customData\"] = {}\nobjAuthorizationRequest[\"customData\"][\"customerId\"] = \nobjAuthorizationRequest[\"customData\"][\"websiteSession\"] = \nobjAuthorizationRequest[\"customData\"][\"customData3\"] = \n```\n\nSee below a complete example for a data-request object:\n\n#### PHP example:\n```php\n$objAuthorizationRequest[\"scopes\"] = \"address,dataset,email\";\n$objAuthorizationRequest[\"productUuid\"] = ;\n\n$objAuthorizationRequest[\"customData\"] = array();\n$objAuthorizationRequest[\"customData\"][\"customerId\"] = ;\n$objAuthorizationRequest[\"customData\"][\"websiteSession\"] = ;\n$objAuthorizationRequest[\"customData\"][\"customData3\"] = ;\n```\n\n#### Python example:\n```python\nobjAuthorizationRequest = {}\nobjAuthorizationRequest[\"scopes\"] = \"address,dataset,email\"\nobjAuthorizationRequest[\"productUuid\"] = \n\nobjAuthorizationRequest[\"customData\"] = {}\nobjAuthorizationRequest[\"customData\"][\"customerId\"] = \nobjAuthorizationRequest[\"customData\"][\"websiteSession\"] = \nobjAuthorizationRequest[\"customData\"][\"customData3\"] = \n```\n\n## Creating the Authorization Request\n\nThe previously generated object (`objAuthorizationRequest`) will now need to be encrypted. In order to be able to encrypt the object and also query the Lumminary API to obtain the customer details and genetic data, you need to have the Lumminary API Client installed. If you haven't done this already, please follow these [steps](#Install-Lumminary-API-Client-andor-Toolkit).\n\n### Add data-request attribute\n\nAfter you have the Lumminary API Client installed correctly you can use the command below:\n\n#### PHP example:\n```php\n// You have recieved the CWL encryption key after filling in the form for product registration\n$partnerCwlKey = ;\n$requestValueEncryptedUrlEncoded = Lumminary\\Client\\LumminaryApi::cwl_data_request_build(\n $objAuthorizationRequest,\n $partnerCwlKey\n);\n```\n\n#### Python example:\n```python\nimport lumminary_sdk as lumminary\n\n# You have recieved the CWL encryption key after filling in the form for product\npartnerCwlKey = \nrequestValueEncryptedUrlEncoded = lumminary.LumminaryApi.cwl_data_request_build(objAuthorizationRequest, partnerCwlKey)\n```\n\nThe resulting string should be added in the `data-request` attribute of the `` tag of the \"Connect with Lumminary\" button.\n\n### Add data-partner-uuid attribute\n\nAdd the `data-partner-uuid` in the `data-partner-uuid` attribute of the `` tag of the \"Connect with Lumminary\" button. You have received the partner UUID after filling in the form for product registration.\n\nAn example of a button correctly configured should look like this:\n\n```html\n\n \"Lumminary\n\n```\n\n## Connect with Lumminary summary of user interaction\n\nWhen a customer clicks on the \u201cConnect with Lumminary\u201d button, a pop-up window opens. After they choose which genetic file to share, the pop-up will automatically close and the user will be redirected to your callback URL in the parent window. Your callback URL needs to be predefined in the Lumminary partner portal. \n\nThe GET request from the client to your callback URL will contain two querystring parameters - `request` and `response`:\n\n1. `request` \u2013 this is exactly the same request that you previously sent in the `data-request` field. You can decrypt it with the CWL encryption key which you used to encrypt it.\n2. `response` \u2013 the response is an urlencoded encrypted serialized JSON object which contains the Authorization UUID and the Authorization UTC unix timestamp. You will use the Authorization UUID to get the customer's data with the Lumminary API Client. The response string is encrypted with your CWL encryption key, the same as the `data-request` parameter. \n\nIn order to decrypt the `response` parameter, you can use the following function:\n\n#### PHP example:\n```php\n// the entire callback URL, including the querystring parameters\n$callbackUrlWithPayload = \"https://partnerwebsite.con/callback?request=...&response=...\";\n\n$cwlReturnObject = Lumminary\\Client\\LumminaryApi::cwl_url_query_extract(\n $callbackUrlWithPayload, \n $partnerCwlKey \n);\n```\n\n#### Python example:\n```python\n// the entire callback URL, including the querystring parameters\ncallback_url_with_payload = \"https://partnerwebsite.con/callback?request=...&response=...\"\n\ncwlReturnObject = apiClient.cwl_url_query_extract(\n callback_url_with_payload,\n partner_cwl_key\n)\n```\n\nThe `cwlReturnObject` will now contain an object like the example below:\n\n```json\n{\n \"request\": ,\n \"response\": {\n \"authorizationUuid\": ,\n \"authorizationTimestamp\": \n }\n}\n```\n\nWith the Authorization UUID (`authorizationUuid`) you can [query all the customer details](#Query-customer-genetic-data) from the Lumminary platform.\n\n## Possible errors\n\nWhen an error occurs, the customer is redirected to your callback URL. The redirect contains two querystring parameters - `request` and `response` - exactly like a regular response, but the `response` parameter contains an error object (see below) instead of an Authorization object.\n\n#### PHP example:\n```php\n// the entire callback url, including the querystring parameters\n$callbackUrlWithPayload = \"https://partnerwebsite.con/callback?request=...&response=...\";\n\n$cwlReturnObject = Lumminary\\Client\\LumminaryApi::cwl_url_query_extract(\n $callbackUrlWithPayload, \n $partnerCwlKey \n);\n```\n\n#### Python example:\n```python\n# the entire callback url, including the querystring parameters\ncallback_url_with_payload = \"https://partnerwebsite.con/callback?request=...&response=...\"\n\ncwlReturnObject = apiClient.cwl_url_query_extract(\n callback_url_with_payload,\n partner_cwl_key\n)\n```\n\nExample of a return object (`cwlReturnObject`) containing an error message:\n\n```json\n{\n \"request\": ,\n \"response\": {\n \"error\": {\n \"id\": ,\n \"message\": \n }\n }\n}\n```\n\n| Error Id | Error Message |\n|:-----------------:|:---------------------------------------------------------------------------------------------|\n| 1 | Invalid Security Token |\n| 2 | Invalid Access Scopes |\n| 3 | Customer refuses your request (this happens when the customer cancels instead of granting access) |"}, "paths": {"/auth/jwt": {"post": {"summary": "General-purpose authentication", "description": "## Note:\n* The JWT tokens returned should be passed to any resource that requires authentication, in the Authentication header, in the format `Bearer: your-token-here`\n* Only JWT authentication tokens are provided (no refresh tokens). These tokens are valid for 30 seconds from the moment they were issued", "tags": ["Lumminary API Spec"], "parameters": [{"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "requestBody": {"content": {"application/x-www-form-urlencoded": {"schema": {"type": "object", "properties": {"username": {"type": "string", "description": "The email for a Client, or the API for a partner product"}, "password": {"type": "string", "description": "The passowrd for a Client, or the API key for a service"}, "role": {"type": "string", "description": "The role for which authentication will be made. Value : role_product"}}}}}}, "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JavascriptWebToken"}}}}}}}, "/clients/{clientId}/datasets/{datasetId}/genes/{geneSymbol}": {"get": {"summary": "Get gene by symbol", "description": "Gets A gene by its symbol, which can be found by querying the reference/ resource.\n\nWill return a 404 if a gene exists as a reference, but its genomic coordinates intersect no SNPs in the dataset", "tags": ["Lumminary API Spec"], "parameters": [{"name": "clientId", "in": "path", "description": "The UUID of the client", "required": true, "schema": {"type": "string"}}, {"name": "datasetId", "in": "path", "description": "The UUID of one of the client's dataset", "required": true, "schema": {"type": "string"}}, {"name": "geneSymbol", "in": "path", "description": "The symbol of a gene to be fetched", "required": true, "schema": {"type": "string"}}, {"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClientGene"}}}}, "404": {"description": "Resource not found"}}}}, "/clients/{clientId}/datasets/{datasetId}/snps/": {"get": {"tags": ["Lumminary API Spec"], "parameters": [{"name": "clientId", "in": "path", "description": "The UUID of the client", "required": true, "schema": {"type": "string"}}, {"name": "datasetId", "in": "path", "description": "The UUID of one of the client's dataset", "required": true, "schema": {"type": "string"}}, {"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ClientSNP"}}}}}, "404": {"description": "Resource not found"}}}, "post": {"summary": "Get a large group of SNPs", "description": "SNPs that are not present in the dataset are ignored, 404 is returned only if the dataset/client does not exist", "tags": ["Lumminary API Spec"], "parameters": [{"name": "clientId", "in": "path", "description": "The UUID of the client", "required": true, "schema": {"type": "string"}}, {"name": "datasetId", "in": "path", "description": "The UUID of one of the client's dataset", "required": true, "schema": {"type": "string"}}, {"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "requestBody": {"content": {"application/x-www-form-urlencoded": {"schema": {"type": "object", "properties": {"snps": {"type": "string", "description": "JSON-encoded list of snps to be fetched"}}}}}}, "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ClientSNP"}}}}}, "404": {"description": "Resource not found"}}}}, "/clients/{clientId}/datasets/{datasetId}/snps/{snpId}": {"get": {"summary": "Get SNP information", "description": "Gets SNP information, as provided by the dataset.\n\nIf fetching this as an product, the client must have already granted access to the snip (see the 'products' group)", "tags": ["Lumminary API Spec"], "parameters": [{"name": "clientId", "in": "path", "description": "The UUID of the client", "required": true, "schema": {"type": "string"}}, {"name": "datasetId", "in": "path", "description": "The UUID of one of the client's dataset", "required": true, "schema": {"type": "string"}}, {"name": "snpId", "in": "path", "description": "The rsId of a SNP to be fetched", "required": true, "schema": {"type": "string"}}, {"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClientSNP"}}}}, "404": {"description": "Resource not found"}}}}, "/products/{productId}": {"get": {"summary": "Get product details", "tags": ["Lumminary API Spec"], "parameters": [{"name": "productId", "in": "path", "description": "The UUID of the product", "required": true, "schema": {"type": "string"}}, {"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Product"}}}}, "404": {"description": "Product not found"}}}}, "/products/{productId}/authorizations": {"get": {"tags": ["Lumminary API Spec"], "parameters": [{"name": "productId", "in": "path", "description": "The UUID of the product", "required": true, "schema": {"type": "string"}}, {"name": "seq_num_start", "in": "query", "description": "The first sequence number from which to fetch (the sequence number of the last processed authorization)", "schema": {"type": "string"}}, {"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Authorization"}}}}}, "404": {"description": "Product not found"}}}}, "/products/{productId}/authorizations/{authorizationId}": {"get": {"tags": ["Lumminary API Spec"], "parameters": [{"name": "authorizationId", "in": "path", "description": "The UUID of the authorization", "required": true, "schema": {"type": "string"}}, {"name": "productId", "in": "path", "description": "The UUID of the product", "required": true, "schema": {"type": "string"}}, {"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Authorization"}}}}, "404": {"description": "Object not found"}}}, "post": {"summary": "Signal that processing is complete, without uploading any result", "tags": ["Lumminary API Spec"], "parameters": [{"name": "authorizationId", "in": "path", "description": "The UUID of the authorization", "required": true, "schema": {"type": "string"}}, {"name": "productId", "in": "path", "description": "The UUID of the product", "required": true, "schema": {"type": "string"}}], "responses": {"201": {"description": "Result saved"}, "404": {"description": "Object not found"}}}}, "/products/{productId}/authorizations/{authorizationId}/credentials": {"post": {"summary": "Provide a result for the authorization", "description": "These can be log-in credentials for a website where the result is available", "tags": ["Lumminary API Spec"], "parameters": [{"name": "authorizationId", "in": "path", "description": "The UUID of the authorization", "required": true, "schema": {"type": "string"}}, {"name": "productId", "in": "path", "description": "The UUID of the product", "required": true, "schema": {"type": "string"}}, {"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "requestBody": {"content": {"application/x-www-form-urlencoded": {"schema": {"type": "object", "properties": {"credentials_username": {"type": "string", "description": "Credentials for accessing the result. Includes password, username and url"}, "credentials_password": {"type": "string", "description": "Credentials for accessing the result. Includes password, username and url"}, "report_url": {"type": "string", "description": "Credentials for accessing the result. Includes password, username and url"}}}}}}, "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReportCredentials"}}}}, "201": {"description": "Result saved"}, "404": {"description": "Object not found"}}}}, "/products/{productId}/authorizations/{authorizationId}/file": {"post": {"summary": "Provide a file result to the authorization, e", "description": "g. a pdf report", "tags": ["Lumminary API Spec"], "parameters": [{"name": "authorizationId", "in": "path", "description": "The UUID of the authorization", "required": true, "schema": {"type": "string"}}, {"name": "productId", "in": "path", "description": "The UUID of the product", "required": true, "schema": {"type": "string"}}, {"name": "original_filename", "in": "query", "description": "Optional original filename for the report. If not provided, the filename of uploaded file will be used", "schema": {"type": "string"}}, {"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "requestBody": {"content": {"application/x-www-form-urlencoded": {"schema": {"type": "object", "properties": {"file_report": {"type": "string", "format": "binary", "description": "A binary file (e.g. pdf) that contains the result of the authorization"}}}}}}, "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReportFile"}}}}, "201": {"description": "Result saved"}, "404": {"description": "Object not found"}}}}, "/products/{productId}/authorizations/{authorizationId}/unfulfillable": {"post": {"summary": "Catch-all Authorization state, for authorizations that passed all verifications and should reach the partner Product, but cannot be fulfilled for various reasons", "tags": ["Lumminary API Spec"], "parameters": [{"name": "authorizationId", "in": "path", "description": "The UUID of the authorization", "required": true, "schema": {"type": "string"}}, {"name": "productId", "in": "path", "description": "The UUID of the product", "required": true, "schema": {"type": "string"}}], "responses": {"404": {"description": "Object not found"}}}}, "/reference/genes/databases/{databaseName}/accessions/{accession}": {"get": {"summary": "Generic gene information", "tags": ["Lumminary API Spec"], "parameters": [{"name": "accession", "in": "path", "description": "The accession within the selected database", "required": true, "schema": {"type": "string"}}, {"name": "databaseName", "in": "path", "description": "The name of the database to search. E.g: Genbank", "required": true, "schema": {"type": "string"}}, {"name": "dbsnp_build", "in": "query", "description": "The dbSNP build for which to consider snps belonging to the gene. Defaults to 149", "schema": {"type": "integer", "default": 149}}, {"name": "reference_genome", "in": "query", "description": "The reference genome for which gene annotations will be returned. Defaults to GRCh37p13", "schema": {"type": "string", "default": "GRCH37P13"}}, {"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PublicGene"}}}}, "404": {"description": "Resource not found"}}}}, "/reference/genomes/": {"get": {"summary": "Reference genome builds", "description": "Lists reference genome builds that are available", "tags": ["Lumminary API Spec"], "parameters": [{"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ReferenceGenomeOverview"}}}}}}}}, "/reference/genomes/{genomeBuildAccession}/chromosomes": {"get": {"summary": "Reference genome metadata", "tags": ["Lumminary API Spec"], "parameters": [{"name": "genomeBuildAccession", "in": "path", "required": true, "schema": {"type": "string"}}, {"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ReferenceChromosomeOverview"}}}}}, "404": {"description": "Resource not found"}}}}, "/reference/genomes/{genomeBuildAccession}/chromosomes/{chromosomeAccession}": {"get": {"summary": "Sequence for a region of the reference genome", "description": "Fetch a closed interval of nucleotides on a given chromosome. Includes start and stop positions", "tags": ["Lumminary API Spec"], "parameters": [{"name": "chromosomeAccession", "in": "path", "description": "The accession to the chromosome", "required": true, "schema": {"type": "string"}}, {"name": "genomeBuildAccession", "in": "path", "description": "The accession of the reference genome", "required": true, "schema": {"type": "string"}}, {"name": "range_start", "in": "query", "description": "Location on the chromosome", "required": true, "schema": {"type": "integer"}}, {"name": "range_stop", "in": "query", "description": "Location on the chromosome", "required": true, "schema": {"type": "integer"}}, {"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReferenceSequence"}}}}, "404": {"description": "Resource not found"}}}}, "/reference/snps/{snpAccession}": {"get": {"summary": "Reference SNP data", "description": "Get reference SNP information, from dbSNP", "tags": ["Lumminary API Spec"], "parameters": [{"name": "snpAccession", "in": "path", "description": "The rsId of the SNP", "required": true, "schema": {"type": "string"}}, {"name": "dbsnp_version", "in": "query", "description": "The dbSNP build. Defaults to 149", "schema": {"type": "integer", "default": 149}}, {"name": "grch_version", "in": "query", "description": "The GRCh build on which to place snips. Defaults to GRCh37p13", "schema": {"type": "string", "default": "GRCH37P13"}}, {"name": "X-Fields", "in": "header", "description": "An optional fields mask", "schema": {"type": "string", "format": "mask"}}], "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PublicSNP"}}}}, "404": {"description": "Resource not found"}}}}}, "components": {"schemas": {"AccessScope": {"type": "object", "title": "AccessScope", "properties": {"address": {"$ref": "#/components/schemas/CustomerAddress"}, "dataset": {"type": "string"}, "email": {"type": "string"}, "login": {"type": "string"}, "name": {"$ref": "#/components/schemas/CustomerName"}, "sex": {"type": "string"}}}, "Authorization": {"type": "object", "title": "Authorization", "properties": {"authorization_uuid": {"type": "string"}, "client_uuid": {"type": "string"}, "create_timestamp": {"type": "integer"}, "is_active": {"type": "boolean"}, "order": {"type": "string"}, "product_uuid": {"type": "string"}, "report_credentials": {"type": "array", "items": {"$ref": "#/components/schemas/ReportCredentials"}}, "report_files": {"type": "array", "items": {"$ref": "#/components/schemas/ReportFile"}}, "scopes": {"$ref": "#/components/schemas/AccessScope"}, "sequence_number": {"type": "integer"}, "state": {"type": "string"}}, "required": ["authorization_uuid", "client_uuid", "create_timestamp", "is_active", "product_uuid", "scopes", "state"]}, "ClientGene": {"type": "object", "title": "ClientGene", "properties": {"molecular_location": {"$ref": "#/components/schemas/MolecularLocation"}, "snps": {"type": "array", "items": {"$ref": "#/components/schemas/ClientSNP"}}, "symbol": {"type": "string", "minLength": 1}}, "required": ["molecular_location", "symbol"]}, "ClientSNP": {"type": "object", "title": "ClientSNP", "properties": {"chromosome_accession": {"type": "string", "minLength": 1}, "genotyped_alleles": {"type": "array", "items": {"type": "string", "minLength": 1, "description": "A haploid allele"}}, "location": {"type": "integer", "minimum": 0}, "phased": {"type": "boolean"}, "reference_genome": {"type": "string", "minLength": 1}, "snp_id": {"type": "string", "minLength": 1}}, "required": ["chromosome_accession", "genotyped_alleles", "location", "phased", "reference_genome", "snp_id"]}, "CustomerAddress": {"type": "object", "title": "CustomerAddress", "properties": {"address1": {"type": "string"}, "address2": {"type": "string"}, "city": {"type": "string"}, "country": {"type": "string"}, "phone": {"type": "string"}, "state": {"type": "string"}, "zipcode": {"type": "string"}}}, "CustomerName": {"type": "object", "title": "CustomerName", "properties": {"first_name": {"type": "string"}, "last_name": {"type": "string"}}}, "FileLocation": {"type": "object", "title": "FileLocation", "properties": {"filename_original": {"type": "string"}, "host": {"type": "string"}, "path": {"type": "string"}}, "required": ["filename_original", "host", "path"]}, "JavascriptWebToken": {"type": "object", "title": "JavascriptWebToken", "properties": {"access_token": {"type": "string", "minLength": 1}}, "required": ["access_token"]}, "MolecularLocation": {"type": "object", "title": "MolecularLocation", "properties": {"chromosome_accession": {"type": "string", "minLength": 1}, "start": {"type": "integer", "minimum": 0}, "stop": {"type": "integer", "minimum": 0}}, "required": ["chromosome_accession", "start", "stop"]}, "Product": {"type": "object", "title": "Product", "properties": {"authorized_scopes": {"type": "array", "items": {"type": "string"}}, "email": {"type": "string"}, "product_uuid": {"type": "string"}, "redirect_uri": {"type": "string"}, "snps_authorized": {"type": "array", "items": {"type": "string"}}, "snps_authorized_any": {"type": "boolean"}, "snps_min_required": {"$ref": "#/components/schemas/SnpsMinRequired"}, "snps_min_required_any": {"type": "boolean"}}, "required": ["authorized_scopes", "product_uuid", "snps_authorized", "snps_authorized_any", "snps_min_required", "snps_min_required_any"]}, "PublicGene": {"type": "object", "title": "PublicGene", "properties": {"chromosome": {"type": "string", "minLength": 1}, "molecular_end_position": {"type": "integer", "minimum": 0}, "molecular_start_position": {"type": "integer", "minimum": 0}, "parent_accession": {"type": "string", "minLength": 1}, "snp_ids": {"type": "array", "items": {"type": "string", "description": "The SNP identifier"}}, "symbol": {"type": "string", "minLength": 1}}, "required": ["chromosome", "molecular_end_position", "molecular_start_position", "parent_accession", "snp_ids", "symbol"]}, "PublicSNP": {"type": "object", "title": "PublicSNP", "properties": {"alternative_alleles": {"type": "array", "items": {"type": "string", "minLength": 1, "description": "A haploid allele"}}, "chromosome": {"type": "string", "minLength": 1}, "chromosome_accession": {"type": "string", "minLength": 1}, "dbsnp_version": {"type": "integer"}, "location": {"type": "integer", "minimum": 0}, "reference_allele": {"type": "string", "minLength": 1}, "reference_genome": {"type": "string", "minLength": 1}, "snp_id": {"type": "string", "minLength": 1}}, "required": ["chromosome", "chromosome_accession", "dbsnp_version", "location", "reference_allele", "reference_genome", "snp_id"]}, "ReferenceChromosomeOverview": {"type": "object", "title": "ReferenceChromosomeOverview", "properties": {"reference_accession": {"type": "string", "minLength": 1}}, "required": ["reference_accession"]}, "ReferenceGenomeOverview": {"type": "object", "title": "ReferenceGenomeOverview", "properties": {"reference_accession": {"type": "string", "minLength": 1}}, "required": ["reference_accession"]}, "ReferenceSequence": {"type": "object", "title": "ReferenceSequence", "properties": {"sequence": {"type": "string", "minLength": 1}}, "required": ["sequence"]}, "ReportCredentials": {"type": "object", "title": "ReportCredentials", "properties": {"authorization_uuid": {"type": "string"}, "client_password": {"type": "string"}, "client_username": {"type": "string"}, "create_timestamp": {"type": "integer"}, "report_credentials_uuid": {"type": "string"}, "report_url": {"type": "string"}}, "required": ["authorization_uuid", "create_timestamp", "report_credentials_uuid"]}, "ReportFile": {"type": "object", "title": "ReportFile", "properties": {"authorization_uuid": {"type": "string"}, "create_timestamp": {"type": "integer"}, "file_location": {"$ref": "#/components/schemas/FileLocation"}, "report_file_uuid": {"type": "string"}}, "required": ["authorization_uuid", "create_timestamp", "file_location", "report_file_uuid"]}, "SnpsMinRequired": {"type": "object", "title": "SnpsMinRequired", "properties": {"min_pct": {"type": "integer", "minimum": 0}, "snps": {"type": "array", "items": {"type": "string"}}}, "required": ["min_pct", "snps"]}}, "securitySchemes": {"Bearer": {"type": "apiKey", "name": "Authorization", "in": "header", "description": "The token resulted after authenticating to /auth/jwt. MUST be of the format(excluding quotes) 'Bearer paste_token_here'"}}}}; window.ui = SwaggerUIBundle({ spec: spec, dom_id: '#swagger-ui', deepLinking: true, presets: [ SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset ], plugins: [ SwaggerUIBundle.plugins.DownloadUrl ], layout: "StandaloneLayout" }); };