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

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

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




## 마스터 데이터 포맷


**JSON**
```json
{
  "version": "2019-05-28",
  "groups": [
    {
      "name": "[string]미션 그룹 모델 이름",
      "metadata": "[string?]메타데이터",
      "tasks": [
        {
          "name": "[string]미션 태스크 모델 이름",
          "metadata": "[string?]메타데이터",
          "verifyCompleteType": "[string]달성 조건 종류",
          "targetCounter": {
            "counterName": "[string]카운터 모델명",
            "scopeType": "[string]스코프 종류",
            "resetType": "[string?]목표 리셋 타이밍",
            "conditionName": "[string]조건 이름",
            "value": "[long]목표값"
          },
          "verifyCompleteConsumeActions": [
            {
              "action": "[string]검증 액션에서 실행할 액션의 종류",
              "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
            }
          ],
          "completeAcquireActions": [
            {
              "action": "[string]입수 액션에서 실행할 액션의 종류",
              "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
            }
          ],
          "challengePeriodEventId": "[string?]보상을 받을 수 있는 기간을 설정한 GS2-Schedule 이벤트 GRN",
          "premiseMissionTaskName": "[string?]이 태스크에 도전하기 위해 달성해 두어야 하는 태스크의 이름",
          "counterName": "[string]카운터 모델명",
          "targetResetType": "[string?]목표 리셋 타이밍",
          "targetValue": "[long]목표값"
        }
      ],
      "resetType": "[문자열 열거형]리셋 타이밍",
      "resetDayOfMonth": "[int]리셋하는 날짜",
      "resetDayOfWeek": "[문자열 열거형]리셋하는 요일",
      "resetHour": "[int]리셋 시각",
      "completeNotificationNamespaceId": "[string?]미션 태스크를 달성했을 때의 푸시 통지",
      "anchorTimestamp": "[long]경과 일수를 계산하는 기준 일시",
      "days": "[int]리셋하는 일수"
    }
  ],
  "counters": [
    {
      "name": "[string]카운터 모델명",
      "metadata": "[string?]메타데이터",
      "scopes": [
        {
          "scopeType": "[string]스코프의 종류",
          "resetType": "[string]리셋 타이밍",
          "resetDayOfMonth": "[int]리셋할 날짜",
          "resetDayOfWeek": "[string]리셋할 요일",
          "resetHour": "[int]리셋 시각",
          "conditionName": "[string]조건명",
          "condition": {
            "action": "[string]검증 액션에서 실행할 액션의 종류",
            "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
          },
          "anchorTimestamp": "[long]경과 일수를 계산하는 기준 일시",
          "days": "[int]리셋하는 일수"
        }
      ],
      "challengePeriodEventId": "[string?]카운터를 조작할 수 있는 기간을 설정한 GS2-Schedule 이벤트 GRN"
    }
  ]
}
```


