Glowb Dev Docs
Main API

Data Job API

AI 데이터 수집 배치 작업 API

Data Job API

인스타그램 추천 기반 데이터 수집 배치 작업 API입니다.

Base URL: /ai/data

이 API는 관리자/내부 시스템용입니다. Python 데이터 수집 서버와 연동됩니다.

인증 정보

항목
인증 필요
인증 방식JWT Bearer Token

엔드포인트 목록

메서드경로설명인증
POST/ai/data/admin/bulk-upload-creators크리에이터 일괄 업로드필요
POST/ai/data/jobs/start데이터 수집 배치 시작필요
POST/ai/data/jobs/notify배치 완료 콜백콜백 토큰
POST/ai/data/jobs/group-status그룹 진행 상태 조회필요

API 상세

크리에이터 일괄 업로드

크리에이터 데이터를 일괄 업로드합니다.

HTTP 요청

POST /ai/data/admin/bulk-upload-creators
Authorization: Bearer {access_token}

응답

성공 응답 (200 OK)

크리에이터 일괄 업로드 완료

데이터 수집 배치 시작

Python 서버에 장시간 배치 작업을 위임하고 완료 콜백을 설정합니다.

HTTP 요청

POST /ai/data/jobs/start
Authorization: Bearer {access_token}
Content-Type: application/json

Request Body

{
  "tags": ["#travel", "#korea"],
  "country": "KR",
  "category": "TRAVEL",
  "isAi": true,
  "minFollower": 5000,
  "priority": "high"
}

Request Body 스키마 (DataJobRequest)

필드명타입필수설명
tagsstring[]아니오검색 태그 목록 (예: ["#travel"])
countrystring아니오국가 코드 (예: KR)
categorystring아니오카테고리 (예: TRAVEL)
isAiboolean아니오AI 분석 여부. 기본값: true
minFollowerint아니오최소 팔로워 수 (예: 5000)
prioritystring아니오우선순위

응답

성공 응답 (200 OK)

{
  "umbrella_job_id": "abc123-def456",
  "group_id": "group-789xyz",
  "queue": "data-collection",
  "priority": "high",
  "callback_enabled": true
}

Response 스키마 (DataJobStartResponse)

필드명타입설명
umbrella_job_idstring상위 작업 ID
group_idstringPython 서버 반환 그룹 ID
queuestring대상 큐 이름
prioritystring우선순위
callback_enabledboolean콜백 활성화 여부

배치 완료 콜백

Python 서버가 작업 완료 후 호출하는 콜백입니다. 보안 토큰을 검증하고 알림 메일을 발송합니다.

이 엔드포인트는 Python 데이터 수집 서버가 호출합니다. 직접 호출하지 마세요.

HTTP 요청

POST /ai/data/jobs/notify
X-Callback-Token: {callback_token}
Content-Type: application/json

요청 헤더

헤더필수설명
X-Callback-Token아니오보안 검증용 콜백 토큰

Request Body

{
  "group_id": "group-789xyz",
  "status": "finished",
  "finished_at": 1705305600,
  "batches": 10,
  "success": 9,
  "failed": 1
}

Request Body 스키마 (DataJobCallback)

필드명타입필수설명
group_idstring그룹 ID
statusstring상태 (finished | failed)
finished_atlong아니오완료 시간 (Unix timestamp)
batchesint아니오총 배치 수
successint아니오성공한 배치 수
failedint아니오실패한 배치 수

응답

성공 응답 (200 OK)

(empty body)

그룹 진행 상태 조회

Python 서버의 /insta/data/group-status로 위임하여 진행 상태를 조회합니다.

HTTP 요청

POST /ai/data/jobs/group-status?group_id={group_id}
Authorization: Bearer {access_token}

Query Parameters

파라미터타입필수설명
group_idstring조회할 그룹 ID

응답

성공 응답 (200 OK)

{
  "group_id": "group-789xyz",
  "total": 100,
  "remaining": 25,
  "success": 70,
  "failed": 5,
  "progress": 0.75
}

Response 스키마 (DataJobGroupStatus)

필드명타입설명
group_idstring그룹 ID
totalint총 작업 수
remainingint남은 작업 수
successint성공한 작업 수
failedint실패한 작업 수
progressdouble진행률 (0~1, null 가능)

작업 흐름

1. 클라이언트 → POST /jobs/start → Spring 서버
2. Spring 서버 → Python 서버 (배치 작업 위임)
3. Python 서버 (데이터 수집 실행 중...)
4. 클라이언트 → POST /jobs/group-status → 진행 상태 확인
5. Python 서버 → POST /jobs/notify → Spring 서버 (완료 콜백)
6. Spring 서버 → 알림 메일 발송

사용 예시

배치 작업 시작

curl -X POST https://api.glowb.io/ai/data/jobs/start \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "tags": ["#beauty", "#skincare"],
    "country": "KR",
    "category": "BEAUTY",
    "minFollower": 10000
  }'

진행 상태 조회

curl -X POST "https://api.glowb.io/ai/data/jobs/group-status?group_id=group-789xyz" \
  -H "Authorization: Bearer {token}"

API 테스트

On this page