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

# GS2-Formation 트랜잭션 액션

검증/소비/입수 각 트랜잭션 액션의 사양




## 액션의 조합과 동시 실행

모든 서비스에 공통되는 전제는 [트랜잭션 액션의 조합]()에 정리되어 있습니다. 먼저 그쪽을 읽어 주십시오. 이 절의 나머지는 GS2-Formation 고유의 내용입니다.

GS2-Formation의 트랜잭션 액션은 2종류의 대상을 다룹니다.

- 몰드 : 네임스페이스·사용자·몰드 모델의 조합으로 결정됩니다. 폼을 몇 개 가질 수 있는지라는 용량을 보관합니다.
- 폼 : 네임스페이스·사용자·몰드 모델·인덱스의 조합으로 결정됩니다. 하나의 슬롯에 설정된 프로퍼티를 보관합니다.

조작 | 같은 행을 겹쳤을 때 | 중첩 너머 | 다른 대상이 되는 경계 | 직렬 실행 모드 활성화 시
--- | --- | --- | --- | ---
용량의 가산·감산<br>`AddMoldCapacityByUserId` `SubMoldCapacityByUserId` | 혼재해도 된다. 통합되어 값이 합산된다 | 합산된다 | 네임스페이스·사용자·몰드 모델 | 변하지 않는다. 원래부터 합산되어 성립한다
용량의 설정<br>`SetMoldCapacityByUserId` | 같은 값이면 통합. 값이 다르면 발행 시에 오류 | 같은 값이면 그 값이 설정된다. 값이 다르면 실행 시에 실패한다 | 네임스페이스·사용자·몰드 모델 | 값이 달라도 성립한다. 나중에 실행된 쪽의 값이 된다
폼의 설정<br>`SetFormByUserId` | 같은 값이면 통합. 값이 다르면 발행 시에 오류 | 같은 값이면 그 값이 설정된다. 값이 다르면 실행 시에 실패한다 | 네임스페이스·사용자·몰드 모델·인덱스 | 값이 달라도 성립한다. 나중에 실행된 쪽의 값이 된다
다른 액션으로의 전개<br>`AcquireActionsToFormProperties` `AcquireActionsToPropertyFormProperties` | 전달하는 획득 액션이 같으면 통합된다. 다르면 각각 실행된다 | 폼 자체는 건드리지 않는다 | 네임스페이스·사용자·몰드 모델·인덱스·전달하는 획득 액션 | 변하지 않는다. 폼 자체는 건드리지 않는다

용량은 1 이상이어야 하고 몰드 모델의 최대 용량을 넘을 수 없습니다. 통합 후의 합계에 대해 판정되므로, 단독으로는 들어가는 가산이라도 다른 가산과 합쳐지면 거부될 수 있습니다.

몰드와 폼은 다른 대상이므로, 용량의 업데이트와 폼의 설정을 같은 트랜잭션에 넣는 것은 문제없습니다.

`AcquireActionsTo...Properties`는 폼 자체를 다시 쓰지 않고, 전달받은 획득 액션을 자신의 트랜잭션으로 발행합니다. 같은 폼에 대해 다른 획득 액션을 두 개 지정한 경우에는 양쪽 다 실행됩니다. 다만 발행되는 것은 같은 트랜잭션에 모이므로, 그것들이 속한 서비스의 제한을 확인해 주십시오.

### 중첩된 트랜잭션에 주의

용량은 중첩 너머에서도 안전합니다. 가산·감산은 어느 경로로 도착하든 한 번의 업데이트로 묶입니다.

용량의 설정과 폼의 설정은 다릅니다. 같은 몰드나 폼에 대해 한쪽이 안쪽에서 도착하고 다른 한쪽이 바깥쪽에 지정되어 있는 경우에는 트랜잭션이 실패합니다. 직렬 실행 모드(`enableSequentialExecution` 또는 `TransactionSettingV2`)를 활성화하면 이 실패는 일어나지 않습니다. 안쪽 트랜잭션이 바깥쪽과 같은 직렬 실행 구간에서 실행되므로, 트랜잭션이 실패하는 대신 실제로 나중에 실행된 쪽의 값이 됩니다.

### 제한을 회피하고 싶은 경우

용량의 가산과 설정, 폼의 설정은 획득 액션, 용량의 감산은 소비 액션입니다. 획득 액션끼리의 충돌은 `acquireActionUseJobQueue`를 활성화하면 해소되지만, 용량의 설정과 감산의 공존은 `enableAtomicCommit`을 비활성화하지 않으면 해소되지 않습니다.

