인증키 등록

참가기관의 인증키(ECDH-ES P-256 public Key)를 등록한다.

보안통신흐름

인증키 등록 API는 POST 메소드로 호출되며, 상세 스펙 및 호출 예제는 아래와 같습니다.

요청메시지 URL
요청메시지 URL 표
HTTP URL/api/oris/v1/agencies/{agencyId}/keys
HTTP MethodPOST
Content-Typeapplication/json; charset=UTF-8
요청 메시지 명세
요청 메시지 명세
HTTP항목TYPE(길이)필수설명
HeaderAuthorizationstringYBearer <access_token>로그인 시
ORIS로부터 전송받은
access_token을
HTTP Header에 추가
[scope = inquiry]
Parameter[inpath] agencyIdstring(26)Y01JPPEG5B48T1JFNJ895GHJZRZ참가기관ID
Bodyname

string(100)

Y

JOYBANK APP

인증키명
description

string(500)

N

JOYBANK APP 용 키

인증키 설명
groupId

string(26)

Y

01JPPG03TG5Z3KACP6J4QJD9EW

인증기 권한그룹ID
publicKey

string(500)

Y

MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtnlAnFr4Slawu4KMooodeJQVVcx+2PvkpNwNCLY+QY4SY/aVcukwehZpCEIlNte5InXjkU772t6v6khJxOlsqg==

공개키
요청 메시지 형태
{
  "name": "JOYBANK APP",
  "description": "JOYBANK APP 용 키",
  "groupId": "01JPPG03TG5Z3KACP6J4QJD9EW",
  "publicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtnlAnFr4Slawu4KMooodeJQVVcx+2PvkpNwNCLY+QY4SY/aVcukwehZpCEIlNte5InXjkU772t6v6khJxOlsqg=="
}
응답 메시지 명세
요청 메시지 명세
HTTP항목TYPE(길이)필수설명
Bodyid

string(26)

Y

01JR9GT449XP12S4C2A9K0BB8C

인증키ID
name

string

Y

JOYBANK APP

인증키명
description

string

N

JOYBANK APP 용 키

인증키 설명
group

object

Y

-

인증키 권한 그룹
group.id

string(26)

Y

01JPPEG5B48T1JFNJ895GHJZRZ

인증키 권한 그룹ID
group.name

string(100)

Y

ADMIN

인증키 권한 그룹명
publicKey

string(500)

Y

MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtnlAnFr4Slawu4KMooodeJQVVcx+2PvkpNwNCLY+QY4SY/aVcukwehZpCEIlNte5InXjkU772t6v6khJxOlsqg==

공개키
status

string("ACTIVE" | "INACTIVE")

Y

true

인증키 활성화 여부
validUntil

string(date-time)

Y

2026-06-30T18:02:56.303340+09:00

인증키 유효 일시
createdAt

string(date-time)

Y

2025-06-30T18:02:56.303340+09:00

생성일시
modifiedAt

string(date-time)

Y

2025-06-30T18:02:56.303340+09:00

수정일시
응답 메시지 형태
{
  "id": "01JR9GT449XP12S4C2A9K0BB8C",
  "name": "JOYBANK APP",
  "description": "JOYBANK APP 용 키",
  "group": {
    "id": "01JPPEG5B48T1JFNJ895GHJZRZ",
    "name": "ADMIN"
  },
  "publicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtnlAnFr4Slawu4KMooodeJQVVcx+2PvkpNwNCLY+QY4SY/aVcukwehZpCEIlNte5InXjkU772t6v6khJxOlsqg==",
  "status": "true",
  "validUntil": "2026-06-30T18:02:56.303340+09:00",
  "createdAt": "2025-06-30T18:02:56.303340+09:00",
  "modifiedAt": "2025-06-30T18:02:56.303340+09:00"
}
에러인 경우 응답 메시지 명세
요청 메시지 명세
HTTP항목TYPE(길이)필수설명
Bodymessage

string

N

요청에 실패했습니다.

오류 메시지
code

