사전 입력(Prefilled Value) 기능 및 신규 필드 타입

문서 생성, 임베디드 초안 생성, 템플릿 생성 시 필드에 사전 입력값(prefilledValue)을 설정할 수 있습니다. 서명 참여자가 서명 화면에 진입했을 때, 미리 입력된 값이 해당 필드에 표시됩니다.

💡

사전 입력값은 참여자가 서명 시 직접 수정할 수 있습니다. 초기값을 자동으로 채워주는 용도로 활용하세요.

적용 API

다음 엔드포인트에서 prefilledValue 파라미터를 사용할 수 있습니다.

엔드포인트메서드설명
/documentsPOST서명 요청 문서 생성
/documents/embeddedPOST임베디드 초안 생성
/documents/with-templatePOST템플릿 기반 문서 생성
/documents/embedded/with-templatePOST템플릿 기반 임베디드 초안 생성
/templatesPOST템플릿 생성

신규 필드 타입

POST /documentsPOST /documents/embedded API에서 다음 필드 타입을 새로 지원합니다.

필드 타입설명비고
DATE날짜 입력 필드displayFormat 지정 필수
DROPDOWN드롭다운 선택 필드options 배열 필수
NAME이름 입력 필드
COMPANY_NAME회사명 입력 필드
ADDRESS주소 입력 필드

지원 필드 타입 및 prefilledValue 형식

필드 타입prefilledValue 타입필수 여부설명
TEXTstring선택텍스트 값
CHECKBOXboolean선택체크 여부 (true / false)
DATEstring (ISO 8601)선택날짜 값 (예: "2026-03-30")
DROPDOWNstring선택options 목록 중 하나의 값
COMPANY_NAMEstring선택회사명
ADDRESSobject선택주소 객체 (상세 구조 보기)
⚠️

NAME, SIGNING_DATE, SIGNATURE, IMAGE 필드 타입은 사전 입력(prefilledValue)을 지원하지 않습니다.

사용 방법

문서 생성 시 사전 입력값 설정

POST /documents 요청의 participants[].fields[] 객체에 prefilledValue를 추가합니다.

{
  "type": "TEXT",
  "dataLabel": "text-field-1",
  "prefilledValue": "가나다라마",
  "size": { "width": 0.2, "height": 0.05 },
  "position": { "x": 0.1, "y": 0.3, "page": 1 },
  "textStyle": { "fontSize": 14, "fontType": "NOTO_SANS_KR", "align": "LEFT" }
}
전체 요청 본문 예시 보기

아래는 여러 필드 타입의 prefilledValue를 포함한 전체 POST /documents 요청 예시입니다.

{
  "participants": [
    {
      "role": "SIGNER",
      "fields": [
        {
          "type": "TEXT",
          "dataLabel": "text-field-1",
          "prefilledValue": "가나다라마",
          "size": { "width": 0.2, "height": 0.05 },
          "position": { "x": 0.1, "y": 0.3, "page": 1 },
          "textStyle": { "fontSize": 14, "fontType": "NOTO_SANS_KR", "align": "LEFT" }
        },
        {
          "type": "CHECKBOX",
          "dataLabel": "agree-terms",
          "prefilledValue": true,
          "size": { "width": 0.03, "height": 0.03 },
          "position": { "x": 0.1, "y": 0.4, "page": 1 }
        },
        {
          "type": "DATE",
          "dataLabel": "contract-date",
          "prefilledValue": "2026-03-30",
          "displayFormat": "YYYY-MM-DD",
          "size": { "width": 0.15, "height": 0.05 },
          "position": { "x": 0.1, "y": 0.5, "page": 1 },
          "textStyle": { "fontSize": 14, "fontType": "NOTO_SANS_KR", "align": "LEFT" }
        },
        {
          "type": "DROPDOWN",
          "dataLabel": "department",
          "prefilledValue": "영업팀",
          "options": [
            { "value": "영업팀" },
            { "value": "개발팀" },
            { "value": "인사팀" }
          ],
          "size": { "width": 0.15, "height": 0.05 },
          "position": { "x": 0.1, "y": 0.6, "page": 1 },
          "textStyle": { "fontSize": 14, "fontType": "NOTO_SANS_KR", "align": "LEFT" }
        },
        {
          "type": "ADDRESS",
          "dataLabel": "home-address",
          "prefilledValue": {
            "address1": "서울특별시 강남구 테헤란로 123",
            "address2": "4층",
            "city": "강남구",
            "province": "서울특별시",
            "zip": "06234",
            "country": "KR"
          },
          "size": { "width": 0.3, "height": 0.05 },
          "position": { "x": 0.1, "y": 0.7, "page": 1 },
          "textStyle": { "fontSize": 14, "fontType": "NOTO_SANS_KR", "align": "LEFT" }
        }
      ]
    }
  ]
}

