$schema: "https://json-schema.org/draft/2020-12/schema" $id: "https://railiance.local/fabric/schemas/common.schema.yaml" title: "Railiance Fabric Common Definitions" type: object $defs: apiVersion: type: string const: "railiance.fabric/v1alpha1" graphId: type: string pattern: "^[a-z0-9][a-z0-9.-]*[a-z0-9]$" minLength: 3 maxLength: 160 lifecycle: type: string enum: - planned - active - deprecated - retired environment: type: string enum: - dev - staging - prod - all environments: type: array minItems: 1 uniqueItems: true items: $ref: "#/$defs/environment" criticality: type: string enum: - low - medium - high - critical dataClassification: type: string enum: - public - internal - confidential - restricted - secret authMethod: type: string enum: - none - oidc - jwt - mtls - kubernetes_service_account - openbao_token - static_secret - database_role - sts_token - api_key - unknown sourceLink: type: object additionalProperties: false required: - label properties: label: type: string minLength: 1 path: type: string minLength: 1 url: type: string format: uri ref: type: string minLength: 1 anyOf: - required: [path] - required: [url] - required: [ref] metadata: type: object additionalProperties: false required: - id - name - owner - repo - domain properties: id: $ref: "#/$defs/graphId" name: type: string minLength: 1 owner: type: string minLength: 1 repo: type: string minLength: 1 domain: type: string minLength: 1 source_links: type: array items: $ref: "#/$defs/sourceLink" compatibility: type: object additionalProperties: false properties: version: type: string minLength: 1 requires: type: array items: type: string minLength: 1 compatible_with: type: array items: $ref: "#/$defs/graphId" breaks: type: array items: type: string minLength: 1 notes: type: string minLength: 1 auth: type: object additionalProperties: false required: - method properties: method: $ref: "#/$defs/authMethod" audience: type: string minLength: 1 scopes: type: array items: type: string minLength: 1