GET /api/v1/challenges/{challengeId}/notices
공지 목록. 고정 공지 1건이 최상단, 나머지는 최신순. 개수 상한이 없는 콘텐츠라 커서 페이지네이션으로 아카이브 전체를 열람할 수 있다(구 "최근 10건 상수" 폐기). 읽음 표시는 제공하지 않는다. 내가 차단한 작성자의 공지는 목록에서 빠진다. ACTIVE 멤버 전용.
| Column | Type | Description |
|---|---|---|
| challengeId (path) | String(UUID) | 챌린지 ID |
| cursor (query) / size (query) | String / Integer | 커서 · 기본 20 |
| Column | Type | Description |
|---|---|---|
| notices | Array<Object> | 고정 1건 + 최신순 |
| notices[].noticeId | String(UUID) | 공지 ID |
| notices[].title | String | 제목 |
| notices[].preview | String | 본문 미리보기 (80자) |
| notices[].pinned | Boolean | 고정 여부 |
| notices[].author | Object | { userId, nickname } |
| notices[].commentCount | Integer | 댓글 수 |
| notices[].createdAt | String | 작성 시각 |
| nextCursor | String / null | 다음 페이지 |
json
{"notices":[{"noticeId":"n_11","title":"이번 주 인증 시간 안내","preview":"다음 주 월요일부터 인증 시간이 6:00~7:00으로...","pinned":true,"author":{"userId":"U2","nickname":"이준혁"},"commentCount":5,"createdAt":"2026-07-21T09:00:00+09:00"}],
"nextCursor":null}
NOT_CHALLENGE_MEMBER / 404 CHALLENGE_NOT_FOUND / 401 LOGIN_REQUIRED