개발자 문서
API 레퍼런스

증명서

1. 증명서 신청/발급 입력 서식 조회fourinsure.b1.certificate.apply.init

POSThttps://api.xdata.kr/v1/jobsX-Env-Scope: sandbox

샌드박스입니다. 실제 기관을 호출하지 않는 모의 응답이며 일일 한도가 없습니다.

가입내역확인 증명서를 신청하는 화면의 입력 항목을 조회합니다.

  • 로그인을 먼저 호출해 세션을 만든 뒤, 같은 account_link_id 로 호출합니다. [4대보험 로그인]
  • sandbox 환경에서는 실제 기관에 접속하지 않습니다. result.data 에는 mock: true 와 보낸 params 를 그대로 담은 params_echo 가 오고, 업무 응답 필드는 오지 않습니다.
  • params 는 빈 객체로 보내도 호출됩니다. 사용할 인증서는 account_link_id 로 지정합니다.
Request
순번변수명필수설명
AuthorizationYAPI 자격증명입니다. client_id 와 client_secret 을 콜론으로 이어 Base64 로 인코딩해 보냅니다.

형식 : Basic base64("{client_id}:{client_secret}")

[참고] 인증

X-Env-ScopeY호출 환경입니다.
  • sandbox샌드박스 — 모의 응답
  • real_test데모 — 하루 100 사용 토큰
  • production정식 — 유료 플랜 전용

[참고] 환경

Idempotency-KeyY재시도 식별 키입니다. 같은 키와 같은 본문으로 다시 호출하면 기존 작업이 그대로 반환됩니다. ASCII 문자만 사용하며 UUID v4 를 권장합니다. 고객 정보는 넣지 않습니다.

[참고] 재시도

Content-TypeY요청 본문 형식입니다.
  • application/json고정값 (기본값)
X-Trace-IdN추적 아이디입니다. 지정하지 않으면 서버가 발급합니다.
순번변수명타입길이필수설명
providerstring-Y호출할 기관입니다.
  • fourinsure이 API 고정값 (기본값)

예시 : fourinsure

actionstring-Y호출할 작업입니다.
  • fourinsure.b1.certificate.apply.init이 API 고정값 (기본값)

예시 : fourinsure.b1.certificate.apply.init

account_link_idstring36조건부등록한 자격증명을 가리키는 아이디입니다. 생략하면 이 계정이 그 기관에 등록한 자격증명 중 대표로 지정한 것이 쓰입니다. 대표가 없으면 등록한 자격증명이 하나뿐일 때만 자동으로 선택되고, 둘 이상이면 직접 지정해야 합니다.

형식 : UUID v4

[참고] 자격증명 등록

paramsobject-N작업 파라미터입니다. 이 API 는 빈 객체로 호출할 수 있습니다.
encrypted_fieldsobject-N민감한 params 값을 RSA-OAEP-256 으로 암호화해 담는 객체입니다. 서버가 복호화해 params 에 합칩니다. 같은 이름을 params 와 함께 쓰지 않습니다.

[참고] 암호화

추가 파라미터가 없습니다. params 는 {} 로 보냅니다.

bash
curl --request POST \
  --url 'https://api.xdata.kr/v1/jobs' \
  --header 'Authorization: Basic {base64(client_id:client_secret)}' \
  --header 'X-Env-Scope: sandbox' \
  --header 'Idempotency-Key: demo-init-001' \
  --header 'Content-Type: application/json' \
  --data '{
  "provider": "fourinsure",
  "action": "fourinsure.b1.certificate.apply.init",
  "account_link_id": "9b4c3a2f-0000-4000-8000-000000000000",
  "params": {}
}'
Response
  • result.data 에서 입력 항목(fields)과 다음 단계 정보를 확인해 후속 요청 본문을 만듭니다.
