📌 설정 고정 템플릿 정보 추가

🚧

수정불가 템플릿은 템플릿의 설정을 요청자가 임의로 수정하여 서명 요청을 보낼 수 없도록 설정된 템플릿입니다.

모두싸인 웹사이트, 임베디드 템플릿 생성임베디드 템플릿 수정 기능에서 템플릿을 설정 고정 상태로 지정할 수 있습니다.

이에 맞추어 템플릿을 활용하여 서명 요청을 진행하는 아래 엔드포인트들에 대하여, 설정 고정 상태의 템플릿이라면 템플릿에 설정된 정보를 제외하거나 변경하여 서명 요청할 수 없도록 제한이 추가됩니다.

위 API들에 대해 설정 고정 상태의 템플릿에 설정된 정보를 일부 변경 (특정 참여자 제외, 템플릿에 설정된 필수 인증 수단 미설정 등) 하여 서명요청을 전송하려 하는 경우, 422 (UnprocessableEntityException) 오류를 반환합니다.

따라서, 위 API를 활용하시는 경우 템플릿 정보 가져오기 에서 반환된 설정 고정 여부를 확인하시어 예외 처리를 진행하시는 것을 권장합니다.

{
  "id": "{templateId}",
  ...
  "requesterEditable": false // 설정이 고정된 템플릿
}

🚫 API Rate Limit 적용

안정적인 서비스 이용을 위해 Rate Limit 정책이 단계적으로 시행됩니다.

유예 기간 (2025년 3월 1일 시작): 해당 기간은 변경될 정책에 적응하고 API 사용량을 조절할 수 있도록 마련되었습니다. > 확정된 Rate Limit 규칙이 공지되며, 응답 헤더를 통해 예상 결과를 미리 확인하실 수 있습니다. 실제 요청 차단은 유예 기간 동안 적용되지 않습니다.

활성 (2025년 9월 1일 시작): Rate Limit 규칙이 완전히 적용되어, 제한 초과 요청은 HTTP 429 오류와 함께 거부됩니다.

📘

현재는 유예 기간 입니다.


API Rate Limit 규칙

API 요청에 대한 응답에는 현재 Rate Limit 상태를 나타내는 헤더 정보가 포함됩니다. 이를 통해 현재 사용 가능한 요청 횟수와 제한 관련 정보를 확인할 수 있습니다.

응답 헤더

설명

예시 값

X-RateLimit-Limit

해당 엔드포인트의 최대 허용 요청 수

600

X-RateLimit-Remaining

현재 남은 요청 가능 횟수

400

X-RateLimit-Reset

Rate Limit이 초기화되는 시간(Unix 타임스탬프)

1620235582

X-Retry-After

요청을 다시 시도하기 전에 기다려야 하는 시간(초) 형식
(요청 제한 초과 시 제공)

35



대부분의 API는 분당 600회의 요청 제한이 적용되지만, 다음 API 목록은 분당 300회의 요청 제한이 적용됩니다. 제한 횟수를 초과하면 HTTP 429 (Too Many Requests) 오류가 발생하니 유의하시기 바랍니다.

❗️

요청 제한 초과 시 HTTP 429(Too Many Requests) 상태 코드와 함께 X-Retry-After 헤더가 반환됩니다.
[API Rate Limit 정책 안내] 를 참고하여 요청 제어 및 Retry 정책 등을 준비해주세요.

APIMethodEndpoint
문서 리스트 조회GET/documents
서명 요청POST/documents
템플릿으로 서명 요청POST/documents/request-with-template
템플릿으로 임베디드 초안 생성POST/embedded-drafts/create-with-template
템플릿 생성POST/templates
파일 업로드POST/files

📃 열람 요청 기능 추가

❗️

열람 요청 주의사항 안내

  1. 열람 문서는 계약의 효력을 가지지 않습니다. 계약의 효력과 무관한 통지서, 고지서, 확인서, 내역서와 같은 단순 열람 문서를 전송하시는데에 활용하실 수 있습니다.
  2. 열람용 템플릿의 역할은 일반 템플릿과 다르게 "열람자" 로 고정되어 설정됩니다.
    문서 발송 시 참고 부탁드립니다.
  3. 열람 문서는 기본 설정값으로, 열람자가 문서에 접근할 경우 열람 완료 상태로 자동으로 전환됩니다.
    1. 이를 원치 않으신다면, 열람용 템플릿의 "상세 열람 후 완료 클릭" 설정을 활성화하여 열람자가 문서 내용을 모두 확인 후 수동으로 열람 완료로 전환되도록 설정할 수 있습니다.

