전자서명 템플릿으로 서명 요청 API
전자서명 템플릿을 이용하여 계약서를 생성하고 서명을 요청할 수 있습니다.
POST
kit-api/v1/signature-templates/[key]/signatures
POST
kit-api/v1/signature-templates/[key]/signaturesMethod: POST Endpoint: kit-api/v1/signature-templates/[key]/signatures Param: key는 전자서명 템플릿의 id(숫자) 혹은 slug(문자) 값을 의미
Example
.../kit-api/v1/signature-templates/4328/signatures
{
"input": {
"title": "솔루션 공급 계약서",
"participants": [
// 전자서명 템플릿 생성/편집 시, 옵션으로 '일부 참여자에게 요청' 기능을 허용했다면 일부 참여자 정보만 전달할 수 있습니다.
{
"role": "갑", // 참여자 역할 (워크플로우의 참여자와 매칭)
"input": {
"name": "홍길동", // 참여자 이름
"email": "[email protected]", // 참여자 이메일 (이메일, 전화번호 중에 하나 필요)
"auth": "EMAIL", // 인증 수단 (EMAIL, PHONE 존재 / send와 동일한 값으로 입력)
"send": "EMAIL" // 발송 수단 (EMAIL, PHONE 존재)
}
},
{
"role": "을",
"input": {
"name": "김프릭",
"phone": "010-1234-1234", // 참여자 전화번호
"auth": "PHONE",
"send": "PHONE",
"extraAuthList": [
{
// 휴대폰 본인인증이 필요한 경우 해당 값 사용
"type": "MOBILE_IDENTIFICATION",
"phoneName": "김실명",
"phoneNumber": "010-1234-1234"
}
]
}
}
],
"items": [
{
// 사전입력값 내용 추가를 위해 사용
"id": 231, // 입력값 id (ex. "금액" 사전입력값의 id가 231인 경우)
"contents": "2,000,000" // 입력값 내용
},
{
"id": 232, // (ex. "주소" 입력값의 id가 232인 경우)
"contents": "선릉로 551 새롬아파트 101-204"
},
{
"id": 233, // (ex. "동의" 입력값의 id가 233인 경우)
"contents": "true" // 체크박스 체크 여부 ('true' 혹은 빈 문자열)
},
// 사전 입력값 생성/편집 시 slug를 지정한 경우 id 대신 slug를 전달할 수 있습니다.
{
"slug": "object-1", // (ex. "동의" 입력값의 slug가 "object-1"인 경우)
"contents": "true" // 체크박스 체크 여부 ('true' 혹은 빈 문자열)
}
],
"additionalFiles": ["...견적서.pdf"], // 합본할 파일 url 목록
"contract": {
"type": "NEW", // 재계약 여부 (선택 / NEW, RENEWAL)
"customKey": "custom-id", // 연결할 맞춤 키 값 (선택 / 중복 불가)
"fileToReplace": "...contract.pdf", // 실제 서명 요청 시 사용할 계약서 문서 url (주의사항: fileToReplace 필드를 사용하여 계약 문서를 변경하여 서명을 요청하는 경우, 템플릿에 등록된 계약서와 페이지 수가 동일해야 합니다.)
"slugColumns": [
// 계약서에 연결할 커스텀 컬럼 정보
{
"slug": "slug-column-1", // 커스텀 컬럼 식별값 (별도 연락 필요)
"value": "slug-column-value" // 커스텀 컬럼 값 (String)
}
],
"connectedContractUuids": ["contract-uuid"], // 연결할 계약서 uuid 목록 (선택)
"contractDate": {
"startDate": "2024-10-01T00:00:00.000Z", // 시작일
"endDate": null, // 종료일
"concludedDate": null // 체결일
},
"customers": [
// 계약서에 연결할 고객의 Id 또는 CustomKey (고객을 연결하려면 둘 중 하나는 필수로 입력해야 합니다.)
{
"id": 1,
"customKey": "customer-custom-key-32"
}
]
},
"signature": {
"expiredDate": "2024-12-20T15:00:00.000Z", // 서명 만료일 (현재보다 이후 시간이어야 함)
"ccEmails": [], // 참조자 이메일 목록
"requesterName": "프릭스 컴퍼니", // 서명 요청자
"facilitator": {
// 대면서명 진행자 정보 (대면서명 미요청 시 facilitator 필드 사용하지 않아야 함)
"name": "대면서명 담당자", // 대면서명 진행자 이름
"email": "[email protected]" // 대면서명 진행자 이메일
},
"additionalRequests": [
{
"role": "참관자", // 추가 참여자 역할
"type": "EMAIL", // 발송 방식 (EMAIL, PHONE)
"contact": "[email protected]" // 이메일 주소 또는 전화번호
}
],
"redirectUrl": "https://example.com/callback" // 각 서명 별 리다이렉트 시키고자 하는 경로
},
"option": {
"skipSend": false // 알림 발송 스킵 여부 (선택, true 인 경우 서명 참여 알림을 발송하지 않음)
}
}
}
Request Body
input.title
전자서명 이름
yes
input.participants
전자서명 참여자 정보
yes
input.participants[].role
참여자 역할 (템플릿에 정의된 역할과 일치해야 함)
yes
input.participants[].input
참여자 상세 정보
yes
input.participants[].input.name
참여자 이름
yes
input.participants[].input.email
참여자 이메일 (email 또는 phone 중 하나 필수)
no
input.participants[].input.phone
참여자 전화번호 (email 또는 phone 중 하나 필수)
no
input.participants[].input.auth
인증 수단 (EMAIL, PHONE)
yes
input.participants[].input.send
발송 수단 (EMAIL, PHONE)
yes
input.participants[].input.extraAuthList
추가 인증 정보 목록
no
input.additionalFiles
합본할 파일 url 목록
no
input.items
전자서명 사전입력값 정보
no
input.items[].id
사전입력값 ID
no (id 또는 slug 중 1개 필수)
input.items[].slug
사전입력값 Slug
no (id 또는 slug 중 1개 필수)
input.items[].contents
사전입력값 내용
yes
input.contract
계약서 관련 추가 정보
no
input.contract.type
재계약 여부 (NEW, RENEWAL)
no
input.contract.customKey
연결할 맞춤 키 값 (중복 불가)
no
input.contract.contractDate.startDate
계약 시작일 (string / Date의 iso 형태 문자열)
no
input.contract.contractDate.endDate
계약 종료일 (string / Date의 iso 형태 문자열)
no
input.contract.slugColumns
계약서에 연결할 커스텀 컬럼 정보
no
input.contract.slugColumns[].slug
커스텀 컬럼 식별값 (별도 연락 필요)
no
input.contract.slugColumns[].value
커스텀 컬럼 값 (String)
no
input.contract.connectedContractUuids
연결할 계약서 uuid 목록
no
input.contract.customers
계약서에 연결할 고객 정보
no
input.contract.customers[].id
계약서에 연결할 고객 id (Number)
no
input.contract.customers[].customKey
계약서에 연결할 고객 customKey (String)
no
input.signature
전자서명 관련 추가 정보
no
input.signature.expiredDate
서명 만료일 (현재보다 이후 시간)
no
input.signature.ccEmails
참조자 이메일 목록
no
input.signature.requesterName
서명 요청자 이름
no
input.signature.facilitator
대면서명 진행자 정보 (대면서명 시 사용)
no
input.signature.facilitator.name
대면서명 진행자 이름
대면서명 시 yes
input.signature.facilitator.email
대면서명 진행자 이메일
대면서명 시 yes
input.signature.additionalRequests
추가 발송 참여자 정보
no
input.signature.additionalRequests[].role
추가 참여자 역할
no
input.signature.additionalRequests[].type
발송 방식 (EMAIL, PHONE)
no
input.signature.additionalRequests[].contact
연락처 (이메일 또는 전화번호)
no
input.signature.redirectUrl
리다이렉트 경로
no
input.option
전자서명 옵션 정보
no
input.option.skipSend
알림 발송 스킵 여부 (true 시 알림 발송 안함)
no
Response
{
"ok": true,
"message": undefined, // 실패하는 경우 메시지 (string)
"data": {
// 전자서명 정보
"signature": {
"uuid": "57139f5c-37d0-4c30-bdb6-ef6106040756", // 전자서명 식별값
"title": "솔루션 공급 계약서", // 전자서명 제목
"expiredDate": "2024-12-20T15:00:00.000Z", // 전자서명 만료일
"status": "WAITING", // 상태 (WAITING은 서명 요청 후 대기 상태를 의미)
"createdAt": "2024-10-15T00:00:00.000Z", // 생성일
"ccEmails": null,
"facilitator": {
// 대면서명 진행자 정보 (대면서명 요청 시 값 존재)
"uuid": "8053804d-581a-4e99-91e3-c077dc461373",
"name": "대면서명 담당자",
"email": "[email protected]"
},
"participants": [
{
"uuid": "689a0e2b-db58-4f16-9b9a-e745408de889", // 참여자 식별값
"name": "홍길동", // 참여자 이름
"status": "CREATED", // 참여자 상태
"order": 1, // 참여 순서
"email": "[email protected]", // 참여자 이메일
"send": "EMAIL", // 발송 수단
"message": null, // 발송 메시지
"language": "KOREAN", // 언어 설정
"extraAuthList": null, // 추가 인증 정보
"role": "갑" // 참여자 역할
}
]
},
"contract": {
"uuid": "ed976505-bcbd-47bd-913d-f4cde05dea7a", // 문서 식별값 (uuid 값을 api에서 사용합니다)
"file": "...contract.pdf", // 계약 문서 url
"status": "CREATED", // 상태 (CREATED, CONCLUDED)
"createdAt": "2024-10-15T00:00:00.000Z", // 생성일
"type": "NEW",
"contractDate": {
"startDate": null,
"endDate": null
}
}
}
}
400
INVALID_SIGNATURE_TITLE
title이 없는 경우
400
INVALID_SIGNATURE_EXPIRED_DATE
signature의 expiredDate가 현재 시간 이후가 아닌 경우
400
NOT_ALLOWED_PARTICIPANT_MINIMUM_LENGTH
전자서명 템플릿에 설정된 모든 참여자에 대한 정보가 없는 경우
400
INVALID_ADDITIONAL_INPUT
추가 입력값이 없는 경우
400
SIGNATURE_PARTICIPANT_EMPTY_ADDITIONAL_REQUEST_INPUT
추가 발송 참여자와 값이 없는 경우
400
SIGNATURE_PARTICIPANT_INVALID_ADDITIONAL_REQUEST_EMAIL
추가 발송 참여자의 email 주소가 잘못된 경우
400
SIGNATURE_PARTICIPANT_INVALID_ADDITIONAL_REQUEST_PHONE
추가 발송 참여자의 전화번호가 잘못된 경우
400
EXISTING_CONTRACT_KEY
계약서의 custom key가 이미 존재하는 경우
400
FAILED_USE_SIGNATURE_TEMPLATE
전자서명 템플릿 사용중 알 수 없는 에러가 발생한 경우
403
NOT_ALLOWED_PASS_AUTH_NOT_ENOUGH
휴대폰 본인인증을 위한 크레딧이 부족한 경우
404
NOT_FOUND_SIGNATURE_TEMPLATE
전자서명 템플릿이 존재하지 않는 경우
404
NOT_FOUND_BUSINESS
전자서명 템플릿과 연결된 비즈니스가 존재하지 않는 경우
404
NOT_FOUND_USER
전자서명 템플릿과 연결된 사용자가 존재하지 않는 경우
404
SIGNATURE_TEMPLATE_NOT_FOUND
전자서명 템플릿이 존재하지 않는 경우
500
FAILED_CREATE_CONTRACT
계약서 생성 중 알 수 없는 에러가 발생한 경우
500
FAILED_CREATE_SIGNATURE
전자서명 생성 중 알 수 없는 에러가 발생한 경우
500
FAILED_MERGE_CONTRACT
pdf 합본에 실패한 경우
Last updated