diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
new file mode 100644
index 0000000..33df461
--- /dev/null
+++ b/.github/workflows/deploy-docs.yml
@@ -0,0 +1,68 @@
+name: deploy-docs.yml
+on:
+ push:
+ branches:
+ - "master"
+ workflow_dispatch:
+
+permissions:
+ id-token: write
+ pages: write
+
+env:
+ # Name of module and id separated by a slash
+ INSTANCE: Writerside/sd
+ # Replace HI with the ID of the instance in capital letters
+ ARTIFACT: webHelpSD2-all.zip
+ # Docker image version
+ DOCKER_VERSION: 241.15989
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Build Writerside docs using Docker
+ uses: JetBrains/writerside-github-action@v4
+ with:
+ instance: ${{ env.INSTANCE }}
+ artifact: ${{ env.ARTIFACT }}
+ docker-version: ${{ env.DOCKER_VERSION }}
+
+ - name: Upload artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: artifact
+ path: artifacts/${{ env.ARTIFACT }}
+ retention-days: 7
+
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ # Requires build job results
+ needs: build
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Download artifact
+ uses: actions/download-artifact@v4
+ with:
+ name: docs
+
+ - name: Unzip artifact
+ run: unzip -O UTF-8 -qq ${{ env.ARTIFACT }} -d dir
+
+ - name: Setup Pages
+ uses: actions/configure-pages@v4.0.0
+
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v3.0.1
+ with:
+ path: dir
+
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4.0.4
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index d94f791..e543514 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -3,6 +3,9 @@
on:
push:
branches: [ "master" ]
+ paths:
+ - "**.cs"
+ - "**.yaml"
env:
REGISTRY: ghcr.io
diff --git a/docs/.idea/.gitignore b/docs/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/docs/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/docs/.idea/docs.iml b/docs/.idea/docs.iml
new file mode 100644
index 0000000..6102194
--- /dev/null
+++ b/docs/.idea/docs.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/.idea/modules.xml b/docs/.idea/modules.xml
new file mode 100644
index 0000000..6049cfe
--- /dev/null
+++ b/docs/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/.idea/vcs.xml b/docs/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/docs/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/SS14.MapServer.swagger.json b/docs/SS14.MapServer.swagger.json
new file mode 100644
index 0000000..b765527
--- /dev/null
+++ b/docs/SS14.MapServer.swagger.json
@@ -0,0 +1,1168 @@
+{
+ "openapi": "3.0.1",
+ "info": {
+ "title": "SS14.MapServer",
+ "version": "1.0"
+ },
+ "paths": {
+ "/api/GitHubWebhook": {
+ "post": {
+ "tags": [
+ "GitHubWebhook"
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ }
+ }
+ }
+ },
+ "/api/Image/grid/{id}/{gridId}": {
+ "get": {
+ "tags": [
+ "Image"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "gridId",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "image/jpg": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ },
+ "image/png": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ },
+ "image/webp": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ },
+ "application/json": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/Image/grid/{id}/{gitRef}/{gridId}": {
+ "get": {
+ "tags": [
+ "Image"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "gitRef",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "gridId",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "image/jpg": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ },
+ "image/png": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ },
+ "image/webp": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ },
+ "application/json": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/Image/upload/{path}": {
+ "post": {
+ "tags": [
+ "Image"
+ ],
+ "parameters": [
+ {
+ "name": "path",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "file": {
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ },
+ "encoding": {
+ "file": {
+ "style": "form"
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized"
+ },
+ "403": {
+ "description": "Forbidden"
+ }
+ },
+ "security": [
+ {
+ "API_KEY": [
+ "API"
+ ]
+ }
+ ]
+ }
+ },
+ "/api/Image/file/{path}": {
+ "get": {
+ "tags": [
+ "Image"
+ ],
+ "parameters": [
+ {
+ "name": "path",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "image/jpg": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ },
+ "image/png": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ },
+ "image/webp": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/Management/information": {
+ "get": {
+ "tags": [
+ "Management"
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/InformationData"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized"
+ },
+ "403": {
+ "description": "Forbidden"
+ }
+ },
+ "security": [
+ {
+ "API_KEY": [
+ "API"
+ ]
+ }
+ ]
+ }
+ },
+ "/api/Management/statistics": {
+ "get": {
+ "tags": [
+ "Management"
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/StatisticsData"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized"
+ },
+ "403": {
+ "description": "Forbidden"
+ }
+ },
+ "security": [
+ {
+ "API_KEY": [
+ "API"
+ ]
+ }
+ ]
+ }
+ },
+ "/api/Management/build/clean": {
+ "post": {
+ "tags": [
+ "Management"
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized"
+ },
+ "403": {
+ "description": "Forbidden"
+ }
+ },
+ "security": [
+ {
+ "API_KEY": [
+ "API"
+ ]
+ }
+ ]
+ }
+ },
+ "/api/Map": {
+ "get": {
+ "tags": [
+ "Map"
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Map"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Map"
+ ],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "images": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "format": "binary"
+ }
+ },
+ "map": {
+ "type": "string"
+ }
+ }
+ },
+ "encoding": {
+ "image": {
+ "style": "form"
+ },
+ "map": {
+ "style": "form"
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Map"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized"
+ },
+ "403": {
+ "description": "Forbidden"
+ }
+ },
+ "security": [
+ {
+ "API_KEY": [
+ "API"
+ ]
+ }
+ ]
+ }
+ },
+ "/api/Map/list/{gitRef}": {
+ "get": {
+ "tags": [
+ "Map"
+ ],
+ "parameters": [
+ {
+ "name": "gitRef",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/MapList"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/Map/{id}": {
+ "get": {
+ "tags": [
+ "Map"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Map"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "Map"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized"
+ },
+ "403": {
+ "description": "Forbidden"
+ }
+ },
+ "security": [
+ {
+ "API_KEY": [
+ "API"
+ ]
+ }
+ ]
+ }
+ },
+ "/api/Map/{id}/{gitRef}": {
+ "get": {
+ "tags": [
+ "Map"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "gitRef",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Map"
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "tags": [
+ "Map"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "gitRef",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "images": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "format": "binary"
+ }
+ },
+ "map": {
+ "type": "string"
+ }
+ }
+ },
+ "encoding": {
+ "image": {
+ "style": "form"
+ },
+ "map": {
+ "style": "form"
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Map"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized"
+ },
+ "403": {
+ "description": "Forbidden"
+ }
+ },
+ "security": [
+ {
+ "API_KEY": [
+ "API"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Map"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "gitRef",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized"
+ },
+ "403": {
+ "description": "Forbidden"
+ }
+ },
+ "security": [
+ {
+ "API_KEY": [
+ "API"
+ ]
+ }
+ ]
+ }
+ },
+ "/api/Map/sync": {
+ "post": {
+ "tags": [
+ "Map"
+ ],
+ "parameters": [
+ {
+ "name": "syncAll",
+ "in": "query",
+ "style": "form",
+ "schema": {
+ "type": "boolean"
+ }
+ },
+ {
+ "name": "forceTiled",
+ "in": "query",
+ "style": "form",
+ "schema": {
+ "type": "boolean"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success"
+ },
+ "401": {
+ "description": "Unauthorized"
+ },
+ "403": {
+ "description": "Forbidden"
+ }
+ },
+ "security": [
+ {
+ "API_KEY": [
+ "API"
+ ]
+ }
+ ]
+ }
+ },
+ "/api/Tile/{id}/{gridId}/{x}/{y}/{z}": {
+ "get": {
+ "tags": [
+ "Tile"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "gridId",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ }
+ },
+ {
+ "name": "x",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ }
+ },
+ {
+ "name": "y",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ }
+ },
+ {
+ "name": "z",
+ "in": "path",
+ "required": true,
+ "style": "simple",
+ "schema": {
+ "type": "integer",
+ "format": "int32"
+ }
+ },
+ {
+ "name": "preload",
+ "in": "query",
+ "style": "form",
+ "schema": {
+ "type": "boolean"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "image/jpg": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ },
+ "image/png": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ },
+ "image/webp": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ },
+ "application/json": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "schemas": {
+ "Area": {
+ "type": "object",
+ "properties": {
+ "a": {
+ "$ref": "#/components/schemas/Point"
+ },
+ "b": {
+ "$ref": "#/components/schemas/Point"
+ }
+ },
+ "additionalProperties": false
+ },
+ "GitConfiguration": {
+ "type": "object",
+ "properties": {
+ "repositoryUrl": {
+ "type": "string",
+ "nullable": true
+ },
+ "branch": {
+ "type": "string",
+ "nullable": true
+ },
+ "retrieveMapFilesFromDiff": {
+ "type": "boolean"
+ },
+ "mapFilePatterns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "nullable": true
+ },
+ "mapFileExcludePatterns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "nullable": true
+ },
+ "dontRunWithCodeChanges": {
+ "type": "boolean"
+ },
+ "codeChangePatterns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "nullable": true
+ },
+ "runOnPullRequests": {
+ "type": "boolean"
+ },
+ "identity": {
+ "$ref": "#/components/schemas/GitIdentity"
+ },
+ "sshCommand": {
+ "type": "string",
+ "nullable": true
+ }
+ },
+ "additionalProperties": false
+ },
+ "GitIdentity": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "nullable": true
+ },
+ "email": {
+ "type": "string",
+ "nullable": true
+ }
+ },
+ "additionalProperties": false
+ },
+ "Grid": {
+ "required": [
+ "extent",
+ "gridId"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "format": "uuid"
+ },
+ "gridId": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "tiled": {
+ "type": "boolean"
+ },
+ "tileSize": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "offset": {
+ "$ref": "#/components/schemas/Point"
+ },
+ "extent": {
+ "$ref": "#/components/schemas/Area"
+ },
+ "url": {
+ "type": "string",
+ "nullable": true
+ }
+ },
+ "additionalProperties": false
+ },
+ "InformationData": {
+ "type": "object",
+ "properties": {
+ "version": {
+ "type": "string",
+ "nullable": true
+ },
+ "runner": {
+ "type": "string",
+ "nullable": true
+ },
+ "automatedBuilds": {
+ "type": "boolean",
+ "nullable": true
+ },
+ "cleanRendererOutput": {
+ "type": "boolean",
+ "nullable": true
+ },
+ "rendererOptions": {
+ "type": "string",
+ "nullable": true
+ },
+ "directoryPoolSize": {
+ "type": "integer",
+ "format": "int32",
+ "nullable": true
+ },
+ "processQueueSize": {
+ "type": "integer",
+ "format": "int32",
+ "nullable": true
+ },
+ "gitConfiguration": {
+ "$ref": "#/components/schemas/GitConfiguration"
+ }
+ },
+ "additionalProperties": false
+ },
+ "LayerSource": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "nullable": true
+ },
+ "extent": {
+ "$ref": "#/components/schemas/Area"
+ },
+ "composition": {
+ "type": "string",
+ "nullable": true
+ },
+ "parallaxScale": {
+ "$ref": "#/components/schemas/Point"
+ }
+ },
+ "additionalProperties": false
+ },
+ "Map": {
+ "required": [
+ "displayName",
+ "gitRef",
+ "grids",
+ "mapId"
+ ],
+ "type": "object",
+ "properties": {
+ "mapGuid": {
+ "type": "string",
+ "format": "uuid"
+ },
+ "gitRef": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "mapId": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "displayName": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "attribution": {
+ "type": "string",
+ "nullable": true
+ },
+ "grids": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Grid"
+ },
+ "readOnly": true
+ },
+ "parallaxLayers": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ParallaxLayer"
+ },
+ "nullable": true
+ },
+ "lastUpdated": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false
+ },
+ "MapList": {
+ "type": "object",
+ "properties": {
+ "maps": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/MapListEntry"
+ },
+ "nullable": true
+ }
+ },
+ "additionalProperties": false
+ },
+ "MapListEntry": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "nullable": true
+ },
+ "id": {
+ "type": "string",
+ "nullable": true
+ }
+ },
+ "additionalProperties": false
+ },
+ "ParallaxLayer": {
+ "type": "object",
+ "properties": {
+ "scale": {
+ "$ref": "#/components/schemas/Point"
+ },
+ "offset": {
+ "$ref": "#/components/schemas/Point"
+ },
+ "static": {
+ "type": "boolean"
+ },
+ "minScale": {
+ "type": "number",
+ "format": "float",
+ "nullable": true
+ },
+ "source": {
+ "$ref": "#/components/schemas/LayerSource"
+ },
+ "layers": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/LayerSource"
+ },
+ "nullable": true
+ }
+ },
+ "additionalProperties": false
+ },
+ "Point": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "format": "float"
+ },
+ "y": {
+ "type": "number",
+ "format": "float"
+ }
+ },
+ "additionalProperties": false
+ },
+ "StatisticsData": {
+ "type": "object",
+ "properties": {
+ "maps": {
+ "type": "integer",
+ "format": "int32",
+ "nullable": true
+ },
+ "grids": {
+ "type": "integer",
+ "format": "int32",
+ "nullable": true
+ },
+ "tiles": {
+ "type": "integer",
+ "format": "int32",
+ "nullable": true
+ },
+ "generalImages": {
+ "type": "integer",
+ "format": "int32",
+ "nullable": true
+ },
+ "queuedWork": {
+ "type": "integer",
+ "format": "int32",
+ "nullable": true
+ },
+ "imageFilesSize": {
+ "type": "integer",
+ "format": "int64",
+ "nullable": true
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "securitySchemes": {
+ "API_KEY": {
+ "type": "apiKey",
+ "description": "API key must appear in header",
+ "name": "X-API-Key",
+ "in": "header"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/docs/Writerside/cfg/buildprofiles.xml b/docs/Writerside/cfg/buildprofiles.xml
new file mode 100644
index 0000000..eaa32e7
--- /dev/null
+++ b/docs/Writerside/cfg/buildprofiles.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ false
+ true
+
+
+
+
diff --git a/docs/Writerside/redirection-rules.xml b/docs/Writerside/redirection-rules.xml
new file mode 100644
index 0000000..1d71309
--- /dev/null
+++ b/docs/Writerside/redirection-rules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/docs/Writerside/sd.tree b/docs/Writerside/sd.tree
new file mode 100644
index 0000000..2cc340c
--- /dev/null
+++ b/docs/Writerside/sd.tree
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/Writerside/topics/Basic-Example-Configuration.md b/docs/Writerside/topics/Basic-Example-Configuration.md
new file mode 100644
index 0000000..326f337
--- /dev/null
+++ b/docs/Writerside/topics/Basic-Example-Configuration.md
@@ -0,0 +1,70 @@
+# Basic Example Configuration
+
+````yaml
+Serilog:
+ Using: [ "Serilog.Sinks.Console" ]
+ MinimumLevel:
+ Default: "Information"
+ Override:
+ SS14: "Information"
+ Microsoft: "Warning"
+ Microsoft.Hosting.Lifetime: "Information"
+ Microsoft.AspNetCore: "Warning"
+ #This service doesn't use data protection
+ Microsoft.AspNetCore.DataProtection: "Error"
+ #Ignore api key spam
+ SS14.MapServer.Security.ApiKeyHandler: "Error"
+
+ WriteTo:
+ - Name: Console
+ Args:
+ OutputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3} {SourceContext}] {Message:lj}{NewLine}{Exception}"
+
+ Enrich: [ "FromLogContext" ]
+
+AllowedHosts: "*"
+
+Auth:
+ ApiKey: ""
+
+Git:
+ RepositoryUrl: ""
+ Branch: "master"
+ # Exclude maps that generally break the map renderer,
+ # like planet maps or you just don't want rendered
+ mapFileExcludePatterns:
+ - "europa.yml"
+
+Github:
+ AppName: ""
+ AppId:
+ AppPrivateKeyLocation: "private-key.pem"
+ AppWebhookSecret: ""
+
+ConnectionStrings:
+ default: "Server=map_database;Port=5432;Database=postgres;User Id=postgres;Password=;"
+
+Server:
+ CorsOrigins:
+ - "