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

# GS2-Inventory 트랜잭션 액션

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




## Verify Action

검증 액션

### Gs2Inventory:VerifyInventoryCurrentMaxCapacityByUserId

사용자 ID를 지정하여 인벤토리의 최대 용량을 검증<br>

지정된 사용자의 현재 최대 인벤토리 용량이 지정된 조건을 만족하는지 검증합니다.<br>
6개의 비교 연산자를 지원합니다: less, lessEqual, greater, greaterEqual, equal, notEqual.<br>
검증에는 버프 적용 후의 용량 값(GS2-Buff 의 활성 버프 효과를 반영)이 사용됩니다.

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 인벤토리 모델 이름<br>이 인벤토리의 구조와 용량 설정을 정의하는 인벤토리 모델의 이름입니다. 사용자의 인벤토리 인스턴스를 모델 정의에 연결하여 사용 가능한 아이템의 종류와 용량 제한을 결정합니다. |
| verifyType | 문자열 열거형<br>enum {<br>"less",<br>"lessEqual",<br>"greater",<br>"greaterEqual",<br>"equal",<br>"notEqual"<br>}<br> |  | ✓|  |  | 검증 종류less: 현재 인벤토리의 최대 용량이 지정 값 미만일 것 / lessEqual: 현재 인벤토리의 최대 용량이 지정 값 이하일 것 / greater: 현재 인벤토리의 최대 용량이 지정 값 초과일 것 / greaterEqual: 현재 인벤토리의 최대 용량이 지정 값 이상일 것 / equal: 현재 인벤토리의 최대 용량이 지정 값과 일치할 것 / notEqual: 현재 인벤토리의 최대 용량이 지정 값과 일치하지 않을 것 /  |
| currentInventoryMaxCapacity | int |  | ✓|  | 0 ~ 2147483646 | 현재 인벤토리의 최대 용량 |
| multiplyValueSpecifyingQuantity | bool |  | | true |  | 수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:VerifyInventoryCurrentMaxCapacityByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "userId": "[string]사용자ID",
        "inventoryName": "[string]인벤토리 모델 이름",
        "verifyType": "[string]검증 종류",
        "currentInventoryMaxCapacity": "[int]현재 인벤토리의 최대 용량",
        "multiplyValueSpecifyingQuantity": "[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:VerifyInventoryCurrentMaxCapacityByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  userId: "[string]사용자ID"
  inventoryName: "[string]인벤토리 모델 이름"
  verifyType: "[string]검증 종류"
  currentInventoryMaxCapacity: "[int]현재 인벤토리의 최대 용량"
  multiplyValueSpecifyingQuantity: "[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").verify.verify_inventory_current_max_capacity_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    userId="[string]사용자ID",
    inventoryName="[string]인벤토리 모델 이름",
    verifyType="[string]검증 종류",
    currentInventoryMaxCapacity="[int]현재 인벤토리의 최대 용량",
    multiplyValueSpecifyingQuantity="[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:VerifyItemSetByUserId

사용자 ID를 지정하여 아이템 세트의 소지 수량 검증<br>

지정된 사용자의 합계 아이템 수량이 지정된 조건을 만족하는지 검증합니다.<br>
수량은 지정된 아이템 타입의 모든 아이템 세트를 합산하여 계산됩니다.<br>
6가지 비교 연산자를 지원합니다: less, lessEqual, greater, greaterEqual, equal, notEqual.

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 인벤토리 모델 이름<br>인벤토리 모델 고유 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| itemName | string |  | ✓|  |  ~ 128자 | 아이템 모델명<br>이 세트에 저장된 아이템의 종류를 정의하는 아이템 모델의 이름입니다. inventoryName과 조합하여 이 아이템 세트의 스택 상한과 다중 스택 동작을 결정합니다. |
| verifyType | 문자열 열거형<br>enum {<br>"less",<br>"lessEqual",<br>"greater",<br>"greaterEqual",<br>"equal",<br>"notEqual"<br>}<br> |  | ✓|  |  | 검증 종류less: 소지 수량이 지정 값 미만일 것 / lessEqual: 소지 수량이 지정 값 이하일 것 / greater: 소지 수량이 지정 값 초과일 것 / greaterEqual: 소지 수량이 지정 값 이상일 것 / equal: 소지 수량이 지정 값과 일치할 것 / notEqual: 소지 수량이 지정 값과 일치하지 않을 것 /  |
| itemSetName | string |  | |  |  ~ 36자 | 아이템 세트를 식별하는 이름 |
| count | long |  | ✓|  | 0 ~ 9223372036854775805 | 소지 수량 |
| multiplyValueSpecifyingQuantity | bool |  | | true |  | 수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:VerifyItemSetByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "userId": "[string]사용자ID",
        "inventoryName": "[string]인벤토리 모델 이름",
        "itemName": "[string]아이템 모델명",
        "verifyType": "[string]검증 종류",
        "itemSetName": "[string]아이템 세트를 식별하는 이름",
        "count": "[long]소지 수량",
        "multiplyValueSpecifyingQuantity": "[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:VerifyItemSetByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  userId: "[string]사용자ID"
  inventoryName: "[string]인벤토리 모델 이름"
  itemName: "[string]아이템 모델명"
  verifyType: "[string]검증 종류"
  itemSetName: "[string]아이템 세트를 식별하는 이름"
  count: "[long]소지 수량"
  multiplyValueSpecifyingQuantity: "[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").verify.verify_item_set_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    userId="[string]사용자ID",
    inventoryName="[string]인벤토리 모델 이름",
    itemName="[string]아이템 모델명",
    verifyType="[string]검증 종류",
    itemSetName="[string]아이템 세트를 식별하는 이름",
    count="[long]소지 수량",
    multiplyValueSpecifyingQuantity="[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:VerifyReferenceOfByUserId

