Files
railiance-fabric/schemas/graph-explorer-manifest.schema.yaml

236 lines
4.6 KiB
YAML

$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