Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cardinalby/schema-validator-action
JSON Schema validator Action
https://github.com/cardinalby/schema-validator-action
json-schema schema schemasafe validation validator yaml
Last synced: about 3 hours ago
JSON representation
JSON Schema validator Action
- Host: GitHub
- URL: https://github.com/cardinalby/schema-validator-action
- Owner: cardinalby
- License: mit
- Created: 2021-12-28T19:58:57.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-06-27T20:01:20.000Z (4 months ago)
- Last Synced: 2024-10-02T03:31:45.701Z (about 1 month ago)
- Topics: json-schema, schema, schemasafe, validation, validator, yaml
- Language: TypeScript
- Homepage:
- Size: 1.05 MB
- Stars: 14
- Watchers: 1
- Forks: 2
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![test](https://github.com/cardinalby/schema-validator-action/actions/workflows/test.yml/badge.svg)](https://github.com/cardinalby/schema-validator-action/actions/workflows/test.yml)
[![build](https://github.com/cardinalby/schema-validator-action/actions/workflows/build.yml/badge.svg)](https://github.com/cardinalby/jschema-validator-action/actions/workflows/build.yml)## Validate JSON or YAML against a schema
A GitHub Action for validating JSON or YAML file against a schema.
Fails if validation doesn't succeed. Uses
[schemasafe](https://github.com/ExodusMovement/schemasafe) validator under the hood.## Examples
```yaml
- name: Validate package.json against a local schema
uses: cardinalby/schema-validator-action@v3
with:
file: 'package.json'
schema: 'schemas/package.schema.json'
``````yaml
- name: Validate action.yml against a remote schema
uses: cardinalby/schema-validator-action@v3
with:
file: 'action.yml'
schema: 'https://json.schemastore.org/github-action.json'
``````yaml
- name: Validate all json files using their own $schema properties
uses: cardinalby/schema-validator-action@v3
with:
file: 'dir/*.json'
``````yaml
- name: Validate 3 files using the same schema
uses: cardinalby/schema-validator-action@v3
with:
file: 'first.json|second.json|third.json'
schema: 'https://json.schemastore.org/swagger-2.0.json'
```## Basic inputs
### 🔻 `file` **Required**
Path to the JSON or YAML file to be validated.* Can accept a _glob_ pattern (will validate all matched files)
* Can accept multiple files (or glob patterns) separated by `|` symbol.### 🔸 `schema`
Path or URL to JSON or YAML file with a schema to validate against.**Can be empty** if all validated files contain valid `$schema` property.
Input value has a priority over `$schema` property in file if both present.### 🔸 `mode` _default value: "default"_
Sets the strictness of the schema compiling. Possible values:
- `lax`: the most relaxed mode
- `spec`: mode is the same as 'lax' but also disables format assertion in draft2019-09 and newer $schema versions
- `default`: used **by default**, doesn't allow unknown keywords and unreachable checks to be present in the schema
- `strong`: the most strict modeRead details in [schemasafe documentation](https://github.com/ExodusMovement/schemasafe/blob/master/doc/Options.md).
### 🔸 `fixSchema` _experimental, default value: "false"_
If `true`, tries to fix schema by stripping non-default "format" instructions to make it valid for the
underlying library.This input is **experimental**, and it's behaviour can be changed in future versions.
## Advanced inputs
### 🔸 `fileParser` _default value: "auto"_
Determines the way files will be parsed (as JSON or as YAML). Possible values:
- `auto` (default) - based on file extension (_json/yml/yaml_). It means, _.json_ files containing
yaml will lead to error. If file extension is unknown, it will behave as `json|yaml` option
- `json` - parse all files as JSON
- `yaml` - parse all files as YAML
- `json|yaml` - try to parse files both with json and yaml parser (compatible with _v2_)### 🔸 `refSchemasMap`
Contains a JSON object with the schemas needed to resolve external `$ref`s in the main schema.
JSON object should contain pairs of:
- key: id of the external schema
- value: path to schema file or URL to download schema fromExample: `{"https://my-schemas.com/schema-id": "schema_files/my.schema.json"}`
### 🔸 `refSchemasArray`
Contains a JSON array with the schemas needed to resolve external `$ref`s in the main schema.
JSON array should contain string elements, each pointing to schema file path or URL to download schema from.All schemas should contain `$id` (or `id` for draft-04) property to be identified.
This input is more convenient alternative for `refSchemasMap` input if all external schemas
contain `$id` property.Example: `["schema_files/my.schema.json"]`
## Outputs
### 🔹 `errorType`
Is empty if validation succeeds.
* `file`: file loading or parsing failed
* `schema`: schema loading, parsing or refs resolving failed
* `validation`: file data doesn't correspond schemaIn case of multiple files they are processed one by one and `errorType` indicates the first error occurred.