openclaw-meta-bridge / app /schemas.py
Ordo
Initial public release
0e84a1f
from datetime import datetime
from pydantic import BaseModel, Field
from .models import PageContext, Channel, RiskLevel, PublishMode
class MediaAttachment(BaseModel):
media_path: str
media_type: str = "image"
mime_type: str | None = None
alt_text: str | None = None
label: str | None = None
class NormalizedInboundEvent(BaseModel):
page_context: PageContext
platform_page_id: str
channel: Channel
event_type: str
sender_id_hash: str | None = None
object_id: str | None = None
parent_id: str | None = None
permalink_url: str | None = None
message_text: str | None = None
normalized_payload: dict = Field(default_factory=dict)
class CreateDraftRequest(BaseModel):
page_context: PageContext
channel: Channel
source_event_id: int | None = None
target_object_id: str | None = None
recipient_psid: str | None = None
draft_text: str
sources: list[str] = Field(default_factory=list)
media_attachments: list[MediaAttachment] = Field(default_factory=list)
media_required: bool = False
publish_mode: PublishMode = PublishMode.now
scheduled_publish_time: datetime | None = None
risk_level: RiskLevel = RiskLevel.medium
created_by: str = "openclaw"
class ApproveDraftRequest(BaseModel):
approved_by: str
edited_text: str | None = None
publish_mode: PublishMode | None = None
scheduled_publish_time: datetime | None = None
class EditDraftRequest(BaseModel):
edited_by: str
draft_text: str | None = None
sources: list[str] | None = None
media_attachments: list[MediaAttachment] | None = None
media_required: bool | None = None
publish_mode: PublishMode | None = None
scheduled_publish_time: datetime | None = None
class RejectDraftRequest(BaseModel):
rejected_by: str
reason: str
class PublishPagePostRequest(BaseModel):
page_context: PageContext
message: str
approved_by: str
sources: list[str] = Field(default_factory=list)
media_attachments: list[MediaAttachment] = Field(default_factory=list)
media_required: bool = False
publish_mode: PublishMode = PublishMode.now
scheduled_publish_time: datetime | None = None
class PublishReelRequest(BaseModel):
page_context: PageContext
video_path: str
description: str
approved_by: str
title: str | None = None
validation_only: bool = False
sources: list[str] = Field(default_factory=list)
class SendMessengerRequest(BaseModel):
page_context: PageContext
recipient_psid: str
message: str
approved_by: str
messaging_type: str = "RESPONSE"
class ReplyToCommentRequest(BaseModel):
page_context: PageContext
comment_id: str
message: str
approved_by: str
class ModerateCommentRequest(BaseModel):
page_context: PageContext
comment_id: str
action: str = Field(pattern="^(hide|unhide|delete)$")
approved_by: str
reason: str