순번변수명설명
success요청 처리 성공 여부
page화면 페이지 메타 객체
formsform 메타데이터 배열
fields입력 필드 계약 배열
semantic_fields의미 단위 입력 컨트롤 배열
semantic_payload의미 필드 키-값 맵
semantic_field_count의미 필드 개수
csrf_token_presentCSRF 토큰 존재 여부
followup_endpoints후속 endpoint URL 배열
navigation_steps화면 내비게이션 단계 배열
current_view현재 화면 식별자
target_ready대상 폼 준비 여부
raw_html_len원본 HTML 길이
source_url업스트림 요청 URL
json
// result.data
{
  "page": {
    "title": "4대사회보험 정보연계센터",
    "headings": [
      "증명서발급",
      "증명서(가입내역확인_사업장,전체 가입자)신청/발급",
      "4대사회보험 가입내역 확인 청구서",
      "작성시 유의사항",
      "가입내역확인서 청구내역",
      "확인자",
      "근무중인 사업장",
      "증명서 발급신청 절차 안내",
      "개인정보보호",
      "위·변조금지"
    ]
  },
  "forms": [
    {
      "id": "submitForm",
      "name": "submit",
      "action": null,
      "method": "get"
    }
  ],
  "fields": [
    {
      "id": null,
      "tag": "input",
      "href": null,
      "name": "_csrf",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": "[REDACTED]",
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "tmpltKbrdrNm",
      "tag": "input",
      "href": null,
      "name": "tmpltKbrdrNm",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": "홍길동",
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "idntyTrprTelrno",
      "tag": "input",
      "href": null,
      "name": "idntyTrprTelrno",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": null,
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "idntyTrprTelono",
      "tag": "input",
      "href": null,
      "name": "idntyTrprTelono",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": null,
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "idntyTrprTelino",
      "tag": "input",
      "href": null,
      "name": "idntyTrprTelino",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": null,
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "idntyTrprOzip",
      "tag": "input",
      "href": null,
      "name": "idntyTrprOzip",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": "12345",
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "idntyTrprBscAddr",
      "tag": "input",
      "href": null,
      "name": "idntyTrprBscAddr",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": "서울특별시 중구 예시로 123",
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "idntyTrprDtlAddr",
      "tag": "input",
      "href": null,
      "name": "idntyTrprDtlAddr",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": "123-4",
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "idntyTrprBscRnmAddr",
      "tag": "input",
      "href": null,
      "name": "idntyTrprBscRnmAddr",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": "서울특별시 중구 예시로 123",
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "idntyTrprDtlRnmAddr",
      "tag": "input",
      "href": null,
      "name": "idntyTrprDtlRnmAddr",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": "예시빌딩 4층 401호",
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "powkBplcNm",
      "tag": "input",
      "href": null,
      "name": "powkBplcNm",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": "예시 주식회사",
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "powkBrno",
      "tag": "input",
      "href": null,
      "name": "powkBrno",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": "1234567890",
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "powkBpmno",
      "tag": "input",
      "href": null,
      "name": "powkBpmno",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": "12345678901",
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "issuUsgSeCd",
      "tag": "input",
      "href": null,
      "name": "issuUsgSeCd",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": "1",
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "joinDsctnCdocKndCd",
      "tag": "input",
      "href": null,
      "name": "joinDsctnCdocKndCd",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": null,
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "rcptMthdSeCd",
      "tag": "input",
      "href": null,
      "name": "rcptMthdSeCd",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": "P",
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "idntyTrprRrkey",
      "tag": "input",
      "href": null,
      "name": "idntyTrprRrkey",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": "12345678901",
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    },
    {
      "id": "otptSortSeCd",
      "tag": "input",
      "href": null,
      "name": "otptSortSeCd",
      "role": null,
      "text": "",
      "type": "hidden",
      "class": null,
      "title": "",
      "value": null,
      "checked": false,
      "onclick": null,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "data_attrs": {},
      "placeholder": "",
      "option_count": 0,
      "selected_text": null
    }
  ],
  "success": true,
  "source_url": "https://www.4insure.or.kr/pbiz/cert/insertBplcCerfAplyView.do",
  "current_view": "target_form",
  "raw_html_len": 64739,
  "target_ready": true,
  "semantic_fields": [
    {
      "id": "queryhead",
      "tag": "input",
      "name": "query",
      "text": "",
      "type": "text",
      "class": "ipt_totalsearch",
      "label": null,
      "title": "통합 검색어 입력 영역",
      "value": "",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "검색어를 입력해주세요.",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": null,
      "tag": "button",
      "name": null,
      "text": "통합검색",
      "type": null,
      "class": "btn_totalsearch",
      "label": null,
      "title": "",
      "value": "",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": null,
      "tag": "button",
      "name": null,
      "text": "메뉴 버튼",
      "type": "button",
      "class": "lnb_toggle_btn",
      "label": null,
      "title": "",
      "value": "",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "메뉴닫기",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": null,
      "tag": "button",
      "name": null,
      "text": "화면확대",
      "type": "button",
      "class": "btn_scale_plus",
      "label": null,
      "title": "",
      "value": "",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": null,
      "tag": "button",
      "name": null,
      "text": "화면축소",
      "type": "button",
      "class": "btn_scale_minus",
      "label": null,
      "title": "",
      "value": "",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": null,
      "tag": "button",
      "name": null,
      "text": "용어사전",
      "type": "button",
      "class": "btn_style h38 bg_darkblue radius19",
      "label": null,
      "title": "새창으로 열림",
      "value": "",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": "joinDsctnCdocKndCd1",
      "tag": "input",
      "name": "joinDsctnCdocKndCd",
      "text": "",
      "type": "radio",
      "class": null,
      "label": "사업장 가입자 명부",
      "title": "",
      "value": "",
      "checked": true,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": "joinDsctnCdocKndCd2",
      "tag": "input",
      "name": "joinDsctnCdocKndCd",
      "text": "",
      "type": "radio",
      "class": null,
      "label": "사업장 가입내역 확인서",
      "title": "",
      "value": "",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": "btnSubmit1",
      "tag": "button",
      "name": null,
      "text": "신청",
      "type": "button",
      "class": "btn_style minw100 h50 bg_gray f15",
      "label": null,
      "title": "",
      "value": "",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": "iptFlnm",
      "tag": "input",
      "name": null,
      "text": "",
      "type": "text",
      "class": "ipt_text",
      "label": null,
      "title": "성명 입력",
      "value": "홍길동",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": true,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": null,
      "tag": "input",
      "name": null,
      "text": "",
      "type": "text",
      "class": "ipt_text",
      "label": null,
      "title": "주민(외국인)등록번호 앞자리 입력",
      "value": null,
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": true,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": true,
      "selected_text": null
    },
    {
      "id": null,
      "tag": "input",
      "name": null,
      "text": "",
      "type": "password",
      "class": "ipt_text",
      "label": null,
      "title": "주민(외국인)등록번호 뒷자리 입력",
      "value": null,
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": true,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": true,
      "selected_text": null
    },
    {
      "id": "iptTelrno",
      "tag": "input",
      "name": null,
      "text": "",
      "type": "text",
      "class": "ipt_text",
      "label": null,
      "title": "전화번호(자택) 앞자리 입력",
      "value": "",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": "iptTelono",
      "tag": "input",
      "name": null,
      "text": "",
      "type": "text",
      "class": "ipt_text",
      "label": null,
      "title": "전화번호(자택) 가운데자리 입력",
      "value": "",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": "iptTelino",
      "tag": "input",
      "name": null,
      "text": "",
      "type": "text",
      "class": "ipt_text",
      "label": null,
      "title": "전화번호(자택) 뒷자리 입력",
      "value": "",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": "iptZipCd",
      "tag": "input",
      "name": null,
      "text": "",
      "type": "text",
      "class": "ipt_text",
      "label": null,
      "title": "우편물 수령지 우편번호 입력",
      "value": "12345",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": true,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": "iptAddr",
      "tag": "input",
      "name": null,
      "text": "",
      "type": "text",
      "class": "ipt_text",
      "label": null,
      "title": "우편물 수령지 기본주소 입력",
      "value": "서울특별시 중구 예시로 123",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": true,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": "iptDaddr",
      "tag": "input",
      "name": null,
      "text": "",
      "type": "text",
      "class": "ipt_text",
      "label": null,
      "title": "우편물 수령지 상세주소 입력",
      "value": "예시빌딩 4층 401호",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": true,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": null,
      "tag": "input",
      "name": null,
      "text": "",
      "type": "text",
      "class": "ipt_text",
      "label": null,
      "title": "사업장 입력",
      "value": "예시 주식회사",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": true,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": null,
      "tag": "input",
      "name": null,
      "text": "",
      "type": "text",
      "class": "ipt_text",
      "label": null,
      "title": "사업자등록번호 입력",
      "value": "1234567890",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": true,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": null,
      "tag": "input",
      "name": null,
      "text": "",
      "type": "text",
      "class": "ipt_text",
      "label": null,
      "title": "사업장관리번호 입력",
      "value": "12345678901",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": true,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": "lb02_01",
      "tag": "input",
      "name": "lb02",
      "text": "",
      "type": "radio",
      "class": null,
      "label": "확인용",
      "title": "",
      "value": "",
      "checked": true,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": "radioOtptSortSeCd1",
      "tag": "input",
      "name": "radioOtptSortSeCd",
      "text": "",
      "type": "radio",
      "class": null,
      "label": "이름순으로 출력",
      "title": "",
      "value": "2",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": "radioOtptSortSeCd2",
      "tag": "input",
      "name": "radioOtptSortSeCd",
      "text": "",
      "type": "radio",
      "class": null,
      "label": "주민등록순으로 출력",
      "title": "",
      "value": null,
      "checked": true,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": true,
      "selected_text": null
    },
    {
      "id": "btnSubmit2",
      "tag": "button",
      "name": null,
      "text": "신청",
      "type": "button",
      "class": "btn_style minw180 h50 bg_blue",
      "label": null,
      "title": "",
      "value": "",
      "checked": false,
      "options": [],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 0,
      "value_masked": false,
      "selected_text": null
    },
    {
      "id": "selectSite",
      "tag": "select",
      "name": null,
      "text": "",
      "type": null,
      "class": null,
      "label": null,
      "title": "유관기관 사이트 선택",
      "value": "",
      "checked": false,
      "options": [
        {
          "text": "유관기관 사이트",
          "value": "",
          "selected": false
        },
        {
          "text": "사회보험통합징수포털",
          "value": "https://si4n.nhis.or.kr",
          "selected": false
        },
        {
          "text": "국민연금공단",
          "value": "http://www.nps.or.kr",
          "selected": false
        },
        {
          "text": "국민건강보험공단",
          "value": "http://www.nhis.or.kr",
          "selected": false
        },
        {
          "text": "고용보험",
          "value": "http://www.ei.go.kr",
          "selected": false
        },
        {
          "text": "근로복지공단",
          "value": "http://www.comwel.or.kr",
          "selected": false
        },
        {
          "text": "고용노동부",
          "value": "http://www.moel.go.kr",
          "selected": false
        },
        {
          "text": "한국고용정보원",
          "value": "http://www.keis.or.kr",
          "selected": false
        },
        {
          "text": "노인장기요양보험",
          "value": "https://www.longtermcare.or.kr/",
          "selected": false
        },
        {
          "text": "보건복지부",
          "value": "http://www.mohw.go.kr",
          "selected": false
        },
        {
          "text": "건강iN",
          "value": "https://www.nhis.or.kr/nhis/healthin/wbhaca04500m01.do",
          "selected": false
        },
        {
          "text": "건강보험심사평가원",
          "value": "http://www.hira.or.kr",
          "selected": false
        },
        {
          "text": "기초연금",
          "value": "http://basicpension.mohw.go.kr",
          "selected": false
        },
        {
          "text": "정부24",
          "value": "http://www.gov.kr/portal/main",
          "selected": false
        }
      ],
      "disabled": false,
      "readonly": false,
      "required": false,
      "aria_label": "",
      "placeholder": "",
      "option_count": 14,
      "value_masked": false,
      "selected_text": "유관기관 사이트"
    }
  ],
  "navigation_steps": [
    {
      "url": "https://www.4insure.or.kr/pbiz/cert/insertBplcCerfAplyView.do",
      "phase": "enter_application_form",
      "method": "GET",
      "description": "증명서 신청 화면으로 이동"
    }
  ],
  "semantic_payload": {
    "신청": "신청",
    "신청_2": "신청",
    "확인용": "lb02_01",
    "메뉴닫기": "메뉴 버튼",
    "통합검색": "통합검색",
    "화면축소": "화면축소",
    "화면확대": "화면확대",
    "성명_입력": "홍길동",
    "사업장_입력": "예시 주식회사",
    "새창으로_열림": "용어사전",
    "이름순으로_출력": "radioOtptSortSeCd1",
    "사업장_가입자_명부": "joinDsctnCdocKndCd1",
    "사업자등록번호_입력": "1234567890",
    "사업장관리번호_입력": "12345678901",
    "주민등록순으로_출력": "radioOtptSortSeCd2",
    "유관기관_사이트_선택": "유관기관 사이트",
    "통합_검색어_입력_영역": "검색어를 입력해주세요.",
    "사업장_가입내역_확인서": "joinDsctnCdocKndCd2",
    "전화번호_자택_뒷자리_입력": "전화번호(자택) 뒷자리 입력",
    "전화번호_자택_앞자리_입력": "전화번호(자택) 앞자리 입력",
    "우편물_수령지_기본주소_입력": "서울특별시 중구 예시로 123",
    "우편물_수령지_상세주소_입력": "예시빌딩 4층 401호",
    "우편물_수령지_우편번호_입력": "12345",
    "전화번호_자택_가운데자리_입력": "전화번호(자택) 가운데자리 입력",
    "주민_외국인_등록번호_뒷자리_입력": "주민(외국인)등록번호 뒷자리 입력",
    "주민_외국인_등록번호_앞자리_입력": "주민(외국인)등록번호 앞자리 입력"
  },
  "csrf_token_present": true,
  "followup_endpoints": [
    {
      "url": "https://www.4insure.or.kr/pbiz/cert/insertBplcCerfAply.do"
    }
  ],
  "semantic_field_count": 26
}
순번오류 코드발생 조건
AUTH_REQUIRED세션 없음 — 로그인 세션이 없습니다. 로그인을 먼저 호출합니다.
PROVIDER_AUTH_FAILED인증 만료 — 인증이 만료됐습니다. 로그인을 다시 호출합니다.
PROVIDER_UPSTREAM_ERROR업스트림 오류 — 기관 응답이 지연되거나 형식이 올바르지 않습니다. 잠시 후 다시 호출합니다.
PROVIDER_VALIDATION_ERROR검증 오류 — 보낸 파라미터 값을 기관이 거부했습니다. 값을 확인합니다.

