문서
버킷
파일을 버킷에 올리고, 필요하면 권한별 컬렉션으로 나눕니다. 검색은 호출자가 접근 가능한 컬렉션만 대상으로 실행됩니다.
버킷 생성
bashcurl -X POST https://api.schift.io/v1/buckets \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SCHIFT_API_KEY" \
-d '{"name": "research-papers", "description": "ML 연구 논문 모음"}'| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
name | string | Yes | 조직 내 고유한 버킷 이름 |
description | string | No | 설명 |
버킷 컬렉션
컬렉션은 버킷 안의 권한·검색 샤드입니다. 업로드는 특정 컬렉션을 대상으로 할 수 있고, 버킷 검색은 호출자가 검색 가능한 컬렉션만 먼저 계산한 뒤 실행됩니다.
bash# 하위 컬렉션 생성
curl -X POST https://api.schift.io/v1/buckets/{bucket_id}/collections \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SCHIFT_API_KEY" \
-d '{"name": "support-only", "description": "지원팀 전용 문서"}'
# 역할에 검색 권한 부여
curl -X POST https://api.schift.io/v1/buckets/{bucket_id}/collections/{collection_id}/grants \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SCHIFT_API_KEY" \
-d '{"subject_type": "role", "subject_id": "support", "permission": "search"}'파일 업로드
multipart form data로 하나 이상의 파일을 업로드합니다. 처리는 비동기로 진행되며, 엔드포인트는 job ID를 즉시 반환합니다.
bashcurl -X POST https://api.schift.io/v1/buckets/{bucket_id}/upload \
-H "Authorization: Bearer $SCHIFT_API_KEY" \
-F "[email protected]" \
-F "[email protected]" \
-F "collection_id={collection_id}" \
-F "ocr_strategy=auto" \
-F "chunk_size=512"| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
files | File[] | — | 하나 이상의 파일 (PDF, DOCX, Markdown, 이미지, 텍스트) |
ocr_strategy | string | auto | OCR 모드: auto, force, skip |
chunk_size | integer | 512 | 텍스트 청크당 문자 수 |
chunk_overlap | integer | 50 | 연속 청크 간 겹침 |
collection_id | string | 버킷 기본값 | 인덱싱할 하위 컬렉션 |
비동기 처리
각 파일은 백그라운드 작업이 됩니다. Jobs API로 진행 상황을 추적하세요. 크레딧은 업로드 시 예약되고 처리 완료 후 정산됩니다.
버킷 검색
bashcurl -X POST https://api.schift.io/v1/buckets/{bucket_id}/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SCHIFT_API_KEY" \
-d '{"query": "트랜스포머의 어텐션 메커니즘", "top_k": 5}'| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
query | string | — | 자연어 검색 쿼리 |
top_k | integer | 10 | 반환할 결과 수 |
model | string | 버킷 기본값 | 쿼리용 임베딩 모델 오버라이드 |
filter | object | — | 메타데이터 필터 |
검색은 권한 범위 안에서 실행됩니다. 서버가 호출자의 검색 가능 컬렉션을 계산하고, 해당 컬렉션들을 검색한 뒤 점수순으로 병합합니다. 결과에는 매칭된 텍스트 청크, 유사도 점수, 원본 파일명, 청크 메타데이터가 포함됩니다.
목록 조회 & 삭제
bash# 모든 버킷 조회
curl https://api.schift.io/v1/buckets \
-H "Authorization: Bearer $SCHIFT_API_KEY"
# 버킷 삭제 (되돌릴 수 없음)
curl -X DELETE https://api.schift.io/v1/buckets/{bucket_id} \
-H "Authorization: Bearer $SCHIFT_API_KEY"지원 파일 형식
PDF, DOCX, Markdown, 텍스트, 이미지 (JPG, PNG, WebP, TIFF, BMP, GIF). ocr_strategy가 auto이면 이미지와 스캔된 PDF는 자동으로 OCR 처리됩니다.
엣지 (Edge) 관리
버킷 내 노드 간 관계를 정의합니다. 교육과정 순서, 판례 선례 관계, 문서 계층 구조 등을 표현할 수 있습니다.
bash# 엣지 추가
curl -X POST https://api.schift.io/v1/buckets/{bucket_id}/edges \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SCHIFT_API_KEY" \
-d '{
"edges": [
{"source": "case-2024-456", "target": "case-2024-123", "relation": "supersedes"},
{"source": "chapter-1", "target": "section-1-1", "relation": "has_child"}
]
}'
# 노드의 엣지 조회
curl https://api.schift.io/v1/buckets/{bucket_id}/edges/{node_id}?direction=both \
-H "Authorization: Bearer $SCHIFT_API_KEY"
# 엣지 삭제
curl -X DELETE https://api.schift.io/v1/buckets/{bucket_id}/edges \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SCHIFT_API_KEY" \
-d '{"source": "A", "target": "B", "relation": "related_to"}'| relation | 설명 | 예시 |
|---|---|---|
contradicts | 두 노드가 서로 모순됨 | 판례 충돌 |
supersedes | 소스가 타겟을 대체함 | 개정 판례 |
caused_by | 인과 관계 | 사건 원인 |
is_a | 분류/유형 관계 | 카테고리 |
related_to | 일반 연관 | 기본값 |
has_child | 부모→자식 구조 | 문서 계층 |
follows | 순서/선후 관계 | 교육과정 순서 |