{"openapi":"3.1.0","info":{"title":"secretary-api","version":"0.1.0"},"paths":{"/api/health":{"get":{"tags":["health"],"summary":"Health Check","operationId":"health_check_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Check Api Health Get"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}},"/api/access/me":{"get":{"tags":["access"],"summary":"Get My Access","operationId":"get_my_access_api_access_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get My Access Api Access Me Get"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/access/workspaces/{workspace_code}/users":{"post":{"tags":["access"],"summary":"Upsert Workspace Access","operationId":"upsert_workspace_access_api_access_workspaces__workspace_code__users_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_code","in":"path","required":true,"schema":{"type":"string","title":"Workspace Code"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceAccessRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upsert Workspace Access Api Access Workspaces  Workspace Code  Users Post"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/access/candidates":{"get":{"tags":["access"],"summary":"List Admin Candidates","operationId":"list_admin_candidates_api_access_candidates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Admin Candidates Api Access Candidates Get"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/access/admins":{"get":{"tags":["access"],"summary":"List Admin Assignments","operationId":"list_admin_assignments_api_access_admins_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Admin Assignments Api Access Admins Get"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["access"],"summary":"Upsert Admin Assignment","operationId":"upsert_admin_assignment_api_access_admins_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAssignmentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upsert Admin Assignment Api Access Admins Post"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/access/admins/default":{"patch":{"tags":["access"],"summary":"Set Default Admin","operationId":"set_default_admin_api_access_admins_default_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultAdminRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Set Default Admin Api Access Admins Default Patch"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/access/admins/{assignment_id}":{"delete":{"tags":["access"],"summary":"Delete Admin Assignment","operationId":"delete_admin_assignment_api_access_admins__assignment_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"assignment_id","in":"path","required":true,"schema":{"type":"integer","title":"Assignment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Delete Admin Assignment Api Access Admins  Assignment Id  Delete"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/internal/notification-recipients":{"get":{"tags":["internal"],"summary":"List Notification Recipients","description":"Return project-scoped notification recipients to ABC API only.\n\nSecretary is the source of truth for workspace/project administrators.\nThis endpoint is intentionally protected by the service API key and is\nnot exposed through the public user-facing API contract.","operationId":"list_notification_recipients_api_internal_notification_recipients_get","parameters":[{"name":"project_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","title":"Project Id"}},{"name":"channel_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","title":"Channel Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Notification Recipients Api Internal Notification Recipients Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/workspaces":{"get":{"tags":["tickets"],"summary":"List Workspaces","operationId":"list_workspaces_api_workspaces_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WorkspaceSummary"},"type":"array","title":"Response List Workspaces Api Workspaces Get"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/workspaces/{workspace_code}/form-template":{"get":{"tags":["tickets"],"summary":"Get Workspace Form Template","operationId":"get_workspace_form_template_api_workspaces__workspace_code__form_template_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_code","in":"path","required":true,"schema":{"type":"string","title":"Workspace Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceFormTemplateResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/workspaces/{workspace_code}/tickets":{"post":{"tags":["tickets"],"summary":"지원 요청 등록","description":"application/json 또는 multipart/form-data로 지원 요청을 등록합니다. multipart 요청은 title, description, category_code, ticket_type, is_secret, requires_approval, extra_fields(JSON 문자열), attachments(반복 파일 필드)를 지원합니다. 작성자 식별자와 SSO 프로필은 인증 사용자 정보로 서버가 설정합니다.","operationId":"create_ticket_api_workspaces__workspace_code__tickets_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_code","in":"path","required":true,"schema":{"type":"string","title":"Workspace Code"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Idempotency-Key"}}],"responses":{"200":{"description":"생성된 지원 요청의 식별자와 동기화 상태","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketCreateResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketCreateRequest"}},"multipart/form-data":{"schema":{"type":"object","required":["title","description"],"properties":{"title":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","minLength":1},"category_code":{"type":"string"},"ticket_type":{"type":"string","default":"GENERAL"},"is_secret":{"type":"boolean","default":false},"requires_approval":{"type":"boolean","default":false},"extra_fields":{"type":"string","description":"동적 필드 JSON 객체를 문자열로 전달"},"attachments":{"type":"array","items":{"type":"string","format":"binary"},"description":"반복 가능한 첨부파일 필드"}}}}}}},"get":{"tags":["tickets"],"summary":"List Workspace Tickets","operationId":"list_workspace_tickets_api_workspaces__workspace_code__tickets_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_code","in":"path","required":true,"schema":{"type":"string","title":"Workspace Code"}},{"name":"requesterId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requesterid"}},{"name":"requesterTenantId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requestertenantid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SupportTicketRecord"},"title":"Response List Workspace Tickets Api Workspaces  Workspace Code  Tickets Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/statuses":{"get":{"tags":["support-tickets"],"summary":"Get Feedback Statuses","operationId":"get_feedback_statuses_api_tickets_statuses_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"projectId","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","title":"Projectid"}},{"name":"channelId","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},{"type":"null"}],"title":"Channelid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SupportFeedbackStatusRecord"},"title":"Response Get Feedback Statuses Api Tickets Statuses Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/metrics":{"get":{"tags":["support-tickets"],"summary":"Get Feedback Metrics","operationId":"get_feedback_metrics_api_tickets_metrics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"projectId","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$","title":"Projectid"}},{"name":"channelId","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},{"type":"null"}],"title":"Channelid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportFeedbackMetrics"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets":{"get":{"tags":["support-tickets"],"summary":"List Tickets","operationId":"list_tickets_api_tickets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SupportTicketRecord"},"type":"array","title":"Response List Tickets Api Tickets Get"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/tickets/{ticket_id}/feedback-status":{"patch":{"tags":["support-tickets"],"summary":"Update Feedback Status","operationId":"update_feedback_status_api_tickets__ticket_id__feedback_status_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackStatusUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketMutationResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/{ticket_id}":{"get":{"tags":["support-tickets"],"summary":"Get Ticket","operationId":"get_ticket_api_tickets__ticket_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketRecord"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}},"put":{"tags":["support-tickets"],"summary":"Update Ticket","operationId":"update_ticket_api_tickets__ticket_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketRecord"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}},"delete":{"tags":["support-tickets"],"summary":"Delete Ticket","operationId":"delete_ticket_api_tickets__ticket_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"anyOf":[{"type":"integer"},{"type":"boolean"}]},"title":"Response Delete Ticket Api Tickets  Ticket Id  Delete"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/{ticket_id}/read":{"patch":{"tags":["support-tickets"],"summary":"Mark Ticket Read","operationId":"mark_ticket_read_api_tickets__ticket_id__read_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Mark Ticket Read Api Tickets  Ticket Id  Read Patch"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/{ticket_id}/attachments/{attachment_id}":{"get":{"tags":["support-tickets"],"summary":"Download Ticket Attachment","operationId":"download_ticket_attachment_api_tickets__ticket_id__attachments__attachment_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"attachment_id","in":"path","required":true,"schema":{"type":"integer","title":"Attachment Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/{ticket_id}/assignees":{"get":{"tags":["support-tickets"],"summary":"List Ticket Assignees","operationId":"list_ticket_assignees_api_tickets__ticket_id__assignees_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TicketAssigneeCandidate"},"title":"Response List Ticket Assignees Api Tickets  Ticket Id  Assignees Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/{ticket_id}/assignee":{"patch":{"tags":["support-tickets"],"summary":"Update Ticket Assignee","operationId":"update_ticket_assignee_api_tickets__ticket_id__assignee_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketAssigneeUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketRecord"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/{ticket_id}/internal-memos":{"get":{"tags":["support-tickets","internal-memos"],"summary":"내부 메모 목록 조회","description":"관리자 권한이 있는 사용자만 조회할 수 있습니다. 일반 댓글은 반환하지 않으며, 내부 메모는 사용자용 댓글 응답에 포함되지 않습니다.","operationId":"list_internal_memos_api_tickets__ticket_id__internal_memos_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"responses":{"200":{"description":"관리자 전용 내부 메모 목록","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SupportTicketCommentRecord"},"title":"Response List Internal Memos Api Tickets  Ticket Id  Internal Memos Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}},"post":{"tags":["support-tickets","internal-memos"],"summary":"내부 메모 등록","description":"관리자 전용 메모를 등록합니다. 내부 메모는 고객용 댓글 목록에 노출되지 않습니다.","operationId":"create_internal_memo_api_tickets__ticket_id__internal_memos_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalMemoCreateRequest"}}}},"responses":{"200":{"description":"생성된 내부 메모","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketCommentRecord"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/{ticket_id}/comments":{"get":{"tags":["support-tickets","comments"],"summary":"공개 댓글 목록 조회","description":"지원 요청의 공개 댓글만 반환합니다. 내부 메모는 관리자라도 이 경로에서는 반환하지 않고 별도의 내부 메모 API로만 조회합니다.","operationId":"list_ticket_comments_api_tickets__ticket_id__comments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"responses":{"200":{"description":"공개 댓글 목록","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SupportTicketCommentRecord"},"title":"Response List Ticket Comments Api Tickets  Ticket Id  Comments Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}},"post":{"tags":["support-tickets","comments"],"summary":"공개 댓글 등록","description":"공개 댓글을 등록합니다. 작성자와 테넌트는 요청 본문을 신뢰하지 않고 SSO 인증 사용자 정보로 결정합니다. 관리자 전용 메모는 내부 메모 API를 사용합니다.","operationId":"create_ticket_comment_api_tickets__ticket_id__comments_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketCommentCreateRequest"}}}},"responses":{"200":{"description":"생성된 공개 댓글","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketCommentRecord"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/{ticket_id}/comments/attachments":{"post":{"tags":["support-tickets","comments","attachments"],"summary":"첨부파일과 함께 공개 댓글 등록","description":"multipart/form-data로 공개 댓글과 첨부파일을 등록합니다. content는 댓글 본문이고 attachments는 반복 가능한 파일 필드입니다. 내부 메모 여부와 작성자 정보는 인증 권한으로 서버가 결정합니다.","operationId":"create_ticket_comment_with_attachments_api_tickets__ticket_id__comments_attachments_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_ticket_comment_with_attachments_api_tickets__ticket_id__comments_attachments_post"}}}},"responses":{"200":{"description":"첨부파일이 연결된 생성 댓글","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketCommentRecord"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/{ticket_id}/internal-memos/{memo_id}":{"put":{"tags":["support-tickets","internal-memos"],"summary":"내부 메모 수정","description":"관리자 전용 내부 메모를 수정합니다.","operationId":"update_internal_memo_api_tickets__ticket_id__internal_memos__memo_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"memo_id","in":"path","required":true,"schema":{"type":"integer","title":"Memo Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalMemoUpdateRequest"}}}},"responses":{"200":{"description":"수정된 내부 메모","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketCommentRecord"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}},"delete":{"tags":["support-tickets","internal-memos"],"summary":"내부 메모 삭제","description":"관리자 전용 내부 메모를 삭제합니다.","operationId":"delete_internal_memo_api_tickets__ticket_id__internal_memos__memo_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"memo_id","in":"path","required":true,"schema":{"type":"integer","title":"Memo Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"responses":{"200":{"description":"삭제 결과","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketDeleteResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/{ticket_id}/comments/{comment_id}":{"put":{"tags":["support-tickets","comments"],"summary":"공개 댓글 수정","description":"댓글 작성자 본인의 공개 댓글을 수정합니다. 내부 메모는 별도 내부 메모 API로 수정합니다.","operationId":"update_ticket_comment_api_tickets__ticket_id__comments__comment_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"integer","title":"Comment Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketCommentUpdateRequest"}}}},"responses":{"200":{"description":"수정된 공개 댓글","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketCommentRecord"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}},"delete":{"tags":["support-tickets","comments"],"summary":"공개 댓글 삭제","description":"댓글 작성자 본인 또는 관리자 권한으로 공개 댓글을 삭제합니다.","operationId":"delete_ticket_comment_api_tickets__ticket_id__comments__comment_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"comment_id","in":"path","required":true,"schema":{"type":"integer","title":"Comment Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"responses":{"200":{"description":"삭제 결과","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketDeleteResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/{ticket_id}/approve":{"post":{"tags":["support-tickets"],"summary":"Approve Ticket","operationId":"approve_ticket_api_tickets__ticket_id__approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketMutationResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/{ticket_id}/issue":{"post":{"tags":["support-tickets"],"summary":"Create Issue","operationId":"create_issue_api_tickets__ticket_id__issue_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketMutationResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}},"/api/tickets/{ticket_id}/issue-link-status":{"post":{"tags":["support-tickets"],"summary":"Sync Issue Link Status","operationId":"sync_issue_link_status_api_tickets__ticket_id__issue_link_status_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"workspaceCode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspacecode"}},{"name":"abcFeedbackId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abcfeedbackid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketIssueLinkStatusSyncRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"boolean"}]},"title":"Response Sync Issue Link Status Api Tickets  Ticket Id  Issue Link Status Post"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}},"description":"Internal Server Error"}}}}},"components":{"schemas":{"AdminAssignmentRequest":{"properties":{"user_id":{"type":"string","maxLength":100,"minLength":1,"title":"User Id"},"tenant_id":{"type":"string","maxLength":100,"minLength":1,"title":"Tenant Id"},"email":{"anyOf":[{"type":"string","maxLength":320},{"type":"null"}],"title":"Email"},"name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Name"},"department":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Department"},"phone_number":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Phone Number"},"tenant_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tenant Ids"},"role_code":{"type":"string","maxLength":40,"minLength":1,"title":"Role Code"},"workspace_code":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Workspace Code"}},"type":"object","required":["user_id","tenant_id","role_code"],"title":"AdminAssignmentRequest"},"ApiErrorResponse":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code","examples":["NOT_FOUND"]},"message":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"title":"Message","description":"Human-readable error message"},"error":{"type":"string","title":"Error","description":"Error category"},"statusCode":{"type":"integer","title":"Statuscode","description":"HTTP status code","examples":[404]},"path":{"type":"string","title":"Path","description":"Request path","examples":["/api/tickets/1"]}},"type":"object","required":["code","message","error","statusCode","path"],"title":"ApiErrorResponse","description":"Stable error shape shared with the NestJS API."},"Body_create_ticket_comment_with_attachments_api_tickets__ticket_id__comments_attachments_post":{"properties":{"content":{"type":"string","title":"Content","description":"공개 댓글 본문","default":""},"attachments":{"anyOf":[{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array"},{"type":"null"}],"title":"Attachments","description":"댓글에 연결할 파일. 같은 필드명을 반복해 여러 파일을 첨부할 수 있습니다."}},"type":"object","title":"Body_create_ticket_comment_with_attachments_api_tickets__ticket_id__comments_attachments_post"},"DefaultAdminRequest":{"properties":{"workspace_code":{"type":"string","maxLength":50,"minLength":1,"title":"Workspace Code"},"user_id":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"User Id"},"tenant_id":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Tenant Id"}},"type":"object","required":["workspace_code"],"title":"DefaultAdminRequest"},"FeedbackStatusUpdateRequest":{"properties":{"feedback_status":{"type":"string","enum":["INIT","ON_REVIEW","DETAILED_REVIEW","IN_PROGRESS","RESOLVED","PENDING"],"title":"Feedback Status"}},"type":"object","required":["feedback_status"],"title":"FeedbackStatusUpdateRequest"},"InternalMemoCreateRequest":{"properties":{"content":{"type":"string","minLength":1,"title":"Content","description":"관리자만 조회할 내부 메모 본문"}},"type":"object","required":["content"],"title":"InternalMemoCreateRequest"},"InternalMemoUpdateRequest":{"properties":{"content":{"type":"string","minLength":1,"title":"Content","description":"수정할 내부 메모 본문"}},"type":"object","required":["content"],"title":"InternalMemoUpdateRequest"},"SupportActivityItem":{"properties":{"id":{"type":"string","title":"Id"},"label":{"type":"string","title":"Label"},"detail":{"type":"string","title":"Detail"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["id","label","detail","timestamp"],"title":"SupportActivityItem"},"SupportAttachmentRecord":{"properties":{"attachment_id":{"type":"integer","title":"Attachment Id","description":"첨부파일 식별자"},"original_file_name":{"type":"string","title":"Original File Name","description":"사용자가 업로드한 원본 파일명"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mime Type","description":"MIME 타입"},"file_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"File Size","description":"파일 크기(bytes)"},"created_at":{"type":"string","title":"Created At","description":"첨부파일 생성 시각"}},"type":"object","required":["attachment_id","original_file_name","created_at"],"title":"SupportAttachmentRecord"},"SupportFeedbackMetrics":{"properties":{"project_id":{"type":"string","title":"Project Id"},"channel_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel Id"},"today_first_count":{"type":"integer","title":"Today First Count"},"answer_waiting_count":{"type":"integer","title":"Answer Waiting Count"},"issue_linked_count":{"type":"integer","title":"Issue Linked Count"},"issue_link_rate":{"type":"number","title":"Issue Link Rate"},"average_processing_minutes":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Processing Minutes"}},"type":"object","required":["project_id","today_first_count","answer_waiting_count","issue_linked_count","issue_link_rate"],"title":"SupportFeedbackMetrics"},"SupportFeedbackStatusRecord":{"properties":{"feedback_id":{"type":"string","title":"Feedback Id"},"feedback_status":{"type":"string","enum":["INIT","ON_REVIEW","DETAILED_REVIEW","IN_PROGRESS","RESOLVED","PENDING"],"title":"Feedback Status"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["feedback_id","feedback_status","updated_at"],"title":"SupportFeedbackStatusRecord"},"SupportTicketCommentRecord":{"properties":{"comment_id":{"type":"integer","title":"Comment Id","description":"댓글 또는 내부 메모 식별자"},"ticket_id":{"type":"integer","title":"Ticket Id","description":"지원 요청 식별자"},"author_id":{"type":"string","title":"Author Id","description":"작성자 식별자"},"author_tenant_id":{"type":"string","title":"Author Tenant Id","description":"작성자 테넌트 식별자"},"author_name":{"type":"string","title":"Author Name","description":"작성자 표시명"},"content":{"type":"string","title":"Content","description":"댓글 또는 내부 메모 본문"},"is_internal":{"type":"boolean","title":"Is Internal","description":"관리자 전용 내부 메모 여부"},"comment_type":{"type":"string","title":"Comment Type","description":"COMMENT 또는 INTERNAL_MEMO","default":"COMMENT"},"created_at":{"type":"string","title":"Created At","description":"작성 시각"},"updated_at":{"type":"string","title":"Updated At","description":"수정 시각"},"edited_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Edited At","description":"마지막 수정 시각"},"attachments":{"items":{"$ref":"#/components/schemas/SupportAttachmentRecord"},"type":"array","title":"Attachments"},"can_edit":{"type":"boolean","title":"Can Edit","default":false},"can_delete":{"type":"boolean","title":"Can Delete","default":false}},"type":"object","required":["comment_id","ticket_id","author_id","author_tenant_id","author_name","content","is_internal","created_at","updated_at"],"title":"SupportTicketCommentRecord"},"SupportTicketRecord":{"properties":{"ticket_id":{"type":"integer","title":"Ticket Id"},"workspace_code":{"type":"string","title":"Workspace Code"},"workspace_name":{"type":"string","title":"Workspace Name"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"requester_id":{"type":"string","title":"Requester Id"},"requester_tenant_id":{"type":"string","title":"Requester Tenant Id"},"requester_contact":{"type":"string","title":"Requester Contact"},"requester_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Email"},"requester_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Name"},"requester_department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Department"},"requester_phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Phone Number"},"requester_uuid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Uuid"},"requester_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Position"},"requester_grade":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Grade"},"requester_affiliation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requester Affiliation"},"category_code":{"type":"string","title":"Category Code"},"ticket_type":{"type":"string","title":"Ticket Type"},"requires_approval":{"type":"boolean","title":"Requires Approval"},"status_code":{"type":"string","title":"Status Code"},"feedback_status":{"type":"string","title":"Feedback Status"},"approval_status":{"type":"string","title":"Approval Status"},"sync_status":{"type":"string","title":"Sync Status"},"issue_link_status":{"type":"string","title":"Issue Link Status"},"external_issue_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Issue Status"},"assignee_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee Id"},"assignee_tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee Tenant Id"},"assignee_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee Name"},"assignee_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee Email"},"is_secret":{"type":"boolean","title":"Is Secret"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"is_new":{"type":"boolean","title":"Is New","default":true},"extra_fields":{"additionalProperties":{"type":"string"},"type":"object","title":"Extra Fields"},"attachments":{"items":{"$ref":"#/components/schemas/SupportAttachmentRecord"},"type":"array","title":"Attachments"},"activity":{"items":{"$ref":"#/components/schemas/SupportActivityItem"},"type":"array","title":"Activity"}},"type":"object","required":["ticket_id","workspace_code","workspace_name","title","description","requester_id","requester_tenant_id","requester_contact","requester_email","requester_name","requester_department","requester_phone_number","category_code","ticket_type","requires_approval","status_code","feedback_status","approval_status","sync_status","issue_link_status","is_secret","created_at","updated_at","extra_fields","activity"],"title":"SupportTicketRecord"},"TicketAssigneeCandidate":{"properties":{"user_id":{"type":"string","title":"User Id"},"tenant_id":{"type":"string","title":"Tenant Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"role_code":{"type":"string","title":"Role Code"}},"type":"object","required":["user_id","tenant_id","role_code"],"title":"TicketAssigneeCandidate"},"TicketAssigneeUpdateRequest":{"properties":{"assignee_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee Id"},"assignee_tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee Tenant Id"}},"type":"object","title":"TicketAssigneeUpdateRequest"},"TicketCommentCreateRequest":{"properties":{"requester_id":{"type":"string","maxLength":100,"minLength":1,"title":"Requester Id","description":"인증된 작성자 식별자. API 서버가 로그인 사용자 정보로 덮어쓴다."},"requester_tenant_id":{"type":"string","maxLength":100,"minLength":1,"title":"Requester Tenant Id","description":"인증된 작성자 테넌트 식별자. API 서버가 로그인 사용자 정보로 덮어쓴다."},"author_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Author Name","description":"작성자 표시명. 인증 사용자 정보로 서버가 결정한다."},"content":{"type":"string","title":"Content","description":"댓글 본문","default":""},"is_internal":{"type":"boolean","title":"Is Internal","description":"서버 내부용 필드. 일반 댓글 API에서는 무시되며 내부 메모 API가 true로 설정한다.","default":false}},"type":"object","required":["requester_id","requester_tenant_id"],"title":"TicketCommentCreateRequest"},"TicketCommentUpdateRequest":{"properties":{"requester_id":{"type":"string","maxLength":100,"minLength":1,"title":"Requester Id"},"requester_tenant_id":{"type":"string","maxLength":100,"minLength":1,"title":"Requester Tenant Id"},"content":{"type":"string","minLength":1,"title":"Content"}},"type":"object","required":["requester_id","requester_tenant_id","content"],"title":"TicketCommentUpdateRequest"},"TicketCreateResponse":{"properties":{"ticket_id":{"type":"integer","title":"Ticket Id"},"workspace_code":{"type":"string","title":"Workspace Code"},"status_code":{"type":"string","title":"Status Code"},"feedback_status":{"type":"string","title":"Feedback Status"},"sync_status":{"type":"string","title":"Sync Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["ticket_id","workspace_code","status_code","feedback_status","sync_status","message"],"title":"TicketCreateResponse"},"TicketDeleteResponse":{"properties":{"deleted":{"type":"boolean","title":"Deleted","description":"삭제 처리 여부"},"ticket_id":{"type":"integer","title":"Ticket Id","description":"지원 요청 식별자"},"comment_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Comment Id","description":"삭제된 댓글 또는 내부 메모 식별자"},"feedback_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feedback Id","description":"연결된 ABC 피드백 UUID"}},"type":"object","required":["deleted","ticket_id"],"title":"TicketDeleteResponse"},"TicketIssueLinkStatusSyncRequest":{"properties":{"linked":{"type":"boolean","title":"Linked"}},"type":"object","required":["linked"],"title":"TicketIssueLinkStatusSyncRequest"},"TicketMutationResponse":{"properties":{"ticket_id":{"type":"integer","title":"Ticket Id"},"status_code":{"type":"string","title":"Status Code"},"feedback_status":{"type":"string","title":"Feedback Status"},"approval_status":{"type":"string","title":"Approval Status"},"issue_link_status":{"type":"string","title":"Issue Link Status"},"external_issue_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Issue Status"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["ticket_id","status_code","feedback_status","approval_status","issue_link_status","updated_at"],"title":"TicketMutationResponse"},"TicketUpdateRequest":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Description"},"requester_contact":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Requester Contact"},"is_secret":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Secret"},"extra_fields":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Extra Fields"}},"type":"object","title":"TicketUpdateRequest"},"WorkspaceAccessRequest":{"properties":{"user_id":{"type":"string","maxLength":100,"minLength":1,"title":"User Id"},"tenant_id":{"type":"string","maxLength":100,"minLength":1,"title":"Tenant Id"},"workspace_role":{"type":"string","maxLength":30,"title":"Workspace Role","default":"END_USER"},"can_read":{"type":"boolean","title":"Can Read","default":true},"can_write":{"type":"boolean","title":"Can Write","default":false},"can_manage":{"type":"boolean","title":"Can Manage","default":false},"can_approve":{"type":"boolean","title":"Can Approve","default":false},"page_scope":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Page Scope"}},"type":"object","required":["user_id","tenant_id"],"title":"WorkspaceAccessRequest"},"WorkspaceFormField":{"properties":{"field_code":{"type":"string","title":"Field Code"},"label":{"type":"string","title":"Label"},"field_type":{"type":"string","title":"Field Type"},"required":{"type":"boolean","title":"Required","default":false}},"type":"object","required":["field_code","label","field_type"],"title":"WorkspaceFormField"},"WorkspaceFormTemplateResponse":{"properties":{"workspace_code":{"type":"string","title":"Workspace Code"},"workspace_name":{"type":"string","title":"Workspace Name"},"requires_approval":{"type":"boolean","title":"Requires Approval"},"fields":{"items":{"$ref":"#/components/schemas/WorkspaceFormField"},"type":"array","title":"Fields"}},"type":"object","required":["workspace_code","workspace_name","requires_approval","fields"],"title":"WorkspaceFormTemplateResponse"},"WorkspaceSummary":{"properties":{"workspace_code":{"type":"string","title":"Workspace Code"},"workspace_name":{"type":"string","title":"Workspace Name"},"workspace_type":{"type":"string","title":"Workspace Type"}},"type":"object","required":["workspace_code","workspace_name","workspace_type"],"title":"WorkspaceSummary"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}},"servers":[{"url":"/secretary-docs"}]}