2. 증명서 신청/발급 제출fourinsure.b1.certificate.apply.submit

POSThttps://api.xdata.kr/v1/jobsX-Env-Scope: sandbox

샌드박스입니다. 실제 기관을 호출하지 않는 모의 응답이며 일일 한도가 없습니다.

가입내역확인 증명서 신청과 발급을 제출하고 접수와 발급 상태를 반환합니다.

  • 로그인을 먼저 호출해 세션을 만든 뒤, 같은 account_link_id 로 호출합니다. [4대보험 로그인]
  • sandbox 환경에서는 실제 기관에 접속하지 않습니다. result.data 에는 mock: true 와 보낸 params 를 그대로 담은 params_echo 가 오고, 업무 응답 필드는 오지 않습니다.
  • 되돌릴 수 없는 접수라 사용자 동의를 받은 뒤 confirm 을 true 로 보내야 제출됩니다. dry_run 을 true 로 보내면 접수 없이 검증만 합니다.
Request
순번변수명필수설명
AuthorizationYAPI 자격증명입니다. client_id 와 client_secret 을 콜론으로 이어 Base64 로 인코딩해 보냅니다.

형식 : Basic base64("{client_id}:{client_secret}")

[참고] 인증

X-Env-ScopeY호출 환경입니다.
  • sandbox샌드박스 — 모의 응답
  • real_test데모 — 하루 100 사용 토큰
  • production정식 — 유료 플랜 전용

[참고] 환경

Idempotency-KeyY재시도 식별 키입니다. 같은 키와 같은 본문으로 다시 호출하면 기존 작업이 그대로 반환됩니다. ASCII 문자만 사용하며 UUID v4 를 권장합니다. 고객 정보는 넣지 않습니다.

[참고] 재시도

Content-TypeY요청 본문 형식입니다.
  • application/json고정값 (기본값)
X-Trace-IdN추적 아이디입니다. 지정하지 않으면 서버가 발급합니다.
순번변수명타입길이필수설명
providerstring-Y호출할 기관입니다.
  • fourinsure이 API 고정값 (기본값)

예시 : fourinsure

actionstring-Y호출할 작업입니다.
  • fourinsure.b1.certificate.apply.submit이 API 고정값 (기본값)

예시 : fourinsure.b1.certificate.apply.submit

account_link_idstring36조건부등록한 자격증명을 가리키는 아이디입니다. 생략하면 이 계정이 그 기관에 등록한 자격증명 중 대표로 지정한 것이 쓰입니다. 대표가 없으면 등록한 자격증명이 하나뿐일 때만 자동으로 선택되고, 둘 이상이면 직접 지정해야 합니다.

형식 : UUID v4

[참고] 자격증명 등록

paramsobject-Y작업 파라미터입니다. 아래 params 파라미터 표의 필수 항목을 채워 보냅니다.
encrypted_fieldsobject-N민감한 params 값을 RSA-OAEP-256 으로 암호화해 담는 객체입니다. 서버가 복호화해 params 에 합칩니다. 같은 이름을 params 와 함께 쓰지 않습니다.