|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| version | string | | ✓ | 2019-05-28 | | 마스터 데이터 포맷 버전 |
| groups | [List&lt;MissionGroupModel&gt;](#missiongroupmodel) |  |  |  |  ~ 20 items | 미션 그룹 모델<br>미션 그룹은 카운터의 리셋 타이밍으로 태스크를 그룹화하는 엔티티입니다.<br>예를 들어, 데일리 미션으로 하나의 그룹, 위클리 미션으로 하나의 그룹이 됩니다. |
| counters | [List&lt;CounterModel&gt;](#countermodel) |  |  |  |  ~ 1000 items | 카운터 모델<br>카운터 모델은 미션 태스크의 달성 조건으로 설정할 수 있는 엔티티입니다.<br>카운터 값은 여러 미션 그룹에서 참조할 수 있기 때문에, 하나의 카운터를 위클리 미션과 데일리 미션 같은 여러 미션 그룹의 달성 조건으로 설정할 수 있습니다. |

## 모델

### CounterModel

카운터 모델<br>

카운터 모델은 미션 태스크의 달성 조건으로 설정할 수 있는 엔티티입니다.<br>
카운터 값은 여러 미션 그룹에서 참조할 수 있기 때문에, 하나의 카운터를 위클리 미션과 데일리 미션 같은 여러 미션 그룹의 달성 조건으로 설정할 수 있습니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| counterId | string |  | ※ |  |  ~ 1024자 | 카운터 모델 GRN<br>※ 서버가 자동으로 설정 |
| name | string |  | ✓ |  |  ~ 128자 | 카운터 모델명<br>카운터 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| metadata | string |  |  |  |  ~ 1024자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| scopes | [List&lt;CounterScopeModel&gt;](#counterscopemodel) |  |  | [] | 1 ~ 20 items | 카운터의 리셋 타이밍 목록<br>이 카운터의 스코프(리셋 타이밍 또는 검증 액션 조건)를 정의합니다. 하나의 카운터에 여러 스코프를 설정할 수 있으며, 서로 다른 기간의 값(예: 데일리, 위클리, 누계를 동시에)을 추적할 수 있습니다. |
| challengePeriodEventId | string |  |  |  |  ~ 1024자 | 카운터를 조작할 수 있는 기간을 설정한 GS2-Schedule 이벤트 GRN<br>이 카운터의 증감이 가능한 기간을 정의하는 GS2-Schedule 이벤트를 지정합니다. 설정하지 않은 경우, 카운터는 언제든지 조작할 수 있습니다. |

---

### CounterScopeModel

카운터 리셋 타이밍 모델<br>

카운터의 스코프를 정의하고, 카운터 값의 리셋 방법과 타이밍을 결정합니다. 스코프는 리셋 타이밍(매일, 매주, 매월, 일정 일수마다, 또는 리셋 없음) 또는 검증 액션 조건 중 하나입니다. 각 카운터는 여러 스코프를 가질 수 있으며, 서로 다른 기간의 값을 추적할 수 있습니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| scopeType | 문자열 열거형<br>enum {<br>"resetTiming",<br>"verifyAction"<br>}<br> |  |  | "resetTiming" |  | 스코프의 종류<br>카운터 스코프의 정의 방법을 결정합니다. "resetTiming" 은 정기적인 리셋 스케줄을 사용하고, "verifyAction" 은 검증 액션으로 카운터 값이 적용되는지 여부를 판정합니다.resetTiming: 리셋 타이밍 / verifyAction: 검증 액션 /  |
| resetType | 문자열 열거형<br>enum {<br>"notReset",<br>"daily",<br>"weekly",<br>"monthly",<br>"days"<br>}<br> |  |  | "notReset" |  | 리셋 타이밍<br>이 스코프의 카운터 값이 리셋되는 타이밍을 결정합니다. 리셋하지 않음(영구 누계), 매일, 매주, 매월, 일정 일수마다 중에서 선택합니다. scopeType 이 "resetTiming" 인 경우에만 사용됩니다.notReset: 리셋 안 함 / daily: 매일 / weekly: 매주 / monthly: 매월 / days: 일정 일수마다 /  |
| resetDayOfMonth | int | {resetType} == "monthly" | ✓※ |  | 1 ~ 31 | 리셋할 날짜<br>카운터 값이 리셋되는 월의 날짜입니다. 지정한 값이 해당 월의 일수를 초과하는 경우, 그 달의 마지막 날로 처리됩니다. resetType 이 "monthly" 인 경우에만 사용됩니다.<br>※ resetType이(가) "monthly" 이면 필수 |
| resetDayOfWeek | 문자열 열거형<br>enum {<br>"sunday",<br>"monday",<br>"tuesday",<br>"wednesday",<br>"thursday",<br>"friday",<br>"saturday"<br>}<br> | {resetType} == "weekly" | ✓※ |  |  | 리셋할 요일<br>카운터 값이 리셋되는 요일입니다. resetType 이 "weekly" 인 경우에만 사용됩니다.sunday: 일요일 / monday: 월요일 / tuesday: 화요일 / wednesday: 수요일 / thursday: 목요일 / friday: 금요일 / saturday: 토요일 / <br>※ resetType이(가) "weekly" 이면 필수 |
| resetHour | int | {resetType} in ["monthly", "weekly", "daily"] | ✓※ |  | 0 ~ 23 | 리셋 시각<br>카운터 값이 리셋되는 시각(0~23)입니다. 매일, 매주, 매월 리셋 타입과 조합하여 사용됩니다.<br>※ resetType이(가) "monthly","weekly","daily"이면 필수 |
| conditionName | string | {scopeType} == "verifyAction" | ✓※ |  |  ~ 128자 | 조건명<br>이 검증 액션 조건 스코프를 식별하는 고유한 이름입니다. 카운터 내에서 대응하는 스코프 값을 조회하는 데 사용됩니다. scopeType 이 "verifyAction" 인 경우에만 사용됩니다.<br>※ scopeType이(가) "verifyAction" 이면 필수 |
| condition | [VerifyAction](#verifyaction) | {scopeType} == "verifyAction" | ✓※ |  |  | 조건<br>이 스코프의 카운터 값이 적용되는지 여부를 판정하는 검증 액션입니다. scopeType이 "verifyAction"인 경우에만 사용됩니다.<br>※ scopeType이(가) "verifyAction" 이면 필수 |
| anchorTimestamp | long | {resetType} == "days" | ✓※ |  |  | 경과 일수를 계산하는 기준 일시<br>UNIX 시간(밀리초)<br>※ resetType이(가) "days" 이면 필수 |
| days | int | {resetType} == "days" | ✓※ |  | 1 ~ 2147483646 | 리셋하는 일수<br>기준 일시부터 카운트되는 카운터 값의 리셋 간격 일수입니다. resetType이 "days"인 경우에만 사용됩니다.<br>※ resetType이(가) "days" 이면 필수 |

---

### VerifyAction

검증 액션

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| action | 문자열 열거형<br>enum {<br>}<br> |  | ✓ |  |  | 검증 액션에서 실행할 액션의 종류 |
| request | string |  | ✓ |  |  ~ 524288자 | 액션 실행 시 사용되는 요청의 JSON 문자열 |

---

### MissionGroupModel

미션 그룹 모델<br>

미션 그룹은 카운터의 리셋 타이밍으로 태스크를 그룹화하는 엔티티입니다.<br>
예를 들어, 데일리 미션으로 하나의 그룹, 위클리 미션으로 하나의 그룹이 됩니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| missionGroupId | string |  | ※ |  |  ~ 1024자 | 미션 그룹 GRN<br>※ 서버가 자동으로 설정 |
| name | string |  | ✓ |  |  ~ 128자 | 미션 그룹 모델 이름<br>미션 그룹 모델 고유의 이름. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| metadata | string |  |  |  |  ~ 1024자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| tasks | [List&lt;MissionTaskModel&gt;](#missiontaskmodel) |  |  | [] | 0 ~ 1000 items | 미션 태스크 리스트<br>이 그룹에 속하는 미션 태스크입니다. 각 태스크는 달성 조건(카운터의 임계값 또는 검증 액션)과 달성 시 부여되는 보상을 정의합니다. |
| resetType | 문자열 열거형<br>enum {<br>"notReset",<br>"daily",<br>"weekly",<br>"monthly",<br>"days"<br>}<br> |  |  | "notReset" |  | 리셋 타이밍<br>미션 그룹의 달성 상황이 리셋되는 타이밍을 결정합니다. 리셋하지 않음(영구), 매일, 매주, 매월, 기준 일시부터 일정 일수마다 중에서 선택합니다.notReset: 리셋 안 함 / daily: 매일 / weekly: 매주 / monthly: 매월 / days: 일정 일수마다 /  |
| resetDayOfMonth | int | {resetType} == "monthly" | ✓※ |  | 1 ~ 31 | 리셋하는 날짜<br>미션 그룹이 리셋되는 월의 날짜입니다. 지정한 값이 해당 월의 일수를 초과하는 경우, 그 달의 마지막 날로 처리됩니다. resetType이 "monthly"인 경우에만 사용됩니다.<br>※ resetType이(가) "monthly" 이면 필수 |
| resetDayOfWeek | 문자열 열거형<br>enum {<br>"sunday",<br>"monday",<br>"tuesday",<br>"wednesday",<br>"thursday",<br>"friday",<br>"saturday"<br>}<br> | {resetType} == "weekly" | ✓※ |  |  | 리셋하는 요일<br>미션 그룹이 리셋되는 요일입니다. resetType이 "weekly"인 경우에만 사용됩니다.sunday: 일요일 / monday: 월요일 / tuesday: 화요일 / wednesday: 수요일 / thursday: 목요일 / friday: 금요일 / saturday: 토요일 / <br>※ resetType이(가) "weekly" 이면 필수 |
| resetHour | int | {resetType} in ["monthly", "weekly", "daily"] | ✓※ |  | 0 ~ 23 | 리셋 시각<br>미션 그룹이 리셋되는 시각(0~23)입니다. 매일, 매주, 매월 리셋 타입과 조합하여 사용됩니다.<br>※ resetType이(가) "monthly","weekly","daily"이면 필수 |
| completeNotificationNamespaceId | string |  |  |  |  ~ 1024자 | 미션 태스크를 달성했을 때의 푸시 통지<br>이 그룹 내의 미션 태스크가 달성되었을 때 푸시 통지를 전송하는 데 사용되는 GS2-Gateway의 네임스페이스 GRN입니다. 게임 클라이언트에 실시간으로 통지할 수 있습니다. |
| anchorTimestamp | long | {resetType} == "days" | ✓※ |  |  | 경과 일수를 계산하는 기준 일시<br>UNIX 시간(밀리초)<br>※ resetType이(가) "days" 이면 필수 |
| days | int | {resetType} == "days" | ✓※ |  | 1 ~ 2147483646 | 리셋하는 일수<br>기준 일시부터 카운트되는 리셋 간격 일수입니다. resetType이 "days"인 경우에만 사용됩니다.<br>※ resetType이(가) "days" 이면 필수 |

---

### MissionTaskModel

미션 태스크 모델<br>

미션 태스크는 연결된 카운터의 값이 일정 수준을 초과하면 보상을 받을 수 있는 조건을 정의하는 엔티티입니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| missionTaskId | string |  | ※ |  |  ~ 1024자 | 미션 태스크 GRN<br>※ 서버가 자동으로 설정 |
| name | string |  | ✓ |  |  ~ 128자 | 미션 태스크 모델 이름<br>미션 태스크 모델 고유의 이름. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| metadata | string |  |  |  |  ~ 1024자 | 메타데이터<br>메타데이터에는 임의의 값을 설정할 수 있습니다.<br>이 값들은 GS2의 동작에는 영향을 주지 않으므로, 게임 내에서 사용하는 정보를 저장하는 용도로 사용할 수 있습니다. |
| verifyCompleteType | 문자열 열거형<br>enum {<br>"counter",<br>"verifyActions"<br>}<br> |  |  | "counter" |  | 달성 조건 종류<br>미션 태스크의 달성 판정 방법을 지정합니다. "counter"는 관련된 카운터의 스코프 값이 목표 임곗값에 도달했는지 확인합니다. "verifyActions"는 검증 액션을 사용하여 달성 조건을 확인합니다.counter: 카운터 / verifyActions: 검증 액션 /  |
| targetCounter | [TargetCounterModel](#targetcountermodel) | {verifyCompleteType} == "counter" | ✓※ |  |  | 목표 카운터<br>미션 태스크의 달성 판정에 사용되는 카운터, 스코프, 목표값을 정의합니다. 카운터의 스코프 값이 지정된 목표값에 도달하거나 초과한 경우, 태스크가 달성된 것으로 간주됩니다.<br>※ verifyCompleteType이(가) "counter" 이면 필수 |
| verifyCompleteConsumeActions | [List&lt;VerifyAction&gt;](#verifyaction) | {verifyCompleteType} == "verifyActions" |  | [] | 0 ~ 10 items | 태스크 달성 판정에 사용하는 검증 액션<br>미션 태스크의 달성 판정에 사용되는 검증 액션의 목록입니다. 모든 검증 액션이 성공한 경우 태스크가 달성된 것으로 간주됩니다. verifyCompleteType이 "verifyActions"인 경우에만 사용됩니다.<br>※ verifyCompleteType이(가) "verifyActions" 이면 활성화 |
| completeAcquireActions | [List&lt;AcquireAction&gt;](#acquireaction) |  |  | [] | 0 ~ 100 items | 미션 달성 시 보상<br>플레이어가 미션 달성 보상을 받을 때 실행되는 입수 액션의 목록입니다. |
| challengePeriodEventId | string |  |  |  |  ~ 1024자 | 보상을 받을 수 있는 기간을 설정한 GS2-Schedule 이벤트 GRN<br>미션 태스크의 보상을 받을 수 있는 기간을 정의하는 GS2-Schedule 이벤트를 지정합니다. 설정하지 않은 경우, 달성 후 언제든지 보상을 받을 수 있습니다. |
| premiseMissionTaskName | string |  |  |  |  ~ 128자 | 이 태스크에 도전하기 위해 달성해 두어야 하는 태스크의 이름<br>이 태스크의 보상을 받기 전에 달성해 두어야 하는, 같은 그룹 내의 전제 미션 태스크를 지정합니다. 단계적인 미션 체인을 만드는 데 사용합니다. |

---

### TargetCounterModel

목표 카운터<br>

미션의 달성 목표가 되는 카운터의 정보

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| counterName | string |  | ✓ |  |  ~ 128자 | 카운터 모델명<br>카운터 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| scopeType | 문자열 열거형<br>enum {<br>"resetTiming",<br>"verifyAction"<br>}<br> |  |  | "resetTiming" |  | 스코프 종류<br>미션 달성 판정에 사용하는 카운터 스코프의 종류를 지정합니다. "resetTiming"은 특정 리셋 기간의 카운터 값을 평가하고, "verifyAction"은 이름이 지정된 조건의 값을 평가합니다.resetTiming: 리셋 타이밍 / verifyAction: 검증 액션 /  |
| resetType | 문자열 열거형<br>enum {<br>"notReset",<br>"daily",<br>"weekly",<br>"monthly",<br>"days"<br>}<br> | {scopeType} == "resetTiming" |  |  |  | 목표 리셋 타이밍<br>목표값과 비교할 카운터의 리셋 타이밍 스코프를 지정합니다. 예를 들어 "daily"를 선택하면 데일리 카운터 값을 확인합니다. 생략한 경우, 미션 그룹의 리셋 타이밍이 사용됩니다.notReset: 리셋 안 함 / daily: 매일 / weekly: 매주 / monthly: 매월 / days: 일정 일수마다 / <br>※ scopeType이(가) "resetTiming" 이면 활성화 |
| conditionName | string | {scopeType} == "verifyAction" | ✓※ |  |  ~ 128자 | 조건 이름<br>목표값과 비교할 검증 액션 조건 스코프의 이름입니다. 카운터 모델의 스코프에서 정의된 conditionName과 일치해야 합니다. scopeType이 "verifyAction"인 경우에만 사용됩니다.<br>※ scopeType이(가) "verifyAction" 이면 필수 |
| value | long |  | ✓ |  | 0 ~ 9223372036854775805 | 목표값<br>미션 태스크가 달성된 것으로 간주되기 위해, 카운터의 스코프 값이 도달하거나 초과해야 하는 임곗값입니다. |

---

### AcquireAction

입수 액션

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| action | 문자열 열거형<br>enum {<br>}<br> |  | ✓ |  |  | 입수 액션에서 실행할 액션의 종류 |
| request | string |  | ✓ |  |  ~ 524288자 | 액션 실행 시 사용되는 요청의 JSON 문자열 |

---



