forked from baron/baron-sso
1978 lines
46 KiB
YAML
1978 lines
46 KiB
YAML
openapi: 3.0.3
|
|
info:
|
|
title: Baron SSO API
|
|
version: "0.2.0"
|
|
description: |
|
|
Baron SSO Backend API 문서입니다.
|
|
이 문서는 Swagger UI/ReDoc 단일 엔드포인트에서 확인할 수 있으며,
|
|
도메인별 API 스펙은 점진적으로 확장합니다.
|
|
servers:
|
|
- url: /
|
|
description: 동일 호스트 기준
|
|
|
|
tags:
|
|
- name: System
|
|
description: 공통/헬스/문서
|
|
- name: Auth
|
|
description: 인증/세션/비밀번호/링크 로그인
|
|
- name: Signup
|
|
description: 회원가입/검증
|
|
- name: User
|
|
description: 사용자 프로필
|
|
- name: Session
|
|
description: 세션 관리(계획)
|
|
- name: Admin
|
|
description: 관리자 기능/테넌트
|
|
- name: Public
|
|
description: 인증 없이 외부에 노출되는 공개 API
|
|
- name: Integrations
|
|
description: API Key 기반 외부 연동 API
|
|
- name: Dev
|
|
description: RP/Consent 관리
|
|
- name: Audit
|
|
description: 감사 로그
|
|
- name: Webhook
|
|
description: 외부 게이트웨이 연동
|
|
|
|
paths:
|
|
/.well-known/baron-rp-manifest:
|
|
get:
|
|
tags: [Public]
|
|
summary: RP IAM Manifest HTML
|
|
description: 외부 RP가 Baron SSO/IAM 연동 정책을 사람이 읽을 수 있는 HTML로 확인합니다.
|
|
responses:
|
|
"200":
|
|
description: HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
|
|
/.well-known/baron-rp-manifest.json:
|
|
get:
|
|
tags: [Public]
|
|
summary: RP IAM Manifest JSON
|
|
description: 외부 RP가 Baron SSO/IAM 연동 정책을 machine-readable JSON으로 조회합니다.
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/RPManifestResponse"
|
|
|
|
/.well-known/baron-rp-manifest.schema.json:
|
|
get:
|
|
tags: [Public]
|
|
summary: RP IAM Manifest JSON Schema
|
|
description: RP IAM Manifest JSON의 JSON Schema를 조회합니다.
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: true
|
|
|
|
/health:
|
|
get:
|
|
tags: [System]
|
|
summary: 헬스 체크
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HealthResponse"
|
|
|
|
/openapi.yaml:
|
|
get:
|
|
tags: [System]
|
|
summary: OpenAPI YAML
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/yaml:
|
|
schema:
|
|
type: string
|
|
|
|
/docs:
|
|
get:
|
|
tags: [System]
|
|
summary: Swagger UI
|
|
responses:
|
|
"200":
|
|
description: HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
|
|
/redoc:
|
|
get:
|
|
tags: [System]
|
|
summary: ReDoc
|
|
responses:
|
|
"200":
|
|
description: HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
|
|
/api/v1/public/orgchart:
|
|
get:
|
|
tags: [Public]
|
|
summary: 공유 링크 조직도 조회
|
|
description: 공유 링크 token으로 공개 가능한 조직도 데이터를 조회합니다.
|
|
parameters:
|
|
- in: query
|
|
name: token
|
|
required: true
|
|
schema:
|
|
type: string
|
|
description: 조직도 공유 링크 token
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/PublicOrgChartResponse"
|
|
"401":
|
|
description: Unauthorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
|
|
/api/v1/tenants/registration:
|
|
post:
|
|
tags: [Public]
|
|
summary: 테넌트 등록 요청
|
|
description: 외부에서 테넌트 등록을 요청하고 승인 대기 상태로 생성합니다.
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TenantRegistrationRequest"
|
|
responses:
|
|
"202":
|
|
description: Accepted
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TenantRegistrationResponse"
|
|
"400":
|
|
description: Bad Request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
|
|
/api/v1/integrations/org-context:
|
|
get:
|
|
tags: [Integrations]
|
|
summary: 조직 Context 조회
|
|
description: |
|
|
외부 연동앱이 계정 세션 없이 API Key로 Baron SSO 조직 subtree를 조회합니다.
|
|
`tenantSlug`가 없으면 `hanmac-family` 전체 subtree를 반환하며, slug 기반 지정만 계약으로 지원합니다.
|
|
security:
|
|
- BaronApiKeyId: []
|
|
BaronApiKeySecret: []
|
|
parameters:
|
|
- in: query
|
|
name: tenantSlug
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: hanmac-family
|
|
description: 조회할 subtree root tenant slug
|
|
- in: query
|
|
name: includeUsers
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
default: true
|
|
description: false이면 users와 directUserIds를 비워 반환합니다.
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/OrgContextResponse"
|
|
"401":
|
|
description: Unauthorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
"403":
|
|
description: Forbidden
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
"404":
|
|
description: Tenant slug not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
|
|
/api/v1/auth/password/login:
|
|
post:
|
|
tags: [Auth]
|
|
summary: 비밀번호 로그인
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/PasswordLoginRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/PasswordLoginResponse"
|
|
"401":
|
|
description: Unauthorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
|
|
/api/v1/auth/password/reset/initiate:
|
|
post:
|
|
tags: [Auth]
|
|
summary: 비밀번호 재설정 시작
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/PasswordResetInitiateRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
|
|
/api/v1/auth/password/reset/verify:
|
|
get:
|
|
tags: [Auth]
|
|
summary: 비밀번호 재설정 토큰 확인 페이지
|
|
responses:
|
|
"200":
|
|
description: HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
post:
|
|
tags: [Auth]
|
|
summary: 비밀번호 재설정 토큰 처리
|
|
requestBody:
|
|
required: false
|
|
content:
|
|
application/x-www-form-urlencoded:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
token:
|
|
type: string
|
|
responses:
|
|
"302":
|
|
description: Redirect
|
|
|
|
/api/v1/auth/password/reset/complete:
|
|
post:
|
|
tags: [Auth]
|
|
summary: 비밀번호 재설정 완료
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/PasswordResetCompleteRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
|
|
/api/v1/auth/password/policy:
|
|
get:
|
|
tags: [Auth]
|
|
summary: 비밀번호 정책 조회
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/PasswordPolicyResponse"
|
|
|
|
/api/v1/auth/enchanted-link/init:
|
|
post:
|
|
tags: [Auth]
|
|
summary: Enchanted Link 시작
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EnchantedLinkInitRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EnchantedLinkInitResponse"
|
|
|
|
/api/v1/auth/enchanted-link/poll:
|
|
post:
|
|
tags: [Auth]
|
|
summary: Enchanted Link 폴링
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EnchantedLinkPollRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EnchantedLinkPollResponse"
|
|
|
|
/api/v1/auth/magic-link/verify:
|
|
post:
|
|
tags: [Auth]
|
|
summary: 매직 링크 검증
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MagicLinkVerifyRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MagicLinkVerifyResponse"
|
|
|
|
/api/v1/auth/sms:
|
|
post:
|
|
tags: [Auth]
|
|
summary: SMS 전송
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SmsSendRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
|
|
/api/v1/auth/verify-sms:
|
|
post:
|
|
tags: [Auth]
|
|
summary: SMS 인증 코드 검증
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SmsVerifyRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SmsVerifyResponse"
|
|
|
|
/api/v1/auth/qr/init:
|
|
post:
|
|
tags: [Auth]
|
|
summary: QR 로그인 세션 생성
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/QrInitResponse"
|
|
|
|
/api/v1/auth/qr/poll:
|
|
post:
|
|
tags: [Auth]
|
|
summary: QR 로그인 폴링
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/QrPollRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/QrPollResponse"
|
|
|
|
/api/v1/auth/qr/approve:
|
|
post:
|
|
tags: [Auth]
|
|
summary: QR 로그인 승인
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/QrApproveRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
|
|
/api/v1/auth/signup/check-email:
|
|
post:
|
|
tags: [Signup]
|
|
summary: 회원가입 이메일 확인
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SignupEmailCheckRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
|
|
/api/v1/auth/signup/send-email-code:
|
|
post:
|
|
tags: [Signup]
|
|
summary: 회원가입 이메일 코드 발송
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SignupEmailCodeRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
|
|
/api/v1/auth/signup/send-sms-code:
|
|
post:
|
|
tags: [Signup]
|
|
summary: 회원가입 SMS 코드 발송
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SignupSmsCodeRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
|
|
/api/v1/auth/signup/verify-code:
|
|
post:
|
|
tags: [Signup]
|
|
summary: 회원가입 코드 검증
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SignupVerifyCodeRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
|
|
/api/v1/auth/signup:
|
|
post:
|
|
tags: [Signup]
|
|
summary: 회원가입 완료
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SignupRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SignupResponse"
|
|
|
|
/api/v1/user/me:
|
|
get:
|
|
tags: [User]
|
|
summary: 내 프로필 조회
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/UserProfileResponse"
|
|
put:
|
|
tags: [User]
|
|
summary: 내 프로필 수정
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/UserProfileUpdateRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/UserProfileResponse"
|
|
|
|
/api/v1/user/me/send-code:
|
|
post:
|
|
tags: [User]
|
|
summary: 프로필 변경 인증코드 전송
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/UserProfileSendCodeRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
|
|
/api/v1/user/me/password:
|
|
post:
|
|
tags: [User]
|
|
summary: 비밀번호 변경
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/UserPasswordChangeRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
|
|
/api/v1/user/me/verify-code:
|
|
post:
|
|
tags: [User]
|
|
summary: 프로필 변경 인증코드 검증
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/UserProfileVerifyCodeRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
|
|
/api/v1/user/rp/linked:
|
|
get:
|
|
tags: [User]
|
|
summary: 연동된 RP 목록 조회
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/LinkedRpListResponse"
|
|
"401":
|
|
description: Unauthorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
|
|
/api/v1/sessions:
|
|
get:
|
|
tags: [Session]
|
|
summary: 세션 목록
|
|
description: 세션 관리 API는 계획 단계입니다.
|
|
x-status: planned
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SessionListResponse"
|
|
|
|
/api/v1/sessions/{id}:
|
|
get:
|
|
tags: [Session]
|
|
summary: 세션 상세
|
|
description: 세션 관리 API는 계획 단계입니다.
|
|
x-status: planned
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SessionDetailResponse"
|
|
delete:
|
|
tags: [Session]
|
|
summary: 세션 로그아웃(폐기)
|
|
description: 세션 관리 API는 계획 단계입니다.
|
|
x-status: planned
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"204":
|
|
description: No Content
|
|
|
|
/api/v1/sessions/logout-all:
|
|
post:
|
|
tags: [Session]
|
|
summary: 모든 세션 로그아웃
|
|
description: 세션 관리 API는 계획 단계입니다.
|
|
x-status: planned
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
|
|
/api/v1/admin/check:
|
|
get:
|
|
tags: [Admin]
|
|
summary: 관리자 인증 확인
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
"401":
|
|
description: Unauthorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
|
|
/api/v1/admin/tenants:
|
|
get:
|
|
tags: [Admin]
|
|
summary: 테넌트 목록
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TenantListResponse"
|
|
post:
|
|
tags: [Admin]
|
|
summary: 테넌트 생성
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TenantCreateRequest"
|
|
responses:
|
|
"201":
|
|
description: Created
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TenantResponse"
|
|
|
|
/api/v1/admin/tenants/export:
|
|
get:
|
|
tags: [Admin]
|
|
summary: 테넌트 CSV 내보내기
|
|
description: |
|
|
super admin 전용 CSV export입니다. `parentId`를 지정하면 해당 tenant의 모든 descendant를 leaf까지 포함해 내보냅니다.
|
|
parameters:
|
|
- in: query
|
|
name: includeIds
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
description: true이면 tenant_id와 parent_tenant_id 컬럼을 포함합니다.
|
|
- in: query
|
|
name: parentId
|
|
required: false
|
|
schema:
|
|
type: string
|
|
description: 하위 subtree를 내보낼 parent tenant ID
|
|
responses:
|
|
"200":
|
|
description: CSV
|
|
content:
|
|
text/csv:
|
|
schema:
|
|
type: string
|
|
"401":
|
|
description: Unauthorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
|
|
/api/v1/admin/tenants/{id}:
|
|
get:
|
|
tags: [Admin]
|
|
summary: 테넌트 상세
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TenantResponse"
|
|
put:
|
|
tags: [Admin]
|
|
summary: 테넌트 수정
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TenantUpdateRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TenantResponse"
|
|
delete:
|
|
tags: [Admin]
|
|
summary: 테넌트 삭제
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"204":
|
|
description: No Content
|
|
|
|
/api/v1/admin/api-keys:
|
|
get:
|
|
tags: [Admin]
|
|
summary: API Key 목록
|
|
description: super admin 전용 API Key 관리 화면에서 사용합니다.
|
|
parameters:
|
|
- in: query
|
|
name: limit
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
default: 50
|
|
- in: query
|
|
name: offset
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ApiKeyListResponse"
|
|
"401":
|
|
description: Unauthorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
post:
|
|
tags: [Admin]
|
|
summary: API Key 생성
|
|
description: super admin만 API Key를 생성할 수 있으며, clientSecret은 생성 응답에서 한 번만 반환됩니다.
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ApiKeyCreateRequest"
|
|
responses:
|
|
"201":
|
|
description: Created
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ApiKeyCreateResponse"
|
|
"400":
|
|
description: Bad Request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
|
|
/api/v1/admin/api-keys/{id}:
|
|
delete:
|
|
tags: [Admin]
|
|
summary: API Key 삭제
|
|
description: super admin 전용 API Key 삭제입니다.
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"204":
|
|
description: No Content
|
|
"401":
|
|
description: Unauthorized
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
|
|
/api/v1/dev/clients:
|
|
get:
|
|
tags: [Dev]
|
|
summary: RP 목록
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ClientListResponse"
|
|
post:
|
|
tags: [Dev]
|
|
summary: RP 생성
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ClientCreateRequest"
|
|
responses:
|
|
"201":
|
|
description: Created
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ClientDetailResponse"
|
|
|
|
/api/v1/dev/clients/{id}:
|
|
get:
|
|
tags: [Dev]
|
|
summary: RP 상세
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ClientDetailResponse"
|
|
put:
|
|
tags: [Dev]
|
|
summary: RP 수정
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ClientUpdateRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ClientDetailResponse"
|
|
delete:
|
|
tags: [Dev]
|
|
summary: RP 삭제
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"204":
|
|
description: No Content
|
|
|
|
/api/v1/dev/clients/{id}/status:
|
|
patch:
|
|
tags: [Dev]
|
|
summary: RP 상태 변경
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ClientStatusPatchRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ClientDetailResponse"
|
|
|
|
/api/v1/dev/consents:
|
|
get:
|
|
tags: [Dev]
|
|
summary: Consent 목록
|
|
parameters:
|
|
- in: query
|
|
name: subject
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: client_id
|
|
required: false
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ConsentListResponse"
|
|
delete:
|
|
tags: [Dev]
|
|
summary: Consent 회수
|
|
parameters:
|
|
- in: query
|
|
name: subject
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: client_id
|
|
required: false
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"204":
|
|
description: No Content
|
|
|
|
/api/v1/audit:
|
|
post:
|
|
tags: [Audit]
|
|
summary: 감사 로그 수집
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/AuditLogRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
|
|
/api/v1/client-log:
|
|
post:
|
|
tags: [Audit]
|
|
summary: 클라이언트 로그 수집
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ClientLogRequest"
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
|
|
components:
|
|
securitySchemes:
|
|
BaronApiKeyId:
|
|
type: apiKey
|
|
in: header
|
|
name: X-Baron-Key-ID
|
|
description: |
|
|
API Key client ID입니다. Swagger UI 우측 상단 `Authorize`에서 `X-Baron-Key-ID` 값으로 입력하면
|
|
API Key 인증이 필요한 요청의 header에 자동으로 포함됩니다.
|
|
BaronApiKeySecret:
|
|
type: apiKey
|
|
in: header
|
|
name: X-Baron-Key-Secret
|
|
description: |
|
|
API Key client secret입니다. Swagger UI 우측 상단 `Authorize`에서 `X-Baron-Key-Secret` 값으로 입력하면
|
|
API Key 인증이 필요한 요청의 header에 자동으로 포함됩니다.
|
|
|
|
schemas:
|
|
ErrorResponse:
|
|
type: object
|
|
properties:
|
|
error:
|
|
type: string
|
|
code:
|
|
type: string
|
|
details:
|
|
type: object
|
|
additionalProperties: true
|
|
|
|
MessageResponse:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
status:
|
|
type: string
|
|
|
|
HealthResponse:
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: string
|
|
checks:
|
|
type: object
|
|
|
|
RPManifestResponse:
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
version:
|
|
type: string
|
|
example: "2026-05-11"
|
|
issuer:
|
|
type: string
|
|
example: https://sso.hmac.kr
|
|
oidc:
|
|
type: object
|
|
additionalProperties: true
|
|
iam:
|
|
type: object
|
|
additionalProperties: true
|
|
identity_contract:
|
|
type: object
|
|
additionalProperties: true
|
|
trusted_headers:
|
|
type: object
|
|
additionalProperties: true
|
|
|
|
PublicOrgChartUser:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
position:
|
|
type: string
|
|
jobTitle:
|
|
type: string
|
|
companyCode:
|
|
type: string
|
|
status:
|
|
type: string
|
|
|
|
PublicOrgChartResponse:
|
|
type: object
|
|
properties:
|
|
tenants:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/TenantResponse"
|
|
users:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/PublicOrgChartUser"
|
|
sharedWith:
|
|
type: string
|
|
|
|
TenantRegistrationRequest:
|
|
type: object
|
|
required: [name, domain, adminEmail]
|
|
properties:
|
|
name:
|
|
type: string
|
|
slug:
|
|
type: string
|
|
description:
|
|
type: string
|
|
domain:
|
|
type: string
|
|
adminEmail:
|
|
type: string
|
|
format: email
|
|
|
|
TenantRegistrationResponse:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
tenant:
|
|
$ref: "#/components/schemas/TenantResponse"
|
|
|
|
OrgContextScope:
|
|
type: object
|
|
properties:
|
|
tenantId:
|
|
type: string
|
|
example: 01970f08-91da-7286-bd19-882fb98d1f2c
|
|
tenantSlug:
|
|
type: string
|
|
example: hanmac-family
|
|
|
|
OrgContextTenant:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
example: 01970f08-91da-7286-bd19-882fb98d1f2c
|
|
type:
|
|
type: string
|
|
example: COMPANY_GROUP
|
|
name:
|
|
type: string
|
|
example: 한맥가족
|
|
slug:
|
|
type: string
|
|
example: hanmac-family
|
|
parentId:
|
|
type: string
|
|
nullable: true
|
|
status:
|
|
type: string
|
|
example: active
|
|
description:
|
|
type: string
|
|
domains:
|
|
type: array
|
|
items:
|
|
type: string
|
|
memberCount:
|
|
type: integer
|
|
visibility:
|
|
type: string
|
|
example: public
|
|
orgUnitType:
|
|
type: string
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
updatedAt:
|
|
type: string
|
|
format: date-time
|
|
|
|
OrgContextTreeNode:
|
|
allOf:
|
|
- $ref: "#/components/schemas/OrgContextTenant"
|
|
- type: object
|
|
properties:
|
|
directUserIds:
|
|
type: array
|
|
items:
|
|
type: string
|
|
children:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/OrgContextTreeNode"
|
|
|
|
OrgContextUser:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
email:
|
|
type: string
|
|
format: email
|
|
name:
|
|
type: string
|
|
role:
|
|
type: string
|
|
status:
|
|
type: string
|
|
tenantIds:
|
|
type: array
|
|
items:
|
|
type: string
|
|
tenantSlugs:
|
|
type: array
|
|
items:
|
|
type: string
|
|
department:
|
|
type: string
|
|
grade:
|
|
type: string
|
|
position:
|
|
type: string
|
|
jobTitle:
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
additionalProperties: true
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
updatedAt:
|
|
type: string
|
|
format: date-time
|
|
|
|
OrgContextResponse:
|
|
type: object
|
|
properties:
|
|
schemaVersion:
|
|
type: string
|
|
example: baron.org-context.v1
|
|
issuedAt:
|
|
type: string
|
|
format: date-time
|
|
scope:
|
|
$ref: "#/components/schemas/OrgContextScope"
|
|
tree:
|
|
$ref: "#/components/schemas/OrgContextTreeNode"
|
|
tenants:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/OrgContextTenant"
|
|
users:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/OrgContextUser"
|
|
|
|
PasswordLoginRequest:
|
|
type: object
|
|
required: [loginId, password]
|
|
properties:
|
|
loginId:
|
|
type: string
|
|
password:
|
|
type: string
|
|
|
|
PasswordLoginResponse:
|
|
type: object
|
|
properties:
|
|
sessionJwt:
|
|
type: string
|
|
refreshJwt:
|
|
type: string
|
|
status:
|
|
type: string
|
|
provider:
|
|
type: string
|
|
subject:
|
|
type: string
|
|
|
|
PasswordResetInitiateRequest:
|
|
type: object
|
|
required: [loginId]
|
|
properties:
|
|
loginId:
|
|
type: string
|
|
|
|
PasswordResetCompleteRequest:
|
|
type: object
|
|
required: [newPassword]
|
|
properties:
|
|
newPassword:
|
|
type: string
|
|
|
|
PasswordPolicyResponse:
|
|
type: object
|
|
properties:
|
|
minLength:
|
|
type: integer
|
|
lowercase:
|
|
type: boolean
|
|
uppercase:
|
|
type: boolean
|
|
number:
|
|
type: boolean
|
|
nonAlphanumeric:
|
|
type: boolean
|
|
minCharacterTypes:
|
|
type: integer
|
|
|
|
EnchantedLinkInitRequest:
|
|
type: object
|
|
properties:
|
|
loginId:
|
|
type: string
|
|
uri:
|
|
type: string
|
|
method:
|
|
type: string
|
|
|
|
EnchantedLinkInitResponse:
|
|
type: object
|
|
properties:
|
|
linkId:
|
|
type: string
|
|
pendingRef:
|
|
type: string
|
|
maskedEmail:
|
|
type: string
|
|
expiresIn:
|
|
type: integer
|
|
|
|
EnchantedLinkPollRequest:
|
|
type: object
|
|
properties:
|
|
pendingRef:
|
|
type: string
|
|
|
|
EnchantedLinkPollResponse:
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: string
|
|
sessionJwt:
|
|
type: string
|
|
|
|
MagicLinkVerifyRequest:
|
|
type: object
|
|
properties:
|
|
token:
|
|
type: string
|
|
verifyOnly:
|
|
type: boolean
|
|
|
|
MagicLinkVerifyResponse:
|
|
type: object
|
|
properties:
|
|
token:
|
|
type: string
|
|
status:
|
|
type: string
|
|
pendingRef:
|
|
type: string
|
|
message:
|
|
type: string
|
|
|
|
SmsSendRequest:
|
|
type: object
|
|
properties:
|
|
phoneNumber:
|
|
type: string
|
|
|
|
SmsVerifyRequest:
|
|
type: object
|
|
properties:
|
|
phoneNumber:
|
|
type: string
|
|
code:
|
|
type: string
|
|
|
|
SmsVerifyResponse:
|
|
type: object
|
|
properties:
|
|
token:
|
|
type: string
|
|
message:
|
|
type: string
|
|
|
|
QrInitResponse:
|
|
type: object
|
|
properties:
|
|
qrCode:
|
|
type: string
|
|
pendingRef:
|
|
type: string
|
|
expiresIn:
|
|
type: integer
|
|
|
|
QrPollRequest:
|
|
type: object
|
|
properties:
|
|
pendingRef:
|
|
type: string
|
|
|
|
QrPollResponse:
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: string
|
|
sessionJwt:
|
|
type: string
|
|
|
|
QrApproveRequest:
|
|
type: object
|
|
properties:
|
|
pendingRef:
|
|
type: string
|
|
token:
|
|
type: string
|
|
|
|
SignupEmailCheckRequest:
|
|
type: object
|
|
properties:
|
|
email:
|
|
type: string
|
|
|
|
SignupEmailCodeRequest:
|
|
type: object
|
|
properties:
|
|
email:
|
|
type: string
|
|
|
|
SignupSmsCodeRequest:
|
|
type: object
|
|
properties:
|
|
phone:
|
|
type: string
|
|
|
|
SignupVerifyCodeRequest:
|
|
type: object
|
|
properties:
|
|
target:
|
|
type: string
|
|
code:
|
|
type: string
|
|
|
|
SignupRequest:
|
|
type: object
|
|
properties:
|
|
email:
|
|
type: string
|
|
phone:
|
|
type: string
|
|
name:
|
|
type: string
|
|
password:
|
|
type: string
|
|
department:
|
|
type: string
|
|
affiliationType:
|
|
type: string
|
|
companyCode:
|
|
type: string
|
|
|
|
SignupResponse:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
message:
|
|
type: string
|
|
provider:
|
|
type: string
|
|
subject:
|
|
type: string
|
|
|
|
UserProfileResponse:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
email:
|
|
type: string
|
|
name:
|
|
type: string
|
|
phone:
|
|
type: string
|
|
sessionAuthenticatedAt:
|
|
type: string
|
|
format: date-time
|
|
department:
|
|
type: string
|
|
affiliationType:
|
|
type: string
|
|
companyCode:
|
|
type: string
|
|
|
|
UserProfileUpdateRequest:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
phone:
|
|
type: string
|
|
department:
|
|
type: string
|
|
affiliationType:
|
|
type: string
|
|
companyCode:
|
|
type: string
|
|
|
|
UserPasswordChangeRequest:
|
|
type: object
|
|
properties:
|
|
currentPassword:
|
|
type: string
|
|
newPassword:
|
|
type: string
|
|
|
|
UserProfileSendCodeRequest:
|
|
type: object
|
|
properties:
|
|
phone:
|
|
type: string
|
|
|
|
UserProfileVerifyCodeRequest:
|
|
type: object
|
|
properties:
|
|
phone:
|
|
type: string
|
|
code:
|
|
type: string
|
|
|
|
LinkedRpSummary:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
logo:
|
|
type: string
|
|
url:
|
|
type: string
|
|
init_url:
|
|
type: string
|
|
auto_login_supported:
|
|
type: boolean
|
|
auto_login_url:
|
|
type: string
|
|
lastAuthenticatedAt:
|
|
type: string
|
|
status:
|
|
type: string
|
|
scopes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
|
|
LinkedRpListResponse:
|
|
type: object
|
|
properties:
|
|
items:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/LinkedRpSummary"
|
|
|
|
SessionSummary:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
issuedAt:
|
|
type: string
|
|
expiresAt:
|
|
type: string
|
|
device:
|
|
type: string
|
|
ip:
|
|
type: string
|
|
userAgent:
|
|
type: string
|
|
|
|
SessionListResponse:
|
|
type: object
|
|
properties:
|
|
items:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/SessionSummary"
|
|
|
|
SessionDetailResponse:
|
|
type: object
|
|
properties:
|
|
session:
|
|
$ref: "#/components/schemas/SessionSummary"
|
|
|
|
TenantResponse:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
slug:
|
|
type: string
|
|
description:
|
|
type: string
|
|
status:
|
|
type: string
|
|
createdAt:
|
|
type: string
|
|
updatedAt:
|
|
type: string
|
|
|
|
TenantListResponse:
|
|
type: object
|
|
properties:
|
|
items:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/TenantResponse"
|
|
limit:
|
|
type: integer
|
|
offset:
|
|
type: integer
|
|
total:
|
|
type: integer
|
|
|
|
TenantCreateRequest:
|
|
type: object
|
|
required: [name]
|
|
properties:
|
|
name:
|
|
type: string
|
|
slug:
|
|
type: string
|
|
description:
|
|
type: string
|
|
status:
|
|
type: string
|
|
|
|
TenantUpdateRequest:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
slug:
|
|
type: string
|
|
description:
|
|
type: string
|
|
status:
|
|
type: string
|
|
|
|
ApiKeySummary:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
client_id:
|
|
type: string
|
|
scopes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
example: [org-context:read]
|
|
status:
|
|
type: string
|
|
example: active
|
|
lastUsedAt:
|
|
type: string
|
|
nullable: true
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
|
|
ApiKeyListResponse:
|
|
type: object
|
|
properties:
|
|
items:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/ApiKeySummary"
|
|
total:
|
|
type: integer
|
|
|
|
ApiKeyCreateRequest:
|
|
type: object
|
|
required: [name]
|
|
properties:
|
|
name:
|
|
type: string
|
|
scopes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
example: [org-context:read]
|
|
|
|
ApiKeyCreateResponse:
|
|
type: object
|
|
properties:
|
|
apiKey:
|
|
$ref: "#/components/schemas/ApiKeySummary"
|
|
clientSecret:
|
|
type: string
|
|
description: 생성 시점에 한 번만 반환되는 plain secret
|
|
|
|
ClientSummary:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
status:
|
|
type: string
|
|
createdAt:
|
|
type: string
|
|
redirectUris:
|
|
type: array
|
|
items:
|
|
type: string
|
|
scopes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
additionalProperties: true
|
|
|
|
ClientListResponse:
|
|
type: object
|
|
properties:
|
|
items:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/ClientSummary"
|
|
limit:
|
|
type: integer
|
|
offset:
|
|
type: integer
|
|
|
|
ClientEndpoints:
|
|
type: object
|
|
properties:
|
|
discovery:
|
|
type: string
|
|
issuer:
|
|
type: string
|
|
authorization:
|
|
type: string
|
|
token:
|
|
type: string
|
|
userinfo:
|
|
type: string
|
|
|
|
ClientDetailResponse:
|
|
type: object
|
|
properties:
|
|
client:
|
|
$ref: "#/components/schemas/ClientSummary"
|
|
endpoints:
|
|
$ref: "#/components/schemas/ClientEndpoints"
|
|
|
|
ClientCreateRequest:
|
|
type: object
|
|
required: [redirectUris]
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
status:
|
|
type: string
|
|
redirectUris:
|
|
type: array
|
|
items:
|
|
type: string
|
|
scopes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
grantTypes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
responseTypes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
tokenEndpointAuthMethod:
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
additionalProperties: true
|
|
|
|
ClientUpdateRequest:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
status:
|
|
type: string
|
|
redirectUris:
|
|
type: array
|
|
items:
|
|
type: string
|
|
scopes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
grantTypes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
responseTypes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
tokenEndpointAuthMethod:
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
additionalProperties: true
|
|
|
|
ClientStatusPatchRequest:
|
|
type: object
|
|
required: [status]
|
|
properties:
|
|
status:
|
|
type: string
|
|
|
|
ConsentSummary:
|
|
type: object
|
|
properties:
|
|
subject:
|
|
type: string
|
|
clientId:
|
|
type: string
|
|
clientName:
|
|
type: string
|
|
grantedScopes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
authenticatedAt:
|
|
type: string
|
|
|
|
ConsentListResponse:
|
|
type: object
|
|
properties:
|
|
items:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/ConsentSummary"
|
|
|
|
AuditLogRequest:
|
|
type: object
|
|
properties:
|
|
service:
|
|
type: string
|
|
event:
|
|
type: string
|
|
payload:
|
|
type: object
|
|
additionalProperties: true
|
|
|
|
ClientLogRequest:
|
|
type: object
|
|
properties:
|
|
level:
|
|
type: string
|
|
message:
|
|
type: string
|
|
data:
|
|
type: object
|
|
additionalProperties: true
|