[참고] 암호화

순번변수명타입필수설명
selectionstringY증명서 종류. 2=사업장 가입내역확인서, 3=사업장 가입자명부 또는. 별칭은 document_type 입니다
output_sort_codestringN출력 정렬 otptSortSeCd. 1=이름순, 2=주민등록순. 기본 1
phone_areastringN연락처 지역번호 idntyTrprTelrno
phone_exchangestringN연락처 국번호 idntyTrprTelono
phone_linestringN연락처 끝번호 idntyTrprTelino
confirmbooleanN제출 확인. 사용자에게 미리보기를 보여주고 동의를 받았을 때만 true 로 보낸다. 자동으로 채우지 않는다
confirm_submitbooleanNdry-run 모드 선택기이며 **확인 게이트가 아니다**. false 면 제출 없이 payload 검증만 한다. 사용자 동의는 위의 confirm 으로 받는다 — 이 값의 기본값을 false 로 바꾸면 동의한 호출자가 조용히 제출되지 않은 채 성공 응답을 받게 되므로 바꾸지 않는다
dry_runbooleanNtrue면 upstream POST 없이 dry-run 응답
bash
curl --request POST \
  --url 'https://api.xdata.kr/v1/jobs' \
  --header 'Authorization: Basic {base64(client_id:client_secret)}' \
  --header 'X-Env-Scope: sandbox' \
  --header 'Idempotency-Key: demo-submit-001' \
  --header 'Content-Type: application/json' \
  --data '{
  "provider": "fourinsure",
  "action": "fourinsure.b1.certificate.apply.submit",
  "account_link_id": "9b4c3a2f-0000-4000-8000-000000000000",
  "params": {
    "selection": "<필수>"
  }
}'
Response
  • result.data 의 submitted 로 접수됐는지, cvrc_no 와 received_at 으로 접수 번호와 시각을 확인합니다. dry_run 이 true 면 접수하지 않은 검증 결과입니다.
순번변수명설명
success요청 처리 성공 여부
submitted실제 제출 수행 여부
dry_rundry-run 모드 여부
selection선택한 증명서 종류
join_dsctn_cdoc_knd_cd가입내역확인서 종류 코드
output_sort_code출력 정렬 코드
cvrc_no민원접수번호
request_type신청 유형
received_at접수 일시
process_agencies처리 기관 배열
statuses처리 상태 배열
issued_at발급 일시
form_hiddenhidden form 필드 맵
navigation_steps화면 내비게이션 단계 배열
source_url업스트림 요청 URL
raw_html_len원본 HTML 길이
json
// result.data
{
  "success": true,
  "submitted": true,
  "dry_run": false,
  "selection": "WORKPLACE",
  "join_dsctn_cdoc_knd_cd": "1",
  "output_sort_code": "1",
  "cvrc_no": "...",
  "request_type": "...",
  "received_at": "2026-06-15 10:00:00",
  "process_agencies": ["..."],
  "issued_at": "...",
  "statuses": ["접수"],
  "form_hidden": {},
  "navigation_steps": [],
  "raw_html_len": 0,
  "source_url": "https://..."
}
순번오류 코드발생 조건
AUTH_REQUIRED세션 없음 — 로그인 세션이 없습니다. 로그인을 먼저 호출합니다.
PROVIDER_AUTH_FAILED인증 만료 — 인증이 만료됐습니다. 로그인을 다시 호출합니다.
PROVIDER_UPSTREAM_ERROR업스트림 오류 — 기관 응답이 지연되거나 형식이 올바르지 않습니다. 잠시 후 다시 호출합니다.
PROVIDER_VALIDATION_ERROR검증 오류 — 보낸 파라미터 값을 기관이 거부했습니다. 값을 확인합니다.

3. 증명서 신청이력 상세 조회fourinsure.b1.certificate.history.detail

POSThttps://api.xdata.kr/v1/jobsX-Env-Scope: sandbox

샌드박스입니다. 실제 기관을 호출하지 않는 모의 응답이며 일일 한도가 없습니다.

특정 증명서 신청 건의 상세 처리 상태와 발급 정보를 조회합니다.

  • 로그인을 먼저 호출해 세션을 만든 뒤, 같은 account_link_id 로 호출합니다. [4대보험 로그인]
  • sandbox 환경에서는 실제 기관에 접속하지 않습니다. result.data 에는 mock: true 와 보낸 params 를 그대로 담은 params_echo 가 오고, 업무 응답 필드는 오지 않습니다.
Request
순번변수명필수설명
AuthorizationYAPI 자격증명입니다. client_id 와 client_secret 을 콜론으로 이어 Base64 로 인코딩해 보냅니다.

형식 : Basic base64("{client_id}:{client_secret}")

[참고] 인증

X-Env-ScopeY호출 환경입니다.
  • sandbox샌드박스 — 모의 응답
  • real_test데모 — 하루 100 사용 토큰
  • production정식 — 유료 플랜 전용

[참고] 환경

Idempotency-KeyY재시도 식별 키입니다. 같은 키와 같은 본문으로 다시 호출하면 기존 작업이 그대로 반환됩니다. ASCII 문자만 사용하며 UUID v4 를 권장합니다. 고객 정보는 넣지 않습니다.

[참고] 재시도

Content-TypeY요청 본문 형식입니다.
  • application/json고정값 (기본값)
X-Trace-IdN추적 아이디입니다. 지정하지 않으면 서버가 발급합니다.
순번변수명타입길이필수설명
providerstring-Y호출할 기관입니다.
  • fourinsure이 API 고정값 (기본값)

예시 : fourinsure

actionstring-Y호출할 작업입니다.
  • fourinsure.b1.certificate.history.detail이 API 고정값 (기본값)

예시 : fourinsure.b1.certificate.history.detail

account_link_idstring36조건부등록한 자격증명을 가리키는 아이디입니다. 생략하면 이 계정이 그 기관에 등록한 자격증명 중 대표로 지정한 것이 쓰입니다. 대표가 없으면 등록한 자격증명이 하나뿐일 때만 자동으로 선택되고, 둘 이상이면 직접 지정해야 합니다.

형식 : UUID v4

[참고] 자격증명 등록

paramsobject-Y작업 파라미터입니다. 아래 params 파라미터 표의 필수 항목을 채워 보냅니다.
encrypted_fieldsobject-N민감한 params 값을 RSA-OAEP-256 으로 암호화해 담는 객체입니다. 서버가 복호화해 params 에 합칩니다. 같은 이름을 params 와 함께 쓰지 않습니다.

[참고] 암호화

순번변수명타입필수설명
cvrc_nostringY증명서 신청이력 상세 조회용 민원번호 cvrcNo
group_cvrc_nostringN그룹 민원번호 groupCvrcNo. 기본 ""
bash
curl --request POST \
  --url 'https://api.xdata.kr/v1/jobs' \
  --header 'Authorization: Basic {base64(client_id:client_secret)}' \
  --header 'X-Env-Scope: sandbox' \
  --header 'Idempotency-Key: demo-detail-001' \
  --header 'Content-Type: application/json' \
  --data '{
  "provider": "fourinsure",
  "action": "fourinsure.b1.certificate.history.detail",
  "account_link_id": "9b4c3a2f-0000-4000-8000-000000000000",
  "params": {
    "cvrc_no": "<필수>"
  }
}'
Response
  • result.data 의 statuses 로 처리 상태를, pdf_download_available 로 PDF 를 받을 수 있는지 확인합니다.
