# Reason Codes

## Retrieves a list of reason codes, optionally filtered by search text.

`IReadOnlyList<ReasonCodeListReasonCodesResponse> ReasonCodes.ListReasonCodes(ReasonCodeListReasonCodesParams?parameters, CancellationTokencancellationToken = default)`

**get** `/api/v2/public/reasoncodes`

Retrieves a list of reason codes, optionally filtered by search text.

### Parameters

- `ReasonCodeListReasonCodesParams parameters`

  - `string code`

    Filter by reason code.

  - `string codeDescription`

    Filter by reason code description.

  - `string functionKey`

    Filter by function key.

  - `Boolean isGain`

    Filter by gain-type reason codes.

  - `Boolean isLoss`

    Filter by loss-type reason codes.

  - `Boolean isStore`

    Filter by store-level reason codes.

### Example

```csharp
ReasonCodeListReasonCodesParams parameters = new();

var response = await client.ReasonCodes.ListReasonCodes(parameters);

Console.WriteLine(response);
```

#### Response

```json
[
  {
    "code": 0,
    "is_comment_mandatory": true,
    "is_gain": true,
    "is_image_mandatory": true,
    "is_loss": true,
    "is_order_number_mandatory": true,
    "is_picking_list": true,
    "is_rollback_allowed": true,
    "is_sales_order_discsount": true,
    "is_store": true,
    "reason_code_type": 0,
    "review_status": 0,
    "code_description": "code_description",
    "description": "description",
    "function_key": "function_key",
    "store_type": "store_type"
  }
]
```

## Create or update public v2 reason codes

`ReasonCodeCreateReasonCodesResponse ReasonCodes.CreateReasonCodes(ReasonCodeCreateReasonCodesParamsparameters, CancellationTokencancellationToken = default)`

**post** `/api/v2/public/reasoncodes`

Creates or updates reason codes. See request schema for required fields and enum details.

### Parameters

- `ReasonCodeCreateReasonCodesParams parameters`

  - `required IReadOnlyList<ReasonCode> reasonCodes`

    Body param: List of reason codes to create or update.

    - `required Int DefaultReviewStatus`

      Default review status value. Required.

    - `required Boolean IsCommentMandatory`

      Indicates if comment is mandatory. Required.

    - `required Boolean IsGain`

      Indicates if this is a gain reason code. Required.

    - `required Boolean IsImageMandatory`

      Indicates if image is mandatory. Required.

    - `required Boolean IsLoss`

      Indicates if this is a loss reason code. Required.

    - `required Boolean IsOrderNumberMandatory`

      Indicates if order number is mandatory. Required.

    - `required Boolean IsPickingList`

      Indicates if used for picking list. Required.

    - `required Boolean IsSalesOrderDiscount`

      Indicates if used for sales order discount. Required.

    - `required Boolean IsStore`

      Indicates if the reason code is store-visible. Required.

    - `required Int ReasonCode`

      Reason code identifier. Required.

    - `required string ReasonCodeDescription`

      Reason code description. Required. Max length: 250.

    - `required ReasonCodeType ReasonCodeType`

      Allowed values:<br/>1 = LossReasonCode (Loss Reason Code)<br/>2 = RejectionReasonCode (Rejection Reason Code)<br/>3 = MovementReasonCode (Movement Reason Code)<br/>4 = SalesOrderDiscountReasonCode (Sales Order Discount Reason Code)<br/>5 = LocationTags (Location Tags Code)<br/>6 = CountReasonCode (Count Reason Code)<br/>7 = GainLossReasonCode (Gain Loss Code)<br/>8 = SalesOrderTypeReasonCode (Sales Order Type)<br/>9 = DeliveryOrderTypeReasonCode (Delivery Order Type)

      - `11`

      - `22`

      - `33`

      - `44`

      - `55`

      - `66`

      - `77`

      - `88`

      - `99`

    - `string? CodeDescription`

      Optional additional code description. Max length: 500.

  - `Boolean flush`

    Query param: When true, existing reason codes are flushed before inserting.

### Returns

- `class ReasonCodeCreateReasonCodesResponse:`

  Standard success response returned by mutation endpoints.

  - `required Boolean Success`

    Indicates whether the operation completed successfully.

  - `string? Data`

    Optional data payload returned by the operation.

  - `string? Message`

    Human-readable message describing the result.

### Example

```csharp
ReasonCodeCreateReasonCodesParams parameters = new()
{
    ReasonCodes =
    [
        new()
        {
            DefaultReviewStatus = 0,
            IsCommentMandatory = true,
            IsGain = false,
            IsImageMandatory = false,
            IsLoss = true,
            IsOrderNumberMandatory = false,
            IsPickingList = false,
            IsSalesOrderDiscount = false,
            IsStore = true,
            ReasonCode = 101,
            ReasonCodeDescription = "Damaged on arrival",
            ReasonCodeType = ReasonCodeType.1,
            CodeDescription = "Used when product arrives damaged",
        },
    ],
};

var response = await client.ReasonCodes.CreateReasonCodes(parameters);

Console.WriteLine(response);
```

#### Response

```json
{
  "success": true,
  "data": "data",
  "message": "message"
}
```