사용자 ID를 지정하여 아이템의 참조원을 검증<br>

지정된 사용자의 아이템 세트 상의 참조원 상태를 검증합니다.<br>
4개의 검증 타입을 지원: not_entry(참조원이 미등록), already_entry(참조원이 등록됨), empty(참조원이 0개), not_empty(참조원이 1개 이상 존재).<br>
조건이 충족되지 않으면 오류가 반환됩니다.

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 인벤토리 모델명<br>이 아이템 세트를 포함하는 인벤토리 모델의 이름입니다. itemName과 함께 사용되어 이 소지품이 어떤 인벤토리와 아이템 종류에 속하는지를 식별하는 데 사용됩니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| itemName | string |  | ✓|  |  ~ 128자 | 아이템 모델명<br>이 세트에 저장된 아이템의 종류를 정의하는 아이템 모델의 이름입니다. inventoryName과 조합하여 이 아이템 세트의 스택 상한과 다중 스택 동작을 결정합니다. |
| itemSetName | string |  | ✓| UUID |  ~ 36자 | 아이템 세트를 식별하는 이름<br>아이템 세트의 고유한 이름을 보유합니다.<br>이름은 UUID(Universally Unique Identifier) 형식으로 자동 생성되며, 각 아이템 세트를 식별하는 데 사용됩니다. |
| referenceOf | string |  | ✓|  |  ~ 1024자 | 참조원<br>장비 슬롯이나 편성 바인드 등, 이 아이템 세트에 대한 외부 참조를 나타내는 문자열 식별자입니다. 인벤토리 모델에서 protectReferencedItem이 활성화된 경우, 참조원을 가진 아이템 세트는 소비하거나 삭제할 수 없습니다. |
| verifyType | 문자열 열거형<br>enum {<br>"not_entry",<br>"already_entry",<br>"empty",<br>"not_empty"<br>}<br> |  | ✓|  |  | 검증 종류not_entry: 지정한 참조원이 아직 등록되어 있지 않을 것 / already_entry: 지정한 참조원이 이미 등록되어 있을 것 / empty: 참조원으로 등록되어 있는 요소가 0개일 것 / not_empty: 참조원으로 등록되어 있는 요소가 1개 이상일 것 /  |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:VerifyReferenceOfByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "inventoryName": "[string]인벤토리 모델명",
        "userId": "[string]사용자ID",
        "itemName": "[string]아이템 모델명",
        "itemSetName": "[string]아이템 세트를 식별하는 이름",
        "referenceOf": "[string]참조원",
        "verifyType": "[string]검증 종류",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:VerifyReferenceOfByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  inventoryName: "[string]인벤토리 모델명"
  userId: "[string]사용자ID"
  itemName: "[string]아이템 모델명"
  itemSetName: "[string]아이템 세트를 식별하는 이름"
  referenceOf: "[string]참조원"
  verifyType: "[string]검증 종류"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").verify.verify_reference_of_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    inventoryName="[string]인벤토리 모델명",
    userId="[string]사용자ID",
    itemName="[string]아이템 모델명",
    itemSetName="[string]아이템 세트를 식별하는 이름",
    referenceOf="[string]참조원",
    verifyType="[string]검증 종류",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:VerifySimpleItemByUserId

사용자 ID를 지정하여 심플 아이템 소지 수량 검증<br>