순번변수명설명
success요청 처리 성공 여부
cvrc_no민원접수번호
request_type신청 유형
received_at접수 일시
process_agencies처리 기관 배열
statuses처리 상태 배열
issued_at발급 일시
status_code상태 코드
print_button_present인쇄 버튼 존재 여부
print_available인쇄 가능 여부
pdf_download_availablePDF 다운로드 가능 여부
form_hiddenhidden form 필드 맵
source_url업스트림 요청 URL
json
// result.data
{
  "success": true,
  "cvrc_no": "...",
  "request_type": "...",
  "received_at": "2026-06-15",
  "process_agencies": [],
  "statuses": [],
  "issued_at": "2026-06-15",
  "status_code": "...",
  "print_button_present": true,
  "print_available": true,
  "pdf_download_available": true,
  "form_hidden": {},
  "source_url": "..."
}
순번오류 코드발생 조건
AUTH_REQUIRED세션 없음 — 로그인 세션이 없습니다. 로그인을 먼저 호출합니다.
PROVIDER_AUTH_FAILED인증 만료 — 인증이 만료됐습니다. 로그인을 다시 호출합니다.
PROVIDER_UPSTREAM_ERROR업스트림 오류 — 기관 응답이 지연되거나 형식이 올바르지 않습니다. 잠시 후 다시 호출합니다.
PROVIDER_VALIDATION_ERROR검증 오류 — 보낸 파라미터 값을 기관이 거부했습니다. 값을 확인합니다.

4. 증명서 신청이력 상세 입력 서식 조회fourinsure.b1.certificate.history.detail_init

POSThttps://api.xdata.kr/v1/jobsX-Env-Scope: sandbox

샌드박스입니다. 실제 기관을 호출하지 않는 모의 응답이며 일일 한도가 없습니다.

증명서 신청이력 상세 화면을 열기 전에 필요한 항목을 미리 받아옵니다.

  • 로그인을 먼저 호출해 세션을 만든 뒤, 같은 account_link_id 로 호출합니다. [4대보험 로그인]
  • sandbox 환경에서는 실제 기관에 접속하지 않습니다. result.data 에는 mock: true 와 보낸 params 를 그대로 담은 params_echo 가 오고, 업무 응답 필드는 오지 않습니다.
Request
순번변수명필수설명
AuthorizationYAPI 자격증명입니다. client_id 와 client_secret 을 콜론으로 이어 Base64 로 인코딩해 보냅니다.

형식 : Basic base64("{client_id}:{client_secret}")

[참고] 인증

X-Env-ScopeY호출 환경입니다.
  • sandbox샌드박스 — 모의 응답
  • real_test데모 — 하루 100 사용 토큰
  • production정식 — 유료 플랜 전용

[참고] 환경

Idempotency-KeyY재시도 식별 키입니다. 같은 키와 같은 본문으로 다시 호출하면 기존 작업이 그대로 반환됩니다. ASCII 문자만 사용하며 UUID v4 를 권장합니다. 고객 정보는 넣지 않습니다.

[참고] 재시도

Content-TypeY요청 본문 형식입니다.
  • application/json고정값 (기본값)
X-Trace-IdN추적 아이디입니다. 지정하지 않으면 서버가 발급합니다.
순번변수명타입길이필수설명
providerstring-Y호출할 기관입니다.
  • fourinsure이 API 고정값 (기본값)

예시 : fourinsure

actionstring-Y호출할 작업입니다.
  • fourinsure.b1.certificate.history.detail_init이 API 고정값 (기본값)

예시 : fourinsure.b1.certificate.history.detail_init

account_link_idstring36조건부등록한 자격증명을 가리키는 아이디입니다. 생략하면 이 계정이 그 기관에 등록한 자격증명 중 대표로 지정한 것이 쓰입니다. 대표가 없으면 등록한 자격증명이 하나뿐일 때만 자동으로 선택되고, 둘 이상이면 직접 지정해야 합니다.

형식 : UUID v4

[참고] 자격증명 등록

paramsobject-Y작업 파라미터입니다. 아래 params 파라미터 표의 필수 항목을 채워 보냅니다.
encrypted_fieldsobject-N민감한 params 값을 RSA-OAEP-256 으로 암호화해 담는 객체입니다. 서버가 복호화해 params 에 합칩니다. 같은 이름을 params 와 함께 쓰지 않습니다.

[참고] 암호화

순번변수명타입필수설명
cvrc_nostringY증명서 신청이력 상세 조회용 민원번호 cvrcNo
group_cvrc_nostringN그룹 민원번호 groupCvrcNo. 기본 ""
bash
curl --request POST \
  --url 'https://api.xdata.kr/v1/jobs' \
  --header 'Authorization: Basic {base64(client_id:client_secret)}' \
  --header 'X-Env-Scope: sandbox' \
  --header 'Idempotency-Key: demo-detail_init-001' \
  --header 'Content-Type: application/json' \
  --data '{
  "provider": "fourinsure",
  "action": "fourinsure.b1.certificate.history.detail_init",
  "account_link_id": "9b4c3a2f-0000-4000-8000-000000000000",
  "params": {
    "cvrc_no": "<필수>"
  }
}'
Response
  • result.data 에서 입력 항목(fields)과 다음 단계 정보를 확인해 후속 요청 본문을 만듭니다.
순번변수명설명
success요청 처리 성공 여부
page화면 페이지 메타 객체
formsform 메타데이터 배열
fields입력 필드 계약 배열
semantic_fields의미 단위 입력 컨트롤 배열
semantic_payload의미 필드 키-값 맵
semantic_field_count의미 필드 개수
csrf_token_presentCSRF 토큰 존재 여부
followup_endpoints후속 endpoint URL 배열
navigation_steps화면 내비게이션 단계 배열
current_view현재 화면 식별자
target_ready대상 폼 준비 여부
raw_html_len원본 HTML 길이
source_url업스트림 요청 URL
json
// result.data
{
  "success": true,
  "page": {},
  "forms": [],
  "fields": [],
  "semantic_fields": [],
  "semantic_payload": {},
  "semantic_field_count": 1,
  "csrf_token_present": true,
  "followup_endpoints": [],
  "navigation_steps": [],
  "current_view": "...",
  "target_ready": true,
  "raw_html_len": 0,
  "source_url": "..."
}
순번오류 코드발생 조건
AUTH_REQUIRED세션 없음 — 로그인 세션이 없습니다. 로그인을 먼저 호출합니다.
PROVIDER_AUTH_FAILED인증 만료 — 인증이 만료됐습니다. 로그인을 다시 호출합니다.
PROVIDER_UPSTREAM_ERROR업스트림 오류 — 기관 응답이 지연되거나 형식이 올바르지 않습니다. 잠시 후 다시 호출합니다.
PROVIDER_VALIDATION_ERROR검증 오류 — 보낸 파라미터 값을 기관이 거부했습니다. 값을 확인합니다.

5. 증명서 신청이력 목록 조회fourinsure.b1.certificate.history.list

POSThttps://api.xdata.kr/v1/jobsX-Env-Scope: sandbox

