32 lines
1.3 KiB
Markdown
32 lines
1.3 KiB
Markdown
# API 계약(1차)
|
|
|
|
## 공개 API
|
|
- `GET /api/public/route-by-host`
|
|
- Query: `host`, `path`
|
|
- Response:
|
|
- `status`: `ok | not_found`
|
|
- `page`: block json
|
|
- `campaignId`, `pageId`, `routeId`
|
|
- `POST /api/public/lead`
|
|
- Body: `campaignId`, `pageId`, `routeId`, `payload`, `sourceMeta`
|
|
|
|
## 관리자 API
|
|
- 인증: `POST /api/admin/auth/login` (현재는 역할 기반 데모 토큰 반환)
|
|
- 캠페인: `GET /api/admin/campaigns`, `POST /api/admin/campaigns`, `PUT /api/admin/campaigns/:id`
|
|
- 페이지: `GET /api/admin/pages`, `GET /api/admin/pages/:id`, `POST /api/admin/pages`, `PUT /api/admin/pages/:id`
|
|
- 라우트: `GET /api/admin/pages/:id/routes`, `POST /api/admin/pages/:id/routes`
|
|
- 조건: `GET /api/admin/pages/:id/conditions`, `POST /api/admin/pages/:id/conditions`, `PATCH /api/admin/pages/:id/conditions/:conditionId`, `DELETE /api/admin/pages/:id/conditions/:conditionId`
|
|
- 리드: `GET /api/admin/leads`
|
|
- 사용자: `GET /api/admin/users`, `POST /api/admin/users`, `PUT /api/admin/users/:id/role`
|
|
|
|
## 역할/권한(1차)
|
|
- 헤더: `x-user-role`
|
|
- 값: `ADMIN`, `LEAD_MANAGER`
|
|
- `ADMIN`: 관리자 API 전체 사용
|
|
- `LEAD_MANAGER`: 리드 조회(`/api/admin/leads`)만 사용
|
|
|
|
## 공통 에러
|
|
- 401 `{ error: "unauthorized" }`
|
|
- 403 `{ error: "forbidden" }`
|
|
- 422 `{ error: "validation", details: [...] }`
|