---
# System prepended metadata

title: Untitled

---

Пример запроса на вывод USDT

GraphQL:
```graphql
query findManyAssetPaymentMethod($asset: String, $userId: String, $type: TransferType!) {
  data: findManyAssetPaymentMethod(asset: $asset, userId: $userId, type: $type) {
    ...Select
  }
} fragment Select on AssetPaymentMethod {
    code
    icon
    name
    description
    processor
    transferType
    asset
    Asset {
        code
        type
    }
    fields {
        name
        description
        label
        position
        type
        validators
        isRequired
    }
    messages {
        type
        header
        description
    }
    Product {
        minAmount
        maxAmount
        feeFixed
        feeRate
    }
}
```

Variables:
```json
{
  "asset": "USDT",
  "type": "Withdraw",
  "userId": "93adcb31-a266-4c6e-98e8-5fc574cd230d"
}
```
Response:

```json
{
  "data": {
    "data": [
      {
        "code": "TEST",
        "icon": "https://raw.githubusercontent.com/user-dob/docker-microservices/master/wallet.svg",
        "name": "Test",
        "description": "",
        "processor": "test",
        "transferType": "Withdraw",
        "asset": "USDT",
        "Asset": {
          "code": "USDT",
          "type": "Crypto"
        },
        "fields": [],
        "messages": [],
        "Product": {
          "minAmount": null,
          "maxAmount": null,
          "feeFixed": "0.0",
          "feeRate": "0.0"
        }
      },
      {
        "code": "TRX",
        "icon": "https://raw.githubusercontent.com/user-dob/docker-microservices/master/wallet.svg",
        "name": "На кошелек TRC20",
        "description": "",
        "processor": "crypto-proxy",
        "transferType": "Withdraw",
        "asset": "USDT",
        "Asset": {
          "code": "USDT",
          "type": "Crypto"
        },
        "fields": [
          {
            "name": "address",
            "description": "Адрес",
            "label": "Адрес",
            "position": 0,
            "type": "string",
            "validators": [
              {
                "type": "crypto-address",
                "message": "Адрес не действителен",
                "blockchain": "TRX"
              }
            ],
            "isRequired": true
          }
        ],
        "messages": [],
        "Product": {
          "minAmount": null,
          "maxAmount": null,
          "feeFixed": "0.0",
          "feeRate": "0.0"
        }
      },
      {
        "code": "KUNA-PRO",
        "icon": "https://raw.githubusercontent.com/user-dob/docker-microservices/master/wallet.svg",
        "name": "Трансфер",
        "description": "",
        "processor": "kuna-pro",
        "transferType": "Withdraw",
        "asset": "USDT",
        "Asset": {
          "code": "USDT",
          "type": "Crypto"
        },
        "fields": [
          {
            "name": "to",
            "description": "Kuna Id получателя",
            "label": "Получатель",
            "position": 0,
            "type": "string",
            "validators": [
              {
                "type": "regex",
                "regex": "^kunaid-.{3,10}$",
                "message": "Неверно введен kunaid"
              }
            ],
            "isRequired": true
          },
          {
            "name": "comment",
            "description": "Публичный комментарий",
            "label": "Комментарий",
            "position": 1,
            "type": "string",
            "validators": [
              {
                "type": "regex",
                "regex": "^.{1,160}$",
                "message": "Максимальная длинна 160 символов"
              }
            ],
            "isRequired": null
          }
        ],
        "messages": [],
        "Product": {
          "minAmount": null,
          "maxAmount": null,
          "feeFixed": null,
          "feeRate": null
        }
      },
      {
        "code": "MIXO",
        "icon": "https://raw.githubusercontent.com/user-dob/docker-microservices/master/wallet.svg",
        "name": "Трансфер MIXO",
        "description": "",
        "processor": "mixo",
        "transferType": "Withdraw",
        "asset": "USDT",
        "Asset": {
          "code": "USDT",
          "type": "Crypto"
        },
        "fields": [
          {
            "name": "to",
            "description": "Номер телефона получателя",
            "label": "Получатель",
            "position": 0,
            "type": "string",
            "validators": [
              {
                "type": "regex",
                "regex": "^\\+\\d{10,15}$",
                "message": "Неверно введен номер телефона"
              }
            ],
            "isRequired": true
          },
          {
            "name": "comment",
            "description": "Публичный комментарий",
            "label": "Комментарий",
            "position": 1,
            "type": "string",
            "validators": [
              {
                "type": "regex",
                "regex": "^.{1,160}$",
                "message": "Неверно введен номер телефона"
              }
            ],
            "isRequired": null
          }
        ],
        "messages": [],
        "Product": {
          "minAmount": null,
          "maxAmount": null,
          "feeFixed": null,
          "feeRate": null
        }
      },
      {
        "code": "ETH",
        "icon": "https://raw.githubusercontent.com/user-dob/docker-microservices/master/wallet.svg",
        "name": "На кошелек ERC20",
        "description": "",
        "processor": "crypto-proxy",
        "transferType": "Withdraw",
        "asset": "USDT",
        "Asset": {
          "code": "USDT",
          "type": "Crypto"
        },
        "fields": [
          {
            "name": "address",
            "description": "Адрес",
            "label": "Адрес",
            "position": 0,
            "type": "string",
            "validators": [
              {
                "type": "crypto-address",
                "message": "Адрес не действителен",
                "blockchain": "ETH"
              }
            ],
            "isRequired": true
          }
        ],
        "messages": [],
        "Product": {
          "minAmount": null,
          "maxAmount": null,
          "feeFixed": "0.0",
          "feeRate": "0.0"
        }
      },
      {
        "code": "KUNA_CODE",
        "icon": "https://github.com/user-dob/docker-microservices/blob/master/kuna-code.png?raw=true",
        "name": "Kuna Code",
        "description": "",
        "processor": "code",
        "transferType": "Withdraw",
        "asset": "USDT",
        "Asset": {
          "code": "USDT",
          "type": "Crypto"
        },
        "fields": [
          {
            "name": "recipientId",
            "description": "Kuna Id получателя",
            "label": "Получатель",
            "position": 0,
            "type": "string",
            "validators": [
              {
                "type": "regex",
                "regex": "^kunaid-.{3,10}$",
                "message": ""
              }
            ],
            "isRequired": null
          },
          {
            "name": "nonRefundableBefore",
            "description": "Доверительный период",
            "label": "Доверительный период",
            "position": 1,
            "type": "date",
            "validators": [
              {
                "type": "regex",
                "regex": "^.*$",
                "message": ""
              }
            ],
            "isRequired": null
          },
          {
            "name": "comment",
            "description": "Публичный комментарий",
            "label": "Комментарий",
            "position": 2,
            "type": "string",
            "validators": [
              {
                "type": "regex",
                "regex": "^.{1,160}$",
                "message": ""
              }
            ],
            "isRequired": null
          },
          {
            "name": "privateComment",
            "description": "Приватный комментарий",
            "label": "Приватный комментарий",
            "position": 3,
            "type": "string",
            "validators": [
              {
                "type": "regex",
                "regex": "^.{1,160}$",
                "message": ""
              }
            ],
            "isRequired": null
          },
          {
            "name": "code",
            "description": "Kuna Code",
            "label": "Kuna Code",
            "position": 4,
            "type": "string",
            "validators": [],
            "isRequired": null
          }
        ],
        "messages": [],
        "Product": {
          "minAmount": null,
          "maxAmount": null,
          "feeFixed": "0.0",
          "feeRate": "0.0"
        }
      }
    ]
  }
}
```
Вы получаете множество методов в результате. Вам нужны не все.

