diff --git a/.gitignore b/.gitignore
index 768f3c4a7c141002b7c2b628be09d8c9154552e4..2c997de6baa6fba62d14427e943e0797ad56e023 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,6 +33,7 @@ docs/_build
 *.rar
 *.gz
 *.docx
+*.pdf
 *.min.css.map
 *.min.js.map
 query_log.txt
\ No newline at end of file
diff --git a/main.py b/main.py
index 71ae75dafd0ea60a0795bb54e65755c5c77c0c1e..7ecba967c217433e15941e96e0ac8d6f632186aa 100644
--- a/main.py
+++ b/main.py
@@ -1,10 +1,34 @@
-from fastapi import FastAPI, Request
+from fastapi import FastAPI, Request, Query
 from fastapi.staticfiles import StaticFiles
 from fastapi.templating import Jinja2Templates
 from fastapi.encoders import jsonable_encoder
 from fastapi.responses import JSONResponse
 import json
 import uvicorn
+from enum import Enum
+
+
+class CorpPlatform(str, Enum):
+    tsakorpus = 'tsakorpus'
+    annis = 'annis'
+    litterae = 'litterae'
+
+
+class Operation(str, Enum):
+    explain = 'explain'
+    searchRetrieve = 'searchRetrieve'
+    scan = 'scan'
+
+
+class SRUVersion(str, Enum):
+    v1_2 = '1.2'
+    v2_0 = '2.0'
+
+
+class QueryType(str, Enum):
+    # Query language (parameter used since SRU 2.0)
+    fcs = 'fcs'
+    cql = 'cql'     # Contextual Query Language; default
 
 
 app = FastAPI()
@@ -17,6 +41,40 @@ def root():
     return {"message": "Hello World"}
 
 
+@app.get('/fcs-endpoint/{platform}/{corpusID}')
+def endpoint(
+        platform: CorpPlatform,
+        corpusID: str,
+        operation: Operation = Operation.explain,
+        version: SRUVersion = SRUVersion.v2_0,
+        queryType: QueryType = QueryType.fcs,
+        query: str = '',
+        xFcsEndpointDescription: str = Query(
+            default='',
+            alias='x-fcs-endpoint-description'
+        ),
+        xFcsContext: str = Query(
+            default='',
+            alias='x-fcs-context'
+        ),
+        xFcsDataviews: str = Query(
+            default='',
+            alias='x-fcs-dataviews'
+        ),
+        xFcsRewritesAllowed: str = Query(
+            default='',
+            alias='x-fcs-rewrites-allowed'
+        )
+        ):
+    if platform == CorpPlatform.annis:
+        return {'platform': 'annis', 'operation': operation, 'version': version}
+    elif platform == CorpPlatform.litterae:
+        return {'platform': 'litterae', 'operation': operation, 'version': version}
+    elif platform == CorpPlatform.tsakorpus:
+        return {'platform': 'tsakorpus', 'operation': operation, 'version': version}
+    return
+
+
 if __name__ == '__main__':
     uvicorn.run(
         'main:app',
diff --git a/notes.txt b/notes.txt
new file mode 100644
index 0000000000000000000000000000000000000000..689cfb4b2a2385259d2f4fb0f3797bb89d1c8ac7
--- /dev/null
+++ b/notes.txt
@@ -0,0 +1,3 @@
+p. 10: "Send explain request without version and operation parameter" -- but an explain request has to have the operation parameter with 'explain' as its value
+
+p. 14: x-cmd-resource-info parameter present in the query example, but never explained (mentioned in some 2013 slides on FCS; should now probably be x-fcs-endpoint-description)
\ No newline at end of file
diff --git a/static/gitkeep b/static/gitkeep
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391