D

project.updated

프로젝트가 생성·수정·삭제되면 발송됩니다. 세 종류 모두 이 하나의 이벤트로 전달되며, 종류는 old/newobject가 비었는지로 구분합니다.

봉투(id/event/timestamp/data)와 dataold/new {index, object} 구조는 페이로드 개요를 참고하세요. 이 페이지는 object 안에 담기는 프로젝트 필드만 다룹니다.

object 필드

필드타입nullable설명
project_idintegerXDataGSM 내부 프로젝트 식별자
namestringX프로젝트 이름
descriptionstringO프로젝트 설명
start_yearintegerX시작 연도
end_yearintegerO종료 연도 (진행 중이면 null)
statusstring(enum)X상태 (ACTIVE / ENDED)
clubobjectO소속 동아리 { club_id, name } (없으면 null)
participantsarray<object>X참여자 목록 [{ student_number, name }]

club{ club_id, name }, participants의 학생은 { student_number, name }만 담습니다.

status

의미
ACTIVE진행 중
ENDED종료

생성 · 수정 · 삭제 판별

종류old[i].objectnew[i].object
수정변경 전 프로젝트 정보변경 후 프로젝트 정보
생성{} (빈 객체)생성된 프로젝트 정보
삭제삭제 전 프로젝트 정보{} (빈 객체)

예시 A — 생성 (프로젝트 신규 등록)

old[i].object가 빈 {}이면 생성입니다.

{
  "id": "evt_d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9",
  "event": "project.updated",
  "timestamp": "2026-06-23T06:20:00.000Z",
  "data": {
    "old": [
      { "index": 0, "object": {} }
    ],
    "new": [
      { "index": 0, "object": {
        "project_id": 1, "name": "DataGSM", "description": "학교 정보 API",
        "start_year": 2025, "end_year": null, "status": "ACTIVE",
        "club": { "club_id": 1, "name": "더모먼트" },
        "participants": [ { "student_number": 2106, "name": "김부원" } ]
      } }
    ]
  }
}

old[0].object가 빈 {}이므로 생성. 생성된 정보는 new[0].object에서 확인합니다.

예시 B — 수정 (프로젝트 종료)

소속 동아리 해제, end_year 부여, 상태가 ENDED로 변경된 예시입니다.

{
  "id": "evt_e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
  "event": "project.updated",
  "timestamp": "2026-06-23T06:30:00.000Z",
  "data": {
    "old": [
      { "index": 0, "object": {
        "project_id": 3, "name": "구 포털", "description": "구 학사 포털",
        "start_year": 2023, "end_year": null, "status": "ACTIVE",
        "club": { "club_id": 1, "name": "더모먼트" },
        "participants": [ { "student_number": 2108, "name": "박참여" } ]
      } }
    ],
    "new": [
      { "index": 0, "object": {
        "project_id": 3, "name": "구 포털", "description": "구 학사 포털",
        "start_year": 2023, "end_year": 2025, "status": "ENDED",
        "club": null,
        "participants": [ { "student_number": 2108, "name": "박참여" } ]
      } }
    ]
  }
}

index 0old.object/new.object를 비교: end_year(null→2025), status(ACTIVE→ENDED), club(해제)이 변경됨.