샌드박스입니다. 실제 기관을 호출하지 않는 모의 응답이며 일일 한도가 없습니다.

4대보험 EDI 증명서 신청이력 목록 조회 업무를 위해 사업장의 증명서 신청이력 목록을 조회합니다.

  • 로그인을 먼저 호출해 세션을 만든 뒤, 같은 account_link_id 로 호출합니다. [4대보험 로그인]
  • 조회 결과가 없으면 items 가 빈 배열로 옵니다. 실패가 아닙니다.
  • sandbox 환경에서는 실제 기관에 접속하지 않습니다. result.data 에는 mock: true 와 보낸 params 를 그대로 담은 params_echo 가 오고, 업무 응답 필드는 오지 않습니다.
  • params 는 빈 객체로 보내도 호출됩니다. 사용할 인증서는 account_link_id 로 지정합니다.
Request
순번변수명필수설명
AuthorizationYAPI 자격증명입니다. client_id 와 client_secret 을 콜론으로 이어 Base64 로 인코딩해 보냅니다.

형식 : Basic base64("{client_id}:{client_secret}")

[참고] 인증

X-Env-ScopeY호출 환경입니다.
  • sandbox샌드박스 — 모의 응답
  • real_test데모 — 하루 100 사용 토큰
  • production정식 — 유료 플랜 전용

[참고] 환경

Idempotency-KeyY재시도 식별 키입니다. 같은 키와 같은 본문으로 다시 호출하면 기존 작업이 그대로 반환됩니다. ASCII 문자만 사용하며 UUID v4 를 권장합니다. 고객 정보는 넣지 않습니다.

[참고] 재시도

Content-TypeY요청 본문 형식입니다.
  • application/json고정값 (기본값)
X-Trace-IdN추적 아이디입니다. 지정하지 않으면 서버가 발급합니다.
순번변수명타입길이필수설명
providerstring-Y호출할 기관입니다.
  • fourinsure이 API 고정값 (기본값)

예시 : fourinsure

actionstring-Y호출할 작업입니다.
  • fourinsure.b1.certificate.history.list이 API 고정값 (기본값)

예시 : fourinsure.b1.certificate.history.list

account_link_idstring36조건부등록한 자격증명을 가리키는 아이디입니다. 생략하면 이 계정이 그 기관에 등록한 자격증명 중 대표로 지정한 것이 쓰입니다. 대표가 없으면 등록한 자격증명이 하나뿐일 때만 자동으로 선택되고, 둘 이상이면 직접 지정해야 합니다.

형식 : UUID v4

[참고] 자격증명 등록

paramsobject-N작업 파라미터입니다. 이 API 는 빈 객체로 호출할 수 있습니다.
encrypted_fieldsobject-N민감한 params 값을 RSA-OAEP-256 으로 암호화해 담는 객체입니다. 서버가 복호화해 params 에 합칩니다. 같은 이름을 params 와 함께 쓰지 않습니다.

[참고] 암호화

추가 파라미터가 없습니다. params 는 {} 로 보냅니다.

bash
curl --request POST \
  --url 'https://api.xdata.kr/v1/jobs' \
  --header 'Authorization: Basic {base64(client_id:client_secret)}' \
  --header 'X-Env-Scope: sandbox' \
  --header 'Idempotency-Key: demo-list-001' \
  --header 'Content-Type: application/json' \
  --data '{
  "provider": "fourinsure",
  "action": "fourinsure.b1.certificate.history.list",
  "account_link_id": "9b4c3a2f-0000-4000-8000-000000000000",
  "params": {}
}'
Response
  • result.data 의 items 로 조회 결과를 확인합니다.
순번변수명설명
success요청 처리 성공 여부
items조회 결과 행 배열
source_url업스트림 요청 URL
json
// result.data
{
  "success": true,
  "items": [
    {
      "row_index": 0,
      "row_key": "..."
    }
  ],
  "source_url": "..."
}
순번오류 코드발생 조건
AUTH_REQUIRED세션 없음 — 로그인 세션이 없습니다. 로그인을 먼저 호출합니다.
PROVIDER_AUTH_FAILED인증 만료 — 인증이 만료됐습니다. 로그인을 다시 호출합니다.
PROVIDER_UPSTREAM_ERROR업스트림 오류 — 기관 응답이 지연되거나 형식이 올바르지 않습니다. 잠시 후 다시 호출합니다.
PROVIDER_VALIDATION_ERROR검증 오류 — 보낸 파라미터 값을 기관이 거부했습니다. 값을 확인합니다.

6. 증명서 신청이력 목록 입력 서식 조회fourinsure.b1.certificate.history.list_init

POSThttps://api.xdata.kr/v1/jobsX-Env-Scope: sandbox

샌드박스입니다. 실제 기관을 호출하지 않는 모의 응답이며 일일 한도가 없습니다.

증명서 신청이력을 조회하기 전에 정보연계센터 조회 화면이 어떤 항목을 요구하는지 미리 받아 둡니다.

  • 로그인을 먼저 호출해 세션을 만든 뒤, 같은 account_link_id 로 호출합니다. [4대보험 로그인]
  • sandbox 환경에서는 실제 기관에 접속하지 않습니다. result.data 에는 mock: true 와 보낸 params 를 그대로 담은 params_echo 가 오고, 업무 응답 필드는 오지 않습니다.
  • params 는 빈 객체로 보내도 호출됩니다. 사용할 인증서는 account_link_id 로 지정합니다.
Request
순번변수명필수설명
AuthorizationYAPI 자격증명입니다. client_id 와 client_secret 을 콜론으로 이어 Base64 로 인코딩해 보냅니다.

형식 : Basic base64("{client_id}:{client_secret}")

[참고] 인증

X-Env-ScopeY호출 환경입니다.
  • sandbox샌드박스 — 모의 응답
  • real_test데모 — 하루 100 사용 토큰
  • production정식 — 유료 플랜 전용

[참고] 환경

Idempotency-KeyY재시도 식별 키입니다. 같은 키와 같은 본문으로 다시 호출하면 기존 작업이 그대로 반환됩니다. ASCII 문자만 사용하며 UUID v4 를 권장합니다. 고객 정보는 넣지 않습니다.

[참고] 재시도

Content-TypeY요청 본문 형식입니다.
  • application/json고정값 (기본값)
X-Trace-IdN추적 아이디입니다. 지정하지 않으면 서버가 발급합니다.
순번변수명타입길이필수설명
providerstring-Y호출할 기관입니다.
  • fourinsure이 API 고정값 (기본값)

예시 : fourinsure

actionstring-Y호출할 작업입니다.
  • fourinsure.b1.certificate.history.list_init이 API 고정값 (기본값)

예시 : fourinsure.b1.certificate.history.list_init

account_link_idstring36조건부등록한 자격증명을 가리키는 아이디입니다. 생략하면 이 계정이 그 기관에 등록한 자격증명 중 대표로 지정한 것이 쓰입니다. 대표가 없으면 등록한 자격증명이 하나뿐일 때만 자동으로 선택되고, 둘 이상이면 직접 지정해야 합니다.

형식 : UUID v4

[참고] 자격증명 등록

