diff --git a/.idea/runConfigurations/LapisMain.run.xml b/.idea/runConfigurations/LapisMain.run.xml
deleted file mode 100644
index 0f608eba2..000000000
--- a/.idea/runConfigurations/LapisMain.run.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/runConfigurations/PutOpenDataFromYNextstrainGenbankIntoDatabase.run.xml b/.idea/runConfigurations/PutOpenDataFromYNextstrainGenbankIntoDatabase.run.xml
deleted file mode 100644
index e52c9e262..000000000
--- a/.idea/runConfigurations/PutOpenDataFromYNextstrainGenbankIntoDatabase.run.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/runConfigurations/UpdateData.run.xml b/.idea/runConfigurations/UpdateData.run.xml
deleted file mode 100644
index 29d996122..000000000
--- a/.idea/runConfigurations/UpdateData.run.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/database/init.sql b/database/init.sql
deleted file mode 100644
index a14391872..000000000
--- a/database/init.sql
+++ /dev/null
@@ -1,368 +0,0 @@
-create schema open;
-create schema gisaid;
-
-grant usage on schema open, gisaid to lapis_proc;
-
--- Basic information
-
-create table pangolin_lineage_alias
-(
- alias text primary key,
- full_name text not null unique
-);
-
-
-create table data_version
-(
- dataset text primary key,
- timestamp bigint not null
-);
-
-
-create table access_key
-(
- key text primary key,
- level text not null,
- comment text
-);
-
-create table nextclade_dataset_version
-(
- id serial primary key,
- inserted_at timestamp not null,
- tag text not null
-);
-
-
--- Source: Nextstrain/GenBank
-
-create table y_nextstrain_genbank
-(
- metadata_hash text,
- seq_original_hash text,
- seq_aligned_hash text,
- genbank_accession text,
- sra_accession text,
- gisaid_epi_isl text,
- strain text primary key,
- date date,
- year integer,
- month integer,
- day integer,
- date_original text,
- date_submitted date,
- region text,
- country text,
- division text,
- location text,
- region_exposure text,
- country_exposure text,
- division_exposure text,
- host text,
- age int,
- sex text,
- sampling_strategy text,
- pango_lineage text,
- nextclade_pango_lineage text,
- nextstrain_clade text,
- gisaid_clade text,
- originating_lab text,
- submitting_lab text,
- authors text,
- seq_original_compressed bytea,
- seq_aligned_compressed bytea,
- aa_seqs_compressed bytea,
- aa_mutations text,
- aa_insertions text,
- aa_unknowns text,
- nuc_substitutions text,
- nuc_deletions text,
- nuc_insertions text,
- nuc_unknowns text,
- nextclade_total_substitutions int,
- nextclade_total_deletions int,
- nextclade_total_insertions int,
- nextclade_total_frame_shifts int,
- nextclade_total_aminoacid_substitutions int,
- nextclade_total_aminoacid_deletions int,
- nextclade_total_aminoacid_insertions int,
- nextclade_total_missing int,
- nextclade_total_non_acgtns int,
- nextclade_total_pcr_primer_changes int,
- nextclade_pcr_primer_changes text,
- nextclade_alignment_score float,
- nextclade_alignment_start int,
- nextclade_alignment_end int,
- nextclade_qc_overall_score float,
- nextclade_qc_overall_status text,
- nextclade_qc_missing_data_missing_data_threshold float,
- nextclade_qc_missing_data_score float,
- nextclade_qc_missing_data_status text,
- nextclade_qc_missing_data_total_missing int,
- nextclade_qc_mixed_sites_mixed_sites_threshold float,
- nextclade_qc_mixed_sites_score float,
- nextclade_qc_mixed_sites_status text,
- nextclade_qc_mixed_sites_total_mixed_sites int,
- nextclade_qc_private_mutations_cutoff float,
- nextclade_qc_private_mutations_excess float,
- nextclade_qc_private_mutations_score float,
- nextclade_qc_private_mutations_status text,
- nextclade_qc_private_mutations_total int,
- nextclade_qc_snp_clusters_clustered_snps text,
- nextclade_qc_snp_clusters_score float,
- nextclade_qc_snp_clusters_status text,
- nextclade_qc_snp_clusters_total_snps int,
- nextclade_qc_frame_shifts_frame_shifts text,
- nextclade_qc_frame_shifts_total_frame_shifts int,
- nextclade_qc_frame_shifts_frame_shifts_ignored text,
- nextclade_qc_frame_shifts_total_frame_shifts_ignored int,
- nextclade_qc_frame_shifts_score float,
- nextclade_qc_frame_shifts_status text,
- nextclade_qc_stop_codons_stop_codons text,
- nextclade_qc_stop_codons_total_stop_codons int,
- nextclade_qc_stop_codons_score float,
- nextclade_qc_stop_codons_status text,
- nextclade_coverage float,
- nextclade_errors text,
- database text
-);
-
-
--- Source: GISAID
-
-create table y_gisaid
-(
- updated_at timestamp not null,
- metadata_hash text,
- seq_original_hash text,
- gisaid_epi_isl text primary key,
- strain text,
- date date,
- year integer,
- month integer,
- day integer,
- date_original text,
- date_submitted date,
- region text,
- country text,
- division text,
- location text,
- region_exposure text,
- country_exposure text,
- division_exposure text,
- host text,
- age int,
- sex text,
- sampling_strategy text,
- pango_lineage text,
- gisaid_clade text,
- originating_lab text,
- submitting_lab text,
- authors text,
- seq_original_compressed bytea,
- seq_aligned_compressed bytea,
- aa_seqs_compressed bytea,
- aa_mutations text,
- aa_insertions text,
- aa_unknowns text,
- nuc_substitutions text,
- nuc_deletions text,
- nuc_insertions text,
- nuc_unknowns text,
-
- -- Nextclade stuff
- nextclade_clade text,
- nextclade_clade_long text,
- nextclade_pango_lineage text,
- nextclade_total_substitutions int,
- nextclade_total_deletions int,
- nextclade_total_insertions int,
- nextclade_total_frame_shifts int,
- nextclade_total_aminoacid_substitutions int,
- nextclade_total_aminoacid_deletions int,
- nextclade_total_aminoacid_insertions int,
- nextclade_total_missing int,
- nextclade_total_non_acgtns int,
- nextclade_total_pcr_primer_changes int,
- nextclade_pcr_primer_changes text,
- nextclade_alignment_score float,
- nextclade_alignment_start int,
- nextclade_alignment_end int,
- nextclade_qc_overall_score float,
- nextclade_qc_overall_status text,
- nextclade_qc_missing_data_missing_data_threshold float,
- nextclade_qc_missing_data_score float,
- nextclade_qc_missing_data_status text,
- nextclade_qc_missing_data_total_missing int,
- nextclade_qc_mixed_sites_mixed_sites_threshold float,
- nextclade_qc_mixed_sites_score float,
- nextclade_qc_mixed_sites_status text,
- nextclade_qc_mixed_sites_total_mixed_sites int,
- nextclade_qc_private_mutations_cutoff float,
- nextclade_qc_private_mutations_excess float,
- nextclade_qc_private_mutations_score float,
- nextclade_qc_private_mutations_status text,
- nextclade_qc_private_mutations_total int,
- nextclade_qc_snp_clusters_clustered_snps text,
- nextclade_qc_snp_clusters_score float,
- nextclade_qc_snp_clusters_status text,
- nextclade_qc_snp_clusters_total_snps int,
- nextclade_qc_frame_shifts_frame_shifts text,
- nextclade_qc_frame_shifts_total_frame_shifts int,
- nextclade_qc_frame_shifts_frame_shifts_ignored text,
- nextclade_qc_frame_shifts_total_frame_shifts_ignored int,
- nextclade_qc_frame_shifts_score float,
- nextclade_qc_frame_shifts_status text,
- nextclade_qc_stop_codons_stop_codons text,
- nextclade_qc_stop_codons_total_stop_codons int,
- nextclade_qc_stop_codons_score float,
- nextclade_qc_stop_codons_status text,
- nextclade_coverage float,
- nextclade_errors text
-);
-
-
--- Source: S3C (additional metadata)
-
-create table y_s3c (
- gisaid_epi_isl text unique,
- sra_accession text unique,
- age integer,
- sex text,
- hospitalized boolean,
- died boolean,
- fully_vaccinated boolean
-);
-
-
--- Source: cov-lineages GitHub pangolin-assignments
--- https://github.com/cov-lineages/pangolin-assignment
-
-create table y_pangolin_assignment (
- gisaid_epi_isl text primary key,
- pango_lineage text
-);
-
--- Transformed and merged
-
-create table y_main_metadata
-(
- id integer primary key,
- source text not null,
- source_primary_key text not null,
- genbank_accession text,
- sra_accession text,
- gisaid_epi_isl text,
- strain text,
- date date,
- year integer,
- month integer,
- day integer,
- date_submitted date,
- region text,
- country text,
- division text,
- location text,
- region_exposure text,
- country_exposure text,
- division_exposure text,
- host text,
- age int,
- sex text,
- hospitalized boolean,
- died boolean,
- fully_vaccinated boolean,
- sampling_strategy text,
- pango_lineage text,
- nextclade_pango_lineage text,
- nextstrain_clade text,
- gisaid_clade text,
- originating_lab text,
- submitting_lab text,
- authors text,
- nextclade_qc_overall_score float,
- nextclade_qc_missing_data_score float,
- nextclade_qc_mixed_sites_score float,
- nextclade_qc_private_mutations_score float,
- nextclade_qc_snp_clusters_score float,
- nextclade_qc_frame_shifts_score float,
- nextclade_qc_stop_codons_score float,
- nextclade_total_substitutions int,
- nextclade_total_deletions int,
- nextclade_total_insertions int,
- nextclade_total_frame_shifts int,
- nextclade_total_aminoacid_substitutions int,
- nextclade_total_aminoacid_deletions int,
- nextclade_total_aminoacid_insertions int,
- nextclade_total_missing int,
- nextclade_total_non_acgtns int,
- nextclade_total_pcr_primer_changes int,
- nextclade_pcr_primer_changes text,
- nextclade_alignment_score float,
- nextclade_alignment_start int,
- nextclade_alignment_end int,
- nextclade_coverage float,
- database text
-);
-
-create index on y_main_metadata (genbank_accession);
-create index on y_main_metadata (sra_accession);
-create index on y_main_metadata (gisaid_epi_isl);
-create index on y_main_metadata (strain);
-create index on y_main_metadata (date);
-create index on y_main_metadata (date_submitted);
-create index on y_main_metadata (region);
-create index on y_main_metadata (country);
-create index on y_main_metadata (division);
-create index on y_main_metadata (region_exposure);
-create index on y_main_metadata (country_exposure);
-create index on y_main_metadata (division_exposure);
-create index on y_main_metadata (host);
-create index on y_main_metadata (age);
-create index on y_main_metadata (sex);
-create index on y_main_metadata (hospitalized);
-create index on y_main_metadata (died);
-create index on y_main_metadata (fully_vaccinated);
-create index on y_main_metadata (sampling_strategy);
-create index on y_main_metadata (pango_lineage);
-create index on y_main_metadata (nextclade_pango_lineage);
-create index on y_main_metadata (nextstrain_clade);
-create index on y_main_metadata (gisaid_clade);
-create index on y_main_metadata (originating_lab);
-create index on y_main_metadata (submitting_lab);
-
-create table y_main_sequence
-(
- id integer primary key,
- seq_original_compressed bytea,
- seq_aligned_compressed bytea,
- aa_mutations text,
- aa_insertions text,
- aa_unknowns text,
- nuc_substitutions text,
- nuc_deletions text,
- nuc_insertions text,
- nuc_unknowns text
-);
-
-create table y_main_sequence_columnar
-(
- position integer primary key,
- data_compressed bytea not null
-);
-
-create table y_main_aa_sequence
-(
- id integer not null,
- gene text not null,
- aa_seq_compressed bytea not null,
- primary key (id, gene)
-);
-
-create table y_main_aa_sequence_columnar
-(
- gene text,
- position integer,
- data_compressed bytea not null,
- primary key (gene, position)
-);
diff --git a/database/transform_and_merge.sql b/database/transform_and_merge.sql
deleted file mode 100644
index a3b801ff6..000000000
--- a/database/transform_and_merge.sql
+++ /dev/null
@@ -1,75 +0,0 @@
--- Create staging tables
--- drop table
--- y_main_metadata_staging, y_main_sequence_staging,
--- y_main_sequence_columnar_staging, y_main_aa_sequence_staging,
--- y_main_aa_sequence_columnar_staging;
-create table y_main_metadata_staging (like y_main_metadata including all);
-create table y_main_sequence_staging (like y_main_sequence including all);
-create table y_main_sequence_columnar_staging (like y_main_sequence_columnar including all);
-create table y_main_aa_sequence_staging (like y_main_aa_sequence including all);
-create table y_main_aa_sequence_columnar_staging (like y_main_aa_sequence_columnar including all);
-
--- Switch out the tables
-create or replace function y_switch_in_staging_tables() returns void security definer as $$
-begin
- alter table y_main_metadata rename to y_main_metadata_old;
- alter table y_main_sequence rename to y_main_sequence_old;
- alter table y_main_sequence_columnar rename to y_main_sequence_columnar_old;
- alter table y_main_aa_sequence rename to y_main_aa_sequence_old;
- alter table y_main_aa_sequence_columnar rename to y_main_aa_sequence_columnar_old;
-
- alter table y_main_metadata_staging rename to y_main_metadata;
- alter table y_main_sequence_staging rename to y_main_sequence;
- alter table y_main_sequence_columnar_staging rename to y_main_sequence_columnar;
- alter table y_main_aa_sequence_staging rename to y_main_aa_sequence;
- alter table y_main_aa_sequence_columnar_staging rename to y_main_aa_sequence_columnar;
-
- truncate y_main_metadata_old, y_main_sequence_old,
- y_main_sequence_columnar_old, y_main_aa_sequence_old,
- y_main_aa_sequence_columnar_old;
-
- alter table y_main_metadata_old rename to y_main_metadata_staging;
- alter table y_main_sequence_old rename to y_main_sequence_staging;
- alter table y_main_sequence_columnar_old rename to y_main_sequence_columnar_staging;
- alter table y_main_aa_sequence_old rename to y_main_aa_sequence_staging;
- alter table y_main_aa_sequence_columnar_old rename to y_main_aa_sequence_columnar_staging;
-end;
-$$ language plpgsql;
-revoke all on function y_switch_in_staging_tables() from public;
-grant execute on function y_switch_in_staging_tables() to lapis_proc;
-
-create or replace function y_switch_in_staging_tables_without_truncate() returns void security definer as $$
-begin
- alter table y_main_metadata rename to y_main_metadata_old;
- alter table y_main_sequence rename to y_main_sequence_old;
- alter table y_main_sequence_columnar rename to y_main_sequence_columnar_old;
- alter table y_main_aa_sequence rename to y_main_aa_sequence_old;
- alter table y_main_aa_sequence_columnar rename to y_main_aa_sequence_columnar_old;
-
- alter table y_main_metadata_staging rename to y_main_metadata;
- alter table y_main_sequence_staging rename to y_main_sequence;
- alter table y_main_sequence_columnar_staging rename to y_main_sequence_columnar;
- alter table y_main_aa_sequence_staging rename to y_main_aa_sequence;
- alter table y_main_aa_sequence_columnar_staging rename to y_main_aa_sequence_columnar;
-
- alter table y_main_metadata_old rename to y_main_metadata_staging;
- alter table y_main_sequence_old rename to y_main_sequence_staging;
- alter table y_main_sequence_columnar_old rename to y_main_sequence_columnar_staging;
- alter table y_main_aa_sequence_old rename to y_main_aa_sequence_staging;
- alter table y_main_aa_sequence_columnar_old rename to y_main_aa_sequence_columnar_staging;
-end;
-$$ language plpgsql;
-revoke all on function y_switch_in_staging_tables_without_truncate() from public;
-grant execute on function y_switch_in_staging_tables_without_truncate() to lapis_proc;
-
-vacuum analyse y_main_metadata, y_main_sequence, y_main_sequence_columnar,
- y_main_aa_sequence, y_main_aa_sequence_columnar;
-vacuum full y_main_metadata_staging, y_main_sequence_staging,
- y_main_sequence_columnar_staging, y_main_aa_sequence_staging,
- y_main_aa_sequence_columnar_staging;
-
--- select y_switch_in_staging_tables();
--- truncate
--- y_main_metadata_staging, y_main_sequence_staging,
--- y_main_sequence_columnar_staging, y_main_aa_sequence_staging,
--- y_main_aa_sequence_columnar_staging;
diff --git a/database/users.sql b/database/users.sql
deleted file mode 100644
index f86fa28bb..000000000
--- a/database/users.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-create database lapis;
-create user lapis_api password '';
-create user lapis_proc password '';
-
-grant pg_read_all_data to lapis_api;
-grant pg_read_all_data, pg_write_all_data to lapis_proc;
diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml
deleted file mode 100644
index 780916393..000000000
--- a/docker-compose/docker-compose.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-version: '3'
-services:
-
- lapis_server:
- image: ghcr.io/cevo-public/lapis-server:public
- container_name: lapis_server
- restart: unless-stopped
- depends_on:
- - lapis_redis
- ports:
- - 2345:2345
- volumes:
- - /lapis-config.yml:/app/lapis-config.yml
- lapis_docs:
- image: ghcr.io/cevo-public/lapis-docs:public
- container_name: lapis_docs
- restart: unless-stopped
- ports:
- - 4567:4567
- lapis_redis:
- image: redis:6
- container_name: lapis_redis
- restart: unless-stopped
- ports:
- - 127.0.0.1:6789:6379
- volumes:
- - /redis.conf:/usr/local/etc/redis/redis.conf
- - /redis-data:/data
- command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
diff --git a/docs/.gitignore b/docs/.gitignore
deleted file mode 100644
index dc84959d1..000000000
--- a/docs/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-build/
-
diff --git a/docs/Makefile b/docs/Makefile
deleted file mode 100644
index d0c3cbf10..000000000
--- a/docs/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Minimal makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line, and also
-# from the environment for the first two.
-SPHINXOPTS ?=
-SPHINXBUILD ?= sphinx-build
-SOURCEDIR = source
-BUILDDIR = build
-
-# Put it first so that "make" without argument is like "make help".
-help:
- @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-
-.PHONY: help Makefile
-
-# Catch-all target: route all unknown targets to Sphinx using the new
-# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
-%: Makefile
- @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/docs/developer/LAPIS.puml b/docs/developer/LAPIS.puml
deleted file mode 100644
index 5c29c3fcd..000000000
--- a/docs/developer/LAPIS.puml
+++ /dev/null
@@ -1,34 +0,0 @@
-@startuml
-'https://plantuml.com/component-diagram
-
-package "External Databases" {
- database "GISAID/\nOpen" as externalDB
- database "OWID/\nPangoDesignation" as serverDB
-}
-
-package LAPIS {
- [In Memory DB]
- [API]
- [Update Pipeline]
-}
-
-package "Cov-Spectrum-Server" {
- [Server API]
- database "Server Postgres DB"
-}
-
-database "Lapis Postgres DB"
-
-[Server API] -down-> [Website] : additional data
-"Server Postgres DB" -left-> [Server API]
-serverDB -> "Server Postgres DB" : scheduled job
-
-API -down-> [Website] : sequence data
-API <- [In Memory DB]
-"Lapis Postgres DB" -down-> API
-
-externalDB -down-> [Update Pipeline] : preprocessing
-[Update Pipeline] -up-> "Lapis Postgres DB" : scheduled job
-"Lapis Postgres DB" -right-> [In Memory DB] : "at program start /\n new data available"
-
-@enduml
\ No newline at end of file
diff --git a/docs/developer/architectural_overview.md b/docs/developer/architectural_overview.md
deleted file mode 100644
index 6e454fcbb..000000000
--- a/docs/developer/architectural_overview.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Architectural Overview
-
-
\ No newline at end of file
diff --git a/docs/developer/getting_started.md b/docs/developer/getting_started.md
deleted file mode 100644
index a4c2a4f27..000000000
--- a/docs/developer/getting_started.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# Getting started
-
-## Build
-
-The code for the software is located in the `server/` directory. It is a Java Gradle project. Java IDEs are usually capable to read the gradle configs and allow starting the program directly from the UI. To build the project in the terminal, run:
-
-```
-cd server/
-./gradlew clean bootJar -x test
-```
-
-The .jar is stored in `build/libs`.
-
-To run the unit tests, call:
-
-```
-./gradlew test
-```
-
-
-## API
-
-This section describes how to start the API on a developer's local machine.
-
-After building it as described above, the program can be started with `server/startServer.sh`.
-The script assumes that the .jar file is present and that `server/config.yml.example` is copied to `server/config.yml`.
diff --git a/docs/developer/logging.md b/docs/developer/logging.md
deleted file mode 100644
index b64a88022..000000000
--- a/docs/developer/logging.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Logging
-
-Currently, we are using slf4j for logging, which comes with the package lombok, and logback as an implementation, which comes with spring boot.
-
-The configuration can be found in 'resources/logback-spring.xml'. If you change the config, you must build lapis again.
\ No newline at end of file
diff --git a/docs/make.bat b/docs/make.bat
deleted file mode 100644
index 747ffb7b3..000000000
--- a/docs/make.bat
+++ /dev/null
@@ -1,35 +0,0 @@
-@ECHO OFF
-
-pushd %~dp0
-
-REM Command file for Sphinx documentation
-
-if "%SPHINXBUILD%" == "" (
- set SPHINXBUILD=sphinx-build
-)
-set SOURCEDIR=source
-set BUILDDIR=build
-
-%SPHINXBUILD% >NUL 2>NUL
-if errorlevel 9009 (
- echo.
- echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
- echo.installed, then set the SPHINXBUILD environment variable to point
- echo.to the full path of the 'sphinx-build' executable. Alternatively you
- echo.may add the Sphinx directory to PATH.
- echo.
- echo.If you don't have Sphinx installed, grab it from
- echo.https://www.sphinx-doc.org/
- exit /b 1
-)
-
-if "%1" == "" goto help
-
-%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
-goto end
-
-:help
-%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
-
-:end
-popd
diff --git a/docs/openapi_spec/Dockerfile b/docs/openapi_spec/Dockerfile
deleted file mode 100644
index ce4c789be..000000000
--- a/docs/openapi_spec/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-## Download Swagger ##
-
-FROM debian:bullseye AS builder
-WORKDIR /app/
-
-RUN apt-get update
-RUN apt-get install -y curl
-RUN curl -L -o swagger-ui.tar.gz https://github.com/swagger-api/swagger-ui/archive/refs/tags/v4.4.0.tar.gz
-RUN tar -xf swagger-ui.tar.gz
-
-## Run server ##
-
-FROM nginx:stable AS server
-WORKDIR /app/
-
-COPY --from=builder /app/swagger-ui-4.4.0/dist/ /app/
-COPY nginx-swagger.conf /etc/nginx/conf.d/default.conf
-COPY v1.yml v1.yml
-RUN sed -i 's/https:\/\/petstore.swagger.io\/v2\/swagger.json/v1.yml/g' index.html
-
-EXPOSE 4568
diff --git a/docs/openapi_spec/nginx-swagger.conf b/docs/openapi_spec/nginx-swagger.conf
deleted file mode 100644
index 4f4fd3215..000000000
--- a/docs/openapi_spec/nginx-swagger.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-server {
- listen 4568;
-
- index index.html;
- root /app;
-
- location / {
- }
-}
diff --git a/docs/openapi_spec/v1.yml b/docs/openapi_spec/v1.yml
deleted file mode 100644
index 5d1cc8095..000000000
--- a/docs/openapi_spec/v1.yml
+++ /dev/null
@@ -1,782 +0,0 @@
-openapi: 3.0.1
-info:
- title: LAPIS
- description: The Lightweight API for Sequences (LAPIS) is an API specialized for querying genome sequence data. It is currently only available for SARS-CoV-2.
- contact:
- name: GitHub repository
- url: https://github.com/cevo-public/LAPIS
- version: v1
-externalDocs:
- description: Find out more about LAPIS
- url: http://lapis.cov-spectrum.org
-servers:
- - url: https://{link}
- variables:
- link:
- default: lapis.cov-spectrum.org/open/v1
-paths:
- /sample/info:
- get:
- tags:
- - sample
- summary: get information of the API
- responses:
- 200:
- description: information
- content:
- application/json:
- schema:
- allOf:
- - $ref: '#/components/schemas/InfoSchema'
- /sample/aggregated:
- get:
- tags:
- - sample
- summary: get summary data aggregated across samples
- parameters:
- - $ref: '#/components/parameters/fieldsParam'
- - $ref: '#/components/parameters/dateFromParam'
- - $ref: '#/components/parameters/dateToParam'
- - $ref: '#/components/parameters/dateSubmittedFromParam'
- - $ref: '#/components/parameters/dateSubmittedToParam'
- - $ref: '#/components/parameters/countryParam'
- - $ref: '#/components/parameters/divisionParam'
- - $ref: '#/components/parameters/locationParam'
- - $ref: '#/components/parameters/regionExposureParam'
- - $ref: '#/components/parameters/countryExposureParam'
- - $ref: '#/components/parameters/divisionExposureParam'
- - $ref: '#/components/parameters/ageFromParam'
- - $ref: '#/components/parameters/ageToParam'
- - $ref: '#/components/parameters/sexParam'
- - $ref: '#/components/parameters/hostParam'
- - $ref: '#/components/parameters/samplingStrategyParam'
- - $ref: '#/components/parameters/pangoLineageParam'
- - $ref: '#/components/parameters/nextstrainCladeParam'
- - $ref: '#/components/parameters/gisaidCladeParam'
- - $ref: '#/components/parameters/submittingLabParam'
- - $ref: '#/components/parameters/originatingLabParam'
- - $ref: '#/components/parameters/aaMutationsParam'
- - $ref: '#/components/parameters/nucMutationsParam'
- - $ref: '#/components/parameters/variantQueryParam'
- - $ref: '#/components/parameters/dataVersionParam'
- - $ref: '#/components/parameters/downloadAsFileParam'
- - $ref: '#/components/parameters/dataFormatParam'
- responses:
- 200:
- description: The available fields depend on the value passed in the `field` request parameter. Only the field `count` is always present.
- content:
- application/json:
- schema:
- allOf:
- - $ref: '#/components/schemas/ResponseWrapperSchema'
- - properties:
- data:
- type: array
- items:
- type: object
- allOf:
- - $ref: '#/components/schemas/BasicFieldsSchema'
- - properties:
- count:
- type: number
- /sample/aa-mutations:
- get:
- tags:
- - sample
- summary: get the amino acid mutations
- parameters:
- - $ref: '#/components/parameters/dateFromParam'
- - $ref: '#/components/parameters/dateToParam'
- - $ref: '#/components/parameters/dateSubmittedFromParam'
- - $ref: '#/components/parameters/dateSubmittedToParam'
- - $ref: '#/components/parameters/countryParam'
- - $ref: '#/components/parameters/divisionParam'
- - $ref: '#/components/parameters/locationParam'
- - $ref: '#/components/parameters/regionExposureParam'
- - $ref: '#/components/parameters/countryExposureParam'
- - $ref: '#/components/parameters/divisionExposureParam'
- - $ref: '#/components/parameters/ageFromParam'
- - $ref: '#/components/parameters/ageToParam'
- - $ref: '#/components/parameters/sexParam'
- - $ref: '#/components/parameters/hostParam'
- - $ref: '#/components/parameters/samplingStrategyParam'
- - $ref: '#/components/parameters/pangoLineageParam'
- - $ref: '#/components/parameters/nextstrainCladeParam'
- - $ref: '#/components/parameters/gisaidCladeParam'
- - $ref: '#/components/parameters/submittingLabParam'
- - $ref: '#/components/parameters/originatingLabParam'
- - $ref: '#/components/parameters/aaMutationsParam'
- - $ref: '#/components/parameters/nucMutationsParam'
- - $ref: '#/components/parameters/variantQueryParam'
- - $ref: '#/components/parameters/dataVersionParam'
- - $ref: '#/components/parameters/downloadAsFileParam'
- - $ref: '#/components/parameters/dataFormatParam'
- responses:
- 200:
- description: The amino acid mutations
- content:
- application/json:
- schema:
- allOf:
- - $ref: '#/components/schemas/ResponseWrapperSchema'
- - properties:
- data:
- type: array
- items:
- type: object
- allOf:
- - $ref: '#/components/schemas/MutationResponseSchema'
- /sample/nuc-mutations:
- get:
- tags:
- - sample
- summary: get the nucleotide mutations
- parameters:
- - $ref: '#/components/parameters/dateFromParam'
- - $ref: '#/components/parameters/dateToParam'
- - $ref: '#/components/parameters/dateSubmittedFromParam'
- - $ref: '#/components/parameters/dateSubmittedToParam'
- - $ref: '#/components/parameters/countryParam'
- - $ref: '#/components/parameters/divisionParam'
- - $ref: '#/components/parameters/locationParam'
- - $ref: '#/components/parameters/regionExposureParam'
- - $ref: '#/components/parameters/countryExposureParam'
- - $ref: '#/components/parameters/divisionExposureParam'
- - $ref: '#/components/parameters/ageFromParam'
- - $ref: '#/components/parameters/ageToParam'
- - $ref: '#/components/parameters/sexParam'
- - $ref: '#/components/parameters/hostParam'
- - $ref: '#/components/parameters/samplingStrategyParam'
- - $ref: '#/components/parameters/pangoLineageParam'
- - $ref: '#/components/parameters/nextstrainCladeParam'
- - $ref: '#/components/parameters/gisaidCladeParam'
- - $ref: '#/components/parameters/submittingLabParam'
- - $ref: '#/components/parameters/originatingLabParam'
- - $ref: '#/components/parameters/aaMutationsParam'
- - $ref: '#/components/parameters/nucMutationsParam'
- - $ref: '#/components/parameters/variantQueryParam'
- - $ref: '#/components/parameters/dataVersionParam'
- - $ref: '#/components/parameters/downloadAsFileParam'
- - $ref: '#/components/parameters/dataFormatParam'
- responses:
- 200:
- description: The nucleotide mutations
- content:
- application/json:
- schema:
- allOf:
- - $ref: '#/components/schemas/ResponseWrapperSchema'
- - properties:
- data:
- type: array
- items:
- type: object
- allOf:
- - $ref: '#/components/schemas/MutationResponseSchema'
- /sample/fasta:
- get:
- tags:
- - sample
- summary: get original (unaligned) sequences
- parameters:
- - $ref: '#/components/parameters/dateFromParam'
- - $ref: '#/components/parameters/dateToParam'
- - $ref: '#/components/parameters/dateSubmittedFromParam'
- - $ref: '#/components/parameters/dateSubmittedToParam'
- - $ref: '#/components/parameters/countryParam'
- - $ref: '#/components/parameters/divisionParam'
- - $ref: '#/components/parameters/locationParam'
- - $ref: '#/components/parameters/regionExposureParam'
- - $ref: '#/components/parameters/countryExposureParam'
- - $ref: '#/components/parameters/divisionExposureParam'
- - $ref: '#/components/parameters/ageFromParam'
- - $ref: '#/components/parameters/ageToParam'
- - $ref: '#/components/parameters/sexParam'
- - $ref: '#/components/parameters/hostParam'
- - $ref: '#/components/parameters/samplingStrategyParam'
- - $ref: '#/components/parameters/pangoLineageParam'
- - $ref: '#/components/parameters/nextstrainCladeParam'
- - $ref: '#/components/parameters/gisaidCladeParam'
- - $ref: '#/components/parameters/submittingLabParam'
- - $ref: '#/components/parameters/originatingLabParam'
- - $ref: '#/components/parameters/aaMutationsParam'
- - $ref: '#/components/parameters/nucMutationsParam'
- - $ref: '#/components/parameters/variantQueryParam'
- - $ref: '#/components/parameters/dataVersionParam'
- - $ref: '#/components/parameters/downloadAsFileParam'
- - $ref: '#/components/parameters/genbankAccessionParam'
- - $ref: '#/components/parameters/sraAccessionnParam'
- - $ref: '#/components/parameters/gisaidEpiIslParam'
- - $ref: '#/components/parameters/strainParam'
- responses:
- 200:
- description: Sequences as fasta
- content:
- application/x-fasta:
- schema:
- type: string
- /sample/fasta-aligned:
- get:
- tags:
- - sample
- summary: get aligned sequences
- parameters:
- - $ref: '#/components/parameters/dateFromParam'
- - $ref: '#/components/parameters/dateToParam'
- - $ref: '#/components/parameters/dateSubmittedFromParam'
- - $ref: '#/components/parameters/dateSubmittedToParam'
- - $ref: '#/components/parameters/countryParam'
- - $ref: '#/components/parameters/divisionParam'
- - $ref: '#/components/parameters/locationParam'
- - $ref: '#/components/parameters/regionExposureParam'
- - $ref: '#/components/parameters/countryExposureParam'
- - $ref: '#/components/parameters/divisionExposureParam'
- - $ref: '#/components/parameters/ageFromParam'
- - $ref: '#/components/parameters/ageToParam'
- - $ref: '#/components/parameters/sexParam'
- - $ref: '#/components/parameters/hostParam'
- - $ref: '#/components/parameters/samplingStrategyParam'
- - $ref: '#/components/parameters/pangoLineageParam'
- - $ref: '#/components/parameters/nextstrainCladeParam'
- - $ref: '#/components/parameters/gisaidCladeParam'
- - $ref: '#/components/parameters/submittingLabParam'
- - $ref: '#/components/parameters/originatingLabParam'
- - $ref: '#/components/parameters/aaMutationsParam'
- - $ref: '#/components/parameters/nucMutationsParam'
- - $ref: '#/components/parameters/variantQueryParam'
- - $ref: '#/components/parameters/dataVersionParam'
- - $ref: '#/components/parameters/downloadAsFileParam'
- - $ref: '#/components/parameters/genbankAccessionParam'
- - $ref: '#/components/parameters/sraAccessionnParam'
- - $ref: '#/components/parameters/gisaidEpiIslParam'
- - $ref: '#/components/parameters/strainParam'
- responses:
- 200:
- description: Sequences as fasta
- content:
- application/x-fasta:
- schema:
- type: string
- /sample/details:
- get:
- tags:
- - sample
- summary: get per-sample metadata
- parameters:
- - $ref: '#/components/parameters/dateFromParam'
- - $ref: '#/components/parameters/dateToParam'
- - $ref: '#/components/parameters/dateSubmittedFromParam'
- - $ref: '#/components/parameters/dateSubmittedToParam'
- - $ref: '#/components/parameters/countryParam'
- - $ref: '#/components/parameters/divisionParam'
- - $ref: '#/components/parameters/locationParam'
- - $ref: '#/components/parameters/regionExposureParam'
- - $ref: '#/components/parameters/countryExposureParam'
- - $ref: '#/components/parameters/divisionExposureParam'
- - $ref: '#/components/parameters/ageFromParam'
- - $ref: '#/components/parameters/ageToParam'
- - $ref: '#/components/parameters/sexParam'
- - $ref: '#/components/parameters/hostParam'
- - $ref: '#/components/parameters/samplingStrategyParam'
- - $ref: '#/components/parameters/pangoLineageParam'
- - $ref: '#/components/parameters/nextstrainCladeParam'
- - $ref: '#/components/parameters/gisaidCladeParam'
- - $ref: '#/components/parameters/submittingLabParam'
- - $ref: '#/components/parameters/originatingLabParam'
- - $ref: '#/components/parameters/aaMutationsParam'
- - $ref: '#/components/parameters/nucMutationsParam'
- - $ref: '#/components/parameters/variantQueryParam'
- - $ref: '#/components/parameters/dataVersionParam'
- - $ref: '#/components/parameters/downloadAsFileParam'
- - $ref: '#/components/parameters/dataFormatParam'
- - $ref: '#/components/parameters/genbankAccessionParam'
- - $ref: '#/components/parameters/sraAccessionnParam'
- - $ref: '#/components/parameters/gisaidEpiIslParam'
- - $ref: '#/components/parameters/strainParam'
- responses:
- 200:
- description: All available metadata regarding the samples
- content:
- application/json:
- schema:
- allOf:
- - $ref: '#/components/schemas/ResponseWrapperSchema'
- - properties:
- data:
- type: array
- items:
- type: object
- allOf:
- - $ref: '#/components/schemas/SampleIdentitySchema'
- - $ref: '#/components/schemas/BasicFieldsSchema'
- /sample/contributors:
- get:
- tags:
- - sample
- summary: get the contributors information
- parameters:
- - $ref: '#/components/parameters/dateFromParam'
- - $ref: '#/components/parameters/dateToParam'
- - $ref: '#/components/parameters/dateSubmittedFromParam'
- - $ref: '#/components/parameters/dateSubmittedToParam'
- - $ref: '#/components/parameters/countryParam'
- - $ref: '#/components/parameters/divisionParam'
- - $ref: '#/components/parameters/locationParam'
- - $ref: '#/components/parameters/regionExposureParam'
- - $ref: '#/components/parameters/countryExposureParam'
- - $ref: '#/components/parameters/divisionExposureParam'
- - $ref: '#/components/parameters/ageFromParam'
- - $ref: '#/components/parameters/ageToParam'
- - $ref: '#/components/parameters/sexParam'
- - $ref: '#/components/parameters/hostParam'
- - $ref: '#/components/parameters/samplingStrategyParam'
- - $ref: '#/components/parameters/pangoLineageParam'
- - $ref: '#/components/parameters/nextstrainCladeParam'
- - $ref: '#/components/parameters/gisaidCladeParam'
- - $ref: '#/components/parameters/submittingLabParam'
- - $ref: '#/components/parameters/originatingLabParam'
- - $ref: '#/components/parameters/aaMutationsParam'
- - $ref: '#/components/parameters/nucMutationsParam'
- - $ref: '#/components/parameters/variantQueryParam'
- - $ref: '#/components/parameters/dataVersionParam'
- - $ref: '#/components/parameters/downloadAsFileParam'
- - $ref: '#/components/parameters/dataFormatParam'
- - $ref: '#/components/parameters/genbankAccessionParam'
- - $ref: '#/components/parameters/sraAccessionnParam'
- - $ref: '#/components/parameters/gisaidEpiIslParam'
- - $ref: '#/components/parameters/strainParam'
- responses:
- 200:
- description: Contributors
- content:
- application/json:
- schema:
- allOf:
- - $ref: '#/components/schemas/ResponseWrapperSchema'
- - properties:
- data:
- type: array
- items:
- type: object
- allOf:
- - $ref: '#/components/schemas/SampleIdentitySchema'
- - $ref: '#/components/schemas/ContributorsSchema'
- /sample/strain-names:
- get:
- tags:
- - sample
- summary: get the strain names
- parameters:
- - $ref: '#/components/parameters/dateFromParam'
- - $ref: '#/components/parameters/dateToParam'
- - $ref: '#/components/parameters/dateSubmittedFromParam'
- - $ref: '#/components/parameters/dateSubmittedToParam'
- - $ref: '#/components/parameters/countryParam'
- - $ref: '#/components/parameters/divisionParam'
- - $ref: '#/components/parameters/locationParam'
- - $ref: '#/components/parameters/regionExposureParam'
- - $ref: '#/components/parameters/countryExposureParam'
- - $ref: '#/components/parameters/divisionExposureParam'
- - $ref: '#/components/parameters/ageFromParam'
- - $ref: '#/components/parameters/ageToParam'
- - $ref: '#/components/parameters/sexParam'
- - $ref: '#/components/parameters/hostParam'
- - $ref: '#/components/parameters/samplingStrategyParam'
- - $ref: '#/components/parameters/pangoLineageParam'
- - $ref: '#/components/parameters/nextstrainCladeParam'
- - $ref: '#/components/parameters/gisaidCladeParam'
- - $ref: '#/components/parameters/submittingLabParam'
- - $ref: '#/components/parameters/originatingLabParam'
- - $ref: '#/components/parameters/aaMutationsParam'
- - $ref: '#/components/parameters/nucMutationsParam'
- - $ref: '#/components/parameters/variantQueryParam'
- - $ref: '#/components/parameters/dataVersionParam'
- - $ref: '#/components/parameters/downloadAsFileParam'
- - $ref: '#/components/parameters/dataFormatParam'
- - $ref: '#/components/parameters/genbankAccessionParam'
- - $ref: '#/components/parameters/sraAccessionnParam'
- - $ref: '#/components/parameters/gisaidEpiIslParam'
- - $ref: '#/components/parameters/strainParam'
- responses:
- 200:
- description: Strain names
- content:
- text/plain:
- schema:
- type: string
- /sample/gisaid-epi-isl:
- get:
- tags:
- - sample
- summary: get the GISAID EPI ISLs
- parameters:
- - $ref: '#/components/parameters/dateFromParam'
- - $ref: '#/components/parameters/dateToParam'
- - $ref: '#/components/parameters/dateSubmittedFromParam'
- - $ref: '#/components/parameters/dateSubmittedToParam'
- - $ref: '#/components/parameters/countryParam'
- - $ref: '#/components/parameters/divisionParam'
- - $ref: '#/components/parameters/locationParam'
- - $ref: '#/components/parameters/regionExposureParam'
- - $ref: '#/components/parameters/countryExposureParam'
- - $ref: '#/components/parameters/divisionExposureParam'
- - $ref: '#/components/parameters/ageFromParam'
- - $ref: '#/components/parameters/ageToParam'
- - $ref: '#/components/parameters/sexParam'
- - $ref: '#/components/parameters/hostParam'
- - $ref: '#/components/parameters/samplingStrategyParam'
- - $ref: '#/components/parameters/pangoLineageParam'
- - $ref: '#/components/parameters/nextstrainCladeParam'
- - $ref: '#/components/parameters/gisaidCladeParam'
- - $ref: '#/components/parameters/submittingLabParam'
- - $ref: '#/components/parameters/originatingLabParam'
- - $ref: '#/components/parameters/aaMutationsParam'
- - $ref: '#/components/parameters/nucMutationsParam'
- - $ref: '#/components/parameters/variantQueryParam'
- - $ref: '#/components/parameters/dataVersionParam'
- - $ref: '#/components/parameters/downloadAsFileParam'
- - $ref: '#/components/parameters/dataFormatParam'
- - $ref: '#/components/parameters/genbankAccessionParam'
- - $ref: '#/components/parameters/sraAccessionnParam'
- - $ref: '#/components/parameters/gisaidEpiIslParam'
- - $ref: '#/components/parameters/strainParam'
- responses:
- 200:
- description: GISAID EPI ISLs
- content:
- text/plain:
- schema:
- type: string
-
-
-components:
- parameters:
- fieldsParam:
- in: query
- name: fields
- schema:
- type: array
- items:
- type: string
- enum:
- - date
- - dateSubmitted
- - region
- - country
- - division
- - location
- - regionExposure
- - countryExposure
- - divisionExposure
- - age
- - sex
- - hospitalized
- - died
- - fullyVaccinated
- - host
- - samplingStrategy
- - pangoLineage
- - nextstrainClade
- - gisaidClade
- - submittingLab
- - originatingLab
- explode: false
- example: ['pangoLineage', 'division']
- dateFromParam:
- in: query
- name: dateFrom
- schema:
- type: string
- example: '2021-01-01'
- dateToParam:
- in: query
- name: dateTo
- schema:
- type: string
- example: '2021-12-31'
- dateSubmittedFromParam:
- in: query
- name: dateSubmittedFrom
- schema:
- type: string
- dateSubmittedToParam:
- in: query
- name: dateSubmittedTo
- schema:
- type: string
- regionParam:
- in: query
- name: region
- schema:
- type: string
- example: Europe
- countryParam:
- in: query
- name: country
- schema:
- type: string
- example: Switzerland
- divisionParam:
- in: query
- name: division
- schema:
- type: string
- locationParam:
- in: query
- name: location
- schema:
- type: string
- regionExposureParam:
- in: query
- name: regionExposure
- schema:
- type: string
- countryExposureParam:
- in: query
- name: countryExposure
- schema:
- type: string
- divisionExposureParam:
- in: query
- name: divisionExposure
- schema:
- type: string
- ageFromParam:
- in: query
- name: ageFrom
- schema:
- type: number
- ageToParam:
- in: query
- name: ageTo
- schema:
- type: number
- sexParam:
- in: query
- name: sex
- schema:
- type: string
- hostParam:
- in: query
- name: host
- schema:
- type: string
- samplingStrategyParam:
- in: query
- name: samplingStrategy
- schema:
- type: string
- pangoLineageParam:
- in: query
- name: pangoLineage
- description: Add a `*` at the end to include sub-lineages.
- schema:
- type: string
- example: B.1.1.529*
- nextstrainCladeParam:
- in: query
- name: nextstrainClade
- schema:
- type: string
- gisaidCladeParam:
- in: query
- name: gisaidClade
- schema:
- type: string
- submittingLabParam:
- in: query
- name: submittingLab
- schema:
- type: string
- originatingLabParam:
- in: query
- name: originatingLab
- schema:
- type: string
- aaMutationsParam:
- in: query
- name: aaMutations
- schema:
- type: array
- items:
- type: string
- explode: false
- example: ['S:501Y', 'S:69-']
- nucMutationsParam:
- in: query
- name: nucMutations
- schema:
- type: array
- items:
- type: string
- explode: false
- variantQueryParam:
- in: query
- name: variantQuery
- description: TODO
- schema:
- type: string
- dataVersionParam:
- in: query
- name: dataVersion
- schema:
- type: number
- downloadAsFileParam:
- in: query
- name: downloadAsFile
- schema:
- type: boolean
- example: false
- dataFormatParam:
- in: query
- name: dataFormat
- schema:
- type: string
- enum:
- - json
- - csv
- example: json
- genbankAccessionParam:
- in: query
- name: genbankAccession
- schema:
- type: string
- sraAccessionnParam:
- in: query
- name: sraAccession
- schema:
- type: string
- gisaidEpiIslParam:
- in: query
- name: gisaidEpiIsl
- schema:
- type: string
- strainParam:
- in: query
- name: strain
- schema:
- type: string
- schemas:
- InfoSchema:
- type: object
- properties:
- apiVersion:
- type: integer
- example: 1
- dataVersion:
- type: number
- description: The version of the underlying data. This is the UNIX timestamp of the moment when the data was last updated.
- example: 1643245246
- deprecationDate:
- type: string
- description: The date when the endpoint is going to be deprecated. If no deprecation is planned, this field will be null.
- example: '2029-12-31'
- deprecationInfo:
- type: string
- description: Information about the upcoming deprecation event. If no deprecation is planned, this field will be null.
- acknowledgement:
- type: string
- ResponseWrapperSchema:
- type: object
- properties:
- info:
- allOf:
- - $ref: '#/components/schemas/InfoSchema'
- errors:
- type: array
- items:
- type: object
- description: Information about the error. If there is no error, the `errors` field will be empty.
- data:
- type: object
- description: The actual response data
- BasicFieldsSchema:
- type: object
- properties:
- date:
- type: string
- example: '2020-10-01'
- dateSubmitted:
- type: string
- example: '2020-10-01'
- region:
- type: string
- example: Europe
- country:
- type: string
- example: Switzerland
- division:
- type: string
- example: Basel-Stadt
- location:
- type: string
- example: Basel
- regionExposure:
- type: string
- example: Europe
- countryExposure:
- type: string
- example: Switzerland
- divisionExposure:
- type: string
- example: Basel-Stadt
- age:
- type: number
- example: 27
- sex:
- type: string
- example: Male
- hospitalized:
- type: boolean
- died:
- type: boolean
- fullyVaccinated:
- type: boolean
- host:
- type: string
- samplingStrategy:
- type: string
- pangoLineage:
- type: string
- example: BA.1
- nextstrainClade:
- type: string
- example: 21K
- gisaidClade:
- type: string
- example: GRA
- submittingLab:
- type: string
- example: lab name
- originatingLab:
- type: string
- example: lab name
- SampleIdentitySchema:
- type: object
- properties:
- genbankAccession:
- type: string
- sraAccession:
- type: string
- gisaidEpiIsl:
- type: string
- strain:
- type: string
- ContributorsSchema:
- type: object
- properties:
- submittingLab:
- type: string
- originatingLab:
- type: string
- authors:
- type: string
- MutationResponseSchema:
- type: object
- properties:
- mutation:
- type: string
- proportion:
- type: number
- count:
- type: number
diff --git a/docs/slate/Dockerfile b/docs/slate/Dockerfile
deleted file mode 100644
index 4c9a12eaf..000000000
--- a/docs/slate/Dockerfile
+++ /dev/null
@@ -1,25 +0,0 @@
-## Build doc ##
-
-FROM ruby:3-buster AS builder
-
-RUN apt-get update
-RUN apt-get install -y nodejs
-
-WORKDIR /app
-RUN gem install bundler
-RUN git clone https://github.com/slatedocs/slate.git
-
-WORKDIR /app/slate
-RUN bundle install
-COPY source source
-RUN bundle exec middleman build
-
-
-## Run server ##
-
-FROM nginx:stable AS server
-
-COPY --from=builder /app/slate/build /app/
-COPY docker_resources/nginx-docs.conf /etc/nginx/conf.d/default.conf
-
-EXPOSE 4567
diff --git a/docs/slate/LICENSE of slatedocs b/docs/slate/LICENSE of slatedocs
deleted file mode 100644
index 261eeb9e9..000000000
--- a/docs/slate/LICENSE of slatedocs
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/docs/slate/README.md b/docs/slate/README.md
deleted file mode 100644
index 76f56be0c..000000000
--- a/docs/slate/README.md
+++ /dev/null
@@ -1 +0,0 @@
-docker run --rm --name slate -p 4567:4567 -v $(pwd)/source:/srv/slate/source slatedocs/slate serve
diff --git a/docs/slate/docker_resources/nginx-docs.conf b/docs/slate/docker_resources/nginx-docs.conf
deleted file mode 100644
index 4dcfdc6d7..000000000
--- a/docs/slate/docker_resources/nginx-docs.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-server {
- listen 4567;
-
- index index.html;
- root /app;
-
- location / {
- }
-}
diff --git a/docs/slate/source/fonts/slate.eot b/docs/slate/source/fonts/slate.eot
deleted file mode 100644
index 13c4839a1..000000000
Binary files a/docs/slate/source/fonts/slate.eot and /dev/null differ
diff --git a/docs/slate/source/fonts/slate.svg b/docs/slate/source/fonts/slate.svg
deleted file mode 100644
index 5f3498230..000000000
--- a/docs/slate/source/fonts/slate.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
diff --git a/docs/slate/source/fonts/slate.ttf b/docs/slate/source/fonts/slate.ttf
deleted file mode 100644
index ace9a46a7..000000000
Binary files a/docs/slate/source/fonts/slate.ttf and /dev/null differ
diff --git a/docs/slate/source/fonts/slate.woff b/docs/slate/source/fonts/slate.woff
deleted file mode 100644
index 1e72e0ee0..000000000
Binary files a/docs/slate/source/fonts/slate.woff and /dev/null differ
diff --git a/docs/slate/source/fonts/slate.woff2 b/docs/slate/source/fonts/slate.woff2
deleted file mode 100644
index 7c585a727..000000000
Binary files a/docs/slate/source/fonts/slate.woff2 and /dev/null differ
diff --git a/docs/slate/source/images/logo.png b/docs/slate/source/images/logo.png
deleted file mode 100644
index 154afccd3..000000000
Binary files a/docs/slate/source/images/logo.png and /dev/null differ
diff --git a/docs/slate/source/images/navbar.png b/docs/slate/source/images/navbar.png
deleted file mode 100644
index df38e90d8..000000000
Binary files a/docs/slate/source/images/navbar.png and /dev/null differ
diff --git a/docs/slate/source/includes/_use-cases.md b/docs/slate/source/includes/_use-cases.md
deleted file mode 100644
index b3a0eaa6b..000000000
--- a/docs/slate/source/includes/_use-cases.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# Use Cases
-
-We demonstrate two use cases for this API in R.
-
-## Plot the global distribution of all sequences
-
-```r
-library(jsonlite)
-library(ggplot2)
-
-# Query the API
-response <- fromJSON("https://lapis.cov-spectrum.org/open/v1/sample/aggregated?fields=region")
-
-# Check for errors
-errors <- response$errors
-if (length(errors) > 0) {
- stop("Errors")
-}
-
-# Check for deprecation
-deprecationDate <- response$info$deprecationDate
-if (!is.null(deprecationDate)) {
- warning(paste0("This version of the API will be deprecated on ", deprecationDate,
- ". Message: ", response$info$deprecationInfo))
-}
-
-# The data is good to be used!
-data <- response$data
-
-# Make a plot
-ggplot(
- data,
- aes(x = "", y = count, fill = region)) +
- geom_bar(width = 1, stat = "identity") +
- coord_polar("y", start = 0) +
- theme_minimal() +
- theme(
- panel.grid=element_blank(),
- panel.border = element_blank(),
- axis.ticks = element_blank(),
- axis.title.x = element_blank(),
- axis.title.y = element_blank(),
- axis.text.x = element_blank())
-```
-
-
-Steps:
-
-1. Query data from the API
-2. Check whether there are errors. If yes, abort!
-3. Check whether a deprecation date is given. If yes, write a warning.
-4. Parse data from JSON as a data frame.
-5. Use the data frame to create a plot.
-
-## Plot the count of delta samples in a country in the past 100 days
-
-```r
-library(jsonlite)
-library(ggplot2)
-
-# Query the API
-date_from <- format(Sys.Date() - as.difftime(100, unit = "days"), "%Y-%m-%d")
-query <- paste0(
- "https://lapis.cov-spectrum.org/open/v1/sample/aggregated?",
- "fields=date",
- "&country=Switzerland",
- "&dateFrom=", date_from,
- "&pangoLineage=B.1.617.2*"
-)
-response <- fromJSON(query)
-
-# Check for errors
-errors <- response$errors
-if (length(errors) > 0) {
- stop("Errors")
-}
-
-# Check for deprecation
-deprecationDate <- response$info$deprecationDate
-if (!is.null(deprecationDate)) {
- warning(paste0("This version of the API will be deprecated on ", deprecationDate,
- ". Message: ", response$info$deprecationInfo))
-}
-
-# The data is good to be used!
-data <- response$data
-
-# Make a plot
-ggplot(
- data,
- aes(x = as.Date(date), y = count)) +
- geom_col() +
- theme_bw() +
- labs(x = element_blank(), y = "Count") +
- scale_x_date(date_breaks = "1 month", date_labels = "%B %Y") +
- ggtitle("Count of delta samples in Switzerland in the past 100 days")
-```
-
diff --git a/docs/slate/source/index.html.md b/docs/slate/source/index.html.md
deleted file mode 100644
index b6a5a593d..000000000
--- a/docs/slate/source/index.html.md
+++ /dev/null
@@ -1,317 +0,0 @@
----
-title: LAPIS Documentation
-
-language_tabs: # must be one of https://git.io/vQNgJ
- - r
-
-toc_footers:
- - Github
- - OpenAPI-specification
- - Developed by cEvo@ETH Zurich
- - Documentation powered by Slate
-
-includes:
- - use-cases
-
-search: true
-
-code_clipboard: true
----
-
-# Introduction
-
-LAPIS (Lightweight API for Sequences) is an open web application programming interface (API) allowing easy querying of SARS-CoV-2 sequencing data using web links. The core features are:
-
-- Filter sequences by metadata or mutations
-- Aggregate data by any metadata field you like
-- Get the full metadata
-- Get the sequences as FASTA (aligned or unaligned)
-- Responses can be formatted as JSON and as CSV
-
-An OpenAPI-specification is available [here](https://lapis.cov-spectrum.org/openapi/).
-
-This instance uses fully public data from [NCBI GenBank](https://www.ncbi.nlm.nih.gov/genbank/) pre-proceessed and hosted by [Nextstrain](https://nextstrain.org/blog/2021-07-08-ncov-open-announcement). We update the data every day. More information about the underlying software and the code can be found in our [Github repository](https://github.com/cevo-public/LAPIS).
-
-In following, we demostrate the core features enabled by the API. On the left, we present the basic syntax of the API and on the right, we show how to use it for queries. In the section "Use Cases", we provide examples how to use the API to query public SARS-CoV-2 sequencing data to generate statistics, create plots, or download sequences for further analysis.
-
-
-# Overview
-
-The API has six main endpoints related to samples. These endpoints provide different types of data:
-
-- `/sample/aggregated` - use to get summary data aggregated across samples
-- `/sample/details` - use to get per-sample metadata
-- `/sample/aa-mutations` - use to get the common amino acid mutations (shared by at least 5% of the sequences)
-- `/sample/nuc-mutations` - use to get the common nucleotide mutations (shared by at least 5% of the sequences)
-- `/sample/fasta` - use to get original (unaligned) sequences
-- `/sample/fasta-aligned` - use to get aligned sequences
-
-The API returns a response (data) based on a query to one of the endpoints. You can view a response in your browser, or use the data programatically. We'll provide some examples in R.
-
-
-
-## Query Format
-
-> **Query example:**
->
-> Get the total number of available sequences:
->
-> /sample/aggregated
->
-
-To query an endpoint, use the web link with prefix
-`https://lapis.cov-spectrum.org/open/v1` and the suffix for the relevant endpoint. In the examples, we only show the suffixes to keep things simple, but you can click to try the full link in your browser.
-
-## Response Format
-
-> **Response example**:
-
-```json
-{
- "info":{"apiVersion":1,"deprecationDate":null,"deprecationInfo":null},
- "errors":[],
- "data":[{"count":913515}]
-}
-```
-
-The responses can be formatted in JSON or CSV. The default is JSON. To get CSV responses, append the query parameter `dataFormat=csv`.
-
-Responses returned in the [JSON](https://www.json.org/json-en.html) format have three top level attributes:
-
-- "info" - data about the API itself
-- "errors" - an array (hopefully empty!) of things that wrong.
-- "data" - the actual data
-
-
-# Filters
-
-> **Examples:**
->
-> Get the number of all samples in Switzerland in 2021:
->
-> /sample/aggregated?country=Switzerland&dateFrom=2021-01-01&dateTo=2021-12-31
->
-
-```json
-{
- "info":{"apiVersion":1,"deprecationDate":null,"deprecationInfo":null},
- "errors":[],
- "data":[{"count":22701}]
-}
-```
-
-> Get details about samples from lineage AY.1 in Geneva, Switzerland:
->
-> /sample/details?country=Switzerland&division=Geneva&pangoLineage=AY.1
->
-
-```json
-{
- "info": {"apiVersion":1,"deprecationDate":null,"deprecationInfo":null},
- "errors": [],
- "data": [
- {
- "date": "2021-05-26",
- "dateSubmitted": "2021-06-29",
- "region": "Europe",
- "country": "Switzerland",
- "division": "Geneva",
- "location": null,
- "regionExposure": "Europe",
- "countryExposure": "Switzerland",
- "divisionExposure": "Geneva",
- "age": null,
- "sex": null,
- "host": "Homo sapiens",
- "samplingStrategy": null,
- "pangoLineage": "AY.1",
- "nextstrainClade": "21A (Delta)",
- "gisaidCloade": null,
- "submittingLab": null,
- "originatingLab": null,
- "genbankAccession": "OU268406",
- "sraAccession": null,
- "gisaidEpiIsl": "EPI_ISL_2405325",
- "strain":"Switzerland/GE-HUG-34284688/2021"
- },
- ...
- ]
-}
-```
-
-Large queries, for example detailed information on all the samples, will take a bit. Instead, we can adapt the query to filter to only samples of interest. The syntax for additing filters is `=&=`.
-
-All six **sample** endpoints can be filtered by the following attributes:
-
-- dateFrom
-- dateTo
-- dateSubmittedFrom
-- dateSubmittedTo
-- region
-- country
-- division
-- location
-- regionExposure
-- countryExposure
-- divisionExposure
-- ageFrom
-- ageTo
-- sex
-- host
-- samplingStrategy
-- pangoLineage (see section "Filter Pango Lineages")
-- nextcladePangoLineage
-- nextstrainClade
-- gisaidClade
-- submittingLab
-- originatingLab
-- nucMutations (see section "Filter Mutations")
-- aaMutations (see section "Filter Mutations")
-- nextcladeQcOverallScoreFrom
-- nextcladeQcOverallScoreTo
-- nextcladeQcMissingDataScoreFrom
-- nextcladeQcMissingDataScoreTo
-- nextcladeQcMixedSitesScoreFrom
-- nextcladeQcMixedSitesScoreTo
-- nextcladeQcPrivateMutationsScoreFrom
-- nextcladeQcPrivateMutationsScoreTo
-- nextcladeQcSnpClustersScoreFrom
-- nextcladeQcSnpClustersScoreTo
-- nextcladeQcFrameShiftsScoreFrom
-- nextcladeQcFrameShiftsScoreTo
-- nextcladeQcStopCodonsScoreFrom
-- nextcladeQcStopCodonsScoreTo
-
-The endpoints `details`, `aa-mutations`, `nuc-mutations`, `fasta`, and `fasta-aligned` can additionally be filtered by these attributes:
-
-- genbankAccession
-- sraAccession
-- gisaidEpiIsl
-- strain
-
-To determine which values are available for each attribute, see the example in section "Aggregation".
-
-## Filter Pango Lineages
-
-
-> Get the total number of samples of the lineage B.1.617.2 without sub-lineages:
->
-> /sample/aggregated?pangoLineage=B.1.617.2
->
-
-> Get the total number of samples of the lineage B.1.617.2 including sub-lineages:
->
-> /sample/aggregated?pangoLineage=B.1.617.2*
->
-
-
-Pango lineage names inherit the hierarchical nature of genetic lineages. For example, B.1.1 is a sub-lineage of B.1. More information about the pango nomenclature can be found on the website of the [Pango network](https://www.pango.network/).
-
-With the `pangoLineage` filter, it is possible to not only filter for a very specific lineage but also to include its sub-lineages. To include sub-lineages, add a `*` at the end. For example, writing B.1.351 will only give samples of B.1.351. Writing B.1.351* or B.1.351.* (there is no difference between these two options) will return B.1.351, B.1.351.1, B.1.351.2, etc.
-
-An official pango lineage name can only have at most three number components. A sub-lineage of a lineage with a maximal-length name (e.g., B.1.617.2) will get an alias. A list of aliases can be found [here](https://github.com/cov-lineages/pango-designation/blob/master/pango_designation/alias_key.json). B.1.617.2 has the alias AY so that AY.1 would be a sub-lineage of B.1.617.2. LAPIS is aware of aliases. Filtering B.1.617.2* will include every lineage that starts with AY. It is further possible to search for B.1.617.2.1 which will then return the same results as AY.1.
-
-
-## Filter Mutations
-
-> Get the total number of samples with the synonymous nucleotide mutations 913T and 5986T and the amino acid mutation S:484K:
->
-> /sample/aggregated?nucMutations=913T,5986T&aaMutations=S:484K
->
-
-> Get the total number of samples for which we do not know whether the S:501 position is mutated:
->
-> /sample/aggregated?aaMutations=S:501X
->
-
-It is possible to filter for amino acid and nucleotide bases/mutations. Multiple mutations can be provided by specifying a comma-separated list.
-
-A nucleotide mutation has the format ``. A "base" can be one of the four nucleotides `A`, `T`, `C`, and `G`. It can also be `-` for deletion and `N` for unknown.
-
-An amino acid mutation has the format `:`. The following genes are available: E, M, N, ORF1a, ORF1b, ORF3a, ORF6, ORF7a, ORF7b, ORF8, ORF9b, S. A "base" can be one of the 20 amino acid codes. It can also be `-` for deletion and `X` for unknown.
-
-The `` can be omitted to filter for any mutation. You can write a `.` for the `` to filter for sequences for which it is confirmed that no mutation occurred, i.e., has the same base as the reference genome at the specified position.
-
-
-# Aggregation
-
-> **Examples:**
->
-> Get the number of B.1.1.7 samples per country:
->
-> /sample/aggregated?fields=country&pangoLineage=B.1.1.7
->
-
-```json
-{
- "info": {"apiVersion":1,"deprecationDate":null,"deprecationInfo":null},
- "errors": [],
- "data": [
- {"country": "Austria", "count": 82},
- {"country": "Bahrain", "count": 48},
- ...
- ]
-}
-```
-
-> Get the number of samples per Nextstrain clade and country:
->
-> /sample/aggregated?fields=nextstrainClade,country
->
-
-```json
-{
- "info": {"apiVersion":1,"deprecationDate":null,"deprecationInfo":null},
- "errors": [],
- "data": [
- {"nextstrainClade": "19A", "country": "Australia", "count": 317},
- {"nextstrainClade": "19A", "country": "Bahrain", "count": 2},
- ...
- ]
-}
-```
-
-> Get all the possible values for attribute "division" in Swtizerland:
->
-> /sample/aggregated?division,country=Switzerland
->
-
-```json
-{
- "info": {"apiVersion":1,"deprecationDate":null,"deprecationInfo":null},
- "errors": [],
- "data": [
- {"division": "Basel-Land", "count": 4658},
- {"division": "Aargau", "count": 2964},
- ...
- ]
-}
-```
-
-Above, we used the `/sample/aggregated` endpoint to get the total counts of sequences with or without filters. Using the query parameter `fields`, we can group the samples and get the counts per group. For example, we can use it to get the number of samples per country. We can also use it to list the available values for each attribute.
-
-`fields` accepts a comma-separated list. The following values are available:
-
-- date
-- dateSubmitted
-- region
-- country
-- division
-- location
-- regionExposure
-- countryExposure
-- divisionExposure
-- age
-- sex
-- host
-- samplingStrategy
-- pangoLineage
-- nextcladePangoLineage
-- nextstrainClade
-- gisaidClade
-- submittingLab
-- originatingLab
-
-
diff --git a/docs/slate/source/javascripts/all.js b/docs/slate/source/javascripts/all.js
deleted file mode 100644
index 5f5d4067b..000000000
--- a/docs/slate/source/javascripts/all.js
+++ /dev/null
@@ -1,2 +0,0 @@
-//= require ./all_nosearch
-//= require ./app/_search
diff --git a/docs/slate/source/javascripts/all_nosearch.js b/docs/slate/source/javascripts/all_nosearch.js
deleted file mode 100644
index 026e5a200..000000000
--- a/docs/slate/source/javascripts/all_nosearch.js
+++ /dev/null
@@ -1,27 +0,0 @@
-//= require ./lib/_energize
-//= require ./app/_copy
-//= require ./app/_toc
-//= require ./app/_lang
-
-function adjustLanguageSelectorWidth() {
- const elem = $('.dark-box > .lang-selector');
- elem.width(elem.parent().width());
-}
-
-$(function() {
- loadToc($('#toc'), '.toc-link', '.toc-list-h2', 10);
- setupLanguages($('body').data('languages'));
- $('.content').imagesLoaded( function() {
- window.recacheHeights();
- window.refreshToc();
- });
-
- $(window).resize(function() {
- adjustLanguageSelectorWidth();
- });
- adjustLanguageSelectorWidth();
-});
-
-window.onpopstate = function() {
- activateLanguage(getLanguageFromQueryString());
-};
diff --git a/docs/slate/source/javascripts/app/_copy.js b/docs/slate/source/javascripts/app/_copy.js
deleted file mode 100644
index 4dfbbb6c0..000000000
--- a/docs/slate/source/javascripts/app/_copy.js
+++ /dev/null
@@ -1,15 +0,0 @@
-function copyToClipboard(container) {
- const el = document.createElement('textarea');
- el.value = container.textContent.replace(/\n$/, '');
- document.body.appendChild(el);
- el.select();
- document.execCommand('copy');
- document.body.removeChild(el);
-}
-
-function setupCodeCopy() {
- $('pre.highlight').prepend('');
- $('.copy-clipboard').on('click', function() {
- copyToClipboard(this.parentNode.children[1]);
- });
-}
diff --git a/docs/slate/source/javascripts/app/_lang.js b/docs/slate/source/javascripts/app/_lang.js
deleted file mode 100644
index cc5ac8b6b..000000000
--- a/docs/slate/source/javascripts/app/_lang.js
+++ /dev/null
@@ -1,171 +0,0 @@
-//= require ../lib/_jquery
-
-/*
-Copyright 2008-2013 Concur Technologies, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License"); you may
-not use this file except in compliance with the License. You may obtain
-a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-License for the specific language governing permissions and limitations
-under the License.
-*/
-;(function () {
- 'use strict';
-
- var languages = [];
-
- window.setupLanguages = setupLanguages;
- window.activateLanguage = activateLanguage;
- window.getLanguageFromQueryString = getLanguageFromQueryString;
-
- function activateLanguage(language) {
- if (!language) return;
- if (language === "") return;
-
- $(".lang-selector a").removeClass('active');
- $(".lang-selector a[data-language-name='" + language + "']").addClass('active');
- for (var i=0; i < languages.length; i++) {
- $(".highlight.tab-" + languages[i]).hide();
- $(".lang-specific." + languages[i]).hide();
- }
- $(".highlight.tab-" + language).show();
- $(".lang-specific." + language).show();
-
- window.recacheHeights();
-
- // scroll to the new location of the position
- if ($(window.location.hash).get(0)) {
- $(window.location.hash).get(0).scrollIntoView(true);
- }
- }
-
- // parseURL and stringifyURL are from https://github.com/sindresorhus/query-string
- // MIT licensed
- // https://github.com/sindresorhus/query-string/blob/7bee64c16f2da1a326579e96977b9227bf6da9e6/license
- function parseURL(str) {
- if (typeof str !== 'string') {
- return {};
- }
-
- str = str.trim().replace(/^(\?|#|&)/, '');
-
- if (!str) {
- return {};
- }
-
- return str.split('&').reduce(function (ret, param) {
- var parts = param.replace(/\+/g, ' ').split('=');
- var key = parts[0];
- var val = parts[1];
-
- key = decodeURIComponent(key);
- // missing `=` should be `null`:
- // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
- val = val === undefined ? null : decodeURIComponent(val);
-
- if (!ret.hasOwnProperty(key)) {
- ret[key] = val;
- } else if (Array.isArray(ret[key])) {
- ret[key].push(val);
- } else {
- ret[key] = [ret[key], val];
- }
-
- return ret;
- }, {});
- };
-
- function stringifyURL(obj) {
- return obj ? Object.keys(obj).sort().map(function (key) {
- var val = obj[key];
-
- if (Array.isArray(val)) {
- return val.sort().map(function (val2) {
- return encodeURIComponent(key) + '=' + encodeURIComponent(val2);
- }).join('&');
- }
-
- return encodeURIComponent(key) + '=' + encodeURIComponent(val);
- }).join('&') : '';
- };
-
- // gets the language set in the query string
- function getLanguageFromQueryString() {
- if (location.search.length >= 1) {
- var language = parseURL(location.search).language;
- if (language) {
- return language;
- } else if (jQuery.inArray(location.search.substr(1), languages) != -1) {
- return location.search.substr(1);
- }
- }
-
- return false;
- }
-
- // returns a new query string with the new language in it
- function generateNewQueryString(language) {
- var url = parseURL(location.search);
- if (url.language) {
- url.language = language;
- return stringifyURL(url);
- }
- return language;
- }
-
- // if a button is clicked, add the state to the history
- function pushURL(language) {
- if (!history) { return; }
- var hash = window.location.hash;
- if (hash) {
- hash = hash.replace(/^#+/, '');
- }
- history.pushState({}, '', '?' + generateNewQueryString(language) + '#' + hash);
-
- // save language as next default
- if (localStorage) {
- localStorage.setItem("language", language);
- }
- }
-
- function setupLanguages(l) {
- var defaultLanguage = null;
- if (localStorage) {
- defaultLanguage = localStorage.getItem("language");
- }
-
- languages = l;
-
- var presetLanguage = getLanguageFromQueryString();
- if (presetLanguage) {
- // the language is in the URL, so use that language!
- activateLanguage(presetLanguage);
-
- if (localStorage) {
- localStorage.setItem("language", presetLanguage);
- }
- } else if ((defaultLanguage !== null) && (jQuery.inArray(defaultLanguage, languages) != -1)) {
- // the language was the last selected one saved in localstorage, so use that language!
- activateLanguage(defaultLanguage);
- } else {
- // no language selected, so use the default
- activateLanguage(languages[0]);
- }
- }
-
- // if we click on a language tab, activate that language
- $(function() {
- $(".lang-selector a").on("click", function() {
- var language = $(this).data("language-name");
- pushURL(language);
- activateLanguage(language);
- return false;
- });
- });
-})();
diff --git a/docs/slate/source/javascripts/app/_search.js b/docs/slate/source/javascripts/app/_search.js
deleted file mode 100644
index 0b0ccd97f..000000000
--- a/docs/slate/source/javascripts/app/_search.js
+++ /dev/null
@@ -1,102 +0,0 @@
-//= require ../lib/_lunr
-//= require ../lib/_jquery
-//= require ../lib/_jquery.highlight
-;(function () {
- 'use strict';
-
- var content, searchResults;
- var highlightOpts = { element: 'span', className: 'search-highlight' };
- var searchDelay = 0;
- var timeoutHandle = 0;
- var index;
-
- function populate() {
- index = lunr(function(){
-
- this.ref('id');
- this.field('title', { boost: 10 });
- this.field('body');
- this.pipeline.add(lunr.trimmer, lunr.stopWordFilter);
- var lunrConfig = this;
-
- $('h1, h2').each(function() {
- var title = $(this);
- var body = title.nextUntil('h1, h2');
- lunrConfig.add({
- id: title.prop('id'),
- title: title.text(),
- body: body.text()
- });
- });
-
- });
- determineSearchDelay();
- }
-
- $(populate);
- $(bind);
-
- function determineSearchDelay() {
- if (index.tokenSet.toArray().length>5000) {
- searchDelay = 300;
- }
- }
-
- function bind() {
- content = $('.content');
- searchResults = $('.search-results');
-
- $('#input-search').on('keyup',function(e) {
- var wait = function() {
- return function(executingFunction, waitTime){
- clearTimeout(timeoutHandle);
- timeoutHandle = setTimeout(executingFunction, waitTime);
- };
- }();
- wait(function(){
- search(e);
- }, searchDelay);
- });
- }
-
- function search(event) {
-
- var searchInput = $('#input-search')[0];
-
- unhighlight();
- searchResults.addClass('visible');
-
- // ESC clears the field
- if (event.keyCode === 27) searchInput.value = '';
-
- if (searchInput.value) {
- var results = index.search(searchInput.value).filter(function(r) {
- return r.score > 0.0001;
- });
-
- if (results.length) {
- searchResults.empty();
- $.each(results, function (index, result) {
- var elem = document.getElementById(result.ref);
- searchResults.append("