모든 경로에 인증이 필요합니다. 파일 상한은 현재 32 MiB, 청크 크기는 4 MiB입니다.
| 메서드·경로 | 요청 | 성공 코드·결과 |
|---|---|---|
POST /api/files/{hash}/index |
200 기존 L0 원천의 텍스트 파생·검색 색인 생성/복구. docx · pptx · xlsx · hwpx · pdf 는 태그가 없어도 기계 변환한다. 쓰기 권한 필요. JSON hash,text_indexed. 지원되지 않거나 생성 실패 시 422이며 원천은 유지 |
|
GET /api/vaults |
200 등록된 vault ID·표시 이름. 경로 등록은 앱 설정에서만 가능 |
|
GET /api/vaults/{id}/files?dir={relative_directory} |
200 files: 현재 폴더의 하위 디렉터리와 Markdown. 경로는 vault 기준 상대 경로이며 숨김·외부 경로 제외 |
|
POST /api/vaults/{id}/import |
application/json confirmed: 필수: true. 선택한 파일 묶음의 보관 권한·가져오기 확인 paths: 선택한 .md 상대 경로 배열 (1~100개, 합계 max_upload_bytes 이하) |
201 results: 파일별 hash·머리말 판정·출처 표시·경고. 비밀 패턴 422, 미확인·잘못된 경로 400. 실패 응답의 results에 일부 완료가 있을 수 있으므로 확인 |
POST /api/vaults/{id}/export |
application/json hash: L0 원천 SHA-256 |
201 path: docdosum/<원래 이름>.md (겹치면 뒤에 (2) …), hash. 출처·태그 근거와 텍스트 파생 사본. 같은 원천을 이미 내보냈으면 409, 텍스트 변환 미지원 422. 편집은 자동 역동기화하지 않음 |
GET /help |
200 브라우저에서 읽는 HTML 사용법과 호출 예시 |
|
GET /api |
200 JSON API 사용법·인증·현재 업로드 상한 |
|
POST /upload |
multipart/form-data file: 필수: 원본 파일 바이트 no_tags: 태그 없이 올리면 1: 태그 없음으로 두고 백그라운드 변환 · 기계 태그 tags: 쉼표 또는 줄바꿈으로 구분한 태그. 없으면 no_tags 필요 (둘 다 없으면 409 tags_required, 보관 안 함) |
303 Location: /source/. 리다이렉트를 자동 추적하지 말고 303과 Location을 확인한다. 파일 누락·상한 초과는 200 HTML일 수도 있으므로 200을 성공으로 판단하지 않는다. Bearer 토큰으로 올린 파일은 기계 변환하지 않는다 — 필요하면 POST /api/files/{hash}/index. |
POST /tag |
application/x-www-form-urlencoded hash: 필수: 원천 SHA-256 소문자 64자리 unread: 선택: 내용을 확인하지 않았으면 on value: 필수: 태그 하나. 여러 태그는 요청을 나누어 추가 |
303 Location: /source/. 빈 value는 추가 없이 303이므로 GET /api/files/{hash}의 active_tags로 실제 반영을 확인한다. |
GET /api/files/{hash} |
200 JSON: hash, is_l0, uploaded, verified, verification, text_indexed, active_tags, tags(삭제 이력 포함), captures. verification은 verified/missing/tampered/unmeasured. 200 자체는 무결성 통과를 뜻하지 않는다. 잘못된 해시는 400, 미등록 해시는 404. |
|
GET / |
200 토큰 없이: 자기소개 (Accept: application/json 이면 JSON service=docdosum, message, mcp, api, help, auth). 보관 내용은 없다. 토큰이 있으면 홈 화면 |
|
GET /api/verify |
200 JSON authors: 작성자(author)·표시 이름(label)·원천 수(files), limit. 토큰으로 쓴 파일의 작성자는 token:<토큰 ID> |
|
GET /api/verify?author={author} |
200 그 작성자가 기록한 원천을 최근순으로 최대 limit 개 다시 해시. JSON total, checked, truncated, verified, tampered, missing, unmeasured, files[hash, locator, at, verification]. 기록이 없는 작성자 404 |
|
GET /raw/{hash} |
200 검증된 원본 바이트. 무결성 검사 실패 시 409, 미등록 해시 404 |
|
POST /upload/chunk |
application/json content_type: 파일 MIME 형식 name: 파일 이름 no_tags: 태그 없이 올리면 true size: 전체 바이트 수 tags: 태그 문자열 배열. 없으면 no_tags 필요 (둘 다 없으면 409 tags_required) |
200 JSON: id, chunk_size, chunks. 전체 크기는 max_upload_bytes 이하여야 한다. |
GET /upload/chunk/{id} |
200 JSON: received·hashes(검증된 청크 번호/해시). completed=true면 hash,url로 기존 완료 결과 조회. 쓰기 권한 필요 |
|
PUT /upload/chunk/{id}/{n} |
application/octet-stream X-Chunk-Sha256: 필수 헤더: 해당 청크의 SHA-256 hex body: 0부터 시작하는 n번째 청크 바이트 |
204 청크 저장 완료. 마지막 청크를 제외하면 chunk_size 바이트 |
POST /upload/chunk/{id}/finish |
200 JSON: hash, url, text_indexed. 같은 id 완료 재요청은 같은 결과를 반환한다 (영수증 보관 24시간). 완료 후 GET /api/files/{hash}로 실제 저장·태그·검증 확인 |