템플릿 기반 문서 생성 시 사전 입력값 오버라이드

POST /documents/with-template 요청 시 participantFieldMappings[].prefilledValue를 사용하면, 템플릿에 미리 설정된 사전 입력값을 문서 생성 시점에 덮어쓸 수 있습니다.

{
  "templateId": "template-uuid",
  "participantMappings": [
    {
      "role": "SIGNER",
      "participantFieldMappings": [
        {
          "dataLabel": "text-field-1",
          "excluded": false,
          "prefilledValue": "하나둘셋넷"
        }
      ]
    }
  ]
}
📘

dataLabel은 템플릿에 정의된 필드의 라벨과 정확히 일치해야 합니다. excludedtrue로 설정하면 해당 필드가 문서에서 제외됩니다.

ADDRESS 필드의 prefilledValue 구조

ADDRESS 타입의 prefilledValue는 다음 속성을 가진 객체입니다.

파라미터타입필수 여부설명
address1string필수기본 주소 (최대 50자)
address2string 또는 null선택상세 주소 (최대 75자)
citystring 또는 null선택시/군/구 (최대 30자)
provincestring필수시/도 (최대 30자)
zipstring필수우편번호 (최대 10자)
countrystring필수ISO 3166-1 alpha-2 국가 코드 (예: KR, US)

참여자 필드 조회 응답 개선

GET /documents/{documentId}/participant-fields 응답 동작이 다음과 같이 개선되었습니다.

서명 완료 참여자

실제 입력한 값을 반환합니다.

미서명 참여자

설정된 기본값(prefilledValue)을 반환합니다.

⚠️

만료(expiredAt)된 서명은 서명 완료로 간주하지 않습니다. 만료된 참여자의 필드는 기본값을 반환합니다.

Anchor 기반 필드 자동 배치

API 연동을 통해 가변 문서에 대해서도 수동 좌표 설정 없이 간편하게 서명 준비를 할 수 있게 되었습니다. PDF 등의 문서 내 특정 텍스트를 앵커로 지정하면, 서명/텍스트 입력란이 해당 위치에 자동으로 생성됩니다.

적용 API

엔드포인트메서드설명
/documentsPOST서명 요청

사용 방법

필드 생성 시 기존 position의 좌표(x, y, page) 대신 position.anchor 속성을 사용하여 텍스트 기반 위치를 지정합니다.

문서 내 텍스트를 기준으로 필드 위치를 자동 지정합니다.

{
  "type": "TEXT",
  "position": {
    "anchor": {
      "text": "이름",
      "offset": {
        "x": 0.01,
        "y": 0.005
      }
    }
  },
  "size": {
    "width": 0.2,
    "height": 0.05
  }
}

Anchor 파라미터

position.anchor 객체의 구조는 다음과 같습니다.

파라미터타입필수설명
textstring문서 내에서 찾을 기준 텍스트
offsetobject | null기준 텍스트로부터의 오프셋. null이면 텍스트 위치에 필드 배치
offset.xnumberX축 오프셋 (양수: 오른쪽, 음수: 왼쪽)
offset.ynumberY축 오프셋 (양수: 아래쪽, 음수: 위쪽)

필드 크기는 기존과 동일하게 size 객체로 지정합니다.

파라미터타입필수설명
size.widthnumber필드 너비 (0~1)
size.heightnumber필드 높이 (0~1)

지원 필드 타입

타입설명
TEXT텍스트 입력 필드
SIGNATURE서명 필드
⚠️

주의사항

  • position에 좌표(x, y, page)와 anchor동시에 지정할 수 없습니다. 둘 중 하나만 사용하세요.
  • 둘 다 지정하면 유효성 검사 오류가 발생합니다.
  • 문서 내에 지정한 텍스트가 없으면 AnchorTextNotFoundException (404) 오류가 발생합니다.

