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

# GS2-Distributor 트랜잭션 액션

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




## Verify Action

검증 액션

### Gs2Distributor:IfExpressionByUserId

조건을 검증하고 소비 액션의 내용을 전환<br>

검증 액션을 조건으로 평가하고, 결과에 따라 trueActions 또는 falseActions의 소비 액션 목록을 실행합니다.<br>
이를 통해 트랜잭션 내에서 조건 분기가 가능해지며, 검증 결과에 따라 서로 다른 소비 액션을 실행할 수 있습니다.<br>
multiplyValueSpecifyingQuantity가 활성화된 경우, 검증에 사용되는 값도 지정된 수량만큼 곱해집니다.

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| condition | VerifyAction |  | ✓|  |  | 조건 |
| trueActions | List&lt;ConsumeAction&gt; |  | |  | 0 ~ 10 items | 조건이 참일 때 실행되는 소비 액션 목록 |
| falseActions | List&lt;ConsumeAction&gt; |  | |  | 0 ~ 10 items | 조건이 거짓일 때 실행되는 소비 액션 목록 |
| multiplyValueSpecifyingQuantity | bool |  | | true |  | 수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Distributor:IfExpressionByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "userId": "[string]사용자ID",
        "condition": {
            "action": "[string]검증 액션에서 실행할 액션의 종류",
            "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
        },
        "trueActions": [
            {
                "action": "[string]소비 액션에서 실행할 액션의 종류",
                "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
            }
        ],
        "falseActions": [
            {
                "action": "[string]소비 액션에서 실행할 액션의 종류",
                "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
            }
        ],
        "multiplyValueSpecifyingQuantity": "[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부",
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Distributor:IfExpressionByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  userId: "[string]사용자ID"
  condition: 
    action: "[string]검증 액션에서 실행할 액션의 종류"
    request: "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
  trueActions: 
    - action: "[string]소비 액션에서 실행할 액션의 종류"
      request: "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
  falseActions: 
    - action: "[string]소비 액션에서 실행할 액션의 종류"
      request: "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
  multiplyValueSpecifyingQuantity: "[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("distributor").verify.if_expression_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    userId="[string]사용자ID",
    condition={
        action="[string]검증 액션에서 실행할 액션의 종류",
        request="[string]액션 실행 시 사용되는 요청의 JSON 문자열"
    },
    trueActions={
        {
            action="[string]소비 액션에서 실행할 액션의 종류",
            request="[string]액션 실행 시 사용되는 요청의 JSON 문자열"
        }
    },
    falseActions={
        {
            action="[string]소비 액션에서 실행할 액션의 종류",
            request="[string]액션 실행 시 사용되는 요청의 JSON 문자열"
        }
    },
    multiplyValueSpecifyingQuantity="[bool]수량을 지정했을 때, 검증에 사용하는 값도 곱할지 여부",
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Distributor:AndExpressionByUserId

여러 검증 액션을 실행하여 모두 참인지 판정<br>

여러 검증 액션을 실행하고, 모두 참으로 평가된 경우에만 성공합니다(AND 논리).<br>
검증 액션 중 하나라도 실패하면 전체 표현식이 실패합니다.<br>
트랜잭션 실행 전에 모두 충족해야 하는 여러 전제 조건을 조합할 때 유용합니다.

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| actions | List&lt;VerifyAction&gt; |  | |  | 0 ~ 10 items | 검증 액션 목록 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Distributor:AndExpressionByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "userId": "[string]사용자ID",
        "actions": [
            {
                "action": "[string]검증 액션에서 실행할 액션의 종류",
                "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
            }
        ],
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Distributor:AndExpressionByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  userId: "[string]사용자ID"
  actions: 
    - action: "[string]검증 액션에서 실행할 액션의 종류"
      request: "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("distributor").verify.and_expression_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    userId="[string]사용자ID",
    actions={
        {
            action="[string]검증 액션에서 실행할 액션의 종류",
            request="[string]액션 실행 시 사용되는 요청의 JSON 문자열"
        }
    },
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---

### Gs2Distributor:OrExpressionByUserId

여러 검증 액션을 실행하여 하나라도 참인지 판정<br>

여러 검증 액션을 실행하고, 그중 하나라도 참으로 평가되면 성공합니다(OR 논리).<br>
모든 검증 액션이 실패한 경우에만 표현식이 실패합니다.<br>
그중 하나만 충족해도 되는 대체 조건을 정의할 때 유용합니다.

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

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128자 | 네임스페이스 이름<br>네임스페이스 고유의 이름입니다. 영숫자 및 -(하이픈) _(언더스코어) .(마침표)로 지정합니다. |
| userId | string |  | ✓|  |  ~ 128자 | 사용자ID<br>`#{userId}`로 설정하면 로그인 중인 사용자ID로 치환됩니다. |
| actions | List&lt;VerifyAction&gt; |  | |  | 0 ~ 10 items | 검증 액션 목록 |
| timeOffsetToken | string |  | |  |  ~ 1024자 | 타임 오프셋 토큰 |




**JSON**
```json
{
    "action": "Gs2Distributor:OrExpressionByUserId",
    "request": {
        "namespaceName": "[string]네임스페이스 이름",
        "userId": "[string]사용자ID",
        "actions": [
            {
                "action": "[string]검증 액션에서 실행할 액션의 종류",
                "request": "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
            }
        ],
        "timeOffsetToken": "[string]타임 오프셋 토큰"
    }
}
```

**YAML**
```yaml

action: Gs2Distributor:OrExpressionByUserId
request:
  namespaceName: "[string]네임스페이스 이름"
  userId: "[string]사용자ID"
  actions: 
    - action: "[string]검증 액션에서 실행할 액션의 종류"
      request: "[string]액션 실행 시 사용되는 요청의 JSON 문자열"
  timeOffsetToken: "[string]타임 오프셋 토큰"
```

**GS2-Script**
```lua

transaction.service("distributor").verify.or_expression_by_user_id({
    namespaceName="[string]네임스페이스 이름",
    userId="[string]사용자ID",
    actions={
        {
            action="[string]검증 액션에서 실행할 액션의 종류",
            request="[string]액션 실행 시 사용되는 요청의 JSON 문자열"
        }
    },
    timeOffsetToken="[string]타임 오프셋 토큰",
})
```


---