열람 문서와 서명 요청과의 서로 다른 차이점, 제한 사항들은 고객센터 > 문서 열람 요청 방법에서 자세히 확인하실 수 있습니다.

📤 열람 요청 문서 전송 기능 추가

아래 API들에 대하여 열람 요청 템플릿을 통해 열람 문서를 전송할 수 있습니다.

자세한 내용은 템플릿으로 열람 요청하기를 참고 부탁드립니다.

👀 열람자에 대한 참여자 응답값 추가

문서 상세 조회와 같이 참여자의 정보를 반환하는 API에 대하여 열람자 (type = VIEWER)에 대한 응답값이 추가됩니다.

{
  "type": "VIEWER",
  ...
  "manuallyViewing": true // 상세 열람 여부, 열람자인 경우에만 반환됩니다.
}

이용하시는 API Reference를 참고 부탁드립니다.


🌐 Webhook 이벤트 변경사항

열람 문서의 이벤트도 기존 이벤트와 같이 통합되어 발송됩니다.
상세한 내용은 Webhook event 를 참고 부탁드립니다.

🏷️ 라벨 수정 / 삭제 API 추가

서명 요청 시 문서 분류를 위해 적용하는 라벨을 수정하고 삭제할 수 있도록

라벨 수정 API라벨 삭제 API 가 추가되었습니다

📘

기존 폴더 기능이 라벨로 대체

기존에 사용하던 폴더 기능이 라벨로 대체 되며 폴더 관련 속성들은 일정 기간이 지난 후 제거 됩니다.
라벨 기능이 궁금하시면 "라벨을 만들어 분류하기" 를 참고해주세요


🔖 문서에 라벨 추가 / 문서에서 라벨 제거 API 추가

문서에 설정된 라벨을 제거하거나, 다른 라벨을 추가할 수 있도록 문서에 라벨 추가 API문서에서 라벨 제거 API 가 업데이트되었습니다.

지금까지 서명 요청 시 라벨을 설정할 수 있지만, 서명 요청 후 설정된 라벨을 제거하거나 추가할 수 있는 API가 없어 라벨을 통한 문서 관리에 어려움이 있었습니다.

추가되는 API를 활용해 문서에 라벨을 설정 및 관리할 수 있도록 개선하여 효율적인 문서 관리가 될 수 있도록 기대합니다 🙏

한 문서 당 적용할 수 있는 라벨의 개수는 최대 30개로 제한됩니다.

📂 문서 리스트 조회시 작성 중 상태, 문서 요청일 필터링 추가

  • 문서 리스트 조회 API 필터의 statusDRAFT로 작성 중 상태인 문서만 검색할 수 있습니다.
  • 문서 리스트 조회 API 필터의 startedAt을 통해 문서 요청일 기준으로 조건에 해당하는 문서를 검색할 수 있습니다.
📘

filter로 검색하기

filter로 검색하기가 어떤 기능인지 궁금하신 분은 filter로 검색하기를 확인해 보세요.

🏷️ 라벨 생성 / 목록 조회 API 추가

서명 요청 시 문서를 분류하기 위해 적용하는 라벨을 생성하고 라벨의 목록을 조회할 수 있도록

라벨 생성 API라벨 목록 조회 API 가 추가되었습니다

📘

기존 폴더 기능이 라벨로 대체

기존에 사용하던 폴더 기능이 라벨로 대체 되며 폴더 관련 속성들은 일정 기간이 지난 후 제거 됩니다.
라벨 기능이 궁금하시면 "라벨을 만들어 분류하기" 를 참고해주세요

✅ 보안 링크 서명자의 "서명 내용 수정 요청" 기능 지원 및 참조자 인원수 증가

1. 보안 링크 서명자의 "서명 내용 수정 요청" 기능 지원

v1.26.0 에 추가된 서명 내용 수정 요청 API는 보안 링크 서명자를 지원하지 않았는데 이를 개선합니다. 기존에 "Secure link signing method is not supported" 에러 메세지로 422 응답이 반환됐던 부분이 제거됐습니다.


