Files
zkldi_Tachi/old-docs/docs/api/routes/ugpt-showcase.md
T
zk e363bd2532 docs: migrate from mkdocs to mdbook (#1558)
* docs: migrate from mkdocs to mdbook

- Rename old mkdocs docs/ to old-docs/ for reference
- Set up new docs/ with mdbook (book.toml + src/ tree)
- Mirror full nav structure from mkdocs.yml into SUMMARY.md
- Add Justfile-docs with docs-serve, docs-build, docs-check, docs-install recipes
- Import Justfile-docs from root Justfile
- Rewrite .github/workflows/docs.yml: build step uses taiki-e/install-action
  to install mdbook, split into separate build + deploy jobs, PR builds
  run the check step too

* ci(docs): pin actions to SHAs, install mdbook via release binary

* ci(docs): install mdbook from apt instead of curling a release binary

* dev: replace mkdocs python stack with mdbook in dev image

* ci(docs): apt only works on Debian; restore release binary install for Ubuntu CI

* docs: fix duplicate file entries in SUMMARY.md

* docs: remove docs-install recipe

* docs: remove site-url from book.toml to fix asset loading

* dev: install mdbook from upstream release binary, not Debian apt

The Debian package (0.4.x+ds) strips bundled font assets, leaving the
built site without fonts/fonts.css. Use the upstream tarball (same as CI)
so the theme is complete. Handles x86_64 and aarch64.

* docs: vendor mdbook tarballs in dev/mdbook/, install from there

Dockerfile.dev uses COPY + tar to install the right arch at build time.
CI extracts the x86_64 tarball directly from the checkout.
No network access required for either — and no stripped-fonts Debian package.

* fix: unwritten
2026-05-22 20:43:07 +01:00

157 lines
3.3 KiB
Markdown

# UGPT Stat Showcase
These endpoints are related to the Statistic Showcase feature.
*****
## Evaluate this users set stats
`GET /api/v1/users/:userID/games/:gameGroup/:playtype/showcase`
### Parameters
| Property | Type | Description |
| :: | :: | :: |
| `projectUser` | Optional, userID | If provided, will *project* another users showcase onto this user, evaluating the same user against the projectedUser's stats. |
### Response
| Property | Type | Description |
| :: | :: | :: |
| `<body>` | Array&lt;StatShowcaseResults&gt; | |
### Example
#### Request
```
GET /api/v1/users/1/games/iidx/SP/showcase
```
#### Response
```js
[{
stat: {
},
value: {
value: 123,
},
related: {
song: {
title: "FREEDOM DIVE",
// ...
},
chart: {
// some chart stuff..
},
// folders: [] if this is a folder(s) stat, then folders are displayed here.
}
}]
```
*****
## Replace a user's stat showcase.
`PATCH /api/v1/users/:userID/games/:gameGroup/:playtype/showcase`
### Permissions
- `customise_profile`
### Parameters
| Property | Type | Description |
| :: | :: | :: |
| `<body>` | Array&lt;StatDocument&gt; | An array of up to 6 stat documents. |
### Response
| Property | Type | Description |
| :: | :: | :: |
| `<body>` | Array&lt;StatDocument&gt; | The newly updated stat documents. |
### Example
#### Request
```
PATCH /api/v1/users/1/games/iidx/SP/showcase
[
{
mode: "chart",
chartID: "some_chart_id",
property: "percent"
}
]
```
#### Response
```js
[
{
mode: "chart",
chartID: "some_chart_id",
property: "percent"
}
]
```
*****
## Evaluate a custom stat on this user.
`GET /api/v1/users/:userID/games/:gameGroup/:playtype/showcase/custom`
### Parameters
| Property | Type | Description |
| :: | :: | :: |
| `mode` | "folder" \| "chart" | Whether the stat to evaluate is on a folder or a chart. |
| `property` | "grade" \| "lamp" \| "score" \| "percent" or "playcount" if mode is chart. | What property to evaluate on the given criteria. |
| `chartID` | string, if mode === "chart" | If mode is chart, this should contain the relevant chartID. |
| `folderID` | string, if mode === "folder" | If mode is folder, this should contain the relevant folderID. |
| `gte` | number, if mode === "folder" | If mode is folder, this must contain the value the property must be greater than, i.e. lamp >= 6, or percent >= 90 |
### Response
| Property | Type | Description |
| :: | :: | :: |
| `stat` | StatDocument | The stat you evaluated. |
| `result` | {value: number \| null, outOf?: number } | Contains `value`, which contains the stat's value, or NULL if the mode is chart and the user has not played this chart. If mode is folder, `outOf` contains the total amount of charts in that folder. |
| `related` | {song, chart} or {folders} | If mode is chart, contains the pertinent song and chart. If mode is folder, contains the pertinent folder documents.
### Example
#### Request
```
GET /api/v1/users/1/games/iidx/SP/showcase/custom?mode=chart&property=percent&chartID=some_chart_id
```
#### Response
```js
{
stat: {
mode: "chart",
property: "percent",
chartID: "some_chart_id",
},
result: {
value: 99.12
},
related: {
song: {
id: 123,
title: "AA",
artist: "DJ.Amuro",
// ...
},
chart: {
songID: 123,
difficulty: "ANOTHER",
// ...
}
}
}
```