지정된 사용자의 심플 아이템 수량이 지정된 조건을 만족하는지 검증합니다.<br>
6가지 비교 연산자를 지원합니다: less, lessEqual, greater, greaterEqual, equal, notEqual.

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 심플 인벤토리 모델 이름<br>심플 인벤토리 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| itemName | string |  | ✓|  |  ~ 128자 | 심플 아이템 모델 이름<br>이 레코드에 저장된 아이템의 종류를 정의하는 심플 아이템 모델의 이름입니다. 이 소지품이 어떤 아이템 정의에 대응하는지 식별하는 데 사용됩니다. |
| verifyType | 문자열 열거형<br>enum {<br>"less",<br>"lessEqual",<br>"greater",<br>"greaterEqual",<br>"equal",<br>"notEqual"<br>}<br> |  | ✓|  |  | 검증 종류less: 소지 수량이 지정 값 미만일 것 / lessEqual: 소지 수량이 지정 값 이하일 것 / greater: 소지 수량이 지정 값 초과일 것 / greaterEqual: 소지 수량이 지정 값 이상일 것 / equal: 소지 수량이 지정 값과 일치할 것 / notEqual: 소지 수량이 지정 값과 일치하지 않을 것 /  |
| count | long |  | ✓|  | 0 ~ 9223372036854775805 | 소지 수량 |
| multiplyValueSpecifyingQuantity | bool |  | | true |  | 수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:VerifySimpleItemByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "userId": "[string]사용자ID",
        "inventoryName": "[string]심플 인벤토리 모델 이름",
        "itemName": "[string]심플 아이템 모델 이름",
        "verifyType": "[string]검증 종류",
        "count": "[long]소지 수량",
        "multiplyValueSpecifyingQuantity": "[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:VerifySimpleItemByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  userId: "[string]사용자ID"
  inventoryName: "[string]심플 인벤토리 모델 이름"
  itemName: "[string]심플 아이템 모델 이름"
  verifyType: "[string]검증 종류"
  count: "[long]소지 수량"
  multiplyValueSpecifyingQuantity: "[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").verify.verify_simple_item_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    userId="[string]사용자ID",
    inventoryName="[string]심플 인벤토리 모델 이름",
    itemName="[string]심플 아이템 모델 이름",
    verifyType="[string]검증 종류",
    count="[long]소지 수량",
    multiplyValueSpecifyingQuantity="[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:VerifyBigItemByUserId

사용자 ID를 지정하여 거대 아이템의 소지 수량 검증<br>

지정 사용자의 거대 아이템 수량이 지정된 조건을 충족하는지 검증합니다.<br>
6가지 비교 연산자를 지원합니다: less, lessEqual, greater, greaterEqual, equal, notEqual.<br>
비교는 문자열 기반 수량에 대해 임의 정밀도 연산으로 수행됩니다.<br>
조건이 충족되지 않으면 오류가 반환되고, 충족되면 요청이 성공합니다.

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 거대 인벤토리 모델 이름<br>거대 인벤토리 모델 고유 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| itemName | string |  | ✓|  |  ~ 128자 | 거대 아이템 모델 이름<br>이 레코드에 저장된 아이템의 종류를 정의하는 거대 아이템 모델의 이름입니다. 이 거대 아이템 소지품이 어떤 아이템 정의에 대응하는지 식별하는 데 사용됩니다. |
| verifyType | 문자열 열거형<br>enum {<br>"less",<br>"lessEqual",<br>"greater",<br>"greaterEqual",<br>"equal",<br>"notEqual"<br>}<br> |  | ✓|  |  | 검증 종류less: 소지 수량이 지정 값 미만일 것 / lessEqual: 소지 수량이 지정 값 이하일 것 / greater: 소지 수량이 지정 값 초과일 것 / greaterEqual: 소지 수량이 지정 값 이상일 것 / equal: 소지 수량이 지정 값과 일치할 것 / notEqual: 소지 수량이 지정 값과 일치하지 않을 것 /  |
| count | string |  | ✓|  |  ~ 1024자 | 소지 수량<br>최대 1024자리까지의 정수값 문자열 |
| multiplyValueSpecifyingQuantity | bool |  | | true |  | 수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:VerifyBigItemByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "userId": "[string]사용자ID",
        "inventoryName": "[string]거대 인벤토리 모델 이름",
        "itemName": "[string]거대 아이템 모델 이름",
        "verifyType": "[string]검증 종류",
        "count": "[string]소지 수량",
        "multiplyValueSpecifyingQuantity": "[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:VerifyBigItemByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  userId: "[string]사용자ID"
  inventoryName: "[string]거대 인벤토리 모델 이름"
  itemName: "[string]거대 아이템 모델 이름"
  verifyType: "[string]검증 종류"
  count: "[string]소지 수량"
  multiplyValueSpecifyingQuantity: "[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").verify.verify_big_item_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    userId="[string]사용자ID",
    inventoryName="[string]거대 인벤토리 모델 이름",
    itemName="[string]거대 아이템 모델 이름",
    verifyType="[string]검증 종류",
    count="[string]소지 수량",
    multiplyValueSpecifyingQuantity="[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

## Consume Action

소비 액션

### Gs2Inventory:ConsumeItemSetByUserId

사용자 ID를 지정하여 아이템 세트를 소비<br>

