All files / schemas/trellis/rules condition.schema.cts

100% Statements 85/85
100% Branches 0/0
100% Functions 0/0
100% Lines 85/85

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 861x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
/**
 * @license
 * Copyright 2022 Open Ag Data Alliance
 *
 * Use of this source code is governed by an MIT-style
 * license that can be found in the LICENSE file or at
 * https://opensource.org/licenses/MIT.
 */
 
import type { JSONSchema8 as Schema } from 'jsonschema8';
 
const schema: Schema = {
  $id: 'https://formats.openag.io/trellis/rules/condition.schema.json',
  $schema: 'http://json-schema.org/draft-07/schema#',
  description: 'A description of a condtion which can be used in OADA rules',
  allOf: [{ $ref: '../../oada/resource.schema.json' }],
  properties: {
    name: {
      description: 'Name of the condition',
      type: 'string',
      examples: ['signature_valid'],
    },
    service: {
      description: 'Name of the service implementing/performing the condition',
      type: 'string',
      $comment: 'service conditions not yet implemented',
    },
    schema: {
      description: 'A JSON Schema to which implements this condition',
      $ref: 'https://json-schema.org/draft/2019-09/schema',
    },
    type: {
      description: 'Content-type(s) with which this condition works',
      oneOf: [
        { type: 'string' },
        {
          type: 'array',
          items: { type: 'string' },
        },
      ],
    },
    description: {
      description: 'Human description of the condition for UI etc.',
      type: 'string',
      examples: ['has a valid signature'],
    },
    uischema: {
      description: 'UISchema for the params',
      $comment: 'Not sure this is a good idea',
      type: 'object',
    },
    params: {
      description: 'Input parameters for the condition',
      $ref: 'https://json-schema.org/draft/2019-09/schema',
    },
    pointers: {
      description: 'A map for applying params to schema.',
      type: 'object',
      $comment: 'Is there a way to specify the keys are JSON pointers?',
      additionalProperties: {
        type: 'object',
        required: ['name', 'iskey'],
        properties: {
          name: {
            description: 'Name of the input to apply at this path.',
            type: 'string',
          },
          iskey: {
            description: 'Wether to replace the key or the value.',
            type: 'boolean',
          },
        },
      },
      examples: [
        {
          '/a/b/c': { name: 's1', iskey: true },
          '/d/e': { name: 's2', iskey: false },
        },
      ],
    },
  },
  required: ['name', 'type', 'description'],
};
 
export = schema;