paramsobject-N작업 파라미터입니다. 이 API 는 빈 객체로 호출할 수 있습니다.
encrypted_fieldsobject-N민감한 params 값을 RSA-OAEP-256 으로 암호화해 담는 객체입니다. 서버가 복호화해 params 에 합칩니다. 같은 이름을 params 와 함께 쓰지 않습니다.

[참고] 암호화

추가 파라미터가 없습니다. params 는 {} 로 보냅니다.

bash
curl --request POST \
  --url 'https://api.xdata.kr/v1/jobs' \
  --header 'Authorization: Basic {base64(client_id:client_secret)}' \
  --header 'X-Env-Scope: sandbox' \
  --header 'Idempotency-Key: demo-list_init-001' \
  --header 'Content-Type: application/json' \
  --data '{
  "provider": "fourinsure",
  "action": "fourinsure.b1.certificate.history.list_init",
  "account_link_id": "9b4c3a2f-0000-4000-8000-000000000000",
  "params": {}
}'
Response
  • result.data 에서 입력 항목(fields)과 다음 단계 정보를 확인해 후속 요청 본문을 만듭니다.
순번변수명설명
success요청 처리 성공 여부
page화면 페이지 메타 객체
formsform 메타데이터 배열
fields입력 필드 계약 배열
semantic_fields의미 단위 입력 컨트롤 배열
semantic_payload의미 필드 키-값 맵
semantic_field_count의미 필드 개수
csrf_token_presentCSRF 토큰 존재 여부
followup_endpoints후속 endpoint URL 배열
navigation_steps화면 내비게이션 단계 배열
current_view현재 화면 식별자
target_ready대상 폼 준비 여부
raw_html_len원본 HTML 길이
source_url업스트림 요청 URL
json
// result.data
{
  "success": true,
  "page": {},
  "forms": [],
  "fields": [],
  "semantic_fields": [],
  "semantic_payload": {},
  "semantic_field_count": 1,
  "csrf_token_present": true,
  "followup_endpoints": [],
  "navigation_steps": [],
  "current_view": "...",
  "target_ready": true,
  "raw_html_len": 0,
  "source_url": "..."
}
순번오류 코드발생 조건
AUTH_REQUIRED세션 없음 — 로그인 세션이 없습니다. 로그인을 먼저 호출합니다.
PROVIDER_AUTH_FAILED인증 만료 — 인증이 만료됐습니다. 로그인을 다시 호출합니다.
PROVIDER_UPSTREAM_ERROR업스트림 오류 — 기관 응답이 지연되거나 형식이 올바르지 않습니다. 잠시 후 다시 호출합니다.
PROVIDER_VALIDATION_ERROR검증 오류 — 보낸 파라미터 값을 기관이 거부했습니다. 값을 확인합니다.

7. 증명서 신청이력 PDF 다운로드fourinsure.b1.certificate.history.pdf_download

POSThttps://api.xdata.kr/v1/jobsX-Env-Scope: sandbox

샌드박스입니다. 실제 기관을 호출하지 않는 모의 응답이며 일일 한도가 없습니다.

4대보험 EDI 증명서 신청이력 PDF 다운로드 업무를 위해 출력할 수 있는 증명서 신청 건의 PDF를 내려받습니다.

  • 로그인을 먼저 호출해 세션을 만든 뒤, 같은 account_link_id 로 호출합니다. [4대보험 로그인]
  • sandbox 환경에서는 실제 기관에 접속하지 않습니다. result.data 에는 mock: true 와 보낸 params 를 그대로 담은 params_echo 가 오고, 업무 응답 필드는 오지 않습니다.
  • 기본은 dry_run=true 로 대상만 확인합니다. 실제로 받으려면 dry_run 을 false, confirm_download 를 true 로 보냅니다.
Request
순번변수명필수설명
AuthorizationYAPI 자격증명입니다. client_id 와 client_secret 을 콜론으로 이어 Base64 로 인코딩해 보냅니다.

형식 : Basic base64("{client_id}:{client_secret}")

[참고] 인증

X-Env-ScopeY호출 환경입니다.
  • sandbox샌드박스 — 모의 응답
  • real_test데모 — 하루 100 사용 토큰
  • production정식 — 유료 플랜 전용

[참고] 환경

Idempotency-KeyY재시도 식별 키입니다. 같은 키와 같은 본문으로 다시 호출하면 기존 작업이 그대로 반환됩니다. ASCII 문자만 사용하며 UUID v4 를 권장합니다. 고객 정보는 넣지 않습니다.

[참고] 재시도

Content-TypeY요청 본문 형식입니다.
  • application/json고정값 (기본값)
X-Trace-IdN추적 아이디입니다. 지정하지 않으면 서버가 발급합니다.
순번변수명타입길이필수설명
providerstring-Y호출할 기관입니다.
  • fourinsure이 API 고정값 (기본값)

예시 : fourinsure

actionstring-Y호출할 작업입니다.
  • fourinsure.b1.certificate.history.pdf_download이 API 고정값 (기본값)

예시 : fourinsure.b1.certificate.history.pdf_download

account_link_idstring36조건부등록한 자격증명을 가리키는 아이디입니다. 생략하면 이 계정이 그 기관에 등록한 자격증명 중 대표로 지정한 것이 쓰입니다. 대표가 없으면 등록한 자격증명이 하나뿐일 때만 자동으로 선택되고, 둘 이상이면 직접 지정해야 합니다.

형식 : UUID v4

[참고] 자격증명 등록

paramsobject-Y작업 파라미터입니다. 아래 params 파라미터 표의 필수 항목을 채워 보냅니다.
encrypted_fieldsobject-N민감한 params 값을 RSA-OAEP-256 으로 암호화해 담는 객체입니다. 서버가 복호화해 params 에 합칩니다. 같은 이름을 params 와 함께 쓰지 않습니다.

[참고] 암호화

순번변수명타입필수설명
cvrc_nostringN대상 민원번호 cvrcNo. 미입력 시 download_all_available로 목록에서 선택
group_cvrc_nostringN그룹 민원번호 groupCvrcNo. 기본 ""
download_all_availablebooleanNtrue면 출력가능 전체 행 대상. cvrc_no 미지정 시 사용
confirm_downloadbooleanNtrue일 때만 MarkAny PDF export 수행. dry_run=false 시 필수
dry_runbooleanNtrue면 PDF export 없이 대상·payload만 검증. 기본 true
mark_printedbooleanNPDF export 후 updateCerfIssuAjax 출력 처리 여부
include_pdf_base64booleanN응답에 pdf_base64 포함 여부
pdf_file_namestringN저장 파일명 힌트 (pdfFileNm)
pdf_file_passwordstringNPDF 파일 비밀번호 (pdfFilePw)
bash
curl --request POST \
  --url 'https://api.xdata.kr/v1/jobs' \
  --header 'Authorization: Basic {base64(client_id:client_secret)}' \
  --header 'X-Env-Scope: sandbox' \
  --header 'Idempotency-Key: demo-pdf_download-001' \
  --header 'Content-Type: application/json' \
  --data '{
  "provider": "fourinsure",
  "action": "fourinsure.b1.certificate.history.pdf_download",
  "account_link_id": "9b4c3a2f-0000-4000-8000-000000000000",
  "params": {}
}'
Response
  • result.data 의 downloaded_count 와 items(행마다 downloaded · pdf_base64)로 결과를 확인합니다. dry_run 이 true 면 대상만 확인한 결과입니다.