지정된 사용자의 인벤토리 내 특정 아이템의 수량을 감소시킵니다.<br>
itemSetName을 지정하면 해당 특정 스택만 소비 대상이 됩니다. 지정하지 않으면 해당 아이템 타입의 모든 스택에서 소비됩니다.<br>
아이템 세트의 수량이 0이 되면 자동으로 삭제됩니다.<br>
충분한 아이템이 없는 경우 Insufficient 에러가 반환됩니다.

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

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 인벤토리 모델명<br>이 아이템 세트를 포함하는 인벤토리 모델의 이름입니다. itemName과 함께 사용되어 이 소지품이 어떤 인벤토리와 아이템 종류에 속하는지를 식별하는 데 사용됩니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| itemName | string |  | ✓|  |  ~ 128자 | 아이템 모델명<br>이 세트에 저장된 아이템의 종류를 정의하는 아이템 모델의 이름입니다. inventoryName과 조합하여 이 아이템 세트의 스택 상한과 다중 스택 동작을 결정합니다. |
| consumeCount | long |  | ✓|  | 1 ~ 9223372036854775805 | 소비 수량 |
| itemSetName | string |  | |  |  ~ 36자 | 아이템 세트를 식별하는 이름 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:ConsumeItemSetByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "inventoryName": "[string]인벤토리 모델명",
        "userId": "[string]사용자ID",
        "itemName": "[string]아이템 모델명",
        "consumeCount": "[long]소비 수량",
        "itemSetName": "[string]아이템 세트를 식별하는 이름",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:ConsumeItemSetByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  inventoryName: "[string]인벤토리 모델명"
  userId: "[string]사용자ID"
  itemName: "[string]아이템 모델명"
  consumeCount: "[long]소비 수량"
  itemSetName: "[string]아이템 세트를 식별하는 이름"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").consume.consume_item_set_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    inventoryName="[string]인벤토리 모델명",
    userId="[string]사용자ID",
    itemName="[string]아이템 모델명",
    consumeCount="[long]소비 수량",
    itemSetName="[string]아이템 세트를 식별하는 이름",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:ConsumeSimpleItemsByUserId

사용자 ID를 지정하여 심플 아이템 소비<br>

소비 수량의 배치를 사용하여 지정된 사용자의 심플 인벤토리 내 아이템 수량을 감소시킵니다.<br>
단일 원자적 작업으로 여러 아이템을 소비할 수 있습니다. 어느 하나의 아이템 수량이라도 부족한 경우, 작업 전체가 실패합니다.

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

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 심플 인벤토리 모델 이름<br>심플 인벤토리 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| consumeCounts | List&lt;ConsumeCount&gt; |  | ✓|  | 1 ~ 100 items | 심플 아이템의 소비 수량 리스트 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:ConsumeSimpleItemsByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "inventoryName": "[string]심플 인벤토리 모델 이름",
        "userId": "[string]사용자ID",
        "consumeCounts": [
            {
                "itemName": "[string]심플 아이템 모델 이름",
                "count": "[long]소비 수량"
            }
        ],
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:ConsumeSimpleItemsByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  inventoryName: "[string]심플 인벤토리 모델 이름"
  userId: "[string]사용자ID"
  consumeCounts: 
    - itemName: "[string]심플 아이템 모델 이름"
      count: "[long]소비 수량"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").consume.consume_simple_items_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    inventoryName="[string]심플 인벤토리 모델 이름",
    userId="[string]사용자ID",
    consumeCounts={
        {
            itemName="[string]심플 아이템 모델 이름",
            count="[long]소비 수량"
        }
    },
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:ConsumeBigItemByUserId

사용자 ID를 지정하여 거대 아이템 소비<br>

임의 정밀도 연산을 사용하여 지정 사용자의 거대 아이템 수량에서 지정된 수량을 감산합니다.<br>
consumeCount는 최대 1024자리의 유효한 정수 문자열이어야 합니다.<br>
현재 수량이 부족한 경우 Insufficient 오류가 반환되며, 감산은 이루어지지 않습니다.<br>
네임스페이스 설정을 통해 거대 아이템 소비 시 커스텀 로직을 실행하는 GS2-Script를 설정할 수 있습니다.

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

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 거대 인벤토리 모델 이름<br>거대 인벤토리 모델 고유 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| itemName | string |  | ✓|  |  ~ 128자 | 거대 아이템 모델 이름<br>거대 아이템 모델 고유 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| consumeCount | string |  | ✓|  |  ~ 1024자 | 거대 아이템의 소비 수량<br>최대 1024자리까지의 정수값 문자열 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:ConsumeBigItemByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "inventoryName": "[string]거대 인벤토리 모델 이름",
        "userId": "[string]사용자ID",
        "itemName": "[string]거대 아이템 모델 이름",
        "consumeCount": "[string]거대 아이템의 소비 수량",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:ConsumeBigItemByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  inventoryName: "[string]거대 인벤토리 모델 이름"
  userId: "[string]사용자ID"
  itemName: "[string]거대 아이템 모델 이름"
  consumeCount: "[string]거대 아이템의 소비 수량"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").consume.consume_big_item_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    inventoryName="[string]거대 인벤토리 모델 이름",
    userId="[string]사용자ID",
    itemName="[string]거대 아이템 모델 이름",
    consumeCount="[string]거대 아이템의 소비 수량",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

## Acquire Action

입수 액션

### Gs2Inventory:AddCapacityByUserId

사용자 ID를 지정하여 인벤토리의 용량 크기를 가산<br>