### 동시 실행과 재시도

용량의 가산·감산은 결과가 범위에 들어가는 한, 동시 실행 요청이 몇 개 겹쳐도 충돌하지 않습니다.

용량의 설정, 폼의 설정, 관리 콘솔이나 서버 API에서의 변경은 리비전 대조를 수반하는 기록이므로, 같은 대상에 대한 다른 업데이트와 겹치면 충돌(409)이 반환될 수 있습니다. 요청 내용에 문제가 있는 것은 아니므로, 재시도하면 성공합니다.

---



## Consume Action

소비 액션

### Gs2Formation:SubMoldCapacityByUserId

사용자 ID를 지정하여 용량 크기 감산<br>

지정된 사용자의 폼 저장 영역(몰드)의 용량을 감산합니다. 용량은 0 미만으로 내려가지 않습니다.

**수량 지정 가능한 액션: 예**

**반전 가능한 액션: 예**

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| moldModelName | string |  | ✓|  |  ~ 128자 | 폼 저장 영역 모델의 이름<br>폼 저장 영역 모델 고유의 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| capacity | int |  | ✓|  | 0 ~ 2147483646 | 현재 캐파시티<br>이 저장 영역에서 이 플레이어가 현재 이용할 수 있는 폼 저장 슬롯 수입니다. 초기값은 저장 영역 모델의 initialMaxCapacity로 설정되며, 캐파시티 증가 조작을 통해 maxCapacity까지 확장할 수 있습니다. |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Formation:SubMoldCapacityByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "userId": "[string]사용자ID",
        "moldModelName": "[string]폼 저장 영역 모델의 이름",
        "capacity": "[int]현재 캐파시티",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Formation:SubMoldCapacityByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  userId: "[string]사용자ID"
  moldModelName: "[string]폼 저장 영역 모델의 이름"
  capacity: "[int]현재 캐파시티"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("formation").consume.sub_mold_capacity_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    userId="[string]사용자ID",
    moldModelName="[string]폼 저장 영역 모델의 이름",
    capacity="[int]현재 캐파시티",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

## Acquire Action

입수 액션

### Gs2Formation:AddMoldCapacityByUserId

사용자 ID를 지정하여 용량 크기 가산<br>

지정된 사용자의 폼 저장 영역(몰드)의 용량을 가산합니다.<br>
용량은 몰드 모델에 정의된 maxCapacity를 초과할 수 없습니다.

**수량 지정 가능한 액션: 예**

**반전 가능한 액션: 예**

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| moldModelName | string |  | ✓|  |  ~ 128자 | 폼 저장 영역 모델의 이름<br>폼 저장 영역 모델 고유의 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| capacity | int |  | ✓|  | 0 ~ 2147483646 | 현재 캐파시티<br>이 저장 영역에서 이 플레이어가 현재 이용할 수 있는 폼 저장 슬롯 수입니다. 초기값은 저장 영역 모델의 initialMaxCapacity로 설정되며, 캐파시티 증가 조작을 통해 maxCapacity까지 확장할 수 있습니다. |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Formation:AddMoldCapacityByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "userId": "[string]사용자ID",
        "moldModelName": "[string]폼 저장 영역 모델의 이름",
        "capacity": "[int]현재 캐파시티",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Formation:AddMoldCapacityByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  userId: "[string]사용자ID"
  moldModelName: "[string]폼 저장 영역 모델의 이름"
  capacity: "[int]현재 캐파시티"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("formation").acquire.add_mold_capacity_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    userId="[string]사용자ID",
    moldModelName="[string]폼 저장 영역 모델의 이름",
    capacity="[int]현재 캐파시티",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Formation:SetMoldCapacityByUserId

사용자 ID를 지정하여 용량 크기 설정<br>

지정된 사용자의 폼 저장 영역(몰드)의 용량을 지정한 값으로 직접 설정합니다.<br>
갱신 전의 몰드를 'old'로, 갱신 후의 몰드와 함께 반환합니다.<br>
용량은 몰드 모델에 정의된 maxCapacity로 상한이 제한됩니다.

**수량 지정 가능한 액션: 예**

