ARTEX 현재 시스템 문서
전체 문서
이 페이지 목차

API 요청·응답·완료 의미 참조

API 요청·응답·완료 의미 참조 · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

이 문서는 261개 등록 operation의 wire 입력, 직접 JSON variant, 오류와 완료 경계를 handler AST와 route registration에서 색인한다. 공유 handler의 method branch와 기존 required 후보 56개는 source control-flow를 별도로 대조했다. 그 밖의 field requiredness와 helper/derived schema는 P/U이며, route 261개를 field-level semantic 완료율로 사용하지 않는다. C는 해당 행의 직접 branch/shape를 확인했다는 뜻이고 P는 일부 helper/derived type이 남았으며 U는 직접 shape를 확정하지 못했다는 뜻이다. 실행 성공이나 외부 효과 완료를 뜻하지 않는다.

공통 wire 규칙

공통 wire 규칙 · 관계

이 대상을 사용하는 기능·모듈·계약 · 2개

전체 관계 2개 · 종류 선택·관계도

공유 nested type

Operation field가 아래 type을 참조하면 이 표가 알려진 JSON member를 소유한다. custom unmarshal/validation은 consumer handler가 추가할 수 있다.

db.TrafficRef

JSON field wire type absent/null
traffic_id string (string) zero value; 별도 validation 확인
role string (string) zero value; 별도 validation 확인
note string (string) zero value; 별도 validation 확인

notify.Filter

JSON field wire type absent/null
min_severity string (string) zero value; 별도 validation 확인
task_ids array[integer] ([]int64) zero value; 별도 validation 확인
asset_ids array[integer] ([]int64) zero value; 별도 validation 확인
vulnclass_include array[string] ([]string) zero value; 별도 validation 확인
vulnclass_exclude array[string] ([]string) zero value; 별도 validation 확인
on_status_change boolean (bool) zero value; 별도 validation 확인

server.chatAttachment

JSON field wire type absent/null
name string (string) zero value; 별도 validation 확인
path string (string) zero value; 별도 validation 확인
size integer (int64) zero value; 별도 validation 확인
abs string (string) zero value; 별도 validation 확인

server.taskInterceptRuleReq

JSON field wire type absent/null
enabled boolean (bool) zero value; 별도 validation 확인
action string (string) zero value; 별도 validation 확인
kind string (string) zero value; 별도 validation 확인
pattern string (string) zero value; 별도 validation 확인
note string (string) zero value; 별도 validation 확인

GET /api/auth/status

GET /api/auth/status · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: authStatus · server/auth.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · initialized:expression P/U · static composite
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/auth/init

POST /api/auth/init · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: authInit · server/auth.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
body password string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 빈 문자열이면 400 후 return

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil \|\| req.Password == ""

응답·오류

종류 status/body 해석 상태
success/variant 200 · token:derived P/U · static composite
error 400 · {error:string} · "密码不能为空" C for direct writeErr; error helper 내부는 P
error 403 · {error:string} · "密码已设置" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · "密码加密失败" / "保存失败: " + err.Error() / "token 生成失败" C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/auth/login

POST /api/auth/login · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: authLogin · server/auth.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
body username string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 누락/불일치 credential은 401 후 return
body password string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 누락/불일치 credential은 401 후 return

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.Username != "ARTEX"

응답·오류

종류 status/body 해석 상태
success/variant 200 · token:derived P/U · static composite
error 400 · {error:string} · "请求格式错误" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "用户名或密码错误" C for direct writeErr; error helper 내부는 P
error 403 · {error:string} · "密码未初始化,请先设置密码" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · "token 生成失败" C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/auth/change-password

POST /api/auth/change-password · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: authChangePassword · server/auth.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body old_password string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 빈 값은 현재 bcrypt hash와 일치하지 않아 401 후 return
body new_password string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 빈 문자열이면 400 후 return

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.NewPassword == ""

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · "请求格式错误" / "新密码不能为空" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "当前密码错误" C for direct writeErr; error helper 내부는 P
error 403 · {error:string} · "密码未初始化,请先设置密码" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · "密码加密失败" / "保存失败: " + err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/health

GET /api/health · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: health · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean, service:string, version:derived P/U · static composite

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/stats

GET /api/stats · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: stats · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err == nil · g.State == "met" · in.State == "running" · t == nil · taskParam != "" && taskParam != "active" · tr != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · out P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/logs

GET /api/logs · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getLogs · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query limit string wire 선택 handler/helper 변환·default 미전개(P)
query since string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 parse/default: atoiDefault(r.URL.Query().Get("limit"), 500) · atoiDefault(r.URL.Query().Get("since"), 0)

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:derived, cursor:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/logs/history

GET /api/logs/history · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getLogsHistory · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query before string wire 선택 handler/helper 변환·default 미전개(P)
query limit string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: before <= 0 · err != nil · limit > 500 · s.m.pg == nil 직접 parse/default: atoiDefault(r.URL.Query().Get("before"), 0) · atoiDefault(r.URL.Query().Get("limit"), 200)

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:[]any, has_more:boolean P/U · static composite
success/variant 200 · items:derived, has_more:expression P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · "db: " + err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/logs/stream

GET /api/logs/stream · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: streamLogs · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query since string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · cursor > since · l.Seq <= since 직접 parse/default: atoiDefault(r.URL.Query().Get("since"), 0)

응답·오류

종류 status/body 해석 상태
success/variant 200 · text/event-stream; Cache-Control:no-cache; Connection:keep-alive; X-Accel-Buffering:no; \data:` LogLine JSON, 20 s `: ping`` P/U · SSE stream
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · "streaming unsupported" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/update/check

GET /api/update/check · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: updateCheck · server/update.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query force string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !comparable · !rel.PublishedAt.IsZero() · err != nil · ok · selfupdate.InDocker()

응답·오류

종류 status/body 해석 상태
success/variant 200 · out P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/update/apply

POST /api/update/apply · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: updateApply · server/update.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !comparable · !updHub.begin(rel.TagName) · cmp >= 0 · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 202 · ok:boolean, target:expression P/U · static composite
error 400 · {error:string} · fmt.Sprintf("当前版本 %q 不是正式发布版本,已禁用一键更新", current) / fmt.Sprintf("当前已是最新版本 %s", current) C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "已有一个更新正在进行中" C for direct writeErr; error helper 내부는 P
error 502 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/update/rollback

POST /api/update/rollback · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: updateRollback · server/update.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · running

응답·오류

종류 status/body 해석 상태
success/variant 202 · ok:boolean C · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "更新正在进行中,无法回滚" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/update/stream

GET /api/update/stream · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: updateStream · server/update.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok

응답·오류

종류 status/body 해석 상태
success/variant 200 · text/event-stream; Cache-Control:no-cache; Connection:keep-alive; X-Accel-Buffering:no; initial snapshot then \data:` updateProgress, 20 s `: ping`` P/U · SSE stream
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · "streaming unsupported" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/tasks

GET /api/tasks · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: listTasks · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: live > dto.LastActivity · t != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · tasks:derived, active:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks

