Skip to main content

Crate greentic_x_contracts

Crate greentic_x_contracts 

Source
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§

AppendCollectionDefinition
Append-only collection declaration.
ContractManifest
Top-level descriptor for a contract package.
EventDeclaration
Event declaration exposed by the contract.
MigrationReference
Compatibility or migration source reference.
MutationRule
Patchable field declaration.
PolicyHookReference
Optional policy integration hook.
ResourceDefinition
Definition of a resource managed by a contract.
TransitionDefinition
Resource transition declaration.
ValidationIssue
Validation problem found in a manifest.

Enums§

MutationRuleKind
Whether a path is allowed or denied for patch operations.