**반전 가능한 액션: 아니오**

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| moldModelName | string |  | ✓|  |  ~ 128자 | 폼 저장 영역 모델의 이름<br>폼 저장 영역 모델 고유의 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| capacity | int |  | ✓|  | 0 ~ 2147483646 | 현재 캐파시티<br>이 저장 영역에서 이 플레이어가 현재 이용할 수 있는 폼 저장 슬롯 수입니다. 초기값은 저장 영역 모델의 initialMaxCapacity로 설정되며, 캐파시티 증가 조작을 통해 maxCapacity까지 확장할 수 있습니다. |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Formation:SetMoldCapacityByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "userId": "[string]사용자ID",
        "moldModelName": "[string]폼 저장 영역 모델의 이름",
        "capacity": "[int]현재 캐파시티",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Formation:SetMoldCapacityByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  userId: "[string]사용자ID"
  moldModelName: "[string]폼 저장 영역 모델의 이름"
  capacity: "[int]현재 캐파시티"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("formation").acquire.set_mold_capacity_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    userId="[string]사용자ID",
    moldModelName="[string]폼 저장 영역 모델의 이름",
    capacity="[int]현재 캐파시티",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Formation:AcquireActionsToFormProperties

사용자 ID를 지정하여 폼의 프로퍼티에 획득 액션을 적용<br>

폼의 슬롯 프로퍼티에 획득 액션을 적용하고, 실행할 트랜잭션을 시작합니다.<br>
폼의 슬롯에 아이템이나 리소스를 부여하기 위해 사용되며, 커스터마이즈용 선택적 설정 파라미터를 이용할 수 있습니다.<br>
트랜잭션을 반환합니다.

**수량 지정 가능한 액션: 아니오**

