From 77b87e2d96b48d093b92697921fc54effeb7059e Mon Sep 17 00:00:00 2001
From: Christian Beutel <>
Date: Sat, 23 Mar 2024 20:19:20 +0100
Subject: [PATCH] adds API docs
---
CHANGELOG.md | 18 +++++
db/main.go | 16 +++++
search/Dockerfile | 2 +-
web/src/lib/components/footer.svelte | 5 ++
.../trail/trail_filter_panel.svelte | 2 +-
web/src/lib/stores/trail_store.ts | 2 +-
web/src/lib/stores/waypoint_store.ts | 4 +-
web/src/routes/+page.svelte | 2 +-
web/src/routes/map/+page.svelte | 2 +-
web/src/routes/profile/+page.svelte | 2 +-
web/static/docs/api/index.html | 65 +++++++++++++++++++
.../static/docs}/api/wanderer.openapi.json | 2 +-
12 files changed, 113 insertions(+), 9 deletions(-)
create mode 100644 web/static/docs/api/index.html
rename {docs => web/static/docs}/api/wanderer.openapi.json (99%)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3136b8c8..d32fb2f6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,21 @@
+# v0.2.0
+## Features
+
+- when creating/editing a trail you can now drag & drop photos into the photo section to upload them
+- you can now attach photos to waypoints
+- you can now edit the "Distance", "Elevation Gain" and "Est. Duration" fields
+- waypoint markers can now be moved with drag & drop
+- lists can now be displayed as a map showing all trails contained in the list
+- you can now prevent users from signing up by setting the `DISABLE_SIGNUP` environment variable to `true`
+- you can now upload GPX files via the API to create trails. Check the [documentation](https://github.com/Flomp/wanderer/wiki/API#upload-trails) for more info.
+- the city index now includes states
+
+> Note: for city states to show up in your search you have to delete your data.ms folder if you already have a previous installation of wanderer. The indices will then be rebuilt on startup.
+
+## Docs
+
+- added complete API documentation
+
# v0.1.1
## Bug fixes
diff --git a/db/main.go b/db/main.go
index 54b8631f..2460edfe 100644
--- a/db/main.go
+++ b/db/main.go
@@ -115,6 +115,22 @@ func main() {
}
}
+ // bootstrap meilisearch
+ query = app.Dao().RecordQuery("trails")
+ trails := []*models.Record{}
+
+ if err := query.All(&trails); err != nil {
+ return err
+ }
+
+ for _, trail := range trails {
+ log.Println(trail)
+
+ if err := indexRecord(trail, client); err != nil {
+ return err
+ }
+ }
+
return nil
})
diff --git a/search/Dockerfile b/search/Dockerfile
index fec03b36..10e4ed0f 100644
--- a/search/Dockerfile
+++ b/search/Dockerfile
@@ -1,4 +1,4 @@
-FROM getmeili/meilisearch:v1.7
+FROM getmeili/meilisearch:v1.6.2
COPY ./migrations/migration.dump /meili_data/dumps/migration.dump
COPY ./entrypoint.sh /entrypoint.sh
diff --git a/web/src/lib/components/footer.svelte b/web/src/lib/components/footer.svelte
index dce13ba0..04c58732 100644
--- a/web/src/lib/components/footer.svelte
+++ b/web/src/lib/components/footer.svelte
@@ -12,6 +12,11 @@
Resources
+ -
+ API {$_("documentation")}
+
-
{$_("documentation")}) => ({
text: h.name,
- description: `${h.division} | ${
+ description: `${h.division ? `${h.division} | ` : ""}${
country_codes[h["country code"] as keyof typeof country_codes]
}`,
value: h,
diff --git a/web/src/lib/stores/trail_store.ts b/web/src/lib/stores/trail_store.ts
index 1efc7f5e..9de5df7e 100644
--- a/web/src/lib/stores/trail_store.ts
+++ b/web/src/lib/stores/trail_store.ts
@@ -203,7 +203,7 @@ export async function trails_create(trail: Trail, photos: File[], gpx: File | Bl
const model = await waypoints_create({
...waypoint,
marker: undefined,
- });
+ }, f);
trail.waypoints.push(model.id!);
}
for (const summitLog of trail.expand.summit_logs) {
diff --git a/web/src/lib/stores/waypoint_store.ts b/web/src/lib/stores/waypoint_store.ts
index fc218407..bb16f4fd 100644
--- a/web/src/lib/stores/waypoint_store.ts
+++ b/web/src/lib/stores/waypoint_store.ts
@@ -5,11 +5,11 @@ import { writable, type Writable } from "svelte/store";
export const waypoint: Writable = writable(new Waypoint(0, 0));
-export async function waypoints_create(waypoint: Waypoint) {
+export async function waypoints_create(waypoint: Waypoint, f: (url: RequestInfo | URL, config?: RequestInit) => Promise = fetch) {
waypoint.author = pb.authStore.model!.id
- let r = await fetch('/api/v1/waypoint', {
+ let r = await f('/api/v1/waypoint', {
method: 'PUT',
body: JSON.stringify(waypoint),
})
diff --git a/web/src/routes/+page.svelte b/web/src/routes/+page.svelte
index 693256f4..eb1c1856 100644
--- a/web/src/routes/+page.svelte
+++ b/web/src/routes/+page.svelte
@@ -47,7 +47,7 @@
const cityItems = response.results[1].hits.map(
(c: Record) => ({
text: c.name,
- description: `City | ${c.division} | ${
+ description: `City ${c.division ? `| ${c.division} ` : ""}| ${
country_codes[
c["country code"] as keyof typeof country_codes
]
diff --git a/web/src/routes/map/+page.svelte b/web/src/routes/map/+page.svelte
index b987e603..ef115c93 100644
--- a/web/src/routes/map/+page.svelte
+++ b/web/src/routes/map/+page.svelte
@@ -142,7 +142,7 @@
const cityItems = response.results[1].hits.map(
(c: Record) => ({
text: c.name,
- description: `City | ${c.division} | ${
+ description: `City ${c.division ? `| ${c.division} ` : ""}| ${
country_codes[
c["country code"] as keyof typeof country_codes
]
diff --git a/web/src/routes/profile/+page.svelte b/web/src/routes/profile/+page.svelte
index fb8ca886..71ab16c5 100644
--- a/web/src/routes/profile/+page.svelte
+++ b/web/src/routes/profile/+page.svelte
@@ -51,7 +51,7 @@
const result = await r.json();
searchDropdownItems = result.hits.map((h: Record) => ({
text: h.name,
- description: `${h.division} | ${
+ description: `${h.division ? `${h.division} | ` : ""}${
country_codes[h["country code"] as keyof typeof country_codes]
}`,
value: h,
diff --git a/web/static/docs/api/index.html b/web/static/docs/api/index.html
new file mode 100644
index 00000000..c066a6b5
--- /dev/null
+++ b/web/static/docs/api/index.html
@@ -0,0 +1,65 @@
+
+
+
+
+
+ API Documentation - Apidog
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/api/wanderer.openapi.json b/web/static/docs/api/wanderer.openapi.json
similarity index 99%
rename from docs/api/wanderer.openapi.json
rename to web/static/docs/api/wanderer.openapi.json
index a9e5ce59..531db52d 100644
--- a/docs/api/wanderer.openapi.json
+++ b/web/static/docs/api/wanderer.openapi.json
@@ -1 +1 @@
-{"openapi":"3.0.1","info":{"title":"wanderer","description":"","version":"1.0.0"},"tags":[],"paths":{"/category":{"get":{"summary":"list","deprecated":false,"description":"","tags":[],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"id":{"type":"string"},"img":{"type":"string"},"name":{"type":"string"},"updated":{"type":"string"}},"required":["collectionId","collectionName","created","id","img","name","updated"]}}}}}},"security":[]}},"/trail/{id}/file":{"post":{"summary":"file","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"multipart/form-data","schema":{"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"photos":{"format":"binary","type":"string"},"gpx":{"format":"binary","type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[]}},"/user/{id}/file":{"post":{"summary":"file","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"multipart/form-data","schema":{"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"avatar":{"format":"binary","type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[]}},"/list/{id}/file":{"post":{"summary":"file","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"multipart/form-data","schema":{"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"avatar":{"format":"binary","type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[]}},"/waypoint/{id}":{"get":{"summary":"show","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"id":{"type":"string"},"lat":{"type":"integer"},"lon":{"type":"integer"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","collectionId","collectionName","created","description","icon","id","lat","lon","name","photos","updated"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"post":{"summary":"update","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"application/json","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"id":{"type":"string"},"lat":{"type":"integer"},"lon":{"type":"integer"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","collectionId","collectionName","created","description","icon","id","lat","lon","name","photos","updated"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"delete":{"summary":"delete","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"acknowledged":{"type":"boolean"}},"required":["acknowledged"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/summit-log/{id}":{"get":{"summary":"show","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"date":{"type":"string"},"id":{"type":"string"},"text":{"type":"string"},"updated":{"type":"string"}},"required":["collectionId","collectionName","created","date","id","text","updated"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"post":{"summary":"update","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"application/json","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"date":{"type":"string"},"id":{"type":"string"},"text":{"type":"string"},"updated":{"type":"string"}},"required":["collectionId","collectionName","created","date","id","text","updated"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"delete":{"summary":"delete","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"acknowledged":{"type":"boolean"}},"required":["acknowledged"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/auth/login":{"post":{"summary":"login","deprecated":false,"description":"","tags":[],"parameters":[{"name":"Content-Type","in":"header","description":"","required":true,"example":"application/json","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"}},"required":["username","password"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"record":{"type":"object","properties":{"avatar":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"email":{"type":"string"},"emailVisibility":{"type":"boolean"},"id":{"type":"string"},"language":{"type":"string"},"location":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"name":{"type":"string"}},"required":["lat","lon","name"]},"token":{"type":"string"},"unit":{"type":"string"},"updated":{"type":"string"},"username":{"type":"string"},"verified":{"type":"boolean"}},"required":["avatar","collectionId","collectionName","created","email","emailVisibility","id","language","location","token","unit","updated","username","verified"]},"token":{"type":"string"}},"required":["record","token"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/trail/{id}":{"get":{"summary":"show","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string"},"category":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"difficulty":{"type":"string"},"distance":{"type":"integer"},"duration":{"type":"integer"},"elevation_gain":{"type":"integer"},"gpx":{"type":"string"},"id":{"type":"string"},"lat":{"type":"number"},"location":{"type":"string"},"lon":{"type":"number"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"summit_logs":{"type":"array","items":{"type":"string"}},"thumbnail":{"type":"integer"},"updated":{"type":"string"},"waypoints":{"type":"array","items":{"type":"string"}}},"required":["author","category","collectionId","collectionName","created","description","difficulty","distance","duration","elevation_gain","gpx","id","lat","location","lon","name","photos","public","summit_logs","thumbnail","updated","waypoints"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"post":{"summary":"update","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"application/json","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string"},"category":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"difficulty":{"type":"string"},"distance":{"type":"integer"},"duration":{"type":"integer"},"elevation_gain":{"type":"integer"},"expand":{"type":"object","properties":{"category":{"type":"object","properties":{"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"id":{"type":"string"},"img":{"type":"string"},"name":{"type":"string"},"updated":{"type":"string"}},"required":["collectionId","collectionName","created","id","img","name","updated"]},"waypoints":{"type":"array","items":{"type":"object","properties":{"author":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"id":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","collectionId","collectionName","created","description","icon","id","lat","lon","name","photos","updated"]}}},"required":["category","waypoints"]},"gpx":{"type":"string"},"id":{"type":"string"},"lat":{"type":"number"},"location":{"type":"string"},"lon":{"type":"number"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"summit_logs":{"type":"array","items":{"type":"string"}},"thumbnail":{"type":"integer"},"updated":{"type":"string"},"waypoints":{"type":"array","items":{"type":"string"}}},"required":["author","category","collectionId","collectionName","created","description","difficulty","distance","duration","elevation_gain","expand","gpx","id","lat","location","lon","name","photos","public","summit_logs","thumbnail","updated","waypoints"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"delete":{"summary":"delete","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"acknowledged":{"type":"boolean"}},"required":["acknowledged"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/user/{id}":{"get":{"summary":"show","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"avatar":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"email":{"type":"string"},"emailVisibility":{"type":"boolean"},"id":{"type":"string"},"language":{"type":"string"},"location":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"name":{"type":"string"}},"required":["lat","lon","name"]},"token":{"type":"string"},"unit":{"type":"string"},"updated":{"type":"string"},"username":{"type":"string"},"verified":{"type":"boolean"}},"required":["avatar","collectionId","collectionName","created","email","emailVisibility","id","language","location","token","unit","updated","username","verified"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"post":{"summary":"update","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"application/json","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"avatar":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"email":{"type":"string"},"emailVisibility":{"type":"boolean"},"id":{"type":"string"},"language":{"type":"string"},"location":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"name":{"type":"string"}},"required":["lat","lon","name"]},"token":{"type":"string"},"unit":{"type":"string"},"updated":{"type":"string"},"username":{"type":"string"},"verified":{"type":"boolean"}},"required":["avatar","collectionId","collectionName","created","email","emailVisibility","id","language","location","token","unit","updated","username","verified"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"delete":{"summary":"delete","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"acknowledged":{"type":"boolean"}},"required":["acknowledged"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/list/{id}":{"get":{"summary":"show","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[]},"post":{"summary":"update","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"application/json","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string"},"avatar":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"trails":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","avatar","collectionId","collectionName","created","description","id","name","trails","updated"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"delete":{"summary":"delete","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"acknowledged":{"type":"boolean"}},"required":["acknowledged"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/waypoint":{"get":{"summary":"list","deprecated":false,"description":"","tags":[],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"author":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"id":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","collectionId","collectionName","created","description","icon","id","lat","lon","name","photos","updated"]}}}}}},"security":[]},"put":{"summary":"create","deprecated":false,"description":"","tags":[],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"author":{"type":"string"},"lat":{"type":"integer"},"lon":{"type":"integer"},"icon":{"type":"string"}},"required":["lat","lon","author"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"id":{"type":"string"},"lat":{"type":"integer"},"lon":{"type":"integer"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","collectionId","collectionName","created","description","icon","id","lat","lon","name","photos","updated"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}},"x-400:Bad Request":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{"author":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["author"]}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{"author":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["author"]}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/summit-log":{"get":{"summary":"list","deprecated":false,"description":"","tags":[],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"date":{"type":"string"},"id":{"type":"string"},"text":{"type":"string"},"updated":{"type":"string"}}}}}}}},"security":[]},"put":{"summary":"create","deprecated":false,"description":"","tags":[],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string"},"text":{"type":"string"}},"required":["date","text"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"date":{"type":"string"},"id":{"type":"string"},"text":{"type":"string"},"updated":{"type":"string"}},"required":["collectionId","collectionName","created","date","id","text","updated"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}},"x-400:Bad Request":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{"author":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["author"]}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{"author":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["author"]}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/trail":{"get":{"summary":"list","deprecated":false,"description":"","tags":[],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"page":{"type":"integer"},"perPage":{"type":"integer"},"totalItems":{"type":"integer"},"totalPages":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"author":{"type":"string"},"category":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"difficulty":{"type":"string"},"distance":{"type":"integer"},"duration":{"type":"integer"},"elevation_gain":{"type":"integer"},"gpx":{"type":"string"},"id":{"type":"string"},"lat":{"type":"number"},"location":{"type":"string"},"lon":{"type":"number"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"summit_logs":{"type":"array","items":{"type":"string"}},"thumbnail":{"type":"integer"},"updated":{"type":"string"},"waypoints":{"type":"array","items":{"type":"string"}}},"required":["author","category","collectionId","collectionName","created","description","difficulty","distance","duration","elevation_gain","gpx","id","lat","location","lon","name","photos","public","summit_logs","thumbnail","updated","waypoints"]}}},"required":["page","perPage","totalItems","totalPages","items"]}}}}},"security":[]}},"/list":{"get":{"summary":"list","deprecated":false,"description":"","tags":[],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"author":{"type":"string"},"avatar":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"trails":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"},"expand":{"type":"object","properties":{"trails":{"type":"array","items":{"type":"object","properties":{"author":{"type":"string"},"category":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"difficulty":{"type":"string"},"distance":{"type":"integer"},"duration":{"type":"integer"},"elevation_gain":{"type":"integer"},"expand":{"type":"object","properties":{"category":{"type":"object","properties":{"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"id":{"type":"string"},"img":{"type":"string"},"name":{"type":"string"},"updated":{"type":"string"}},"required":["collectionId","collectionName","created","id","img","name","updated"]},"waypoints":{"type":"array","items":{"type":"object","properties":{"author":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"id":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","collectionId","collectionName","created","description","icon","id","lat","lon","name","photos","updated"]}}},"required":["category"]},"gpx":{"type":"string"},"id":{"type":"string"},"lat":{"type":"number"},"location":{"type":"string"},"lon":{"type":"number"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"summit_logs":{"type":"array","items":{"type":"string"}},"thumbnail":{"type":"integer"},"updated":{"type":"string"},"waypoints":{"type":"array","items":{"type":"string"}}},"required":["author","category","collectionId","collectionName","created","description","difficulty","distance","duration","elevation_gain","expand","gpx","id","lat","location","lon","name","photos","public","summit_logs","thumbnail","updated","waypoints"]}}},"required":["trails"]}},"required":["author","avatar","collectionId","collectionName","created","description","id","name","trails","updated"]}}}}}},"security":[]},"put":{"summary":"create","deprecated":false,"description":"","tags":[],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"author":{"type":"string"}},"required":["author","name"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string"},"avatar":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"trails":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","avatar","collectionId","collectionName","created","description","id","name","trails","updated"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/user":{"put":{"summary":"create","deprecated":false,"description":"","tags":[],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"},"passwordConfirm":{"type":"string"},"email":{"type":"string"}},"required":["username","password","passwordConfirm","email"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"avatar":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"emailVisibility":{"type":"boolean"},"id":{"type":"string"},"language":{"type":"string"},"location":{"type":"null"},"token":{"type":"string"},"unit":{"type":"string"},"updated":{"type":"string"},"username":{"type":"string"},"verified":{"type":"boolean"}},"required":["avatar","collectionId","collectionName","created","emailVisibility","id","language","location","token","unit","updated","username","verified"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{"passwordConfirm":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"username":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["passwordConfirm","username"]}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{"passwordConfirm":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"username":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["passwordConfirm","username"]}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/trail/upload":{"put":{"summary":"upload","deprecated":false,"description":"","tags":[],"parameters":[{"name":"Content-Type","in":"header","description":"","required":true,"example":"application/gpx+xml","schema":{"type":"string"}}],"requestBody":{"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"public":{"type":"boolean"},"difficulty":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"thumbnail":{"type":"integer"},"photos":{"type":"array","items":{"type":"string"}},"waypoints":{"type":"array","items":{"type":"string"}},"summit_logs":{"type":"array","items":{"type":"string"}},"expand":{"type":"object","properties":{"waypoints":{"type":"array","items":{"type":"string"}},"summit_logs":{"type":"array","items":{"type":"string"}}},"required":["waypoints","summit_logs"]},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"author":{"type":"string"}},"required":["name","public","difficulty","lat","lon","thumbnail","photos","waypoints","summit_logs","expand","tags","description","author"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"status":{"type":"integer"},"response":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}},"required":["status","response"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}}},"components":{"schemas":{},"securitySchemes":{}},"servers":[]}
\ No newline at end of file
+{"openapi":"3.0.1","info":{"title":"wanderer","description":"","version":"1.0.0"},"tags":[],"paths":{"/category":{"get":{"summary":"list","deprecated":false,"description":"","tags":[],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"id":{"type":"string"},"img":{"type":"string"},"name":{"type":"string"},"updated":{"type":"string"}},"required":["collectionId","collectionName","created","id","img","name","updated"]}}}}}},"security":[]}},"/trail/{id}/file":{"post":{"summary":"file","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"multipart/form-data","schema":{"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"photos":{"format":"binary","type":"string"},"gpx":{"format":"binary","type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[]}},"/user/{id}/file":{"post":{"summary":"file","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"multipart/form-data","schema":{"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"avatar":{"format":"binary","type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[]}},"/list/{id}/file":{"post":{"summary":"file","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"multipart/form-data","schema":{"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"avatar":{"format":"binary","type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[]}},"/waypoint/{id}":{"get":{"summary":"show","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"id":{"type":"string"},"lat":{"type":"integer"},"lon":{"type":"integer"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","collectionId","collectionName","created","description","icon","id","lat","lon","name","photos","updated"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"post":{"summary":"update","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"application/json","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"id":{"type":"string"},"lat":{"type":"integer"},"lon":{"type":"integer"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","collectionId","collectionName","created","description","icon","id","lat","lon","name","photos","updated"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"delete":{"summary":"delete","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"acknowledged":{"type":"boolean"}},"required":["acknowledged"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/summit-log/{id}":{"get":{"summary":"show","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"date":{"type":"string"},"id":{"type":"string"},"text":{"type":"string"},"updated":{"type":"string"}},"required":["collectionId","collectionName","created","date","id","text","updated"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"post":{"summary":"update","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"application/json","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"date":{"type":"string"},"id":{"type":"string"},"text":{"type":"string"},"updated":{"type":"string"}},"required":["collectionId","collectionName","created","date","id","text","updated"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"delete":{"summary":"delete","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"acknowledged":{"type":"boolean"}},"required":["acknowledged"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/auth/login":{"post":{"summary":"login","deprecated":false,"description":"","tags":[],"parameters":[{"name":"Content-Type","in":"header","description":"","required":true,"example":"application/json","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"}},"required":["username","password"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"record":{"type":"object","properties":{"avatar":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"email":{"type":"string"},"emailVisibility":{"type":"boolean"},"id":{"type":"string"},"language":{"type":"string"},"location":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"name":{"type":"string"}},"required":["lat","lon","name"]},"token":{"type":"string"},"unit":{"type":"string"},"updated":{"type":"string"},"username":{"type":"string"},"verified":{"type":"boolean"}},"required":["avatar","collectionId","collectionName","created","email","emailVisibility","id","language","location","token","unit","updated","username","verified"]},"token":{"type":"string"}},"required":["record","token"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/trail/{id}":{"get":{"summary":"show","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string"},"category":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"difficulty":{"type":"string"},"distance":{"type":"integer"},"duration":{"type":"integer"},"elevation_gain":{"type":"integer"},"gpx":{"type":"string"},"id":{"type":"string"},"lat":{"type":"number"},"location":{"type":"string"},"lon":{"type":"number"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"summit_logs":{"type":"array","items":{"type":"string"}},"thumbnail":{"type":"integer"},"updated":{"type":"string"},"waypoints":{"type":"array","items":{"type":"string"}}},"required":["author","category","collectionId","collectionName","created","description","difficulty","distance","duration","elevation_gain","gpx","id","lat","location","lon","name","photos","public","summit_logs","thumbnail","updated","waypoints"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"post":{"summary":"update","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"application/json","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string"},"category":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"difficulty":{"type":"string"},"distance":{"type":"integer"},"duration":{"type":"integer"},"elevation_gain":{"type":"integer"},"expand":{"type":"object","properties":{"category":{"type":"object","properties":{"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"id":{"type":"string"},"img":{"type":"string"},"name":{"type":"string"},"updated":{"type":"string"}},"required":["collectionId","collectionName","created","id","img","name","updated"]},"waypoints":{"type":"array","items":{"type":"object","properties":{"author":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"id":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","collectionId","collectionName","created","description","icon","id","lat","lon","name","photos","updated"]}}},"required":["category","waypoints"]},"gpx":{"type":"string"},"id":{"type":"string"},"lat":{"type":"number"},"location":{"type":"string"},"lon":{"type":"number"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"summit_logs":{"type":"array","items":{"type":"string"}},"thumbnail":{"type":"integer"},"updated":{"type":"string"},"waypoints":{"type":"array","items":{"type":"string"}}},"required":["author","category","collectionId","collectionName","created","description","difficulty","distance","duration","elevation_gain","expand","gpx","id","lat","location","lon","name","photos","public","summit_logs","thumbnail","updated","waypoints"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"delete":{"summary":"delete","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"acknowledged":{"type":"boolean"}},"required":["acknowledged"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/user/{id}":{"get":{"summary":"show","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"avatar":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"email":{"type":"string"},"emailVisibility":{"type":"boolean"},"id":{"type":"string"},"language":{"type":"string"},"location":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"name":{"type":"string"}},"required":["lat","lon","name"]},"token":{"type":"string"},"unit":{"type":"string"},"updated":{"type":"string"},"username":{"type":"string"},"verified":{"type":"boolean"}},"required":["avatar","collectionId","collectionName","created","email","emailVisibility","id","language","location","token","unit","updated","username","verified"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"post":{"summary":"update","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"application/json","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"avatar":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"email":{"type":"string"},"emailVisibility":{"type":"boolean"},"id":{"type":"string"},"language":{"type":"string"},"location":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"name":{"type":"string"}},"required":["lat","lon","name"]},"token":{"type":"string"},"unit":{"type":"string"},"updated":{"type":"string"},"username":{"type":"string"},"verified":{"type":"boolean"}},"required":["avatar","collectionId","collectionName","created","email","emailVisibility","id","language","location","token","unit","updated","username","verified"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"delete":{"summary":"delete","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"acknowledged":{"type":"boolean"}},"required":["acknowledged"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/list/{id}":{"get":{"summary":"show","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[]},"post":{"summary":"update","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"example":"application/json","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string"},"avatar":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"trails":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","avatar","collectionId","collectionName","created","description","id","name","trails","updated"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]},"delete":{"summary":"delete","deprecated":false,"description":"","tags":[],"parameters":[{"name":"id","in":"path","description":"","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"acknowledged":{"type":"boolean"}},"required":["acknowledged"]}}}},"404":{"description":"Record Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/waypoint":{"get":{"summary":"list","deprecated":false,"description":"","tags":[],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"author":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"id":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","collectionId","collectionName","created","description","icon","id","lat","lon","name","photos","updated"]}}}}}},"security":[]},"put":{"summary":"create","deprecated":false,"description":"","tags":[],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"author":{"type":"string"},"lat":{"type":"integer"},"lon":{"type":"integer"},"icon":{"type":"string"}},"required":["lat","lon","author"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"id":{"type":"string"},"lat":{"type":"integer"},"lon":{"type":"integer"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","collectionId","collectionName","created","description","icon","id","lat","lon","name","photos","updated"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}},"x-400:Bad Request":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{"author":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["author"]}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{"author":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["author"]}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/summit-log":{"get":{"summary":"list","deprecated":false,"description":"","tags":[],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"date":{"type":"string"},"id":{"type":"string"},"text":{"type":"string"},"updated":{"type":"string"}}}}}}}},"security":[]},"put":{"summary":"create","deprecated":false,"description":"","tags":[],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string"},"text":{"type":"string"}},"required":["date","text"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"date":{"type":"string"},"id":{"type":"string"},"text":{"type":"string"},"updated":{"type":"string"}},"required":["collectionId","collectionName","created","date","id","text","updated"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}},"x-400:Bad Request":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{"author":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["author"]}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{"author":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["author"]}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/trail":{"get":{"summary":"list","deprecated":false,"description":"","tags":[],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"page":{"type":"integer"},"perPage":{"type":"integer"},"totalItems":{"type":"integer"},"totalPages":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"author":{"type":"string"},"category":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"difficulty":{"type":"string"},"distance":{"type":"integer"},"duration":{"type":"integer"},"elevation_gain":{"type":"integer"},"gpx":{"type":"string"},"id":{"type":"string"},"lat":{"type":"number"},"location":{"type":"string"},"lon":{"type":"number"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"summit_logs":{"type":"array","items":{"type":"string"}},"thumbnail":{"type":"integer"},"updated":{"type":"string"},"waypoints":{"type":"array","items":{"type":"string"}}},"required":["author","category","collectionId","collectionName","created","description","difficulty","distance","duration","elevation_gain","gpx","id","lat","location","lon","name","photos","public","summit_logs","thumbnail","updated","waypoints"]}}},"required":["page","perPage","totalItems","totalPages","items"]}}}}},"security":[]}},"/list":{"get":{"summary":"list","deprecated":false,"description":"","tags":[],"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"author":{"type":"string"},"avatar":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"trails":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"},"expand":{"type":"object","properties":{"trails":{"type":"array","items":{"type":"object","properties":{"author":{"type":"string"},"category":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"difficulty":{"type":"string"},"distance":{"type":"integer"},"duration":{"type":"integer"},"elevation_gain":{"type":"integer"},"expand":{"type":"object","properties":{"category":{"type":"object","properties":{"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"id":{"type":"string"},"img":{"type":"string"},"name":{"type":"string"},"updated":{"type":"string"}},"required":["collectionId","collectionName","created","id","img","name","updated"]},"waypoints":{"type":"array","items":{"type":"object","properties":{"author":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"id":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","collectionId","collectionName","created","description","icon","id","lat","lon","name","photos","updated"]}}},"required":["category"]},"gpx":{"type":"string"},"id":{"type":"string"},"lat":{"type":"number"},"location":{"type":"string"},"lon":{"type":"number"},"name":{"type":"string"},"photos":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"summit_logs":{"type":"array","items":{"type":"string"}},"thumbnail":{"type":"integer"},"updated":{"type":"string"},"waypoints":{"type":"array","items":{"type":"string"}}},"required":["author","category","collectionId","collectionName","created","description","difficulty","distance","duration","elevation_gain","expand","gpx","id","lat","location","lon","name","photos","public","summit_logs","thumbnail","updated","waypoints"]}}},"required":["trails"]}},"required":["author","avatar","collectionId","collectionName","created","description","id","name","trails","updated"]}}}}}},"security":[]},"put":{"summary":"create","deprecated":false,"description":"","tags":[],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"author":{"type":"string"}},"required":["author","name"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"author":{"type":"string"},"avatar":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"trails":{"type":"array","items":{"type":"string"}},"updated":{"type":"string"}},"required":["author","avatar","collectionId","collectionName","created","description","id","name","trails","updated"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{}}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/user":{"put":{"summary":"create","deprecated":false,"description":"","tags":[],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"},"passwordConfirm":{"type":"string"},"email":{"type":"string"}},"required":["username","password","passwordConfirm","email"]},"example":""}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"avatar":{"type":"string"},"collectionId":{"type":"string"},"collectionName":{"type":"string"},"created":{"type":"string"},"emailVisibility":{"type":"boolean"},"id":{"type":"string"},"language":{"type":"string"},"location":{"type":"null"},"token":{"type":"string"},"unit":{"type":"string"},"updated":{"type":"string"},"username":{"type":"string"},"verified":{"type":"boolean"}},"required":["avatar","collectionId","collectionName","created","emailVisibility","id","language","location","token","unit","updated","username","verified"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{"passwordConfirm":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"username":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["passwordConfirm","username"]}},"required":["code","message","data"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"data":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","properties":{"passwordConfirm":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"username":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["passwordConfirm","username"]}},"required":["code","message","data"]}},"required":["url","status","data"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}},"/trail/upload":{"put":{"summary":"upload","deprecated":false,"description":"","tags":[],"parameters":[{"name":"Content-Type","in":"header","description":"","required":true,"example":"application/gpx+xml","schema":{"type":"string"}}],"requestBody":{"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"public":{"type":"boolean"},"difficulty":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"thumbnail":{"type":"integer"},"photos":{"type":"array","items":{"type":"string"}},"waypoints":{"type":"array","items":{"type":"string"}},"summit_logs":{"type":"array","items":{"type":"string"}},"expand":{"type":"object","properties":{"waypoints":{"type":"array","items":{"type":"string"}},"summit_logs":{"type":"array","items":{"type":"string"}}},"required":["waypoints","summit_logs"]},"tags":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"author":{"type":"string"}},"required":["name","public","difficulty","lat","lon","thumbnail","photos","waypoints","summit_logs","expand","tags","description","author"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"integer"},"response":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"isAbort":{"type":"boolean"},"originalError":{"type":"object","properties":{"status":{"type":"integer"},"response":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}},"required":["status","response"]},"name":{"type":"string"}},"required":["url","status","response","isAbort","originalError","name"]}}}}},"security":[]}}},"components":{"schemas":{},"securitySchemes":{}},"servers":[{"url":"http://localhost:3000","description":"Prod Env"}]}
\ No newline at end of file