Glowb Dev Docs
Admin API

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

파라미터타입필수기본값설명
orderstring아니오desc가입일 정렬 방향 (asc | desc)
pageinteger아니오1페이지 번호 (1부터)
limitinteger아니오10페이지당 개수
searchstring아니오-검색어 (회원ID / 기업명 / 전화번호 부분일치)
countrystring아니오-국가 필터 (사업자등록증 국가코드)

운영(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[] — 기업 목록 항목

필드명타입설명
authinteger승인 상태값 (2:미승인, 3:승인완료, 5:반려, 1:MCN)
countrystring국가 (사업자등록증 국가)
licensestring사업자등록번호
licenseFilestring사업자등록증 파일 URL
businessNamestring기업명
addressstring주소 (주소1 + 주소2)
memberIdstring회원 ID
emailstring이메일
telstring연락처
regiDatestring가입일시
contractStatusstring | null최신 계약 상태 (PENDING|SENT|OPENED|FILLED|SIGNED|REJECTED)
contractSignStatusstring서명 상태 (NONE|PENDING|SIGNED|EXCEPTION)
stateboolean승인 완료(auth=3) 여부
businessContractsarray이 기업의 전체 계약서 목록 (최신순)

data.total — 필터 조건에 맞는 전체 기업 수 (integer)

계약서 항목 스키마는 아래 특정 기업 계약서 목록 참고.


기업명으로 기업 검색

기업명 또는 회원 ID를 입력하면 해당하는 기업 목록을 반환합니다.

HTTP 요청

GET /ai/admin/businesses/search?businessName={businessName}
Authorization: Bearer {access_token}

Query Parameters

파라미터타입필수설명
businessNamestring검색할 기업명 (또는 회원 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)

필드명타입설명
memberIdstring회원 ID
businessNamestring기업명
licensestring사업자등록번호
managerNamestring담당자명
telstring연락처
emailstring이메일

특정 기업 계약서 목록

businessId(회원 ID)로 해당 기업의 전체 계약서를 최신순으로 반환합니다.

HTTP 요청

GET /ai/admin/businesses/{businessId}/contracts
Authorization: Bearer {access_token}

Path Parameters

파라미터타입필수설명
businessIdstring기업 회원 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)

필드명타입설명
idinteger계약서 ID
contractTypestring계약서 종류 (예: STANDARD)
statusstring계약 상태 (PENDING|SENT|OPENED|FILLED|SIGNED|REJECTED)
contractBusinessNamestring | null계약서상 기업명
contractLicensestring | null계약서상 사업자등록번호
finalPdfUrlstring | null최종 계약서 PDF URL
voidedPdfUrlstring | null거절 시 VOID 워터마크 PDF URL
createdAtstring생성일시
signedAtstring | null서명일시
approvalStatusstring | null검수 상태 (PENDING_APPROVAL|APPROVED|REJECTED)
approvedBystring | null승인/거절 처리 관리자 ID
approvedAtstring | null승인/거절 처리 일시
rejectionReasonstring | null거절 사유

기업 승인 상태 변경

기업 회원의 승인 상태(TB_MEMBER.auth)를 변경합니다. toggle은 미승인(2)↔승인완료(3)를 전환하고(그 외 상태는 미승인으로), reject는 반려(5)로 변경합니다.

HTTP 요청

PATCH /ai/admin/businesses/{memberId}/auth?action={action}&notify={notify}
Authorization: Bearer {access_token}

Path Parameters

파라미터타입필수설명
memberIdstring기업 회원 ID

Query Parameters

파라미터타입필수기본값설명
actionstring-toggle(승인/미승인 전환) 또는 reject(반려)
notifyboolean아니오true승인 완료 시 승인 이메일 발송 여부. false면 무발송

승인 이메일은 결과가 승인완료(auth=3) 로 전이될 때만, 그리고 notify=true일 때만 발송됩니다. 이메일 발송 실패는 승인 처리 자체를 되돌리지 않습니다.

응답

성공 응답 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "기업 승인 상태 변경 완료",
  "data": true
}

에러 응답

상태 코드코드설명
404BIZ_C007기업 정보를 찾을 수 없음

계약서 재작성 요청 이메일 발송

기업에게 계약서 재작성 요청 이메일을 발송합니다. DB 변경은 없으며, 이메일 발송은 node-server에 위임합니다.

HTTP 요청

POST /ai/admin/businesses/rewrite-request
Authorization: Bearer {access_token}
Content-Type: application/json

Request Body

필드명타입필수설명
memberIdstring기업 회원 ID
businessNamestring아니오기업명. 없으면 DB에서 조회
emailstring아니오수신 이메일. 없으면 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&notify=true" \
  -H "Authorization: Bearer {token}"

On this page