진본증명도장 (Integrity Seal)

완료된 문서에 진본증명도장을 삽입하여 문서의 무결성을 보장할 수 있습니다. Seal > IntegritySeal 설정을 통해 도장 삽입 여부와 위치를 지정합니다.

진본확인도장 예시 이미지

사전 설정 안내

❗️

워크스페이스 설정 필수

진본증명도장을 사용하려면 워크스페이스 최고관리자가 먼저 기능을 활성화해야 합니다.

설정 경로: 모두싸인 로그인 → 설정 > 문서진본증명도장 활성화

활성화하지 않은 상태에서 API 호출 시, 지정한 옵션이 무시되고 비활성화 상태로 발송됩니다.


도장 삽입 시점

🚧

진본증명도장의 삽입 시점을 주의해주세요

진본증명도장은 문서가 완료(status = COMPLETED)된 시점에 삽입됩니다.

문서 유형삽입 시점
서명 요청 문서모든 참여자의 서명 완료 후
열람 문서 (기본)열람자가 문서에 진입한 후
열람 문서 (완료 클릭 설정 시)열람자가 완료 버튼을 클릭한 후

요청 예시

{
  "document": {
    "title": "계약서",
    "file": "base64_encoded_file"
  },
  "seal": {
    "integritySeal": {
      "enabled": true,
      "position": "TOP_LEFT"
    }
  }
}

지원 API

진본확인도장은 다음 API에서 사용할 수 있습니다.


주의 사항

🚧

PDF 1페이지에만 삽입됩니다

진본확인도장은 완료된 문서 PDF의 1페이지에 지정한 위치(좌상단, 우상단, 좌하단, 우하단)에 삽입됩니다. 삽입 위치에 따라 문서 본문 일부가 가려질 수 있으므로, 문서 레이아웃을 미리 확인하시기 바랍니다.

🚧

디지털 서명 형태로 삽입됩니다

진본확인도장은 PDF에 디지털 서명 형태로 삽입됩니다. 디지털 서명을 올바르게 처리하지 않는 일부 PDF 뷰어나 라이브러리에서는 도장이 정상적으로 표시되지 않을 수 있습니다. 사용 환경에 맞는 호환성을 사전에 확인하시기 바랍니다.


FAQ

진본확인도장이 삽입되지 않아요

다음 항목을 확인해 주세요:

  1. 워크스페이스 설정 확인: 모두싸인 로그인 → 설정 > 문서 → 진본증명도장 활성화 여부
  2. API 요청 확인: seal.integritySeal.enabledtrue로 설정되어 있는지 확인
  3. 문서 상태 확인: 문서가 COMPLETED 상태인지 확인 (서명/열람이 완료되어야 도장 삽입)
도장 위치를 변경할 수 있나요?

네, position 파라미터로 4가지 위치 중 선택할 수 있습니다: TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT

문서 발송 전에만 설정 가능하며, 발송 후에는 변경할 수 없습니다.

특정 PDF 뷰어에서 도장이 보이지 않아요

진본확인도장은 디지털 서명 형태로 삽입됩니다. 일부 PDF 뷰어나 라이브러리에서 디지털 서명을 지원하지 않거나 다르게 렌더링할 수 있습니다.

권장 뷰어: Adobe Acrobat Reader, 최신 브라우저 내장 PDF 뷰어

사용 환경의 호환성을 사전에 테스트하시기 바랍니다.

"간편인증(통합인증) 기능 추가"

서명 요청 및 임베디드 초안 생성 시 다양한 모바일 인증 수단을 선택적으로 제공할 수 있는 기능이 추가되었습니다.

📘

새로운 파라미터 추가: verification.mobileIdentification.allowOptions

이 파라미터를 통해 서명자에게 제공할 인증 수단을 직접 제어할 수 있습니다. 기존 API 요청은 수정 없이 계속 사용 가능하며, allowOptions를 별도로 설정하지 않으면 자동으로 ["SMS_OR_PASS"]가 기본값으로 적용됩니다.

주요 변경사항

기존에는 인증 수단이 고정되어 있었으나, 이제 allowOptions 파라미터를 통해 제공할 인증 방식을 선택할 수 있습니다.

요청 형식

{
  "verification": {
    "mobileIdentification": {
      "name": "김모두",
      "phoneNumber": "01012345678",
      "allowOptions": ["SIMPLE_AUTH", "SMS_OR_PASS"]
    }
  }
}

