name: salty-dog-meta definitions: name-safe: type: string pattern: "[-a-z0-9]+" name-tag: type: string pattern: "[-:a-z0-9]+" rule: type: object additionalProperties: false required: # metadata - name - desc - level - tags # data - check properties: name: $ref: "salty-dog-meta#/definitions/name-safe" desc: type: string minLength: 8 maxLength: 255 level: type: string enum: - debug - info - warn - error tags: type: array items: $ref: "salty-dog-meta#/definitions/name-tag" select: type: string default: '$' minLength: 1 filter: $ref: "http://json-schema.org/draft-07/schema#" check: $ref: "http://json-schema.org/draft-07/schema#" source: type: object required: - name - rules properties: name: $ref: "salty-dog-meta#/definitions/name-safe" definitions: type: object additionalProperties: false patternProperties: "[-a-z]+": type: object rules: type: array items: $ref: "salty-dog-meta#/definitions/rule" rules: - name: salty-dog-rule desc: rules must be complete level: info tags: - important - salty-dog select: '$.rules[*]' check: $ref: "salty-dog-meta#/definitions/rule" - name: salty-dog-source desc: source files must have rules level: info tags: - important - salty-dog check: allOf: - $ref: "salty-dog-meta#/definitions/source" - type: object properties: rules: type: array minItems: 1