Start graph explorer contract

This commit is contained in:
2026-05-18 14:08:01 +02:00
parent ae4f567a2b
commit eec7e2a9f6
10 changed files with 1429 additions and 4 deletions

View File

@@ -0,0 +1,232 @@
$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
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
- 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

View File

@@ -0,0 +1,258 @@
$schema: "https://json-schema.org/draft/2020-12/schema"
$id: "https://railiance.local/fabric/schemas/graph-explorer-payload.schema.yaml"
title: "GraphExplorerPayload"
type: object
additionalProperties: false
required:
- apiVersion
- kind
- elements
- hidden_elements
properties:
apiVersion:
$ref: "./common.schema.yaml#/$defs/apiVersion"
kind:
type: string
const: GraphExplorerPayload
manifest_id:
type: string
generated_at:
type: string
format: date-time
repository:
type: object
additionalProperties: true
scope:
type: object
additionalProperties: true
mode:
type: string
profile:
anyOf:
- type: "null"
- $ref: "#/$defs/profile"
metrics:
type: object
additionalProperties:
anyOf:
- type: integer
- type: number
- type: boolean
- type: string
- type: "null"
filter:
type: object
additionalProperties: false
properties:
rules:
type: array
items:
$ref: "#/$defs/rule"
manual_overrides:
type: object
additionalProperties:
$ref: "#/$defs/displayState"
orphaned_overrides:
type: array
items:
type: string
precedence:
type: string
connected_edge_behavior:
type: string
elements:
type: array
items:
$ref: "#/$defs/element"
hidden_elements:
type: array
items:
$ref: "#/$defs/element"
impacts:
type: array
items:
type: object
additionalProperties: true
changed_fact_keys:
type: array
items:
type: string
$defs:
element:
type: object
additionalProperties: false
required:
- data
properties:
data:
type: object
additionalProperties: true
required:
- id
- stableKey
- kind
- layer
- displayState
properties:
id:
$ref: "#/$defs/stableKey"
key:
$ref: "#/$defs/stableKey"
stableKey:
$ref: "#/$defs/stableKey"
kind:
type: string
minLength: 1
layer:
type: string
minLength: 1
label:
type: string
name:
type: string
description:
type: string
repo:
type: string
domain:
type: string
lifecycle:
type: string
reviewState:
type: string
freshnessState:
type: string
displayState:
$ref: "#/$defs/displayState"
visibilitySource:
type: string
visibilityReason:
type: string
confidence:
anyOf:
- type: number
minimum: 0
maximum: 1
- type: "null"
visualSize:
type: number
minimum: 1
ownership:
type: string
unresolved:
type: boolean
source:
$ref: "#/$defs/stableKey"
target:
$ref: "#/$defs/stableKey"
sourceLayer:
type: string
targetLayer:
type: string
edgeType:
type: string
dependencyType:
type: string
strength:
type: string
enum:
- weak
- medium
- strong
edgeWidth:
type: number
minimum: 0
sameLayer:
type: boolean
connectedToBlurred:
type: boolean
path:
type: string
value:
type: string
attributes:
anyOf:
- type: object
additionalProperties: true
- type: array
items:
type: string
metadata:
type: object
additionalProperties: true
sourceReferences:
type: array
items:
type: object
additionalProperties:
anyOf:
- type: string
- type: integer
- type: number
- type: "null"
deepLinks:
type: object
additionalProperties:
type: string
classes:
type: string
group:
type: string
enum:
- nodes
- edges
displayState:
type: string
enum:
- show
- blur
- hide
profile:
type: object
additionalProperties: true
required:
- name
properties:
id:
anyOf:
- type: string
- type: integer
repository_id:
anyOf:
- type: string
- type: integer
name:
type: string
description:
type: string
default_mode:
type: string
filter_rules:
type: array
items:
$ref: "#/$defs/rule"
manual_overrides:
type: object
additionalProperties:
$ref: "#/$defs/displayState"
rule:
type: object
additionalProperties: true
required:
- action
properties:
action:
$ref: "#/$defs/displayState"
name:
type: string
description:
type: string
match:
type: object
additionalProperties: true
stableKey:
type: string
minLength: 1
maxLength: 240
pattern: "^[A-Za-z0-9][A-Za-z0-9._:/@+-]*$"