파라미터 상세

verification.mobileIdentification

필드타입필수 여부설명
nameString필수서명자의 실명
phoneNumberString필수서명자의 휴대폰 번호 (하이픈 없이 입력)
allowOptionsArray선택[신규] 제공할 인증 수단 목록
미설정 시 ["SMS_OR_PASS"] 기본값 적용

allowOptions 설정 값

"allowOptions": ["SIMPLE_AUTH"]

제공되는 인증 수단:

  • 카카오톡 인증
  • 네이버 인증
  • 토스 인증
  • 금융권 인증
  • 기타 간편인증 서비스

적용 가능한 API

이 기능은 다음 엔드포인트에서 사용할 수 있습니다:

API엔드포인트비고
서명 요청POST /documents새로운 서명 요청 문서 생성
템플릿으로 서명 요청POST /documents/request-with-template템플릿 기반 서명 요청
임베디드 초안 생성POST /embedded-drafts임베디드 환경 초안 생성
템플릿으로 임베디드 초안 생성POST /embedded-drafts/create-with-template템플릿 기반 임베디드 초안
템플릿 생성POST /templates재사용 가능한 표준서식(템플릿) 생성

브랜드 옵션 추가: 서명 요청 및 임베디드 초안 생성

서명 요청 및 임베디드 초안 생성 API에서 브랜드 선택 옵션을 지원합니다. 이제 API 호출 시 brandId 파라미터를 통해 특정 브랜드를 지정할 수 있습니다.

주요 변경 사항

요청 본문(Request Body)에 brandId 필드를 추가하여 원하는 브랜드를 지정할 수 있습니다.

{
  "brandId": "brandId_sample"
   ...,
}

브랜드 ID 획득 경로

앱 서비스 맞춤 브랜딩에 각 브랜드별 상세 페이지에서 ID를 확인할 수 있습니다.

  1. 앱 서비스 접속
  2. 설정 > 맞춤 브랜딩 메뉴 선택
  3. 각 브랜드 상세 페이지에서 ID 확인
🚧

현재 OpenAPI로 브랜드 목록을 제공하고 있지는 않습니다.


적용 API 목록

이번 업데이트는 다음 4개의 API 엔드포인트에 적용됩니다:

엔드포인트: 서명 요청 (POST /documents)

문서를 생성하고 서명 요청을 전송할 때 브랜드를 지정할 수 있습니다.

POST /documents
Content-Type: application/json

{
    "file": {
      "fileId": "fileId",
      "token": "token"
  },
  "participants": [...],
  "brandId": "01KAAJ7MYW5V0P724K9E6MM7FJAE"
}

🥳 임베디드 서명 요청 시 파일 병합 지원

임베디드 서명 요청 시 파일 병합 후 서명 요청 할 수 있도록 프로세스가 개선 되었습니다. 이와 관련 해 기존 2개의 API가 수정 되고 하나의 신규 API가 추가 되었습니다.


[수정] 파일 업로드 APItype 속성에 document 추가 지원

해당 수정으로 병합 할 파일을 미리 업로드 할 수 있습니다. (유효기간 2시간) PDF 파일은 최대 10MB, 그 외 확장자는 최대 5MB 까지 지원 합니다.

📘

업로드 시 PDF 파일을 권장합니다. (그 외 파일은 내부적으로 PDF 변환 시 시간이 오래 걸립니다.)


[신규] 문서 파일 병합 API 추가

파일 업로드 API 를 통해 업로드 한 파일 정보(fileId, token)를 기반으로 PDF 파일을 병합 합니다. 최소 2개, 최대 10개 까지 병합할 수 있으며, 병합 된 파일의 총 용량은 10MB 를 초과할 수 없습니다. 병합 후 병합 된 파일의 정보(fileId, token)를 응답 합니다.


[수정] 임베디드 초안 생성 APIfile 속성에 FILE_REF 방식 추가 제공

기존에는 BASE64 방식만 지원 했으나, FILE_REF 방식을 추가로 지원 합니다. FILE_REF방식은 아래 두 프로세스를 통해 업로드한 파일로 임베디드 초안이 생성 가능 합니다.

  1. 파일 업로드 API 를 통해 업로드 한 문서 타입 파일 정보
  2. 문서 파일 병합 API 를 통해 업로드 된 파일 정보

