{
  "openapi": "3.1.1",
  "info": {
    "title": "Nicky Agents API",
    "description": "Public API for AI agents to discover and pay payment requests on Nicky. All endpoints are anonymous – no API key required. See /agents.md for a human-readable guide.",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://api-public.pay.nicky.me/"
    }
  ],
  "paths": {
    "/api/agents/payment-request": {
      "get": {
        "tags": [
          "Agents"
        ],
        "summary": "Get a payment request by its short ID or by a nicky.me payment URL.\nReturns the receiver info, required payer information, and the list of accepted payment assets.\nAmounts for non-native assets are not included here; the exact amount is confirmed when you call start-payment.",
        "parameters": [
          {
            "name": "shortId",
            "in": "query",
            "description": "Short ID of the payment request (e.g. \"ABCDE\").\nFound in the Nicky UI or a pay.nicky.me link.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AgentPaymentRequestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentPaymentRequestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentPaymentRequestResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/agents/payment/start": {
      "post": {
        "tags": [
          "Agents"
        ],
        "summary": "Start a payment for a given payment request and asset.\nReturns a wallet address, the exact amount to send, and a payment attempt ID for tracking.\n\nWhen paying with a non-native asset, a live conversion quote is obtained automatically.\nThe amount returned is in the chosen asset. No separate quote API call is required.\n\nFor available assets and their IDs, first call GET /api/agents/payment-request.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentStartPaymentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentStartPaymentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentStartPaymentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AgentPaymentAttemptResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentPaymentAttemptResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentPaymentAttemptResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/agents/payment/progress": {
      "get": {
        "tags": [
          "Agents"
        ],
        "summary": "Get the current progress of a payment attempt.\nPoll this endpoint until Status is \"Confirmed\" or IsPaid is true.",
        "parameters": [
          {
            "name": "paymentAttemptId",
            "in": "query",
            "description": "Short ID returned by the start-payment endpoint (e.g. \"A1B2C3\")",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AgentPaymentProgressResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentPaymentProgressResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentPaymentProgressResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/agents/payment/report-transaction": {
      "post": {
        "tags": [
          "Agents"
        ],
        "summary": "Optionally report the blockchain transaction hash for a payment attempt.\nThis helps Nicky verify the payment faster.\nReturns the updated payment progress.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentReportTransactionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentReportTransactionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AgentReportTransactionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AgentPaymentProgressResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentPaymentProgressResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentPaymentProgressResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AgentPaymentAttemptResponse": {
        "required": [
          "paymentAttemptId",
          "walletAddress",
          "amountToSend",
          "assetId",
          "assetName",
          "paymentRequestShortId",
          "expiresAt",
          "createdAt"
        ],
        "type": "object",
        "properties": {
          "paymentAttemptId": {
            "type": "string",
            "description": "Unique short identifier for this payment attempt.\nUse this to poll the payment progress endpoint."
          },
          "walletAddress": {
            "type": "string",
            "description": "The wallet address to send funds to"
          },
          "memo": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional memo / destination tag (required for some networks like XRP, Stellar)"
          },
          "amountToSend": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "description": "Exact amount to send in the chosen asset",
            "format": "double"
          },
          "assetId": {
            "type": "string",
            "description": "The asset ID to send (e.g. \"USDT_TRC20\")"
          },
          "assetName": {
            "type": "string",
            "description": "Human-readable asset name (e.g. \"USDT (TRC20)\")"
          },
          "paymentRequestShortId": {
            "type": "string",
            "description": "The payment request this attempt belongs to"
          },
          "expiresAt": {
            "type": "string",
            "description": "When this payment window expires. Send the transaction before this time.",
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "description": "When this payment attempt was created",
            "format": "date-time"
          }
        },
        "description": "Result of starting an agent payment.\nContains the wallet address to send funds to, the exact amount, and a payment attempt ID\nfor tracking progress."
      },
      "AgentPaymentProgressResponse": {
        "required": [
          "paymentAttemptId",
          "walletAddress",
          "expectedAmount",
          "assetId",
          "assetName",
          "status",
          "createdAt",
          "expiresAt"
        ],
        "type": "object",
        "properties": {
          "paymentAttemptId": {
            "type": "string",
            "description": "Payment attempt short ID (same value used to query this endpoint)"
          },
          "walletAddress": {
            "type": "string",
            "description": "Wallet address the payer should send funds to"
          },
          "expectedAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "description": "Expected amount to receive",
            "format": "double"
          },
          "assetId": {
            "type": "string",
            "description": "Asset ID of the expected payment"
          },
          "assetName": {
            "type": "string",
            "description": "Human-readable asset name"
          },
          "status": {
            "description": "Overall payment status",
            "$ref": "#/components/schemas/AgentPaymentStatus"
          },
          "isPaid": {
            "type": "boolean",
            "description": "True when the payment request has been fully satisfied"
          },
          "createdAt": {
            "type": "string",
            "description": "When this payment attempt was created",
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "description": "When this payment window expires",
            "format": "date-time"
          },
          "finishedAt": {
            "type": [
              "null",
              "string"
            ],
            "description": "When the payment was completed (set once confirmed)",
            "format": "date-time"
          },
          "paymentRequest": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "The associated payment request (if any)",
                "$ref": "#/components/schemas/PaymentRequest"
              }
            ]
          },
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgentTransactionSummary"
            },
            "description": "Blockchain transactions found for this payment attempt"
          },
          "suggestedTransactionHash": {
            "type": [
              "null",
              "string"
            ],
            "description": "Transaction hash suggested by the agent (if any)"
          }
        },
        "description": "Current status and progress of an agent-initiated payment attempt"
      },
      "AgentPaymentRequestResponse": {
        "required": [
          "shortId",
          "totalAmount",
          "openAmount",
          "nativeAssetId",
          "status",
          "receiverUser",
          "availableAssets"
        ],
        "type": "object",
        "properties": {
          "shortId": {
            "type": "string",
            "description": "Short identifier for the payment request (e.g. \"ABCDE\").\nUse this as input to the start-payment endpoint."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Human-readable description of what the payment is for"
          },
          "invoiceReference": {
            "type": [
              "null",
              "string"
            ],
            "description": "Invoice or reference number"
          },
          "totalAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "description": "Total requested amount in the native asset",
            "format": "double"
          },
          "openAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "description": "Remaining unpaid amount in the native asset",
            "format": "double"
          },
          "nativeAssetId": {
            "type": "string",
            "description": "The primary asset the payment was requested in"
          },
          "status": {
            "description": "Current status of the payment request",
            "$ref": "#/components/schemas/PaymentRequestStatus"
          },
          "receiverUser": {
            "description": "The person or business receiving the payment",
            "$ref": "#/components/schemas/PublicUser"
          },
          "availableAssets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BlockchainAssetInfo"
            },
            "description": "The assets that can be used to make this payment.\nThe native asset will include a pre-filled amount; other assets require\ncalling the start-payment endpoint to get the exact amount."
          }
        },
        "description": "Details of a payment request as seen by an AI agent.\nUse this to discover what information is needed, the amount to pay, and the assets available."
      },
      "AgentPaymentStatus": {
        "type": "integer",
        "description": "Status of an agent-initiated payment attempt"
      },
      "AgentReportTransactionRequest": {
        "required": [
          "paymentAttemptId",
          "transactionHash"
        ],
        "type": "object",
        "properties": {
          "paymentAttemptId": {
            "type": "string",
            "description": "Short ID of the payment attempt to associate the transaction with.\nObtained from the start-payment response."
          },
          "transactionHash": {
            "maxLength": 255,
            "type": "string",
            "description": "The blockchain transaction hash / ID of the payment you sent"
          }
        },
        "description": "Request body for reporting a blockchain transaction hash for a payment attempt.\nUse this if you have already sent a transaction and want Nicky to verify it faster."
      },
      "AgentStartPaymentRequest": {
        "required": [
          "paymentRequestShortId",
          "assetId",
          "payerName",
          "payerEmail"
        ],
        "type": "object",
        "properties": {
          "paymentRequestShortId": {
            "type": "string",
            "description": "Short ID of the payment request (e.g. \"ABCDE\").\nObtained from the get-payment-request endpoint."
          },
          "assetId": {
            "type": "string",
            "description": "The asset ID you will use to make the payment (e.g. \"USDT_TRC20\").\nMust be one of the assets listed in AvailableAssets from the payment request."
          },
          "payerName": {
            "maxLength": 255,
            "type": "string",
            "description": "Full name of the person making the payment"
          },
          "payerEmail": {
            "maxLength": 255,
            "type": "string",
            "description": "Email address of the person making the payment"
          }
        },
        "description": "Request body for starting a new agent payment.\nProvide the payment request short ID, the asset you want to pay with, and basic payer info."
      },
      "AgentTransactionSummary": {
        "required": [
          "transactionHash",
          "assetId",
          "receiverAddress",
          "createdDate",
          "blockchainStatus",
          "paymentReportStatus"
        ],
        "type": "object",
        "properties": {
          "transactionHash": {
            "type": "string",
            "description": "Blockchain transaction hash / ID"
          },
          "assetId": {
            "type": "string",
            "description": "The asset of the transaction"
          },
          "receiverAddress": {
            "type": "string",
            "description": "The address that received the funds"
          },
          "createdDate": {
            "type": "string",
            "description": "When the transaction was first seen",
            "format": "date-time"
          },
          "blockchainStatus": {
            "type": "string",
            "description": "Current blockchain confirmation status"
          },
          "paymentReportStatus": {
            "type": "string",
            "description": "Confirmation that this transaction has been matched to the payment report"
          }
        },
        "description": "Summary of a blockchain transaction associated with a payment attempt"
      },
      "AnonUser": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 255,
            "type": "string",
            "description": "Anonymous user's email"
          },
          "name": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Name"
          }
        }
      },
      "Bill": {
        "required": [
          "shortId"
        ],
        "type": "object",
        "properties": {
          "createdDate": {
            "type": "string",
            "description": "Created date for this transaction in the database",
            "format": "date-time"
          },
          "receiverUser": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Public info of the receiver",
                "$ref": "#/components/schemas/PublicUser"
              }
            ]
          },
          "shortId": {
            "type": "string",
            "description": "ShortId"
          },
          "invoiceReference": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Generic reference"
          },
          "description": {
            "maxLength": 2048,
            "type": [
              "null",
              "string"
            ],
            "description": "Description"
          },
          "paymentReports": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/PaymentReport"
            },
            "description": "Payment Reports for this Bill"
          },
          "paymentRequest": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "PaymentRequests for this Bill",
                "$ref": "#/components/schemas/PaymentRequestBase"
              }
            ]
          }
        },
        "description": "Nicky Bill details"
      },
      "BlockchainAsset": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "assetChain": {
            "type": [
              "null",
              "string"
            ]
          },
          "assetTicker": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "BlockchainAssetInfo": {
        "required": [
          "assetName",
          "isFiat",
          "decimalPrecisionUI",
          "id"
        ],
        "type": "object",
        "properties": {
          "assetName": {
            "maxLength": 48,
            "type": "string",
            "description": "Full asset name"
          },
          "isFiat": {
            "type": "boolean",
            "description": "Is Fiat indication"
          },
          "decimalPrecisionUI": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Decimal Precision used in the UI",
            "format": "int32"
          },
          "id": {
            "type": "string"
          },
          "assetChain": {
            "type": [
              "null",
              "string"
            ]
          },
          "assetTicker": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "description": "Blockchain Asset"
      },
      "BlockchainAssetInfoExtended": {
        "required": [
          "isMultiChain",
          "assetName",
          "isFiat",
          "decimalPrecisionUI",
          "id"
        ],
        "type": "object",
        "properties": {
          "isMultiChain": {
            "type": "boolean"
          },
          "assetName": {
            "maxLength": 48,
            "type": "string",
            "description": "Full asset name"
          },
          "isFiat": {
            "type": "boolean",
            "description": "Is Fiat indication"
          },
          "decimalPrecisionUI": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Decimal Precision used in the UI",
            "format": "int32"
          },
          "id": {
            "type": "string"
          },
          "assetChain": {
            "type": [
              "null",
              "string"
            ]
          },
          "assetTicker": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "description": "Blockchain Asset with multi-chain flag"
      },
      "BlockchainCheckStatus": {
        "type": "integer",
        "description": "Blockchain check status"
      },
      "ConversionQuoteResponse": {
        "required": [
          "from",
          "to",
          "requestedAmount"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "validEndTime": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "from": {
            "$ref": "#/components/schemas/BlockchainAssetInfo"
          },
          "to": {
            "$ref": "#/components/schemas/BlockchainAssetInfo"
          },
          "requestedAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "price": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "validStartTime": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ConversionRateRequest": {
        "required": [
          "amount",
          "fromBlockchainId",
          "toBlockchainId"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "fromBlockchainId": {
            "type": "string"
          },
          "toBlockchainId": {
            "type": "string"
          }
        }
      },
      "CreateBillDetails": {
        "type": "object",
        "properties": {
          "invoiceReference": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Invoice Reference"
          },
          "description": {
            "maxLength": 2048,
            "type": [
              "null",
              "string"
            ],
            "description": "Description"
          }
        },
        "description": "Details to create a new Bill"
      },
      "CreateNick": {
        "required": [
          "id",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/NickType"
          },
          "param": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CreatePaymentReportRequest": {
        "type": "object",
        "properties": {
          "payerUserAnon": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AnonUser"
              }
            ]
          },
          "existingBillShortId": {
            "type": [
              "null",
              "string"
            ]
          },
          "billDetails": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CreateBillDetails"
              }
            ]
          },
          "paymentTransactions": {
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatePaymentTransactionModel"
            }
          }
        }
      },
      "CreatePaymentRequestRequest": {
        "required": [
          "blockchainAssetId",
          "amountExpectedNative",
          "billDetails",
          "requester"
        ],
        "type": "object",
        "properties": {
          "blockchainAssetId": {
            "type": "string",
            "description": "Accepted AssetId for the user"
          },
          "amountExpectedNative": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "description": "Amount expected in native currency (blockchain asset specified)",
            "format": "double"
          },
          "billDetails": {
            "description": "Bill Details",
            "$ref": "#/components/schemas/CreateBillDetails"
          },
          "requester": {
            "description": "Users to send this payment request to",
            "$ref": "#/components/schemas/AnonUser"
          },
          "sendNotification": {
            "type": "boolean",
            "description": "Indicates an e-mail will be send"
          },
          "successUrl": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "User will be redirected to this URL when payment is success",
            "format": "uri"
          },
          "cancelUrl": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "User will be redirected to this URL when payment is canceled",
            "format": "uri"
          }
        },
        "description": "Request model to create a payment request"
      },
      "CreatePaymentTransactionModel": {
        "required": [
          "blockchainTransactionId",
          "blockchainAssetId",
          "receiverAddress"
        ],
        "type": "object",
        "properties": {
          "blockchainTransactionId": {
            "type": "string"
          },
          "blockchainAssetId": {
            "type": "string"
          },
          "receiverAddress": {
            "type": "string"
          },
          "conversionQuoteId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Quote to use for currency conversion",
            "format": "uuid"
          },
          "cryptoAddressUsageLogId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          }
        }
      },
      "CreateUserRequest": {
        "required": [
          "firstName",
          "nicks"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "First name"
          },
          "lastName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Last name"
          },
          "publicName": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Public Name"
          },
          "websiteUrl": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Website URL for the user\nThis is different from a domain. WebsiteUrl does not get validated",
            "format": "uri"
          },
          "language": {
            "type": [
              "null",
              "string"
            ],
            "description": "Preferred language for email communication"
          },
          "billingGroupId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Billing Group to use for this user\nIf no BillingGroupId is provided, the default billing group will be used",
            "format": "uuid"
          },
          "nicks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateNick"
            },
            "description": "List of Nicks\nMust as least contain one Email Nick\nOptional: Domain Nick, domain must be the same as the email domain"
          }
        },
        "description": "Create a new user"
      },
      "CreateWebHookRequest": {
        "type": "object",
        "properties": {
          "webHookType": {
            "$ref": "#/components/schemas/WebHookType"
          },
          "url": {
            "type": "string"
          }
        },
        "description": "Create a new webhook"
      },
      "CryptoAddress": {
        "required": [
          "address",
          "blockchainAsset"
        ],
        "type": "object",
        "properties": {
          "address": {
            "type": "string"
          },
          "memo": {
            "type": [
              "null",
              "string"
            ]
          },
          "blockchainAsset": {
            "$ref": "#/components/schemas/BlockchainAsset"
          },
          "cryptoDataSource": {
            "$ref": "#/components/schemas/CryptoDataSource"
          },
          "cryptoConnectionId": {
            "type": "string",
            "format": "uuid"
          },
          "cryptoAddressUsageLogId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "paymentAttemptId": {
            "type": [
              "null",
              "string"
            ]
          },
          "isTxMatchingEnabled": {
            "type": "boolean"
          }
        },
        "description": "Crypto address model"
      },
      "CryptoConnectionCheckStatus": {
        "type": "integer",
        "description": "Check Status"
      },
      "CryptoDataSource": {
        "type": "integer"
      },
      "DataResultOfPaymentReport": {
        "type": "object",
        "properties": {
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentReport"
            }
          }
        },
        "description": "Result Wrapper for lists of data"
      },
      "DataResultOfPaymentRequest": {
        "type": "object",
        "properties": {
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentRequest"
            }
          }
        },
        "description": "Result Wrapper for lists of data"
      },
      "ExchangeConversionRequestStatus": {
        "type": "integer",
        "description": "Status on the exchange conversion"
      },
      "NickType": {
        "type": "integer",
        "description": "Nick type. Specified the type of Nick"
      },
      "OffRampStatus": {
        "type": "integer",
        "description": "Off Ramp Status"
      },
      "PaymentDataResponse": {
        "required": [
          "userData",
          "userAssetConnections",
          "acceptedAssets"
        ],
        "type": "object",
        "properties": {
          "userData": {
            "$ref": "#/components/schemas/PublicUser"
          },
          "userAssetConnections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BlockchainAssetInfo"
            }
          },
          "acceptedAssets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BlockchainAssetInfoExtended"
            }
          },
          "paymentRequest": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PaymentRequest"
              }
            ]
          },
          "conversionQuote": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ConversionQuoteResponse"
              }
            ]
          }
        },
        "description": "Wrapper for all data needed to create a payment report"
      },
      "PaymentProgress": {
        "required": [
          "cryptoAddress"
        ],
        "type": "object",
        "properties": {
          "transactionMatch": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PaymentTransaction"
              }
            ]
          },
          "transactionMatchPaymentReport": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PaymentReport"
              }
            ]
          },
          "receiverUser": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PublicUser"
              }
            ]
          },
          "cryptoAddress": {
            "$ref": "#/components/schemas/CryptoAddress"
          },
          "paymentRequest": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PaymentRequest"
              }
            ]
          },
          "expectedAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "userBlockchainTxHashSuggestion": {
            "type": [
              "null",
              "string"
            ]
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "timeOutDate": {
            "type": "string",
            "format": "date-time"
          },
          "finishedDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "conversionQuote": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ConversionQuoteResponse"
              }
            ]
          },
          "payerUserAnon": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AnonUser"
              }
            ]
          },
          "canNotMatch": {
            "type": "boolean",
            "description": "Indicates that there are multiple open address logs for this address, so matching is not possible"
          }
        }
      },
      "PaymentReport": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique Id",
            "format": "uuid"
          },
          "billShortId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Bill Short Id"
          },
          "createdDate": {
            "type": "string",
            "description": "Created Date",
            "format": "date-time"
          },
          "payerUser": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Public info of the payer",
                "$ref": "#/components/schemas/PublicUser"
              }
            ]
          },
          "paymentTransactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentTransaction"
            },
            "description": "Payment Transactions for this Report"
          }
        },
        "description": "Payment Report"
      },
      "PaymentReportCheckStatus": {
        "type": "integer",
        "description": "Payment Report check status"
      },
      "PaymentReportFilters": {
        "type": "object",
        "properties": {
          "shortId": {
            "type": [
              "null",
              "string"
            ]
          },
          "pageIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "PageIndex is zero based!\nDefaults to 0",
            "format": "int32"
          },
          "pageSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Page Size, defaults to 10",
            "format": "int32"
          }
        },
        "description": "Payment report filters for search"
      },
      "PaymentReportSimple": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "billShortId": {
            "type": "string"
          }
        }
      },
      "PaymentRequest": {
        "required": [
          "bill",
          "blockchainAssetId",
          "amountNative"
        ],
        "type": "object",
        "properties": {
          "openAmountNative": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "description": "Open Amount - Amount Paid",
            "format": "double"
          },
          "bill": {
            "description": "Bill Details",
            "$ref": "#/components/schemas/Bill"
          },
          "id": {
            "type": "string",
            "description": "Unique Id",
            "format": "uuid"
          },
          "createdDate": {
            "type": "string",
            "description": "Created Date",
            "format": "date-time"
          },
          "blockchainAssetId": {
            "type": "string",
            "description": "Blockchain Asset Id"
          },
          "amountNative": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "description": "Amount expected in native currency",
            "format": "double"
          },
          "requester": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Public info of the Requester",
                "$ref": "#/components/schemas/PublicUser"
              }
            ]
          },
          "creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Creator",
                "$ref": "#/components/schemas/PublicUser"
              }
            ]
          },
          "status": {
            "description": "Status of the transaction",
            "$ref": "#/components/schemas/PaymentRequestStatus"
          },
          "successUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "User will be redirected to this URL when payment is success"
          },
          "cancelUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "User will be redirected to this URL when payment is canceled"
          }
        }
      },
      "PaymentRequestBase": {
        "required": [
          "blockchainAssetId",
          "amountNative"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique Id",
            "format": "uuid"
          },
          "createdDate": {
            "type": "string",
            "description": "Created Date",
            "format": "date-time"
          },
          "blockchainAssetId": {
            "type": "string",
            "description": "Blockchain Asset Id"
          },
          "amountNative": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "description": "Amount expected in native currency",
            "format": "double"
          },
          "requester": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Public info of the Requester",
                "$ref": "#/components/schemas/PublicUser"
              }
            ]
          },
          "creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Creator",
                "$ref": "#/components/schemas/PublicUser"
              }
            ]
          },
          "status": {
            "description": "Status of the transaction",
            "$ref": "#/components/schemas/PaymentRequestStatus"
          },
          "successUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "User will be redirected to this URL when payment is success"
          },
          "cancelUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "User will be redirected to this URL when payment is canceled"
          }
        }
      },
      "PaymentRequestFilters": {
        "type": "object",
        "properties": {
          "pageIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "PageIndex is zero based!\nDefaults to 0",
            "format": "int32"
          },
          "pageSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Page Size, defaults to 10",
            "format": "int32"
          }
        },
        "description": "Payment request filters for search"
      },
      "PaymentRequestStatus": {
        "type": "integer",
        "description": "PaymentRequest Status"
      },
      "PaymentSuggestTxRequest": {
        "required": [
          "cryptoAddressUsageId",
          "tx"
        ],
        "type": "object",
        "properties": {
          "cryptoAddressUsageId": {
            "type": "string",
            "format": "uuid"
          },
          "tx": {
            "maxLength": 256,
            "type": "string"
          }
        }
      },
      "PaymentTransaction": {
        "required": [
          "blockchainTransactionId",
          "blockchainAssetId",
          "receiverAddress"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique Id",
            "format": "uuid"
          },
          "createdDate": {
            "type": "string",
            "description": "Created Date",
            "format": "date-time"
          },
          "blockchainTransactionId": {
            "type": "string",
            "description": "TxId from the Blockchain"
          },
          "blockchainAssetId": {
            "type": "string",
            "description": "Blockchain Asset Id"
          },
          "conversionQuoteId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Conversion Quote that belongs to this transaction",
            "format": "uuid"
          },
          "receiverAddress": {
            "type": "string",
            "description": "Address that is receicing an amount"
          },
          "paymentTransfers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentTransfer"
            },
            "description": "Asset Transfers found in this Transaction"
          },
          "checkedStatus": {
            "description": "Checked Status from the Blockchain",
            "$ref": "#/components/schemas/BlockchainCheckStatus"
          },
          "paymentReportCheckStatus": {
            "description": "Is the transaction checked for the payment report indicator",
            "$ref": "#/components/schemas/PaymentReportCheckStatus"
          },
          "cryptoConnectionCheckStatus": {
            "description": "Checked Status from the CryptoConnection",
            "$ref": "#/components/schemas/CryptoConnectionCheckStatus"
          },
          "exchangeConversionRequestStatus": {
            "description": "Exchange Conversion Status",
            "$ref": "#/components/schemas/ExchangeConversionRequestStatus"
          },
          "offRampStatus": {
            "description": "Off Ramp Status",
            "$ref": "#/components/schemas/OffRampStatus"
          }
        },
        "description": "Single Payment Transaction"
      },
      "PaymentTransfer": {
        "required": [
          "amountNative",
          "blockchainAssetId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique Id",
            "format": "uuid"
          },
          "amountNative": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "description": "Amount as found on the blockchain",
            "format": "double"
          },
          "blockchainAssetId": {
            "type": "string",
            "description": "Asset"
          },
          "convertedBlockchainAssetId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Asset to convert to"
          },
          "convertedAmountNative": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Amount when converted to ConvertedBlockchainAssetId",
            "format": "double"
          },
          "conversionRateUsed": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Which rate is used",
            "format": "double"
          },
          "exchangeConversionRequestStatus": {
            "description": "Status of the exchange conversion",
            "$ref": "#/components/schemas/ExchangeConversionRequestStatus"
          }
        },
        "description": "Single amount transfer from a blockchain transaction"
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "detail": {
            "type": [
              "null",
              "string"
            ]
          },
          "instance": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PublicUser": {
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "null",
              "string"
            ],
            "description": "Can be empty if the user is anonymous",
            "format": "uuid"
          },
          "email": {
            "type": [
              "null",
              "string"
            ],
            "description": "Email for the user"
          },
          "name": {
            "type": [
              "null",
              "string"
            ],
            "description": "Full name for the user"
          },
          "publicName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Public Name"
          },
          "websiteUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "Website URL for the user"
          },
          "bio": {
            "type": [
              "null",
              "string"
            ],
            "description": "Bio"
          },
          "country": {
            "type": [
              "null",
              "string"
            ],
            "description": "Country"
          },
          "hasProfilePicture": {
            "type": "boolean",
            "description": "Indication that the user has uploaded a profile picture"
          }
        },
        "description": "Model that holds public data of a user"
      },
      "SendPaymentRequestStatusChangedWebHookData": {
        "required": [
          "previousStatus",
          "newStatus"
        ],
        "type": "object",
        "properties": {
          "previousStatus": {
            "type": "string"
          },
          "newStatus": {
            "type": "string"
          }
        }
      },
      "UserAssetConnectionSimple": {
        "type": "object",
        "properties": {
          "asset": {
            "$ref": "#/components/schemas/BlockchainAsset"
          }
        }
      },
      "WebHook": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "webHookType": {
            "description": "WebHook Type",
            "$ref": "#/components/schemas/WebHookType"
          },
          "url": {
            "type": "string",
            "description": "Url to post the request to"
          },
          "createdDate": {
            "type": "string",
            "description": "Created Date",
            "format": "date-time"
          }
        },
        "description": "WebHook Details"
      },
      "WebHookRequestOfSendPaymentRequestStatusChangedWebHookData": {
        "required": [
          "webHookType"
        ],
        "type": "object",
        "properties": {
          "webHookId": {
            "type": "string",
            "format": "uuid"
          },
          "webHookType": {
            "type": "string"
          },
          "itemId": {
            "type": "string",
            "format": "uuid"
          },
          "data": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SendPaymentRequestStatusChangedWebHookData"
              }
            ]
          }
        }
      },
      "WebHookType": {
        "type": "integer"
      }
    }
  },
  "tags": [
    {
      "name": "AcceptedAsset"
    },
    {
      "name": "AccountCreation"
    },
    {
      "name": "ConversionRate"
    },
    {
      "name": "Payment"
    },
    {
      "name": "PaymentOrder"
    },
    {
      "name": "PaymentReport"
    },
    {
      "name": "PaymentRequestPublicApi"
    },
    {
      "name": "UserAssetConnection"
    },
    {
      "name": "WebHookApi"
    },
    {
      "name": "Agents"
    }
  ]
}