greentic-interfaces 1.1.1

Greentic ABI: WIT contracts, generated bindings, thin mappers
Documentation
// SPDX-License-Identifier: MIT

package greentic:policy@1.0.0;

interface policy-api {
  use greentic:interfaces-types/types@0.1.0.{tenant-ctx};

  /// Canonical host error payload.
  record host-error {
    code: string,
    message: string,
  }

  /// Policy reference.
  record policy-ref {
    id: string,
    version: option<string>,
    uri: option<string>,
    extra: option<string>,
  }

  /// Policy input reference.
  record policy-input-ref {
    id: string,
    uri: option<string>,
    kind: option<string>,
    extra: option<string>,
  }

  /// Policy decision result.
  enum policy-status {
    allow,
    deny,
  }

  record policy-decision {
    status: policy-status,
    reasons: list<string>,
    extra: option<string>,
  }

  evaluate: func(ctx: tenant-ctx, policy: policy-ref, input: policy-input-ref) -> result<policy-decision, host-error>;
}

world policy-evaluator {
  export policy-api;
}