---
updatedAt: 2026-07-15T16:35:24.000Z
agentTools:
  projectIndex: https://developers.modusign.co.kr/llms.txt
---

# 내용 수정 중 문서 데이터 변경

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "paths": {
    "/documents/{documentId}/modification": {
      "patch": {
        "operationId": "DocumentController_patchModification",
        "parameters": [
          {
            "name": "documentId",
            "required": true,
            "in": "path",
            "description": "문서 ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchDocumentModificationRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentModificationDto"
                }
              }
            }
          },
          "400": {
            "description": "요청 검증 실패 (조건부 표시 규칙의 형식 오류, 요청자 입력란의 규칙 지정 포함)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationFailedResponseDto"
                },
                "examples": {
                  "requesterInputConditionalRule": {
                    "summary": "요청자 입력란에 규칙 지정",
                    "value": {
                      "instance": "/documents/8b6c2f40-7a1e-11f1-9c3a-0b1e2d3c4f5a/modification",
                      "type": "ValidationFailedException",
                      "title": "Validation failed",
                      "detail": "Validation failed with 1 properties: requesterInputs[0].conditionalRule",
                      "data": {
                        "constraints": [
                          {
                            "property": "requesterInputs[0].conditionalRule",
                            "message": "Requester input cannot carry a conditional display rule"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "요금제 검증에 실패했습니다. 사용량을 모두 사용했으면 `UsageLimitExceededException`으로 `data` 없이 응답합니다. 그 밖의 원인은 `ForbiddenException`의 `data.reason`(THROTTLE_EXCEEDED, FEATURE_NOT_INCLUDED, SUBSCRIPTION_INACTIVE, SUBSCRIPTION_NOT_FOUND)으로 구분합니다. `data.throttleName`은 수량 상한 목록, `data.features`는 권한 목록의 값이며 두 목록은 서로 다릅니다.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlanAuthorityErrorResponseDto"
                }
              }
            }
          },
          "422": {
            "description": "수정 중 상태 아님, 수정 제약 위반, 규칙 필드 서명자 이동, 규칙 그래프 위반",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/UnprocessableEntityResponseDto"
                    },
                    {
                      "$ref": "#/components/schemas/ModificationConstraintViolationException"
                    },
                    {
                      "$ref": "#/components/schemas/ConditionalRuleFieldReassignmentException"
                    },
                    {
                      "$ref": "#/components/schemas/DataLabelNotUniqueException"
                    },
                    {
                      "$ref": "#/components/schemas/ConditionalRuleReferenceNotFoundException"
                    },
                    {
                      "$ref": "#/components/schemas/ConditionalRuleCycleDetectedException"
                    },
                    {
                      "$ref": "#/components/schemas/ConditionalRuleParticipantScopeViolationException"
                    },
                    {
                      "$ref": "#/components/schemas/ConditionalRuleTargetLimitExceededException"
                    },
                    {
                      "$ref": "#/components/schemas/ConditionalRuleTriggerValueNotAllowedException"
                    },
                    {
                      "$ref": "#/components/schemas/ConditionalRuleCarrierNotAllowedException"
                    },
                    {
                      "$ref": "#/components/schemas/ConditionalRuleRequesterCarrierNotAllowedException"
                    },
                    {
                      "$ref": "#/components/schemas/ConditionalRuleOneClickTargetNotAllowedException"
                    },
                    {
                      "$ref": "#/components/schemas/ConditionalRuleGraphSizeExceededException"
                    }
                  ]
                },
                "examples": {
                  "notModifying": {
                    "summary": "수정 중 상태가 아님",
                    "value": {
                      "instance": "/documents/8b6c2f40-7a1e-11f1-9c3a-0b1e2d3c4f5a/modification",
                      "type": "UnprocessableEntityException",
                      "title": "Unprocessable entity"
                    }
                  },
                  "modificationConstraintViolation": {
                    "summary": "이미 서명한 참여자의 결과와 연결된 규칙 변경",
                    "value": {
                      "instance": "/documents/8b6c2f40-7a1e-11f1-9c3a-0b1e2d3c4f5a/modification",
                      "type": "ModificationConstraintViolationException",
                      "title": "Modification constraint violation",
                      "detail": "Cannot modify '카드번호': item is LOCKED by modification constraint",
                      "data": {
                        "item": "카드번호"
                      }
                    }
                  },
                  "dataLabelNotUnique": {
                    "summary": "같은 요청에 같은 체크박스 그룹을 두 번 지정",
                    "value": {
                      "instance": "/documents",
                      "type": "DataLabelNotUniqueException",
                      "title": "Data label must be unique",
                      "detail": "Data label '수신채널' is duplicated",
                      "data": {
                        "dataLabel": "수신채널"
                      }
                    }
                  },
                  "fieldReassignment": {
                    "summary": "규칙에 걸린 입력란을 다른 참여자로 이동",
                    "value": {
                      "instance": "/documents/8b6c2f40-7a1e-11f1-9c3a-0b1e2d3c4f5a/modification",
                      "type": "ConditionalRuleFieldReassignmentException",
                      "title": "Conditional rule field reassignment blocked",
                      "detail": "Field '결제수단' is bound to a conditional rule — delete the rule before reassigning its participant.",
                      "data": {
                        "dataLabel": "결제수단"
                      }
                    }
                  },
                  "referenceNotFound": {
                    "summary": "규칙이 가리키는 조건 입력란이 없음",
                    "value": {
                      "instance": "/documents",
                      "type": "ConditionalRuleReferenceNotFoundException",
                      "title": "Conditional rule refers to a field that does not exist",
                      "detail": "Conditional rule refers to '결제수단', which is not in the requested document. Check that the field is not excluded.",
                      "data": {
                        "dataLabel": "결제수단",
                        "groupDataLabel": null
                      }
                    }
                  },
                  "cycleDetected": {
                    "summary": "순환 참조",
                    "value": {
                      "instance": "/documents",
                      "type": "ConditionalRuleCycleDetectedException",
                      "title": "Conditional rule graph must be acyclic",
                      "detail": "Conditional rule cycle detected: 결제수단 -> 카드종류 -> 결제수단.",
                      "data": {
                        "cycle": [
                          "결제수단",
                          "카드종류",
                          "결제수단"
                        ]
                      }
                    }
                  },
                  "participantScopeViolation": {
                    "summary": "서로 다른 참여자의 입력란을 조건·대상으로 연결",
                    "value": {
                      "instance": "/documents",
                      "type": "ConditionalRuleParticipantScopeViolationException",
                      "title": "Conditional rule must stay within a single participant",
                      "detail": "Target field '카드번호' belongs to participant '보증인' but its trigger field '결제수단' belongs to participant '신청자'.",
                      "data": {
                        "targetDataLabel": "카드번호",
                        "targetParticipantDataLabel": "보증인",
                        "triggerDataLabel": "결제수단",
                        "triggerParticipantDataLabel": "신청자"
                      }
                    }
                  },
                  "targetLimitExceeded": {
                    "summary": "한 규칙의 대상 수 상한 초과",
                    "value": {
                      "instance": "/documents",
                      "type": "ConditionalRuleTargetLimitExceededException",
                      "title": "Conditional rule target count exceeded",
                      "detail": "A conditional rule triggered by '결제수단' must target at most 100 carriers. (currentCount: 101)",
                      "data": {
                        "triggerDataLabel": "결제수단",
                        "maxCount": 100,
                        "currentCount": 101
                      }
                    }
                  },
                  "triggerValueNotAllowed": {
                    "summary": "조건 입력란이 가질 수 없는 기대값",
                    "value": {
                      "instance": "/documents",
                      "type": "ConditionalRuleTriggerValueNotAllowedException",
                      "title": "Conditional rule trigger value is not allowed",
                      "detail": "Conditional rule expects '결제수단' to be '신용가드', which is not one of its allowed values ('신용카드', '현금').",
                      "data": {
                        "dataLabel": "결제수단",
                        "groupDataLabel": null,
                        "value": "신용가드",
                        "allowedValues": [
                          "신용카드",
                          "현금"
                        ]
                      }
                    }
                  },
                  "carrierNotAllowed": {
                    "summary": "조건 입력란으로 쓸 수 없는 종류",
                    "value": {
                      "instance": "/documents",
                      "type": "ConditionalRuleCarrierNotAllowedException",
                      "title": "Conditional rule carrier is not allowed",
                      "detail": "'이름' of type 'TEXT' cannot be used as the trigger of a conditional rule.",
                      "data": {
                        "dataLabel": "이름",
                        "fieldType": "TEXT",
                        "role": "TRIGGER"
                      }
                    }
                  },
                  "requesterCarrierNotAllowed": {
                    "summary": "요청자 입력란을 규칙에 사용",
                    "value": {
                      "instance": "/documents",
                      "type": "ConditionalRuleRequesterCarrierNotAllowedException",
                      "title": "Requester field cannot take part in a conditional rule",
                      "detail": "Field '계약금액' belongs to requester '요청자' and cannot be used as the trigger of a conditional rule.",
                      "data": {
                        "dataLabel": "계약금액",
                        "participantDataLabel": "요청자",
                        "role": "TRIGGER"
                      }
                    }
                  },
                  "oneClickTargetNotAllowed": {
                    "summary": "한 번에 선택 체크박스를 규칙으로 숨김",
                    "value": {
                      "instance": "/documents",
                      "type": "ConditionalRuleOneClickTargetNotAllowedException",
                      "title": "One-click checkbox cannot be hidden by a conditional rule",
                      "detail": "'약관동의' contains checkbox '전체동의' with one-click selection enabled and cannot be used as the target of a conditional rule.",
                      "data": {
                        "targetDataLabel": "약관동의",
                        "oneClickFieldDataLabel": "전체동의",
                        "groupDataLabel": "약관동의"
                      }
                    }
                  },
                  "graphSizeExceeded": {
                    "summary": "검증 가능한 규칙 그래프 크기 초과",
                    "value": {
                      "instance": "/documents",
                      "type": "ConditionalRuleGraphSizeExceededException",
                      "title": "Conditional rule graph is too large to validate",
                      "detail": "Conditional rule graph carries 4001 nodes but only 4000 can be traversed.",
                      "data": {
                        "currentCount": 4001,
                        "maxCount": 4000
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic": []
          },
          {
            "Bearer": []
          }
        ],
        "summary": "내용 수정 중 문서 데이터 변경",
        "tags": [
          "USER API"
        ]
      }
    }
  },
  "info": {
    "title": "MODUSIGN API",
    "description": "",
    "version": "1.0.0",
    "contact": {}
  },
  "servers": [
    {
      "url": "https://api.modusign.co.kr",
      "description": "production"
    }
  ],
  "components": {
    "securitySchemes": {
      "Bearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "Basic": {
        "type": "http",
        "scheme": "basic"
      }
    },
    "schemas": {
      "ConditionalRuleReferenceNotFoundExceptionData": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "조건부 표시 규칙이 조건으로 가리켰으나 문서에 없는 데이터 라벨"
          },
          "groupDataLabel": {
            "type": "string",
            "description": "가리킨 조건이 체크박스 그룹의 멤버일 때 그 그룹의 데이터 라벨. 그렇지 않으면 null",
            "nullable": true
          }
        },
        "required": [
          "dataLabel",
          "groupDataLabel"
        ]
      },
      "ConditionalRuleReferenceNotFoundException": {
        "type": "object",
        "properties": {
          "instance": {
            "type": "string",
            "description": "에러 대상 URL"
          },
          "type": {
            "type": "string",
            "enum": [
              "ConditionalRuleReferenceNotFoundException"
            ],
            "description": "Error 식별자"
          },
          "title": {
            "type": "string",
            "description": "Error 명칭"
          },
          "detail": {
            "type": "string",
            "description": "Error 상세 설명"
          },
          "data": {
            "description": "에러 맥락 추가 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleReferenceNotFoundExceptionData"
              }
            ]
          }
        },
        "required": [
          "instance",
          "type",
          "title"
        ]
      },
      "ConditionalRuleCycleDetectedExceptionData": {
        "type": "object",
        "properties": {
          "cycle": {
            "description": "순환을 이루는 데이터 라벨 경로. 시작 지점이 마지막에 다시 나타납니다.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "cycle"
        ]
      },
      "ConditionalRuleCycleDetectedException": {
        "type": "object",
        "properties": {
          "instance": {
            "type": "string",
            "description": "에러 대상 URL"
          },
          "type": {
            "type": "string",
            "enum": [
              "ConditionalRuleCycleDetectedException"
            ],
            "description": "Error 식별자"
          },
          "title": {
            "type": "string",
            "description": "Error 명칭"
          },
          "detail": {
            "type": "string",
            "description": "Error 상세 설명"
          },
          "data": {
            "description": "에러 맥락 추가 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleCycleDetectedExceptionData"
              }
            ]
          }
        },
        "required": [
          "instance",
          "type",
          "title"
        ]
      },
      "ConditionalRuleParticipantScopeViolationExceptionData": {
        "type": "object",
        "properties": {
          "targetDataLabel": {
            "type": "string",
            "description": "규칙을 보유한 대상 입력란의 데이터 라벨"
          },
          "targetParticipantDataLabel": {
            "type": "string",
            "description": "대상 입력란에 할당된 참여자의 데이터 라벨"
          },
          "triggerDataLabel": {
            "type": "string",
            "description": "조건 입력란의 데이터 라벨"
          },
          "triggerParticipantDataLabel": {
            "type": "string",
            "description": "조건 입력란에 할당된 참여자의 데이터 라벨"
          }
        },
        "required": [
          "targetDataLabel",
          "targetParticipantDataLabel",
          "triggerDataLabel",
          "triggerParticipantDataLabel"
        ]
      },
      "ConditionalRuleParticipantScopeViolationException": {
        "type": "object",
        "properties": {
          "instance": {
            "type": "string",
            "description": "에러 대상 URL"
          },
          "type": {
            "type": "string",
            "enum": [
              "ConditionalRuleParticipantScopeViolationException"
            ],
            "description": "Error 식별자"
          },
          "title": {
            "type": "string",
            "description": "Error 명칭"
          },
          "detail": {
            "type": "string",
            "description": "Error 상세 설명"
          },
          "data": {
            "description": "에러 맥락 추가 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleParticipantScopeViolationExceptionData"
              }
            ]
          }
        },
        "required": [
          "instance",
          "type",
          "title"
        ]
      },
      "ConditionalRuleTargetLimitExceededExceptionData": {
        "type": "object",
        "properties": {
          "triggerDataLabel": {
            "type": "string",
            "description": "상한을 넘긴 규칙의 조건 입력란 데이터 라벨"
          },
          "maxCount": {
            "type": "number",
            "description": "규칙 하나가 가질 수 있는 최대 대상 수"
          },
          "currentCount": {
            "type": "number",
            "description": "현재 대상 수. 체크박스 그룹은 멤버 수와 무관하게 1개로 계수합니다."
          }
        },
        "required": [
          "triggerDataLabel",
          "maxCount",
          "currentCount"
        ]
      },
      "ConditionalRuleTargetLimitExceededException": {
        "type": "object",
        "properties": {
          "instance": {
            "type": "string",
            "description": "에러 대상 URL"
          },
          "type": {
            "type": "string",
            "enum": [
              "ConditionalRuleTargetLimitExceededException"
            ],
            "description": "Error 식별자"
          },
          "title": {
            "type": "string",
            "description": "Error 명칭"
          },
          "detail": {
            "type": "string",
            "description": "Error 상세 설명"
          },
          "data": {
            "description": "에러 맥락 추가 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleTargetLimitExceededExceptionData"
              }
            ]
          }
        },
        "required": [
          "instance",
          "type",
          "title"
        ]
      },
      "ConditionalRuleTriggerValueNotAllowedExceptionData": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "조건 입력란의 데이터 라벨"
          },
          "groupDataLabel": {
            "type": "string",
            "description": "조건 입력란이 체크박스 그룹 멤버일 때 그 그룹의 데이터 라벨. 그렇지 않으면 null",
            "nullable": true
          },
          "value": {
            "type": "string",
            "description": "규칙이 기대값으로 지정했으나 조건 입력란이 가질 수 없는 값"
          },
          "allowedValues": {
            "description": "조건 입력란이 가질 수 있는 값 목록. 드롭다운은 옵션 값, 체크박스는 TRUE 입니다.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "dataLabel",
          "groupDataLabel",
          "value",
          "allowedValues"
        ]
      },
      "ConditionalRuleTriggerValueNotAllowedException": {
        "type": "object",
        "properties": {
          "instance": {
            "type": "string",
            "description": "에러 대상 URL"
          },
          "type": {
            "type": "string",
            "enum": [
              "ConditionalRuleTriggerValueNotAllowedException"
            ],
            "description": "Error 식별자"
          },
          "title": {
            "type": "string",
            "description": "Error 명칭"
          },
          "detail": {
            "type": "string",
            "description": "Error 상세 설명"
          },
          "data": {
            "description": "에러 맥락 추가 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleTriggerValueNotAllowedExceptionData"
              }
            ]
          }
        },
        "required": [
          "instance",
          "type",
          "title"
        ]
      },
      "ConditionalRuleCarrierNotAllowedExceptionData": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "자격을 갖추지 못한 입력란·체크박스 그룹의 데이터 라벨"
          },
          "fieldType": {
            "type": "string",
            "description": "해당 입력란의 유형"
          },
          "role": {
            "type": "string",
            "description": "규칙에서 맡으려던 역할",
            "enum": [
              "TRIGGER",
              "TARGET"
            ]
          }
        },
        "required": [
          "dataLabel",
          "fieldType",
          "role"
        ]
      },
      "ConditionalRuleCarrierNotAllowedException": {
        "type": "object",
        "properties": {
          "instance": {
            "type": "string",
            "description": "에러 대상 URL"
          },
          "type": {
            "type": "string",
            "enum": [
              "ConditionalRuleCarrierNotAllowedException"
            ],
            "description": "Error 식별자"
          },
          "title": {
            "type": "string",
            "description": "Error 명칭"
          },
          "detail": {
            "type": "string",
            "description": "Error 상세 설명"
          },
          "data": {
            "description": "에러 맥락 추가 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleCarrierNotAllowedExceptionData"
              }
            ]
          }
        },
        "required": [
          "instance",
          "type",
          "title"
        ]
      },
      "ConditionalRuleRequesterCarrierNotAllowedExceptionData": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "규칙에 참여할 수 없는 입력란의 데이터 라벨"
          },
          "participantDataLabel": {
            "type": "string",
            "description": "해당 입력란에 할당된 요청자의 데이터 라벨"
          },
          "role": {
            "type": "string",
            "description": "규칙에서 맡으려던 역할",
            "enum": [
              "TRIGGER",
              "TARGET"
            ]
          }
        },
        "required": [
          "dataLabel",
          "participantDataLabel",
          "role"
        ]
      },
      "ConditionalRuleRequesterCarrierNotAllowedException": {
        "type": "object",
        "properties": {
          "instance": {
            "type": "string",
            "description": "에러 대상 URL"
          },
          "type": {
            "type": "string",
            "enum": [
              "ConditionalRuleRequesterCarrierNotAllowedException"
            ],
            "description": "Error 식별자"
          },
          "title": {
            "type": "string",
            "description": "Error 명칭"
          },
          "detail": {
            "type": "string",
            "description": "Error 상세 설명"
          },
          "data": {
            "description": "에러 맥락 추가 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleRequesterCarrierNotAllowedExceptionData"
              }
            ]
          }
        },
        "required": [
          "instance",
          "type",
          "title"
        ]
      },
      "DataLabelNotUniqueExceptionData": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "중복된 데이터 라벨"
          }
        },
        "required": [
          "dataLabel"
        ]
      },
      "DataLabelNotUniqueException": {
        "type": "object",
        "properties": {
          "instance": {
            "type": "string",
            "description": "에러 대상 URL"
          },
          "type": {
            "type": "string",
            "enum": [
              "DataLabelNotUniqueException"
            ],
            "description": "Error 식별자"
          },
          "title": {
            "type": "string",
            "description": "Error 명칭"
          },
          "detail": {
            "type": "string",
            "description": "Error 상세 설명"
          },
          "data": {
            "description": "에러 맥락 추가 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/DataLabelNotUniqueExceptionData"
              }
            ]
          }
        },
        "required": [
          "instance",
          "type",
          "title"
        ]
      },
      "ConditionalRuleOneClickTargetNotAllowedExceptionData": {
        "type": "object",
        "properties": {
          "targetDataLabel": {
            "type": "string",
            "description": "규칙의 대상으로 지정하려 한 입력란·체크박스 그룹의 데이터 라벨"
          },
          "oneClickFieldDataLabel": {
            "type": "string",
            "description": "한 번에 선택이 켜져 있어 충돌을 만든 체크박스의 데이터 라벨"
          },
          "groupDataLabel": {
            "type": "string",
            "description": "충돌 체크박스가 속한 그룹의 데이터 라벨. 그룹에 속하지 않으면 null",
            "nullable": true
          }
        },
        "required": [
          "targetDataLabel",
          "oneClickFieldDataLabel",
          "groupDataLabel"
        ]
      },
      "ConditionalRuleOneClickTargetNotAllowedException": {
        "type": "object",
        "properties": {
          "instance": {
            "type": "string",
            "description": "에러 대상 URL"
          },
          "type": {
            "type": "string",
            "enum": [
              "ConditionalRuleOneClickTargetNotAllowedException"
            ],
            "description": "Error 식별자"
          },
          "title": {
            "type": "string",
            "description": "Error 명칭"
          },
          "detail": {
            "type": "string",
            "description": "Error 상세 설명"
          },
          "data": {
            "description": "에러 맥락 추가 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleOneClickTargetNotAllowedExceptionData"
              }
            ]
          }
        },
        "required": [
          "instance",
          "type",
          "title"
        ]
      },
      "ConditionalRuleGraphSizeExceededExceptionData": {
        "type": "object",
        "properties": {
          "currentCount": {
            "type": "number",
            "description": "규칙 그래프가 순회해야 하는 노드 수. 입력란과 체크박스 그룹의 합"
          },
          "maxCount": {
            "type": "number",
            "description": "한 번에 순회할 수 있는 최대 노드 수"
          }
        },
        "required": [
          "currentCount",
          "maxCount"
        ]
      },
      "ConditionalRuleGraphSizeExceededException": {
        "type": "object",
        "properties": {
          "instance": {
            "type": "string",
            "description": "에러 대상 URL"
          },
          "type": {
            "type": "string",
            "enum": [
              "ConditionalRuleGraphSizeExceededException"
            ],
            "description": "Error 식별자"
          },
          "title": {
            "type": "string",
            "description": "Error 명칭"
          },
          "detail": {
            "type": "string",
            "description": "Error 상세 설명"
          },
          "data": {
            "description": "에러 맥락 추가 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleGraphSizeExceededExceptionData"
              }
            ]
          }
        },
        "required": [
          "instance",
          "type",
          "title"
        ]
      },
      "PlanAuthorityThrottleExceededDataDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "enum": [
              "THROTTLE_EXCEEDED"
            ]
          },
          "throttleName": {
            "type": "string",
            "enum": [
              "TEMPLATE_COUNT",
              "SIGNER_COUNT",
              "ATTACHMENT_REQUEST_COUNT"
            ],
            "description": "상한을 넘은 항목. 보유·요청 수량 상한 목록의 값이며, 권한 목록(`FEATURE_NOT_INCLUDED.features`)과는 다른 목록입니다.",
            "example": "TEMPLATE_COUNT"
          },
          "limit": {
            "type": "integer",
            "minimum": 0,
            "description": "상한"
          },
          "requested": {
            "type": "integer",
            "minimum": 1,
            "description": "검증에 쓴 값. 템플릿은 \"기존 수 + 1\", 첨부·서명자는 이 요청의 개수"
          }
        },
        "required": [
          "reason",
          "throttleName",
          "limit",
          "requested"
        ]
      },
      "PlanAuthorityFeatureNotIncludedDataDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "enum": [
              "FEATURE_NOT_INCLUDED"
            ]
          },
          "features": {
            "type": "array",
            "uniqueItems": true,
            "minItems": 1,
            "description": "요금제에 없는 기능 가운데 공개하는 것. 값은 권한 목록이며, 수량 상한 목록(`THROTTLE_EXCEEDED`의 `throttleName`)과는 다른 목록입니다. 공개하지 않는 기능만 빠졌으면 `data` 없이 403 `Forbidden`으로 응답합니다",
            "example": [
              "ADVANCED_FIELDS"
            ],
            "items": {
              "type": "string",
              "enum": [
                "DOCUMENT",
                "TEMPLATE",
                "ADVANCED_FIELDS",
                "SIGNATURE_FIELD_ONECLICK",
                "TEMPLATE_MERGING",
                "PREFILLED_VALUE"
              ]
            }
          }
        },
        "required": [
          "reason",
          "features"
        ]
      },
      "PlanAuthoritySubscriptionInactiveDataDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "enum": [
              "SUBSCRIPTION_INACTIVE"
            ]
          }
        },
        "required": [
          "reason"
        ]
      },
      "PlanAuthoritySubscriptionNotFoundDataDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "enum": [
              "SUBSCRIPTION_NOT_FOUND"
            ]
          }
        },
        "required": [
          "reason"
        ]
      },
      "PlanAuthorityErrorResponseDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "ForbiddenException",
              "UsageLimitExceededException"
            ],
            "description": "`UsageLimitExceededException`은 기간 누적 사용량 초과에만 쓰이며 `data`가 없습니다."
          },
          "title": {
            "type": "string",
            "enum": [
              "Forbidden",
              "Usage limit exceeded"
            ]
          },
          "instance": {
            "type": "string",
            "description": "오류가 발생한 API 경로",
            "example": "/documents/request-with-template"
          },
          "data": {
            "description": "거절 원인. `reason`으로 구분하며, 사용량 초과(`UsageLimitExceededException`)와 원인을 알 수 없는 403에는 없습니다.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/PlanAuthorityThrottleExceededDataDto"
              },
              {
                "$ref": "#/components/schemas/PlanAuthorityFeatureNotIncludedDataDto"
              },
              {
                "$ref": "#/components/schemas/PlanAuthoritySubscriptionInactiveDataDto"
              },
              {
                "$ref": "#/components/schemas/PlanAuthoritySubscriptionNotFoundDataDto"
              }
            ]
          }
        },
        "required": [
          "type",
          "title",
          "instance"
        ]
      },
      "FileRefDocumentFileInDocumentRequestDto": {
        "type": "object",
        "properties": {
          "fileId": {
            "type": "string",
            "description": "파일 ID"
          },
          "token": {
            "type": "string",
            "description": "파일 토큰"
          }
        },
        "required": [
          "fileId",
          "token"
        ]
      },
      "PositionInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number",
            "description": "입력란의 가로 좌표",
            "minimum": 0,
            "maximum": 1
          },
          "y": {
            "type": "number",
            "description": "입력란의 세로 좌표",
            "minimum": 0,
            "maximum": 1
          },
          "page": {
            "type": "integer",
            "description": "입력란이 위치할 페이지",
            "minimum": 1
          }
        },
        "required": [
          "x",
          "y",
          "page"
        ]
      },
      "SizeInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "width": {
            "type": "number",
            "description": "입력란의 너비",
            "minimum": 0,
            "maximum": 1
          },
          "height": {
            "type": "number",
            "description": "입력란의 높이",
            "minimum": 0,
            "maximum": 1
          }
        },
        "required": [
          "width",
          "height"
        ]
      },
      "TextFieldStyleInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "size": {
            "type": "number",
            "description": "텍스트 크기",
            "enum": [
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              24,
              30,
              36,
              48,
              60
            ],
            "default": 12
          },
          "font": {
            "type": "string",
            "description": "텍스트 글자체",
            "enum": [
              "NOTO_SANS",
              "NOTO_SERIF"
            ]
          },
          "align": {
            "type": "string",
            "description": "텍스트 정렬",
            "enum": [
              "LEFT",
              "CENTER",
              "RIGHT"
            ],
            "default": "LEFT"
          }
        },
        "required": [
          "size",
          "font"
        ]
      },
      "TextInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨",
            "minLength": 1,
            "maxLength": 100,
            "example": "기타사항"
          },
          "type": {
            "type": "string",
            "example": "TEXT",
            "description": "요청자 입력 타입 (예시 값으로 고정되어 있습니다)"
          },
          "position": {
            "description": "입력란의 위치",
            "allOf": [
              {
                "$ref": "#/components/schemas/PositionInCreateDocumentRequestDto"
              }
            ]
          },
          "size": {
            "description": "입력란의 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/SizeInCreateDocumentRequestDto"
              }
            ]
          },
          "textStyle": {
            "description": "텍스트 스타일",
            "allOf": [
              {
                "$ref": "#/components/schemas/TextFieldStyleInCreateDocumentRequestDto"
              }
            ]
          },
          "value": {
            "type": "string",
            "maxLength": 1000,
            "example": "기타사항입니다",
            "description": "텍스트 박스에 입력될 값"
          }
        },
        "required": [
          "type",
          "position",
          "size",
          "textStyle",
          "value"
        ]
      },
      "SigningDateFieldSizeInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "width": {
            "type": "number",
            "description": "입력란의 너비",
            "minimum": 0,
            "maximum": 1
          },
          "height": {
            "type": "number",
            "description": "입력란의 높이",
            "minimum": 0,
            "maximum": 1
          }
        },
        "required": [
          "width",
          "height"
        ]
      },
      "ConditionalRuleTriggerInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "조건 입력란의 데이터 라벨 (드롭다운 또는 개별 체크박스). 그룹에 속한 체크박스는 그 멤버의 dataLabel(생략했다면 그룹 안 위치순 번호)을 지정하고 groupLabel 에 그룹 라벨을 함께 지정합니다.",
            "minLength": 1,
            "maxLength": 100
          },
          "groupLabel": {
            "type": "string",
            "description": "조건 입력란이 체크박스 그룹에 속할 때 그 그룹의 라벨. 드롭다운이 조건이면 null 입니다.",
            "nullable": true
          },
          "value": {
            "type": "string",
            "description": "조건이 성립하는 값. 드롭다운은 옵션 값, 체크박스는 TRUE(선택됨)만 허용합니다.",
            "example": "TRUE",
            "minLength": 1
          }
        },
        "required": [
          "dataLabel",
          "value"
        ]
      },
      "ConditionalRuleInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "triggers": {
            "description": "규칙을 성립시키는 조건 목록. 현재는 1개만 지원합니다.",
            "minItems": 1,
            "maxItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConditionalRuleTriggerInCreateDocumentRequestDto"
            }
          }
        },
        "required": [
          "triggers"
        ]
      },
      "SigningDateInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨",
            "minLength": 1,
            "maxLength": 100,
            "example": "기타사항"
          },
          "type": {
            "type": "string",
            "description": "필드 타입 (SIGNING_DATE로 요청해야 합니다)",
            "default": "SIGNING_DATE",
            "example": "SIGNING_DATE"
          },
          "size": {
            "description": "입력란의 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/SigningDateFieldSizeInCreateDocumentRequestDto"
              }
            ]
          },
          "position": {
            "description": "입력란의 위치",
            "allOf": [
              {
                "$ref": "#/components/schemas/PositionInCreateDocumentRequestDto"
              }
            ]
          },
          "textStyle": {
            "description": "텍스트 스타일",
            "allOf": [
              {
                "$ref": "#/components/schemas/TextFieldStyleInCreateDocumentRequestDto"
              }
            ]
          },
          "displayFormat": {
            "type": "string",
            "description": "날짜 표기 형식",
            "enum": [
              "YYYY-MM-DD",
              "YYYY/DD/MM",
              "YYYY.MM.DD",
              "YYYYMMDD",
              "YYYY년 MM월 DD일",
              "DD-MM-YYYY",
              "DD/MM/YYYY",
              "DD.MM.YYYY",
              "DDMMYYYY",
              "DD일 MM월 YYYY년",
              "MM-DD-YYYY",
              "MM/DD/YYYY",
              "MM.DD.YYYY",
              "MMDDYYYY",
              "MM월 DD일 YYYY년",
              "YYYY/MM/DD",
              "YYYY-DD-MM",
              "YYYY.DD.MM",
              "YYYYDDMM",
              "YYYY년 DD일 MM월",
              "YY-MM-DD",
              "YY/MM/DD",
              "YY.MM.DD",
              "YYMMDD",
              "YY년 MM월 DD일",
              "DD-MM-YY",
              "DD/MM/YY",
              "DD.MM.YY",
              "DDMMYY",
              "DD일 MM월 YY년",
              "MM-DD-YY",
              "MM/DD/YY",
              "MM.DD.YY",
              "MMDDYY",
              "MM월 DD일 YY년",
              "YY-DD-MM",
              "YY/DD/MM",
              "YY.DD.MM",
              "YYDDMM",
              "YY년 DD일 MM월"
            ],
            "example": "YYYY-MM-DD"
          },
          "conditionalRule": {
            "description": "조건부 표시 규칙. 조건이 성립할 때만 이 입력란을 서명자에게 보여줍니다.",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "type",
          "size",
          "position",
          "textStyle",
          "displayFormat"
        ]
      },
      "CheckboxInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨",
            "minLength": 1,
            "maxLength": 100,
            "example": "기타사항"
          },
          "type": {
            "type": "string",
            "example": "CHECKBOX",
            "description": "요청자 입력 타입 (예시 값으로 고정되어 있습니다)"
          },
          "position": {
            "description": "입력란의 위치",
            "allOf": [
              {
                "$ref": "#/components/schemas/PositionInCreateDocumentRequestDto"
              }
            ]
          },
          "size": {
            "description": "입력란의 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/SizeInCreateDocumentRequestDto"
              }
            ]
          },
          "value": {
            "type": "boolean",
            "description": "체크 여부",
            "example": true
          }
        },
        "required": [
          "type",
          "position",
          "size",
          "value"
        ]
      },
      "RequesterImageInfoInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "base64": {
            "type": "string",
            "description": "이미지 데이터를 base64로 인코딩한 문자열"
          }
        },
        "required": [
          "base64"
        ]
      },
      "ImageInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨",
            "minLength": 1,
            "maxLength": 100,
            "example": "기타사항"
          },
          "type": {
            "type": "string",
            "example": "IMAGE",
            "description": "요청자 입력 타입 (예시 값으로 고정되어 있습니다)"
          },
          "position": {
            "description": "입력란의 위치",
            "allOf": [
              {
                "$ref": "#/components/schemas/PositionInCreateDocumentRequestDto"
              }
            ]
          },
          "size": {
            "description": "입력란의 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/SizeInCreateDocumentRequestDto"
              }
            ]
          },
          "value": {
            "description": "3MB 이하의 jpg 또는 png 이미지 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/RequesterImageInfoInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "type",
          "position",
          "size",
          "value"
        ]
      },
      "PhoneNumberFormatInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "휴대폰 번호 입력 형식 타입",
            "enum": [
              "PHONE_NUMBER"
            ]
          }
        },
        "required": [
          "type"
        ]
      },
      "BankAccountNumberFormatInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "계좌 번호 입력 형식 타입",
            "enum": [
              "BANK_ACCOUNT_NUMBER"
            ]
          }
        },
        "required": [
          "type"
        ]
      },
      "BizNumberFormatInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "사업자 등록 번호 입력 형식 타입",
            "enum": [
              "BIZ_NUMBER"
            ]
          }
        },
        "required": [
          "type"
        ]
      },
      "RegexFormatInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "정규 표현식 입력 형식 타입",
            "enum": [
              "REGEX"
            ]
          },
          "name": {
            "type": "string",
            "description": "정규식 형식 이름 (예: 휴대폰)",
            "minLength": 1,
            "maxLength": 50
          },
          "pattern": {
            "type": "string",
            "description": "정규식 패턴 (최대 50자)",
            "minLength": 1,
            "maxLength": 50
          }
        },
        "required": [
          "type",
          "name",
          "pattern"
        ]
      },
      "TextFieldSizeInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "width": {
            "type": "number",
            "description": "입력란의 너비",
            "minimum": 0,
            "maximum": 1
          },
          "height": {
            "type": "number",
            "description": "입력란의 높이",
            "minimum": 0,
            "maximum": 1
          }
        },
        "required": [
          "width",
          "height"
        ]
      },
      "TextFieldInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨",
            "minLength": 1,
            "maxLength": 100,
            "example": "기타사항"
          },
          "type": {
            "type": "string",
            "description": "필드 타입 (TEXT로 요청해야 합니다)",
            "default": "TEXT",
            "example": "TEXT"
          },
          "required": {
            "type": "boolean",
            "description": "필수 여부",
            "default": true
          },
          "size": {
            "description": "입력란의 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/TextFieldSizeInCreateDocumentRequestDto"
              }
            ]
          },
          "position": {
            "oneOf": [
              {
                "title": "COORDINATE",
                "$ref": "#/components/schemas/CoordinatePositionInCreateDocumentRequestDto"
              },
              {
                "title": "ANCHOR",
                "$ref": "#/components/schemas/AnchorPositionInCreateDocumentRequestDto"
              }
            ],
            "description": "입력란의 위치. 좌표(x,y,page) 또는 anchor 중 하나만 지정"
          },
          "textStyle": {
            "description": "텍스트 스타일",
            "allOf": [
              {
                "$ref": "#/components/schemas/TextFieldStyleInCreateDocumentRequestDto"
              }
            ]
          },
          "format": {
            "description": "입력 형식 (정규 표현식 등)",
            "oneOf": [
              {
                "title": "PHONE_NUMBER",
                "$ref": "#/components/schemas/PhoneNumberFormatInCreateDocumentRequestDto"
              },
              {
                "title": "BANK_ACCOUNT_NUMBER",
                "$ref": "#/components/schemas/BankAccountNumberFormatInCreateDocumentRequestDto"
              },
              {
                "title": "BIZ_NUMBER",
                "$ref": "#/components/schemas/BizNumberFormatInCreateDocumentRequestDto"
              },
              {
                "title": "REGEX",
                "$ref": "#/components/schemas/RegexFormatInCreateDocumentRequestDto"
              }
            ],
            "nullable": true
          },
          "valueDescription": {
            "type": "string",
            "description": "입력란 가이드",
            "nullable": true,
            "minLength": 1,
            "maxLength": 40
          },
          "prefilledValue": {
            "type": "string",
            "nullable": true,
            "description": "사전 입력값",
            "default": null
          },
          "conditionalRule": {
            "description": "조건부 표시 규칙. 조건이 성립할 때만 이 입력란을 서명자에게 보여줍니다.",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "type",
          "size",
          "position",
          "textStyle"
        ]
      },
      "CheckboxFieldSizeInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "width": {
            "type": "number",
            "description": "입력란의 너비",
            "minimum": 0,
            "maximum": 1
          }
        },
        "required": [
          "width"
        ]
      },
      "CheckboxFieldInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨. 같은 그룹 안에서는 중복될 수 없습니다.",
            "minLength": 1,
            "maxLength": 100,
            "example": "기타사항"
          },
          "type": {
            "type": "string",
            "description": "필드 타입 (CHECKBOX로 요청해야 합니다)",
            "default": "CHECKBOX",
            "example": "CHECKBOX"
          },
          "required": {
            "type": "boolean",
            "description": "필수 여부\n- 체크박스가 그룹에 속하는 경우 무시됩니다.",
            "default": false
          },
          "size": {
            "description": "입력란의 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/CheckboxFieldSizeInCreateDocumentRequestDto"
              }
            ]
          },
          "position": {
            "description": "입력란의 위치",
            "allOf": [
              {
                "$ref": "#/components/schemas/PositionInCreateDocumentRequestDto"
              }
            ]
          },
          "valueDescription": {
            "type": "string",
            "description": "체크박스 내용, 체크박스를 호버하거나 한번에 선택할때 서명자에게 노출됩니다.",
            "minLength": 1,
            "maxLength": 40
          },
          "enableOneClick": {
            "type": "boolean",
            "description": "체크박스를 한번에 선택(체크) 할 수 있는 여부, 문서 서명시 활성화된 체크박스는 서명자가 확인 후 한번에 체크할 수 있습니다.",
            "default": false
          },
          "prefilledValue": {
            "type": "boolean",
            "nullable": true,
            "description": "사전 입력값",
            "default": null
          },
          "groupLabel": {
            "type": "string",
            "description": "그룹 라벨",
            "minLength": 1,
            "maxLength": 100
          },
          "conditionalRule": {
            "description": "조건부 표시 규칙. 조건이 성립할 때만 이 입력란을 서명자에게 보여줍니다.",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "type",
          "size",
          "position"
        ]
      },
      "SignatureFieldSizeInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "width": {
            "type": "number",
            "description": "입력란의 너비",
            "minimum": 0.01,
            "maximum": 1
          },
          "height": {
            "type": "number",
            "description": "입력란의 높이",
            "minimum": 0.01,
            "maximum": 1
          }
        },
        "required": [
          "width",
          "height"
        ]
      },
      "SignatureFieldInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨",
            "minLength": 1,
            "maxLength": 100,
            "example": "기타사항"
          },
          "type": {
            "type": "string",
            "description": "필드 타입 (SIGNATURE로 요청해야 합니다)",
            "default": "SIGNATURE",
            "example": "SIGNATURE"
          },
          "required": {
            "type": "boolean",
            "description": "필수 여부\n- type이 `SIGNATURE`일 경우는 무조건 true가 됩니다.\n",
            "default": true
          },
          "signatureTypes": {
            "type": "array",
            "description": "서명 타입",
            "minItems": 1,
            "maxItems": 2,
            "items": {
              "type": "string",
              "enum": [
                "SIGN",
                "STAMP"
              ]
            }
          },
          "allowedGenerationMethods": {
            "type": "array",
            "description": "서명 생성 방식",
            "maxItems": 2,
            "items": {
              "type": "string",
              "enum": [
                "STAMP_IMAGE",
                "SIGN_DRAWING"
              ]
            }
          },
          "size": {
            "description": "입력란의 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/SignatureFieldSizeInCreateDocumentRequestDto"
              }
            ]
          },
          "position": {
            "oneOf": [
              {
                "title": "COORDINATE",
                "$ref": "#/components/schemas/CoordinatePositionInCreateDocumentRequestDto"
              },
              {
                "title": "ANCHOR",
                "$ref": "#/components/schemas/AnchorPositionInCreateDocumentRequestDto"
              }
            ],
            "description": "입력란의 위치. 좌표(x,y,page) 또는 anchor 중 하나만 지정"
          },
          "enableOneClick": {
            "type": "boolean",
            "description": "한번에 서명 활성화 여부",
            "default": false
          },
          "conditionalRule": {
            "description": "조건부 표시 규칙. 조건이 성립할 때만 이 입력란을 서명자에게 보여줍니다.",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "type",
          "required",
          "signatureTypes",
          "position"
        ]
      },
      "SigningMethodInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "KAKAO",
              "EMAIL",
              "SECURE_LINK"
            ],
            "example": "EMAIL",
            "description": "참여 수단 종류"
          },
          "value": {
            "type": "string",
            "example": "modu.kim@modusign.co.kr / 01012345678",
            "description": "참여자의 참여 수단 (이메일 또는 휴대전화번호)"
          }
        },
        "required": [
          "type",
          "value"
        ]
      },
      "AttachmentRequestInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "첨부파일 1",
            "description": "첨부파일 이름 (특수문자 /?<>\\\":*|₩ 이 포함된 이름은 사용할 수 없습니다)",
            "minLength": 1,
            "maxLength": 100
          },
          "message": {
            "type": "string",
            "example": "2개월 내에 발급받은 회사 직인이 찍힌 원천징수영수증",
            "description": "첨부파일에 대한 설명",
            "nullable": true,
            "minLength": 1,
            "maxLength": 100
          },
          "required": {
            "type": "boolean",
            "description": "필수 여부",
            "example": true,
            "default": false
          }
        },
        "required": [
          "name"
        ]
      },
      "PasswordInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "example": "thisIsPassword",
            "description": "비밀번호 (4~20자, 한글 불가 — 영문/숫자/특수문자만 허용)",
            "minLength": 4,
            "maxLength": 20
          },
          "hint": {
            "type": "string",
            "nullable": true,
            "description": "비밀번호 힌트",
            "minLength": 1,
            "maxLength": 100
          }
        },
        "required": [
          "value"
        ]
      },
      "MobileIdentificationInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "김모두",
            "description": "휴대폰 본인 인증의 명의자 이름",
            "minLength": 1,
            "maxLength": 30
          },
          "phoneNumber": {
            "type": "string",
            "example": "01012345678",
            "description": "휴대폰 본인 인증의 명의자 전화번호"
          },
          "allowOptions": {
            "type": "array",
            "description": "휴대폰 본인 인증 옵션",
            "items": {
              "type": "string",
              "enum": [
                "SMS_OR_PASS",
                "SIMPLE_AUTH"
              ]
            }
          }
        },
        "required": [
          "name",
          "phoneNumber"
        ]
      },
      "DCertInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "주식회사 모두싸인",
            "description": "법인 공동인증서 인증 법인명",
            "minLength": 1,
            "maxLength": 30
          },
          "bizNumber": {
            "type": "string",
            "example": "1231212315",
            "description": "법인 공동인증서 인증 사업자등록번호",
            "minLength": 1
          }
        },
        "required": [
          "name",
          "bizNumber"
        ]
      },
      "VerificationInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "password": {
            "description": "접근 암호",
            "allOf": [
              {
                "$ref": "#/components/schemas/PasswordInCreateDocumentRequestDto"
              }
            ]
          },
          "mobileIdentification": {
            "description": "휴대폰 본인 인증",
            "allOf": [
              {
                "$ref": "#/components/schemas/MobileIdentificationInCreateDocumentRequestDto"
              }
            ]
          },
          "dCert": {
            "description": "법인 공동인증서 인증",
            "allOf": [
              {
                "$ref": "#/components/schemas/DCertInCreateDocumentRequestDto"
              }
            ]
          }
        }
      },
      "CheckboxGroupInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "groupLabel": {
            "type": "string",
            "description": "그룹 라벨",
            "minLength": 1,
            "maxLength": 100
          },
          "minCheckRequired": {
            "type": "number",
            "description": "최소 선택 개수. 현재는 0 또는 1만 지원합니다.",
            "enum": [
              0,
              1
            ]
          },
          "maxCheckLimit": {
            "type": "number",
            "nullable": true,
            "default": null,
            "example": 1,
            "description": "최대 선택 개수. 현재는 1또는 null만 지원합니다. null은 최대 개수까지 선택가능함을 뜻합니다."
          },
          "conditionalRule": {
            "description": "조건부 표시 규칙. 조건이 성립할 때만 이 체크박스 그룹을 서명자에게 보여줍니다.",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "groupLabel",
          "minCheckRequired"
        ]
      },
      "ParticipantInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "SIGNER",
              "VIEWER"
            ],
            "description": "참여자 타입",
            "default": "SIGNER"
          },
          "role": {
            "type": "string",
            "example": "근로자",
            "description": "참여자의 역할",
            "minLength": 1,
            "maxLength": 36
          },
          "name": {
            "type": "string",
            "example": "김모두",
            "description": "참여자 이름 (특수문자 /?<>\\\":*|₩ 이 포함된 이름은 사용할 수 없습니다)",
            "minLength": 2,
            "maxLength": 30
          },
          "requesterMessage": {
            "type": "string",
            "description": "참여자에게 전달할 남길말",
            "minLength": 1,
            "maxLength": 1000,
            "example": "서명해 주세요",
            "nullable": true
          },
          "locale": {
            "type": "string",
            "description": "참여자가 사용할 언어",
            "default": "ko",
            "enum": [
              "ko",
              "en",
              "zh-CN",
              "ja",
              "vi",
              "fr"
            ]
          },
          "signingOrder": {
            "type": "integer",
            "description": "참여 순서. 순서 없이 참여하려면 모두 1로 설정하세요.",
            "example": 1,
            "minimum": 1,
            "maximum": 30
          },
          "signingDuration": {
            "type": "integer",
            "description": "참여자의 참여 유효 기간 (분)\n * 미지정시 기본값 20160분 (14일)",
            "minimum": 60,
            "maximum": 525600,
            "example": 20160,
            "default": 20160
          },
          "signingMethod": {
            "description": "참여자의 참여 수단",
            "allOf": [
              {
                "$ref": "#/components/schemas/SigningMethodInCreateDocumentRequestDto"
              }
            ]
          },
          "attachmentRequests": {
            "description": "첨부파일 요청 정보",
            "default": [],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttachmentRequestInCreateDocumentRequestDto",
              "maxLength": 30
            }
          },
          "verification": {
            "description": "참여자의 추가 인증 (휴대폰 본인 인증과 법인 공동인증서 인증서는 함께 설정할 수 없습니다)",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/VerificationInCreateDocumentRequestDto"
              }
            ]
          },
          "fields": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "title": "TEXT",
                  "$ref": "#/components/schemas/TextFieldInCreateDocumentRequestDto"
                },
                {
                  "title": "CHECKBOX",
                  "$ref": "#/components/schemas/CheckboxFieldInCreateDocumentRequestDto"
                },
                {
                  "title": "SIGNATURE",
                  "$ref": "#/components/schemas/SignatureFieldInCreateDocumentRequestDto"
                },
                {
                  "title": "SIGNING_DATE",
                  "$ref": "#/components/schemas/SigningDateInCreateDocumentRequestDto"
                },
                {
                  "title": "IMAGE",
                  "$ref": "#/components/schemas/ImageFieldInCreateDocumentRequestDto"
                },
                {
                  "title": "DATE",
                  "$ref": "#/components/schemas/DateFieldInCreateDocumentRequestDto"
                },
                {
                  "title": "DROPDOWN",
                  "$ref": "#/components/schemas/DropdownFieldInCreateDocumentRequestDto"
                },
                {
                  "title": "NAME",
                  "$ref": "#/components/schemas/NameFieldInCreateDocumentRequestDto"
                },
                {
                  "title": "COMPANY_NAME",
                  "$ref": "#/components/schemas/CompanyNameFieldInCreateDocumentRequestDto"
                },
                {
                  "title": "ADDRESS",
                  "$ref": "#/components/schemas/AddressFieldInCreateDocumentRequestDto"
                }
              ]
            },
            "description": "참여자 필드 정보 (VIEWER 타입 참여자는 필드를 가질 수 없음)",
            "default": []
          },
          "checkboxFieldGroups": {
            "description": "체크박스 그룹",
            "default": [],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CheckboxGroupInCreateDocumentRequestDto"
            }
          }
        },
        "required": [
          "name",
          "signingOrder",
          "signingMethod"
        ]
      },
      "ImageFieldInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "데이터 라벨"
          },
          "type": {
            "type": "string",
            "description": "필드 타입 (IMAGE로 요청해야 합니다)",
            "default": "IMAGE",
            "example": "IMAGE"
          },
          "required": {
            "type": "boolean",
            "description": "필수 여부",
            "default": true
          },
          "size": {
            "description": "입력란 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/SizeInCreateDocumentRequestDto"
              }
            ]
          },
          "position": {
            "description": "입력란의 위치",
            "allOf": [
              {
                "$ref": "#/components/schemas/PositionInCreateDocumentRequestDto"
              }
            ]
          },
          "conditionalRule": {
            "description": "조건부 표시 규칙. 조건이 성립할 때만 이 입력란을 서명자에게 보여줍니다.",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "type",
          "size",
          "position"
        ]
      },
      "DateFieldInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨",
            "minLength": 1,
            "maxLength": 100,
            "example": "기타사항"
          },
          "type": {
            "type": "string",
            "description": "필드 타입 (DATE로 요청해야 합니다)",
            "default": "DATE",
            "example": "DATE"
          },
          "required": {
            "type": "boolean",
            "description": "필수 여부",
            "default": true
          },
          "size": {
            "description": "입력란의 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/SizeInCreateDocumentRequestDto"
              }
            ]
          },
          "position": {
            "description": "입력란의 위치",
            "allOf": [
              {
                "$ref": "#/components/schemas/PositionInCreateDocumentRequestDto"
              }
            ]
          },
          "textStyle": {
            "description": "텍스트 스타일",
            "allOf": [
              {
                "$ref": "#/components/schemas/TextFieldStyleInCreateDocumentRequestDto"
              }
            ]
          },
          "displayFormat": {
            "type": "string",
            "description": "날짜 표기 형식",
            "enum": [
              "YYYY-MM-DD",
              "YYYY/DD/MM",
              "YYYY.MM.DD",
              "YYYYMMDD",
              "YYYY년 MM월 DD일",
              "DD-MM-YYYY",
              "DD/MM/YYYY",
              "DD.MM.YYYY",
              "DDMMYYYY",
              "DD일 MM월 YYYY년",
              "MM-DD-YYYY",
              "MM/DD/YYYY",
              "MM.DD.YYYY",
              "MMDDYYYY",
              "MM월 DD일 YYYY년",
              "YYYY/MM/DD",
              "YYYY-DD-MM",
              "YYYY.DD.MM",
              "YYYYDDMM",
              "YYYY년 DD일 MM월",
              "YY-MM-DD",
              "YY/MM/DD",
              "YY.MM.DD",
              "YYMMDD",
              "YY년 MM월 DD일",
              "DD-MM-YY",
              "DD/MM/YY",
              "DD.MM.YY",
              "DDMMYY",
              "DD일 MM월 YY년",
              "MM-DD-YY",
              "MM/DD/YY",
              "MM.DD.YY",
              "MMDDYY",
              "MM월 DD일 YY년",
              "YY-DD-MM",
              "YY/DD/MM",
              "YY.DD.MM",
              "YYDDMM",
              "YY년 DD일 MM월"
            ],
            "example": "YYYY-MM-DD"
          },
          "prefilledValue": {
            "type": "string",
            "nullable": true,
            "description": "사전 입력값 (ISO 8601 형식)",
            "default": null
          },
          "conditionalRule": {
            "description": "조건부 표시 규칙. 조건이 성립할 때만 이 입력란을 서명자에게 보여줍니다.",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "type",
          "size",
          "position",
          "textStyle",
          "displayFormat"
        ]
      },
      "DropdownFieldInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨",
            "minLength": 1,
            "maxLength": 100,
            "example": "기타사항"
          },
          "type": {
            "type": "string",
            "description": "필드 타입 (DROPDOWN으로 요청해야 합니다)",
            "default": "DROPDOWN",
            "example": "DROPDOWN"
          },
          "required": {
            "type": "boolean",
            "description": "필수 여부",
            "default": true
          },
          "size": {
            "description": "입력란 크기, 입력란 크기가 텍스트 크기보다 작은 경우, 예상치 못한 동작이 발생될 수 있습니다. 충분한 width를 지정해주세요.",
            "allOf": [
              {
                "$ref": "#/components/schemas/SizeInCreateDocumentRequestDto"
              }
            ]
          },
          "position": {
            "description": "입력란의 위치",
            "allOf": [
              {
                "$ref": "#/components/schemas/PositionInCreateDocumentRequestDto"
              }
            ]
          },
          "options": {
            "type": "array",
            "description": "드롭다운 옵션 목록",
            "items": {
              "$ref": "#/components/schemas/DropdownOptionInCreateDocumentRequestDto"
            },
            "minItems": 1,
            "maxItems": 100
          },
          "textStyle": {
            "description": "텍스트 스타일",
            "allOf": [
              {
                "$ref": "#/components/schemas/TextFieldStyleInCreateDocumentRequestDto"
              }
            ]
          },
          "prefilledValue": {
            "type": "string",
            "nullable": true,
            "description": "사전 입력값",
            "default": null
          },
          "conditionalRule": {
            "description": "조건부 표시 규칙. 조건이 성립할 때만 이 입력란을 서명자에게 보여줍니다.",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "type",
          "size",
          "position",
          "options",
          "textStyle"
        ]
      },
      "DropdownOptionInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "description": "드롭다운 옵션 값",
            "minLength": 1,
            "maxLength": 50
          }
        },
        "required": [
          "value"
        ]
      },
      "NameFieldInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨",
            "minLength": 1,
            "maxLength": 100,
            "example": "기타사항"
          },
          "type": {
            "type": "string",
            "description": "필드 타입 (NAME으로 요청해야 합니다)",
            "default": "NAME",
            "example": "NAME"
          },
          "required": {
            "type": "boolean",
            "description": "필수 여부",
            "default": true
          },
          "size": {
            "description": "입력란 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/SizeInCreateDocumentRequestDto"
              }
            ]
          },
          "position": {
            "description": "입력란의 위치",
            "allOf": [
              {
                "$ref": "#/components/schemas/PositionInCreateDocumentRequestDto"
              }
            ]
          },
          "textStyle": {
            "description": "텍스트 스타일",
            "allOf": [
              {
                "$ref": "#/components/schemas/TextFieldStyleInCreateDocumentRequestDto"
              }
            ]
          },
          "conditionalRule": {
            "description": "조건부 표시 규칙. 조건이 성립할 때만 이 입력란을 서명자에게 보여줍니다.",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "type",
          "size",
          "position",
          "textStyle"
        ]
      },
      "CompanyNameFieldInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨",
            "minLength": 1,
            "maxLength": 100,
            "example": "기타사항"
          },
          "type": {
            "type": "string",
            "description": "필드 타입 (COMPANY_NAME으로 요청해야 합니다)",
            "default": "COMPANY_NAME",
            "example": "COMPANY_NAME"
          },
          "required": {
            "type": "boolean",
            "description": "필수 여부",
            "default": true
          },
          "size": {
            "description": "입력란 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/SizeInCreateDocumentRequestDto"
              }
            ]
          },
          "position": {
            "description": "입력란의 위치",
            "allOf": [
              {
                "$ref": "#/components/schemas/PositionInCreateDocumentRequestDto"
              }
            ]
          },
          "textStyle": {
            "description": "텍스트 스타일",
            "allOf": [
              {
                "$ref": "#/components/schemas/TextFieldStyleInCreateDocumentRequestDto"
              }
            ]
          },
          "prefilledValue": {
            "type": "string",
            "nullable": true,
            "description": "사전 입력값",
            "default": null
          },
          "conditionalRule": {
            "description": "조건부 표시 규칙. 조건이 성립할 때만 이 입력란을 서명자에게 보여줍니다.",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "type",
          "size",
          "position",
          "textStyle"
        ]
      },
      "AddressPrefilledValueInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "address1": {
            "type": "string",
            "description": "기본 주소"
          },
          "address2": {
            "type": "string",
            "description": "상세 주소",
            "nullable": true
          },
          "city": {
            "type": "string",
            "description": "시군구",
            "nullable": true
          },
          "province": {
            "type": "string",
            "description": "도시"
          },
          "zip": {
            "type": "string",
            "description": "우편번호"
          },
          "country": {
            "type": "string",
            "description": "나라",
            "enum": [
              "KR"
            ]
          }
        },
        "required": [
          "address1",
          "province",
          "zip",
          "country"
        ]
      },
      "AddressFieldInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨",
            "minLength": 1,
            "maxLength": 100,
            "example": "기타사항"
          },
          "type": {
            "type": "string",
            "description": "필드 타입 (ADDRESS로 요청해야 합니다)",
            "default": "ADDRESS",
            "example": "ADDRESS"
          },
          "required": {
            "type": "boolean",
            "description": "필수 여부",
            "default": true
          },
          "size": {
            "description": "입력란 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/SizeInCreateDocumentRequestDto"
              }
            ]
          },
          "position": {
            "description": "입력란의 위치",
            "allOf": [
              {
                "$ref": "#/components/schemas/PositionInCreateDocumentRequestDto"
              }
            ]
          },
          "textStyle": {
            "description": "텍스트 스타일",
            "allOf": [
              {
                "$ref": "#/components/schemas/TextFieldStyleInCreateDocumentRequestDto"
              }
            ]
          },
          "prefilledValue": {
            "nullable": true,
            "description": "사전 입력값",
            "default": null,
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressPrefilledValueInCreateDocumentRequestDto"
              }
            ]
          },
          "conditionalRule": {
            "description": "조건부 표시 규칙. 조건이 성립할 때만 이 입력란을 서명자에게 보여줍니다.",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "type",
          "size",
          "position",
          "textStyle"
        ]
      },
      "IntegritySealPosition": {
        "type": "string",
        "enum": [
          "TOP_LEFT",
          "TOP_RIGHT",
          "BOTTOM_LEFT",
          "BOTTOM_RIGHT"
        ],
        "description": "진본 증명 도장 위치"
      },
      "IntegritySealInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "진본 증명 도장 활성화 여부",
            "default": false
          },
          "position": {
            "description": "진본 증명 도장 위치",
            "nullable": true,
            "example": "TOP_RIGHT",
            "allOf": [
              {
                "$ref": "#/components/schemas/IntegritySealPosition"
              }
            ]
          }
        },
        "required": [
          "enabled",
          "position"
        ]
      },
      "DocumentSealInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "integritySeal": {
            "description": "진본 증명 도장 설정",
            "allOf": [
              {
                "$ref": "#/components/schemas/IntegritySealInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "integritySeal"
        ]
      },
      "CoordinatePositionInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number",
            "description": "입력란의 가로 좌표",
            "minimum": 0,
            "maximum": 1
          },
          "y": {
            "type": "number",
            "description": "입력란의 세로 좌표",
            "minimum": 0,
            "maximum": 1
          },
          "page": {
            "type": "integer",
            "description": "입력란이 위치할 페이지",
            "minimum": 1
          }
        },
        "required": [
          "x",
          "y",
          "page"
        ]
      },
      "AnchorOffsetInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number",
            "description": "anchor 기준 가로 오프셋 (양수: 우측, 음수: 좌측)",
            "minimum": -1,
            "maximum": 1
          },
          "y": {
            "type": "number",
            "description": "anchor 기준 세로 오프셋 (양수: 하단, 음수: 상단)",
            "minimum": -1,
            "maximum": 1
          }
        },
        "required": [
          "x",
          "y"
        ]
      },
      "AnchorInPositionDto": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "PDF에서 찾을 anchor 텍스트 (1~200자, 특수문자 허용, 대소문자 구분)",
            "minLength": 1,
            "maxLength": 200
          },
          "offset": {
            "description": "anchor 기준 오프셋 (미지정 시 anchor text 위치에 정렬)",
            "allOf": [
              {
                "$ref": "#/components/schemas/AnchorOffsetInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "text"
        ]
      },
      "AnchorPositionInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "anchor": {
            "description": "anchor 기반 필드 배치 설정. PDF 내 해당 텍스트 위치에 필드가 자동 배치됩니다.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AnchorInPositionDto"
              }
            ]
          }
        },
        "required": [
          "anchor"
        ]
      },
      "FileInfoInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "fileId": {
            "type": "string",
            "description": "파일 업로드 API 를 통해 얻은 파일 ID"
          },
          "token": {
            "type": "string",
            "description": "파일 업로드 API 를 통해 얻은 파일 토큰"
          },
          "name": {
            "type": "string",
            "example": "첨부파일_1",
            "description": "첨부파일명 (확장자 제외, 특수문자 /?<>\\\":*|₩ 이 포함된 이름은 사용할 수 없습니다)",
            "minLength": 1,
            "maxLength": 100
          }
        },
        "required": [
          "fileId",
          "token",
          "name"
        ]
      },
      "RequesterAttachmentInCreateDocumentRequestDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "첨부파일 1",
            "description": "첨부파일 이름 (특수문자 /?<>\\\":*|₩ 이 포함된 이름은 사용할 수 없습니다)",
            "minLength": 1,
            "maxLength": 100
          },
          "file": {
            "description": "파일 정보",
            "example": {
              "fileId": "2752f600-c6fc-11ed-b2e3-b5476bd20f82",
              "token": "01GVZ3BGGT2D9BSEVXJJ2V00SP",
              "name": "첨부파일_1"
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/FileInfoInCreateDocumentRequestDto"
              }
            ]
          }
        },
        "required": [
          "name",
          "file"
        ]
      },
      "CarbonCopy": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "example": "01000000000 or example@modusign.co.kr",
            "description": "참조자 연락처 (이메일 주소 또는 휴대전화번호)"
          },
          "locale": {
            "type": "string",
            "enum": [
              "ko",
              "en",
              "zh-CN",
              "ja",
              "vi",
              "fr"
            ],
            "example": "ko",
            "description": "참조자 언어"
          }
        },
        "required": [
          "contact"
        ]
      },
      "RequesterInDocumentResponseDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "요청자 이메일"
          },
          "name": {
            "type": "string",
            "description": "요청자 이름"
          }
        },
        "required": [
          "email",
          "name"
        ]
      },
      "SigningInDocumentResponseDto": {
        "type": "object",
        "properties": {
          "participantId": {
            "type": "string",
            "description": "참여한 참여자 ID"
          },
          "signedAt": {
            "format": "date-time",
            "type": "string",
            "description": "참여한 시간"
          }
        },
        "required": [
          "participantId",
          "signedAt"
        ]
      },
      "AbortInDocumentResponseDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "중단 종류:\n* `REJECTION` - 거절됨\n* `SIGNING_CANCELLATION` - 참여 취소됨\n* `REQUEST_CANCELLATION` - 요청 취소됨",
            "enum": [
              "REJECTION",
              "SIGNING_CANCELLATION",
              "REQUEST_CANCELLATION"
            ]
          },
          "message": {
            "type": "string",
            "description": "중단 사유"
          },
          "abortedAt": {
            "format": "date-time",
            "type": "string",
            "description": "중단 시점"
          },
          "participantId": {
            "type": "string",
            "nullable": true,
            "description": "중단한 참여자 ID (거절 또는 참여 취소 시)"
          }
        },
        "required": [
          "type",
          "message",
          "abortedAt",
          "participantId"
        ]
      },
      "PdfFileInDocumentResponseDto": {
        "type": "object",
        "properties": {
          "downloadUrl": {
            "type": "string",
            "description": "다운로드 링크(유효시간: 10분)"
          }
        },
        "required": [
          "downloadUrl"
        ]
      },
      "IntegritySealInDocumentResponseDto": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "진본 증명 도장 활성화 여부",
            "default": false
          },
          "position": {
            "description": "진본 증명 도장 위치",
            "nullable": true,
            "example": "TOP_RIGHT",
            "allOf": [
              {
                "$ref": "#/components/schemas/IntegritySealPosition"
              }
            ]
          }
        },
        "required": [
          "enabled",
          "position"
        ]
      },
      "DocumentSealInDocumentResponseDto": {
        "type": "object",
        "properties": {
          "integritySeal": {
            "description": "진본 증명 도장 설정",
            "allOf": [
              {
                "$ref": "#/components/schemas/IntegritySealInDocumentResponseDto"
              }
            ]
          }
        },
        "required": [
          "integritySeal"
        ]
      },
      "UnprocessableEntityResponseDto": {
        "type": "object",
        "properties": {
          "instance": {
            "type": "string",
            "description": "오류가 발생한 API 경로"
          },
          "type": {
            "type": "string",
            "enum": [
              "UnprocessableEntityException"
            ]
          },
          "title": {
            "type": "string",
            "description": "Error 명칭",
            "example": "Unprocessable entity"
          },
          "detail": {
            "type": "string",
            "description": "Error 상세 설명"
          }
        },
        "required": [
          "instance",
          "type",
          "title"
        ]
      },
      "DocumentModificationDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "문서 ID"
          },
          "title": {
            "type": "string",
            "description": "문서의 제목"
          },
          "status": {
            "type": "string",
            "enum": [
              "MODIFYING"
            ],
            "description": "수정중 문서 상태"
          },
          "fileOpenPassword": {
            "type": "string",
            "nullable": true,
            "description": "완료문서(.pdf) 비밀번호"
          },
          "file": {
            "nullable": true,
            "description": "문서 PDF 파일 정보 (다운로드 URL)",
            "allOf": [
              {
                "$ref": "#/components/schemas/PdfFileInDocumentResponseDto"
              }
            ]
          },
          "participants": {
            "type": "array",
            "description": "참여자 정보 (POST /documents 페이로드와 동일 구조 + 각 항목에 id)",
            "items": {
              "allOf": [
                {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "기존 항목의 서버 ID. PATCH 시 생략하면 신규 항목으로 처리됨. 응답에는 항상 포함."
                    }
                  }
                },
                {
                  "$ref": "#/components/schemas/ParticipantInCreateDocumentRequestDto"
                }
              ]
            }
          },
          "requesterInputs": {
            "type": "array",
            "description": "요청자의 입력 (POST /documents 페이로드와 동일 구조 + 각 항목에 id)",
            "items": {
              "oneOf": [
                {
                  "title": "TEXT",
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "기존 항목의 서버 ID. PATCH 시 생략하면 신규 항목으로 처리됨. 응답에는 항상 포함."
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/TextInCreateDocumentRequestDto"
                    }
                  ]
                },
                {
                  "title": "CHECKBOX",
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "기존 항목의 서버 ID. PATCH 시 생략하면 신규 항목으로 처리됨. 응답에는 항상 포함."
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/CheckboxInCreateDocumentRequestDto"
                    }
                  ]
                },
                {
                  "title": "IMAGE",
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "기존 항목의 서버 ID. PATCH 시 생략하면 신규 항목으로 처리됨. 응답에는 항상 포함."
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/ImageInCreateDocumentRequestDto"
                    }
                  ]
                }
              ]
            }
          },
          "requesterAttachments": {
            "type": "array",
            "description": "요청자 첨부파일 정보 (POST /documents 페이로드와 동일 구조 + 각 항목에 id)",
            "items": {
              "allOf": [
                {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "기존 항목의 서버 ID. PATCH 시 생략하면 신규 항목으로 처리됨. 응답에는 항상 포함."
                    }
                  }
                },
                {
                  "$ref": "#/components/schemas/RequesterAttachmentInCreateDocumentRequestDto"
                }
              ]
            }
          },
          "carbonCopies": {
            "description": "참조자 연락처 정보 (POST /documents 페이로드와 동일 구조)",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CarbonCopy"
            }
          },
          "seal": {
            "description": "문서 봉인 설정 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/DocumentSealInDocumentResponseDto"
              }
            ]
          },
          "requester": {
            "description": "문서 요청자 정보 (read-only — PATCH 미지원)",
            "allOf": [
              {
                "$ref": "#/components/schemas/RequesterInDocumentResponseDto"
              }
            ]
          },
          "currentSigningOrder": {
            "type": "integer",
            "description": "현재 참여 차례 (read-only — PATCH 미지원)"
          },
          "signings": {
            "description": "입력된 서명, 열람 완료된 참여자 리스트 (read-only — PATCH 미지원)",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SigningInDocumentResponseDto"
            }
          },
          "abort": {
            "nullable": true,
            "description": "문서의 중단 정보 (read-only — PATCH 미지원)",
            "allOf": [
              {
                "$ref": "#/components/schemas/AbortInDocumentResponseDto"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date",
            "description": "문서 생성 시간 (read-only)"
          },
          "updatedAt": {
            "type": "string",
            "format": "date",
            "description": "마지막 업데이트 시간 (read-only)"
          },
          "startedAt": {
            "type": "string",
            "format": "date",
            "nullable": true,
            "description": "참여 요청 시간 (read-only)"
          }
        },
        "required": [
          "id",
          "title",
          "status",
          "fileOpenPassword",
          "file",
          "participants",
          "requesterInputs",
          "requesterAttachments",
          "carbonCopies",
          "seal",
          "requester",
          "currentSigningOrder",
          "signings",
          "abort",
          "createdAt",
          "updatedAt",
          "startedAt"
        ]
      },
      "ModificationConstraintViolationExceptionData": {
        "type": "object",
        "properties": {
          "item": {
            "type": "string",
            "description": "수정할 수 없는 항목"
          }
        },
        "required": [
          "item"
        ]
      },
      "ModificationConstraintViolationException": {
        "type": "object",
        "properties": {
          "instance": {
            "type": "string",
            "description": "에러 대상 URL"
          },
          "type": {
            "type": "string",
            "enum": [
              "ModificationConstraintViolationException"
            ],
            "description": "Error 식별자"
          },
          "title": {
            "type": "string",
            "description": "Error 명칭"
          },
          "detail": {
            "type": "string",
            "description": "Error 상세 설명"
          },
          "data": {
            "description": "에러 맥락 추가 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/ModificationConstraintViolationExceptionData"
              }
            ]
          }
        },
        "required": [
          "instance",
          "type",
          "title"
        ]
      },
      "ConditionalRuleFieldReassignmentExceptionData": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "규칙에 걸려 서명자 변경이 차단된 입력란의 데이터 라벨"
          }
        },
        "required": [
          "dataLabel"
        ]
      },
      "ConditionalRuleFieldReassignmentException": {
        "type": "object",
        "properties": {
          "instance": {
            "type": "string",
            "description": "에러 대상 URL"
          },
          "type": {
            "type": "string",
            "enum": [
              "ConditionalRuleFieldReassignmentException"
            ],
            "description": "Error 식별자"
          },
          "title": {
            "type": "string",
            "description": "Error 명칭"
          },
          "detail": {
            "type": "string",
            "description": "Error 상세 설명"
          },
          "data": {
            "description": "에러 맥락 추가 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/ConditionalRuleFieldReassignmentExceptionData"
              }
            ]
          }
        },
        "required": [
          "instance",
          "type",
          "title"
        ]
      },
      "ValidationConstraintDto": {
        "type": "object",
        "properties": {
          "property": {
            "type": "string",
            "description": "검증에 실패한 속성"
          },
          "message": {
            "type": "string",
            "description": "검증 실패 사유"
          }
        },
        "required": [
          "property",
          "message"
        ]
      },
      "ValidationFailedDataDto": {
        "type": "object",
        "properties": {
          "constraints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValidationConstraintDto"
            }
          }
        },
        "required": [
          "constraints"
        ]
      },
      "ValidationFailedResponseDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "ValidationFailedException"
            ]
          },
          "title": {
            "type": "string",
            "enum": [
              "Validation failed",
              "ValidationFailedException"
            ]
          },
          "instance": {
            "type": "string",
            "description": "오류가 발생한 API 경로",
            "example": "/templates/merge"
          },
          "detail": {
            "type": "string",
            "description": "검증에 실패한 속성 요약"
          },
          "data": {
            "$ref": "#/components/schemas/ValidationFailedDataDto"
          }
        },
        "required": [
          "type",
          "title",
          "instance",
          "data"
        ]
      },
      "PositionInPatchModificationDto": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number",
            "description": "입력란의 가로 좌표",
            "minimum": 0,
            "maximum": 1
          },
          "y": {
            "type": "number",
            "description": "입력란의 세로 좌표",
            "minimum": 0,
            "maximum": 1
          },
          "page": {
            "type": "integer",
            "description": "입력란이 위치할 페이지",
            "minimum": 1
          }
        },
        "required": [
          "x",
          "y",
          "page"
        ]
      },
      "SizeInPatchModificationDto": {
        "type": "object",
        "properties": {
          "width": {
            "type": "number",
            "description": "입력란의 너비",
            "minimum": 0,
            "maximum": 1
          },
          "height": {
            "type": "number",
            "description": "입력란의 높이",
            "minimum": 0,
            "maximum": 1
          }
        },
        "required": [
          "width",
          "height"
        ]
      },
      "TextStyleInPatchModificationDto": {
        "type": "object",
        "properties": {
          "size": {
            "type": "number",
            "description": "텍스트 크기",
            "enum": [
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              24,
              30,
              36,
              48,
              60
            ],
            "default": 12
          },
          "font": {
            "type": "string",
            "description": "텍스트 글자체",
            "enum": [
              "NOTO_SANS",
              "NOTO_SERIF"
            ]
          },
          "align": {
            "type": "string",
            "description": "텍스트 정렬",
            "enum": [
              "LEFT",
              "CENTER",
              "RIGHT"
            ],
            "default": "LEFT"
          }
        },
        "required": [
          "size",
          "font"
        ]
      },
      "TextInPatchModificationDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨",
            "minLength": 1,
            "maxLength": 100
          },
          "position": {
            "description": "입력란의 위치",
            "allOf": [
              {
                "$ref": "#/components/schemas/PositionInPatchModificationDto"
              }
            ]
          },
          "size": {
            "description": "입력란의 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/SizeInPatchModificationDto"
              }
            ]
          },
          "id": {
            "type": "string",
            "description": "기존 항목의 서버 ID. 생략 시 신규 입력으로 처리됨."
          },
          "type": {
            "type": "string",
            "example": "TEXT",
            "description": "문서 편집 입력란 유형"
          },
          "textStyle": {
            "description": "텍스트 스타일",
            "allOf": [
              {
                "$ref": "#/components/schemas/TextStyleInPatchModificationDto"
              }
            ]
          },
          "value": {
            "type": "string",
            "maxLength": 1000,
            "description": "텍스트 입력값"
          }
        },
        "required": [
          "dataLabel",
          "position",
          "size",
          "type",
          "textStyle",
          "value"
        ]
      },
      "CheckboxInPatchModificationDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨",
            "minLength": 1,
            "maxLength": 100
          },
          "position": {
            "description": "입력란의 위치",
            "allOf": [
              {
                "$ref": "#/components/schemas/PositionInPatchModificationDto"
              }
            ]
          },
          "size": {
            "description": "입력란의 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/SizeInPatchModificationDto"
              }
            ]
          },
          "id": {
            "type": "string",
            "description": "기존 항목의 서버 ID. 생략 시 신규 입력으로 처리됨."
          },
          "type": {
            "type": "string",
            "example": "CHECKBOX",
            "description": "문서 편집 입력란 타입"
          },
          "value": {
            "type": "boolean",
            "description": "체크 여부",
            "example": true
          }
        },
        "required": [
          "dataLabel",
          "position",
          "size",
          "type",
          "value"
        ]
      },
      "RequesterImageInfoInPatchModificationDto": {
        "type": "object",
        "properties": {
          "base64": {
            "type": "string",
            "description": "이미지 데이터를 base64로 인코딩한 문자열"
          }
        },
        "required": [
          "base64"
        ]
      },
      "ImageInPatchModificationDto": {
        "type": "object",
        "properties": {
          "dataLabel": {
            "type": "string",
            "description": "데이터 라벨",
            "minLength": 1,
            "maxLength": 100
          },
          "position": {
            "description": "입력란의 위치",
            "allOf": [
              {
                "$ref": "#/components/schemas/PositionInPatchModificationDto"
              }
            ]
          },
          "size": {
            "description": "입력란의 크기",
            "allOf": [
              {
                "$ref": "#/components/schemas/SizeInPatchModificationDto"
              }
            ]
          },
          "id": {
            "type": "string",
            "description": "기존 항목의 서버 ID. 생략 시 신규 입력으로 처리됨."
          },
          "type": {
            "type": "string",
            "example": "IMAGE",
            "description": "문서 편집 입력란 타입"
          },
          "value": {
            "description": "3MB 이하의 jpg 또는 png 이미지 정보",
            "allOf": [
              {
                "$ref": "#/components/schemas/RequesterImageInfoInPatchModificationDto"
              }
            ]
          }
        },
        "required": [
          "dataLabel",
          "position",
          "size",
          "type",
          "value"
        ]
      },
      "ParticipantInPatchModificationDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "기존 참여자 id. 생략 시 신규 참여자로 생성됨"
          },
          "type": {
            "type": "string",
            "enum": [
              "SIGNER",
              "VIEWER"
            ],
            "description": "참여자 타입. 신규 참여자는 필수, 기존 참여자는 생략 시 현재 type 보존됨"
          },
          "role": {
            "type": "string",
            "description": "참여자의 역할"
          },
          "name": {
            "type": "string",
            "description": "참여자 이름"
          },
          "requesterMessage": {
            "type": "string",
            "description": "남길말",
            "nullable": true
          },
          "locale": {
            "type": "string",
            "description": "언어",
            "enum": [
              "ko",
              "en",
              "zh-CN",
              "ja",
              "vi",
              "fr"
            ]
          },
          "signingOrder": {
            "type": "number",
            "description": "참여 순서"
          },
          "signingDuration": {
            "type": "number",
            "description": "서명 유효 기간"
          },
          "signingMethod": {
            "description": "서명 수단",
            "allOf": [
              {
                "$ref": "#/components/schemas/SigningMethodInCreateDocumentRequestDto"
              }
            ]
          },
          "manuallyViewing": {
            "type": "boolean",
            "description": "열람자 수동 열람 여부"
          },
          "attachmentRequests": {
            "description": "첨부파일 요청 정보",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttachmentRequestInCreateDocumentRequestDto"
            }
          },
          "verification": {
            "description": "참여자의 추가 인증",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/VerificationInCreateDocumentRequestDto"
              }
            ]
          },
          "fields": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "title": "TEXT",
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "기존 입력란 id. 생략 시 신규 입력란으로 처리됨"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/TextFieldInCreateDocumentRequestDto"
                    }
                  ]
                },
                {
                  "title": "CHECKBOX",
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "기존 입력란 id. 생략 시 신규 입력란으로 처리됨"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/CheckboxFieldInCreateDocumentRequestDto"
                    }
                  ]
                },
                {
                  "title": "SIGNATURE",
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "기존 입력란 id. 생략 시 신규 입력란으로 처리됨"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SignatureFieldInCreateDocumentRequestDto"
                    }
                  ]
                },
                {
                  "title": "SIGNING_DATE",
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "기존 입력란 id. 생략 시 신규 입력란으로 처리됨"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/SigningDateInCreateDocumentRequestDto"
                    }
                  ]
                },
                {
                  "title": "IMAGE",
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "기존 입력란 id. 생략 시 신규 입력란으로 처리됨"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/ImageFieldInCreateDocumentRequestDto"
                    }
                  ]
                },
                {
                  "title": "DATE",
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "기존 입력란 id. 생략 시 신규 입력란으로 처리됨"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/DateFieldInCreateDocumentRequestDto"
                    }
                  ]
                },
                {
                  "title": "DROPDOWN",
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "기존 입력란 id. 생략 시 신규 입력란으로 처리됨"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/DropdownFieldInCreateDocumentRequestDto"
                    }
                  ]
                },
                {
                  "title": "NAME",
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "기존 입력란 id. 생략 시 신규 입력란으로 처리됨"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/NameFieldInCreateDocumentRequestDto"
                    }
                  ]
                },
                {
                  "title": "COMPANY_NAME",
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "기존 입력란 id. 생략 시 신규 입력란으로 처리됨"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/CompanyNameFieldInCreateDocumentRequestDto"
                    }
                  ]
                },
                {
                  "title": "ADDRESS",
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "기존 입력란 id. 생략 시 신규 입력란으로 처리됨"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/AddressFieldInCreateDocumentRequestDto"
                    }
                  ]
                }
              ]
            },
            "description": "참여자 필드 정보 (VIEWER 타입 참여자는 필드를 가질 수 없음). 체크박스 dataLabel 의 그룹 멤버 번호 부여·번호 충돌 검증·임의 값 부여는 PATCH 에 적용되지 않으며, 보낸 값을 그대로 전달합니다."
          },
          "checkboxFieldGroups": {
            "description": "체크박스 그룹",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CheckboxGroupInCreateDocumentRequestDto"
            }
          }
        }
      },
      "RequesterAttachmentInPatchModificationDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "첨부파일 1",
            "description": "첨부파일 이름 (특수문자 /?<>\\\":*|₩ 이 포함된 이름은 사용할 수 없습니다)",
            "minLength": 1,
            "maxLength": 100
          },
          "file": {
            "description": "파일 정보",
            "example": {
              "fileId": "2752f600-c6fc-11ed-b2e3-b5476bd20f82",
              "token": "01GVZ3BGGT2D9BSEVXJJ2V00SP",
              "name": "첨부파일_1"
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/FileInfoInCreateDocumentRequestDto"
              }
            ]
          },
          "id": {
            "type": "string",
            "description": "기존 항목의 서버 ID. 생략 시 신규 첨부로 처리됨."
          }
        },
        "required": [
          "name",
          "file"
        ]
      },
      "PatchDocumentModificationRequestDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "문서의 제목"
          },
          "fileOpenPassword": {
            "type": "string",
            "nullable": true,
            "description": "완료 문서 비밀번호"
          },
          "file": {
            "description": "문서의 파일",
            "allOf": [
              {
                "$ref": "#/components/schemas/FileRefDocumentFileInDocumentRequestDto"
              }
            ]
          },
          "participants": {
            "description": "참여자 목록",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParticipantInPatchModificationDto"
            }
          },
          "requesterInputs": {
            "type": "array",
            "description": "요청자의 입력",
            "items": {
              "oneOf": [
                {
                  "title": "TEXT",
                  "$ref": "#/components/schemas/TextInPatchModificationDto"
                },
                {
                  "title": "CHECKBOX",
                  "$ref": "#/components/schemas/CheckboxInPatchModificationDto"
                },
                {
                  "title": "IMAGE",
                  "$ref": "#/components/schemas/ImageInPatchModificationDto"
                }
              ]
            }
          },
          "requesterAttachments": {
            "description": "요청자 첨부파일",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RequesterAttachmentInPatchModificationDto"
            }
          },
          "carbonCopies": {
            "description": "참조자 연락처",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CarbonCopy"
            }
          },
          "seal": {
            "description": "문서 봉인 설정",
            "allOf": [
              {
                "$ref": "#/components/schemas/DocumentSealInCreateDocumentRequestDto"
              }
            ]
          }
        }
      }
    }
  }
}
```