지정된 양만큼 사용자의 인벤토리 용량을 증가시킵니다.<br>
결과 용량은 인벤토리 모델의 maxCapacity 를 초과할 수 없습니다.<br>
인벤토리가 아직 존재하지 않는 경우, initialCapacity 로 자동 생성된 후 지정된 값이 가산됩니다.

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

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 인벤토리 모델 이름<br>이 인벤토리의 구조와 용량 설정을 정의하는 인벤토리 모델의 이름입니다. 사용자의 인벤토리 인스턴스를 모델 정의에 연결하여 사용 가능한 아이템의 종류와 용량 제한을 결정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| addCapacityValue | int |  | ✓|  | 1 ~ 2147483646 | 가산할 용량 크기 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:AddCapacityByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "inventoryName": "[string]인벤토리 모델 이름",
        "userId": "[string]사용자ID",
        "addCapacityValue": "[int]가산할 용량 크기",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:AddCapacityByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  inventoryName: "[string]인벤토리 모델 이름"
  userId: "[string]사용자ID"
  addCapacityValue: "[int]가산할 용량 크기"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").acquire.add_capacity_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    inventoryName="[string]인벤토리 모델 이름",
    userId="[string]사용자ID",
    addCapacityValue="[int]가산할 용량 크기",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:SetCapacityByUserId

사용자 ID를 지정하여 인벤토리의 용량 크기를 설정<br>

사용자의 인벤토리 용량을 지정된 절대값으로 설정합니다.<br>
갱신 전후의 인벤토리 상태를 모두 반환하므로, 신구 용량 값을 비교할 수 있습니다.<br>
새로운 용량 값은 인벤토리 모델의 maxCapacity 를 초과할 수 없습니다.

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

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 인벤토리 모델 이름<br>이 인벤토리의 구조와 용량 설정을 정의하는 인벤토리 모델의 이름입니다. 사용자의 인벤토리 인스턴스를 모델 정의에 연결하여 사용 가능한 아이템의 종류와 용량 제한을 결정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| newCapacityValue | int |  | ✓|  | 1 ~ 2147483646 | 인벤토리의 새로운 최대 용량 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:SetCapacityByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "inventoryName": "[string]인벤토리 모델 이름",
        "userId": "[string]사용자ID",
        "newCapacityValue": "[int]인벤토리의 새로운 최대 용량",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:SetCapacityByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  inventoryName: "[string]인벤토리 모델 이름"
  userId: "[string]사용자ID"
  newCapacityValue: "[int]인벤토리의 새로운 최대 용량"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").acquire.set_capacity_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    inventoryName="[string]인벤토리 모델 이름",
    userId="[string]사용자ID",
    newCapacityValue="[int]인벤토리의 새로운 최대 용량",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:AcquireItemSetByUserId

사용자 ID를 지정하여 아이템 세트 입수<br>

사용자의 인벤토리에 아이템을 추가합니다. 기존 아이템 세트에 여유(스택 제한 미만)가 있는 경우 그곳에 추가되며, 그렇지 않은 경우 복수 스택이 허용되어 있으면 새로운 아이템 세트가 생성됩니다.<br>
선택적으로 expiresAt을 지정하여 새로 생성되는 아이템 세트의 유효기간을 설정할 수 있습니다. 유효기간이 이미 지난 아이템은 빈 것으로 취급됩니다.<br>
createNewItemSet이 true인 경우, 기존 세트에 여유가 있어도 항상 새로운 아이템 세트가 생성됩니다.<br>
합계 수량이 인벤토리 용량을 초과하는 경우 오버플로우 수량이 반환되며, 네임스페이스 설정에 따라 오버플로우분이 GS2-Inbox로 전송될 수 있습니다.

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

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 인벤토리 모델 이름<br>인벤토리 모델 고유 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| itemName | string |  | ✓|  |  ~ 128자 | 아이템 모델명<br>이 세트에 저장된 아이템의 종류를 정의하는 아이템 모델의 이름입니다. inventoryName과 조합하여 이 아이템 세트의 스택 상한과 다중 스택 동작을 결정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| acquireCount | long |  | ✓|  | 1 ~ 9223372036854775805 | 입수하는 양 |
| expiresAt | long |  | | 0 |  | 유효기간<br>UNIX 시간·밀리초 |
| createNewItemSet | bool |  | | false |  | 기존 아이템 세트에 여유가 있더라도 새로운 아이템 세트를 생성할지 여부 |
| itemSetName | string |  | |  |  ~ 36자 | 아이템 세트를 식별하는 이름 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:AcquireItemSetByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "inventoryName": "[string]인벤토리 모델 이름",
        "itemName": "[string]아이템 모델명",
        "userId": "[string]사용자ID",
        "acquireCount": "[long]입수하는 양",
        "expiresAt": "[long]유효기간",
        "createNewItemSet": "[bool]기존 아이템 세트에 여유가 있더라도 새로운 아이템 세트를 생성할지 여부",
        "itemSetName": "[string]아이템 세트를 식별하는 이름",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:AcquireItemSetByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  inventoryName: "[string]인벤토리 모델 이름"
  itemName: "[string]아이템 모델명"
  userId: "[string]사용자ID"
  acquireCount: "[long]입수하는 양"
  expiresAt: "[long]유효기간"
  createNewItemSet: "[bool]기존 아이템 세트에 여유가 있더라도 새로운 아이템 세트를 생성할지 여부"
  itemSetName: "[string]아이템 세트를 식별하는 이름"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").acquire.acquire_item_set_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    inventoryName="[string]인벤토리 모델 이름",
    itemName="[string]아이템 모델명",
    userId="[string]사용자ID",
    acquireCount="[long]입수하는 양",
    expiresAt="[long]유효기간",
    createNewItemSet="[bool]기존 아이템 세트에 여유가 있더라도 새로운 아이템 세트를 생성할지 여부",
    itemSetName="[string]아이템 세트를 식별하는 이름",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:AcquireItemSetWithGradeByUserId

