$schema: "https://json-schema.org/draft/2020-12/schema" $id: "https://railiance.local/fabric/schemas/graph-explorer-manifest.schema.yaml" title: "GraphExplorerManifest" type: object additionalProperties: false required: - apiVersion - kind - id - title - endpoints - identity - layers - filter - modes - profile_persistence properties: apiVersion: $ref: "./common.schema.yaml#/$defs/apiVersion" kind: type: string const: GraphExplorerManifest id: type: string minLength: 3 title: type: string minLength: 1 description: type: string engine: type: object additionalProperties: false properties: suggested_package: type: string preferred_library: type: string display_state_owner: type: string enum: - host - engine - host-or-engine endpoints: type: object additionalProperties: false required: - graph properties: graph: $ref: "#/$defs/endpoint" manifest: $ref: "#/$defs/endpoint" refilter: $ref: "#/$defs/endpoint" profiles: type: object additionalProperties: false properties: list: $ref: "#/$defs/endpoint" create: $ref: "#/$defs/endpoint" get: $ref: "#/$defs/endpoint" update: $ref: "#/$defs/endpoint" delete: $ref: "#/$defs/endpoint" duplicate: $ref: "#/$defs/endpoint" latest_default: type: boolean identity: type: object additionalProperties: false required: - node_id_field - stable_key_field - edge_id_field - source_field - target_field properties: node_id_field: type: string stable_key_field: type: string edge_id_field: type: string source_field: type: string target_field: type: string layers: type: array minItems: 1 items: type: object additionalProperties: false required: - id - label - order properties: id: type: string minLength: 1 label: type: string minLength: 1 order: type: integer minimum: 0 color: type: string pattern: "^#[0-9a-fA-F]{6}$" grouping_fields: $ref: "#/$defs/stringList" search_fields: $ref: "#/$defs/stringList" filter: type: object additionalProperties: false required: - actions - fields properties: actions: type: array minItems: 1 uniqueItems: true items: type: string enum: - show - blur - hide - highlight - remove fields: type: array items: type: object additionalProperties: false required: - id - label - type properties: id: type: string minLength: 1 label: type: string minLength: 1 type: type: string enum: - string - number - boolean - array visual_encodings: type: object additionalProperties: type: string detail: type: object additionalProperties: false properties: node_fields: $ref: "#/$defs/stringList" edge_fields: $ref: "#/$defs/stringList" modes: type: array minItems: 1 items: type: object additionalProperties: false required: - id - label properties: id: type: string minLength: 1 label: type: string minLength: 1 description: type: string requires_selection: type: boolean profile_persistence: type: string enum: - none - local - host shareable_state: type: object additionalProperties: false properties: url_parameters: type: boolean profile_id: type: boolean state_blob: type: boolean $defs: endpoint: type: object additionalProperties: false required: - method - url properties: method: type: string enum: - GET - POST - PATCH - DELETE url: type: string minLength: 1 stringList: type: array items: type: string minLength: 1