Admin Business API
관리자 기업 관리 API (기업 승인 corpAuth)
Admin Business API
관리자 기업 관리 API입니다. 어드민 기업 승인 화면(corpAuth)이 사용합니다.
Base URL: /ai/admin/businesses
이 API는 관리자 권한(ROLE_ADMIN)이 필요합니다. Authorization: Bearer {admin_access_token}
기업 승인 목록·계약서·승인 상태 변경·재작성 요청 API는 기존 node-server(/api/v2/admin/*)에서 이전되었습니다. 이메일 발송은 node-server에 위임합니다.
엔드포인트 목록
| 메서드 | 경로 | 설명 |
|---|---|---|
GET | /ai/admin/businesses | 기업 승인 목록 조회 |
GET | /ai/admin/businesses/search | 기업명으로 기업 검색 |
GET | /ai/admin/businesses/{businessId}/contracts | 특정 기업 계약서 목록 |
PATCH | /ai/admin/businesses/{memberId}/auth | 기업 승인 상태 변경 (승인/반려) |
POST | /ai/admin/businesses/rewrite-request | 계약서 재작성 요청 이메일 발송 |
API 상세
기업 승인 목록 조회
기업 승인 화면용 목록입니다. 가입일 기준 정렬, 검색·국가·페이지네이션을 지원하며, 각 기업의 최신 계약 상태와 전체 계약서 목록을 함께 반환합니다.
HTTP 요청
GET /ai/admin/businesses?order={order}&page={page}&limit={limit}&search={search}&country={country}
Authorization: Bearer {access_token}Query Parameters
| 파라미터 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
order | string | 아니오 | desc | 가입일 정렬 방향 (asc | desc) |
page | integer | 아니오 | 1 | 페이지 번호 (1부터) |
limit | integer | 아니오 | 10 | 페이지당 개수 |
search | string | 아니오 | - | 검색어 (회원ID / 기업명 / 전화번호 부분일치) |
country | string | 아니오 | - | 국가 필터 (사업자등록증 국가코드) |
운영(prod) 환경에서는 내부·테스트·더미 계정이 목록에서 자동 제외됩니다. 비운영 환경에서는 전부 노출됩니다.
응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "기업 목록 조회 성공",
"data": {
"data": [
{
"auth": 2,
"country": "KR",
"license": "123-45-67890",
"licenseFile": "https://.../license.png",
"businessName": "글로우비 뷰티",
"address": "서울시 중구 청계천로 40 1302호",
"memberId": "business123",
"email": "contact@glowb.io",
"tel": "02-1234-5678",
"regiDate": "2025-06-01T10:00:00",
"contractStatus": "SIGNED",
"contractSignStatus": "SIGNED",
"state": false,
"businessContracts": [
{
"id": 1024,
"contractType": "STANDARD",
"status": "SIGNED",
"contractBusinessName": "글로우비 뷰티",
"contractLicense": "123-45-67890",
"finalPdfUrl": "https://.../contract.pdf",
"voidedPdfUrl": null,
"createdAt": "2025-06-02T09:00:00",
"signedAt": "2025-06-03T14:20:00",
"approvalStatus": "PENDING_APPROVAL",
"approvedBy": null,
"approvedAt": null,
"rejectionReason": null
}
]
}
],
"total": 132
}
}Response 스키마
data.data[] — 기업 목록 항목
| 필드명 | 타입 | 설명 |
|---|---|---|
auth | integer | 승인 상태값 (2:미승인, 3:승인완료, 5:반려, 1:MCN) |
country | string | 국가 (사업자등록증 국가) |
license | string | 사업자등록번호 |
licenseFile | string | 사업자등록증 파일 URL |
businessName | string | 기업명 |
address | string | 주소 (주소1 + 주소2) |
memberId | string | 회원 ID |
email | string | 이메일 |
tel | string | 연락처 |
regiDate | string | 가입일시 |
contractStatus | string | null | 최신 계약 상태 (PENDING|SENT|OPENED|FILLED|SIGNED|REJECTED) |
contractSignStatus | string | 서명 상태 (NONE|PENDING|SIGNED|EXCEPTION) |
state | boolean | 승인 완료(auth=3) 여부 |
businessContracts | array | 이 기업의 전체 계약서 목록 (최신순) |
data.total — 필터 조건에 맞는 전체 기업 수 (integer)
계약서 항목 스키마는 아래 특정 기업 계약서 목록 참고.
기업명으로 기업 검색
기업명 또는 회원 ID를 입력하면 해당하는 기업 목록을 반환합니다.
HTTP 요청
GET /ai/admin/businesses/search?businessName={businessName}
Authorization: Bearer {access_token}Query Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
businessName | string | 예 | 검색할 기업명 (또는 회원 ID) |
응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "기업 검색 성공",
"data": [
{
"memberId": "business123",
"businessName": "글로우비 뷰티",
"license": "123-45-67890",
"managerName": "홍길동",
"tel": "02-1234-5678",
"email": "contact@glowb.io"
}
]
}검색 결과가 없으면 message는 "검색 결과가 없습니다.", data는 [] 입니다.
Response 스키마 (AdminBusinessResponseDto)
| 필드명 | 타입 | 설명 |
|---|---|---|
memberId | string | 회원 ID |
businessName | string | 기업명 |
license | string | 사업자등록번호 |
managerName | string | 담당자명 |
tel | string | 연락처 |
email | string | 이메일 |
특정 기업 계약서 목록
businessId(회원 ID)로 해당 기업의 전체 계약서를 최신순으로 반환합니다.
HTTP 요청
GET /ai/admin/businesses/{businessId}/contracts
Authorization: Bearer {access_token}Path Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
businessId | string | 예 | 기업 회원 ID |
응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "기업 계약서 목록 조회 성공",
"data": [
{
"id": 1024,
"contractType": "STANDARD",
"status": "SIGNED",
"contractBusinessName": "글로우비 뷰티",
"contractLicense": "123-45-67890",
"finalPdfUrl": "https://.../contract.pdf",
"voidedPdfUrl": null,
"createdAt": "2025-06-02T09:00:00",
"signedAt": "2025-06-03T14:20:00",
"approvalStatus": "APPROVED",
"approvedBy": "admin01",
"approvedAt": "2025-06-04T11:00:00",
"rejectionReason": null
}
]
}없는 기업이거나 계약서가 없으면 data는 [] 입니다.
Response 스키마 (AdminBusinessContractItemDto)
| 필드명 | 타입 | 설명 |
|---|---|---|
id | integer | 계약서 ID |
contractType | string | 계약서 종류 (예: STANDARD) |
status | string | 계약 상태 (PENDING|SENT|OPENED|FILLED|SIGNED|REJECTED) |
contractBusinessName | string | null | 계약서상 기업명 |
contractLicense | string | null | 계약서상 사업자등록번호 |
finalPdfUrl | string | null | 최종 계약서 PDF URL |
voidedPdfUrl | string | null | 거절 시 VOID 워터마크 PDF URL |
createdAt | string | 생성일시 |
signedAt | string | null | 서명일시 |
approvalStatus | string | null | 검수 상태 (PENDING_APPROVAL|APPROVED|REJECTED) |
approvedBy | string | null | 승인/거절 처리 관리자 ID |
approvedAt | string | null | 승인/거절 처리 일시 |
rejectionReason | string | null | 거절 사유 |
기업 승인 상태 변경
기업 회원의 승인 상태(TB_MEMBER.auth)를 변경합니다. toggle은 미승인(2)↔승인완료(3)를 전환하고(그 외 상태는 미승인으로), reject는 반려(5)로 변경합니다.
HTTP 요청
PATCH /ai/admin/businesses/{memberId}/auth?action={action}¬ify={notify}
Authorization: Bearer {access_token}Path Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
memberId | string | 예 | 기업 회원 ID |
Query Parameters
| 파라미터 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
action | string | 예 | - | toggle(승인/미승인 전환) 또는 reject(반려) |
notify | boolean | 아니오 | true | 승인 완료 시 승인 이메일 발송 여부. false면 무발송 |
승인 이메일은 결과가 승인완료(auth=3) 로 전이될 때만, 그리고 notify=true일 때만 발송됩니다. 이메일 발송 실패는 승인 처리 자체를 되돌리지 않습니다.
응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "기업 승인 상태 변경 완료",
"data": true
}에러 응답
| 상태 코드 | 코드 | 설명 |
|---|---|---|
404 | BIZ_C007 | 기업 정보를 찾을 수 없음 |
계약서 재작성 요청 이메일 발송
기업에게 계약서 재작성 요청 이메일을 발송합니다. DB 변경은 없으며, 이메일 발송은 node-server에 위임합니다.
HTTP 요청
POST /ai/admin/businesses/rewrite-request
Authorization: Bearer {access_token}
Content-Type: application/jsonRequest Body
| 필드명 | 타입 | 필수 | 설명 |
|---|---|---|---|
memberId | string | 예 | 기업 회원 ID |
businessName | string | 아니오 | 기업명. 없으면 DB에서 조회 |
email | string | 아니오 | 수신 이메일. 없으면 DB에서 조회 |
{
"memberId": "business123",
"businessName": "글로우비 뷰티",
"email": "contact@glowb.io"
}응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "기업 계약서 재작성 요청 이메일 발송 성공",
"data": {
"success": true,
"email": "contact@glowb.io",
"messageId": "resend-message-id"
}
}사용 예시
# 기업 승인 목록 (2페이지, 국가 KR)
curl -X GET "https://api.glowb.io/ai/admin/businesses?page=2&limit=10&country=KR" \
-H "Authorization: Bearer {token}"
# 기업 승인 (이메일 발송)
curl -X PATCH "https://api.glowb.io/ai/admin/businesses/business123/auth?action=toggle¬ify=true" \
-H "Authorization: Bearer {token}"