69 lines
1.5 KiB
Python
69 lines
1.5 KiB
Python
|
|
# generated by datamodel-codegen:
|
||
|
|
# filename: approval.json
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from enum import StrEnum
|
||
|
|
|
||
|
|
from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, conint, constr
|
||
|
|
|
||
|
|
|
||
|
|
class Decision(StrEnum):
|
||
|
|
APPROVE = 'APPROVE'
|
||
|
|
REJECT = 'REJECT'
|
||
|
|
|
||
|
|
|
||
|
|
class Approver(BaseModel):
|
||
|
|
model_config = ConfigDict(
|
||
|
|
extra='forbid',
|
||
|
|
)
|
||
|
|
id: constr(min_length=1)
|
||
|
|
role: constr(min_length=1)
|
||
|
|
|
||
|
|
|
||
|
|
class EffectType(StrEnum):
|
||
|
|
BID = 'BID'
|
||
|
|
INVITATION = 'INVITATION'
|
||
|
|
CONTROL_PLAN = 'CONTROL_PLAN'
|
||
|
|
DISPATCH_PLAN = 'DISPATCH_PLAN'
|
||
|
|
|
||
|
|
|
||
|
|
class Scope(BaseModel):
|
||
|
|
model_config = ConfigDict(
|
||
|
|
extra='forbid',
|
||
|
|
)
|
||
|
|
effect_type: EffectType
|
||
|
|
limits: dict[str, constr(pattern=r'^-?\d+(\.\d+)?$')]
|
||
|
|
|
||
|
|
|
||
|
|
class Validity(BaseModel):
|
||
|
|
model_config = ConfigDict(
|
||
|
|
extra='forbid',
|
||
|
|
)
|
||
|
|
from_: AwareDatetime = Field(..., alias='from')
|
||
|
|
to: AwareDatetime
|
||
|
|
|
||
|
|
|
||
|
|
class EvidenceVersions(BaseModel):
|
||
|
|
model_config = ConfigDict(
|
||
|
|
extra='forbid',
|
||
|
|
)
|
||
|
|
policy_pack_version: constr(min_length=1)
|
||
|
|
ledger_version: conint(ge=0, le=9007199254740991)
|
||
|
|
data_snapshot_refs: list[constr(pattern=r'^[0-9a-f]{64}$')]
|
||
|
|
|
||
|
|
|
||
|
|
class Approval(BaseModel):
|
||
|
|
model_config = ConfigDict(
|
||
|
|
extra='forbid',
|
||
|
|
)
|
||
|
|
id: constr(min_length=1)
|
||
|
|
proposal_digest: constr(pattern=r'^[0-9a-f]{64}$')
|
||
|
|
decision: Decision
|
||
|
|
approver: Approver
|
||
|
|
scope: Scope
|
||
|
|
validity: Validity
|
||
|
|
evidence_versions: EvidenceVersions
|
||
|
|
comment: str | None = None
|
||
|
|
decided_at: AwareDatetime
|