사용자 ID를 지정하여 GS2-Grade에 그레이드를 설정하면서 아이템 세트를 1개 입수<br>

아이템을 1개 입수함과 동시에 GS2-Grade를 통해 그레이드 값을 설정합니다.<br>
각 아이템이 서로 다른 그레이드 값을 가지는 품질/랭크 시스템(예: 스탯이 다른 장비)을 가진 아이템에 사용됩니다.<br>
항상 새로운 아이템 세트가 생성되며(createNewItemSet의 동작), 아이템 입수 후 GS2-Grade의 SetGradeByUserId를 통해 그레이드가 설정됩니다.

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

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 인벤토리 모델 이름<br>인벤토리 모델 고유 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| itemName | string |  | ✓|  |  ~ 128자 | 아이템 모델명<br>이 세트에 저장된 아이템의 종류를 정의하는 아이템 모델의 이름입니다. inventoryName과 조합하여 이 아이템 세트의 스택 상한과 다중 스택 동작을 결정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| gradeModelId | string |  | ✓|  |  ~ 1024자 | 그레이드 모델 GRN |
| gradeValue | long |  | ✓|  | 1 ~ 9223372036854775805 | 설정할 그레이드 값 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:AcquireItemSetWithGradeByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "inventoryName": "[string]인벤토리 모델 이름",
        "itemName": "[string]아이템 모델명",
        "userId": "[string]사용자ID",
        "gradeModelId": "[string]그레이드 모델 GRN",
        "gradeValue": "[long]설정할 그레이드 값",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:AcquireItemSetWithGradeByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  inventoryName: "[string]인벤토리 모델 이름"
  itemName: "[string]아이템 모델명"
  userId: "[string]사용자ID"
  gradeModelId: "[string]그레이드 모델 GRN"
  gradeValue: "[long]설정할 그레이드 값"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").acquire.acquire_item_set_with_grade_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    inventoryName="[string]인벤토리 모델 이름",
    itemName="[string]아이템 모델명",
    userId="[string]사용자ID",
    gradeModelId="[string]그레이드 모델 GRN",
    gradeValue="[long]설정할 그레이드 값",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:AddReferenceOfByUserId

사용자 ID를 지정하여 아이템에 참조원을 추가<br>

지정된 사용자의 지정된 아이템 세트에 참조원 문자열을 등록합니다.<br>
참조원은 아이템 세트를 외부 엔티티(장비 슬롯이나 캐릭터 등)에 연관 짓습니다.<br>
인벤토리 모델에서 protectReferencedItem 이 활성화된 경우, 참조원을 가진 아이템은 소비·삭제할 수 없게 되어, 장비 중인 아이템이 실수로 소비되는 것을 방지할 수 있습니다.

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

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 인벤토리 모델명<br>이 아이템 세트를 포함하는 인벤토리 모델의 이름입니다. itemName과 함께 사용되어 이 소지품이 어떤 인벤토리와 아이템 종류에 속하는지를 식별하는 데 사용됩니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| itemName | string |  | ✓|  |  ~ 128자 | 아이템 모델명<br>이 세트에 저장된 아이템의 종류를 정의하는 아이템 모델의 이름입니다. inventoryName과 조합하여 이 아이템 세트의 스택 상한과 다중 스택 동작을 결정합니다. |
| itemSetName | string |  | ✓| UUID |  ~ 36자 | 아이템 세트를 식별하는 이름<br>아이템 세트의 고유한 이름을 보유합니다.<br>이름은 UUID(Universally Unique Identifier) 형식으로 자동 생성되며, 각 아이템 세트를 식별하는 데 사용됩니다. |
| referenceOf | string |  | ✓|  |  ~ 1024자 | 참조원<br>장비 슬롯이나 편성 바인드 등, 이 아이템 세트에 대한 외부 참조를 나타내는 문자열 식별자입니다. 인벤토리 모델에서 protectReferencedItem이 활성화된 경우, 참조원을 가진 아이템 세트는 소비하거나 삭제할 수 없습니다. |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:AddReferenceOfByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "inventoryName": "[string]인벤토리 모델명",
        "userId": "[string]사용자ID",
        "itemName": "[string]아이템 모델명",
        "itemSetName": "[string]아이템 세트를 식별하는 이름",
        "referenceOf": "[string]참조원",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:AddReferenceOfByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  inventoryName: "[string]인벤토리 모델명"
  userId: "[string]사용자ID"
  itemName: "[string]아이템 모델명"
  itemSetName: "[string]아이템 세트를 식별하는 이름"
  referenceOf: "[string]참조원"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").acquire.add_reference_of_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    inventoryName="[string]인벤토리 모델명",
    userId="[string]사용자ID",
    itemName="[string]아이템 모델명",
    itemSetName="[string]아이템 세트를 식별하는 이름",
    referenceOf="[string]참조원",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:DeleteReferenceOfByUserId