Как мы с вами утвердили, в корне обьекта появится новое поле flowType с возможными значениями (сейчас его еще нет):
INTERNAL
INTERNAL_INVITE
EXTERNAL_CRYPTO
EXTERNAL_CRYPTO_MEMO
EXTERNAL_FIAT


Пока нет поля flowType, вы делаете такой маппинг, где ключ - будущее поле  flowType, а обьект - поля по которым вы ищете нужный  payment method.
```json
{
    "INTERNAL": {
        "processor" "mixo"
    },

    "INTERNAL_INVITE": {
        "processor" "mixo"
    },

    "EXTERNAL_CRYPTO": {
        "processor" "crypto-proxy"
    },

    "EXTERNAL_CRYPTO_MEMO": {
        "processor" "crypto-proxy"
    },

    "EXTERNAL_FIAT": {
        "processor" "corefy"
    }
}
```
В INTERNAL методе вы можете игнорировать field comment, и не показывать его юзеру, так как это поле опционально.

Методы EXTERNAL_CRYPTO_MEMO и EXTERNAL_CRYPTO вы пока маппите только по полю "processor": "crypto-proxy", так что вы не будете знать есть ли там мемо пока не переберёте "fields" и не найдете там поле "memo".

Помню, мы с Владом договаривались про новое поле внутри каждого филда, которое отражает его тип ("memo", "address", "card_number"), сейчас этого нет, завязывайтесь на поле "name".

-- 

То есть после маппинга вы вытащите такие методы:
INTERNAL: вытаскиваете метод с процессором mixo. Он сейчас 1, и работает только с номером телефона, без куна-ид.
INTERNAL_INVITE: вытаскивайте тот же самый метод с процессором mixo что и в INTERNAL.
EXTERNAL_CRYPTO: вытаскивате 2 метода TRC и ERC. И в случае с USDT вы показываете на выбор юзеру только 2 метода на выбор. С другими монетами вы не будете давать юзеру никакого выбора.