Expand description
Contract descriptors and structural validation helpers for Greentic-X.
use greentic_x_contracts::{
ContractManifest, EventDeclaration, MutationRule, ResourceDefinition, TransitionDefinition,
ValidationIssue,
};
use greentic_x_types::{CompatibilityMode, CompatibilityReference, ContractId, ContractVersion, SchemaReference};
let manifest = ContractManifest {
contract_id: ContractId::new("gx.case").expect("static contract id should be valid"),
version: ContractVersion::new("v1").expect("static version should be valid"),
description: "Shared operational case contract".to_owned(),
resources: vec![ResourceDefinition {
resource_type: "case".to_owned(),
schema: SchemaReference::new(
"greentic-x://contracts/case/resources/case",
ContractVersion::new("v1").expect("static version should be valid"),
)
.expect("static schema should be valid"),
patch_rules: vec![MutationRule::allow("/title"), MutationRule::allow("/severity")],
append_collections: vec![],
transitions: vec![TransitionDefinition::new("triaged", "resolved")],
}],
compatibility: vec![CompatibilityReference {
schema: SchemaReference::new(
"greentic-x://contracts/case/compatibility",
ContractVersion::new("v1").expect("static version should be valid"),
)
.expect("static schema should be valid"),
mode: CompatibilityMode::BackwardCompatible,
}],
event_declarations: vec![EventDeclaration::resource_created()],
policy_hook: None,
migration_from: Vec::new(),
};
let issues = manifest.validate();
assert!(issues.is_empty(), "unexpected validation issues: {issues:?}");Structs§
- Append
Collection Definition - Append-only collection declaration.
- Contract
Manifest - Top-level descriptor for a contract package.
- Event
Declaration - Event declaration exposed by the contract.
- Migration
Reference - Compatibility or migration source reference.
- Mutation
Rule - Patchable field declaration.
- Policy
Hook Reference - Optional policy integration hook.
- Resource
Definition - Definition of a resource managed by a contract.
- Transition
Definition - Resource transition declaration.
- Validation
Issue - Validation problem found in a manifest.
Enums§
- Mutation
Rule Kind - Whether a path is allowed or denied for patch operations.