순번변수명설명
success요청 처리 성공 여부
dry_rundry-run 모드 여부
confirm_download다운로드 확인 플래그
requested_count요청 건수
downloaded_count다운로드 완료 건수
succeeded_countsucceeded_count 필드
failed_countfailed_count 필드
items조회 결과 행 배열
source_url업스트림 요청 URL
json
// result.data
{
  "success": true,
  "dry_run": false,
  "confirm_download": false,
  "requested_count": 1,
  "downloaded_count": 1,
  "items": [
    {
      "row_index": 0,
      "row_key": "..."
    }
  ],
  "source_url": "..."
}
순번오류 코드발생 조건
AUTH_REQUIRED세션 없음 — 로그인 세션이 없습니다. 로그인을 먼저 호출합니다.
PROVIDER_AUTH_FAILED인증 만료 — 인증이 만료됐습니다. 로그인을 다시 호출합니다.
PROVIDER_UPSTREAM_ERROR업스트림 오류 — 기관 응답이 지연되거나 형식이 올바르지 않습니다. 잠시 후 다시 호출합니다.
PROVIDER_VALIDATION_ERROR검증 오류 — 보낸 파라미터 값을 기관이 거부했습니다. 값을 확인합니다.

8. 증명서 발급사실 확인fourinsure.b1.certificate.issue_fact.confirm

POSThttps://api.xdata.kr/v1/jobsX-Env-Scope: sandbox

샌드박스입니다. 실제 기관을 호출하지 않는 모의 응답이며 일일 한도가 없습니다.

4대보험 EDI 증명서 발급사실 확인 업무를 위해 발급번호와 가입종류 등으로 증명서 발급 사실을 확인합니다.

  • 로그인을 먼저 호출해 세션을 만든 뒤, 같은 account_link_id 로 호출합니다. [4대보험 로그인]
  • sandbox 환경에서는 실제 기관에 접속하지 않습니다. result.data 에는 mock: true 와 보낸 params 를 그대로 담은 params_echo 가 오고, 업무 응답 필드는 오지 않습니다.
Request
순번변수명필수설명
AuthorizationYAPI 자격증명입니다. client_id 와 client_secret 을 콜론으로 이어 Base64 로 인코딩해 보냅니다.

형식 : Basic base64("{client_id}:{client_secret}")

[참고] 인증

X-Env-ScopeY호출 환경입니다.
  • sandbox샌드박스 — 모의 응답
  • real_test데모 — 하루 100 사용 토큰
  • production정식 — 유료 플랜 전용

[참고] 환경

Idempotency-KeyY재시도 식별 키입니다. 같은 키와 같은 본문으로 다시 호출하면 기존 작업이 그대로 반환됩니다. ASCII 문자만 사용하며 UUID v4 를 권장합니다. 고객 정보는 넣지 않습니다.

[참고] 재시도

Content-TypeY요청 본문 형식입니다.
  • application/json고정값 (기본값)
X-Trace-IdN추적 아이디입니다. 지정하지 않으면 서버가 발급합니다.
순번변수명타입길이필수설명
providerstring-Y호출할 기관입니다.
  • fourinsure이 API 고정값 (기본값)

예시 : fourinsure

actionstring-Y호출할 작업입니다.
  • fourinsure.b1.certificate.issue_fact.confirm이 API 고정값 (기본값)

예시 : fourinsure.b1.certificate.issue_fact.confirm

account_link_idstring36조건부등록한 자격증명을 가리키는 아이디입니다. 생략하면 이 계정이 그 기관에 등록한 자격증명 중 대표로 지정한 것이 쓰입니다. 대표가 없으면 등록한 자격증명이 하나뿐일 때만 자동으로 선택되고, 둘 이상이면 직접 지정해야 합니다.

형식 : UUID v4

[참고] 자격증명 등록

paramsobject-Y작업 파라미터입니다. 아래 params 파라미터 표의 필수 항목을 채워 보냅니다.
encrypted_fieldsobject-N민감한 params 값을 RSA-OAEP-256 으로 암호화해 담는 객체입니다. 서버가 복호화해 params 에 합칩니다. 같은 이름을 params 와 함께 쓰지 않습니다.

[참고] 암호화

순번변수명타입필수설명
join_kind_cdstringY증명서 종류 joinKindCd. 0/2/3=사업장( bpmno 필수), 1=가입자( idnty_nm·frnt_rrno 필수)
issu_nostringY발급번호 issuNo (숫자만 추출)
bpmnostringN사업장관리번호 11자리. join_kind_cd 0/2/3 시 필수
idnty_nmstringN가입자 성명. join_kind_cd 1 시 필수
frnt_rrnostringN주민번호 앞 6자리. join_kind_cd 1 시 필수
bash
curl --request POST \
  --url 'https://api.xdata.kr/v1/jobs' \
  --header 'Authorization: Basic {base64(client_id:client_secret)}' \
  --header 'X-Env-Scope: sandbox' \
  --header 'Idempotency-Key: demo-confirm-001' \
  --header 'Content-Type: application/json' \
  --data '{
  "provider": "fourinsure",
  "action": "fourinsure.b1.certificate.issue_fact.confirm",
  "account_link_id": "9b4c3a2f-0000-4000-8000-000000000000",
  "params": {
    "join_kind_cd": "<필수>",
    "issu_no": "<필수>"
  }
}'
Response
  • result.data 의 verified 로 발급 사실이 확인됐는지 봅니다. 판정 내용은 status_code 와 message 에 담깁니다.
순번변수명설명
success요청 처리 성공 여부
verified발급사실 검증 결과
status_code상태 코드
requested_join_kind_cd요청 가입종류 코드
submitted_join_kind_cd제출 가입종류 코드
input_mode입력 모드
document_type문서 유형
title화면/결과 제목
message결과 메시지
issu_no발급번호
bpmno사업장관리번호
issued_date발급일
issued_date_text발급일 표시 텍스트
issuer발급 기관
submitted_payload제출 payload 맵
csrf_token_presentCSRF 토큰 존재 여부
raw_html_len원본 HTML 길이
source_url업스트림 요청 URL
json
// result.data
{
  "success": true,
  "verified": true,
  "status_code": "...",
  "requested_join_kind_cd": "...",
  "submitted_join_kind_cd": "...",
  "input_mode": "...",
  "document_type": "...",
  "title": "...",
  "message": "...",
  "issu_no": "...",
  "bpmno": "...",
  "issued_date": "2026-06-15",
  "issued_date_text": "2026-06-15",
  "issuer": "...",
  "submitted_payload": {},
  "csrf_token_present": true,
  "raw_html_len": 0,
  "source_url": "..."
}
순번오류 코드발생 조건
AUTH_REQUIRED세션 없음 — 로그인 세션이 없습니다. 로그인을 먼저 호출합니다.
PROVIDER_AUTH_FAILED인증 만료 — 인증이 만료됐습니다. 로그인을 다시 호출합니다.
PROVIDER_UPSTREAM_ERROR업스트림 오류 — 기관 응답이 지연되거나 형식이 올바르지 않습니다. 잠시 후 다시 호출합니다.
PROVIDER_VALIDATION_ERROR검증 오류 — 보낸 파라미터 값을 기관이 거부했습니다. 값을 확인합니다.