2. 참조자 최대 인원수 30명으로 증가

기존에 최대 10명까지 지원했던 참조자 최대 인원수가 30명까지 지원하도록 개선됐습니다.

아래는 영향을 받는 API 목록입니다.

✅ "서명 내용 수정 요청" 기능 지원

API 신규기능 "서명 내용 수정 요청"을 지원합니다.

기능설명

📘

서명 내용 수정 요청을 통하여 서명자의 입력란 수정

"서명 내용 수정 요청" 기능을 통하여 서명자의 입력란을 수정할 수 있습니다. 서명자가 계약문서에 잘못 입력하거나 혹은 다시 입력하고 싶을 때 사용해보세요.

요청방법

  • POST /documents/:documentId/request-correction
  • path params: documentId, participantId
  • body params: message

관련 API 안내페이지

예외사항

🚧

서명 진행 중인 문서 상태만 사용 가능

모든 서명자가 서명을 완료하여 계약서가 완료되면 해당 기능을 사용할 수 없습니다.

예외메세지: Document status is not on going (status code: 422)

🚧

서명자가 서명을 하지 않은 경우

예외메시지: Signing is not found (status code: 422)

🚧

순서 없는 서명

예외메시지: The order of signer must not be duplicated (status code: 422)

🚧

서명 내용 수정 요청 기능이 지원되기 전에 생성된 문서

예외메시지: This document was created before the implementation of the correcting signing, thus, it is not available (status code: 422)

🚧

대면서명 서명방식

예외메시지: In person signing method is not supported (status code: 422)

🚧

보안링크 서명 서명방식

예외메시지: Secure link signing method is not supported (status code: 422)

🚧

문서의 참여자 정보를 잘못 입력

예외메시지: Participant is not found (status code: 422)

✅ 드롭다운 필드 "고급 입력란" 기능으로 요금제 편성

고급 입력란(드롭다운 필드) 기능이 추가되어 요금제 구성이 변경되었습니다. 고급 입력란 기능은 TeamPro, 맞춤형 및 연동형 요금제에 무상으로 제공하게 되었습니다.

기존에 API 를 사용하는 고객들은 TeamPro, 맞춤형 및 연동형 요금제 등급이기 때문에 고급 입력란(드롭다운) 필드를 계속적으로 이용하실 수 있습니다.

  • 단, 새롭게 Personal, Team 요금제를 통해서 가입하게 되는 고객님들은 고급 입력란(드롭다운) 기능 사용을 위해서는 TeamPro 이상의 요금제로 업그레이드를 해주시기 바랍니다.
🚧

Personal, Team 요금제의 경우 고급 입력란 사용 불가

Personal, Team 요금제의 경우 고급 입력란(드롭다운)을 사용할 수 없습니다. 고급 입력란 기능을 사용하기 위하여는 요금제를 Team Pro 이상 요금제로 업그레이드 하여 주시기 바랍니다.

해당 요금제 권한이 없을 경우 예외발생 (Http Status Code: 403)

✅ 요청자 입력 조회 "요청자 이름, 드롭다운" 추가

요청자 이름 및 드롭다운 입력란 DTO

// 요청자 이름 입력란
class NameRequesterInputResponseDto
{
  dataLabel: string;
  type: FieldType.NAME;
  value: string;
}

// 드롭다운 입력란
class DropdownRequesterInputResponseDto
{
  dataLabel: string;
  type: FieldType.DROPDOWN;
  value: string;
}

✅ 템플릿 정보 가져오기 "요청자 이름, 드롭다운" 추가

템플릿에서 요청자 이름 및 드롭다운 입력란 DTO

// 응답 요청자 이름 입력란
class NameRequesterInputInTemplateResponseDto
{
  dataLabel: string;
  type: FieldType.NAME;
  position: {
    x: number;
    y: number;
    page: number;
  };
  size: {
    width: number;
    height: number;
  } | null;
  textStyle: {
    size: number;
    font: string;
    align: string;
  };
  value: string;
}

