제품 및 API 안내
초안, 게시, 버전
저장과 게시는 다릅니다
저장은 작업 중인 템플릿 초안을 업데이트합니다. 게시는 실제 생성에 사용할 버전을 선택합니다. 게시된 버전을 유지하면서 새 초안을 작업할 수 있으므로, 초안 변경 사항이 이미 게시되었다고 생각하면 안 됩니다.
게시 전 확인
샘플 데이터와 실제를 반영한 긴 데이터로 미리 보고, 필요한 출력 형식을 확인하세요. 기록에서 현재 버전과 게시 버전을 비교하세요. 실제 생성에 사용할 내용이 준비되면 게시하세요.
기록에서 복원
과거 버전을 복원하면 해당 내용을 새로운 현재 버전으로 저장하며, 이전 기록은 지우지 않습니다. 복원 후 내용을 다시 확인하세요. 게시 버전도 바꾸려면 별도로 게시해야 합니다.
버전 읽기, 복원 및 게시
수동 저장할 때마다 새 버전이 생성되며 기존 내용을 덮어쓰지 않습니다. 이전 버전을 복원해도 최신 버전이 삭제되지 않습니다. 이전 정의를 새 버전으로 저장하므로 전체 기록이 유지됩니다.
cURL
# 버전 목록 - 최신순
curl -s https://api.pdfgine.com/api/v1/templates/invoice/history \
-H "X-PDFgine-Key: $PDFGINE_KEY"
# 한 버전의 정의
curl -s https://api.pdfgine.com/api/v1/templates/invoice/history/3 \
-H "X-PDFgine-Key: $PDFGINE_KEY"
# 해당 버전으로 복원 - 새 버전으로 기록되며 이전 버전은 유지됨
curl -X POST https://api.pdfgine.com/api/v1/templates/invoice/history/3/restore \
-H "X-PDFgine-Key: $PDFGINE_KEY"
# 초안 게시
curl -X POST https://api.pdfgine.com/api/v1/templates/invoice/publish \
-H "X-PDFgine-Key: $PDFGINE_KEY"
HTTP 409
{
"type": "https://pdfgine.dev/problems/template-conflict",
"title": "템플릿 충돌",
"status": 409,
"detail": "다른 작업에서 템플릿이 변경되었습니다. 현재 버전을 불러온 후 다시 시도하세요.",
"templateCode": "invoice",
"currentVersion": 19,
"currentDraftRevision": 0
}
오래된 expectedVersion으로 쓰기를 요청하면 병합하지 않고 거부합니다. 409 응답 본문에는 템플릿, 현재 버전, 초안 수정 번호가 포함됩니다. 현재 정의를 읽고 변경 사항을 재적용한 후 다시 저장하세요.
충돌 및 연결 코드
다른 세션이 같은 템플릿을 변경했다면 오래된 버전에서 저장할 때 충돌할 수 있습니다. 변경 사항을 무작정 덮어쓰지 말고 현재 상태와 기록을 검토하세요. 연결 코드는 API 요청에서 템플릿을 식별합니다. 코드가 바뀌면 이를 사용하는 연동도 업데이트하세요.
보고서 작성의 전체 흐름 →자주 발생하는 문제
- 저장과 게시는 다릅니다. 초안이 며칠 전 완성되었어도 실제 생성은 마지막으로 게시한 버전을 계속 사용합니다.
- 복원은 아무것도 삭제하지 않습니다. 이전 정의를 새 버전으로 저장하므로 기록이 유지되고 버전 번호는 계속 증가합니다.
- 같은 expectedVersion으로 409를 재시도하면 다시 거부됩니다. 현재 버전을 읽고 변경 사항을 적용한 후 저장하세요.
- purpose가 editor-test이면 초안을, production이면 게시된 버전을 사용합니다. 겉으로 같은 두 생성도 서로 다른 디자인에서 나올 수 있습니다.
- 기록 엔드포인트는 페이지로 나뉩니다. limit가 없으면 최신 페이지와 Link 헤더를 반환합니다. 해당 페이지를 전체 기록으로 처리하면 이전 수정본을 놓치게 됩니다.