SaaS APIAgency API
PATCH /agency/me/clients/{id}
하위 기업 설정 변경 (가격 노출·알림 토글)
하위 기업 설정 변경
하위 기업(고객사)의 이름·이메일·계정 상태와 가격 노출 토글, 알림 라우팅 토글을 변경합니다. 에이전시 운영자가 자기 소속 고객사에 대해 호출하는 경로와, 글로우브 운영자(어드민)가 특정 에이전시의 고객사에 대해 호출하는 경로 두 가지가 있습니다.
| 항목 | 에이전시 셀프서비스 | 어드민 |
|---|---|---|
| 메서드 | PATCH | PATCH |
| 경로 | /agency/me/clients/{id} 또는 /ai/agency/me/clients/{id} | /admin/agency/{agencyId}/clients/{clientId} 또는 /ai/admin/agency/{agencyId}/clients/{clientId} |
| 인증 | 필요 | 필요 |
| 권한 | ROLE_AGENCY | ROLE_ADMIN |
| 대상 범위 | 호출자 본인 에이전시 소속 고객사만 | 경로의 agencyId 소속 고객사만 |
두 경로 모두 요청 바디와 응답 형식이 같습니다. 대상이 AGENCY_CLIENT가 아니거나 다른 에이전시 소속이면 거부됩니다.
요청
PATCH /agency/me/clients/client_brand_001 HTTP/1.1
Host: api.glowb.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Content-Type: application/json
{
"showPrice": false
}PATCH /admin/agency/demo/clients/client_brand_001 HTTP/1.1
Host: api.glowb.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Content-Type: application/json
{
"showPrice": false
}curl -X PATCH "https://api.glowb.com/agency/me/clients/client_brand_001" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"showPrice": false
}'const response = await fetch('/agency/me/clients/client_brand_001', {
method: 'PATCH',
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ showPrice: false }),
});
const client = await response.json();Request Body
모든 필드가 선택값입니다. 생략하거나 null로 보내면 기존 값을 그대로 둡니다(부분 수정).
Prop
Type
응답
성공 응답 (200 OK)
{
"id": "client_brand_001",
"name": "고객사A",
"email": "client@example.com",
"status": "active",
"creditBalance": 0,
"createdAt": "2026-08-19T10:00:00",
"notifyAdvertiser": true,
"notifyAgency": false,
"showPrice": false
}Response Body
Prop
Type
백엔드는 showPrice 값을 저장·반환만 합니다. 이 값에 따라 실제로 어떤 금액을 가릴지는 프론트에서 판단합니다.
에러 응답
| 상태 코드 | 설명 |
|---|---|
401 | 인증 실패 |
403 | 다른 에이전시 소속 고객사를 수정하려는 경우(셀프서비스 경로) |
400 | 고객사를 찾을 수 없거나 AGENCY_CLIENT가 아닌 경우 |
현재값 조회
토글 값은 설정하는 쪽(에이전시·어드민)과 적용받는 쪽(고객사 본인) 양쪽에서 읽을 수 있습니다.
| 메서드 | 경로 | 읽는 주체 | 필드 위치 |
|---|---|---|---|
GET | /agency/me/clients | 에이전시 | ClientDto.showPrice (고객사별) |
GET | /admin/agency/{agencyId}/clients | 어드민 | ClientDto.showPrice (고객사별) |
GET | /ai/business/info | 고객사 본인 | showPrice |
GET | /ai/progress-table/item/{campaignNo} | 고객사 본인 | showPrice |
/ai/business/info 와 /ai/progress-table/item/{campaignNo} 의 showPrice 는 호출자 기준입니다.
같은 캠페인이라도 에이전시나 어드민이 열면 true 로 내려갑니다 — 가격을 가리는 대상은 고객사이지 캠페인이 아니기 때문입니다.
일반(비에이전시) 기업도 항상 true 입니다.