You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
3.9 KiB
Python
148 lines
3.9 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Any
|
|
|
|
from pydantic import AliasChoices, Field
|
|
|
|
from iti.schemas import ItiModel
|
|
|
|
from .base import ExchangeOperation, ExchangeTemplateSourceKind
|
|
|
|
|
|
class ExchangeVariableSchema(ItiModel):
|
|
key: str
|
|
label: str
|
|
header: str | None = None
|
|
description: str | None = None
|
|
required: bool = False
|
|
example: str | None = None
|
|
|
|
|
|
class ExchangeTemplateLayoutSchema(ItiModel):
|
|
title: str | None = None
|
|
sheet_name: str | None = None
|
|
title_row: int | None = 1
|
|
header_row: int = 2
|
|
data_start_row: int | None = None
|
|
|
|
|
|
class ExchangeScopeSchema(ItiModel):
|
|
biz_domain: str
|
|
biz_obj: str
|
|
operation: ExchangeOperation = Field(
|
|
validation_alias=AliasChoices("operation", "templateKind", "taskKind")
|
|
)
|
|
|
|
|
|
class ExchangeTemplateCreateRequest(ExchangeScopeSchema):
|
|
code: str | None = None
|
|
name: str
|
|
description: str | None = None
|
|
layout: ExchangeTemplateLayoutSchema | None = None
|
|
meta: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
class ExchangeTemplateUpdateRequest(ItiModel):
|
|
name: str | None = None
|
|
description: str | None = None
|
|
status: str | None = None
|
|
current_version: str | None = None
|
|
layout: ExchangeTemplateLayoutSchema | None = None
|
|
meta: dict[str, Any] | None = None
|
|
|
|
|
|
class ExchangeTemplateVersionCreateRequest(ItiModel):
|
|
version: str
|
|
variables: list[ExchangeVariableSchema] | None = None
|
|
layout: ExchangeTemplateLayoutSchema | None = None
|
|
meta: dict[str, Any] = Field(default_factory=dict)
|
|
make_current: bool = True
|
|
|
|
|
|
class ExchangePlanRequest(ExchangeScopeSchema):
|
|
template_id: str | None = None
|
|
version_id: str | None = None
|
|
version: str | None = None
|
|
code: str | None = None
|
|
source_kind: ExchangeTemplateSourceKind | None = None
|
|
source_name: str | None = None
|
|
source_service: str | None = None
|
|
name: str | None = None
|
|
description: str | None = None
|
|
layout: ExchangeTemplateLayoutSchema | None = None
|
|
variables: list[ExchangeVariableSchema] | None = None
|
|
|
|
|
|
class ExchangePlanResolveRequest(ExchangePlanRequest):
|
|
pass
|
|
|
|
|
|
class ExchangePlanTemplateFileRequest(ExchangePlanResolveRequest):
|
|
pass
|
|
|
|
|
|
class ExchangeTaskCreateRequest(ExchangePlanRequest):
|
|
storage_key: str | None = None
|
|
input_payload: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
class ExchangeTaskRunRequest(ItiModel):
|
|
pass
|
|
|
|
|
|
class ExchangeTemplateResponse(ItiModel):
|
|
id: str
|
|
code: str
|
|
name: str
|
|
biz_domain: str
|
|
biz_obj: str
|
|
operation: str
|
|
status: str
|
|
description: str | None = None
|
|
current_version: str | None = None
|
|
layout: dict[str, Any] = Field(default_factory=dict)
|
|
meta: dict[str, Any] = Field(default_factory=dict)
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class ExchangeTemplateVersionResponse(ItiModel):
|
|
id: str
|
|
template_id: str
|
|
version: str
|
|
biz_domain: str
|
|
biz_obj: str
|
|
operation: str
|
|
published_at: datetime | None = None
|
|
file_key: str | None = None
|
|
checksum: str | None = None
|
|
layout: dict[str, Any] = Field(default_factory=dict)
|
|
variables: list[dict[str, Any]] = Field(default_factory=list)
|
|
meta: dict[str, Any] = Field(default_factory=dict)
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class ExchangeTaskResponse(ItiModel):
|
|
id: str
|
|
template_id: str | None = None
|
|
template_version_id: str | None = None
|
|
biz_domain: str
|
|
biz_obj: str
|
|
operation: str
|
|
status: str
|
|
requested_by: str | None = None
|
|
storage_key: str | None = None
|
|
success_count: int
|
|
failed_count: int
|
|
error_count: int
|
|
message: str | None = None
|
|
input_payload: dict[str, Any] = Field(default_factory=dict)
|
|
result_payload: dict[str, Any] = Field(default_factory=dict)
|
|
started_at: datetime | None = None
|
|
finished_at: datetime | None = None
|
|
meta: dict[str, Any] = Field(default_factory=dict)
|
|
created_at: datetime
|
|
updated_at: datetime
|