POST /api/tasks · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: createTask · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body name string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body category_id integer (*int64) 요구 여부 미확정(P); absent/null→nil; null→nil nil
body description string (string) 선택; null/absent 구별 안 됨 누락/공백이면 "未命名任务"로 기본화
body goal string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body llm_profile_id integer (*int64) 선택; null→nil 선택 alias; 제공 시 list가 비었을 때 chain으로 변환
body llm_profile_ids array[integer] ([]int64) 선택; null/absent 구별 안 됨 빈 list 허용; active configuration을 사용할 수 있음
body source_task_ids array[string] ([]string) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 len(req.SourceTaskIDs) > db.MaxTaskSourceCount
body company_ids array[integer] ([]int64) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 req.CompanyIDs = companyIDs
body timeout_seconds integer (int) 선택; null/absent 구별 안 됨 음수는 오류가 아니라 0(무제한)으로 정규화
body plan_heartbeat_seconds integer (int) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body seed_first_intent boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil nil
body coverage_enabled boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil nil
body intercept_rules array[taskInterceptRuleReq] ([]taskInterceptRuleReq) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: len(req.LLMProfileIDs) == 0 && req.LLMProfileID != nil · len(req.SourceTaskIDs) > db.MaxTaskSourceCount · req.TimeoutSeconds < 0 · strings.TrimSpace(req.Description) == "" 직접 parse/default: strconv.ParseInt(strings.TrimSpace(raw), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 201 · taskDTO(t, s.resolvedTaskStatus(t)) P/U · helper result
error 400 · {error:string} · "bad json: " + err.Error() / err.Error() / fmt.Sprintf("关联任务最多选择 %d 个", db.MaxTaskSourceCount) / "关联任务 id 无效或重复" / fmt.Sprintf("关联任务 #%d 不存在", id) / fmt.Sprintf("关联企业无效:最多选择 %d 个有效企业", db.MaxTaskCompanyCount) / "任务级拦截规则无效:" + err.Error() / "任务分类不存在或无效" / "关联企业不存在或无效" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/task-categories

GET /api/task-categories · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgListTaskCategories · server/task_categories.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · categories:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/task-categories

POST /api/task-categories · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgCreateTaskCategory · server/task_categories.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body name string (*string) 필수(직접 거부 branch 확인); null→nil decodeTaskCategoryRequest가 nil/trim-empty를 400으로 거부

요청 body 상한: 16 KiB (16384 bytes) · source server/task_categories.go::decode/direct category request · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정. 공유 decoder/helper: decodeTaskCategoryRequest; helper 내부 size/presence validation은 같은 source evidence에서 확인하며 operation 단독 AST 판정은 P.

응답·오류

종류 status/body 해석 상태
success/variant 201 · category P/U · derived variable
error 400 · {error:string} · err.Error() / decode/name/length error C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "分类名称已存在" C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: writeTaskCategoryError (server/task_categories.go::writeTaskCategoryError: 400/409/404/500), decodeTaskCategoryRequest (server/task_categories.go::decodeTaskCategoryRequest: 400). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PATCH /api/task-categories/{id}

PATCH /api/task-categories/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgRenameTaskCategory · server/task_categories.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body name string (*string) 필수(직접 거부 branch 확인); null→nil decodeTaskCategoryRequest가 nil/trim-empty를 400으로 거부

요청 body 상한: 16 KiB (16384 bytes) · source server/task_categories.go::decode/direct category request · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정. 공유 decoder/helper: decodeTaskCategoryRequest; helper 내부 size/presence validation은 같은 source evidence에서 확인하며 operation 단독 AST 판정은 P.

응답·오류

종류 status/body 해석 상태
success/variant 200 · category P/U · derived variable
error 400 · {error:string} · "bad task category id" / err.Error() / decode/name/length error C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "分类名称已存在" C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: writeTaskCategoryError (server/task_categories.go::writeTaskCategoryError: 400/409/404/500), decodeTaskCategoryRequest (server/task_categories.go::decodeTaskCategoryRequest: 400). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/task-categories/{id}

DELETE /api/task-categories/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgDeleteTaskCategory · server/task_categories.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !deleted · !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 400 · {error:string} · "bad task category id" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task category not found" / err.Error() C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "分类名称已存在" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: writeTaskCategoryError (server/task_categories.go::writeTaskCategoryError: 400/409/404/500). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/category/batch

POST /api/tasks/category/batch · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: updateTasksCategoryBatch · server/task_categories.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body task_ids array[string] ([]string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 normalizeBatchTaskIDs 뒤 0개 또는 상한 초과면 400
body category_id object/JSON (json.RawMessage) 필수(직접 거부 branch 확인); absent→400; null→category clear RawMessage 길이 0(누락)은 400; 명시 null은 category clear

요청 body 상한: 16 KiB (16384 bytes) · source server/task_categories.go::decode/direct category request · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:derived, category:derived P/U · static composite
error 400 · {error:string} · err.Error() / fmt.Sprintf("task_ids 数量必须为 1-%d", db.MaxTaskCategoryBatchSize) C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "分类名称已存在" C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: writeTaskCategoryError (server/task_categories.go::writeTaskCategoryError: 400/409/404/500). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/task-templates

GET /api/task-templates · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgListTaskTemplates · server/task_templates.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · templates:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/task-templates

POST /api/task-templates · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgCreateTaskTemplate · server/task_templates.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body name string (*string) 필수(직접 거부 branch 확인); null→nil normalizeTaskTemplateInput/validateTaskTemplateRequest가 nil·trim-empty를 거부
body description string (*string) 필수(직접 거부 branch 확인); null→nil normalizeTaskTemplateInput/validateTaskTemplateRequest가 nil·trim-empty를 거부
body goal string (*string) 필수(직접 거부 branch 확인); null→nil normalizeTaskTemplateInput/validateTaskTemplateRequest가 nil·trim-empty를 거부
body category_id integer (*int64) 요구 여부 미확정(P); absent/null→nil; null→nil nil
body intercept_rules array[taskInterceptRuleReq] ([]taskInterceptRuleReq) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil

요청 body 상한: 512 KiB (524288 bytes) · source server/task_templates.go::decodeTaskTemplateRequest · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정. 공유 decoder/helper: decodeTaskTemplateRequest; helper 내부 size/presence validation은 같은 source evidence에서 확인하며 operation 단독 AST 판정은 P.

응답·오류

종류 status/body 해석 상태
success/variant 201 · template P/U · derived variable
error 400 · {error:string} · err.Error() / "拦截/允许规则无效:" + err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task template not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "模板名称已存在" C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: writeTaskTemplateErr (server/task_templates.go::writeTaskTemplateErr: 400/409/404/500). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PATCH /api/task-templates/{id}

PATCH /api/task-templates/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgUpdateTaskTemplate · server/task_templates.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body name string (*string) 개별 선택(그룹 중 하나 필수); null→nil name/description/goal/category_id/intercept_rules 중 하나 필요
body description string (*string) 개별 선택(그룹 중 하나 필수); null→nil name/description/goal/category_id/intercept_rules 중 하나 필요
body goal string (*string) 개별 선택(그룹 중 하나 필수); null→nil name/description/goal/category_id/intercept_rules 중 하나 필요
body category_id integer (*int64) 개별 선택(그룹 중 하나 필수); absent→변경 없음; null→category clear name/description/goal/category_id/intercept_rules 중 하나 필요; 제공 field는 helper가 검증
body intercept_rules array[taskInterceptRuleReq] ([]taskInterceptRuleReq) 개별 선택(그룹 중 하나 필수); absent→변경 없음; null→빈 rule list로 clear name/description/goal/category_id/intercept_rules 중 하나 필요; 제공 field는 helper가 검증

요청 body 상한: 512 KiB (524288 bytes) · source server/task_templates.go::decodeTaskTemplateRequest · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.Name == nil && req.Description == nil && req.Goal == nil && !catPresent && !rulesPresent 공유 decoder/helper: decodeTaskTemplateRequest; helper 내부 size/presence validation은 같은 source evidence에서 확인하며 operation 단독 AST 판정은 P.

응답·오류

종류 status/body 해석 상태
success/variant 200 · template P/U · derived variable
error 400 · {error:string} · "bad task template id" / err.Error() / "至少需要提供 name、description、goal、category_id 或 intercept_rules" / "拦截/允许规则无效:" + err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task template not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "模板名称已存在" C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: writeTaskTemplateErr (server/task_templates.go::writeTaskTemplateErr: 400/409/404/500). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/task-templates/{id}

DELETE /api/task-templates/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgDeleteTaskTemplate · server/task_templates.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !deleted · !ok · err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 400 · {error:string} · "bad task template id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task template not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/tasks/{id}

GET /api/tasks/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getTask · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok

응답·오류

종류 status/body 해석 상태
success/variant 200 · dto P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PATCH /api/tasks/{id}

PATCH /api/tasks/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: updateTaskMetadata · server/task_metadata.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body name string (*string) 개별 선택(그룹 중 하나 필수); null→nil name/pinned 중 하나 필요
body pinned boolean (*bool) 개별 선택(그룹 중 하나 필수); null→nil name/pinned 중 하나 필요

요청 body 상한: 16 KiB (16384 bytes) · source server/task_metadata.go::updateTaskMetadata · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: request.Name != nil · request.Name == nil && request.Pinned == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · taskDTO(task, s.resolvedTaskStatus(task)) P/U · helper result
error 400 · {error:string} · err.Error() / "至少需要提供 name 或 pinned" / "任务名称不能为空" / fmt.Sprintf("任务名称最多 %d 个字符", maxTaskNameRunes) C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PATCH /api/tasks/{id}/category

PATCH /api/tasks/{id}/category · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: updateTaskCategory · server/task_categories.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body category_id object/JSON (json.RawMessage) 필수(직접 거부 branch 확인); absent→400; null→category clear RawMessage 길이 0(누락)은 400; 명시 null은 category clear

요청 body 상한: 16 KiB (16384 bytes) · source server/task_categories.go::decode/direct category request · 초과/decoder 경로 400 err.Error().

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · taskDTO(task, s.resolvedTaskStatus(task)) P/U · helper result
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" / err.Error() C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "分类名称已存在" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: writeTaskCategoryError (server/task_categories.go::writeTaskCategoryError: 400/409/404/500). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/tasks/{id}/intercept-rules

GET /api/tasks/{id}/intercept-rules · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: taskInterceptListRules · server/task_intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok \|\| taskID <= 0 · err != nil · pg == nil · rules == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · rules:derived P/U · static composite
error 400 · {error:string} · "bad task id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/{id}/intercept-rules

POST /api/tasks/{id}/intercept-rules · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: taskInterceptCreateRule · server/task_intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body action string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body kind string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body pattern string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body note string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · rule P/U · derived variable
error 400 · {error:string} · "bad task id" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/tasks/{id}/intercept-rules/{rid}

PUT /api/tasks/{id}/intercept-rules/{rid} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: taskInterceptUpdateRule · server/task_intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
path rid string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body action string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body kind string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body pattern string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body note string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · rule P/U · derived variable
error 400 · {error:string} · "bad task id" / "bad rule id" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/tasks/{id}/intercept-rules/{rid}

DELETE /api/tasks/{id}/intercept-rules/{rid} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: taskInterceptDeleteRule · server/task_intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
path rid string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok \|\| ruleID <= 0 · !ok \|\| taskID <= 0 · err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 400 · {error:string} · "bad task id" / "bad rule id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/{id}/intercept-rules/{rid}/toggle

POST /api/tasks/{id}/intercept-rules/{rid}/toggle · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: taskInterceptToggleRule · server/task_intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
path rid string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean, enabled:expression P/U · static composite
error 400 · {error:string} · "bad task id" / "bad rule id" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/control/batch

POST /api/tasks/control/batch · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: controlTasksBatch · server/task_control.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body task_ids array[string] ([]string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 정규화 뒤 1..100개가 아니면 400
body action string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 pause/resume가 아니면 400

요청 body 상한: 256 KiB (262144 bytes) · source server/task_control.go::controlTasksBatch · 초과/decoder 경로 400 "bad json: " + err.Error().

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.Action != "pause" && req.Action != "resume"

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:derived P/U · static composite
error 400 · {error:string} · "bad json: " + err.Error() / "action must be pause|resume" / fmt.Sprintf("task_ids 数量必须为 1-%d", maxBatchControlIDs) C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/task-archives

GET /api/task-archives · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: listTaskArchives · server/task_archives.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query page string wire 선택 handler/helper 변환·default 미전개(P)
query q string wire 선택 handler/helper 변환·default 미전개(P)
query size string wire 선택 handler/helper 변환·default 미전개(P)
query state string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · result P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/task-archives/{id}

GET /api/task-archives/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getTaskArchive · server/task_archives.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil · item == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · item P/U · derived variable
error 400 · {error:string} · "归档 id 无效" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "归档不存在" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/{id}/archive

POST /api/tasks/{id}/archive · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: queueTaskArchive · server/task_archives.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil 직접 parse/default: strconv.ParseInt(id, 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 202 · item P/U · derived variable
error 400 · {error:string} · "任务 id 无效" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

Helper 오류 분기: writeArchiveError · server/task_archives.go::writeArchiveError · 위 404, 409, 500 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/archive/batch

POST /api/tasks/archive/batch · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: queueTaskArchivesBatch · server/task_archives.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body task_ids array[string] ([]string) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil
body archive_ids array[integer] ([]int64) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil

요청 판정: C/P · unknown field 거부 미설정. 직접 parse/default: strconv.ParseInt(id, 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 202 · items:derived P/U · static composite
error 400 · {error:string} · err.Error() / "task_ids 不能为空" / "一次最多处理 100 个任务" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/task-archives/{id}/restore

POST /api/task-archives/{id}/restore · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: queueTaskArchiveRestore · server/task_archives.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 202 · item P/U · derived variable
error 400 · {error:string} · "归档 id 无效" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

Helper 오류 분기: writeArchiveError · server/task_archives.go::writeArchiveError · 위 404, 409, 500 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/task-archives/restore/batch

POST /api/task-archives/restore/batch · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: restoreTaskArchivesBatch · server/task_archives.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body archive_ids array[integer] ([]int64) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 normalizeArchiveIDs가 1..100개·모든 id>0을 요구하고 중복을 제거; 실패하면 400

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: normalizeArchiveIDs: len 1..100, every id > 0; duplicate ids removed preserving first occurrence

응답·오류

종류 status/body 해석 상태
success/variant 202 · items:array[archiveBatchItem] P/U · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/task-archives/{id}

DELETE /api/task-archives/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: queueTaskArchiveDelete · server/task_archives.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 202 · item P/U · derived variable
error 400 · {error:string} · "归档 id 无效" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

Helper 오류 분기: writeArchiveError · server/task_archives.go::writeArchiveError · 위 404, 409, 500 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/task-archives/delete/batch

POST /api/task-archives/delete/batch · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: deleteTaskArchivesBatch · server/task_archives.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body archive_ids array[integer] ([]int64) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 normalizeArchiveIDs가 1..100개·모든 id>0을 요구하고 중복을 제거; 실패하면 400

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: normalizeArchiveIDs: len 1..100, every id > 0; duplicate ids removed preserving first occurrence

응답·오류

종류 status/body 해석 상태
success/variant 202 · items:array[archiveBatchItem] P/U · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/tasks/{id}/coverage

GET /api/tasks/{id}/coverage · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: taskCoverage · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · !t.CoverageEnabled · as == nil · err != nil 직접 parse/default: strconv.ParseInt(t.ID, 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · &db.Coverage{Enabled: false, ByType: []db.CoverageByType{}} P/U · expression
success/variant 200 · cov P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "asset store 未启用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/tasks/{id}/coverage-graph

GET /api/tasks/{id}/coverage-graph · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: taskCoverageGraph · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · as == nil · err != nil 직접 parse/default: strconv.ParseInt(t.ID, 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · g P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "asset store 未启用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/tasks/{id}/asset-refs

GET /api/tasks/{id}/asset-refs · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: taskAssetRefs · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
query asset_id string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · assetID <= 0 · err != nil 직접 parse/default: strconv.ParseInt(r.URL.Query().Get("asset_id"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · intents:derived, facts:derived, findings:derived P/U · static composite
error 400 · {error:string} · "需要 asset_id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/{id}/assets

POST /api/tasks/{id}/assets · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: attachTaskAssets · server/task_assets.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body asset_ids array[integer] ([]int64) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 request.Scope != nil && len(request.AssetIDs) > 0
body source_summary string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 request.SourceSummary = strings.TrimSpace(request.SourceSummary)
body scope companyScopeInputs (companyScopeInputs) 요구 여부 미확정(P); null/absent 구별 안 됨 request.Scope != nil; request.Scope != nil && len(request.AssetIDs) > 0

요청 body 상한: 512 KiB (524288 bytes) · source server/task_assets.go::attachTaskAssets · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: request.Scope != nil · request.Scope != nil && len(request.AssetIDs) > 0

응답·오류

종류 status/body 해석 상태
success/variant 200 · mutation P/U · derived variable
error 400 · {error:string} · err.Error() / "scope 与 asset_ids 不能同时提交" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" / err.Error() C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: writeTaskAssetError (server/task_assets.go::writeTaskAssetError: 400/404/500). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/tasks/{id}/assets/{assetID}

DELETE /api/tasks/{id}/assets/{assetID} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: detachTaskAsset · server/task_assets.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path assetID string 필수 handler의 parse/range validation; 미해석 helper는 P
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !detached · !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · detached:derived P/U · static composite
error 400 · {error:string} · "bad asset id" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" / "asset is not associated with this task" / err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: writeTaskAssetError (server/task_assets.go::writeTaskAssetError: 400/404/500). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/tasks/{id}/intent-assets

GET /api/tasks/{id}/intent-assets · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: taskIntentAssets · server/task_assets.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · assets:derived P/U · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" / err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: writeTaskAssetError (server/task_assets.go::writeTaskAssetError: 400/404/500). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/workspace/list

GET /api/workspace/list · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: wsList · server/workspace.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query path string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !fi.IsDir() · !ok · err != nil · out[i].Dir != out[j].Dir

응답·오류

종류 status/body 해석 상태
success/variant 200 · path:helper result, entries:derived P/U · static composite
error 400 · {error:string} · "非法路径" / "不是目录" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "路径不存在" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/workspace/read

GET /api/workspace/read · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: wsRead · server/workspace.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query path string wire 성공 응답에 필수 non-empty relative path required for a success response; empty resolves workspace root, then read/delete→400 and download→404
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · bytes.IndexByte(data, 0) >= 0 \|\| !utf8.Valid(data) · err != nil · fi.IsDir() · fi.Size() > maxWorkspaceRead

응답·오류

종류 status/body 해석 상태
success/variant 200 · path:helper result, size:helper result, too_large:boolean, binary:boolean P/U · static composite
success/variant 200 · path:helper result, size:helper result, binary:boolean P/U · static composite
success/variant 200 · path:helper result, size:helper result, binary:boolean, content:helper result P/U · static composite
error 400 · {error:string} · "非法路径" / "是目录,不能作为文件读取" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "文件不存在" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/workspace/write

POST /api/workspace/write · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: wsWrite · server/workspace.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body path string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body content string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean, path:helper result P/U · static composite
error 400 · {error:string} · err.Error() / "非法路径" / "目标是目录" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/workspace/mkdir

POST /api/workspace/mkdir · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: wsMkdir · server/workspace.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body path string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean, path:helper result P/U · static composite
error 400 · {error:string} · err.Error() / "非法路径" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/workspace/delete

DELETE /api/workspace/delete · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: wsDelete · server/workspace.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query path string wire 성공 응답에 필수 non-empty relative path required for a success response; empty resolves workspace root, then read/delete→400 and download→404
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · abs == filepath.Clean(s.m.dir) · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · "非法路径" / "不能删除工作区根目录" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "路径不存在" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/workspace/download

GET /api/workspace/download · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: wsDownload · server/workspace.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query path string wire 성공 응답에 필수 non-empty relative path required for a success response; empty resolves workspace root, then read/delete→400 and download→404
header Range byte-ranges 선택 Go stdlib ServeContent/ServeFile precondition·range contract(P)
header If-Range HTTP-date 또는 entity-tag 선택 Go stdlib ServeContent/ServeFile precondition·range contract(P)
header If-Match entity-tag list 또는 * 선택 Go stdlib ServeContent/ServeFile precondition·range contract(P)
header If-Unmodified-Since HTTP-date 선택 Go stdlib ServeContent/ServeFile precondition·range contract(P)
header If-None-Match entity-tag list 또는 * 선택 Go stdlib ServeContent/ServeFile precondition·range contract(P)
header If-Modified-Since HTTP-date 선택 Go stdlib ServeContent/ServeFile precondition·range contract(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil \|\| fi.IsDir()

응답·오류

종류 status/body 해석 상태
success/variant 200 · attachment via \http.ServeFile`; Accept-Ranges/Content-Length/Last-Modified delegated` P/U · stdlib file response
success/variant 206 · range response via \http.ServeFile`; Content-Range/Length` P/U · stdlib conditional response
success/variant 304 · conditional response via \http.ServeFile`; Last-Modified/ETag preconditions` P/U · stdlib conditional response
error 400 · {error:string} · "非法路径" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "文件不存在" C for direct writeErr; error helper 내부는 P
error 412 · body 없음 · stdlib precondition failure from \http.ServeFile`; WriteHeader with no ARTEX JSON body` P · Go stdlib precondition 처리; ARTEX writeErr JSON이 아님
error 416 · text/plain · stdlib plain-text range error from \http.ServeFile`` P · Go stdlib ServeContent/ServeFile가 직접 생성; ARTEX writeErr JSON이 아님

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/workspace/upload

POST /api/workspace/upload · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: wsUpload · server/workspace.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query path string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
multipart file (repeatable) binary file 1개 이상 필수 query path directory; request/body size cap

요청 body 상한: 512 MiB (536870912 bytes) · source server/workspace.go::wsUpload · 초과/decoder 경로 400 "解析上传失败或超出大小限制:" + err.Error().

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · !okd · err != nil · err != nil \|\| !fi.IsDir() · len(files) == 0 · name == "" \|\| name == "." \|\| name == ".."

응답·오류

종류 status/body 해석 상태
success/variant 200 · uploaded:derived P/U · static composite
error 400 · {error:string} · "非法路径" / "目标目录不存在" / "解析上传失败或超出大小限制:" + err.Error() / "缺少上传文件(表单字段 file)" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/tasks/{id}/scope

GET /api/tasks/{id}/scope · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: taskScopeList · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · as == nil · err != nil 직접 parse/default: strconv.ParseInt(t.ID, 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · scope:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "asset store 未启用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/{id}/scope

POST /api/tasks/{id}/scope · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: taskScopeAdd · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body kind string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body value string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body reason string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정. 직접 parse/default: strconv.ParseInt(t.ID, 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · ts P/U · derived variable
error 400 · {error:string} · "invalid JSON" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "asset store 未启用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/tasks/{id}/scope/{sid}

DELETE /api/tasks/{id}/scope/{sid} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: taskScopeDelete · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
path sid string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !deleted · !ok · as == nil · err != nil 직접 parse/default: strconv.ParseInt(r.PathValue("sid"), 10, 64) · strconv.ParseInt(t.ID, 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · "invalid scope id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" / "scope row not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "asset store 未启用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/tasks/{id}/goals

GET /api/tasks/{id}/goals · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: listGoals · server/goals_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · goals:helper result P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/{id}/goals

POST /api/tasks/{id}/goals · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: addGoal · server/goals_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body text string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim 후 빈 문자열이면 400
body vulnclass string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · goalDTO(node) P/U · helper result
error 400 · {error:string} · "invalid JSON" / "目标内容不能为空" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在删除,无法新增目标" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() / "目标写入后读取失败" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PATCH /api/tasks/{id}/goals/{gid}

PATCH /api/tasks/{id}/goals/{gid} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: editGoal · server/goals_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path gid string 필수 handler의 parse/range validation; 미해석 helper는 P
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body text string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim 후 빈 문자열이면 400
body vulnclass string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정. 직접 parse/default: strconv.ParseInt(r.PathValue("gid"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · goalDTO(updated) P/U · helper result
error 400 · {error:string} · "bad goal id" / "invalid JSON" / "目标内容不能为空" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" / "目标不存在" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在删除,无法修改目标" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() / "目标更新后读取失败" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/tasks/{id}/goals/{gid}

DELETE /api/tasks/{id}/goals/{gid} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: deleteGoal · server/goals_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path gid string 필수 handler의 parse/range validation; 미해석 helper는 P
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · !s.engine.beginTaskOperation(t.ID) · err != nil · err != nil \|\| gid <= 0 · node == nil \|\| node.Kind != db.KindGoal 직접 parse/default: strconv.ParseInt(r.PathValue("gid"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · "bad goal id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" / "目标不存在" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在删除,无法删除目标" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/tasks/{id}/constraints

GET /api/tasks/{id}/constraints · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: listConstraints · server/constraints_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · constraints:helper result P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/{id}/constraints

POST /api/tasks/{id}/constraints · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: addConstraint · server/constraints_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body text string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim 후 빈 문자열이면 400
body kind string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 normalizeConstraintKind 결과가 allow/deny가 아니면 400

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · id:string, kind:string, text:string, origin:string, ts:string C · static composite
error 400 · {error:string} · "invalid JSON" / "约束内容不能为空" / "kind 必须是 allow 或 deny" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在删除,无法新增约束" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

PATCH /api/tasks/{id}/constraints/{cid}

PATCH /api/tasks/{id}/constraints/{cid} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: editConstraint · server/constraints_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path cid string 필수 handler의 parse/range validation; 미해석 helper는 P
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body text string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim 후 빈 문자열이면 400
body kind string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 normalizeConstraintKind 결과가 allow/deny가 아니면 400

요청 판정: C/P · unknown field 거부 미설정. 직접 parse/default: strconv.ParseInt(r.PathValue("cid"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · id:string, kind:string, text:string, origin:string, ts:string C · static composite
error 400 · {error:string} · "bad constraint id" / "invalid JSON" / "约束内容不能为空" / "kind 必须是 allow 或 deny" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在删除,无法修改约束" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

DELETE /api/tasks/{id}/constraints/{cid}

DELETE /api/tasks/{id}/constraints/{cid} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: deleteConstraint · server/constraints_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path cid string 필수 handler의 parse/range validation; 미해석 helper는 P
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · !s.engine.beginTaskOperation(t.ID) · err != nil · err != nil \|\| cid <= 0 직접 parse/default: strconv.ParseInt(r.PathValue("cid"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · "bad constraint id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在删除,无法删除约束" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

POST /api/tasks/{id}/control

POST /api/tasks/{id}/control · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: control · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body action string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 pause/resume가 아니면 400

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.Action != "pause" && req.Action != "resume"

응답·오류

종류 status/body 해석 상태
success/variant 200 · result P/U · derived variable
error 400 · {error:string} · err.Error() / "action must be pause|resume" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/tasks/{id}/llm

PUT /api/tasks/{id}/llm · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: updateTaskLLMProfiles · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body llm_profile_ids array[integer] ([]int64) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil
body active_llm_profile_id integer (*int64) 요구 여부 미확정(P); absent/null→nil; null→nil req.ActiveLLMProfileID != nil

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.ActiveLLMProfileID != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · result P/U · derived variable
error 400 · {error:string} · "bad json: " + err.Error() / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/tasks/{id}/llm/resolution

GET /api/tasks/{id}/llm/resolution · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: taskLLMResolutionHandler · server/task_resolution.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · roles P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/{id}/intents/{iid}/control

POST /api/tasks/{id}/intents/{iid}/control · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: controlIntent · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
path iid string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body action string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 pause/resume/cancel이 아니면 400
body reason string (string) 조건부 필수; null/absent 구별 안 됨 action=cancel일 때 trim-empty이면 applyIntentControl 오류로 409
body mode string (string) 선택; null/absent 구별 안 됨 action=cancel에서 hard만 물리 삭제; 누락 및 그 밖의 값은 soft 경로

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.Action != "pause" && req.Action != "resume" && req.Action != "cancel" 직접 parse/default: strconv.ParseInt(r.PathValue("iid"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · result P/U · derived variable
error 400 · {error:string} · "bad intent id" / "bad json: " + err.Error() / "action must be pause|resume|cancel" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在删除,无法控制意图" / err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/{id}/intents/{iid}/messages

POST /api/tasks/{id}/intents/{iid}/messages · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: sendWorkerMessage · server/intent_intervention.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
path iid string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body message string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim-empty 또는 4000자 초과면 400
body request_id string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 1..128자 허용문자 검증 실패면 400

요청 body 상한: 64 KiB (65536 bytes) · source server/intent_intervention.go::sendWorkerMessage · 초과/decoder 경로 413 "请求体过大".

요청 판정: C/P · unknown field 거부 미설정. 직접 parse/default: strconv.ParseInt(r.PathValue("iid"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · id:derived, state:string, accepted:boolean, request_id:derived P/U · static composite
error 400 · {error:string} · "bad intent id" / "bad json: " + err.Error() / "消息不能为空" / "消息不能超过 4000 个字符" / "request_id 必须是 1-128 位字母、数字、-、_、. 或 :" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" / "intent not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在删除,无法向 Worker 发送消息" / "任务已暂停,请先恢复任务再向 Worker 发送消息" / "排队中的任务无法向 Worker 发送消息" / "终态任务无法向 Worker 发送消息" / "任务正在收尾,无法向 Worker 发送消息" / "继承意图为只读,不能发送 Worker 消息" / "node is not an intent" / "仅已暂停的 Worker 可以发送消息,请先暂停" / err.Error() C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求体过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

Helper 오류 분기: prepareChatMentionMessage · server/chat_mentions.go::Server.prepareChatMentionMessage · 위 400, 500 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/{id}/intents/{iid}/rerun

POST /api/tasks/{id}/intents/{iid}/rerun · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: rerunIntent · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
path iid string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · !reopened · !s.engine.beginTaskOperation(t.ID) · err != nil · rollbackErr != nil 직접 parse/default: strconv.ParseInt(r.PathValue("iid"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · id:expression, reopened:derived, queued:derived P/U · static composite
error 400 · {error:string} · "bad intent id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在删除,无法重跑意图" / "该意图不是可重跑状态(仅 blocked/exhausted/stopped 可重跑)" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/{id}/intents/rerun-blocked

POST /api/tasks/{id}/intents/rerun-blocked · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: rerunBlocked · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · !s.engine.beginTaskOperation(t.ID) · err != nil · intent.State == "blocked" · len(rollbackErrors) > 0 · n > 0 · rollbackErr != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · id:expression, reopened:derived, queued:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在删除,无法重跑意图" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/active

POST /api/active · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: setActive · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body id string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 SetActive가 id를 찾지 못하면 404

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !s.m.SetActive(req.ID)

응답·오류

종류 status/body 해석 상태
success/variant 200 · active:expression P/U · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/llm

GET /api/llm · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getLLM · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · configured:expression, provider:helper result, model:expression, base_url:expression, proxy:expression, key_set:expression, rate_per_second:expression, rate_per_minute:expression, context_window_k:expression, thinking_type:expression, reasoning_effort:expression P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/llm

POST /api/llm · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: setLLM · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body provider string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body model string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body base_url string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body proxy string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body api_key string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body rate_per_second number (float64) 요구 여부 미확정(P); null/absent 구별 안 됨 cfg.RatePerSecond, cfg.RatePerMinute = req.RatePerSecond, req.RatePerMinute
body rate_per_minute number (float64) 요구 여부 미확정(P); null/absent 구별 안 됨 cfg.RatePerSecond, cfg.RatePerMinute = req.RatePerSecond, req.RatePerMinute
body context_window_k integer (int) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body thinking_type string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 cfg.ThinkingType = req.ThinkingType
body reasoning_effort string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 cfg.ReasoningEffort = req.ReasoningEffort

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · configured:expression, provider:helper result, model:expression, base_url:expression, proxy:expression, key_set:expression, rate_per_second:expression, rate_per_minute:expression, context_window_k:expression, thinking_type:expression, reasoning_effort:expression P/U · static composite
error 400 · {error:string} · err.Error() / "api_key required" / "provider init failed: " + err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · "persist provider failed: " + err.Error() / "saved provider is unavailable" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/llm/test

POST /api/llm/test · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: testLLM · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body provider string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body model string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body base_url string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body proxy string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body api_key string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body thinking_type string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 cfg.ThinkingType = req.ThinkingType
body reasoning_effort string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 cfg.ReasoningEffort = req.ReasoningEffort
body profile_id integer (*int64) 선택; null→nil 제공 시 저장 profile credential fallback에만 사용
body streaming boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.Streaming != nil
body session_header_key string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 cfg.SessionHeaderKey = req.SessionHeaderKey

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.ProfileID != nil && (cfg.APIKey == "" \|\| cfg.SessionHeaderKey == "") · req.Streaming != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean, error:string C · static composite
success/variant 200 · ok:boolean, error:helper result P/U · static composite
success/variant 200 · ok:boolean, latency_ms:helper result, model:expression, reply:helper result P/U · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/assets

GET /api/assets · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: listAssets · server/assets.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query company_id string wire 선택 handler/helper 변환·default 미전개(P)
query dsl string wire 선택 handler/helper 변환·default 미전개(P)
query limit string wire 선택 handler/helper 변환·default 미전개(P)
query offset string wire 선택 handler/helper 변환·default 미전개(P)
query task_id string wire 선택 handler/helper 변환·default 미전개(P)
query type string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: as == nil · dsl != "" · err != nil · err == nil && offset < total · limit <= 0 · limit > maxAssetPageSize · offset < 0 · typ == "" 직접 parse/default: strconv.ParseInt(q.Get("company_id"), 10, 64) · strconv.ParseInt(q.Get("task_id"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · count:helper result, total:derived, assets:derived P/U · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "database unavailable" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/assets/counts

GET /api/assets/counts · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: assetCounts · server/assets.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query task_id string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: as == nil · err != nil · taskID > 0 직접 parse/default: strconv.ParseInt(r.URL.Query().Get("task_id"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · counts P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "database unavailable" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/assets

POST /api/assets · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: insertAssets · server/assets.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body task_id integer (int64) 요구 여부 미확정(P); null/absent 구별 안 됨 req.TaskID > 0
body assets `array[struct {
Type string `json:"type"`
// root_domain / subdomain
Domain      string   `json:"domain"`
ICP         string   `json:"icp"`
RecordType  string   `json:"record_type"`
RecordValue []string `json:"record_value"`
// ip
IP           string           `json:"ip"`
BoundDomains []string         `json:"bound_domains"`
OpenPorts    []db.PortService `json:"open_ports"`
// app
AppName     string `json:"app_name"`
BundleID    string `json:"bundle_id"`
Category    string `json:"category"`
Description string `json:"description"`
AppICP      string `json:"app_icp"`
// service http
URL           string           `json:"url"`
Technologies  []string         `json:"technologies"`
StatusCode    *int             `json:"status_code"`
ContentLength *int64           `json:"content_length"`
PageTitle     string           `json:"page_title"`
FaviconMMH3   string           `json:"favicon_mmh3"`
Auth          []map[string]any `json:"auth"`
ServiceIP     string           `json:"service_ip"`
// service other
Port        int    `json:"port"`
ServiceName string `json:"service_name"`
// endpoint
Method string           `json:"method"`
Params []map[string]any `json:"params"`

}] ([]struct { Type string json:"type" // root_domain / subdomain Domain string json:"domain" ICP string json:"icp" RecordType string json:"record_type" RecordValue []string json:"record_value" // ip IP string json:"ip" BoundDomains []string json:"bound_domains" OpenPorts []db.PortService json:"open_ports" // app AppName string json:"app_name" BundleID string json:"bundle_id" Category string json:"category" Description string json:"description" AppICP string json:"app_icp" // service http URL string json:"url" Technologies []string json:"technologies" StatusCode *int json:"status_code" ContentLength *int64 json:"content_length" PageTitle string json:"page_title" FaviconMMH3 string json:"favicon_mmh3" Auth []map[string]any json:"auth" ServiceIP string json:"service_ip" // service other Port int json:"port" ServiceName string json:"service_name" // endpoint Method string json:"method" Params []map[string]any json:"params" }) | 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 | nil` |

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.TaskID > 0

응답·오류

종류 status/body 해석 상태
success/variant 200 · results:derived, errors:derived P/U · static composite
error 400 · {error:string} · "invalid JSON: " + err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "database unavailable" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/assets

DELETE /api/assets · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: deleteAssets · server/assets.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body ids array[integer] ([]int64) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 빈 배열이면 400 후 return

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: len(req.IDs) == 0

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 400 · {error:string} · "invalid JSON: " + err.Error() / "ids required" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "database unavailable" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/companies

GET /api/companies · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: listCompanies · server/assets.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: cs == nil · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · companies P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "database unavailable" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/companies

POST /api/companies · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: createCompany · server/assets.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body name string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim 후 빈 문자열이면 400 후 return
body logo string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body scope companyScopeInputs (companyScopeInputs) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 body 상한: 2 MiB (2097152 bytes) · source server/assets.go::decodeCompanyMutationRequest · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.Name == "" 공유 decoder/helper: decodeCompanyMutationRequest; helper 내부 size/presence validation은 같은 source evidence에서 확인하며 operation 단독 AST 판정은 P.

응답·오류

종류 status/body 해석 상태
success/variant 201 · out P/U · derived variable
error 400 · {error:string} · "name required" / err.Error() / validationErr.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "企业名称已存在" C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "database unavailable" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/companies/{id}

GET /api/companies/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getCompany · server/assets.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: c == nil · cs == nil · err != nil 직접 parse/default: strconv.ParseInt(r.PathValue("id"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · company:derived, scope:derived P/U · static composite
error 400 · {error:string} · "invalid id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "company not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "database unavailable" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/companies/{id}

DELETE /api/companies/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: deleteCompany · server/assets.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body delete_assets boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정. 직접 parse/default: strconv.ParseInt(r.PathValue("id"), 10, 64) 공유 decoder/helper: decoder.Decode; helper 내부 size/presence validation은 같은 source evidence에서 확인하며 operation 단독 AST 판정은 P.

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:number, assets_deleted:derived P/U · static composite
error 400 · {error:string} · "invalid id" / "invalid JSON: " + err.Error() / "invalid JSON: multiple values" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "company not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "database unavailable" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/companies/{id}/scope

POST /api/companies/{id}/scope · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: addCompanyScope · server/assets.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body scope companyScopeInputs (companyScopeInputs) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body reason string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body reset boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 req.Reset

요청 body 상한: 2 MiB (2097152 bytes) · source server/assets.go::decodeCompanyMutationRequest · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.Reset 직접 parse/default: strconv.ParseInt(r.PathValue("id"), 10, 64) 공유 decoder/helper: decodeCompanyMutationRequest; helper 내부 size/presence validation은 같은 source evidence에서 확인하며 operation 단독 AST 판정은 P.

응답·오류

종류 status/body 해석 상태
success/variant 200 · out P/U · derived variable
error 400 · {error:string} · "invalid company id" / err.Error() / validationErr.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "company not found" C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · mutationErr.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "database unavailable" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/companies/reattribute

POST /api/companies/reattribute · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: reattribute · server/assets.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: cs == nil · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "database unavailable" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/exploration/frontier

GET /api/exploration/frontier · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: frontier · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query limit string wire 선택 handler/helper 변환·default 미전개(P)
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: t == nil 직접 parse/default: atoiDefault(r.URL.Query().Get("limit"), 100)

응답·오류

종류 status/body 해석 상태
success/variant 200 · []any{} P/U · static composite
success/variant 200 · taskNodeDTOs(fr) P/U · helper result
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/findings

GET /api/exploration/findings · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: findings · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query asset_scope string wire 선택 trimmed asset-tree key; empty→no filter, __none__→unassigned, missing key→empty result
query limit string wire 선택 handler/helper 변환·default 미전개(P)
query page string wire 선택 handler/helper 변환·default 미전개(P)
query q string wire 선택 string; DB trims, empty→no filter; escaped literal substring ILIKE over name/class/summary/evidence/report
query severity string wire 선택 string; all/empty→no filter, otherwise exact equality without enum rejection
query sort string wire 선택 severity→severity rank then newest; every other value→newest first
query status string wire 선택 string; all/empty→no filter, otherwise exact equality without enum rejection
query task string wire 선택 handler/helper 변환·default 미전개(P)
query task_id string wire 선택 positive int string→task filter; __unassigned__→NULL/orphan; empty/invalid→no filter
query vulnclass string wire 선택 string; all/empty→no filter, otherwise exact equality
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · listErr != nil · metaErr != nil · q.Get("page") == "" && q.Get("limit") == "" · t == nil · taskParam == "" 직접 parse/default: strconv.ParseInt(t.ID, 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · out P/U · derived variable
success/variant 200 · items:derived, total:derived, page:derived, page_size:derived P/U · static composite
success/variant 200 · []any{} P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() / listErr.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/findings/groups

GET /api/exploration/findings/groups · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: findingGroups · server/findings_groups.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query asset_scope string wire 선택 trimmed asset-tree key; empty→no filter, __none__→unassigned, missing key→empty result
query limit string wire 선택 handler/helper 변환·default 미전개(P)
query page string wire 선택 handler/helper 변환·default 미전개(P)
query q string wire 선택 string; DB trims, empty→no filter; escaped literal substring ILIKE over name/class/summary/evidence/report
query severity string wire 선택 string; all/empty→no filter, otherwise exact equality without enum rejection
query sort string wire 선택 severity→severity rank then newest; every other value→newest first
query status string wire 선택 string; all/empty→no filter, otherwise exact equality without enum rejection
query task_id string wire 선택 positive int string→task filter; __unassigned__→NULL/orphan; empty/invalid→no filter
query vulnclass string wire 선택 string; all/empty→no filter, otherwise exact equality
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · groups[i].TaskID == nil · ok · s.engine != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:derived, total:derived, finding_total:derived, page:derived, page_size:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/findings/asset-tree

GET /api/exploration/findings/asset-tree · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: findingAssetTree · server/findings_groups.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query asset_scope string wire 선택 trimmed asset-tree key; empty→no filter, __none__→unassigned, missing key→empty result
query q string wire 선택 string; DB trims, empty→no filter; escaped literal substring ILIKE over name/class/summary/evidence/report
query severity string wire 선택 string; all/empty→no filter, otherwise exact equality without enum rejection
query sort string wire 선택 severity→severity rank then newest; every other value→newest first
query status string wire 선택 string; all/empty→no filter, otherwise exact equality without enum rejection
query task_id string wire 선택 positive int string→task filter; __unassigned__→NULL/orphan; empty/invalid→no filter
query vulnclass string wire 선택 string; all/empty→no filter, otherwise exact equality
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · tree P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/findings/stats

GET /api/exploration/findings/stats · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: findingStats · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · st P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/findings/export

GET /api/exploration/findings/export · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: findingsExport · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query asset_scope string wire 선택 handler/helper 변환·default 미전개(P)
query format string wire 필수 required enum md-single|md-zip|csv|json; missing/other→400
query ids string wire 조건부 필수(scope=selected) required only when scope=selected; comma-separated positive int64 values; empty/invalid→400
query q string wire 선택 handler/helper 변환·default 미전개(P)
query scope string wire 선택 optional enum filtered|all|selected; missing/empty→filtered; other→400
query severity string wire 선택 handler/helper 변환·default 미전개(P)
query sort string wire 선택 handler/helper 변환·default 미전개(P)
query status string wire 선택 handler/helper 변환·default 미전개(P)
query task_id string wire 선택 handler/helper 변환·default 미전개(P)
query vulnclass string wire 선택 handler/helper 변환·default 미전개(P)
header Range byte-ranges 선택 Go stdlib ServeContent/ServeFile precondition·range contract(P); format=md-zip branch에서만 소비하고 md-single/csv/json은 무시
header If-Range HTTP-date 또는 entity-tag 선택 Go stdlib ServeContent/ServeFile precondition·range contract(P); format=md-zip branch에서만 소비하고 md-single/csv/json은 무시
header If-Match entity-tag list 또는 * 선택 Go stdlib ServeContent/ServeFile precondition·range contract(P); format=md-zip branch에서만 소비하고 md-single/csv/json은 무시
header If-Unmodified-Since HTTP-date 선택 Go stdlib ServeContent/ServeFile precondition·range contract(P); format=md-zip branch에서만 소비하고 md-single/csv/json은 무시
header If-None-Match entity-tag list 또는 * 선택 Go stdlib ServeContent/ServeFile precondition·range contract(P); format=md-zip branch에서만 소비하고 md-single/csv/json은 무시
header If-Modified-Since HTTP-date 선택 Go stdlib ServeContent/ServeFile precondition·range contract(P); format=md-zip branch에서만 소비하고 md-single/csv/json은 무시
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · err != nil \|\| id <= 0 · len(ids) == 0 · part == "" 직접 parse/default: strconv.ParseInt(part, 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · format별 markdown/zip/csv/json attachment; md-zip headers are stdlib delegated P/U · format-selected file/raw response
success/variant 206 · md-zip \http.ServeContent` range response; Content-Range/Length` P/U · stdlib conditional response
success/variant 304 · md-zip \http.ServeContent` conditional response; Last-Modified/ETag preconditions` P/U · stdlib conditional response
error 400 · {error:string} · "bad finding id: " + part / "no findings selected" / "bad scope: " + scope / "bad format: " + format C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 412 · body 없음 · \format=md-zip` only: stdlib precondition failure from `http.ServeContent`; WriteHeader with no ARTEX JSON body` P · Go stdlib precondition 처리; ARTEX writeErr JSON이 아님
error 416 · text/plain · \format=md-zip` only: stdlib plain-text range error from `http.ServeContent`` P · Go stdlib ServeContent/ServeFile가 직접 생성; ARTEX writeErr JSON이 아님
error 422 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

Helper 오류 분기: evidenceError · server/finding_traffic.go::evidenceError · 위 404, 409, 422 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/findings/{id}

GET /api/exploration/findings/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getFinding · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
query context_task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !allowed · contextTask == nil · contextTaskID != "" · err != nil · f == nil · id <= 0 직접 parse/default: atoiDefault(r.PathValue("id"), 0)

응답·오류

종류 status/body 해석 상태
success/variant 200 · dto P/U · derived variable
error 400 · {error:string} · "bad finding id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "finding not found" / "context task not found" / "finding not available in task context" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/findings/{id}/lineage

GET /api/exploration/findings/{id}/lineage · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: findingLineage · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · f == nil · f.NodeID == nil \|\| f.TaskID == nil · id <= 0 · t == nil 직접 parse/default: atoiDefault(r.PathValue("id"), 0)

응답·오류

종류 status/body 해석 상태
success/variant 200 · empty P/U · derived variable
success/variant 200 · nodes:helper result, edges:helper result P/U · static composite
error 400 · {error:string} · "bad finding id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "finding not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/exploration/findings/{id}/deepen

POST /api/exploration/findings/{id}/deepen · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: deepenFinding · server/findings_groups.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body description string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim-empty이면 400; 4000자 초과도 400

요청 body 상한: 32 KiB (32768 bytes) · source server/findings_groups.go::deepenFinding · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정. 직접 parse/default: atoiDefault(r.PathValue("id"), 0)

응답·오류

종류 status/body 해석 상태
success/variant 200 · task_id:expression, intent_id:helper result, state:derived, queued:derived P/U · static composite
error 400 · {error:string} · "bad finding id" / "bad json: " + err.Error() / "description is required" / fmt.Sprintf("description must be at most %d characters", maxFindingFollowUpRunes) C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "finding not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "finding origin task or node is no longer available" / "finding origin task is no longer available" / "task is being deleted" C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/findings/{id}/retests

GET /api/exploration/findings/{id}/retests · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: listFindingRetests · server/finding_retests.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok \|\| id <= 0 · err != nil · f == nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · retests:derived P/U · static composite
error 400 · {error:string} · "bad finding id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "finding not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/findings/retests/active

GET /api/exploration/findings/retests/active · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: listActiveFindingRetests · server/finding_retests.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · retests:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/exploration/findings/{id}/retests

POST /api/exploration/findings/{id}/retests · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: startFindingRetest · server/finding_retests.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body notes string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 utf8.RuneCountInString(req.Notes) > 4000

요청 body 상한: 64 KiB (65536 bytes) · source server/conversations.go::decodeConversationRequest · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: utf8.RuneCountInString(req.Notes) > 4000 공유 decoder/helper: decodeConversationRequest; helper 내부 size/presence validation은 같은 source evidence에서 확인하며 operation 단독 AST 판정은 P.

응답·오류

종류 status/body 해석 상태
success/variant 200 · retest:derived, created:boolean(false) P/U · static composite
success/variant 202 · retest:derived, created:boolean(true) P/U · static composite
error 400 · {error:string} · "bad finding id" / "复测补充说明最多 4000 个字符" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "finding not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "漏洞复测 Agent 不存在或未启用,请在 Agent 管理中配置 retester" / "请为复测 Agent 启用并绑定工具:" + key C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · s.chatUnavailableReason() / "服务正在停止" / "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PATCH /api/exploration/findings/{id}

PATCH /api/exploration/findings/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: patchFinding · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body status string (*string) 개별 선택(그룹 중 하나 필수); null→nil status/severity/name/vulnclass 중 하나 필요; 제공 field만 검증/수정
body severity string (*string) 개별 선택(그룹 중 하나 필수); null→nil status/severity/name/vulnclass 중 하나 필요; 제공 field만 검증/수정
body name string (*string) 개별 선택(그룹 중 하나 필수); null→nil status/severity/name/vulnclass 중 하나 필요; 제공 field만 검증/수정
body vulnclass string (*string) 개별 선택(그룹 중 하나 필수); null→nil status/severity/name/vulnclass 중 하나 필요; 제공 field만 검증/수정

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !db.ValidFindingStatus(*body.Status) · !db.ValidSeverity(*body.Severity) · !notified && from != *body.Status · body.Name != nil · body.Severity != nil · body.Status != nil · body.Status == nil && body.Severity == nil && body.Name == nil && body.VulnClass == nil · body.VulnClass != nil 직접 parse/default: atoiDefault(r.PathValue("id"), 0)

응답·오류

종류 status/body 해석 상태
success/variant 200 · findingFromDB(f, s.resolveAssetIDs(f.AssetIDs)) P/U · helper result
error 400 · {error:string} · "bad finding id" / "bad json: " + err.Error() / "nothing to update: provide status/severity/name/vulnclass" / "bad status: " + *body.Status / "bad severity: " + *body.Severity C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "finding not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/exploration/findings/{id}

DELETE /api/exploration/findings/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: deleteFinding · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · id <= 0 · n == 0 직접 parse/default: atoiDefault(r.PathValue("id"), 0)

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:boolean, id:derived P/U · static composite
error 400 · {error:string} · "bad finding id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "finding not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/intents

GET /api/exploration/intents · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: intents · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query before string wire 선택 handler/helper 변환·default 미전개(P)
query limit string wire 선택 handler/helper 변환·default 미전개(P)
query page string wire 선택 handler/helper 변환·default 미전개(P)
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · len(in) > limit · q.Get("before") == "" && q.Get("page") == "" · sourceErr != nil · t == nil 직접 parse/default: atoiDefault(q.Get("before"), 0) · atoiDefault(q.Get("limit"), 300)

응답·오류

종류 status/body 해석 상태
success/variant 200 · []any{} P/U · static composite
success/variant 200 · taskNodeDTOs(in) P/U · helper result
success/variant 200 · items:helper result, has_more:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() / sourceErr.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/graph

GET /api/exploration/graph · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: explorationGraph · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: edgeErr != nil · err != nil · nodeErr != nil · t == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · nodes:[]any, edges:[]any P/U · static composite
success/variant 200 · nodes:helper result, edges:helper result P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() / nodeErr.Error() / edgeErr.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/nodes

GET /api/exploration/nodes · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: explorationNodes · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query kind string wire 선택 handler/helper 변환·default 미전개(P)
query order string wire 선택 handler/helper 변환·default 미전개(P)
query page string wire 선택 handler/helper 변환·default 미전개(P)
query q string wire 선택 handler/helper 변환·default 미전개(P)
query size string wire 선택 handler/helper 변환·default 미전개(P)
query state string wire 선택 handler/helper 변환·default 미전개(P)
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !onPage[e.From] · !onPage[e.To] · err != nil · t == nil 직접 parse/default: atoiDefault(q.Get("page"), 1) · atoiDefault(q.Get("size"), 20)

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:[]any, total:number, page:derived, size:derived, edges:[]any, refs:map[string]any P/U · static composite
success/variant 200 · items:helper result, total:derived, page:derived, size:derived, edges:helper result, refs:derived, assets:helper result P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/activity

GET /api/exploration/activity · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: activity · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query intent string wire 선택 handler/helper 변환·default 미전개(P)
query limit string wire 선택 handler/helper 변환·default 미전개(P)
query since string wire 선택 handler/helper 변환·default 미전개(P)
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · err == nil · intentPtr != nil · iv != "" · t == nil 직접 parse/default: atoiDefault(r.URL.Query().Get("limit"), 300) · atoiDefault(r.URL.Query().Get("since"), 0) · strconv.ParseInt(iv, 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:[]any, cursor:number P/U · static composite
success/variant 200 · items:helper result, cursor:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/activity/history

GET /api/exploration/activity/history · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: activityHistory · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query before string wire 선택 handler/helper 변환·default 미전개(P)
query limit string wire 선택 handler/helper 변환·default 미전개(P)
query session string wire 선택 handler/helper 변환·default 미전개(P)
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil · filter.Main && filter.MainSeg == nil · len(items) > 0 · sourceTaskID > 0 · store == nil · t == nil 직접 parse/default: atoiDefault(q.Get("before"), 0) · atoiDefault(q.Get("limit"), 200)

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:helper result, snapshot_cursor:derived, earliest_cursor:derived, has_more:derived P/U · static composite
error 400 · {error:string} · "bad session" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" / "session not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/main-sessions

GET /api/exploration/main-sessions · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: mainSessions · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · len(list) > 0 · t == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · sessions:derived, current:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/exploration/main-session/new

POST /api/exploration/main-session/new · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: newMainSession · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · s.engine.IsDeleting(t.ID) · t == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · seq:expression, created_at:helper result, current:expression P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在删除,无法新建会话" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/activity/stream

GET /api/exploration/activity/stream · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: streamActivity · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query intent string wire 선택 handler/helper 변환·default 미전개(P)
query since string wire 선택 handler/helper 변환·default 미전개(P)
query task string wire 선택 handler/helper 변환·default 미전개(P)
header Last-Event-ID int64 string 선택 valid 값이면 query since(기본 0)보다 우선; invalid이면 since 유지
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · a.ID <= since · cursor > since · err != nil · err == nil · intentPtr != nil && (a.NodeID == nil \|\| *a.NodeID != *intentPtr) · iv != "" · le != "" · len(items) < replayBatch · t == nil 직접 parse/default: atoiDefault(r.URL.Query().Get("since"), 0) · strconv.ParseInt(iv, 10, 64) · strconv.ParseInt(le, 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · text/event-stream; Cache-Control:no-cache; Connection:keep-alive; X-Accel-Buffering:no; \id:` activity ID + `data:` activityDTO, replay cursor, 20 s `: ping`` P/U · SSE stream
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · "streaming unsupported" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/activity/{seq}

GET /api/exploration/activity/{seq} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: activityDetail · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path seq string 필수 handler의 parse/range validation; 미해석 helper는 P
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · t == nil 직접 parse/default: strconv.ParseInt(r.PathValue("seq"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · detail:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "no task" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/tokens

GET /api/exploration/tokens · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: tokenStats · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · t == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · workers:[]db.TokenUsage, sessions:[]db.SessionTokenUsage, total:helper result P/U · static composite
success/variant 200 · workers:derived, sessions:derived, total:helper result P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/tokens/daily

GET /api/tokens/daily · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: tokenDailyStats · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query days string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: buckets == nil · err != nil · s.m.pg == nil 직접 parse/default: atoiDefault(r.URL.Query().Get("days"), 30)

응답·오류

종류 status/body 해석 상태
success/variant 200 · []any{} P/U · static composite
success/variant 200 · buckets P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/tokens/conversations

GET /api/tokens/conversations · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: conversationTokens · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · s.m.pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · []any{} P/U · static composite
success/variant 200 · rows P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/tokens/usage

GET /api/tokens/usage · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgUsageStats · server/commands.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query days string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil 직접 parse/default: atoiDefault(r.URL.Query().Get("days"), 365)

응답·오류

종류 status/body 해석 상태
success/variant 200 · by_profile:[]db.ProfileUsage, daily:[]db.ProfileDayUsage P/U · static composite
success/variant 200 · by_profile:derived, daily:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/audit

GET /api/audit · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getAudit · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: t == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · []any{} P/U · static composite
success/variant 200 · entries:helper result, attributions:helper result P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/gc

POST /api/gc · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: gc · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · removed:number C · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/traffic

GET /api/traffic · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getTraffic · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query body string wire 선택 handler/helper 변환·default 미전개(P)
query host string wire 선택 handler/helper 변환·default 미전개(P)
query method string wire 선택 handler/helper 변환·default 미전개(P)
query order string wire 선택 handler/helper 변환·default 미전개(P)
query page string wire 선택 handler/helper 변환·default 미전개(P)
query path string wire 선택 handler/helper 변환·default 미전개(P)
query q string wire 선택 handler/helper 변환·default 미전개(P)
query resp_max string wire 선택 handler/helper 변환·default 미전개(P)
query resp_min string wire 선택 handler/helper 변환·default 미전개(P)
query size string wire 선택 handler/helper 변환·default 미전개(P)
query sort string wire 선택 handler/helper 변환·default 미전개(P)
query status string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: tr == nil 직접 parse/default: atoiDefault(q.Get("page"), 0) · atoiDefault(q.Get("resp_max"), -1) · atoiDefault(q.Get("resp_min"), -1) · atoiDefault(q.Get("size"), 100)

응답·오류

종류 status/body 해석 상태
success/variant 200 · enabled:boolean, exchanges:[]any P/U · static composite
success/variant 200 · enabled:helper result, proxy:helper result, count:derived, total:derived, page:derived, size:derived, exchanges:helper result P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/traffic/hosts

GET /api/traffic/hosts · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getTrafficHosts · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · tr == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · hosts:[]any P/U · static composite
success/variant 200 · hosts:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/traffic

DELETE /api/traffic · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: deleteTraffic · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query host string wire 성공 응답에 필수 required non-empty trimmed host substring; missing/empty→400
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · host == "" · tr == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 400 · {error:string} · "missing host" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "traffic disabled" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/traffic/hosts

DELETE /api/traffic/hosts · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: deleteTrafficHosts · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body hosts array[string] ([]string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim 뒤 빈 배열이면 400

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 400 · {error:string} · "invalid body" / "missing hosts" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "traffic disabled" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/traffic/all

DELETE /api/traffic/all · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: deleteAllTraffic · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · tr == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived, reclaimed:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "traffic disabled" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/traffic/exchange

GET /api/traffic/exchange · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getTrafficExchange · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query id string wire 성공 응답에 필수 required non-empty exchange identifier; missing→400
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · id == "" · tr == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · req:derived, resp:derived P/U · static composite
error 400 · {error:string} · "missing id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "traffic disabled" / err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/traffic/blob

GET /api/traffic/blob · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getTrafficBlob · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query hash string wire 성공 응답에 필수 required non-empty trimmed SHA-256 blob key; missing→400; Blob helper validates lookup
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · hash == "" · tr == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · application/octet-stream; Content-Length; attachment filename \<hash>.bin`` P/U · binary stream
error 400 · {error:string} · "missing hash" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "traffic disabled" / err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/commands

GET /api/commands · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgListCommands · server/commands.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query page string wire 선택 handler/helper 변환·default 미전개(P)
query q string wire 선택 handler/helper 변환·default 미전개(P)
query size string wire 선택 handler/helper 변환·default 미전개(P)
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil 직접 parse/default: atoiDefault(q.Get("page"), 0) · atoiDefault(q.Get("size"), 50)

응답·오류

종류 status/body 해석 상태
success/variant 200 · commands:derived, total:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/commands/stats

GET /api/commands/stats · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgToolStats · server/commands.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query q string wire 선택 handler/helper 변환·default 미전개(P)
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · stats:[]db.ToolStat P/U · static composite
success/variant 200 · stats:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/llm/records

GET /api/llm/records · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgListLLMRecords · server/commands.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query model string wire 선택 handler/helper 변환·default 미전개(P)
query page string wire 선택 handler/helper 변환·default 미전개(P)
query session string wire 선택 handler/helper 변환·default 미전개(P)
query size string wire 선택 handler/helper 변환·default 미전개(P)
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil 직접 parse/default: atoiDefault(q.Get("page"), 0) · atoiDefault(q.Get("size"), 50)

응답·오류

종류 status/body 해석 상태
success/variant 200 · records:derived, total:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/llm/records

DELETE /api/llm/records · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgDeleteLLMRecords · server/commands.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query task string wire 성공 응답에 필수 required non-empty trimmed task identifier; missing/empty→400
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · task == ""

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 400 · {error:string} · "missing task" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/llm/records/tasks

GET /api/llm/records/tasks · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgLLMTasks · server/commands.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · tasks:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/llm/records/by-model

GET /api/llm/records/by-model · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgTokenByModel · server/commands.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query task string wire 성공 응답에 필수 required non-empty trimmed task identifier; missing/empty→400
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · id == "" · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · models:[]db.ModelTokenStat P/U · static composite
success/variant 200 · models:derived P/U · static composite
error 400 · {error:string} · "missing task" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/llm/records/{id}

GET /api/llm/records/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgGetLLMRecord · server/commands.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil 직접 parse/default: strconv.ParseInt(r.PathValue("id"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · rec P/U · derived variable
error 400 · {error:string} · "invalid id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "not found" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/settings

GET /api/settings · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getSettings · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · s.settingsPayload() P/U · helper result
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/settings

PUT /api/settings · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: putSettings · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body traffic_capture boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.TrafficCapture != nil
body agent_traffic_binding boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.AgentTrafficBinding != nil
body llm_record boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.LLMRecord != nil
body web_search_enabled boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.WebSearchEnabled != nil; req.WebSearchEnabled != nil || req.WebSearchBackend != nil || req.BraveKey != nil || req.TavilyKey != nil || req.WebSearchProxy != nil
body web_search_backend string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil req.WebSearchBackend != nil; req.WebSearchEnabled != nil || req.WebSearchBackend != nil || req.BraveKey != nil || req.TavilyKey != nil || req.WebSearchProxy != nil
body brave_search_api_key string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil req.WebSearchEnabled != nil || req.WebSearchBackend != nil || req.BraveKey != nil || req.TavilyKey != nil || req.WebSearchProxy != nil
body tavily_search_api_key string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil req.WebSearchEnabled != nil || req.WebSearchBackend != nil || req.BraveKey != nil || req.TavilyKey != nil || req.WebSearchProxy != nil
body web_search_proxy string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil req.WebSearchEnabled != nil || req.WebSearchBackend != nil || req.BraveKey != nil || req.TavilyKey != nil || req.WebSearchProxy != nil
body global_proxy string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil req.GlobalProxy != nil
body python_interpreter string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil req.PythonInterp != nil
body workers integer (*int) 요구 여부 미확정(P); absent/null→nil; null→nil req.Workers != nil
body task_concurrency_enabled boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.ConcurrencyEnabled != nil; req.ConcurrencyEnabled != nil || req.ConcurrencyLimit != nil
body task_concurrency_limit integer (*int) 요구 여부 미확정(P); absent/null→nil; null→nil req.ConcurrencyEnabled != nil || req.ConcurrencyLimit != nil; req.ConcurrencyLimit != nil
body llm_pool_enabled boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.LLMPoolEnabled != nil; req.LLMPoolEnabled != nil || req.LLMPoolBindFallback != nil
body llm_pool_bind_fallback boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.LLMPoolBindFallback != nil; req.LLMPoolEnabled != nil || req.LLMPoolBindFallback != nil
body constraints_inject_planner boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.ConstraintsInjectPlanner != nil
body constraints_inject_worker boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.ConstraintsInjectWorker != nil
body noa_compaction boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.NoaCompaction != nil
body notify_enabled boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.NotifyEnabled != nil
body notify_public_base_url string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil req.NotifyBaseURL != nil
body notify_digest_interval_min integer (*int) 요구 여부 미확정(P); absent/null→nil; null→nil *req.NotifyDigestMins < 1 || *req.NotifyDigestMins > 24*60; req.NotifyDigestMins != nil

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: *req.NotifyDigestMins < 1 \|\| *req.NotifyDigestMins > 24*60 · req.AgentTrafficBinding != nil · req.ConcurrencyEnabled != nil · req.ConcurrencyEnabled != nil \|\| req.ConcurrencyLimit != nil · req.ConcurrencyLimit != nil · req.ConstraintsInjectPlanner != nil · req.ConstraintsInjectWorker != nil · req.GlobalProxy != nil · req.LLMPoolBindFallback != nil · req.LLMPoolEnabled != nil · req.LLMPoolEnabled != nil \|\| req.LLMPoolBindFallback != nil · req.LLMRecord != nil · req.NoaCompaction != nil · req.NotifyBaseURL != nil · req.NotifyDigestMins != nil · req.NotifyEnabled != nil · req.PythonInterp != nil · req.TrafficCapture != nil · req.WebSearchBackend != nil · req.WebSearchEnabled != nil · req.WebSearchEnabled != nil \|\| req.WebSearchBackend != nil \|\| req.BraveKey != nil \|\| req.TavilyKey != nil \|\| req.WebSearchProxy != nil · req.Workers != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · s.settingsPayload() P/U · helper result
error 400 · {error:string} · err.Error() / "回链地址需以 http:// 或 https:// 开头" / "汇总周期需在 1 到 1440 分钟之间" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/notify/meta

GET /api/notify/meta · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: notifyMeta · server/notify_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · kinds:derived, enabled:helper result, public_base_url:derived, digest_interval_min:derived, defaults:map[string]any, stats:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/notify/channels

GET /api/notify/channels · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: notifyListChannels · server/notify_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · channels:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/notify/channels

POST /api/notify/channels · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: notifyCreateChannel · server/notify_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body name string (*string) 필수(직접 거부 branch 확인); null→nil nil/trim-empty이면 400 후 return
body kind string (*string) 필수(직접 거부 branch 확인); null→nil nil 또는 미지원 kind이면 400 후 return
body enabled boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil nil
body mode string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil !db.ValidNotifyMode(*req.Mode); req.Mode != nil
body config object/JSON (map[string]any) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil
body filter notify.Filter (*notify.Filter) 요구 여부 미확정(P); absent/null→nil; null→nil req.Filter != nil
body rate_per_min integer (*int) 선택; null→nil 누락 시 channel default; 제공 시 음수만 거부

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !db.ValidNotifyMode(*req.Mode) · *req.RatePerMin < 0 · req.Filter != nil · req.Kind == nil \|\| !notify.ValidKind(*req.Kind) · req.Mode != nil · req.Name != nil · req.RatePerMin != nil · req.RatePerMin == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · id:derived P/U · static composite
error 400 · {error:string} · "请求体不是合法 JSON: " + err.Error() / fmt.Sprintf("渠道类型无效,可选:%s", strings.Join(notify.Kinds(), " / ")) / "缺少渠道名称" / err.Error() / "推送模式无效,可选:realtime / digest" / "限流值不能为负" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PATCH /api/notify/channels/{id}

PATCH /api/notify/channels/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: notifyUpdateChannel · server/notify_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body name string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil req.Name != nil
body kind string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil !notify.ValidKind(*req.Kind); req.Kind != nil
body enabled boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.Enabled != nil
body mode string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil !db.ValidNotifyMode(*req.Mode); req.Mode != nil
body config object/JSON (map[string]any) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil
body filter notify.Filter (*notify.Filter) 요구 여부 미확정(P); absent/null→nil; null→nil req.Filter != nil
body rate_per_min integer (*int) 요구 여부 미확정(P); absent/null→nil; null→nil *req.RatePerMin < 0; req.RatePerMin != nil

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !db.ValidNotifyMode(*req.Mode) · !notify.ValidKind(*req.Kind) · *req.RatePerMin < 0 · req.Enabled != nil · req.Filter != nil · req.Kind != nil · req.Mode != nil · req.Name != nil · req.RatePerMin != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · id:derived P/U · static composite
error 400 · {error:string} · "渠道 id 无效" / "请求体不是合法 JSON: " + err.Error() / fmt.Sprintf("渠道类型无效,可选:%s", strings.Join(notify.Kinds(), " / ")) / err.Error() / "渠道名称不能为空" / "推送模式无效,可选:realtime / digest" / "限流值不能为负" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "通知渠道不存在" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: notifyChannelLookupErr (server/notify_api.go::notifyChannelLookupErr: 404/500). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/notify/channels/{id}

DELETE /api/notify/channels/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: notifyDeleteChannel · server/notify_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · "渠道 id 无效" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "通知渠道不存在" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: notifyChannelLookupErr (server/notify_api.go::notifyChannelLookupErr: 404/500). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

POST /api/notify/channels/{id}/test

POST /api/notify/channels/{id}/test · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: notifyTestChannel · server/notify_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil · len(ch.Config) > 0 · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean, latency_ms:helper result P/U · static composite
error 400 · {error:string} · "渠道 id 无效" / fmt.Sprintf("渠道类型 %q 未注册", ch.Kind) / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "通知渠道不存在" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 502 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: notifyChannelLookupErr (server/notify_api.go::notifyChannelLookupErr: 404/500). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/notify/deliveries

GET /api/notify/deliveries · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: notifyListDeliveries · server/notify_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query channel_id string wire 선택 handler/helper 변환·default 미전개(P)
query event_kind string wire 선택 handler/helper 변환·default 미전개(P)
query page string wire 선택 positive decimal integer; invalid/zero/negative→1
query page_size string wire 선택 positive decimal integer; invalid/zero/negative→50
query state string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil · v != "" 직접 parse/default: atoiDefault(v, 0) · f.ChannelID = int64(atoiDefault(v, 0))

응답·오류

종류 status/body 해석 상태
success/variant 200 · deliveries:derived, total:derived, page:derived, page_size:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/notify/deliveries/{id}/retry

POST /api/notify/deliveries/{id}/retry · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: notifyRetryDelivery · server/notify_api.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · "投递 id 无效" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

POST /api/settings/web-search/test

POST /api/settings/web-search/test · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: testWebSearch · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body web_search_backend string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 strings.TrimSpace(req.Backend) != ""
body web_search_proxy string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body brave_search_api_key string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 strings.TrimSpace(req.BraveKey) != ""
body tavily_search_api_key string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 strings.TrimSpace(req.TavilyKey) != ""

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: strings.TrimSpace(req.Backend) != "" · strings.TrimSpace(req.BraveKey) != "" · strings.TrimSpace(req.TavilyKey) != ""

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean, error:helper result, backend:derived P/U · static composite
success/variant 200 · ok:boolean, error:string, backend:derived P/U · static composite
success/variant 200 · ok:boolean, count:helper result, backend:derived P/U · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/report

GET /api/report · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getReport · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: len(ns) > 0 · t == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · text/markdown; charset=utf-8; generated report bytes P/U · raw document
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "no active task" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/chat/mentions

GET /api/chat/mentions · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: searchChatMentions · server/chat_mentions.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query cursor string wire 선택 handler/helper 변환·default 미전개(P)
query kind string wire 선택 handler/helper 변환·default 미전개(P)
query q string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: (kind != "" && !db.ValidChatMentionKind(kind)) \|\| utf8.RuneCountInString(query) > 200 · err != nil · errors.Is(err, db.ErrInvalidChatMentionCursor) · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · page P/U · derived variable
error 400 · {error:string} · "引用类型无效或搜索关键词超过 200 字" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/chat

POST /api/chat · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: chat · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query task string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body attachments array[chatAttachment] ([]chatAttachment) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 func() { defer func() { s.finishTaskChat(t.ID, cancel) }() emit := func(rec db.Activity) { rec.MainSeg = segPtr s.engine.emitActivity(t, rec) } maTaskID, _ := strconv.ParseInt(t.ID, 10, 64) resume := func() { s.reviveTask(t) } taskDir := filepath.Join(s.m.dir, "tasks", t.ID) agentMsg := composeAgentMessage(agentMessage, req.Attachments, taskDir) s.engine.BeginLLMCall(t.ID) _, err := ma.Chat(ctx, maTaskID, mainSeg, s.m.Assets(), t.Store, t.Goal, agentMsg, emit, t.Notify, resume, t.NotifyGoal, t.NotifyHint) s.engine.EndLLMCall(t.ID) if err != nil && ctx.Err() == nil { s.engine.emitActivity(t, db.Activity{Worker: "mainagent", Kind: "text", IsError: true, Summary: "(主 Agent 出错:" + err.Error() + ")", MainSeg: segPtr}) } }()
body seg integer (*int) 요구 여부 미확정(P); absent/null→nil; null→nil req.Seg != nil && *req.Seg >= 0

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.Seg != nil && *req.Seg >= 0 직접 parse/default: func() { defer func() { s.finishTaskChat(t.ID, cancel) }() emit := func(rec db.Activity) { rec.MainSeg = segPtr s.engine.emitActivity(t, rec) } maTaskID, _ := strconv.ParseInt(t.ID, 10, 64) resume := func() { s.reviveTask(t) } taskDir := filepath.Join(s.m.dir, "tasks", t.ID) agentMsg := composeAgentMessage(agentMessage, req.Attachments, taskDir) s.engine.BeginLLMCall(t.ID) _, err := ma.Chat(ctx, maTaskID, mainSeg, s.m.Assets(), t.Store, t.Goal, agentMsg, emit, t.Notify, resume, t.NotifyGoal, t.NotifyHint) s.engine.EndLLMCall(t.ID) if err != nil && ctx.Err() == nil { s.engine.emitActivity(t, db.Activity{Worker: "mainagent", Kind: "text", IsError: true, Summary: "(主 Agent 出错:" + err.Error() + ")", MainSeg: segPtr}) } }() · strconv.ParseInt(t.ID, 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 202 · status:string, mode:string C · static composite
success/variant 200 · reply:derived, mode:string P/U · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "no active task" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在删除,无法发送新消息" / "主 Agent 正在处理上一条消息,请稍候" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

Helper 오류 분기: prepareChatMentionMessage · server/chat_mentions.go::Server.prepareChatMentionMessage · 위 400, 500 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/chat/upload

POST /api/chat/upload · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: chatUpload · server/chatupload.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query id string wire 필수 required ^[A-Za-z0-9_-]+$; missing or invalid→400; task scope also requires an existing task
query scope string wire 필수 required enum task|session|staging; missing or any other value→400; chooses tasks/sessions/drafts upload root
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
multipart file (repeatable) binary file 1개 이상 필수 request 128 MiB cap; filename 정규화·충돌 시 suffix

요청 body 상한: 128 MiB (134217728 bytes) · source server/chatupload.go::chatUpload · 초과/decoder 경로 400 "解析上传失败或超出大小限制: " + err.Error().

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !s.engine.beginTaskOperation(id) · !safeChatID.MatchString(id) · err != nil · len(files) == 0 · name == "" \|\| name == "." \|\| name == ".." \|\| strings.ContainsAny(name, \/\) · s.m.ResolveTask(id) == nil · taskScoped

응답·오류

종류 status/body 해석 상태
success/variant 200 · attachments:derived P/U · static composite
error 400 · {error:string} · "scope 必须是 task / session / staging" / "非法 id" / "解析上传失败或超出大小限制: " + err.Error() / "缺少上传文件(表单字段 file)" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在删除,无法上传附件" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · "建目录失败: " + err.Error() / "保存失败: " + err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/tasks/{id}/chat/status

GET /api/tasks/{id}/chat/status · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: taskChatStatus · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: t == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · running:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/{id}/chat/stop

POST /api/tasks/{id}/chat/stop · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: stopChat · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !s.cancelTaskChat(t.ID, agent.AbortChatStoppedByUser) · t == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · status:string C · static composite
success/variant 200 · status:string C · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

DELETE /api/tasks/{id}

DELETE /api/tasks/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgDeleteTask · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body delete_assets boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body delete_traffic boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body delete_files boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body delete_findings boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body delete_llm_records boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · result P/U · derived variable
error 400 · {error:string} · "任务 id 无效" / "invalid JSON: " + err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在删除" / "任务仍有运行中的 Agent,删除已取消" / err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/conversations

GET /api/conversations · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgListConversations · server/conversations.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · conversations:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/conversations

POST /api/conversations · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgCreateConversation · server/conversations.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body agent_key string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim 후 빈 문자열이면 400 후 return
body title string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body llm_profile_id integer (*int64) 요구 여부 미확정(P); absent/null→nil; null→nil req.LLMProfileID != nil

요청 body 상한: 64 KiB (65536 bytes) · source server/conversations.go::decodeConversationRequest · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.AgentKey == "" · req.LLMProfileID != nil · utf8.RuneCountInString(req.AgentKey) > maxConversationAgentKeyRunes 공유 decoder/helper: decodeConversationRequest; helper 내부 size/presence validation은 같은 source evidence에서 확인하며 operation 단독 AST 판정은 P.

응답·오류

종류 status/body 해석 상태
success/variant 200 · c P/U · derived variable
error 400 · {error:string} · "agent_key 不能为空" / fmt.Sprintf("agent_key 最多 %d 个字符", maxConversationAgentKeyRunes) / "指定的 LLM 配置不存在或未设置 API Key" / fmt.Sprintf("标题最多 %d 个字符", maxConversationTitleRunes) C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent 不存在" C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/conversations/delete/batch

POST /api/conversations/delete/batch · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgDeleteConversationsBatch · server/conversations.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body ids array[integer] ([]int64) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 정규화 뒤 1..100개가 아니거나 non-positive id면 400

요청 body 상한: 64 KiB (65536 bytes) · source server/conversations.go::decodeConversationRequest · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정. 공유 decoder/helper: decodeConversationRequest; helper 내부 size/presence validation은 같은 source evidence에서 확인하며 operation 단독 AST 판정은 P.

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:derived P/U · static composite
error 400 · {error:string} · "对话 id 无效" / fmt.Sprintf("ids 数量必须为 1-%d", maxConversationDeleteBatch) C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PATCH /api/conversations/{id}

PATCH /api/conversations/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgRenameConversation · server/conversations.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body title string (*string) 개별 선택(그룹 중 하나 필수); null→nil title/pinned 중 하나 필요
body pinned boolean (*bool) 개별 선택(그룹 중 하나 필수); null→nil title/pinned 중 하나 필요

요청 body 상한: 64 KiB (65536 bytes) · source server/conversations.go::decodeConversationRequest · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.Title != nil · req.Title == nil && req.Pinned == nil 공유 decoder/helper: decodeConversationRequest; helper 내부 size/presence validation은 같은 source evidence에서 확인하며 operation 단독 AST 판정은 P.

응답·오류

종류 status/body 해석 상태
success/variant 200 · updated P/U · derived variable
error 400 · {error:string} · "至少需要提供 title 或 pinned" / "标题不能为空" / fmt.Sprintf("标题最多 %d 个字符", maxConversationTitleRunes) / "bad conversation id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "conversation not found" C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: convByID (server/conversations.go::Server.convByID: 503/400/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PATCH /api/conversations/{id}/profile

PATCH /api/conversations/{id}/profile · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgUpdateConversation · server/conversations.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body llm_profile_id integer (*int64) 요구 여부 미확정(P); absent/null→nil; null→nil req.LLMProfileID != nil

요청 body 상한: 64 KiB (65536 bytes) · source server/conversations.go::decodeConversationRequest · 초과/decoder 경로 413 "请求正文过大".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.LLMProfileID != nil 공유 decoder/helper: decodeConversationRequest; helper 내부 size/presence validation은 같은 source evidence에서 확인하며 operation 단독 AST 판정은 P.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · "指定的 LLM 配置不存在或未设置 API Key" / "bad conversation id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "conversation not found" C for direct writeErr; error helper 내부는 P
error 413 · {error:string} · "请求正文过大" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: convByID (server/conversations.go::Server.convByID: 503/400/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

DELETE /api/conversations/{id}

DELETE /api/conversations/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgDeleteConversation · server/conversations.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:expression P/U · static composite
error 400 · {error:string} · "bad conversation id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "conversation not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: convByID (server/conversations.go::Server.convByID: 503/400/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/conversations/{id}/messages

GET /api/conversations/{id}/messages · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgConversationMessages · server/conversations.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
query before string wire 선택 handler/helper 변환·default 미전개(P)
query limit string wire 선택 handler/helper 변환·default 미전개(P)
query since string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil · n > 0 · sv != "" 직접 parse/default: atoiDefault(q.Get("limit"), 200) · strconv.ParseInt(q.Get("before"), 10, 64) · strconv.ParseInt(sv, 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:helper result, cursor:derived, running:derived, hasMore:boolean P/U · static composite
success/variant 200 · items:helper result, cursor:derived, running:derived, hasMore:derived P/U · static composite
error 400 · {error:string} · "bad conversation id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "conversation not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: convByID (server/conversations.go::Server.convByID: 503/400/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/conversations/{id}/messages

POST /api/conversations/{id}/messages · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgSendConversationMessage · server/conversations.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body message string (string) 개별 선택(그룹 중 하나 필수); null/absent 구별 안 됨 message/attachments 중 하나 필요
body attachments array[chatAttachment] ([]chatAttachment) 개별 선택(그룹 중 하나 필수); null/absent 구별 안 됨 message/attachments 중 하나 필요

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: msg == "" && len(req.Attachments) == 0

응답·오류

종류 status/body 해석 상태
success/variant 202 · status:string C · static composite
error 400 · {error:string} · err.Error() / "消息不能为空" / "bad conversation id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "conversation not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "该会话正在处理上一条消息,请稍候" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · s.chatUnavailableReason() / "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

Helper 오류 분기: prepareChatMentionMessage · server/chat_mentions.go::Server.prepareChatMentionMessage · 위 400, 500 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

공통 helper 오류 분기: convByID (server/conversations.go::Server.convByID: 503/400/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

POST /api/conversations/{id}/stop

POST /api/conversations/{id}/stop · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgStopConversation · server/conversations.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · cancel == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · status:string C · static composite
success/variant 200 · status:string C · static composite
error 400 · {error:string} · "bad conversation id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "conversation not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: convByID (server/conversations.go::Server.convByID: 503/400/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/conversations/{id}/messages/{seq}

GET /api/conversations/{id}/messages/{seq} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgConversationMsgDetail · server/conversations.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
path seq string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · detail:derived P/U · static composite
error 400 · {error:string} · "bad seq" / "bad conversation id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "conversation not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: convByID (server/conversations.go::Server.convByID: 503/400/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/agents

GET /api/agents · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgListAgents · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · err == nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · agents:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/agents

POST /api/agents · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgCreateAgent · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body Key string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim 뒤 key 정규식이 실패하면 400 후 return
body Name string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim 후 빈 문자열이면 400 후 return
body Description string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !reAgentKey.MatchString(req.Key) · req.Name == ""

응답·오류

종류 status/body 해석 상태
success/variant 200 · agentDTO(a) P/U · helper result
error 400 · {error:string} · err.Error() / "key 需小写字母开头,仅含小写字母/数字/下划线" / "名称不能为空" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "该 key 已存在" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/agents/{key}

GET /api/agents/{key} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgGetAgent · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · sk == nil · vers == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · agent:helper result, prompt:derived, variables:derived, versions:derived, visibility:map[string]any, llm_profiles:derived, wrapup_prompt:expression, wrapup_default:helper result, wrapup_max_turns:expression, wrapup_max_turns_default:helper result, task_timeout_wrapup_supported:expression, task_timeout_wrapup_prompt:expression, task_timeout_wrapup_default:helper result, task_timeout_wrapup_max_turns:expression, task_timeout_wrapup_max_turns_default:helper result P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PATCH /api/agents/{key}

PATCH /api/agents/{key} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgUpdateAgent · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body Name string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim 후 빈 문자열이면 400 후 return
body Description string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.Name == ""

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · "内置 agent 不可修改名称/描述" / err.Error() / "名称不能为空" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

DELETE /api/agents/{key}

DELETE /api/agents/{key} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgDeleteAgent · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · a.Builtin · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:expression P/U · static composite
error 400 · {error:string} · "内置 agent 不可删除" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/agents/{key}/config

PUT /api/agents/{key}/config · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgSaveAgentConfig · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body max_turns integer (*int) 요구 여부 미확정(P); absent/null→nil; null→nil req.MaxTurns != nil
body run_seconds integer (*int) 요구 여부 미확정(P); absent/null→nil; null→nil req.RunSeconds != nil
body web_search boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.WebSearch != nil
body interactive_shell boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil req.InteractiveShell != nil
body llm_profile_id object/JSON (json.RawMessage) 요구 여부 미확정(P); null/absent 구별 안 됨 req.LLMProfileID != nil
body trigger_run_mode string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil req.TriggerRunMode != nil; req.TriggerRunMode != nil || req.TriggerMergeMode != nil || req.TriggerMaxParallel != nil
body trigger_merge_mode string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil req.TriggerMergeMode != nil; req.TriggerRunMode != nil || req.TriggerMergeMode != nil || req.TriggerMaxParallel != nil
body trigger_max_parallel integer (*int) 요구 여부 미확정(P); absent/null→nil; null→nil req.TriggerMaxParallel != nil; req.TriggerRunMode != nil || req.TriggerMergeMode != nil || req.TriggerMaxParallel != nil

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.InteractiveShell != nil · req.LLMProfileID != nil · req.MaxTurns != nil · req.RunSeconds != nil · req.TriggerMaxParallel != nil · req.TriggerMergeMode != nil · req.TriggerRunMode != nil · req.TriggerRunMode != nil \|\| req.TriggerMergeMode != nil \|\| req.TriggerMaxParallel != nil · req.WebSearch != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · resp P/U · derived variable
error 400 · {error:string} · err.Error() / "llm_profile_id 格式错误" / "指定的 LLM 配置不存在或无效" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/agents/{key}/prompt

PUT /api/agents/{key}/prompt · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgSavePrompt · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body Template string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body Note string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · version:derived P/U · static composite
error 400 · {error:string} · err.Error() / bad C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/agents/{key}/prompt/reset

POST /api/agents/{key}/prompt/reset · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgResetPrompt · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !has · !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · version:derived P/U · static composite
error 400 · {error:string} · "该 agent 无内置默认提示词,无法恢复" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/agents/{key}/wrapup

PUT /api/agents/{key}/wrapup · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgSaveWrapup · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body prompt string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body max_turns integer (*int) 요구 여부 미확정(P); absent/null→nil; null→nil body.MaxTurns != nil

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: body.MaxTurns != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

POST /api/agents/{key}/wrapup/reset

POST /api/agents/{key}/wrapup/reset · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgResetWrapup · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean, wrapup_default:helper result, wrapup_max_turns_default:helper result P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/agents/{key}/wrapup/task-timeout

PUT /api/agents/{key}/wrapup/task-timeout · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgSaveTaskTimeoutWrapup · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body prompt string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body max_turns integer (*int) 요구 여부 미확정(P); absent/null→nil; null→nil body.MaxTurns != nil

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: body.MaxTurns != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

POST /api/agents/{key}/wrapup/task-timeout/reset

POST /api/agents/{key}/wrapup/task-timeout/reset · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgResetTaskTimeoutWrapup · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean, task_timeout_wrapup_default:helper result, task_timeout_wrapup_max_turns_default:helper result P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/agents/{key}/triggers

GET /api/agents/{key}/triggers · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgListTriggers · server/triggers.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · triggers:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/agents/{key}/triggers

POST /api/agents/{key}/triggers · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgCreateTrigger · server/triggers.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body interval_sec integer (int) 요구 여부 미확정(P); null/absent 구별 안 됨 req.IntervalSec < 0
body on_finding boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body on_goal_met boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body on_task_timeout boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body on_tool_call boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body on_task_create boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body interval_message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body finding_message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body goal_message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body task_timeout_message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body tool_call_message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body task_create_message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body tool_names array[string] ([]string) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.IntervalSec < 0

응답·오류

종류 status/body 해석 상태
success/variant 200 · tr P/U · derived variable
error 400 · {error:string} · "触发器仅支持自定义 agent" / err.Error() / msg C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PATCH /api/triggers/{id}

PATCH /api/triggers/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgUpdateTrigger · server/triggers.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body interval_sec integer (int) 요구 여부 미확정(P); null/absent 구별 안 됨 req.IntervalSec < 0
body on_finding boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body on_goal_met boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body on_task_timeout boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body on_tool_call boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body on_task_create boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body interval_message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body finding_message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body goal_message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body task_timeout_message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body tool_call_message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body task_create_message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body tool_names array[string] ([]string) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.IntervalSec < 0

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · "bad trigger id" / err.Error() / msg C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

DELETE /api/triggers/{id}

DELETE /api/triggers/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgDeleteTrigger · server/triggers.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 400 · {error:string} · "bad trigger id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/agents/{key}/prompts

GET /api/agents/{key}/prompts · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgListPromptVersions · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · versions:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/agents/{key}/variables

GET /api/agents/{key}/variables · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgPromptVars · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · variables:helper result P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/agents/{key}/prompt/preview

POST /api/agents/{key}/prompt/preview · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgPreviewPrompt · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body template string (string) 선택; null/absent 구별 안 됨 빈 값이면 현재 prompt를 읽어 fallback
body sample object/JSON (map[string]string) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: body.Template == ""

응답·오류

종류 status/body 해석 상태
success/variant 200 · rendered:string, error:helper result P/U · static composite
success/variant 200 · rendered:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/agents/{key}/visibility

GET /api/agents/{key}/visibility · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgGetAgentVisibility · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · sk == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · mcp:derived, skill:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/agents/{key}/visibility

PUT /api/agents/{key}/visibility · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgSetAgentVisibility · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body mcp array[integer] ([]int64) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil
body skill array[string] ([]string) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "agent not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

공통 helper 오류 분기: agentByKey (server/server_mgmt.go::Server.agentByKey: 503/500/404). Status union은 helper control-flow를 정적으로 펼친 P이며 runtime DB 결과는 관찰하지 않았다.

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/tools

GET /api/tools · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgListTools · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: countErr != nil · err != nil · pg == nil · ts == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · tools:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/tools/{key}

PUT /api/tools/{key} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgUpdateTool · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body description string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body schema object/JSON (json.RawMessage) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body agents array[string] ([]string) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "工具不存在: " + key C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

POST /api/tools/custom

POST /api/tools/custom · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgCreateCustomTool · server/customtool.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body key string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 !reToolKey.MatchString(req.Key)
body description string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body schema object/JSON (json.RawMessage) 요구 여부 미확정(P); null/absent 구별 안 됨 req.Kind == "http" && !hasSchemaProps(req.Schema)
body agents array[string] ([]string) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body kind string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 req.Kind != "command" && req.Kind != "script" && req.Kind != "http" && req.Kind != "shell"; req.Kind == "http" && !hasSchemaProps(req.Schema)
body exec object/JSON (json.RawMessage) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body deferred boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !reToolKey.MatchString(req.Key) · req.Kind != "command" && req.Kind != "script" && req.Kind != "http" && req.Kind != "shell" · req.Kind == "http" && !hasSchemaProps(req.Schema)

응답·오류

종류 status/body 해석 상태
success/variant 200 · key:expression P/U · static composite
error 400 · {error:string} · err.Error() / "key 需小写字母开头,仅含小写字母/数字/下划线" / "kind 需为 command / script / http / shell" / "http 工具必须提供参数 JSON Schema(不能留空)" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "该 key 已存在(内置或自定义工具)" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tools/custom/test

POST /api/tools/custom/test · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgTestCustomTool · server/customtool.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body kind string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body exec object/JSON (json.RawMessage) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body params object/JSON (map[string]any) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · output:helper result, is_error:expression P/U · static composite
error 400 · {error:string} · "无效的请求体" / "shell 类型工具是 bash 环境声明,无可执行内容" / "未知工具类型: " + req.Kind C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/tools/custom/{key}

PUT /api/tools/custom/{key} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgUpdateCustomTool · server/customtool.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body key string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body description string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body schema object/JSON (json.RawMessage) 요구 여부 미확정(P); null/absent 구별 안 됨 req.Kind == "http" && !hasSchemaProps(req.Schema)
body agents array[string] ([]string) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body kind string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 req.Kind != "command" && req.Kind != "script" && req.Kind != "http" && req.Kind != "shell"; req.Kind == "http" && !hasSchemaProps(req.Schema)
body exec object/JSON (json.RawMessage) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body deferred boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.Kind != "command" && req.Kind != "script" && req.Kind != "http" && req.Kind != "shell" · req.Kind == "http" && !hasSchemaProps(req.Schema)

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · "只能编辑自定义工具" / err.Error() / "kind 需为 command / script / http / shell" / "http 工具必须提供参数 JSON Schema(不能留空)" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

DELETE /api/tools/custom/{key}

DELETE /api/tools/custom/{key} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgDeleteCustomTool · server/customtool.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/settings/python/detect

POST /api/settings/python/detect · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgDetectPython · server/server.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · p == ""

응답·오류

종류 status/body 해석 상태
success/variant 200 · python_interpreter:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "未检测到 python(python3/python 均不在 PATH)" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tools/{key}/reset

POST /api/tools/{key}/reset · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgResetTool · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path key string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil · sd.Key != key · t.Name() != key

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "非内置工具或不存在: " + key C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/mcp

GET /api/mcp · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgListMCP · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · ms == nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · servers:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/mcp

POST /api/mcp · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgSaveMCP · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body id integer (int64) 요구 여부 미확정(P); null/absent 구별 안 됨 m.ID = id
body name string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body transport string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body command string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body args object/JSON (json.RawMessage) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body env object/JSON (json.RawMessage) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body url string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 isNew && m.Enabled
body insecure boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body tools array[string] ([]string) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: isNew && m.Enabled

응답·오류

종류 status/body 해석 상태
success/variant 200 · id:derived P/U · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/mcp/{id}

DELETE /api/mcp/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgDeleteMCP · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/mcp/{id}/tools

GET /api/mcp/{id}/tools · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgMCPTools · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil · tools == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · tools:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/mcp/{id}/refresh

POST /api/mcp/{id}/refresh · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgRefreshMCP · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · m.ID == id · pg == nil · target == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · tools:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "MCP 不存在" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 502 · {error:string} · "工具发现失败:" + err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/sync/scopesentry/status

GET /api/sync/scopesentry/status · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: syncSSStatus · server/sync_scopesentry.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: cerr == nil · configured && m.Enabled · err != nil · m == nil · m.Tools != nil · s.pg(w) == nil · terr == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · resp P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/sync/scopesentry/datasource

POST /api/sync/scopesentry/datasource · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: syncSSDatasource · server/sync_scopesentry.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body url string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 body.URL != ""
body api_key string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 body.APIKey != ""

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: body.APIKey != "" · body.URL != ""

응답·오류

종류 status/body 해석 상태
success/variant 200 · id:derived, enabled:expression P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/sync/scopesentry/projects

GET /api/sync/scopesentry/projects · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: syncSSProjects · server/sync_scopesentry.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query page string wire 선택 positive decimal integer; invalid/zero/negative→1
query search string wire 선택 handler/helper 변환·default 미전개(P)
query size string wire 선택 positive decimal integer; invalid/zero/negative→50
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · ok && len(raw) > 0 · q != "" · s.pg(w) == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · projects:derived, tag:expression P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 502 · {error:string} · err.Error() / "list_projects_data 失败: " + err.Error() / "解析项目列表失败: " + err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/sync/scopesentry/tasks

GET /api/sync/scopesentry/tasks · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: syncSSTasks · server/sync_scopesentry.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query page string wire 선택 positive decimal integer; invalid/zero/negative→1
query search string wire 선택 handler/helper 변환·default 미전개(P)
query size string wire 선택 positive decimal integer; invalid/zero/negative→50
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · len(tasks) == 0 · q != "" · s.pg(w) == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · tasks:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 502 · {error:string} · err.Error() / "list_tasks 失败: " + err.Error() / "解析任务列表失败: " + err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/sync/scopesentry/sync

POST /api/sync/scopesentry/sync · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: syncSSRun · server/sync_scopesentry.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body dimension string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 project/task가 아니면 400 후 return
body targets array[string] ([]string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 빈 배열이면 400 후 return
body asset_types array[string] ([]string) 선택; null/absent 구별 안 됨 빈 배열이면 subdomain/service/app 기본값
body create_company boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 req.CreateCompany
body page_size integer (int) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: len(req.AssetTypes) == 0 · len(req.Targets) == 0 · pageSize <= 0 \|\| pageSize > 500 · req.CreateCompany · req.Dimension != "project" && req.Dimension != "task"

응답·오류

종류 status/body 해석 상태
success/variant 200 · synced:derived, companies:derived, warnings:derived, errors:derived P/U · static composite
error 400 · {error:string} · "invalid JSON: " + err.Error() / "dimension 必须是 project 或 task" / "targets 不能为空" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 502 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "database unavailable" / "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/skills

GET /api/skills · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: fsListSkills · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !e.IsDir() · allReg != nil · err != nil · node.Files == nil · ok · s.m.pg != nil · sk.Dir != ""

응답·오류

종류 status/body 해석 상태
success/variant 200 · skills:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/skills

POST /api/skills · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: fsCreateSkill · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body name string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 validSkillName 실패면 400 후 return
body description string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim 후 빈 문자열이면 400 후 return
body license string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 body.License != ""
body compatibility string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 body.Compatibility != ""
body mcps array[string] ([]string) 요구 여부 미확정(P); absent/null→nil; null/absent 구별 안 됨 nil
body instructions string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 strings.TrimSpace(body.Instructions) != ""

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !validSkillName(body.Name) · body.Compatibility != "" · body.License != "" · strings.TrimSpace(body.Description) == "" · strings.TrimSpace(body.Instructions) != ""

응답·오류

종류 status/body 해석 상태
success/variant 201 · name:expression P/U · static composite
error 400 · {error:string} · err.Error() / "skill name must be 1-64 lowercase alphanumeric/hyphen characters, not starting/ending/doubling hyphens" / "description is required" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "skill already exists" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/skills/upload

POST /api/skills/upload · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: fsUploadSkill · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query overwrite string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
multipart file ZIP binary 필수 size/method/path/SKILL.md/frontmatter 검증

요청 body 상한: 20 MiB (20971520 bytes) · source server/server_mgmt.go::fsUploadSkill · 초과/decoder 경로 400 "缺少上传文件(表单字段 file)或超出大小限制".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !validSkillName(name) · entries > maxSkillEntries · err != nil · err == nil && !overwrite · f.UncompressedSize64 > maxSkillFileBytes · msg != "" · name == "" · name == "" && prefix != "" · overwrite · path.Base(e.name) != "SKILL.md" · prefix != "" && !strings.HasPrefix(e.name, prefix) · rel == "" · root != "." · skillMD == nil · skillMD == nil \|\| strings.Count(e.name, "/") < strings.Count(skillMD.name, "/") · total > maxSkillTotalBytes

응답·오류

종류 status/body 해석 상태
success/variant 201 · name:derived, files:derived P/U · static composite
error 400 · {error:string} · "缺少上传文件(表单字段 file)或超出大小限制" / err.Error() / "压缩包内未找到 SKILL.md" / "读取 SKILL.md 失败:" + err.Error() / "skill 名称无效(取自 SKILL.md 的 name 字段):" + name + "(≤64 字符,字母开头,只能用小写字母/数字/连字符或中文等非 ASCII 字母,不能有空格、点、路径分隔符)" / "压缩包含非法路径 " + e.name + ":" + msg / "压缩包文件过多" / "文件过大:" + rel / "压缩包解压后过大" / "解压后缺少 SKILL.md" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "skill 已存在:" + name + "(如需覆盖请确认后重试)" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() / "安装失败:" + err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/skills/{name}

DELETE /api/skills/{name} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: fsDeleteSkill · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path name string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !validSkillName(name) · err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 400 · {error:string} · "invalid skill name" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/skills/missing

GET /api/skills/missing · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: fsMissingSkills · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query limit string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · missing:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/skills/{name}/usage

GET /api/skills/{name}/usage · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: fsSkillUsage · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path name string 필수 handler의 parse/range validation; 미해석 helper는 P
query limit string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !validSkillName(name) · err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · calls:derived P/U · static composite
error 400 · {error:string} · "非法 skill 名" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/skills/{name}/meta

PUT /api/skills/{name}/meta · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: fsUpdateSkillMeta · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path name string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body mcps array[string] (*[]string) 요구 여부 미확정(P); absent/null→nil; null→nil nil
body description string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil nil
body license string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil nil
body compatibility string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil nil

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · "invalid skill name" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "skill not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

POST /api/skills/{name}/dirs

POST /api/skills/{name}/dirs · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: fsCreateDir · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path name string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body path string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 201 · dir:derived P/U · static composite
error 400 · {error:string} · "invalid skill name" / err.Error() / errMsg C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "skill not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/skills/{name}/files

GET /api/skills/{name}/files · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: fsListFiles · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path name string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !validSkillName(name) · err != nil · files == nil · os.IsNotExist(err)

응답·오류

종류 status/body 해석 상태
success/variant 200 · files:derived P/U · static composite
error 400 · {error:string} · "invalid skill name" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "skill not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/skills/{name}/files/{file...}

GET /api/skills/{name}/files/{file...} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: fsReadFile · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path file string 필수 handler의 parse/range validation; 미해석 helper는 P
path name string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !validSkillName(name) · err != nil · errMsg != "" · os.IsNotExist(err)

응답·오류

종류 status/body 해석 상태
success/variant 200 · content:helper result, file:derived P/U · static composite
error 400 · {error:string} · "invalid skill name" / errMsg C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "file not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/skills/{name}/files/{file...}

PUT /api/skills/{name}/files/{file...} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: fsWriteFile · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path file string 필수 handler의 parse/range validation; 미해석 helper는 P
path name string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body content string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · "invalid skill name" / errMsg / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "skill not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

DELETE /api/skills/{name}/files/{file...}

DELETE /api/skills/{name}/files/{file...} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: fsDeletePath · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path file string 필수 handler의 parse/range validation; 미해석 helper는 P
path name string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !validSkillName(name) · err != nil · errMsg != "" · os.IsNotExist(err)

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 400 · {error:string} · "invalid skill name" / errMsg C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/visibility/{kind}/{id}

GET /api/visibility/{kind}/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgResourceVisibility · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
path kind string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · agents:helper result P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/visibility/toggle

POST /api/visibility/toggle · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgToggleVisibility · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body agent_id integer (int64) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body kind string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body resource_id integer (int64) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body visible boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/visibility/skill/{name}

GET /api/visibility/skill/{name} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgSkillVisibility · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path name string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · agents:helper result P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/visibility/skill/toggle

POST /api/visibility/skill/toggle · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgToggleSkillVisibility · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body agent_id integer (int64) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body skill_name string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body visible boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/llm/profiles

GET /api/llm/profiles · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgListProfiles · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · profiles:helper result P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/llm/profiles

POST /api/llm/profiles · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgSaveProfile · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body id integer (int64) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body name string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body format string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body base_url string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body proxy string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body model string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body api_key_hint string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body rate_per_second number (float64) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body rate_per_minute number (float64) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body context_window_k integer (int) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body thinking_type string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body reasoning_effort string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body is_default boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body priority integer (int) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body pool_exclude boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body streaming boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 p.Streaming = body.Streaming == nil || *body.Streaming
body max_tokens integer (int) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body max_tokens_field string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body session_header_key string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body retry RetryOverride (RetryOverride) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body api_key string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 p.APIKey = body.APIKey
body streaming boolean (*bool) 요구 여부 미확정(P); absent/null→nil; null→nil p.Streaming = body.Streaming == nil || *body.Streaming

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · id:derived P/U · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/llm/profiles/{id}

DELETE /api/llm/profiles/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgDeleteProfile · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "当前激活的 LLM 配置不能删除,请先激活其他配置" / "LLM 配置正在被任务或会话修改,请重试" / "等待 LLM 配置引用释放超时,请重试" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/llm/profiles/active

POST /api/llm/profiles/active · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgActivateProfile · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body id integer (int64) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/llm/retry-policy

GET /api/llm/retry-policy · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgGetLLMRetryPolicy · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · pg.LLMRetryPolicy() P/U · helper result
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/llm/retry-policy

POST /api/llm/retry-policy · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgSaveLLMRetryPolicy · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body connect RetryRule (RetryRule) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body empty RetryRule (RetryRule) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body stream RetryRule (RetryRule) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body breaker RetryRule (RetryRule) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body intent RetryRule (RetryRule) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · pg.LLMRetryPolicy() P/U · helper result
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/llm/pool

GET /api/llm/pool · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgLLMPoolStatus · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: s.pg(w) == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · s.llmPoolStatus() P/U · helper result
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/llm/pool/reset

POST /api/llm/pool/reset · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgLLMPoolReset · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body id integer (int64) 요구 여부 미확정(P); null/absent 구별 안 됨 body.ID > 0

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: body.ID > 0

응답·오류

종류 status/body 해석 상태
success/variant 200 · s.llmPoolStatus() P/U · helper result
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/llm/models

POST /api/llm/models · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: pgListModels · server/server_mgmt.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body provider string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body base_url string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body api_key string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body proxy string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body profile_id integer (*int64) 선택; null→nil 직접 api_key가 없을 때 저장 key fallback에만 사용

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: apiKey == "" && req.ProfileID != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean, error:string C · static composite
success/variant 200 · ok:boolean, models:derived P/U · static composite
success/variant 200 · ok:boolean, models:[]string P/U · static composite
success/variant 200 · ok:boolean, error:derived P/U · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/intercept/rules

GET /api/intercept/rules · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptListRules · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil · rules == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · rules:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/intercept/rules

POST /api/intercept/rules · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptCreateRule · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body name string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body priority integer (int) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body match_target string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body match_type string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body pattern string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body action string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body timeout_enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body timeout_seconds integer (int) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body timeout_action string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · rule P/U · derived variable
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/intercept/rules/{id}

PUT /api/intercept/rules/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptUpdateRule · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body name string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body priority integer (int) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body match_target string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body match_type string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body pattern string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body action string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body message string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body timeout_enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body timeout_seconds integer (int) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body timeout_action string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · rule P/U · derived variable
error 400 · {error:string} · "bad rule id" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/intercept/rules/{id}

DELETE /api/intercept/rules/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptDeleteRule · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 400 · {error:string} · "bad rule id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/intercept/rules/{id}/toggle

POST /api/intercept/rules/{id}/toggle · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptToggleRule · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean, enabled:expression P/U · static composite
error 400 · {error:string} · "bad rule id" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/asset-intercept/rules

GET /api/asset-intercept/rules · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: assetInterceptListRules · server/asset_intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil · rules == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · rules:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/asset-intercept/rules

POST /api/asset-intercept/rules · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: assetInterceptCreateRule · server/asset_intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body kind string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body pattern string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body note string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · rule P/U · derived variable
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/asset-intercept/rules/{id}

PUT /api/asset-intercept/rules/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: assetInterceptUpdateRule · server/asset_intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body kind string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body pattern string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body note string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · rule P/U · derived variable
error 400 · {error:string} · "bad rule id" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/asset-intercept/rules/{id}

DELETE /api/asset-intercept/rules/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: assetInterceptDeleteRule · server/asset_intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · deleted:derived P/U · static composite
error 400 · {error:string} · "bad rule id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/asset-intercept/rules/{id}/toggle

POST /api/asset-intercept/rules/{id}/toggle · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: assetInterceptToggleRule · server/asset_intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean, enabled:expression P/U · static composite
error 400 · {error:string} · "bad rule id" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/intercept/pending

GET /api/intercept/pending · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptListPending · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pending == nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · pending:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/intercept/pending/{id}

GET /api/intercept/pending/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptGetOne · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil · p == nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · p P/U · derived variable
error 400 · {error:string} · "bad pending id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/intercept/pending/{id}/decide

POST /api/intercept/pending/{id}/decide · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptDecide · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body decision string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 req.Decision != "allowed" && req.Decision != "denied"

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.Decision != "allowed" && req.Decision != "denied"

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · "bad pending id" / err.Error() / "decision 必须是 allowed 或 denied" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/intercept/history

GET /api/intercept/history · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptHistory · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query decision_source string wire 선택 enum empty|model|rule|unknown; invalid→400
query page string wire 선택 decimal integer; invalid/<1→1
query size string wire 선택 decimal integer; invalid/<1→20; >100→100
query status string wire 선택 enum empty|pending|allowed|denied|timeout; invalid→400
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · items == nil · pg == nil · q.Get("page") == "" && q.Get("size") == "" && filter == (db.InterceptApprovalFilter{})

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:derived, total:helper result P/U · static composite
success/variant 200 · items:derived, total:derived, page:derived, page_size:derived P/U · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/intercept/history/{id}

GET /api/intercept/history/{id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptDetail · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok \|\| id <= 0 · detail == nil · err != nil · pg == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · detail P/U · derived variable
error 400 · {error:string} · "bad approval id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/intercept/history/{id}/execution

GET /api/intercept/history/{id}/execution · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptExecution · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
query conversation string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok \|\| id <= 0 · conv == nil · err != nil · errors.Is(err, db.ErrInterceptExecutionUnavailable) · errors.Is(err, db.ErrInterceptTaskDeleted) \|\| errors.Is(err, db.ErrInterceptSessionDeleted) · getErr != nil · parseErr == nil && convID > 0 · pg == nil · target == nil 직접 parse/default: strconv.ParseInt(r.URL.Query().Get("conversation"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · conversation_id:expression, task_id:expression, session:expression, seq:expression, items:helper result P/U · static composite
error 400 · {error:string} · "bad approval id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "审批记录已被删除或不存在" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 410 · {error:string} · err.Error() / "对话已被删除" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() / getErr.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/intercept/task/{taskID}

GET /api/intercept/task/{taskID} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptListTaskItems · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path taskID string 필수 handler의 parse/range validation; 미해석 helper는 P
query decision_source string wire 선택 enum empty|model|rule|unknown; invalid→400
query page string wire 선택 decimal integer; invalid/<1→1
query size string wire 선택 decimal integer; invalid/<1→20; >100→100
query status string wire 선택 enum empty|pending|allowed|denied|timeout; invalid→400
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · items == nil · pg == nil · q.Get("page") == "" && q.Get("size") == "" && filter == (db.InterceptApprovalFilter{}) · taskID == ""

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:derived, total:helper result P/U · static composite
success/variant 200 · items:derived, total:derived, page:derived, page_size:derived P/U · static composite
error 400 · {error:string} · "bad task id" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "PostgreSQL 不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/intercept/tool-config

GET /api/intercept/tool-config · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptGetToolConfig · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · enabled_tools:derived P/U · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/intercept/tool-config

PUT /api/intercept/tool-config · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptSetToolConfig · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body enabled_tools array[string] ([]string) 선택; null/absent 구별 안 됨 nil이면 빈 배열로 정규화

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: req.EnabledTools == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/intercept/judge

GET /api/intercept/judge · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptGetJudgeConfig · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · s.m.interceptor.GetJudgeConfig() P/U · helper result
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/intercept/judge

PUT /api/intercept/judge · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptSetJudgeConfig · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body enabled boolean (bool) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body profile_id integer (int64) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body prompt string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body timeout_seconds integer (int) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body fail_action string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body ask_timeout_seconds integer (int) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인
body ask_timeout_action string (string) 요구 여부 미확정(P); null/absent 구별 안 됨 Go zero value; 별도 기본은 handler/helper 확인

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · ok:boolean C · static composite
error 400 · {error:string} · err.Error() / "fail_action 必须是 allow、ask 或 deny" / "ask_timeout_action 必须是 allow 或 deny" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/intercept/judge/usage

GET /api/intercept/judge/usage · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: interceptJudgeUsage · server/intercept.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
query days string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: err != nil · pg == nil 직접 parse/default: atoiDefault(r.URL.Query().Get("days"), 30)

응답·오류

종류 status/body 해석 상태
success/variant 200 · db.JudgeUsage{Daily: []db.JudgeDayUsage{}} P/U · static composite
success/variant 200 · usage P/U · derived variable
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/findings/{id}/traffic

GET /api/exploration/findings/{id}/traffic · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getFindingTraffic · server/finding_traffic.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
query context_task string wire 선택 optional task id; missing task/finding lineage mismatch→404; write operations reject inherited finding as read-only→403
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · trafficSummary(out) P/U · helper result
error 400 · {error:string} · "invalid finding id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() / "finding not found" / "context task not found" / "finding is not part of context task" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 422 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

Helper 오류 분기: evidenceError · server/finding_traffic.go::evidenceError · 위 404, 409, 422 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

Finding traffic pre-handler: findingTrafficAccess · server/finding_traffic.go가 finding/context_task 존재·lineage를 검사하고 write operation의 inherited finding을 403으로 거부한다. 위 400/403/404/500은 helper control-flow C, DB/runtime 결과는 P다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/exploration/findings/{id}/traffic

POST /api/exploration/findings/{id}/traffic · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: bindFindingTraffic · server/finding_traffic.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
query context_task string wire 선택 optional task id; missing task/finding lineage mismatch→404; write operations reject inherited finding as read-only→403
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body traffic_refs array[db.TrafficRef] ([]db.TrafficRef) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 빈 배열이면 400 후 return

요청 body 상한: 1 MiB (1048576 bytes) · source server/finding_traffic.go::bind/editFindingTraffic · 초과/decoder 경로 400 "invalid body".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: len(body.Refs) == 0

응답·오류

종류 status/body 해석 상태
success/variant 200 · trafficSummary(out) P/U · helper result
error 400 · {error:string} · "invalid body" / "请选择流量" / "invalid finding id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 403 · {error:string} · "inherited finding is read-only" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() / "finding not found" / "context task not found" / "finding is not part of context task" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 422 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

Helper 오류 분기: evidenceError · server/finding_traffic.go::evidenceError · 위 404, 409, 422 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

Finding traffic pre-handler: findingTrafficAccess · server/finding_traffic.go가 finding/context_task 존재·lineage를 검사하고 write operation의 inherited finding을 403으로 거부한다. 위 400/403/404/500은 helper control-flow C, DB/runtime 결과는 P다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PATCH /api/exploration/findings/{id}/traffic/{binding_id}

PATCH /api/exploration/findings/{id}/traffic/{binding_id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: editFindingTraffic · server/finding_traffic.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path binding_id string 필수 handler의 parse/range validation; 미해석 helper는 P
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
query context_task string wire 선택 optional task id; missing task/finding lineage mismatch→404; write operations reject inherited finding as read-only→403
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body version integer (*int64) 필수(직접 거부 branch 확인); null→nil nil 또는 body decode 실패면 400 후 return
body role string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil nil
body note string (*string) 요구 여부 미확정(P); absent/null→nil; null→nil nil

공유 decoder가 binding_ids도 parse하지만 이 method branch는 값을 사용하지 않아 의미 입력에서 제외한다.

요청 body 상한: 1 MiB (1048576 bytes) · source server/finding_traffic.go::bind/editFindingTraffic · 초과/decoder 경로 400 "version 和有效请求体必填".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: body.Version == nil · binding_id must parse as positive int64

응답·오류

종류 status/body 해석 상태
success/variant 200 · s.getFindingTraffic(w, r) P/U · helper result
error 400 · {error:string} · "version 和有效请求体必填" / "invalid binding id" / "invalid finding id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 403 · {error:string} · "inherited finding is read-only" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() / "finding not found" / "context task not found" / "finding is not part of context task" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 422 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

Helper 오류 분기: evidenceError · server/finding_traffic.go::evidenceError · 위 404, 409, 422 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

Finding traffic pre-handler: findingTrafficAccess · server/finding_traffic.go가 finding/context_task 존재·lineage를 검사하고 write operation의 inherited finding을 403으로 거부한다. 위 400/403/404/500은 helper control-flow C, DB/runtime 결과는 P다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/exploration/findings/{id}/traffic/{binding_id}

DELETE /api/exploration/findings/{id}/traffic/{binding_id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: editFindingTraffic · server/finding_traffic.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path binding_id string 필수 handler의 parse/range validation; 미해석 helper는 P
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
query context_task string wire 선택 optional task id; missing task/finding lineage mismatch→404; write operations reject inherited finding as read-only→403
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body version integer (*int64) 필수(직접 거부 branch 확인); null→nil nil 또는 body decode 실패면 400 후 return

공유 decoder가 role, note, binding_ids도 parse하지만 이 method branch는 값을 사용하지 않아 의미 입력에서 제외한다.

요청 body 상한: 1 MiB (1048576 bytes) · source server/finding_traffic.go::bind/editFindingTraffic · 초과/decoder 경로 400 "version 和有效请求体必填".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: body.Version == nil · binding_id must parse as positive int64

응답·오류

종류 status/body 해석 상태
success/variant 200 · s.getFindingTraffic(w, r) P/U · helper result
error 400 · {error:string} · "version 和有效请求体必填" / "invalid binding id" / "invalid finding id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 403 · {error:string} · "inherited finding is read-only" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() / "finding not found" / "context task not found" / "finding is not part of context task" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 422 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

Helper 오류 분기: evidenceError · server/finding_traffic.go::evidenceError · 위 404, 409, 422 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

Finding traffic pre-handler: findingTrafficAccess · server/finding_traffic.go가 finding/context_task 존재·lineage를 검사하고 write operation의 inherited finding을 403으로 거부한다. 위 400/403/404/500은 helper control-flow C, DB/runtime 결과는 P다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

PUT /api/exploration/findings/{id}/traffic/order

PUT /api/exploration/findings/{id}/traffic/order · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: editFindingTraffic · server/finding_traffic.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
query context_task string wire 선택 optional task id; missing task/finding lineage mismatch→404; write operations reject inherited finding as read-only→403
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body version integer (*int64) 필수(직접 거부 branch 확인); null→nil nil 또는 body decode 실패면 400 후 return
body binding_ids array[string] ([]string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 nil이면 400 후 return; 빈 non-nil 배열은 허용

공유 decoder가 role, note도 parse하지만 이 method branch는 값을 사용하지 않아 의미 입력에서 제외한다.

요청 body 상한: 1 MiB (1048576 bytes) · source server/finding_traffic.go::bind/editFindingTraffic · 초과/decoder 경로 400 "version 和有效请求体必填".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: body.Version == nil · body.Order == nil · binding_ids element must parse as positive int64

응답·오류

종류 status/body 해석 상태
success/variant 200 · s.getFindingTraffic(w, r) P/U · helper result
error 400 · {error:string} · "version 和有效请求体必填" / "binding_ids 必填" / "invalid binding id" / "invalid finding id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 403 · {error:string} · "inherited finding is read-only" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() / "finding not found" / "context task not found" / "finding is not part of context task" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 422 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

Helper 오류 분기: evidenceError · server/finding_traffic.go::evidenceError · 위 404, 409, 422 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

Finding traffic pre-handler: findingTrafficAccess · server/finding_traffic.go가 finding/context_task 존재·lineage를 검사하고 write operation의 inherited finding을 403으로 거부한다. 위 400/403/404/500은 helper control-flow C, DB/runtime 결과는 P다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/findings/{id}/traffic/{binding_id}

GET /api/exploration/findings/{id}/traffic/{binding_id} · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getFindingTrafficDetail · server/finding_traffic.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path binding_id string 필수 handler의 parse/range validation; 미해석 helper는 P
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
query context_task string wire 선택 optional task id; missing task/finding lineage mismatch→404; write operations reject inherited finding as read-only→403
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil · err != nil \|\| bid <= 0 직접 parse/default: strconv.ParseInt(r.PathValue("binding_id"), 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · result P/U · derived variable
error 400 · {error:string} · "invalid binding id" / "invalid finding id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() / "finding not found" / "context task not found" / "finding is not part of context task" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 422 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

Helper 오류 분기: evidenceError · server/finding_traffic.go::evidenceError · 위 404, 409, 422 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

Finding traffic pre-handler: findingTrafficAccess · server/finding_traffic.go가 finding/context_task 존재·lineage를 검사하고 write operation의 inherited finding을 403으로 거부한다. 위 400/403/404/500은 helper control-flow C, DB/runtime 결과는 P다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/exploration/findings/{id}/traffic/{binding_id}/body

GET /api/exploration/findings/{id}/traffic/{binding_id}/body · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: getFindingTrafficBody · server/finding_traffic.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path binding_id string 필수 handler의 parse/range validation; 미해석 helper는 P
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
query context_task string wire 선택 optional task id; missing task/finding lineage mismatch→404; write operations reject inherited finding as read-only→403
query download string wire 선택 exact string 1 selects raw attachment; any other/missing value returns preview JSON
query length string wire 선택 int64 byte count; omitted/0/>8192→8192; negative→422 helper path
query offset string wire 선택 int64 byte offset; omitted→0; parse/negative/out-of-body→422 helper path
query side string wire 성공 응답에 필수 required enum request|response; missing/other reaches OpenBody error→422
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !ok · err != nil · err != nil \|\| bid <= 0 · r.URL.Query().Get("download") == "1" · raw != "" 직접 parse/default: strconv.ParseInt(r.PathValue("binding_id"), 10, 64) · strconv.ParseInt(raw, 10, 64)

응답·오류

종류 status/body 해석 상태
success/variant 200 · preview P/U · derived variable
success/variant 200 · \download=1`: application/octet-stream; X-Content-Type-Options nosniff; Content-Disposition `evidence-<binding>-<side>.bin`; Content-Length; raw bytes` P/U · binary stream
error 400 · {error:string} · "invalid binding id" / "invalid finding id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · err.Error() / "finding not found" / "context task not found" / "finding is not part of context task" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 422 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

Helper 오류 분기: evidenceError · server/finding_traffic.go::evidenceError · 위 404, 409, 422 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

Finding traffic pre-handler: findingTrafficAccess · server/finding_traffic.go가 finding/context_task 존재·lineage를 검사하고 write operation의 inherited finding을 403으로 거부한다. 위 400/403/404/500은 helper control-flow C, DB/runtime 결과는 P다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

GET /api/conversations/{id}/side-questions

GET /api/conversations/{id}/side-questions · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: handleSideQuestions · server/side_questions.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
query before string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:array[sidequestion.Exchange], current:sidequestion.Exchange|null, next_cursor:integer, snapshot:object|null P/U · static composite
error 400 · {error:string} · "bad id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "conversation not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "旁路服务不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/conversations/{id}/side-questions

POST /api/conversations/{id}/side-questions · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: handleSideQuestions · server/side_questions.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body question string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim 후 1–4000자가 아니면 400 후 return
body client_request_id string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 validWorkerMessageRequestID 실패면 400 후 return

요청 body 상한: 32 KiB (32768 bytes) · source server/side_questions.go::handleSideQuestions POST branch · 초과/decoder 경로 400 "bad json".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: in.Question == "" \|\| len([]rune(in.Question)) > 4000 \|\| !validWorkerMessageRequestID(in.ClientID) · existing.Question != in.Question

응답·오류

종류 status/body 해석 상태
success/variant 200 · existing P/U · derived variable
success/variant 202 · e P/U · derived variable
error 400 · {error:string} · "bad id" / "bad json" / "问题须为 1–4000 字符,并提供有效请求 ID" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "conversation not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务正在归档或删除" / "同一请求 ID 不能用于不同问题" / "尚无上下文快照,请先运行主 Agent" / db.ErrSideBusy.Error() C for direct writeErr; error helper 내부는 P
error 429 · {error:string} · "旁路请求已达并发上限,请稍后重试" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "旁路服务不可用" C for direct writeErr; error helper 내부는 P

Helper 오류 분기: prepareChatMentionMessage · server/chat_mentions.go::Server.prepareChatMentionMessage · 위 400, 500 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/conversations/{id}/side-questions

DELETE /api/conversations/{id}/side-questions · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: handleSideQuestions · server/side_questions.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · cleared:boolean C · static composite
error 400 · {error:string} · "bad id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "conversation not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "旁路服务不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/tasks/{id}/chat/side-questions

GET /api/tasks/{id}/chat/side-questions · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: handleSideQuestions · server/side_questions.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
query before string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:array[sidequestion.Exchange], current:sidequestion.Exchange|null, next_cursor:integer, snapshot:object|null P/U · static composite
error 400 · {error:string} · "bad id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务已归档或正在删除" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "旁路服务不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/{id}/chat/side-questions

POST /api/tasks/{id}/chat/side-questions · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: handleSideQuestions · server/side_questions.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body question string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim 후 1–4000자가 아니면 400 후 return
body client_request_id string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 validWorkerMessageRequestID 실패면 400 후 return

요청 body 상한: 32 KiB (32768 bytes) · source server/side_questions.go::handleSideQuestions POST branch · 초과/decoder 경로 400 "bad json".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: in.Question == "" \|\| len([]rune(in.Question)) > 4000 \|\| !validWorkerMessageRequestID(in.ClientID) · existing.Question != in.Question

응답·오류

종류 status/body 해석 상태
success/variant 200 · existing P/U · derived variable
success/variant 202 · e P/U · derived variable
error 400 · {error:string} · "bad id" / "bad json" / "问题须为 1–4000 字符,并提供有效请求 ID" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务已归档或正在删除" / "任务正在归档或删除" / "同一请求 ID 不能用于不同问题" / "尚无上下文快照,请先运行主 Agent" / db.ErrSideBusy.Error() C for direct writeErr; error helper 내부는 P
error 429 · {error:string} · "旁路请求已达并发上限,请稍后重试" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "旁路服务不可用" C for direct writeErr; error helper 내부는 P

Helper 오류 분기: prepareChatMentionMessage · server/chat_mentions.go::Server.prepareChatMentionMessage · 위 400, 500 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/tasks/{id}/chat/side-questions

DELETE /api/tasks/{id}/chat/side-questions · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: handleSideQuestions · server/side_questions.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · cleared:boolean C · static composite
error 400 · {error:string} · "bad id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务已归档或正在删除" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "旁路服务不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/tasks/{id}/intents/{iid}/side-questions

GET /api/tasks/{id}/intents/{iid}/side-questions · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: handleSideQuestions · server/side_questions.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
path iid string 필수 handler의 parse/range validation; 미해석 helper는 P
query before string wire 선택 handler/helper 변환·default 미전개(P)
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · items:array[sidequestion.Exchange], current:sidequestion.Exchange|null, next_cursor:integer, snapshot:object|null P/U · static composite
error 400 · {error:string} · "bad id" / "bad intent id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" / "intent not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务已归档或正在删除" / "Worker 已删除" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "旁路服务不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/tasks/{id}/intents/{iid}/side-questions

POST /api/tasks/{id}/intents/{iid}/side-questions · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: handleSideQuestions · server/side_questions.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
path iid string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body question string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 trim 후 1–4000자가 아니면 400 후 return
body client_request_id string (string) 필수(직접 거부 branch 확인); null/absent 구별 안 됨 validWorkerMessageRequestID 실패면 400 후 return

요청 body 상한: 32 KiB (32768 bytes) · source server/side_questions.go::handleSideQuestions POST branch · 초과/decoder 경로 400 "bad json".

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: in.Question == "" \|\| len([]rune(in.Question)) > 4000 \|\| !validWorkerMessageRequestID(in.ClientID) · existing.Question != in.Question

응답·오류

종류 status/body 해석 상태
success/variant 200 · existing P/U · derived variable
success/variant 202 · e P/U · derived variable
error 400 · {error:string} · "bad id" / "bad intent id" / "bad json" / "问题须为 1–4000 字符,并提供有效请求 ID" / err.Error() C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" / "intent not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务已归档或正在删除" / "Worker 已删除" / "任务正在归档或删除" / "同一请求 ID 不能用于不同问题" / "尚无上下文快照,请先运行主 Agent" / db.ErrSideBusy.Error() C for direct writeErr; error helper 내부는 P
error 429 · {error:string} · "旁路请求已达并发上限,请稍后重试" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "旁路服务不可用" C for direct writeErr; error helper 내부는 P

Helper 오류 분기: prepareChatMentionMessage · server/chat_mentions.go::Server.prepareChatMentionMessage · 위 400, 500 status는 helper control-flow를 정적으로 펼친 P이며 호출 전/후 DB 효과는 operation별로 확인한다.

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

DELETE /api/tasks/{id}/intents/{iid}/side-questions

DELETE /api/tasks/{id}/intents/{iid}/side-questions · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: handleSideQuestions · server/side_questions.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path id string 필수 handler의 parse/range validation; 미해석 helper는 P
path iid string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정.

응답·오류

종류 status/body 해석 상태
success/variant 200 · cleared:boolean C · static composite
error 400 · {error:string} · "bad id" / "bad intent id" C for direct writeErr; error helper 내부는 P
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "task not found" / "intent not found" C for direct writeErr; error helper 내부는 P
error 409 · {error:string} · "任务已归档或正在删除" / "Worker 已删除" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P
error 503 · {error:string} · "旁路服务不可用" C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

GET /api/side-questions/{requestID}/events

GET /api/side-questions/{requestID}/events · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: sideEvents · server/side_questions.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path requestID string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: !e.Running() · !ok · e == nil · e.Sequence > seq · err != nil · first == nil

응답·오류

종류 status/body 해석 상태
success/variant 200 · text/event-stream; Cache-Control:no-cache; X-Accel-Buffering:no; no explicit Connection header; \event: snapshot` + sequence ID + SideRequest JSON; cleared event; 15 s keepalive` P/U · SSE stream
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "side question not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · "streaming unavailable" / err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: P · top-level key는 직접 추출했지만 derived/helper/opaque 또는 nested type이 남음.

목록·동시성·완료

POST /api/side-questions/{requestID}/cancel

POST /api/side-questions/{requestID}/cancel · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도

구현: cancelSideRequest · server/side_questions.go · 정확한 handler 근거

요청

위치/field wire type 필수·null 기본/검증
path requestID string 필수 handler의 parse/range validation; 미해석 helper는 P
auth credential Bearer header / artex_token cookie / query token 세 위치 중 하나에 유효 JWT 필수 extractToken 우선순위: header→cookie→query; query fallback은 SSE로 제한되지 않음
body 없음(직접 decoder/form read 미발견) 해당 없음 해당 없음

요청 판정: C/P · unknown field 거부 미설정. 직접 validation: e == nil · err != nil · ok

응답·오류

종류 status/body 해석 상태
success/variant 200 · cancelled:boolean C · static composite
error 401 · {error:string} · "未授权" / "token 无效或已过期" C for direct writeErr; error helper 내부는 P
error 404 · {error:string} · "side question not found" C for direct writeErr; error helper 내부는 P
error 500 · {error:string} · err.Error() C for direct writeErr; error helper 내부는 P

응답 schema 판정: C · 직접 scalar/static top-level key와 field type을 추출; nested 내부 schema는 별도 type 참조가 없으면 P.

목록·동시성·완료

상위 영역: HTTP API와 Web UI 계약

전체로 돌아가기 · Markdown 원본

검색을 열면 색인을 읽습니다.

등록한 문서 본문에서 검색합니다.