string("ERROR" | "BAD_REQUEST" | "INVALID_REQUEST" | "UNAUTHORIZED" | "FORBIDDEN" | "ACCESS_TOKEN_REQUIRED" | "ACCESS_TOKEN_EXPIRED" | "ACCESS_TOKEN_INVALID" | "ACCESS_TOKEN_NOT_ENOUGH_PERMISSION" | "AGENCY_NOT_FOUND" | "AGENCY_NOT_ACTIVE" | "AGENCY_NOT_APPROVED" | "AGENCY_NOT_MATCH" | "AGENCY_ACCESS_DENIED" | "AGENCY_CODE_DUPLICATED" | "MEMBER_NOT_FOUND" | "MEMBER_NOT_ACTIVE" | "MEMBER_NOT_MATCH" | "MEMBER_PASSWORD_NOT_MATCH" | "MEMBER_EMAIL_DUPLICATED" | "MEMBER_PASSWORD_RESET" | "MEMBER_PASSWORD_RESET_WITH_OLD" | "MEMBER_PASSWORD_INVALID_FORMAT" | "MEMBER_PASSWORD_FAIL_LIMIT_EXCEEDED" | "MEMBER_PASSWORD_EXPIRED" | "MEMBER_ACCOUNT_LOCKED" | "MEMBER_PASSWORD_REUSED" | "MEMBER_ACCESS_DENIED" | "API_KEY_NOT_FOUND" | "USER_NOT_FOUND" | "USER_NOT_ACTIVE" | "ACCOUNT_NOT_FOUND" | "REMITTANCE_NOT_FOUND" | "REMITTANCE_ALREADY_EXISTS" | "REMITTANCE_ALREADY_CANCELED" | "REMITTANCE_ACCOUNT_YEAR_MISMATCH" | "THREAD_NOT_FOUND" | "THREAD_ACCESS_DENIED" | "POST_NOT_FOUND" | "POST_ACCESS_DENIED" | "COMMENT_NOT_FOUND" | "COMMENT_ACCESS_DENIED" | "FILE_NOT_FOUND" | "FILE_ACCESS_DENIED" | "FILE_ALREADY_ATTACHED" | "FILE_DELETE_FAILED" | "TERM_NOT_FOUND" | "TERM_CANNOT_UPDATE" | "TERM_CANNOT_DELETE" | "TERM_CANNOT_SET_INITIATION_DATE" | "TERM_CANNOT_WITHDRAW_INITIATION_DATE" | "TERM_TYPE_NOT_FOUND" | "CONSENT_REQUIRED" | "CONSENT_NOT_FOUND" | "CONSENT_NOT_MATCH" | "GROUP_NOT_FOUND" | "GROUP_UPDATE_FORBIDDEN" | "GROUP_DELETE_FORBIDDEN" | "BATCH_NOT_FOUND" | "BATCH_CHUNK_NOT_FOUND")

N

ERROR

오류 코드
요청값이 제약 조건에 위반되는 경우 응답 메시지 형태(400)
{
  "code": "BAD_REQUEST",
  "message": "Failed to convert value of type 'java.lang.String' to required type 'java.lang.Boolean'"
}
메소드 인자 타입이 일치하지 않는 경우 응답 메시지 형태(400)
{
  "code": "BAD_REQUEST",
  "message": "Failed to convert value of type 'java.lang.String' to required type 'java.lang.Boolean'"
}
메소드 인자 검증 실패한 경우 응답 메시지 형태(400)
{
  "code": "BAD_REQUEST",
  "message": "Validation failed for argument at index 0 in method"
}
json 형식이 잘못된 경우 응답 메시지 형태(400)
{
  "code": "BAD_REQUEST",
  "message": "Malformed JSON request"
}
요청값이 잘못된 경우 응답 메시지 형태(400)
{
  "code": "BAD_REQUEST",
  "message": "Invalid argument"
}
인증 정보가 없는 경우 응답 메시지 형태(401)
{
  "code": "ACCESS_TOKEN_REQUIRED",
  "message": "Access token is required for authentication."
}
토큰 유효하지 않은 경우 (서명 검증 실패) 응답 메시지 형태(401)
{
  "code": "ACCESS_TOKEN_INVALID",
  "message": "Invalid access token signature."
}
개인정보보호서약서 동의가 필요한 경우 응답 메시지 형태(403)
{
  "code": "CONSENT_REQUIRED",
  "message": "Consent is required for 개인정보보호서약서",
  "missingConsentType": "개인정보보호서약서"
}
권한이 없는 경우 응답 메시지 형태(403)