more docs

This commit is contained in:
Christian Beutel
2024-06-10 21:15:15 +02:00
parent f23eb03eb9
commit 56d5e96069
34 changed files with 3403 additions and 24 deletions

View File

@@ -7,7 +7,7 @@ import svelte from "@astrojs/svelte";
// https://astro.build/config
export default defineConfig({
integrations: [starlight({
title: 'Docs with Tailwind',
title: 'wanderer Documentation',
logo: {
light: '/src/assets/logo_dark_text.svg',
dark: '/src/assets/logo_light_text.svg',
@@ -22,15 +22,53 @@ export default defineConfig({
sidebar: [{
label: 'Getting Started',
items: [
// Each item here is one entry in the navigation menu.
{
label: 'Installation',
link: '/getting-started/installation/'
}]
}, {
label: 'Reference',
},
{
label: 'Configuration',
link: '/getting-started/configuration/'
},
{
label: 'Local development',
link: '/getting-started/local-development/'
}
]
},
{
label: 'Guides',
items: [
{
label: 'Authentication',
link: '/guides/authentication/'
},
{
label: 'Create a trail',
link: '/guides/create-a-trail/'
},
{
label: 'Share trails',
link: '/guides/share-trails/'
},
{
label: 'Lists',
link: '/guides/lists/'
},
{
label: 'Import/Export',
link: '/guides/import-export/'
},
{
label: 'API',
link: '/guides/api/'
},
]
},
{
label: 'API Reference',
autogenerate: {
directory: 'reference'
directory: 'api-reference'
}
}],
customCss: ['./src/custom.css', './src/tailwind.css', '@fontsource/ibm-plex-sans/400.css', '@fontsource/ibm-plex-sans/600.css', '@fontsource/ibm-plex-mono/400.css', '@fontsource/ibm-plex-mono/600.css']

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 662 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 882 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 435 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

View File

@@ -0,0 +1,110 @@
---
title: auth
---
# auth
## POST login
POST /auth/login
> Body Parameters
```json
{
"username": "string",
"password": "string"
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|Content-Type|header|string| yes |none|
|body|body|object| no |none|
|» username|body|string| yes |none|
|» password|body|string| yes |none|
> Response Examples
> 200 Response
```json
{
"record": {
"avatar": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"email": "string",
"emailVisibility": true,
"id": "string",
"language": "string",
"location": {
"lat": 0,
"lon": 0,
"name": "string"
},
"token": "string",
"unit": "string",
"updated": "string",
"username": "string",
"verified": true
},
"token": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» record|object|true|none||none|
|»» avatar|string|true|none||none|
|»» collectionId|string|true|none||none|
|»» collectionName|string|true|none||none|
|»» created|string|true|none||none|
|»» email|string|true|none||none|
|»» emailVisibility|boolean|true|none||none|
|»» id|string|true|none||none|
|»» language|string|true|none||none|
|»» location|object|true|none||none|
|»»» lat|number|true|none||none|
|»»» lon|number|true|none||none|
|»»» name|string|true|none||none|
|»» token|string|true|none||none|
|»» unit|string|true|none||none|
|»» updated|string|true|none||none|
|»» username|string|true|none||none|
|»» verified|boolean|true|none||none|
|» token|string|true|none||none|
HTTP Status Code **400**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|

View File

@@ -0,0 +1,45 @@
---
title: category
---
## GET list
GET /category
> Response Examples
> 200 Response
```json
[
{
"collectionId": "string",
"collectionName": "string",
"created": "string",
"id": "string",
"img": "string",
"name": "string",
"updated": "string"
}
]
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» id|string|true|none||none|
|» img|string|true|none||none|
|» name|string|true|none||none|
|» updated|string|true|none||none|

View File

@@ -0,0 +1,401 @@
---
title: comment
---
## GET show
GET /comment/{id}
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
> Response Examples
> 200 Response
```json
{
"author": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"expand": {
"author": {
"avatar": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"email": "string",
"emailVisibility": true,
"id": "string",
"token": "string",
"updated": "string",
"username": "string",
"verified": true
}
},
"id": "string",
"rating": 0,
"text": "string",
"trail": "string",
"updated": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» author|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» expand|object|true|none||none|
|»» author|object|true|none||none|
|»»» avatar|string|true|none||none|
|»»» collectionId|string|true|none||none|
|»»» collectionName|string|true|none||none|
|»»» created|string|true|none||none|
|»»» email|string|true|none||none|
|»»» emailVisibility|boolean|true|none||none|
|»»» id|string|true|none||none|
|»»» token|string|true|none||none|
|»»» updated|string|true|none||none|
|»»» username|string|true|none||none|
|»»» verified|boolean|true|none||none|
|» id|string|true|none||none|
|» rating|integer|true|none||none|
|» text|string|true|none||none|
|» trail|string|true|none||none|
|» updated|string|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## POST update
POST /comment/{id}
> Body Parameters
```json
{
"text": "string",
"trail": "string",
"author": "string"
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
|Content-Type|header|string| yes |none|
|body|body|object| no |none|
|» text|body|string| yes |none|
|» trail|body|string| yes |none|
|» author|body|string| yes |none|
> Response Examples
> 200 Response
```json
{
"author": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"id": "string",
"rating": 0,
"text": "string",
"trail": "string",
"updated": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» author|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» id|string|true|none||none|
|» rating|integer|true|none||none|
|» text|string|true|none||none|
|» trail|string|true|none||none|
|» updated|string|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## DELETE delete
DELETE /comment/{id}
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
> Response Examples
> 200 Response
```json
{
"acknowledged": true
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» acknowledged|boolean|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## GET list
GET /comment
> Response Examples
> 200 Response
```json
[
{
"author": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"expand": {
"author": {
"avatar": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"email": "string",
"emailVisibility": true,
"id": "string",
"token": "string",
"updated": "string",
"username": "string",
"verified": true
}
},
"id": "string",
"rating": 0,
"text": "string",
"trail": "string",
"updated": "string"
}
]
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» author|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» expand|object|true|none||none|
|»» author|object|true|none||none|
|»»» avatar|string|true|none||none|
|»»» collectionId|string|true|none||none|
|»»» collectionName|string|true|none||none|
|»»» created|string|false|none||none|
|»»» email|string|false|none||none|
|»»» emailVisibility|boolean|false|none||none|
|»»» id|string|true|none||none|
|»»» token|string|false|none||none|
|»»» updated|string|false|none||none|
|»»» username|string|true|none||none|
|»»» verified|boolean|false|none||none|
|» id|string|true|none||none|
|» rating|integer|true|none||none|
|» text|string|true|none||none|
|» trail|string|true|none||none|
|» updated|string|true|none||none|
## PUT create
PUT /comment
> Body Parameters
```json
{
"author": "string",
"text": "string",
"trail": "string"
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|body|body|object| no |none|
|» author|body|string| yes |none|
|» text|body|string| yes |none|
|» trail|body|string| yes |none|
> Response Examples
> 200 Response
```json
{
"author": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"id": "string",
"rating": 0,
"text": "string",
"trail": "string",
"updated": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» author|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» id|string|true|none||none|
|» rating|integer|true|none||none|
|» text|string|true|none||none|
|» trail|string|true|none||none|
|» updated|string|true|none||none|
HTTP Status Code **400**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|

View File

@@ -0,0 +1,449 @@
---
title: list
---
## POST file
POST /list/{id}/file
> Body Parameters
```yaml
avatar: string
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
|Content-Type|header|string| yes |none|
|body|body|object| no |none|
|» avatar|body|string(binary)| no |none|
> Response Examples
> 200 Response
```json
{}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Success|Inline|
### Responses Data Schema
## GET show
GET /list/{id}
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
> Response Examples
> 200 Response
```json
{}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Success|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## POST update
POST /list/{id}
> Body Parameters
```json
{
"name": "string"
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
|Content-Type|header|string| yes |none|
|body|body|object| no |none|
|» name|body|string| yes |none|
> Response Examples
> 200 Response
```json
{
"author": "string",
"avatar": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"description": "string",
"id": "string",
"name": "string",
"trails": [
"string"
],
"updated": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» author|string|true|none||none|
|» avatar|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» description|string|true|none||none|
|» id|string|true|none||none|
|» name|string|true|none||none|
|» trails|[string]|true|none||none|
|» updated|string|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## DELETE delete
DELETE /list/{id}
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
> Response Examples
> 200 Response
```json
{
"acknowledged": true
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» acknowledged|boolean|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## GET list
GET /list
> Response Examples
> 200 Response
```json
[
{
"author": "string",
"avatar": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"description": "string",
"id": "string",
"name": "string",
"trails": [
"string"
],
"updated": "string",
"expand": {
"trails": [
{
"author": "string",
"category": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"description": "string",
"difficulty": "string",
"distance": 0,
"duration": 0,
"elevation_gain": 0,
"expand": {
"category": null,
"waypoints": null
},
"gpx": "string",
"id": "string",
"lat": 0,
"location": "string",
"lon": 0,
"name": "string",
"photos": [
"string"
],
"public": true,
"summit_logs": [
"string"
],
"thumbnail": 0,
"updated": "string",
"waypoints": [
"string"
]
}
]
}
}
]
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» author|string|true|none||none|
|» avatar|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» description|string|true|none||none|
|» id|string|true|none||none|
|» name|string|true|none||none|
|» trails|[string]|true|none||none|
|» updated|string|true|none||none|
|» expand|object|false|none||none|
|»» trails|[object]|true|none||none|
|»»» author|string|true|none||none|
|»»» category|string|true|none||none|
|»»» collectionId|string|true|none||none|
|»»» collectionName|string|true|none||none|
|»»» created|string|true|none||none|
|»»» description|string|true|none||none|
|»»» difficulty|string|true|none||none|
|»»» distance|integer|true|none||none|
|»»» duration|integer|true|none||none|
|»»» elevation_gain|integer|true|none||none|
|»»» expand|object|true|none||none|
|»»»» category|object|true|none||none|
|»»»»» collectionId|string|true|none||none|
|»»»»» collectionName|string|true|none||none|
|»»»»» created|string|true|none||none|
|»»»»» id|string|true|none||none|
|»»»»» img|string|true|none||none|
|»»»»» name|string|true|none||none|
|»»»»» updated|string|true|none||none|
|»»»» waypoints|[object]|false|none||none|
|»»»»» author|string|true|none||none|
|»»»»» collectionId|string|true|none||none|
|»»»»» collectionName|string|true|none||none|
|»»»»» created|string|true|none||none|
|»»»»» description|string|true|none||none|
|»»»»» icon|string|true|none||none|
|»»»»» id|string|true|none||none|
|»»»»» lat|number|true|none||none|
|»»»»» lon|number|true|none||none|
|»»»»» name|string|true|none||none|
|»»»»» photos|[string]|true|none||none|
|»»»»» updated|string|true|none||none|
|»»» gpx|string|true|none||none|
|»»» id|string|true|none||none|
|»»» lat|number|true|none||none|
|»»» location|string|true|none||none|
|»»» lon|number|true|none||none|
|»»» name|string|true|none||none|
|»»» photos|[string]|true|none||none|
|»»» public|boolean|true|none||none|
|»»» summit_logs|[string]|true|none||none|
|»»» thumbnail|integer|true|none||none|
|»»» updated|string|true|none||none|
|»»» waypoints|[string]|true|none||none|
## PUT create
PUT /list
> Body Parameters
```json
{
"name": "string",
"description": "string",
"author": "string"
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|body|body|object| no |none|
|» name|body|string| yes |none|
|» description|body|string| no |none|
|» author|body|string| yes |none|
> Response Examples
> 200 Response
```json
{
"author": "string",
"avatar": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"description": "string",
"id": "string",
"name": "string",
"trails": [
"string"
],
"updated": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» author|string|true|none||none|
|» avatar|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» description|string|true|none||none|
|» id|string|true|none||none|
|» name|string|true|none||none|
|» trails|[string]|true|none||none|
|» updated|string|true|none||none|
HTTP Status Code **400**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|

View File

@@ -0,0 +1,323 @@
---
title: summit-log
---
## GET show
GET /summit-log/{id}
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
> Response Examples
> 200 Response
```json
{
"collectionId": "string",
"collectionName": "string",
"created": "string",
"date": "string",
"id": "string",
"text": "string",
"updated": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» date|string|true|none||none|
|» id|string|true|none||none|
|» text|string|true|none||none|
|» updated|string|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## POST update
POST /summit-log/{id}
> Body Parameters
```json
{
"name": "string"
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
|Content-Type|header|string| yes |none|
|body|body|object| no |none|
|» name|body|string| yes |none|
> Response Examples
> 200 Response
```json
{
"collectionId": "string",
"collectionName": "string",
"created": "string",
"date": "string",
"id": "string",
"text": "string",
"updated": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» date|string|true|none||none|
|» id|string|true|none||none|
|» text|string|true|none||none|
|» updated|string|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## DELETE delete
DELETE /summit-log/{id}
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
> Response Examples
> 200 Response
```json
{
"acknowledged": true
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» acknowledged|boolean|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## GET list
GET /summit-log
> Response Examples
> 200 Response
```json
[
{
"collectionId": "string",
"collectionName": "string",
"created": "string",
"date": "string",
"id": "string",
"text": "string",
"updated": "string"
}
]
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» collectionId|string|false|none||none|
|» collectionName|string|false|none||none|
|» created|string|false|none||none|
|» date|string|false|none||none|
|» id|string|false|none||none|
|» text|string|false|none||none|
|» updated|string|false|none||none|
## PUT create
PUT /summit-log
> Body Parameters
```json
{
"date": "string",
"text": "string"
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|body|body|object| no |none|
|» date|body|string| yes |none|
|» text|body|string| yes |none|
> Response Examples
> 200 Response
```json
{
"collectionId": "string",
"collectionName": "string",
"created": "string",
"date": "string",
"id": "string",
"text": "string",
"updated": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» date|string|true|none||none|
|» id|string|true|none||none|
|» text|string|true|none||none|
|» updated|string|true|none||none|
HTTP Status Code **400**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|

View File

@@ -0,0 +1,367 @@
---
title: trail-share
---
## GET show
GET /trail-share/{id}
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
> Response Examples
> 200 Response
```json
{
"collectionId": "string",
"collectionName": "string",
"created": "string",
"id": "string",
"permission": "string",
"trail": "string",
"updated": "string",
"user": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» id|string|true|none||none|
|» permission|string|true|none||none|
|» trail|string|true|none||none|
|» updated|string|true|none||none|
|» user|string|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## POST update
POST /trail-share/{id}
> Body Parameters
```json
{
"trail": "string",
"user": "string",
"permission": "view"
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
|Content-Type|header|string| yes |none|
|body|body|object| no |none|
|» trail|body|string| yes |none|
|» user|body|string| yes |none|
|» permission|body|string| yes |none|
#### Enum
|Name|Value|
|---|---|
|» permission|view|
|» permission|edit|
> Response Examples
> 200 Response
```json
{
"collectionId": "string",
"collectionName": "string",
"created": "string",
"id": "string",
"permission": "string",
"trail": "string",
"updated": "string",
"user": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» id|string|true|none||none|
|» permission|string|true|none||none|
|» trail|string|true|none||none|
|» updated|string|true|none||none|
|» user|string|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## DELETE delete
DELETE /trail-share/{id}
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
> Response Examples
> 200 Response
```json
{
"acknowledged": true
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» acknowledged|boolean|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## GET list
GET /trail-share
> Response Examples
> 200 Response
```json
[
{
"collectionId": "string",
"collectionName": "string",
"created": "string",
"id": "string",
"permission": "string",
"trail": "string",
"updated": "string",
"user": "string",
"expand": {
"user": {
"avatar": "string",
"collectionId": "string",
"collectionName": "string",
"id": "string",
"username": "string"
}
}
}
]
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» id|string|true|none||none|
|» permission|string|true|none||none|
|» trail|string|true|none||none|
|» updated|string|true|none||none|
|» user|string|true|none||none|
|» expand|object|true|none||none|
|»» user|object|true|none||none|
|»»» avatar|string|true|none||none|
|»»» collectionId|string|true|none||none|
|»»» collectionName|string|true|none||none|
|»»» id|string|true|none||none|
|»»» username|string|true|none||none|
## PUT create
PUT /trail-share
> Body Parameters
```json
{
"trail": "string",
"user": "string",
"permission": "view"
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|body|body|object| no |none|
|» trail|body|string| yes |none|
|» user|body|string| yes |none|
|» permission|body|string| yes |none|
#### Enum
|Name|Value|
|---|---|
|» permission|view|
|» permission|edit|
> Response Examples
> 200 Response
```json
{
"collectionId": "string",
"collectionName": "string",
"created": "string",
"id": "string",
"permission": "string",
"trail": "string",
"updated": "string",
"user": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» id|string|true|none||none|
|» permission|string|true|none||none|
|» trail|string|true|none||none|
|» updated|string|true|none||none|
|» user|string|true|none||none|
HTTP Status Code **400**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|

View File

@@ -0,0 +1,552 @@
---
title: trail
---
## POST file
POST /trail/{id}/file
> Body Parameters
```yaml
photos: string
gpx: string
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
|Content-Type|header|string| yes |none|
|body|body|object| no |none|
|» photos|body|string(binary)| no |none|
|» gpx|body|string(binary)| no |none|
> Response Examples
> 200 Response
```json
{}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Success|Inline|
### Responses Data Schema
## GET show
GET /trail/{id}
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
> Response Examples
> 200 Response
```json
{
"author": "string",
"category": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"description": "string",
"difficulty": "string",
"distance": 0,
"duration": 0,
"elevation_gain": 0,
"gpx": "string",
"id": "string",
"lat": 0,
"location": "string",
"lon": 0,
"name": "string",
"photos": [
"string"
],
"public": true,
"summit_logs": [
"string"
],
"thumbnail": 0,
"updated": "string",
"waypoints": [
"string"
]
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» author|string|true|none||none|
|» category|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» description|string|true|none||none|
|» difficulty|string|true|none||none|
|» distance|integer|true|none||none|
|» duration|integer|true|none||none|
|» elevation_gain|integer|true|none||none|
|» gpx|string|true|none||none|
|» id|string|true|none||none|
|» lat|number|true|none||none|
|» location|string|true|none||none|
|» lon|number|true|none||none|
|» name|string|true|none||none|
|» photos|[string]|true|none||none|
|» public|boolean|true|none||none|
|» summit_logs|[string]|true|none||none|
|» thumbnail|integer|true|none||none|
|» updated|string|true|none||none|
|» waypoints|[string]|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## POST update
POST /trail/{id}
> Body Parameters
```json
{
"name": "string"
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
|Content-Type|header|string| yes |none|
|body|body|object| no |none|
|» name|body|string| yes |none|
> Response Examples
> 200 Response
```json
{
"author": "string",
"category": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"description": "string",
"difficulty": "string",
"distance": 0,
"duration": 0,
"elevation_gain": 0,
"expand": {
"category": {
"collectionId": "string",
"collectionName": "string",
"created": "string",
"id": "string",
"img": "string",
"name": "string",
"updated": "string"
},
"waypoints": [
{
"author": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"description": "string",
"icon": "string",
"id": "string",
"lat": 0,
"lon": 0,
"name": "string",
"photos": [
"string"
],
"updated": "string"
}
]
},
"gpx": "string",
"id": "string",
"lat": 0,
"location": "string",
"lon": 0,
"name": "string",
"photos": [
"string"
],
"public": true,
"summit_logs": [
"string"
],
"thumbnail": 0,
"updated": "string",
"waypoints": [
"string"
]
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» author|string|true|none||none|
|» category|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» description|string|true|none||none|
|» difficulty|string|true|none||none|
|» distance|integer|true|none||none|
|» duration|integer|true|none||none|
|» elevation_gain|integer|true|none||none|
|» expand|object|true|none||none|
|»» category|object|true|none||none|
|»»» collectionId|string|true|none||none|
|»»» collectionName|string|true|none||none|
|»»» created|string|true|none||none|
|»»» id|string|true|none||none|
|»»» img|string|true|none||none|
|»»» name|string|true|none||none|
|»»» updated|string|true|none||none|
|»» waypoints|[object]|true|none||none|
|»»» author|string|true|none||none|
|»»» collectionId|string|true|none||none|
|»»» collectionName|string|true|none||none|
|»»» created|string|true|none||none|
|»»» description|string|true|none||none|
|»»» icon|string|true|none||none|
|»»» id|string|true|none||none|
|»»» lat|number|true|none||none|
|»»» lon|number|true|none||none|
|»»» name|string|true|none||none|
|»»» photos|[string]|true|none||none|
|»»» updated|string|true|none||none|
|» gpx|string|true|none||none|
|» id|string|true|none||none|
|» lat|number|true|none||none|
|» location|string|true|none||none|
|» lon|number|true|none||none|
|» name|string|true|none||none|
|» photos|[string]|true|none||none|
|» public|boolean|true|none||none|
|» summit_logs|[string]|true|none||none|
|» thumbnail|integer|true|none||none|
|» updated|string|true|none||none|
|» waypoints|[string]|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## DELETE delete
DELETE /trail/{id}
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
> Response Examples
> 200 Response
```json
{
"acknowledged": true
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» acknowledged|boolean|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## GET list
GET /trail
> Response Examples
> 200 Response
```json
{
"page": 0,
"perPage": 0,
"totalItems": 0,
"totalPages": 0,
"items": [
{
"author": "string",
"category": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"description": "string",
"difficulty": "string",
"distance": 0,
"duration": 0,
"elevation_gain": 0,
"gpx": "string",
"id": "string",
"lat": 0,
"location": "string",
"lon": 0,
"name": "string",
"photos": [
"string"
],
"public": true,
"summit_logs": [
"string"
],
"thumbnail": 0,
"updated": "string",
"waypoints": [
"string"
]
}
]
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» page|integer|true|none||none|
|» perPage|integer|true|none||none|
|» totalItems|integer|true|none||none|
|» totalPages|integer|true|none||none|
|» items|[object]|true|none||none|
|»» author|string|true|none||none|
|»» category|string|true|none||none|
|»» collectionId|string|true|none||none|
|»» collectionName|string|true|none||none|
|»» created|string|true|none||none|
|»» description|string|true|none||none|
|»» difficulty|string|true|none||none|
|»» distance|integer|true|none||none|
|»» duration|integer|true|none||none|
|»» elevation_gain|integer|true|none||none|
|»» gpx|string|true|none||none|
|»» id|string|true|none||none|
|»» lat|number|true|none||none|
|»» location|string|true|none||none|
|»» lon|number|true|none||none|
|»» name|string|true|none||none|
|»» photos|[string]|true|none||none|
|»» public|boolean|true|none||none|
|»» summit_logs|[string]|true|none||none|
|»» thumbnail|integer|true|none||none|
|»» updated|string|true|none||none|
|»» waypoints|[string]|true|none||none|
## PUT upload
PUT /trail/upload
> Body Parameters
```yaml
string
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|Content-Type|header|string| yes |none|
|body|body|string(binary)| no |none|
> Response Examples
> 200 Response
```json
{
"name": "string",
"public": true,
"difficulty": "string",
"lat": 0,
"lon": 0,
"thumbnail": 0,
"photos": [
"string"
],
"waypoints": [
"string"
],
"summit_logs": [
"string"
],
"expand": {
"waypoints": [
"string"
],
"summit_logs": [
"string"
]
},
"tags": [
"string"
],
"description": "string",
"author": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» name|string|true|none||none|
|» public|boolean|true|none||none|
|» difficulty|string|true|none||none|
|» lat|number|true|none||none|
|» lon|number|true|none||none|
|» thumbnail|integer|true|none||none|
|» photos|[string]|true|none||none|
|» waypoints|[string]|true|none||none|
|» summit_logs|[string]|true|none||none|
|» expand|object|true|none||none|
|»» waypoints|[string]|true|none||none|
|»» summit_logs|[string]|true|none||none|
|» tags|[string]|true|none||none|
|» description|string|true|none||none|
|» author|string|true|none||none|
HTTP Status Code **400**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» message|string|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» status|integer|true|none||none|
|»» response|object|true|none||none|
|»»» message|string|true|none||none|
|» name|string|true|none||none|

View File

@@ -0,0 +1,384 @@
---
title: user
---
## POST file
POST /user/{id}/file
> Body Parameters
```yaml
avatar: string
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
|Content-Type|header|string| yes |none|
|body|body|object| no |none|
|» avatar|body|string(binary)| no |none|
> Response Examples
> 200 Response
```json
{}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Success|Inline|
### Responses Data Schema
## GET show
GET /user/{id}
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
> Response Examples
> 200 Response
```json
{
"avatar": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"email": "string",
"emailVisibility": true,
"id": "string",
"language": "string",
"location": {
"lat": 0,
"lon": 0,
"name": "string"
},
"token": "string",
"unit": "string",
"updated": "string",
"username": "string",
"verified": true
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» avatar|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» email|string|true|none||none|
|» emailVisibility|boolean|true|none||none|
|» id|string|true|none||none|
|» language|string|true|none||none|
|» location|object|true|none||none|
|»» lat|number|true|none||none|
|»» lon|number|true|none||none|
|»» name|string|true|none||none|
|» token|string|true|none||none|
|» unit|string|true|none||none|
|» updated|string|true|none||none|
|» username|string|true|none||none|
|» verified|boolean|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## POST update
POST /user/{id}
> Body Parameters
```json
{}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
|Content-Type|header|string| yes |none|
|body|body|object| no |none|
> Response Examples
> 200 Response
```json
{
"avatar": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"email": "string",
"emailVisibility": true,
"id": "string",
"language": "string",
"location": {
"lat": 0,
"lon": 0,
"name": "string"
},
"token": "string",
"unit": "string",
"updated": "string",
"username": "string",
"verified": true
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» avatar|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» email|string|true|none||none|
|» emailVisibility|boolean|true|none||none|
|» id|string|true|none||none|
|» language|string|true|none||none|
|» location|object|true|none||none|
|»» lat|number|true|none||none|
|»» lon|number|true|none||none|
|»» name|string|true|none||none|
|» token|string|true|none||none|
|» unit|string|true|none||none|
|» updated|string|true|none||none|
|» username|string|true|none||none|
|» verified|boolean|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## DELETE delete
DELETE /user/{id}
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
> Response Examples
> 200 Response
```json
{
"acknowledged": true
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» acknowledged|boolean|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## PUT create
PUT /user
> Body Parameters
```json
{
"username": "string",
"password": "string",
"passwordConfirm": "string",
"email": "string"
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|body|body|object| no |none|
|» username|body|string| yes |none|
|» password|body|string| yes |none|
|» passwordConfirm|body|string| yes |none|
|» email|body|string| yes |none|
> Response Examples
> 200 Response
```json
{
"avatar": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"emailVisibility": true,
"id": "string",
"language": "string",
"location": null,
"token": "string",
"unit": "string",
"updated": "string",
"username": "string",
"verified": true
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» avatar|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» emailVisibility|boolean|true|none||none|
|» id|string|true|none||none|
|» language|string|true|none||none|
|» location|null|true|none||none|
|» token|string|true|none||none|
|» unit|string|true|none||none|
|» updated|string|true|none||none|
|» username|string|true|none||none|
|» verified|boolean|true|none||none|
HTTP Status Code **400**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|»»» passwordConfirm|object|true|none||none|
|»»»» code|string|true|none||none|
|»»»» message|string|true|none||none|
|»»» username|object|true|none||none|
|»»»» code|string|true|none||none|
|»»»» message|string|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|»»»» passwordConfirm|object|true|none||none|
|»»»»» code|string|true|none||none|
|»»»»» message|string|true|none||none|
|»»»» username|object|true|none||none|
|»»»»» code|string|true|none||none|
|»»»»» message|string|true|none||none|
|» name|string|true|none||none|

View File

@@ -0,0 +1,380 @@
---
title: waypoint
---
## GET show
GET /waypoint/{id}
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
> Response Examples
> 200 Response
```json
{
"author": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"description": "string",
"icon": "string",
"id": "string",
"lat": 0,
"lon": 0,
"name": "string",
"photos": [
"string"
],
"updated": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» author|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» description|string|true|none||none|
|» icon|string|true|none||none|
|» id|string|true|none||none|
|» lat|integer|true|none||none|
|» lon|integer|true|none||none|
|» name|string|true|none||none|
|» photos|[string]|true|none||none|
|» updated|string|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## POST update
POST /waypoint/{id}
> Body Parameters
```json
{
"name": "string"
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
|Content-Type|header|string| yes |none|
|body|body|object| no |none|
|» name|body|string| yes |none|
> Response Examples
> 200 Response
```json
{
"author": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"description": "string",
"icon": "string",
"id": "string",
"lat": 0,
"lon": 0,
"name": "string",
"photos": [
"string"
],
"updated": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» author|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» description|string|true|none||none|
|» icon|string|true|none||none|
|» id|string|true|none||none|
|» lat|integer|true|none||none|
|» lon|integer|true|none||none|
|» name|string|true|none||none|
|» photos|[string]|true|none||none|
|» updated|string|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## DELETE delete
DELETE /waypoint/{id}
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|id|path|string| yes |none|
> Response Examples
> 200 Response
```json
{
"acknowledged": true
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Record Not Found|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» acknowledged|boolean|true|none||none|
HTTP Status Code **404**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|
## GET list
GET /waypoint
> Response Examples
> 200 Response
```json
[
{
"author": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"description": "string",
"icon": "string",
"id": "string",
"lat": 0,
"lon": 0,
"name": "string",
"photos": [
"string"
],
"updated": "string"
}
]
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» author|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» description|string|true|none||none|
|» icon|string|true|none||none|
|» id|string|true|none||none|
|» lat|number|true|none||none|
|» lon|number|true|none||none|
|» name|string|true|none||none|
|» photos|[string]|true|none||none|
|» updated|string|true|none||none|
## PUT create
PUT /waypoint
> Body Parameters
```json
{
"name": "string",
"description": "string",
"author": "string",
"lat": 0,
"lon": 0,
"icon": "string"
}
```
### Params
|Name|Location|Type|Required|Description|
|---|---|---|---|---|
|body|body|object| no |none|
|» name|body|string| no |none|
|» description|body|string| no |none|
|» author|body|string| yes |none|
|» lat|body|integer| yes |none|
|» lon|body|integer| yes |none|
|» icon|body|string| no |none|
> Response Examples
> 200 Response
```json
{
"author": "string",
"collectionId": "string",
"collectionName": "string",
"created": "string",
"description": "string",
"icon": "string",
"id": "string",
"lat": 0,
"lon": 0,
"name": "string",
"photos": [
"string"
],
"updated": "string"
}
```
### Responses
|HTTP Status Code |Meaning|Description|Data schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline|
|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|Inline|
### Responses Data Schema
HTTP Status Code **200**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» author|string|true|none||none|
|» collectionId|string|true|none||none|
|» collectionName|string|true|none||none|
|» created|string|true|none||none|
|» description|string|true|none||none|
|» icon|string|true|none||none|
|» id|string|true|none||none|
|» lat|integer|true|none||none|
|» lon|integer|true|none||none|
|» name|string|true|none||none|
|» photos|[string]|true|none||none|
|» updated|string|true|none||none|
HTTP Status Code **400**
|Name|Type|Required|Restrictions|Title|description|
|---|---|---|---|---|---|
|» url|string|true|none||none|
|» status|integer|true|none||none|
|» response|object|true|none||none|
|»» code|integer|true|none||none|
|»» message|string|true|none||none|
|»» data|object|true|none||none|
|» isAbort|boolean|true|none||none|
|» originalError|object|true|none||none|
|»» url|string|true|none||none|
|»» status|integer|true|none||none|
|»» data|object|true|none||none|
|»»» code|integer|true|none||none|
|»»» message|string|true|none||none|
|»»» data|object|true|none||none|
|» name|string|true|none||none|

View File

@@ -100,7 +100,7 @@ The standard configuration makes all three services publically available by forw
By default, wanderer uses two volumes. One for meilisearch indices and one for all PocketBase data. In the default configuration, the data is stored in volumes. However, if you prefer to use bind mounts you can simply adapt the configuration accordingly.
### Environment
The default configuration contains all necessary environment variables. However, there are more options that allow you to modify how the backend and index operate. For more details, you can take a look at the respective section of the [documentation](https://github.com/Flomp/wanderer/wiki/Configuration).
The default configuration contains all necessary environment variables. However, there are more options that allow you to modify how the backend and index operate. For more details, you can take a look at the respective section of the [documentation](/getting-started/configuration).
:::caution
Ensure that you change the `MEILI_MASTER_KEY` to a different value if you plan to use wanderer in a production environment.
@@ -177,7 +177,7 @@ To update wanderer to the newest version simply run `git pull origin main` and r
## Verify the installation
No matter which installation method you chose, you should now be able to access wanderer on localhost:3000.
:::note[Bootstrapping]
:::note
On the first launch, wanderer will create a rather large city index with over 200,000 entries in meilisearch. This process happens automatically but can take up to 2 minutes to complete. During this time the search functionality might not yet work properly.
:::

View File

@@ -0,0 +1,35 @@
---
title: Configuration
description: How to configure wanderer with environment variables
---
Global settings for wanderer can be adjusted via environment variables. If you depoloyed wanderer with docker you can change the environment variables directly in the `docker-compose.yaml`. If you deployed wanderer on bare-metal you can change the environment variables in the launch script.
## Common
These variables are shared between all three services.
| Environment Variable | Description | Default |
| -------------------- | ---------------------------------------------------------------- | ------------------------------------------- |
| MEILI_URL | IP or hostname (including the port) of your meilisearch instance | http://search:7700 |
| MEILI_MASTER_KEY | Master API key for your meilisearch instance | vODkljPcfFANYNepCHyDyGjzAMPcdHnrb6X5KyXQPWo |
## Meilisearch
Since we use an unmodified installation of meilisearch you can use all variables listed in meilisearch's documentation. You can find a full list over [here](https://www.meilisearch.com/docs/learn/configuration/instance_options).
| Environment Variable | Description | Default |
| -------------------- | ----------------------------- | ------- |
| MEILI_NO_ANALYTICS | Disable meilisearch telemetry | true |
## Frontend
| Environment Variable | Description | Default |
| --------------------- | -------------------------------------------------------------------- | ---------------------------------- |
| ORIGIN | Public IP or hostname (including the port) of your wanderer instance | http://localhost:3000 |
| BODY_SIZE_LIMIT | Maximum allowed upload size | Infinity |
| PUBLIC_POCKETBASE_URL | IP or hostname (including the port) of your wanderer instance | http://db:8090 |
| PUBLIC_DISABLE_SIGNUP | Disables signup option for new users | false |
| PUBLIC_VALHALLA_URL | Public IP or hostname (including the port) of a valhalla instance | https://valhalla1.openstreetmap.de |
| UPLOAD_FOLDER | Folder from which wanderer auto-uploads trails | /app/uploads |
| UPLOAD_USER | Username for the account with which wanderer auto-uploads trails | |
| UPLOAD_PASSWORD | Password for the account with which wanderer auto-uploads trails | |

View File

@@ -0,0 +1,68 @@
---
title: Local development
description: How to install wanderer for local development
---
If you would like to set up a development environment on your own machine to work on wanderer please first follow the bare-metal installation steps in the [installation guide](/getting-started/installation#from-source). We will slightly modify the launch script to launch a node server in development mode instead:
```bash
trap "kill 0" EXIT
export ORIGIN=http://localhost:5173
export MEILI_URL=http://127.0.0.1:7700
export MEILI_MASTER_KEY=p2gYZAWODOrwTPr4AYoahCZ9CI8y9bUd0yQLGk-E3m8
export PUBLIC_POCKETBASE_URL=http://127.0.0.1:8090
export PUBLIC_VALHALLA_URL=https://valhalla1.openstreetmap.de
cd search && ./meilisearch --master-key $MEILI_MASTER_KEY &
cd db && ./pocketbase serve &
cd web && npm run dev &
wait
```
This will bring up a `meilisearch` instance on `http://127.0.0.1:7700`, a `PocketBase` instance on `http://127.0.0.1:8090`, and a `vite` server for the wanderer frontend on `http://localhost:5173`.
## Accessing the backend
Sometimes it can be useful to edit data directly in the database. `PocketBase` offers a convenient web UI to do so. Simply head over to `http://127.0.0.1:8090/_/`. If you access the admin panel for the first time you will be asked to create an admin account. Afterwards, you can create, read, update, and delete data in the respective tables. To learn more about `PocketBase` you can head over to their extensive [documentation](https://pocketbase.io/docs).
## Building
When you are done with development and would like to build wanderer for production there are some steps to follow.
### meilisearch
If you modified any attributes of one of the meilisearch indices (like filterable attributes), you will need to create a new dump that gets imported into wanderer on launch. To do so run
```bash
curl -X POST 'http://127.0.0.1:7700/dumps'
```
and overwrite the previous dump at `/search/migrations/migration.dump` with your updated one.
### PocketBase
If you modified code in any of the `*.go` files make sure to build an updated binary with `go build`. In case you only edited tables via the `PocketBase` admin panel you don't need to do anything. The database will be migrated automatically.
### Frontend
For the frontend there are no further caveats. Simply run `npm run build`.
### Docker
To create local docker images of wanderer simply run the script below. These will work as drop-in replacements for the ones hosted on docker hub. This will only work if you have already completed the steps above.
```bash
# search
docker build search/ --no-cache -t flomp/wanderer-search:latest
# db
docker build db/ --no-cache -t flomp/wanderer-db:latest
# web
docker build web/ --no-cache -t flomp/wanderer-web:latest
```

View File

@@ -0,0 +1,35 @@
---
title: wanderer API
description: How to use wanderer's API
---
wanderer comes with a fully functional RESTful API out of the box. It largely follows the CRUD conventions implemented by the [PocketBase backend](https://pocketbase.io/docs/api-records/#crud-actions). All endpoints are available at `http://<wanderer_host>/api/v1`. The full technical API documentation can be found at `http://<wanderer_host>/docs/api/index.html` and is also provided in the [API Reference](/api-reference/auth).
## Authentication
wanderer's API uses cookie-based authentication. To receive an auth cookie send a request to the `/auth/login` endpoint. The request must contain a JSON body in the following form:
```
{
username: string,
password: string
}
```
The cookie from the response can be sent in a subsequent request to authenticate it.
### Example
```bash
curl --header "Content-Type: application/json" --request POST \
--cookie-jar ./wanderer-credentials \
--data '{"username":"MyUser","password":"mysecretpassword"}' \
http://localhost:3000/api/v1/auth/login
```
## Upload trails
One common use case for wanderer's API is bulk uploading GPX files to create new trails. For that, the API provides a separate endpoint: `/trail/upload`. You must first log in to use the endpoint. Afterwards you can send a GPX file to the endpoint to let wanderer parse it an create a new trail in your collection. wanderer will try to infer as much information as possible from the file itself. All additional information can be added to the trail via the UPDATE [endpoint](/api-reference/trail#post-update).
### Example
```bash
curl --location --request PUT 'http://localhost:3000/api/v1/trail/upload' \
--header 'Content-Type: application/gpx+xml' \
--cookie './wanderer-credentials' \
--data-binary '@my_trail.gpx'
```

View File

@@ -0,0 +1,64 @@
---
title: Authentication
description: Authentication with email/password and OAuth
---
For the majority of wanderer's features you need an account to interact with them.
## Email/Username & Password
The quickest way to create an account is by heading over to `/register` and entering a username, a valid email address, and a password of your choice.
After registering you will be redirected to the homepage and can start creating your first trail.
:::note
The username must be at least 3 characters long, the password at least 8.
:::
## OAuth2
Alternatively, wanderer supports authenticating via OAuth2. The following providers are supported:
- GitHub
- Apple
- Google
- Microsoft
- Yandex
- Facebook
- Instagram
- GitLab
- Bitbucket
- Gitee
- Gitea
- Discord
- Twitter
- Kakao
- VK
- Spotify
- Twitch
- Patreon (v2)
- Strava
- LiveChat
- mailcow
- OpenID Connect
### Prerequisites
To set up OAuth support you will need to access the PocketBase backend. Make sure to forward port 8090 of the `wanderer-db` container. Access the PocketBase admin panel in your browser at `http://<your_pocketbase_url>:8090/_/` and create an admin account.
### Create an OAuth app
This step will vary wildly from provider to provider. Please refer to your provider's documentation for the specific steps.
No matter your provider, you will need a redirect URL. This redirect URL must have the following format: `$ORIGIN/login/redirect`. `$ORIGIN` refers to the `ORIGIN` environment variable that defines the public host at which your wanderer instance can be reached. So for the default installation, the redirect URL is `http://localhost:3000/login/redirect`.
In any case, once you have successfully created your OAuth app you will receive a Client ID and a Client Secret.
### Enable a provider in PocketBase
![Pocketbase OAuth](../../../assets/guides/pocketbase_oauth.png)
In the PocketBase admin panel navigate to `Settings -> Auth providers`. Click the gear icon next to your provider, fill in the Client ID and Client Secret from the step before and save your changes.
### Login using OAuth
![wanderer OAuth](../../../assets/guides/wanderer_oauth.png)
That's it! You should now see your OAuth provider appear in wanderer's login form. Click the button, authorize wanderer, and wait for the authentication to finish. You are now logged in and can use wanderer like any other user.

View File

@@ -0,0 +1,58 @@
---
title: Create a trail
description: How to create a trail by uploading or drawing a trail using Valhalla
---
## What is a trail?
In wanderer a trail is an object that contains both GPS data and various kinds of metadata (like a description, photos, waypoints etc.) that make it easily searchable.
## Create a trail
To create a new trail click the <button class="h-10 text-white rounded-lg px-4 py-2 mx-2 bg-primary font-semibold transition-all hover:bg-primary-hover focus:ring-4 ring-zinc-400 leading-none">+ New Trail</button> button in the top right corner.
### Provide a route
A route is the GPS data of a trail. There are two main ways that a user can provide a route.
#### Upload a file
Click the `Upload file` button and choose a file. The file must be either in GPX, TCX, or KML format. Once you have selected a file you will see a couple of things happen:
- the map will display and focus on your track.
- the elevation profile and speed charts (if your file contains that information) will be updated accordingly.
- in the left-hand panel information like the trail name, location, and distance will be displayed.
#### Draw a route
Instead of clicking the `Upload file` button, you can also click the `Draw a route` button. This will activate the drawing mode. Notice that your cursor is now a cross when hovering over the map. Clicking on the map in drawing mode will create a new waypoint. You can drag and drop it anywhere on the map to update its position. To delete it, click first on the waypoint and then on the red trashcan icon. Creating a second waypoint will create a route between it and the previous one.
![Valhalla routing](../../../assets/guides/valhalla_routing.png)
By default, wanderer uses the [valhalla routing engine](https://github.com/valhalla/valhalla) to calculate the route between the two points. Via the menu in the top-left corner of the map, you can choose your preferred mode of transport which will influence the route calculation. If you disable auto-routing wanderer will not use `valhalla`, but instead, simply draw a straight line between the two points.
When you are done with drawing click the `Stop drawing` button to deactivate the drawing mode.
:::tip
wanderer uses a public, free `valhalla` server by default. The server is financed by donations. Please consider donating at [https://www.fossgis.de/verein/spenden/](https://www.fossgis.de/verein/spenden/).
:::
### Basic Info
Most of the data in this section should be self-explanatory. The only required field is the name: every trail needs a name. If you created your route by uploading a file, wanderer tries to infer most of the information directly from the file. However, you are of course free to edit this information afterwards.
Toggling the public switch to on will make the trail visible for everyone even visitors who are not logged in.
### Waypoints
Waypoints mark points of interest along the route. A trail can have as many waypoints as you like. Click the `+ Add Waypoint` button to start. By default, a waypoint will be positioned in the center of the map. You can change the position either directly by entering a new latitude and longitude or simply moving the waypoint around on the map after saving it first.
Additionally, a waypoint has an icon that is displayed in the map marker. wanderer uses fontawsome icons, so any icon from this [list](https://fontawesome.com/search?q=share&o=r&m=free) is available. If you wish, you can also add photos to the waypoint to make it event more recognizable.
### Photos
You can also add photos to the trail itself. If you add more than one photo you can choose which one should be used as the thumbnail. It will be featured in the trail overview.
### Summit book
If you do the same trail multiple times but do not want to create a new trail every time, you can simply make a new entry in the summit book to log the completion of the trail.
## Save the trail
Once you are done creating your trail simply click the <button class="h-10 text-white rounded-lg px-4 py-2 mx-2 bg-primary font-semibold transition-all hover:bg-primary-hover focus:ring-4 ring-zinc-400 leading-none">Save Trail</button> button. This will save your trail to the database and create a new index entry to make ensure that you will find your trail in the future.

View File

@@ -0,0 +1,41 @@
---
title: Import/Export
description: How to import and export trails in wanderer
---
## Import
wanderer supports bulk uploading of trails via an auto-upload folder. A cronjob fetches all files from this folder and uploads them automatically every 15 minutes. This feature is currently only available for docker installations. If you want to replicate it in a bare metal installation you will need to create your own cronjob using the `web/cron.sh` script.
:::caution
Successfully uploaded files will be deleted from the auto-upload folder.
:::
:::note
Currently only GPX files are supported.
:::
### Configuration
The following environment variables must be present in the `wanderer-web` docker container and set to valid values.
| Environment Variable | Description | Default |
|----------------------|------------------------------------------------------------------------|--------------|
| UPLOAD_FOLDER | Path to the auto-upload folder | /app/uploads |
| UPLOAD_USER | Username of the account that will be the author of the uploaded trails | |
| UPLOAD_PASSWORD | Password of the account that will be the author of the uploaded trails | |
### Volume
Make sure to mount the upload folder as a volume to your host system. The default `docker-compose.yml` already includes this volume. Ensure that the mapped value matches the one in the `UPLOAD_FOLDER` environment variable.
### Manually run the upload job
In case you do not want to wait until the next scheduled execution you can also run the job manually:
```bash
docker exec -it wanderer-web run-parts /etc/periodic/15min
```
## Export
Currently, wanderer supports exporting only for single trails. A bulk export feature is planned for the near future.
To export a trail head over to `/trails` and select the trail you want to export. From the ⋮ menu select "Export". You can export the route data either in GPX or in GeoJSON format. Furthermore, you can choose whether you want to include the photos and the summit book of the trail. In any case, wanderer will create a ZIP archive with all the data that is then downloaded.

View File

@@ -0,0 +1,20 @@
---
title: Lists
description: What are lists and how can we use them?
---
Lists allow you to further organise your trails by bundling them in one place. Over at `/lists` you can create, update, and delete your custom lists. You can view all trails in a list either on a map or in a simple list.
![Lists](../../../assets/guides/wanderer_lists.gif)
## Create a list
Simply click the `+ Create new list` button and give your list a name. Optionally, you can also add an avatar and a short description.
## Add a trail
To add a trail to a list head over to `/trails` and click on the trail you want to add. From the ⋮ menu select "Add to list" and select the list you want to add the trail to. To remove the trail simply repeat this process.
## Edit & delete a list
To edit or delete a list simply select the respective entry from the ⋮ menu.

View File

@@ -0,0 +1,19 @@
---
title: Share trails
description: How to share trails with other users
---
wanderer allows you to share your trails with other users. You can either publish you trail making it accessible for everyone or share it with specific users. To get started head over to `/trails` and select the trail you want to share or publish.
## Publish a trail
From the ⋮ menu select "Edit". In the panel on the right toggle the "Public" switch to on and save the trail. Your trail is now public and everyone can see it. Even people without an account.
## Share a trail
![Share trail](../../../assets/guides/wanderer_share.gif)
If you want to be more particular about who can see your trail you can instead share your trail. From the ⋮ menu select "Share". In the dialog, search for the user you want to share your trail with. You can now choose the permission the user should have. You can choose between "View" or "Edit". A user with "Edit" permission can change all data (including the route) of the trail.
If you no longer want to share the trail with a user, simply click the red trashcan icon next to their name.

View File

@@ -29,7 +29,7 @@ import { Card, CardGrid } from '@astrojs/starlight/components';
<Card title="Manage your trails" icon="pencil">
Upload your trails from multiple file formats (like GPX or TCX) or plan a new trail directly in <span class="-tracking-[0.075em] s-y_bCXRrkrYfP">wanderer</span> with the route drawing tool.
[Learn more →]()
[Learn more →](/guides/create-a-trail)
</Card>
</div>
<Card title="Advanced filters and search" icon="magnifier">
@@ -38,12 +38,12 @@ import { Card, CardGrid } from '@astrojs/starlight/components';
<Card title="Automatic import" icon="seti:folder">
Simply upload all your trails in one go with <span class="-tracking-[0.075em] s-y_bCXRrkrYfP">wanderer</span>'s automatic import feature.
[Learn more →]()
[Learn more →](/guides/import-export#import)
</Card>
<Card title="Full API support" icon="seti:json">
Use <span class="-tracking-[0.075em] s-y_bCXRrkrYfP">wanderer</span>'s API to interact with your trail data directly and automate the tasks you don't want to do manually.
[API reference →]()
[API reference →](/api-reference/auth)
</Card>
<Card title="Privacy friendly" icon="approve-check">
<span class="-tracking-[0.075em] s-y_bCXRrkrYfP">wanderer</span> is self-hosted and open-source. Your data stays on your machine and your machine only.

View File

@@ -1,11 +0,0 @@
---
title: Example Reference
description: A reference page in my new Starlight docs site.
---
Reference pages are ideal for outlining how things work in terse and clear terms.
Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what your documenting.
## Further reading
- Read [about reference](https://diataxis.fr/reference/) in the Diátaxis framework

View File

@@ -8,7 +8,7 @@ export const comments: Writable<Comment[]> = writable([])
export async function comments_index(trail: Trail) {
let r = await fetch('/api/v1/comment?' + new URLSearchParams({
filter: `trail = ${trail.id}`,
filter: `trail="${trail.id}"`,
}), {
method: 'GET',
})

View File

@@ -8,6 +8,7 @@ export async function GET(event: RequestEvent) {
try {
const r: Comment[] = await pb.collection('comments').getFullList<Comment>({
expand: "author",
filter: filter,
sort: "-created",
})

View File

@@ -254,7 +254,7 @@
{/each}
</ul>
<div id="map" class="rounded-xl z-0" class:hidden={!showMap}></div>
<div class:hidden={showMap}>
<div class="min-w-0" class:hidden={showMap}>
<TrailList
bind:filter
trails={$list.expand?.trails ?? []}