Complete governed campaign lifecycle actions
This commit is contained in:
@@ -42,6 +42,18 @@ class CampaignUpdateRequest(BaseModel):
|
||||
description: str | None = None
|
||||
|
||||
|
||||
class CampaignLifecycleMutationRequest(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
expected_state_token: str = Field(min_length=64, max_length=64)
|
||||
|
||||
|
||||
class CampaignCopyRequest(CampaignLifecycleMutationRequest):
|
||||
source_version_id: str = Field(min_length=1, max_length=36)
|
||||
external_id: str | None = Field(default=None, min_length=1, max_length=255)
|
||||
name: str | None = Field(default=None, min_length=1, max_length=255)
|
||||
|
||||
|
||||
class CampaignCreateMinimalRequest(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
@@ -141,6 +153,8 @@ class CampaignVersionResponse(BaseModel):
|
||||
None
|
||||
)
|
||||
delivery_mode_selected_at: datetime | None = None
|
||||
archived_at: datetime | None = None
|
||||
archived_by_user_id: str | None = None
|
||||
|
||||
@field_validator("editor_state", mode="before")
|
||||
@classmethod
|
||||
@@ -200,6 +214,19 @@ class CampaignResponse(BaseModel):
|
||||
updated_at: datetime
|
||||
|
||||
|
||||
class CampaignLifecycleActionResponse(BaseModel):
|
||||
allowed: bool
|
||||
reason: str | None = None
|
||||
|
||||
|
||||
class CampaignLifecyclePolicyResponse(BaseModel):
|
||||
policy_id: str
|
||||
policy_version: str
|
||||
state_token: str
|
||||
actions: dict[str, CampaignLifecycleActionResponse]
|
||||
provenance: dict[str, Any]
|
||||
|
||||
|
||||
class CampaignCreateResponse(BaseModel):
|
||||
campaign: CampaignResponse
|
||||
version: CampaignVersionResponse
|
||||
|
||||
Reference in New Issue
Block a user