> For the complete documentation index, see [llms.txt](/llms.txt)

# GS2-Schedule 마스터 데이터 레퍼런스

마스터 데이터 포맷과 임포트할 각종 모델의 레퍼런스




## 마스터 데이터 포맷


**JSON**
```json
{
  "version": "2019-03-31",
  "events": [
    {
      "name": "[string]이벤트 이름",
      "metadata": "[string?]메타데이터",
      "scheduleType": "[문자열 열거형]스케줄 타입",
      "absoluteBegin": "[long?]절대 시작 일시",
      "absoluteEnd": "[long?]절대 종료 일시",
      "relativeTriggerName": "[string]이벤트 시작 트리거 이름",
      "repeatSetting": {
        "repeatType": "[string]반복 종류",
        "beginDayOfMonth": "[int]반복 시작일",
        "endDayOfMonth": "[int]반복 종료일",
        "beginDayOfWeek": "[string]반복 시작 요일",
        "endDayOfWeek": "[string]반복 종료 요일",
        "beginHour": "[int]반복 시작 시각(시)",
        "endHour": "[int]반복 종료 시각(시)",
        "anchorTimestamp": "[long]기준 타임스탬프",
        "activeDays": "[int]활성 일수",
        "inactiveDays": "[int]비활성 일수"
      }
    }
  ]
}
```


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| version | string | | ✓ | 2019-03-31 | | 마스터 데이터 포맷 버전 |
| events | [List&lt;Event&gt;](#event) |  |  |  |  ~ 100 items | 이벤트<br>이벤트의 기간에는 절대 기간과 상대 기간의 2가지 종류가 있습니다.<br>절대 기간은 예를 들어 YYYY년 MM월 DD일 00:00(UTC) ~ YYYY년 MM월 DD일 23:59(UTC)와 같은 고정된 기간이며,<br>상대 기간은 트리거를 당긴 시점부터 24시간과 같이 게임 플레이어마다 다른 기간을 이벤트 기간으로 하는 것입니다.<br><br>이벤트에는 개최 기간뿐만 아니라 반복도 설정할 수 있게 되어 있어<br>이벤트 기간 중 월요일 10:00 ~ 11:00만을 이벤트 기간으로 하는 설정도 가능합니다. |

## 모델

### Event

이벤트<br>

이벤트의 기간에는 절대 기간과 상대 기간의 2가지 종류가 있습니다.<br>
절대 기간은 예를 들어 YYYY년 MM월 DD일 00:00(UTC) ~ YYYY년 MM월 DD일 23:59(UTC)와 같은 고정된 기간이며,<br>
상대 기간은 트리거를 당긴 시점부터 24시간과 같이 게임 플레이어마다 다른 기간을 이벤트 기간으로 하는 것입니다.<br>

이벤트에는 개최 기간뿐만 아니라 반복도 설정할 수 있게 되어 있어<br>
이벤트 기간 중 월요일 10:00 ~ 11:00만을 이벤트 기간으로 하는 설정도 가능합니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| eventId | string |  | ※ |  |  ~ 1024자 | GS2-Schedule 이벤트 GRN<br>※ 서버가 자동으로 설정 |
| name | string |  | ✓ |  |  ~ 128자 | 이벤트 이름<br>이벤트 고유의 이름. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| metadata | string |  |  |  |  ~ 2048자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| scheduleType | 문자열 열거형<br>enum {<br>"absolute",<br>"relative"<br>}<br> |  | ✓ |  |  | 스케줄 타입<br>이벤트 기간을 정의하는 방식을 결정합니다.<br>"absolute"는 모든 플레이어에게 동일하게 적용되는 고정된 시작/종료 타임스탬프를 사용합니다.<br>"relative"는 플레이어별 트리거를 기점으로 사용하여, 개인화된 이벤트 기간을 구현합니다(예: 각 플레이어가 처음 로그인한 시점부터 24시간).absolute: 고정 기간 / relative: 플레이어별 기간 /  |
| absoluteBegin | long |  |  |  |  | 절대 시작 일시<br>절대 스케줄링에서 이벤트 기간의 고정 시작 시각입니다.<br>모든 플레이어가 동일한 시작 시각을 공유합니다. 절대 이벤트에서 설정하지 않으면 이벤트는 과거부터 시작된 것으로 취급됩니다.<br>UNIX 시간(밀리초)으로 표현됩니다. |
| absoluteEnd | long |  |  |  |  | 절대 종료 일시<br>절대 스케줄링에서 이벤트 기간의 고정 종료 시각입니다.<br>모든 플레이어가 동일한 종료 시각을 공유합니다. 절대 이벤트에서 설정하지 않으면 이벤트는 종료되지 않는 것으로 취급됩니다.<br>UNIX 시간(밀리초)으로 표현됩니다. |
| relativeTriggerName | string | {scheduleType} == "relative" | ✓※ |  |  ~ 128자 | 이벤트 시작 트리거 이름<br>게임 플레이어별로 이벤트 기간을 설정하는(`relative`) 경우, 이벤트 시작의 기점이 되는 트리거의 이름을 지정합니다.<br>영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다.<br>※ scheduleType이(가) "relative" 이면 필수 |
| repeatSetting | [RepeatSetting](#repeatsetting) |  | ✓ |  |  | 반복 설정<br>이벤트 기간 내에서 반복되는 유효 시간대에 대한 설정입니다.<br>활성 기간을 특정 시간대, 요일, 월중 날짜, 또는 사용자 지정 활성/비활성 일 주기로 좁힐 수 있습니다.<br>반복 패턴 없이 이벤트 기간 전체를 활성 상태로 유지하려면 repeatType을 "always"로 설정합니다. |

---

### RepeatSetting

반복 설정<br>

이벤트 전체 기간 내에서 반복되는 유효 시간대를 설정합니다.<br>
5가지 반복 타입을 지원합니다: "always"(이벤트 기간 전체), "daily"(매일 특정 시간대), "weekly"(매주 특정 요일 범위+시간대),<br>
"monthly"(매월 특정 날짜 범위+시간대), "custom"(기준일로부터 활성/비활성 일수의 교대 주기).<br>
daily/weekly/monthly 타입에서 beginHour와 endHour가 같으면 종료 시각은 다음 날 같은 시각으로 처리됩니다(즉 24시간 전체 윈도우).

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| repeatType | 문자열 열거형<br>enum {<br>"always",<br>"daily",<br>"weekly",<br>"monthly",<br>"custom"<br>}<br> |  |  | "always" |  | 반복 종류<br>이벤트 기간 내에 적용할 반복 패턴의 종류입니다.<br>타입에 따라 필요한 추가 필드가 다릅니다: daily/weekly/monthly는 시간 설정, weekly는 요일, monthly는 날짜, custom은 기준 타임스탬프와 일수가 필요합니다.<br>지정하지 않으면 기본값은 "always"입니다.always: 이벤트 기간 중 상시 유효 / daily: 이벤트 기간 중 매일 X시~X시 / weekly: 이벤트 기간 중 매주 개시 요일~종료 요일 X시~X시 / monthly: 이벤트 기간 중 매월 개시일~종료일 X시~X시 / custom: 기준일부터 시작하여, 이벤트 기간 중 X일 활성, Y일 비활성을 반복 /  |
| beginDayOfMonth | int | {repeatType} == "monthly" | ✓※ |  | 1 ~ 31 | 반복 시작일<br>반복 윈도우가 시작되는 월중 날짜(1~31)입니다.<br>지정한 값이 해당 월의 일수를 초과하는 경우, 해당 월의 마지막 날로 처리됩니다.<br>repeatType이 "monthly"인 경우에만 적용됩니다.<br>※ repeatType이(가) "monthly" 이면 필수 |
| endDayOfMonth | int | {repeatType} == "monthly" | ✓※ |  | 1 ~ 31 | 반복 종료일<br>반복 윈도우가 종료되는 월중 날짜(1~31)입니다.<br>지정한 값이 해당 월의 일수를 초과하는 경우, 해당 월의 마지막 날로 처리됩니다.<br>repeatType이 "monthly"인 경우에만 적용됩니다.<br>※ repeatType이(가) "monthly" 이면 필수 |
| beginDayOfWeek | 문자열 열거형<br>enum {<br>"sunday",<br>"monday",<br>"tuesday",<br>"wednesday",<br>"thursday",<br>"friday",<br>"saturday"<br>}<br> | {repeatType} == "weekly" | ✓※ |  |  | 반복 시작 요일<br>반복 윈도우가 시작되는 요일입니다.<br>윈도우는 주의 경계를 넘어설 수 있습니다(예: 금요일~월요일). repeatType이 "weekly"인 경우에만 적용됩니다.sunday: 일요일 / monday: 월요일 / tuesday: 화요일 / wednesday: 수요일 / thursday: 목요일 / friday: 금요일 / saturday: 토요일 / <br>※ repeatType이(가) "weekly" 이면 필수 |
| endDayOfWeek | 문자열 열거형<br>enum {<br>"sunday",<br>"monday",<br>"tuesday",<br>"wednesday",<br>"thursday",<br>"friday",<br>"saturday"<br>}<br> | {repeatType} == "weekly" | ✓※ |  |  | 반복 종료 요일<br>반복 윈도우가 종료되는 요일입니다.<br>beginDayOfWeek과 조합하여 주간 활성 기간을 정의합니다. repeatType이 "weekly"인 경우에만 적용됩니다.sunday: 일요일 / monday: 월요일 / tuesday: 화요일 / wednesday: 수요일 / thursday: 목요일 / friday: 금요일 / saturday: 토요일 / <br>※ repeatType이(가) "weekly" 이면 필수 |
| beginHour | int | {repeatType} in ["daily", "weekly", "monthly"] | ✓※ |  | 0 ~ 23 | 반복 시작 시각(시)<br>각 주기마다 반복 윈도우가 시작되는 시각(UTC, 0~23)입니다.<br>daily, weekly, monthly 반복 타입에서 필수입니다. beginHour와 endHour가 같으면 윈도우는 24시간(다음 날 같은 시각까지)이 됩니다.<br>※ repeatType이(가) "daily","weekly","monthly"이면 필수 |
| endHour | int | {repeatType} in ["daily", "weekly", "monthly"] | ✓※ |  | 0 ~ 24 | 반복 종료 시각(시)<br>각 주기마다 반복 윈도우가 종료되는 시각(UTC, 0~24)입니다.<br>24를 지정하면 다음 날 자정을 나타냅니다. daily, weekly, monthly 반복 타입에서 필수입니다.<br>※ repeatType이(가) "daily","weekly","monthly"이면 필수 |
| anchorTimestamp | long | {repeatType} == "custom" | ✓※ |  |  | 기준 타임스탬프<br>커스텀 활성/비활성 주기가 시작되는 기준일입니다.<br>시스템은 이 기준일로부터 경과한 일수를 바탕으로 현재 시각이 어느 단계(활성 또는 비활성)에 있는지 계산합니다.<br>repeatType이 "custom"인 경우에만 적용됩니다. UNIX 시간(밀리초)으로 표현합니다.<br>※ repeatType이(가) "custom" 이면 필수 |
| activeDays | int | {repeatType} == "custom" | ✓※ |  | 1 ~ 2147483646 | 활성 일수<br>각 커스텀 주기에서 이벤트가 연속으로 활성 상태가 되는 일수입니다.<br>활성 일수가 지난 후, inactiveDays에서 지정한 일수만큼 이벤트가 비활성 상태가 되며, 이후 주기가 반복됩니다.<br>repeatType이 "custom"인 경우에만 적용됩니다. 최소 1일.<br>※ repeatType이(가) "custom" 이면 필수 |
| inactiveDays | int | {repeatType} == "custom" | ✓※ |  | 0 ~ 2147483646 | 비활성 일수<br>각 커스텀 주기에서 이벤트가 연속으로 비활성 상태가 되는 일수입니다.<br>활성 일수 뒤에 이어집니다. 공백 없이 계속 활성 상태인 이벤트로 하려면 0을 설정합니다.<br>repeatType이 "custom"인 경우에만 적용됩니다. 최소 0일.<br>※ repeatType이(가) "custom" 이면 필수 |

---



