테마
HTTP API
autofix 주소
| 메서드 | 경로 | 인증 | 하는 일 |
|---|---|---|---|
POST | /api/trigger | Bearer AUTOFIX_TOKEN | 목록을 받아 실행을 만들어요 |
GET | /api/runs | Basic VIEW_USER·VIEW_PASSWORD | 기록을 JSON 으로 줘요 |
GET | / | Basic | 기록 화면 |
GET | /healthz | 없음 | ok |
모든 응답에 Content-Security-Policy: default-src 'none'; style-src 'self'; …, X-Content-Type-Options: nosniff, Referrer-Policy: no-referrer, Cache-Control: no-store 를 붙여요.
POST /api/trigger
http
POST /api/trigger
Authorization: Bearer <AUTOFIX_TOKEN>
Content-Type: application/json
{
"source": "daily-scan",
"subject": "취약점 2건",
"findings": [
{
"repo": "owner/api",
"file": "pnpm-lock.yaml",
"package": "zod",
"version": "4.6.5",
"fixed": "4.6.6",
"id": "GHSA-xxxx-xxxx-xxxx",
"severity": "HIGH",
"scope": "runtime",
"summary": "한 줄 설명",
"url": "https://github.com/advisories/GHSA-xxxx-xxxx-xxxx"
}
]
}본문
| 필드 | 형식 | 뜻 |
|---|---|---|
source | 문자열, 선택 | 출처 이름. 앞뒤 공백을 떼고 40자까지. 비면 api |
subject | 문자열, 선택 | 기록에 남기는 제목(예: 리포트 메일 제목) |
findings | 배열 | 취약점 목록. 비면 아무것도 하지 않아요 |
findings 의 항목
| 필드 | 꼭 | 뜻 |
|---|---|---|
repo | ✓ | owner/name. 세션이 이 이름으로 레포를 찾거나 clone 해요 |
package | ✓ | 패키지 이름 |
id | ✓ | 권고 번호(GHSA, CVE, OSV id) |
severity | ✓ | CRITICAL·HIGH·MEDIUM·LOW. 정렬과 화면 색에 써요 |
version | 지금 버전 | |
fixed | 고친 버전. 비면 "고친 버전 없음"으로 전해요 | |
file | 찾은 파일(락파일 이름 등) | |
scope | runtime·dev 같은 범위 | |
summary | 한 줄 설명. 화면에만 보여요 | |
url | 권고 주소. 화면의 링크 | |
kind | 생태계나 종류(예: npm). 기록에만 남아요 | |
aliases | 다른 번호들. 기록에만 남아요 |
모르는 필드는 무시해요. 본문은 4MB 까지 읽어요.
응답
| 코드 | 본문 | 언제 |
|---|---|---|
202 | {"ok":true,"id":"20261025-0030-a1b2c3","status":"working"} | 세션을 열었어요 |
202 | {"ok":true,"id":"…","status":"failed"} | 실행은 만들었지만 세션을 열지 못했어요. 이유는 기록에 |
202 | {"ok":true,"id":"…","status":"skipped"} | 이전 실행이 진행 중이라 건너뛰었어요 |
200 | {"ok":true,"skipped":"남은 취약점 없음"} | findings 가 비었어요. 기록을 남기지 않아요 |
400 | JSON 을 읽지 못했어요 | 본문이 JSON 이 아니거나 4MB 를 넘었어요 |
401 | 토큰이 맞지 않아요 | 토큰이 다르거나 AUTOFIX_TOKEN 이 비었어요 |
500 | 기록 저장 실패 | runs.json 에 쓰지 못했어요 |
오류 본문은 JSON 이 아닌 글자예요. 세션을 여는 동안(최대 30초) 응답을 기다려요.
GET /api/runs
기록을 최근 것부터 배열로 줘요. 항목의 필드는 실행 상태를 보세요.
sh
curl -fsS -u "$VIEW_USER:$VIEW_PASSWORD" https://autofix.example.com/api/runsagent-bridge 서비스 API
autofix 가 부르는 쪽이에요. 직접 부를 일은 없지만 문제를 찾을 때 알아 두면 좋아요. 두 주소 모두 Authorization: Bearer <BRIDGE_SERVICE_TOKEN> 만 보고, 쿠키나 Origin 은 보지 않아요.
POST /api/service/sessions
json
{ "host": "내 맥 이름", "cwd": "~/src", "prompt": "…첫 메시지…", "title": "🤖 autofix 20261025-0030-a1b2c3" }BRIDGE_SERVICE_UID 사람의 맥 중 host 가 id 이거나 이름(대소문자 무시)인 첫 맥에, 안전한 전부 허용·Chrome 끔으로 세션을 열고 {"ok":true,"id":"<세션 id>"} 를 줘요.
| 코드 | 문구 | 언제 |
|---|---|---|
401 | 서비스 토큰이 맞지 않아요 | 토큰이 다르거나 서비스 API 가 꺼짐 |
415 | Content-Type 이 JSON 이 아님 | |
400 | prompt 가 비어 있어요 | |
404 | 그런 맥이 없어요 | host 와 맞는 맥이 없음 |
409 | 맥이 연결돼 있지 않아요 | 맥이 끊겨 있음 |
GET /api/service/sessions/:id
서비스 API 로 연 그 사람의 세션만 읽을 수 있어요.
json
{ "id": "…", "host": "내 맥 이름", "state": "done", "phase": "idle", "waitingOn": "", "answer": "…마지막 답변…" }| 필드 | 뜻 |
|---|---|
state | working·waiting·done·closed. 읽는 법은 실행의 일생 |
phase | agent-bridge 의 세부 단계 |
waitingOn | waiting 일 때 기다리는 카드의 제목(200자까지) |
answer | 세션의 마지막 답변. 20,000자를 넘으면 잘리고 …(잘림) 이 붙어요 |
없는 세션, 남의 세션, 사람이 직접 연 세션은 404 예요.