// 드롭다운 입력란
class DropdownRequesterInputInTemplateResponseDto
{
  dataLabel: string;
  type: FieldType.DROPDOWN;
  required: boolean;
  size: {
    width: number;
    height: number;
  };
  position: {
    x: number;
    y: number;
    page: number;
  };
  textStyle: {
    size: number;
    font: string;
  };
  options: {
    value: string;
  }[];
}

📂 문서 리스트 조회 시 필터 조건 추가

문서 리스트 조회 API 필터에 라벨 ID(labelIds) 조건이 추가되었습니다.

📘

filter로 검색하기

filter로 검색하기가 어떤 기능인지 궁금하신 분은 filter로 검색하기를 확인해 보세요.


📂 템플릿 리스트 조회 API 응답 속성 추가

템플릿 리스트 조회 API 를 통해 라벨 리스트를 조회 할 수 있습니다.

📘

기존 폴더 기능이 라벨로 대체

기존에 사용하던 폴더 기능이 라벨로 대체 되며 폴더 관련 속성들은 일정 기간이 지난 후 제거 됩니다.
라벨 기능이 궁금하시면 "라벨을 만들어 분류하기" 를 참고해주세요

기존에는 템플릿에 설정한 라벨 리스트를 API 를 통해 확인할 수 있는 부분이 없었지만, 템플릿 리스트 조회에 해당 속성이 추가 되어 확인할 수 있도록 제공 됩니다. ( labels)

응답 유형은 아래와 같으며, id,name,description 항목이 제공 됩니다.

{
  "labels": [
    {
      "id": "01HSFWHB8T89Y4E92BJ3568VBR",
      "name": "라벨명"
      "description": null
    },
    {
      "id": "01HSFWJPNJ4ZMWY4ZX09EBBF68",
      "name": "라벨명2"
      "description": "설명을 적을 수 있습니다."
    }
  ]
}

🔖 요청 문서에 적용할 라벨 기능 지원

📘

요청 문서에 적용할 라벨 기능

템플릿에 요청 문서에 적용할 라벨 기능을 설정하고, 해당 템플릿을 이용하여 서명을 요청하면 자동으로 문서에 해당 라벨이 설정됩니다.

📌 기존에는 모두싸인 홈페이지에서 템플릿에 요청 문서에 적용할 라벨 을 설정하고, 템플릿으로 서명 요청 API를 통해 서명 요청을 진행해도, 해당 라벨이 적용되지 않았습니다. (홈페이지 전용 기능)

📌 앞으로는 모두싸인 홈페이지 또는 템플릿 생성 API에서 요청 문서에 적용할 라벨 설정하고, 템플릿으로 서명 요청 API를 통해 서명 요청을 진행하면, 자동으로 설정된 라벨들이 요청된 문서에도 적용됩니다.


🔖 템플릿 생성 시 요청 문서에 적용할 라벨 아이디 속성 추가

템플릿 생성 시 복수개(최대 5개)의 요청 문서에 적용할 라벨을 설정할 수 있습니다.

📌 🔖 요청 문서에 적용할 라벨 기능 지원 파트에서 설명된 것처럼 documentLabelIds를 설정하여 템플릿을 생성한 후, 템플릿으로 서명 요청 API를 통해 서명 요청을 진행하면, 자동으로 설정된 라벨들이 요청된 문서에도 적용됩니다.

📌 documentLabelIds는 복수개(최대 5개)의 라벨 설정이 가능 합니다.


🔖 템플릿 정보 가져오기 API 응답 속성 추가

템플릿 정보 가져오기 API 를 통해 요청 문서에 적용할 라벨 리스트를 조회 할 수 있습니다.

기존에는 템플릿에 설정된 요청 문서에 적용할 라벨리스트를 API 를 통해 확인할 수 있는 부분이 없었지만, 템플릿 정보 가져오기에 해당 속성이 추가 되어 확인할 수 있도록 제공 됩니다. ( documentLabels)

응답 유형은 아래와 같으며, id,name,description 항목이 제공 됩니다.

{
  "documentLabels": [
    {
      "id": "01HSFWHB8T89Y4E92BJ3568VBR",
      "name": "라벨명"
      "description": null
    },
    {
      "id": "01HSFWJPNJ4ZMWY4ZX09EBBF68",
      "name": "라벨명2"
      "description": "설명을 적을 수 있습니다."
    }
  ]
}