사용자 ID를 지정하여 아이템의 참조원을 삭제<br>

지정된 사용자의 지정된 아이템 세트에서 특정 참조원 문자열을 삭제합니다.<br>
삭제 후, protectReferencedItem 이 활성화되어 있고 다른 참조원이 남아있지 않은 경우, 아이템은 다시 소비·삭제가 가능해집니다.

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

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 인벤토리 모델명<br>이 아이템 세트를 포함하는 인벤토리 모델의 이름입니다. itemName과 함께 사용되어 이 소지품이 어떤 인벤토리와 아이템 종류에 속하는지를 식별하는 데 사용됩니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| itemName | string |  | ✓|  |  ~ 128자 | 아이템 모델명<br>이 세트에 저장된 아이템의 종류를 정의하는 아이템 모델의 이름입니다. inventoryName과 조합하여 이 아이템 세트의 스택 상한과 다중 스택 동작을 결정합니다. |
| itemSetName | string |  | ✓| UUID |  ~ 36자 | 아이템 세트를 식별하는 이름<br>아이템 세트의 고유한 이름을 보유합니다.<br>이름은 UUID(Universally Unique Identifier) 형식으로 자동 생성되며, 각 아이템 세트를 식별하는 데 사용됩니다. |
| referenceOf | string |  | ✓|  |  ~ 1024자 | 참조원<br>장비 슬롯이나 편성 바인드 등, 이 아이템 세트에 대한 외부 참조를 나타내는 문자열 식별자입니다. 인벤토리 모델에서 protectReferencedItem이 활성화된 경우, 참조원을 가진 아이템 세트는 소비하거나 삭제할 수 없습니다. |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:DeleteReferenceOfByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "inventoryName": "[string]인벤토리 모델명",
        "userId": "[string]사용자ID",
        "itemName": "[string]아이템 모델명",
        "itemSetName": "[string]아이템 세트를 식별하는 이름",
        "referenceOf": "[string]참조원",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:DeleteReferenceOfByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  inventoryName: "[string]인벤토리 모델명"
  userId: "[string]사용자ID"
  itemName: "[string]아이템 모델명"
  itemSetName: "[string]아이템 세트를 식별하는 이름"
  referenceOf: "[string]참조원"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").acquire.delete_reference_of_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    inventoryName="[string]인벤토리 모델명",
    userId="[string]사용자ID",
    itemName="[string]아이템 모델명",
    itemSetName="[string]아이템 세트를 식별하는 이름",
    referenceOf="[string]참조원",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:AcquireSimpleItemsByUserId

사용자 ID를 지정하여 심플 아이템 입수<br>

입수 수량의 배치를 사용하여 사용자의 심플 인벤토리에 아이템을 추가합니다.<br>
단일 원자적 작업으로 여러 아이템을 입수할 수 있습니다. acquireCounts 배열로 각 아이템의 이름과 수량을 지정합니다.<br>
일반적인 아이템 세트와 달리, 심플 아이템에는 용량 제한, 스택 제한, 유효기간이 없습니다.

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

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 심플 인벤토리 모델 이름<br>심플 인벤토리 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| acquireCounts | List&lt;AcquireCount&gt; |  | ✓|  | 1 ~ 100 items | 심플 아이템의 입수 수량 리스트 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:AcquireSimpleItemsByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "inventoryName": "[string]심플 인벤토리 모델 이름",
        "userId": "[string]사용자ID",
        "acquireCounts": [
            {
                "itemName": "[string]심플 아이템 모델 이름",
                "count": "[long]입수하는 양"
            }
        ],
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:AcquireSimpleItemsByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  inventoryName: "[string]심플 인벤토리 모델 이름"
  userId: "[string]사용자ID"
  acquireCounts: 
    - itemName: "[string]심플 아이템 모델 이름"
      count: "[long]입수하는 양"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").acquire.acquire_simple_items_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    inventoryName="[string]심플 인벤토리 모델 이름",
    userId="[string]사용자ID",
    acquireCounts={
        {
            itemName="[string]심플 아이템 모델 이름",
            count="[long]입수하는 양"
        }
    },
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:SetSimpleItemsByUserId

