from typing import Any
from dooray_mcp.services.client import dooray_client
from dooray_mcp.types.template import (
CreateTemplateParams,
Template,
TemplateListResult,
UpdateTemplateParams,
)
async def list_templates(project_id: str, page: int = 0, size: int = 20) -> TemplateListResult:
path = f"/project/v1/projects/{project_id}/templates"
params: dict[str, Any] = {"page": page, "size": size}
response = await dooray_client.get(path, params=params)
result = response.get("result", [])
if isinstance(result, list):
total_count = response.get("header", {}).get("totalCount", len(result))
return TemplateListResult(totalCount=total_count, contents=result)
return TemplateListResult.model_validate(result)
async def get_template(project_id: str, template_id: str) -> Template:
path = f"/project/v1/projects/{project_id}/templates/{template_id}"
response = await dooray_client.get(path)
return Template.model_validate(response.get("result", {}))
async def create_template(project_id: str, params: CreateTemplateParams) -> Template:
path = f"/project/v1/projects/{project_id}/templates"
body: dict[str, Any] = {
"name": params.name,
"body": {
"mimeType": params.body_mime_type,
"content": params.body,
},
}
response = await dooray_client.post(path, json_data=body)
return Template.model_validate(response.get("result", {}))
async def update_template(
project_id: str, template_id: str, params: UpdateTemplateParams
) -> Template:
path = f"/project/v1/projects/{project_id}/templates/{template_id}"
body: dict[str, Any] = {}
if params.name is not None:
body["name"] = params.name
if params.body is not None:
body["body"] = {
"mimeType": params.body_mime_type,
"content": params.body,
}
response = await dooray_client.put(path, json_data=body)
return Template.model_validate(response.get("result", {}))
async def delete_template(project_id: str, template_id: str) -> bool:
path = f"/project/v1/projects/{project_id}/templates/{template_id}"
await dooray_client.delete(path)
return True