감사 추적 인증서 언어 옵션 제공

서명 요청 및 임베디드 초안 생성 시, 감사 추적 인증서(Audit Trail) 의 언어를 선택할 수 있습니다. 설정하지 않으면 기본값은 한국어(ko) 로 적용됩니다.


🧩 옵션 개요

감사 추적 인증서(auditTrail) 객체 내에 locales 속성을 추가하여 출력 언어를 지정합니다.

{
	...,
	"auditTrail" : {
		"locales": ["ko", "en"]
	}
}

🌐 지원 언어 옵션

아래의 언어를 제공하며, locales 에 값을 입력하시면 됩니다. 미 설정 시, 한국어를 기본 값으로 제공합니다.

  • 한국어 : [”ko”]
  • 영어 : [”en”]
  • 한국어 + 영어 합본 : [”ko”, "en”]

적용 API 목록

  • 서명 요청 (POST /documents)
  • 템플릿으로 서명 요청 (POST /documents/request-with-template)
  • 임베디드 초안 생성 (POST /embedded-drafts)
  • 템플릿으로 임베디드 초안 생성 (POST /embedded-drafts/create-with-template)
🚧

auditTrail.locales 설정은 문서 생성 시점에만 지정할 수 있습니다. 문서가 생성된 이후에는 변경이 불가능하므로 주의하여 설정해주세요.


➕ 템플릿 생성 시 드롭다운 필드 등 일부 필드 지원 추가

템플릿 생성하기 API에서 드롭다운 필드 등 일부 필드를 지정하실 수 있도록 기능이 추가됩니다.

추가된 필드 타입

서명자 입력란, 서명자 입력란 구분에 따라 추가된 타입이 다릅니다. 아래를 클릭하여 각 구분별로 추가된 타입을 확인하실 수 있습니다.

  • 드롭다운 필드 (DROPDOWN)

    ❗️

    드롭다운 필드의 사이즈가 지정된 옵션들을 렌더링 할 수 없을 정도로 작은 경우, 의도하지 않은 동작이 발생될 수 있습니다.

    • Width가 적은 경우 지정한 Width를 초과하여 기입될 수 있습니다.
    • 따라서 충분히 넓은 Width를 지정해주세요.
  • 이름 필드 (NAME)

적용 API


📚 문서 업로드 시 HWPX 확장자 지원

서명 요청 시 HWPX 확장자의 파일을 업로드 하실 수 있도록 지원됩니다.

✍️ 사인 그리기만 허용 설정 추가

  • 서명 필드에 allowedGenerationMethods 속성에서 SIGN_DRAWING 값을 지정하면, 사인 입력 시 ‘그리기만’ 허용하는 방식으로 설정할 수 있습니다.

  • 이 설정은 사인 전용 필드뿐 아니라 사인/도장 겸용 필드에서도 아래와 같이 활용할 수 있습니다.

    • 필드 유형사용 가능 allowedGenerationMethods
      사인SIGN_DRAWING
      도장STAMP_IMAGE
      사인/도장SIGN_DRAWING , STAMP_IMAGE 모두 지원

영향 대상 API 엔드포인트

✨ 템플릿 및 서명 요청 시 참조자(Carbon Copy) 필드 지원

이번 업데이트에서는 템플릿 생성 시 참조자(Carbon Copy)를 사전 등록하고, 서명 요청 시 참조자 정보를 템플릿과 병합하여 전송할 수 있도록 개선되었습니다.

1. 템플릿 생성 API (POST /templates)

  • carbonCopies 필드 신규 추가
  • 템플릿 생성 시 참조자(contact, locale) 정보를 사전 등록 가능
  • 응답에도 carbonCopies 정보 포함됨
{
  "carbonCopies": [
    {
      "contact": "[email protected]",
      "locale": "ko"
    }
  ]

2. 템플릿 기반 요청 및 서명 요청 API

  • 기존 API에 하위 호환 방식으로 locale 필드가 optional로 추가됨
  • API 요청 시 전달된 carbonCopies와 템플릿에 등록된 carbonCopies병합하여 사용

적용 API 목록

⚠️ 제한 사항

  1. carbonCopies 병합 후 총 인원이 30명을 초과할 경우 오류
  2. locale을 생략하면 기본값으로 “ko” (한국어) 가 적용됨