사용자 ID를 지정하여 심플 아이템 설정<br>

단일 원자적 작업으로 여러 심플 아이템의 절대 수량을 설정합니다.<br>
counts 배열로 각 아이템의 이름과 목표 수량을 지정합니다.<br>
입수/소비가 상대적 연산인 것과 달리, 이 경우 현재 수량을 완전히 덮어씁니다.

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

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 심플 인벤토리 모델 이름<br>심플 인벤토리 모델 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| counts | List&lt;HeldCount&gt; |  | ✓|  | 1 ~ 100 items | 심플 아이템의 소지 수량 목록 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:SetSimpleItemsByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "inventoryName": "[string]심플 인벤토리 모델 이름",
        "userId": "[string]사용자ID",
        "counts": [
            {
                "itemName": "[string]심플 아이템 모델 이름",
                "count": "[long]소지 수량"
            }
        ],
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:SetSimpleItemsByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  inventoryName: "[string]심플 인벤토리 모델 이름"
  userId: "[string]사용자ID"
  counts: 
    - itemName: "[string]심플 아이템 모델 이름"
      count: "[long]소지 수량"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").acquire.set_simple_items_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    inventoryName="[string]심플 인벤토리 모델 이름",
    userId="[string]사용자ID",
    counts={
        {
            itemName="[string]심플 아이템 모델 이름",
            count="[long]소지 수량"
        }
    },
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:AcquireBigItemByUserId

사용자 ID를 지정하여 거대 아이템 입수<br>

임의 정밀도 연산을 사용하여 사용자의 거대 아이템 수량에 지정된 수량을 가산합니다.<br>
acquireCount는 최대 1024자리의 유효한 정수 문자열이어야 하며, 형식이 올바르지 않으면 오류가 발생합니다.<br>
아이템이 아직 존재하지 않는 경우 자동으로 생성됩니다.<br>
네임스페이스 설정을 통해 거대 아이템 입수 시 커스텀 로직을 실행하는 GS2-Script를 설정할 수 있습니다.

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

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 거대 인벤토리 모델 이름<br>거대 인벤토리 모델 고유 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| itemName | string |  | ✓|  |  ~ 128자 | 거대 아이템 모델 이름<br>거대 아이템 모델 고유 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| acquireCount | string |  | ✓|  |  ~ 1024자 | 거대 아이템의 입수 수량<br>최대 1024자리까지의 정수값 문자열 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:AcquireBigItemByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "inventoryName": "[string]거대 인벤토리 모델 이름",
        "userId": "[string]사용자ID",
        "itemName": "[string]거대 아이템 모델 이름",
        "acquireCount": "[string]거대 아이템의 입수 수량",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:AcquireBigItemByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  inventoryName: "[string]거대 인벤토리 모델 이름"
  userId: "[string]사용자ID"
  itemName: "[string]거대 아이템 모델 이름"
  acquireCount: "[string]거대 아이템의 입수 수량"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").acquire.acquire_big_item_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    inventoryName="[string]거대 인벤토리 모델 이름",
    userId="[string]사용자ID",
    itemName="[string]거대 아이템 모델 이름",
    acquireCount="[string]거대 아이템의 입수 수량",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Inventory:SetBigItemByUserId

사용자 ID를 지정하여 거대 아이템 설정<br>

거대 아이템의 수량을 지정된 절대값으로 설정하여 현재 수량을 완전히 대체합니다.<br>
수량은 최대 1024자리의 유효한 정수 문자열이어야 합니다.<br>
아이템이 아직 존재하지 않는 경우 자동으로 생성됩니다.<br>
입수·소비와 같은 상대적 연산과 달리, 정확한 값을 직접 설정합니다.

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

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| inventoryName | string |  | ✓|  |  ~ 128자 | 거대 인벤토리 모델 이름<br>거대 인벤토리 모델 고유 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| itemName | string |  | ✓|  |  ~ 128자 | 거대 아이템 모델 이름<br>거대 아이템 모델 고유 이름입니다. 영숫자 및 -(하이픈), _(언더스코어), .(마침표)로 지정합니다. |
| count | string |  | ✓|  |  ~ 1024자 | 거대 아이템의 수량<br>최대 1024자리까지의 정수값 문자열 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Inventory:SetBigItemByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "inventoryName": "[string]거대 인벤토리 모델 이름",
        "userId": "[string]사용자ID",
        "itemName": "[string]거대 아이템 모델 이름",
        "count": "[string]거대 아이템의 수량",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Inventory:SetBigItemByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  inventoryName: "[string]거대 인벤토리 모델 이름"
  userId: "[string]사용자ID"
  itemName: "[string]거대 아이템 모델 이름"
  count: "[string]거대 아이템의 수량"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("inventory").acquire.set_big_item_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    inventoryName="[string]거대 인벤토리 모델 이름",
    userId="[string]사용자ID",
    itemName="[string]거대 아이템 모델 이름",
    count="[string]거대 아이템의 수량",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---