**반전 가능한 액션: 아니오**

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| moldModelName | string |  | ✓|  |  ~ 128자 | 폼 저장 영역 모델 이름 |
| index | int |  | ✓|  | 0 ~ 2147483646 | 폼의 인덱스<br>저장 영역 내에서 이 폼이 차지하는 저장 슬롯을 식별하는 0부터 시작하는 인덱스입니다. 최대 인덱스는 저장 영역의 현재 캐파시티에 의해 제한됩니다. 예를 들어 인덱스 0을 「파티 1」, 인덱스 1을 「파티 2」와 같은 식으로 사용할 수 있습니다. |
| acquireAction | [AcquireAction](../sdk/#acquireaction) |  | ✓|  |  | 폼의 프로퍼티에 적용할 획득 액션 |
| config | [List&lt;Config&gt;](../sdk/#config) |  | | [] | 0 ~ 1000 items | 획득 액션에 적용하는 설정 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Formation:AcquireActionsToFormProperties",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "userId": "[string]사용자ID",
        "moldModelName": "[string]폼 저장 영역 모델 이름",
        "index": "[int]폼의 인덱스",
        "acquireAction": {
            "action": "[string]입수 액션에서 실행할 액션의 종류",
            "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
        },
        "config": [
            {
                "key": "[string]이름",
                "value": "[string]값"
            }
        ],
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Formation:AcquireActionsToFormProperties
request:
  namespaceName: "[string]네임스페이스 이름"
  userId: "[string]사용자ID"
  moldModelName: "[string]폼 저장 영역 모델 이름"
  index: "[int]폼의 인덱스"
  acquireAction: 
    action: "[string]입수 액션에서 실행할 액션의 종류"
    request: "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
  config: 
    - key: "[string]이름"
      value: "[string]값"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("formation").acquire.acquire_actions_to_form_properties({
    namespaceName="[string]네임스페이스 이름",
    userId="[string]사용자ID",
    moldModelName="[string]폼 저장 영역 모델 이름",
    index="[int]폼의 인덱스",
    acquireAction={
        action="[string]입수 액션에서 실행할 액션의 종류",
        request="[string]액션 실행 시 사용되는 요청의 JSON 문자열"
    },
    config={
        {
            key="[string]이름",
            value="[string]값"
        }
    },
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Formation:SetFormByUserId

사용자 ID를 지정하여 폼 설정<br>

지정된 사용자의 폼의 슬롯 값을 업데이트합니다.

**수량 지정 가능한 액션: 아니오**

**반전 가능한 액션: 아니오**

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| moldModelName | string |  | ✓|  |  ~ 128자 | 폼 저장 영역 모델 이름 |
| index | int |  | ✓|  | 0 ~ 2147483646 | 폼의 인덱스<br>저장 영역 내에서 이 폼이 차지하는 저장 슬롯을 식별하는 0부터 시작하는 인덱스입니다. 최대 인덱스는 저장 영역의 현재 캐파시티에 의해 제한됩니다. 예를 들어 인덱스 0을 「파티 1」, 인덱스 1을 「파티 2」와 같은 식으로 사용할 수 있습니다. |
| slots | [List&lt;Slot&gt;](../sdk/#slot) |  | ✓|  | 1 ~ 10 items | 슬롯 목록 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Formation:SetFormByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "userId": "[string]사용자ID",
        "moldModelName": "[string]폼 저장 영역 모델 이름",
        "index": "[int]폼의 인덱스",
        "slots": [
            {
                "name": "[string]슬롯 모델명",
                "propertyId": "[string]프로퍼티 ID",
                "metadata": "[string]메타데이터"
            }
        ],
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Formation:SetFormByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  userId: "[string]사용자ID"
  moldModelName: "[string]폼 저장 영역 모델 이름"
  index: "[int]폼의 인덱스"
  slots: 
    - name: "[string]슬롯 모델명"
      propertyId: "[string]프로퍼티 ID"
      metadata: "[string]메타데이터"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("formation").acquire.set_form_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    userId="[string]사용자ID",
    moldModelName="[string]폼 저장 영역 모델 이름",
    index="[int]폼의 인덱스",
    slots={
        {
            name="[string]슬롯 모델명",
            propertyId="[string]프로퍼티 ID",
            metadata="[string]메타데이터"
        }
    },
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Formation:AcquireActionsToPropertyFormProperties

프로퍼티 폼의 프로퍼티에 획득 액션을 적용<br>

프로퍼티 폼의 프로퍼티에 획득 액션을 적용하고 트랜잭션을 시작합니다.<br>
프로퍼티 폼의 슬롯 값으로 설정되는 아이템이나 리소스를 부여하기 위해 사용됩니다.<br>
획득 액션은 트랜잭션으로 실행되며, 그 결과 아이템이 폼의 슬롯 프로퍼티에 적용됩니다.<br>
획득 액션의 동작을 커스터마이즈하기 위한 설정값을 전달할 수 있습니다.

**수량 지정 가능한 액션: 아니오**

**반전 가능한 액션: 아니오**

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| propertyFormModelName | string |  | ✓|  |  ~ 128자 | 프로퍼티 폼 모델 이름 |
| propertyId | string |  | ✓|  |  ~ 1024자 | 프로퍼티 ID<br>이 프로퍼티 폼 인스턴스를 고유하게 식별하는 개발자 정의 식별자입니다. 일반적으로 이 폼이 설정하는 소유 리소스(예: GS2-Inventory의 아이템 세트)의 GRN을 설정합니다. 특정 장비에 스킬을 설정하는 등의 용도로 사용됩니다. |
| acquireAction | [AcquireAction](../sdk/#acquireaction) |  | ✓|  |  | 프로퍼티 폼의 프로퍼티에 적용할 획득 액션 |
| config | [List&lt;Config&gt;](../sdk/#config) |  | | [] | 0 ~ 1000 items | 획득 액션에 적용하는 설정 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Formation:AcquireActionsToPropertyFormProperties",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "userId": "[string]사용자ID",
        "propertyFormModelName": "[string]프로퍼티 폼 모델 이름",
        "propertyId": "[string]프로퍼티 ID",
        "acquireAction": {
            "action": "[string]입수 액션에서 실행할 액션의 종류",
            "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
        },
        "config": [
            {
                "key": "[string]이름",
                "value": "[string]값"
            }
        ],
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Formation:AcquireActionsToPropertyFormProperties
request:
  namespaceName: "[string]네임스페이스 이름"
  userId: "[string]사용자ID"
  propertyFormModelName: "[string]프로퍼티 폼 모델 이름"
  propertyId: "[string]프로퍼티 ID"
  acquireAction: 
    action: "[string]입수 액션에서 실행할 액션의 종류"
    request: "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
  config: 
    - key: "[string]이름"
      value: "[string]값"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("formation").acquire.acquire_actions_to_property_form_properties({
    namespaceName="[string]네임스페이스 이름",
    userId="[string]사용자ID",
    propertyFormModelName="[string]프로퍼티 폼 모델 이름",
    propertyId="[string]프로퍼티 ID",
    acquireAction={
        action="[string]입수 액션에서 실행할 액션의 종류",
        request="[string]액션 실행 시 사용되는 요청의 JSON 문자열"
    },
    config={
        {
            key="[string]이름",
            value="[string]값"
        }
    },
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---



