summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2019-08-04 18:01:05 -0400
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2019-09-14 19:00:54 -0400
commitee0ff5687d4002aab20cd91fd28d007d916af36c (patch)
tree113b44f267630804d0b0c3408800733290b5331f /docs
parentf24e7428df15ee8bcc9a2a45de98363670e72231 (diff)
downloadSMAPI-ee0ff5687d4002aab20cd91fd28d007d916af36c.tar.gz
SMAPI-ee0ff5687d4002aab20cd91fd28d007d916af36c.tar.bz2
SMAPI-ee0ff5687d4002aab20cd91fd28d007d916af36c.zip
add user-friendly doc link & error messages, document validator, improve manifest schema (#654)
Diffstat (limited to 'docs')
-rw-r--r--docs/technical/web.md37
1 files changed, 35 insertions, 2 deletions
diff --git a/docs/technical/web.md b/docs/technical/web.md
index 50799e00..9884fefc 100644
--- a/docs/technical/web.md
+++ b/docs/technical/web.md
@@ -6,6 +6,7 @@ and update check API.
## Contents
* [Overview](#overview)
* [Log parser](#log-parser)
+ * [JSON validator](#json-validator)
* [Web API](#web-api)
* [For SMAPI developers](#for-smapi-developers)
* [Local development](#local-development)
@@ -16,9 +17,41 @@ The `SMAPI.Web` project provides an API and web UI hosted at `*.smapi.io`.
### Log parser
The log parser provides a web UI for uploading, parsing, and sharing SMAPI logs. The logs are
-persisted in a compressed form to Pastebin.
+persisted in a compressed form to Pastebin. The log parser lives at https://log.smapi.io.
+
+### JSON validator
+The JSON validator provides a web UI for uploading and sharing JSON files, and validating them
+as plain JSON or against a predefined format like `manifest.json` or Content Patcher's
+`content.json`. The JSON validator lives at https://json.smapi.io.
+
+Schema files are defined in `wwwroot/schemas` using the [JSON Schema](https://json-schema.org/)
+format, with some special properties:
+* The root schema may have a `@documentationURL` field, which is the URL to the user-facing
+ documentation for the format (if any).
+* Any part of the schema can define an `@errorMessages` field, which specifies user-friendly errors
+ which override the auto-generated messages. These are indexed by error type. For example:
+ ```js
+ "pattern": "^[a-zA-Z0-9_.-]+\\.dll$",
+ "@errorMessages": {
+ "pattern": "Invalid value; must be a filename ending with .dll."
+ }
+ ```
+
+You can also reference these schemas in your JSON file directly using the `$schema` field, for
+text editors that support schema validation. For example:
+```js
+{
+ "$schema": "https://smapi.io/schemas/manifest.json",
+ "Name": "Some mod",
+ ...
+}
+```
+
+Current schemas:
-The log parser lives at https://log.smapi.io.
+format | schema URL
+------ | ----------
+[SMAPI `manifest.json`](https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Manifest) | https://smapi.io/schemas/manifest.json
### Web API
SMAPI provides a web API at `api.smapi.io` for use by SMAPI and external tools. The URL includes a