name: salty-dog-meta definitions: log-level: type: string enum: - debug - info - warn - error config-logger: type: object required: - level - name properties: level: $ref: "salty-dog-meta#/definitions/log-level" name: type: string streams: type: array items: oneOf: - type: string - type: object config: type: object required: - data properties: data: type: object required: - logger properties: logger: $ref: "salty-dog-meta#/definitions/config-logger" 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 maxLength: 255 level: $ref: "salty-dog-meta#/definitions/log-level" 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