first commit
This commit is contained in:
@@ -0,0 +1 @@
|
||||
"""Pydantic schemas for secretary-api."""
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,119 @@
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class TicketCreateRequest(BaseModel):
|
||||
workspace_code: str = Field(default="", max_length=50)
|
||||
requester_id: str = Field(..., min_length=1, max_length=100)
|
||||
requester_tenant_id: str = Field(..., min_length=1, max_length=100)
|
||||
requester_contact: str | None = Field(default=None, max_length=100)
|
||||
title: str = Field(..., min_length=1, max_length=255)
|
||||
description: str = Field(..., min_length=1)
|
||||
category_code: str | None = Field(default=None, max_length=20)
|
||||
ticket_type: str = Field(default="GENERAL")
|
||||
requires_approval: bool = False
|
||||
extra_fields: dict[str, str] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class TicketCreateResponse(BaseModel):
|
||||
ticket_id: int
|
||||
workspace_code: str
|
||||
status_code: str
|
||||
sync_status: str
|
||||
message: str
|
||||
|
||||
|
||||
class WorkspaceSummary(BaseModel):
|
||||
workspace_code: str
|
||||
workspace_name: str
|
||||
workspace_type: str
|
||||
|
||||
|
||||
class WorkspaceFormField(BaseModel):
|
||||
field_code: str
|
||||
label: str
|
||||
field_type: str
|
||||
required: bool = False
|
||||
|
||||
|
||||
class WorkspaceFormTemplateResponse(BaseModel):
|
||||
workspace_code: str
|
||||
workspace_name: str
|
||||
requires_approval: bool
|
||||
fields: list[WorkspaceFormField]
|
||||
|
||||
|
||||
class SupportActivityItem(BaseModel):
|
||||
id: str
|
||||
label: str
|
||||
detail: str
|
||||
timestamp: str
|
||||
|
||||
|
||||
class SupportAttachmentRecord(BaseModel):
|
||||
attachment_id: int
|
||||
original_file_name: str
|
||||
mime_type: str | None = None
|
||||
file_size: int | None = None
|
||||
created_at: str
|
||||
|
||||
|
||||
class TicketCommentCreateRequest(BaseModel):
|
||||
requester_id: str = Field(..., min_length=1, max_length=100)
|
||||
requester_tenant_id: str = Field(..., min_length=1, max_length=100)
|
||||
author_name: str | None = Field(default=None, max_length=100)
|
||||
content: str = Field(..., min_length=1)
|
||||
is_internal: bool = False
|
||||
|
||||
|
||||
class TicketCommentUpdateRequest(BaseModel):
|
||||
requester_id: str = Field(..., min_length=1, max_length=100)
|
||||
requester_tenant_id: str = Field(..., min_length=1, max_length=100)
|
||||
content: str = Field(..., min_length=1)
|
||||
|
||||
|
||||
class TicketIssueLinkStatusSyncRequest(BaseModel):
|
||||
linked: bool
|
||||
|
||||
|
||||
class SupportTicketCommentRecord(BaseModel):
|
||||
comment_id: int
|
||||
ticket_id: int
|
||||
author_id: str
|
||||
author_tenant_id: str
|
||||
author_name: str
|
||||
content: str
|
||||
is_internal: bool
|
||||
created_at: str
|
||||
updated_at: str
|
||||
edited_at: str | None
|
||||
|
||||
|
||||
class SupportTicketRecord(BaseModel):
|
||||
ticket_id: int
|
||||
workspace_code: str
|
||||
workspace_name: str
|
||||
title: str
|
||||
description: str
|
||||
requester_id: str
|
||||
requester_tenant_id: str
|
||||
requester_contact: str
|
||||
category_code: str
|
||||
ticket_type: str
|
||||
requires_approval: bool
|
||||
status_code: str
|
||||
approval_status: str
|
||||
sync_status: str
|
||||
issue_link_status: str
|
||||
created_at: str
|
||||
updated_at: str
|
||||
extra_fields: dict[str, str]
|
||||
attachments: list[SupportAttachmentRecord] = Field(default_factory=list)
|
||||
activity: list[SupportActivityItem]
|
||||
|
||||
|
||||
class TicketMutationResponse(BaseModel):
|
||||
ticket_id: int
|
||||
status_code: str
|
||||
approval_status: str
|
||||
issue_link_status: str
|
||||
updated_at: str
|
||||
Reference in New Issue
Block a user