---
openapi: 3.0.2
info:
  title: TangoHub Payment API v1.9.1
  version: 1.9.1
  description: Tango HUB API for Payment
servers:
- url: " https://{domain}.agorapay.com/mkp/{version}"
  description: Payment service
  variables:
    domain:
      default: api.live
      description: Production environment
    version:
      default: v1
      description: API version      
paths:
  /payout/create:
    summary: Submit a payout
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/payoutRequest"
            examples:
              Create payout:
                value:
                  accountNumber: 1300600000EUR01006110
                  reason: test
                  endToEndId: ETEID-20210203142803584
                  paymentMethodAlias: PM2021011300GLR1100
                  metaData:
                    Metadata3: donnée3
                    Metadata4: donnee4
                  payoutAmount:
                    value: "200"
                    currency: EUR
                  commission:
                    amount: "1.00"
                    account: 1300600000EUR60002411
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/payoutResponse"
              examples:
                Payout response:
                  value:
                    resultCode: "0"
                    transactionId: "1289921"
          description: Payout successful
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: From accountNumber to the bank account associated to this account number.
  /transfer/create:
    summary: Ask for a transfer between two accounts
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/transferRequest"
            examples:
              transfert:
                value:
                  accountNumber: 1300600000EUR01004110
                  accountCptNumber: 1300600000EUR01006110
                  orderRef: "20210203142044"
                  reason: test
                  transferAmount:
                    value: "10.01"
                    currency: EUR
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/transferResponse"
              examples:
                Transfer_OK:
                  value:
                    resultCode: "0"
                    transactionId: "1287521"
          description: transfer done successfully
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in request processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: Submit a transfer from one account (accountNumber) to another (accountCtpNumber)
  /payin/payment:
    summary: Submit a payment with payment method
    post:
      requestBody:
        description: All request data are embedded in a json structure in the body
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/paymentRequest"
            examples:
              Payment with existing order:
                value:
                  orderId: "2987721"
                  transactionAmount:
                    value: "70.10"
                    currency: EUR
                  transPaymentMethod:
                    id: "4"
                  endToEndId: Test
                  breakdownList:
                  - label: bdl1
                    transactionRef: ref1
                    sellerAccountNumber: 1300600000EUR01006110
                    amount:
                      value: "70"
                      currency: EUR
                  - label: bdl2
                    transactionRef: ref2
                    sellerAccountNumber: 1300600000EUR01007110
                    amount:
                      value: "0.10"
                      currency: EUR
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/paymentResponse"
              examples:
                Success SCT payment:
                  value:
                    resultCode: "0"
                    orderId: "3343021"
                    orderStatus: pending_payment
                    transactionId: "1707521"
                    transactionStatus: in_progress
                    virtualIban: FR7618206004320000127591154
          description: Payment processing success
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: Error in processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: |-
        When your shopper choose a payment method, this call submit the choice and any data if already given.
        The return can be final, (transaction completed) or ask to authentification details, or redirect the shopper to PSP or 3DS pages.
  /payin/paymentDetails:
    summary: Submit additionnal Payment Details
    post:
      requestBody:
        description: All request data are embedded in a json structure in the body
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/paymentDetailsRequest"
            examples:
              Payment details:
                value:
                  orderId: "123456789"
                  paymentData: AMT=110328&CMD=1705821&AUTH=XXXXXX&USER=0&BRAND=CB&EXPIRY=2301&RESULT=00000&SAFE3DS=N&BIN=401200&CARD=12&U3DS=U&TIME=08%3A38%3A04&DATE=26032021&NUM=60078063&TRANS=33938398&ACCOUNT=CMDLpSqLLDS++2301++---&COUNTRY=FRA&SIGN=3Fu2QJJ%2F6iz%2F%2F5tjDkWf6AHEz8SASvfsOPn32lPYdgJ%2BF8oOeobUHz65tr%2B%2BBjsvxGrmzh7UQHjEyLura9eU8%2FvTGKRgKda%2Bz6xTZ9YpmA7MlxPNc0AofnHXoReumb%2B7%2BwvYpKZ46AjZQ8nICaZbgRrSD3Sq3yVpCZa1T9Pw3TM%3D
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/paymentDetailsResponse"
              examples:
                Order Complete:
                  value:
                    resultCode: "0"
                    orderId: "123456789"
                    orderStatus: complete
                    transactionId: "123123"
                    transactionStatus: completed
          description: Payment transaction processed successfully
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: Error in processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: The call send the last mandatory data to finalize the payment
  /payin/capture:
    summary: Capture an already authorized operation
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/captureRequest"
            examples:
              capture of a transaction:
                value:
                  orderId: "3343121"
                  transactionId: "1707621"
                  transactionAmount:
                    value: "1000.20"
                    currency: EUR
                  breakdownList:
                  - label: bdl1
                    sellerAccountNumber: 1300600000EUR01006110
                    amount:
                      value: "1000"
                      currency: EUR
                    commission:
                      amount: "1.01"
                      account: 1300600000EUR01004110
                  - label: bdl2
                    sellerAccountNumber: 1300600000EUR01007110
                    amount:
                      value: "0.20"
                      currency: EUR
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/captureResponse"
              examples:
                Capture less than authorization:
                  value:
                    resultCode: "0"
                    orderId: "3343121"
                    orderStatus: partial_complete
                    transactionList:
                    - id: "1707621"
                      type: "7"
                      paymentMethodId: "36"
                      status: completed
                      amount:
                        value: "1103.28"
                        currency: EUR
                    - id: "1707721"
                      type: "1"
                      paymentMethodId: "36"
                      status: completed
                      amount:
                        value: "1000.20"
                        currency: EUR
          description: Capture Done
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: Error in capture processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: Capture a payment transaction or all the capturable payment transactions of an order
  /payin/cancel:
    summary: Cancel a Transaction/Order
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/cancelRequest"
            examples:
              Cancel of a transaction:
                value:
                  orderId: "432156"
                  transactionId: "123456789"
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/cancelResponse"
              examples:
                cancel response:
                  value:
                    resultCode: "0"
                    orderStatus: complete
                    transactionList:
                    - id: "123123123"
                      status: completed
                      amount:
                        value: "100"
                        currency: EUR
                      paymentMethodId: "002"
          description: Cancelation Done
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in operation processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: Cancel a payment transaction or all the payment transactions of an order
  /payin/orderDetails:
    summary: Get details for a payment
    get:
      parameters:
      - examples:
          Get order by id:
            value:
              orderId: "25465265"
        name: orderId
        description: id of the order.
        schema:
          type: string
          minLength: 1
          maxLength: 18
          pattern: "^[0-9]+$"
        in: query
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/orderDetailsResponse"
              examples:
                Order not completed Yet:
                  value:
                    resultCode: "0"
                    orderId: "26527635"
                    orderStatus: pending_payment
                    orderAmount:
                      value: "1000"
                      currency: EUR
                    orderRemainingAmount:
                      value: "500.87"
                      currency: EUR
                    transactionList:
                    - id: "123123123"
                      status: completed
                      amount:
                        value: "500.87"
                        currency: EUR
                      paymentMethodId: "002"
          description: Order retrieved successfully
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in order retireval
        "401":
          description: Header id_token with JWT invalid or absent
      description: Send back all the data of an order and its transactions
  /payin/adjustPayment:
    summary: Adjust the amount of the payment/ change the breakdown of the payment
    post:
      requestBody:
        description: All request data are embedded in a json structure in the body
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/adjustPaymentRequest"
            examples:
              adjustPayment:
                value:
                  orderId: "1354657"
                  adjustAmount:
                    value: "100"
                    currency: EUR
                  breakdownList:
                  - label: bdl1
                    transactionRef: ref1
                    sellerAccountNumber: 1300600000EUR01006110
                    amount:
                      value: "35"
                      currency: EUR
                  - label: bdl2
                    transactionRef: ref2
                    sellerAccountNumber: 1300600000EUR01007110
                    amount:
                      value: "65"
                      currency: EUR
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ajustPaymentResponse"
              examples:
                adjustPayment:
                  value:
                    resultCode: "0"
          description: New amount and/ord breakdown successfully submitted
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in operation processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: |-
        Before the cashing of the operation, change the payment amount and/or the breakdown
        If it's only a change in the breakdown, set the adjustAmount to the same of the transactionAmount
  /operations/list:
    summary: get operations matching a set of criterias
    post:
      requestBody:
        description: All request data are embedded in a json structure in the body
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/operationsListRequest"
            examples:
              operations/list:
                value:
                  pagination: "50"
                  startDate: "010820101000"
                  endDate: "281020101900"
                  currency: EUR
                  maxAmount: "200"
                  minAmount: "1"
                  offset: "1"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/operationsListResponse"
              examples:
                Valid response:
                  value:
                    resultCode: "0"
                    operationList:
                    - transactionId: "55811"
                      reference: "20201021141554038"
                      status: waiting
                      type: Payment
                      side: PAYIN
                      date: "20201021"
                      amount:
                        value: "200"
                        currency: EUR
                      paymentMethodKey: SCT
                      bic: AGRIFRPP777
                      virtualIban: FR7618206004320000115041197
                      label: Order 3478374 SCT
                      breakdownList:
                      - label: bdl1
                        sellerAccountNumber: 1300600000EUR01006110
                        amount:
                          value: "35"
                          currency: EUR
                      - label: bdl2
                        sellerAccountNumber: 1300600000EUR01007110
                        amount:
                          value: "35"
                          currency: EUR
          description: To have the list of operation from a Marketplace
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: Processing error
        "401":
          description: Header id_token with JWT invalid or absent
      description: Retrieve operation from criteria
  /paymentAccount:
    summary: get Account Details
    get:
      parameters:
      - examples:
          Get account details:
            value: 
              accountNumber: "1300600000EUR01006110"
        name: accountNumber
        description: identifier of the account to get details.
        schema:
          type: string
          minLength: 1
          maxLength: 30
          pattern: "^[a-zA-Z0-9]+$"          
        in: query
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/accountResponse"
              examples:
                success:
                  value:
                    resultCode: "0"
                    account:
                      number: 1300600000EUR01006110
                      name: marketPlace A
                      reference: ref123
                      currency: EUR
                      status: activated
                      type: principal
                      payoutAuto: "1"
                      floorLimit: "100.00"
                      balance: "528045.91"
                      availableBalance: "527945.91"
          description: Account Details retrieved
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in order retireval
        "401":
          description: Header id_token with JWT invalid or absent
      description: Get account details
  /paymentAccount/list:
    summary: Get list of account with serach criteria
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/paymentAccountListRequest"
            examples:
              Account list:
                value:
                  accountNumber: 1300600000EUR01005110
                  currency: EUR
                  accountStatus: A
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/paymentAccountListResponse"
              examples:
                success:
                  value:
                    resultCode: "0"
                    lineCount: "2"
                    accountList:
                    - number: "1300600000EUR01004110"
                      reference: ""
                      currency: "EUR"
                      status: "activated"
                      floorLimit: "100.00"
                      payoutAuto: "Y"
                      name: "marketPlace A"
                      type: "principal"
                    - number: "1300600000EUR010024110"
                      reference: ""
                      currency: "EUR"
                      status: "activated"
                      floorLimit: "5.00"
                      payoutAuto: "N"
                      name: "marketPlace A"
                      type: "principal"
          description: Response contains account list
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in order retireval
        "401":
          description: Header id_token with JWT invalid or absent
      description: Retrieve the accounts according to the search criteria
  /paymentAccount/credit:
    summary: Credit account
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/paymentAccountCreditRequest"
            examples:
              Credit:
                value:
                  accountNumber: 1300600000EUR01005110
                  amount: "500.23"
                  currency: EUR
                  paymentMethodKey: SCT
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/paymentAccountCreditResponse"
              examples:
                Credit Response:
                  value:
                    resultCode: "0"
                    transactionId: "1289521"
                    virtualIban: FR7618206004320000115091152
          description: Account credit response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in request processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: Credit payment account
  /paymentAccount/payoutAuto:
    summary: Activate or deactivate automatic payout
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/paymentAccountPayautoRequest"
            examples:
              Account list:
                value:
                  accountNumber: 1300600000EUR01005110
                  amount: "200.00"
                  frequency: "2"
                  dayOfWeek: "1"
                  paymentMethodAlias: PM2021011300GLR1100
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/paymentAccountPayautoResponse"
              examples:
                Success:
                  value:
                    resultCode: "0"
          description: Automatic payout response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in request processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: the API allows you to configure the automatic payout
  /payin/paymentIframe:
    summary: Post your payment details and get an authent Code to initiate a payment
      Frame
    post:
      requestBody:
        description: All request data are embedded in a json structure in the body
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/paymentIframeRequest"
            examples:
              startPayment:
                value:
                  orderReference: ref0102636
                  orderCountryCode: FRA
                  amount:
                    value: "12.45"
                    currency: EUR
                  payer:
                    reference: customer1
                  breakdownList:
                  - label: ref1
                    sellerAccountNumber: 1300600000EUR60002411
                    amount:
                      value: "12.00"
                      currency: EUR
                  - label: ref2
                    sellerAccountNumber: 1300600000EUR60002411
                    amount:
                      value: "0.45"
                      currency: EUR
                  capture: "1"
                  metaData:
                    metaData: sample data
                  urlRedirect: https://monsite.com/paymentEnd
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/paymentIframeResponse"
              examples:
                Get iFrame URL:
                  value:
                    resultCode: "0"
                    orderId: "249021"
                    authentificationCode: db1a03ec-c6f5-565e-06ba-0df30507738c
                    url: https://frontal.paymentsite.com?code=db1a03ec-c6f5-565e-06ba-0df30507738&site=1
                    site: "1"
          description: Start payment with iframe response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in operation processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: |-
        When your shopper is ready to pay, submit your order/payment by this request and get an Authent Code.
        Then save the orderId and open an iframe for the shopper with the authentCode.
  /payin/refund:
    summary: Refund an operation
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/refundRequest"
            examples:
              Refund of a transaction:
                value:
                  orderId: "14326513"
                  transactionId: "123456789"
                  transactionAmount:
                    value: "100"
                    currency: EUR
                  payer:
                    reference: customer_1363
                  breakdownList:
                  - label: bdl1
                    sellerAccountNumber: 1300600000EUR01006110
                    amount:
                      value: "98.20"
                      currency: EUR
                    commission:
                      amount: "0.23"
                      account: 1300600000EUR01004110
                  - label: bdl2
                    sellerAccountNumber: 1300600000EUR01004110
                    amount:
                      value: "1.80"
                      currency: EUR
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/refundResponse"
              examples:
                Get iFrame URL:
                  value:
                    resultCode: "0"
                    orderId: "14326513"
                    transactionId: "123456789"
                    transactionList:
                    - id: "123123123"
                      status: completed
                      amount:
                        value: "100"
                        currency: EUR
                      paymentMethodId: "002"
                    - id: "123123124"
                      status: refund
                      amount:
                        value: "100"
                        currency: EUR
                      paymentMethodId: "002"
          description: Refund Done
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in request processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: Refund a payment transaction or all the refundable payment transactions of an order
  /payin/mandate:
    summary: This API is used to get mandate signed file
    get:
      parameters:
      - examples:
          Get with transactionId:
            value:
              transactionId: 165231523612
        x-example-number: 1
        name: transactionId
        description: Must be a transaction for SDD. Must be provided if reference is not present.
        schema:
          type: string
          minLength: 1
          maxLength: 18
          pattern: "^[0-9]+$"
        in: query
        required: false
      - examples:
          Get with mandate reference:
            value:
              reference: 2020110907201100Y0H1102
        x-example-number: 2
        name: reference
        description: Mandate reference (UMR). Must be provided if transationId is not present
        schema:
          type: string
          minLength: 1
          maxLength: 26
          pattern: "^[0-9a-zA-Z]+$"
        in: query
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/getMandateResponse"
              examples:
                Get mandate:
                  value:
                    resultCode: "0"
                    reference: "202111191439350V8211102"
                    transactionId: "165231523612"
                    signedFileContent: "DHGZHGDFUDjkk..."
          description: Get SDD mandate signed file
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in request processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: Get signed mandate file
  /payin/ticket:
    summary: This API is used to get ticket in JSON or in PDF format
    get:
      parameters:
      - examples:
          Transaction identifier:
            value:
              transactionId: "234352"
        name: transactionId
        description: Id of the transaction. Must be a card transaction.
        schema:
          type: string
          minLength: 1
          maxLength: 18
          pattern: "^[0-9]+$"
        in: query
        required: true
      - examples:
          Ticket format JSON:
            value:
              format: "J"
        name: format
        description: "Ticket format : J JSON, P : PDF"
        schema:
          type: string
          minLength: 1
          maxLength: 1
          pattern: "[JP]"
        in: query
        required: true
      - examples:
          Ticket for merchant:
            value:
              type: "M"
        name: type
        description: "Ticket type : C client, M : merchant"
        schema:
          type: string
          minLength: 1
          maxLength: 1
          pattern: "[CM]"
        in: query
        required: true
      - examples:
          Message in bottom of ticket:
            value:
              message: "Message to display in the bottom of the PDF ticket"
        name: message
        description: Message to set in the bottom of the ticket.
        schema:
          type: string
          minLength: 1
          maxLength: 200
        in: query
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/getTicketResponse"
              examples:
                JSON ticket:
                  value:
                    resultCode: "0"
                    transactionId: "2851621"
                    name: marketPlace A
                    brand: CB
                    maskedPan: 111122*************44
                    transactionStatus: "10"
                    operationDate: "20211118"
                    operationTime: "14:31:00"
                    safe: N
                    type: DEBIT
                    authNumber: "1762763"
                    transNumber: "35430234"
                    contract: "1111119"
                    amount:
                      value: "1103.28"
                      currency: EUR
                    mode: TEST
                PDF ticket:
                  value:
                    resultCode: "0"
                    transactionId: "2851621"
                    fileContent: AHGDFHGHSGFHG...
          description: Get card payment ticket
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in request processing
        "401":
          description: Header id_token with JWT invalid or absent
      summary: Get card payment ticket
      description: This API is used to get ticket in JSON or in PDF format
  /paymentAccount/setIBAN:
    summary: Create a new payment method
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/paymentAccountSetIBANRequest"
            encoding:
              fileContent:
                contentType: image/png, image/jpeg, application/pdf, application/msword, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                headers:
                  content-disposition:
                    description: Value must be 'form-data; name="file"'
                    schema:
                      type: string
                  content-transfer-encoding:
                    description: Value must be 'base64'
                    schema:
                      type: string
            examples:
              Add IBAN:
                value:              
                  accountNumber: "1300600000EUR01006110"
                  firstName: "Pierre"
                  lastName: "Tramo"
                  address: "3 rue de la paix"
                  city: "Paris"
                  postalCode: "75008"
                  country: "FRA"
                  iban: "FR3730003000402582679694W42"
                  currency: "EUR"
                summary: "JSON request and File contents will be sent separatly within boundary delimitation."
                boundary: "-------=BOUNDARY"
                multipart: 
                  - "Content-Disposition: form-data; \nname='json'\nContent-Type: application/json; \ncharset=UTF-8\n{'accountNumber': '1300600000EUR01006110',\n'firstName': 'Pierre',\n'lastName': 'Tramo',\n'address': '3 rue de la paix',\n'city': 'Paris',\n'postalCode': '75008',\n'country': 'FRA',\n'iban': 'FR3730003000402582679694W42',\n'currency': 'EUR'\n}\n"
                  - "Content-Disposition: form-data;\nname='file';\nfile='document.jpg'\nContent-Type: image/png\nContent-Transfer-Encoding: base64\n\nJVBERi0xLjMKJcTl8uXrp/..."
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/paymentAccountSetIBANResponse"
              examples:
                Start change IBAN:
                  value:
                    resultCode: "0"
                    requestId: CAPS202111260V3SH1
                    paymentMethodAlias: PM202111260V3ST1100
          description: Start change iban process response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in request processing
        "401":
          description: Header id_token with JWT invalid or absent
      summary: Start change IBAN process
      description: |-
        This function start the process to change IBAN.
        In response a requestID is provided to identify the change process.
        After validation in tyhe BO, the proprietary of the account will received an email with a link to validate this request.
  /paymentAccount/disableIBAN:
    summary: Disable current or pending payment method
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/paymentAccountDisableIBANRequest"
            examples:
              Disable existing IBAN:
                value:              
                  paymentMethodAlias: PM2021011300GLR1100
              Disable pending change IBAN:
                value:              
                  requestId: CAPS202111260V3SH1
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/paymentAccountDisableIBANResponse"
              examples:
                success:
                  value:
                    resultCode: "0"
          description: Disable IBAN response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in request processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: Disable current or pending payment method
  /accountHolder/register:
    summary: Start registering new account holder
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/accountHolderRegisterRequest"
            examples:
              Register new holder:
                value:
                  socialReason: My compagny
                  companyName: The compagny
                  country: FRA
                  legalForm: SAS
                  registrationNumber: "4252378780001"
                  masterAddress: 
                    address: Rue d'ici
                    city: Ville
                    postalCode: "75000"
                    country: FRA
                  turnover: "456789.00"
                  currency: EUR
                  regulatedSociety: N
                  physicalPersons": 
                      gender: M
                      firstName: John
                      lastName: Smith
                      email: js@mycompagny.com
                      birthDate: "19750116"
                      phoneNumber: "336123456789"
                      roles:
                        - role: BE
                        - role: CP
                  account: 
                    country: "FRA"
                    currency: "EUR"
                    iban: "FR7611808009101234567890147"
                    floorLimit: "230.00"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/accountHolderRegisterResponse"
              examples:
                Registration id and docucments:
                  value:
                    resultCode: "0"
                    requestId: CAPS202111260V3SA1
                    accountNumber: 1300600000EUR1270489911
                    paymentMethodAlias: PM202111260V3FG1100
                    requirements:
                      - id: "145511"
                        label: "Convention de compte"
                        code: ACCOUNT_AGR
                        mandatory: "Y"
                        fileType: "Account agreement"
                      - id: "145611"
                        label: "Justificatif bancaire"
                        code: BANK_ID
                        mandatory: "Y"
                        fileType: "Professional RIB on behalf of the individual"
                      - id: "145611"
                        label: "Justificatif bancaire"
                        mandatory: "Y"
                        fileType: "Professional RIB on behalf of the legal entity"
                      - id: "145711"
                        label": "Justificatif economique"
                        mandatory: "Y"
                        fileType: "BATICA Certificate of Deposit or Register Extract"
                      - id: "145811"
                        label: "Justificatif d'enregistement"
                        mandatory: "Y"
                        fileType: "Company Kbis extract less than 3 months old"
                      - id: "145811"
                        label: "Justificatif d'enregistement"
                        mandatory: "Y"
                        fileType: "Copy of the articles of association"
                      - id: "145811"
                        label: "Justificatif d'enregistement"
                        mandatory: "Y"
                        fileType: "AG PV"
                      - id: "145911"
                        label: "Questionnaire PAYS"
                        mandatory: "N"
                        fileType: "Country questionnaire"
                    physicalPersons:
                      - id: "270490011"
                        firstName: "Jhon"
                        lastName: "Smith"
                        requirements:
                        - id": "146011"
                          label": "Justificatif d'identite"
                          mandatory": "Y"
                          fileType": "Passeport"
                        - id": "146011"
                          label": "Justificatif d'identite"
                          mandatory": "Y"
                          fileType": "Id card"
                        - id": "146011"
                          label": "Justificatif d'identite"
                          mandatory": "Y"
                          fileType": "Residence permit"
                        - id": "146011"
                          label": "Justificatif d'identite"
                          mandatory": "Y"
                          fileType": "Company Kbis extract less than 3 months old"
                        - id": "146011"
                          label": "Justificatif d'identite"
                          mandatory": "Y"
                          fileType": "Front-side ID card"
                        - id": "146011"
                          label": "Justificatif d'identite"
                          mandatory": "Y"
                          fileType": "Back ID card"
          description: Start register response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: Response when error is detected
        "401":
          description: Header id_token with JWT invalid or absent
      description: Start registering new account holder
  /accountHolder/update:
    summary: Start registering new account holder
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/accountHolderUpdateRequest"
            examples:
              Modify holder:
                value:
                  requestId: CAPS202111260V3SA1
                  socialReason: My compagny
                  companyName: The compagny
                  country: FRA
                  registrationNumber: "4252378780001"
                  masterAddress: 
                    address: Rue d'ici
                    city: Ville
                    postalCode: "75000"
                    country: FRA
                  turnover: "456789.00"
                  currency: "EUR"
                  regulatedSociety: N
                  physicalPersons":
                      id: "270490011" 
                      gender: M
                      firstName: John
                      lastName: Dhoe
                      email: js@mycompagny.com
                      birthDate: "19750116"
                      phoneNumber: "336123456789"
                      roles:
                        - role: BE
                        - role: CP
                  account: 
                    country: "FRA"
                    currency: "EUR"
                    iban: "FR7611808009101234567890147"
                    floorLimit: "230.00"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/accountHolderUpdateResponse"
              examples:
                Registration id and docucments:
                  value:
                    resultCode: "0"
                    requestId: CAPS202111260V3SA1
                    accountNumber: 1300600000EUR1270489911
                    paymentMethodAlias: PM202111260V3FG1100
                    requirements:
                      - id: "145511"
                        label: "Convention de compte"
                        mandatory: "Y"
                        fileType: "Account agreement"
                      - id: "145611"
                        label: "Justificatif bancaire"
                        mandatory: "Y"
                        fileType: "Professional RIB on behalf of the individual"
                      - id: "145611"
                        label: "Justificatif bancaire"
                        mandatory: "Y"
                        fileType: "Professional RIB on behalf of the legal entity"
                      - id: "145711"
                        label": "Justificatif economique"
                        mandatory: "Y"
                        fileType: "BATICA Certificate of Deposit or Register Extract"
                      - id: "145811"
                        label: "Justificatif d'enregistement"
                        mandatory: "Y"
                        fileType: "Company Kbis extract less than 3 months old"
                      - id: "145811"
                        label: "Justificatif d'enregistement"
                        mandatory: "Y"
                        fileType: "Copy of the articles of association"
                      - id: "145811"
                        label: "Justificatif d'enregistement"
                        mandatory: "Y"
                        fileType: "AG PV"
                      - id: "145911"
                        label: "Questionnaire PAYS"
                        mandatory: "N"
                        fileType: "Country questionnaire"
                    physicalPersons:
                      - id: "270490011"
                        firstName: "Jhon"
                        lastName: "Dhoe"
                        requirements:
                        - id": "146011"
                          label": "Justificatif d'identite"
                          mandatory": "Y"
                          fileType": "Passeport"
                        - id": "146011"
                          label": "Justificatif d'identite"
                          mandatory": "Y"
                          fileType": "Id card"
                        - id": "146011"
                          label": "Justificatif d'identite"
                          mandatory": "Y"
                          fileType": "Residence permit"
                        - id": "146011"
                          label": "Justificatif d'identite"
                          mandatory": "Y"
                          fileType": "Company Kbis extract less than 3 months old"
                        - id": "146011"
                          label": "Justificatif d'identite"
                          mandatory": "Y"
                          fileType": "Front-side ID card"
                        - id": "146011"
                          label": "Justificatif d'identite"
                          mandatory": "Y"
                          fileType": "Back ID card"
          description: Update register response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: Response when error is detected
        "401":
          description: Header id_token with JWT invalid or absent
      description: Update account holder registration
  /accountHolder/uploadDocument:
    summary: Start registering new account holder
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/accountHolderUploadDocumentRequest"
            encoding:
              fileContent:
                contentType: image/png, image/jpeg, application/pdf, application/msword, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                headers:
                  content-disposition:
                    description: Value must be 'form-data; name="file"'
                    schema:
                      type: string
                  content-transfer-encoding:
                    description: Value must be 'base64'
                    schema:
                      type: string
            examples:
              upload one document:
                value:
                  requestId: CAPS202111260V3SA1
                  requirements:
                    - id: "146011"
                      fileType: IDCARD_FRONT_BACK                         
                summary: "JSON request and File contents will be sent separatly within boundary delimitation."
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/accountHolderUploadDocumentResponse"
              examples:
                Documents not already uploaded:
                  value:
                    resultCode: "0"
                    requestId: CAPS202111260V3SA1
                    requirements:
                      - id: "145511"
                        label: "Convention de compte"
                        mandatory: "Y"
                        fileType: "Account agreement"
                      - id: "145611"
                        label: "Justificatif bancaire"
                        mandatory: "Y"
                        fileType: "Professional RIB on behalf of the individual"
                      - id: "145611"
                        label: "Justificatif bancaire"
                        mandatory: "Y"
                        fileType: "Professional RIB on behalf of the legal entity"
                      - id: "145711"
                        label": "Justificatif economique"
                        mandatory: "Y"
                        fileType: "BATICA Certificate of Deposit or Register Extract"
                      - id: "145811"
                        label: "Justificatif d'enregistement"
                        mandatory: "Y"
                        fileType: "Company Kbis extract less than 3 months old"
                      - id: "145811"
                        label: "Justificatif d'enregistement"
                        mandatory: "Y"
                        fileType: "Copy of the articles of association"
                      - id: "145811"
                        label: "Justificatif d'enregistement"
                        mandatory: "Y"
                        fileType: "AG PV"
                      - id: "145911"
                        label: "Questionnaire PAYS"
                        mandatory: "N"
                        fileType: "Country questionnaire"
                    physicalPersons:
                      - id: "270490011"
                        firstName: "Jhon"
                        lastName: "Dhoe"
                  boundary: "-------=BOUNDARY"
                  multipart:
                    - "Content-Disposition: form-data; name='json'\nContent-Type: application/json; charset=UTF-8\n\n{\n'requestId':'CAPS202208010YXLB1',\n'requirements':\n[\n{\n'id':'146011',\n'fileType':'IDCARD_FRONT_BACK'\n}\n]\n}\n"
                    - "Content-Disposition: form-data;\nname='file';\nfile='document.jpg'\nContent-Type: image/png\nContent-Transfer-Encoding: base64\n\nJVBERi0xLjMKJcTl8uXrp/..."
          description: Upload document response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: Response when error is detected
        "401":
          description: Header id_token with JWT invalid or absent
      description: Start registering new account holder
  /accountHolder/registrationDetails:
    summary: Get registration information and status
    get:
      parameters:
      - examples:
          Request ID:
            value: requestId=2176372
        name: requestId
        description: Registration request identifier
        schema:
          type: string
          minLength: 1
          maxLength: 18
          pattern: "^[0-9a-zA-Z]+$"
        in: query
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/accountHolderRegisterResponse"
              examples:
                Registartion status:
                  value:
                    resultCode: "0"
                    requestId: CAPS202111260V3L61
                    status: To validate
                    requirements:
                      - mandatory: Y
                        status: Missing
                        id: "140811"
                        label: Convention de compte
                        documents:
                          - fileType: Account agreement
                            validated: N
                      - mandatory: Y
                        status: Missing
                        id: "140911"
                        label: Justificatif bancaire
                        documents: 
                          - fileType: Professional RIB on behalf of the individual
                            validated: N
                          - fileType: Professional RIB on behalf of the legal entity
                            validated: N
                      - mandatory: Y
                        status: Missing
                        id: "141011"
                        label: Justificatif economique
                        documents:
                          - fileType: BATICA Certificate of Deposit or Register Extract
                            validated: N
                      - mandatory: Y
                        status: Missing
                        id: "141111"
                        label: Justificatif d'enregistement
                        documents:
                          - fileType: Company Kbis extract less than 3 months old
                            validated: N
                          - fileType: Copy of the articles of association
                            validated: N
                          - fileType: AG PV
                            validated: N
                      - mandatory: N
                        status: Missing
                        id: "141211"
                        label: Questionnaire PAYS
                        documents:
                          - fileType: Country questionnaire,
                            validated: N
                    physicalPersons:
                      - id: "270486711"
                        firstName: John
                        lastName: Smith
                        requirements:
                          - id: "141311"
                            label: Justificatif d'identite
                            mandatory: Y
                            status: Missing
                            documents:
                              - fileType: Passeport
                                validated: N
                              - fileType: Id card
                                validated: N
                              - fileType: Residence permit
                                validated: N
                              - fileType: Company Kbis extract less than 3 months old
                                validated: N
                              - fileType: Front-side ID card
                                validated: N
                              - fileType: Back ID card
                                validated: N
          description: registration information response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: Response error
        "401":
          description: Header id_token with JWT invalid or absent
      description: Get registration details
  /accountHolder/unregister:
    summary: Unregister pending account holder registration
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/accountHolderUnregisterRequest"
            examples:
              Stop register process:
                value:
                  requestId: CAPS202111260V3SA1
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/accountHolderUnregisterResponse"
              examples:
                success:
                  value:
                    resultCode: "0"
          description: Result response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: Error response
        "401":
          description: Header id_token with JWT invalid or absent
      description: Unregister pending account holder registration
  /payin/paymentMethods:
    summary: Request a payment
    post:
      requestBody:
        description: All request data are embedded in a json structure in the body
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/paymentMethodsRequest"
            examples:
              Payment Init Example:
                value:
                  paymentAccount: 1300600000EUR01004110
                  orderReference: ORDREF20210203180537394
                  orderCountryCode: FRA
                  amount:
                    value: "70"
                    currency: EUR
                  payer:
                    language: FR
                    reference: CREF_20210203180537464
                    IPAddress: 192.168.0.1
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/paymentMethodsResponse"
              examples:
                Return Init Example:
                  value:
                    resultCode: "0"
                    paymentMethodList:
                    - id: "1"
                      label: SCT transfer
                      type: "2"
                    - id: "2"
                      label: card payment
                      type: "4"
                      aliasList:
                      - id: "001"
                        label: carte xxx
                        expirationDate: "202505"
                        maskedPan: 123456xxxxxx1234
          description: Order created/retrieved, Available Payment Methods selected
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: Error in processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: |-
        When your shopper is ready to pay, submit an order and get a list of the available payment methods and alias. The list is based on the shopper country and the order amount and currency.

        This is the first call to use when going on a payment operation.
        The next call should be /payment
  /paymentAccount/setFloorLimit:
    summary: Modifiy account floor limit
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/paymentAccountSetFloorLimitRequest"
            examples:
              Change account floor limit:
                value:              
                  accountNumber: "1300600000EUR01006110"
                  amount:
                    value: "100.00"
                    currency: "EUR"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/paymentAccountSetFloorLimitResponse"
              examples:
                Change floor limit result:
                  value:
                    resultCode: "0"
          description: Change account floor limit
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in request processing
        "401":
          description: Header id_token with JWT invalid or absent
      summary: Start change IBAN process
      description: |-
        This function start the process to change IBAN.
        In response a requestID is provided to identify the change process.
        After validation in tyhe BO, the proprietary of the account will received an email with a link to validate this request.
  /paymentAccount/report:
    summary: Get report 
    get:
      parameters:
      - examples:
          Get account details:
            value: 
              accountNumber: "1300600000EUR01006110"      
        name: accountNumber
        description: identifier of the account to get details. Mandatory if type ACCOUNT_STATEMENT.
        schema:
          type: string
          minLength: 1
          maxLength: 30
          pattern: "^[a-zA-Z0-9]+$"          
        in: query
      - examples:
          Get statement report:
            value: 
              type: "ACCOUNT_STATEMENT"      
        name: type
        description: |-
          Type of report. Can be one of follonging value:
          - ACCOUNT_STATEMENT
          - INVOICE
          - IC_FEE_REPORT
        schema:
          type: string
          minLength: 1
          maxLength: 30
          enum:
            - ACCOUNT_STATEMENT
            - INVOICE
            - IC_FEE_REPORT          
        in: query
        required: true
      - examples:
          Get PDF report:
            value: 
              format: "P"      
        name: format
        description: |-
          Format of the report:
          - P: PDF format
          - C: CSV format (not yet implemented)
        schema:
          type: string
          minLength: 1
          maxLength: 1
          enum:
            - P
            - C          
        in: query
        required: true
      - examples:
          Get 2022 report:
            value: 
              year: "2022"      
        name: year
        description: Year of the report in AAAA format. Must be less or equal to the current year.
        schema:
          type: string
          minLength: 4
          maxLength: 4
          pattern: "^[0-9]+$"
        in: query
        required: true
      - examples:
          Get february report:
            value: 
              month: "02"      
        name: month
        description: Month of the report in MM format. Must be less or equal to the current month.
        schema:
          type: string
          minLength: 2
          maxLength: 2
          enum:
            - "01"
            - "02"
            - "03"
            - "04"
            - "05"
            - "06"
            - "07"
            - "08"
            - "09"
            - "10"
            - "11"
            - "12"
        in: query
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/paymentAccountReportResponse"
              examples:
                success:
                  value:
                    resultCode: "0"
                    type: "ACCOUNT_STATEMENT"
                    year: "2022"
                    month: "02"
                    fileContent: "kjhfkjhzeuiuAIUYIdu...JSHKFJHKSJFH=="
          description: Report in base64
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in order retireval
        "401":
          description: Header id_token with JWT invalid or absent
      description: Get account details
  /selfcare/init:
    summary: Init Selfcare enrollment
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/selfcareInitRequest"
            examples:
              Seller enrollment:
                value:
                    firstName: Olivier
                    lastName: GARIN
                    email: olivier.garin@email.fr
                    phone: '0123456789'
                    socialReason: 'GARIN & Fils'
                    accountFloorLimit: '100.00'
                    language: FR
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/selfcareInitResponse"
              examples:
                Selfcare enrollment response:
                  value:
                      resultCode: '0'
                      requestId: CAPS2022102605QZL1
                      statusLabel: Pending
          description: Seller enrollment request initialized
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/errorResponse"
          description: error in operation processing
        "401":
          description: Header id_token with JWT invalid or absent
      description: Init Selfcare seller enrollment by creating a new request, identified by requestId value



components:
  schemas:
    account:
      description: Account information
      type: object
      properties:
        number:
          description: Number of the account
          type: string
        name:
          description: Thirdparty name
          type: string
        status:
          $ref: "#/components/schemas/accountStatus"
          description: ""
        currency:
          $ref: "#/components/schemas/currencyCode"
          description: ""
        type:
          description: Account type
          type: string
        payoutAuto:
          description: 1 if payout auto activated
          type: string
        floorLimit:
          description: Minimum amount for payout auto
          type: string
        balance:
          description: Account balance
          type: string
        availableBalance:
          description: |-
            Avalibale balance is the balance minus the floor limit. 
            Set to 0 if result is negative
          type: string
    currencyCode:
      description: Currency code in 3 characters ISO format
      type: string
      minLength: 3
      maxLength: 3
      pattern: "^[A-Z]+$"
    sellerReference:
      description: Reference to the seller
      type: string
      minLength: 1
      maxLength: 50
      pattern: "^[a-zA-Z0-9]+$"
    resultCodeMessage:
      description: |-
        The failure description. The message can be used to understand
        the failure reason. It must be transmitted to support for diagnostic.
      type: string
    resultCode:
      description: |-
        API operation result. This code is 0 in case of success.
        If resultCode is not 0, the operation fails.
        In this case, a resultCodeMessage describe the reason of failure.
        resultCodeMessage can be absent if no reason is provided for the resultCode.
      type: string
    transactionRef:
      description: Reference for the transaction
      type: string
      minLength: 1
      maxLength: 30
      pattern: "^[a-zA-Z0-9]+$"
    metaData:
      description: JSON data for the marketplace. This data is not used by payment systems.
      type: object
      additionalProperties: true
      minLength: 2
      maxLength: 2048
    orderStatus:
      description: |-
        Status of an order. the following status can be provided:
        - created: The order is created
        - pending_payment: Payment in progress
        - complete: Payment is completed
        - partial_complete: Payment is completed but all order amount is not payed
        - canceled: The order is canceled
      enum:
      - created
      - pending_payment
      - partial_complete
      - complete
      - canceled
      type: string
    accountNumber:
      description: A string representing the account number.
      type: string
      minLength: 1
      maxLength: 30
      pattern: "^[a-zA-Z0-9]+$"
    countryCode:
      description: The ISO country code in 3 characters format
      type: string
      minLength: 3
      maxLength: 3
      pattern: "^[A-Z]+$"
    orderReference:
      description: |-
        Marketplace reference for this order.
        Characters authorized are: a to z, A to Z, 0 to 9 and - / . + : and space
      type: string
      minLength: 1
      maxLength: 50
      pattern: "^[-a-zA-Z0-9.+:]+(\/?[-a-zA-Z0-9.+: ])*([-a-zA-Z0-9.+:])+$"
    transactionId:
      description: Id of the payment transaction.
      type: string
      minLength: 1
      maxLength: 18
      pattern: "^[0-9]+$"
    operationRef:
      description: Reference for the operation
      type: string
      minLength: 1
      maxLength: 18
    operationSide:
      description: |-
        direction of the operation
        - PAYIN: Receive funds
        - PAYOUT: Export funds
        - TRANSFER: Transfer between internal account
      enum:
      - PAYIN
      - PAYOUT
      - TRANSFER
      type: string
    aliasId:
      description: Identifier for the alias
      type: string
      minLength: 1
      maxLength: 18
      pattern: "^[0-9]+$"
    paymentMethodId:
      description: |-
        id (string) : ID of the type of payment method.
        This id must be provided to identify the payment method.
        The list of payment method IDs is provided when your AgoraPay account is created.
      type: string
      minLength: 1
      maxLength: 18
      pattern: "^[0-9]+$"
    paymentMethodAlias:
      description: Alias identifying a previously registered payment method.
      type: string
      minLength: 1
      maxLength: 50
      pattern: "^[a-zA-Z0-9]+$"
    paymentMethodTypeId:
      description: |-
        Id of the type of payment method.
        - 1: Sepa Direct Debit
        - 2: Sepa Credit Transfer
        - 3: Transfer
        - 4: Card
        - 5: SWIFT
        - 6: Sepa Direct Debit B2B
        - 7: Letter of credit
        - 8: Voucher
        - 9: Remainder
        - 10: SCT instant
        - 11: PISP
      enum:
      - "1"
      - "2"
      - "3"
      - "4"
      - "5"
      - "6"
      - "7"
      - "8"
      - "9"
      - "10"
      - "11"
      type: string
    paymentData:
      description: Specific data for a payment method
      type: string
      minLength: 1
      maxLength: 2048
    paymentMethodKey:
      description: |-
        Key identifier of the payment method type id
        - SDD: Sepa Direct Debit
        - SCT: Sepa Credit Transfer
        - CARD: Payment with card
        - SDD B2B: Sepa Direct Debit for B2B
        - PISP: PISP
      enum:
      - SDD
      - SCT
      - CARD
      - SDD B2B
      - PISP
      type: string
    transferResponse:
      description: ""
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        transactionId:
          $ref: "#/components/schemas/transactionId"
          description: ""
    paymentAccount:
      description: |-
        "Account number of the marketplace.
        If not provided, the account number identified by the id_token header is used. 
        If this payment account is provided, it must be a child account of the account identified by the header id_token.
      type: string
      minLength: 1
      maxLength: 30
      pattern: "^[a-zA-Z0-9]+$"
    details:
      description: |-
        Payment details information
        For some payment methods, additional details are needed.
      type: object
      properties:
        firstName:
          description: ""
          type: string
          minLength: 1
          maxLength: 38
        lastName:
          description: ""
          type: string
          minLength: 1
          maxLength: 38
        address:
          description: Road name and number
          type: string
          minLength: 1
          maxLength: 38
        city:
          description: ""
          type: string
          minLength: 1
          maxLength: 30
        postalCode:
          description: ""
          type: string
          minLength: 1
          maxLength: 10
          pattern: "^[-a-zA-Z0-9 ]+$"
        country:
          description: Country in 3 letters ISO format
          type: string
          minLength: 3
          maxLength: 3
          pattern: "^[A-Z]+$"
        iban:
          description: ""
          type: string
          minLength: 1
          maxLength: 30
          pattern: "^[a-zA-Z0-9]+$"
        email:
          description: ""
          type: string
          minLength: 1
          maxLength: 50
          pattern: "^([-_a-zA-Z0-9]+[.])*[-_+a-zA-Z0-9]+@([-_a-zA-Z0-9]+[.])+[-_a-zA-Z0-9]{2,4}$"
        state:
          description: ""
          type: string
          minLength: 1
          maxLength: 30
          pattern: "^[a-zA-Z0-9 ]+$"
        gender:
          description: ""
          type: string
          minLength: 1
          maxLength: 1
          pattern: "[MF]"
        phoneNumber:
          description: ""
          type: string
          minLength: 1
          maxLength: 16
          pattern: "^([+]|0|00)[1-9][0-9]{7,15}$"
        sequence:
          description: |-
            For payment method with mandate, the sequence is 
            - FRST for first use of recurrent mandate
            - RCUR for use of recurrent mandate
            - FNAL for last use of recurrent mandate
            - OOFF for a mandate used only one time
          enum:
          - FRST
          - RCUR
          - FNAL
          - OOFF
          type: string
        reference:
          description: |-
            Mandate reference in case of a SDD payment.
            transactionId of the initial payment in case of a card recurring payment.
          type: string
          minLength: 1
          maxLength: 30
          pattern: "^[a-zA-Z0-9]+$"
        socialReason:
          description: Compagny name
          type: string
          minLength: 1
          maxLength: 50
        address2:
          description: Additional address
          type: string
          minLength: 1
          maxLength: 38
    virtualIban:
      description: Iban to make payment to for SCT or SWIFT method
      type: string
    commission:
      description: Commission information
      required:
      - amount
      type: object
      properties:
        amount:
          description: Amout of the commission in the currency of the order with two decimal maximum
          type: string
          minLength: 1
          maxLength: 16
          pattern: "^[0-9]{1,13}([.][0-9]{1,2})?$"
        account:
          description: Commission accountNumber
          type: string
          minLength: 1
          maxLength: 26
          pattern: "^[a-zA-Z0-9]+$"
    reference:
      description: reference of the customer from the marketplace
      type: string
      minLength: 1
      maxLength: 30
      pattern: "^[-a-zA-Z0-9()/?:.+ _]+$"
    mndtSequence:
      description: |-
        Mandate sequence 
        - FRST for first use of recurrent mandate
        - RCUR for use of recurrent mandate
        - FNAL for last use of recurrent mandate
        - OOFF for a mandate used only one time
      enum:
      - FRST
      - RCUR
      - FNAL
      - OOFF
      type: string
    capture:
      description: Capture indicator. Set to "0" for authorization only (default value 1 - transaction captured))
      type: string
      enum:
      - "1"
      - "0"
      - "Y"
      - "N"
    urlRedirectIn:
      description: |-
        Url where the customer must be redirected at the end of the payment with the partner.
        This URL is completed by /success, /error or /cancel according to the partner response status.
        When the customer will be redirected to the marketPlace at the end of the partner payment process, the paymentDetails function must be called to terminate payment with the data transmitted by the partner.
        For development purpose, you can use http://127.0.0.1 (localhost is not supported)
      type: string
      minLength: 1
      maxLength: 255
      pattern: "^https?://(www.)?[-a-zA-Z0-9@:%._+~#=]{1,256}.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$"
    urlRedirectOut:
      description: |-
        Url to redirect the customer to continue the payment flow with an external partner.
        The marketplace must redirect its customer to this url to continue the payment process
      type: string
    reason:
      description: Operation label transmitted in payment system. Maximum length of 140 characters.
      type: string
      minLength: 1
      maxLength: 140
      pattern: "^[-a-zA-Z0-9/.+_ ]+$"
    registerAlias:
      description: |-
        When set to "1" or "Y", an alias will be registered when the payment will
        be completed, if possible.
        If not present or equal to "0" or "N", no alias is registered.
      type: string
      enum: 
      - "1"
      - "0"
      - "Y"
      - "N"
    endToEndId:
      description: |-
        Use to identify transaction in SEPA transfer.
        Autorized characters are alpha numeric, - and /. 
        Characters / and space are authorized but not in first and last position.
        Also, two // are not allowed.
      type: string
      minLength: 2
      maxLength: 35
      pattern: "^[-a-zA-Z0-9]+(\/?[-a-zA-Z0-9 ])*([-a-zA-Z0-9])+$"
    accountList:
      description: Account information
      type: object
      properties:
        number:
          description: Number of the account
          type: string
        name:
          description: Thirdparty name
          type: string
        status:
          $ref: "#/components/schemas/accountStatusCode"
          description: ""
        currency:
          $ref: "#/components/schemas/currencyCode"
          description: ""
        type:
          description: Account type
          type: string
        payoutAuto:
          description: 1 if payout auto activated
          type: string
        floorLimit:
          description: Minimum amount for payout auto
          type: string
        reference:
          description: Account reference
          type: string
    accountStatusCode:
      description: |-
        Account status code in one char length
        A: Activated
        D: Deactivated
        R: Registered
        S: Suspended
      enum:
      - "A"
      - "D"
      - "R"
      - "S"
      type: string
    requestId:
      description: ID to identify processing request
      type: string
      minLength: 1
      maxLength: 18
      pattern: "^[0-9a-zA-Z]+$"
    IBAN:
      description: International Bank Account Number
      type: string
      minLength: 1
      maxLength: 30
      pattern: "^[a-zA-Z0-9]+$"
    gender:
      description: Person gender M or F
      enum:
      - M
      - F
      type: string      
    personRole:
      description: |-
        Role of a physical person
        - BE: Beneficial owner
        - D: Manager
        - MD: Mandatary
        - CP: Legal representative
      enum:
      - BE
      - D
      - MD
      - CP
      type: string
    accountHolder:
      description: ""
      type: object
      properties:
        status:
          description: Account holder status
          type: string
        accountNumber:
          $ref: "#/components/schemas/accountNumber"
          description: ""
        requestId:
          $ref: "#/components/schemas/requestId"
          description: If registration is pending
    role:
      description: |-
        Role of a physical person
        - BE : Beneficial owner
        - D : Manager
        - MD : Mandatary
        - CP : Legal representative
      enum:
      - BE
      - D
      - MD
      - CP
      type: string
    accountHolderRegisterResponse:
      description: Start register new account holder response
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        requestId:
          description: Id used for futher update function call
          type: string
        accountNumber:
          $ref: "#/components/schemas/accountNumber"
          description: ""
        paymentMethodAlias:
          $ref: "#/components/schemas/paymentMethodAlias"
          description: ""
        requirements:
          description: ""
          type: array
          items:
            $ref: "#/components/schemas/requirementResponse"
        physicalPersons:
          description: ""
          type: array
          items:
            $ref: "#/components/schemas/registerPersonResponse"
    accountHolderRegisterRequest:
      description: Start register new account holder request
      required:
      - socialReason
      - country
      - legalForm
      - registrationNumber
      - masterAddress
      - turnover
      - regulatedSociety
      - physicalPersons
      - account
      - currency
      - owner
      type: object
      properties:
        socialReason:
          description: Holder name
          type: string
          minLength: 1
          maxLength: 50
        companyName:
          description: Commercial name
          type: string
          minLength: 1
          maxLength: 50
        currency:
          $ref: "#/components/schemas/currencyCode"
          description: ""
          minLength: 2
          maxLength: 3
          pattern: "^[A-Z]+$"
        country:
          $ref: "#/components/schemas/countryCode"
          description: ""
          minLength: 3
          maxLength: 3
          pattern: "^[A-Z]+$"
        legalForm:
          description: ""
          type: string
          minLength: 1
          maxLength: 50
        registrationNumber:
          description: Identification number for entity. For example, SIRET for France
          type: string
          minLength: 1
          maxLength: 50
          pattern: "^[-A-Z0-9]+$"
        masterAddress:
          $ref: "#/components/schemas/registerAddress"
          description: ""
        commercialAddress:
          $ref: "#/components/schemas/registerAddress"
          description: Same as master address if not provided
        turnover:
          description: Current or last year turnover in account currency code unit
          type: string
          minLength: 1
          maxLength: 16
          pattern: "^[0-9]{1,13}([.][0-9]{1,2})?$"
        regulatedSociety:
          description: Y or N
          type: string
          minLength: 1
          maxLength: 1
          enum:
          - "Y"
          - "N"
        physicalPersons:
          description: At least one person must be provided with CP role
          type: array
          items:
            $ref: "#/components/schemas/registerPersonRequest"
        account:
          $ref: "#/components/schemas/registerAccount"
          description: ""
        owner:
          description: "Account owner information"
          required:
          - address
          - city
          - postalCode
          - country
          type: object
          properties: 
            gender:
              type: string
              enum: 
              - M
              - F
            firstName:
              type: string
              minLength: 1
              maxLength: 50
              pattern: "^[A-ZÀ-ÿa-z ]+$"
            lastName:
              type: string
              minLength: 1
              maxLength: 50
              pattern: "^[A-ZÀ-ÿa-z ]+$"
            socialReason:
              type: string
              minLength: 1
              maxLength: 50
            address:
              type: string
              minLength: 1
              maxLength: 38
              pattern: "^[- A-Z0-9,.]+$"
            city:
              type: string
              minLength: 1
              maxLength: 38
            postalCode:
              type: string
              minLength: 1
              maxLength: 10
              pattern: "^[-a-zA-Z0-9 ]+$"              
            country:
              type: string
              minLength: 3
              maxLength: 3
              pattern: "[A-Z][A-Z][A-Z]"
    accountHolderRegistrationDetailsResponse:
      description: Account holder register details response
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        requestId:
          description: Id used for futher update function call
          type: string
        accountNumber:
          $ref: "#/components/schemas/accountNumber"
          description: ""
        paymentMethodAlias:
          $ref: "#/components/schemas/paymentMethodAlias"
          description: ""
        requirements:
          description: ""
          type: array
          items:
            $ref: "#/components/schemas/requirementResponseDetail"
        physicalPersons:
          description: ""
          type: array
          items:
            $ref: "#/components/schemas/registerPersonResponseDetail"
    accountHolderUnregisterRequest:
      description: Unregister pending holder registration request
      required:
      - requestId
      type: object
      properties:
        requestId:
          $ref: "#/components/schemas/requestId"
          description: ""
    accountHolderUnregisterResponse:
      description: Unregister pending holder registration response
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
    accountHolderUpdateRequest:
      description: Update holder registration request
      required:
      - requestId
      type: object
      properties:
        socialReason:
          description: Holder name
          type: string
          minLength: 1
          maxLength: 50
        companyName:
          description: Commercial name
          type: string
          minLength: 1
          maxLength: 50
        country:
          $ref: "#/components/schemas/countryCode"
          description: ""
          minLength: 3
          maxLength: 3
          pattern: "^[A-Z]+$"
        masterAddress:
          $ref: "#/components/schemas/registerAddress"
          description: ""
        commercialAddress:
          $ref: "#/components/schemas/registerAddress"
          description: Same as master address if not provided
        turnover:
          description: Current or last year turnover in account currency code unit
          type: string
          minLength: 1
          maxLength: 16
          pattern: "^[0-9]{1,13}([.][0-9]{1,2})?$"
        regulatedSociety:
          description: Y or N
          type: string
          enum: 
          - "Y"
          - "N"
        physicalPersons:
          description: At least one person must be provided with CP role
          type: array
          items:
            $ref: "#/components/schemas/registerPersonUpdateRequest"
        account:
          $ref: "#/components/schemas/registerAccount"
          description: ""
        owner:
          description: "Account owner information"
          required:
          - address
          - city
          - postalCode
          - country
          type: object
          properties: 
            gender:
              type: string
              enum: 
              - M
              - F
            firstName:
              type: string
              minLength: 1
              maxLength: 50
              pattern: "^[A-ZÀ-ÿa-z ]+$"
            lastName:
              type: string
              minLength: 1
              maxLength: 50
              pattern: "^[A-ZÀ-ÿa-z ]+$"
            socialReason:
              type: string
              minLength: 1
              maxLength: 50
            address:
              type: string
              minLength: 1
              maxLength: 38
              pattern: "^[- A-Z0-9,.]+$"
            city:
              type: string
              minLength: 1
              maxLength: 38
            postalCode:
              type: string
              minLength: 1
              maxLength: 10
              pattern: "^[-a-zA-Z0-9 ]+$"              
            country:
              type: string
              minLength: 3
              maxLength: 3
              pattern: "[A-Z][A-Z][A-Z]"          
        currency:
          $ref: "#/components/schemas/currencyCode"
          description: Required if turnover provided
        requestId:
          $ref: "#/components/schemas/requestId"
          description: ""
    accountHolderUpdateResponse:
      description: update holder registration response
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        requestId:
          description: Id used for futher update function call
          type: string
        accountNumber:
          $ref: "#/components/schemas/accountNumber"
          description: ""
        paymentMethodAlias:
          $ref: "#/components/schemas/paymentMethodAlias"
          description: ""
        requirements:
          description: ""
          type: array
          items:
            $ref: "#/components/schemas/requirementResponse"
        physicalPersons:
          description: ""
          type: array
          items:
            $ref: "#/components/schemas/registerPersonResponse"
    accountHolderUploadDocumentRequest:
      description: Upload holder registration request
      required:
      - requirements
      - requestId
      type: object
      properties:
        requirements:
          description: ""
          type: array
          items:
            $ref: "#/components/schemas/requirementUploadRequest"
        requestId:
          $ref: "#/components/schemas/requestId"
          description: ""
    accountHolderUploadDocumentResponse:
      description: Upload holder registration response
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        requestId:
          description: Id used for futher update function call
          type: string
        requirements:
          description: ""
          type: array
          items:
            $ref: "#/components/schemas/requirementResponse"
        physicalPersons:
          description: ""
          type: array
          items:
            $ref: "#/components/schemas/registerPersonResponse"
    accountResponse:
      description: Get account information response
      required:
      - resultCode
      type: object
      properties:
        account:
          $ref: "#/components/schemas/account"
          description: ""
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
    accountType:
      description: |-
        Type of account
        - 1: principal
        - 3: waiting
        - 4: suspense
        - 5: change
        - 6: commission
        - 13: voucher
        - 14: reliquat
        - 15: autorization
        - 16: pre-autorization
      enum:
      - "1"
      - "3"
      - "4"
      - "5"
      - "6"
      - "13"
      - "14"
      - "15"
      - "16"
      type: string
    ajustPaymentResponse:
      description: Adjust amount or breakdown list response
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
    alias:
      description: Alias description
      required:
      - id
      type: object
      properties:
        id:
          $ref: "#/components/schemas/aliasId"
          description: ""
        expirationDate:
          description: format MMYY
          type: string
        maskedPan:
          description: Hidden card number or IBAN
          type: string
        label:
          description: label of the alias
          type: string
        brand:
          description: Card brand (CB, VISA, MASTERCARD) or bank code for IBAN
          type: string
        bankCode:
          description: ""
          type: string
    accountStatus:
      description: |-
        The status of the account
        - activated: account si available
        - deactivated: account is no more available
        - registered: account is not activated yet
        - suspended: account is temporay not available
      enum:
      - activated
      - deactivated
      - registered
      - suspended
      type: string
    adjustPaymentRequest:
      description: The request to change the amount or submit a new breakdown list
      type: object
      properties:
        breakdownList:
          description: List of breakdown
          type: array
          items:
            $ref: "#/components/schemas/breakdown"
        metaData:
          description: ""
          $ref: "#/components/schemas/metaData"
        adjustAmount:
          $ref: "#/components/schemas/adjustAmount"
          description: Amount to ajust. Must be absent for payment type card.
        orderId:
          $ref: "#/components/schemas/orderId"
          description: ""
        transactionId:
          $ref: "#/components/schemas/transactionId"
          description: ""
    aliasSimple:
      description: Alias identification to used
      required:
      - id
      type: object
      properties:
        id:
          $ref: "#/components/schemas/aliasId"
          description: ""
    amount:
      description: amount information
      required:
      - currency
      - value
      type: object
      properties:
        value:
          description: |-
            The value of the amount in decimal with max 2 digits after separator.
            Only digits and dot are authorized.
          type: string
          minLength: 1
          maxLength: 16
          pattern: "^[0-9]{1,13}([.][0-9]{1,2})?$"
        currency:
          description: the currency iso code of the amount with 3 characters
          type: string
          minLength: 3
          maxLength: 3
          pattern: "^[A-Z]+$"
    adjustAmount:
      description: Mandatory if the amount is different than the initial payment.
      required:
      - currency
      - value
      type: object
      properties:
        value:
          description: |-
            The value of the amount in decimal with max 2 digits after separator.
            Only digits and dot are authorized.
          type: string
          minLength: 1
          maxLength: 16
          pattern: "^[0-9]{1,13}([.][0-9]{1,2})?$"
        currency:
          description: the currency iso code of the amount with 3 characters
          type: string
          minLength: 3
          maxLength: 3
          pattern: "^[A-Z]+$"
    breakdown:
      description: The breakdown of the order if needed.
      required:
      - amount
      - sellerAccountNumber
      - label
      type: object
      properties:
        amount:
          $ref: "#/components/schemas/amount"
          description: amount of the breakdown
        sellerAccountNumber:
          $ref: "#/components/schemas/sellerAccountNumber"
          description: ""
        label:
          description: Label for the breakdown. Maximum 30 characters
          type: string
          minLength: 1
          maxLength: 30
          pattern: "^[-a-zA-Z0-9_()/?:.,+;' ]+$"
        commission:
          $ref: "#/components/schemas/commission"
          description: ""
    breakdownSimple:
      description: The breakdown of the order
      required:
      - amount
      - sellerAccountNumber
      - label
      type: object
      properties:
        amount:
          $ref: "#/components/schemas/amount"
          description: amount of the breakdown
        sellerAccountNumber:
          $ref: "#/components/schemas/sellerAccountNumber"
          description: ""
        label:
          description: Label for the breakdown
          type: string
          minLength: 1
          maxLength: 30
          pattern: "^[-a-zA-Z0-9_()/?:.,+;' ]+$"
    cancelRequest:
      description: The minimal set of properties required to perform a cancel
      required:
      - orderId
      type: object
      properties:
        orderId:
          description: Order id obtained when the payment was made and the order was created.
          type: string
          minLength: 1
          maxLength: 18
          pattern: "^[0-9]+$"
        transactionId:
          $ref: "#/components/schemas/transactionId"
          description: ""
        metaData:
          $ref: "#/components/schemas/metaData"
          description: ""
    captureRequest:
      description: The minimal set of properties required to perform a capture
      required:
      - orderId
      - transactionAmount
      type: object
      properties:
        orderId:
          $ref: "#/components/schemas/orderId"
          description: ""
        transactionAmount:
          $ref: "#/components/schemas/amount"
          description: Capture amount
        metaData:
          $ref: "#/components/schemas/metaData"
          description: ""
        breakdownList:
          description: ""
          type: array
          items:
            $ref: "#/components/schemas/breakdown"
        transactionId:
          $ref: "#/components/schemas/transactionId"
          description: ""
    errorResponse:
      description: Structure of the response when an error is replied
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
    getMandateResponse:
      description: Get mandate response
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
        transactionId:
          $ref: "#/components/schemas/transactionId"
        reference:
          $ref: "#/components/schemas/mndtRef"
        signedFileContent:
          description: PDF file base64 encoded
          type: string
    getTicketResponse:
      description: getTicket Response. If format is P, only fields resultCode, transactionId and fileContent are present
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
        transactionId:
          $ref: "#/components/schemas/transactionId"
        name:
          type: string
        brand:
          type: string
        maskedPan:
          description: Hidden card number
          type: string
        transactionStatus:
          $ref: "#/components/schemas/transactionStatus"
        operationDate:
          $ref: "#/components/schemas/operationDate"
        operationTime:
          description: Operation time in HH:MM:SS format
          type: string
        safe:
          description: Y if 3DS is verified
          type: string
        type:
          description: "1: DEBIT, 2: CREDIT"
          type: string
        authNumber:
          type: string
        transNumber:
          description: Transaction number in PSP
          type: string
        amount:
          $ref: "#/components/schemas/amount"
          description: Purchase amount
        mode:
          description: PROD or TEST
          type: string
        fileContent:
          description: PDF file content base64 encoded, if format is P
          type: string
        contract:
          description: Payment partner contract number
          type: string
    operation:
      description: Operation information
      required:
      - amount
      - transactionId
      - side
      - status
      - type
      type: object
      properties:
        amount:
          $ref: "#/components/schemas/amount"
          description: Amount of the operation
        date:
          description: "operation Date "
          type: string
        side:
          $ref: "#/components/schemas/operationSide"
          description: ""
        type:
          $ref: "#/components/schemas/operationType"
          description: type of the operation
        status:
          $ref: "#/components/schemas/operationStatus"
          description: status of the operation
        breakdownList:
          description: List of breakdown
          type: array
          items:
            $ref: "#/components/schemas/breakdownSimple"
        metaData:
          $ref: "#/components/schemas/metaData"
          description: ""
        transactionId:
          $ref: "#/components/schemas/operationRef"
          description: ""
        creationDateTime:
          description: "ISO 8601 format (ex: 20210325T082300+01:00)"
          type: string
        accountNumber:
          $ref: "#/components/schemas/accountNumber"
          description: ""
        cachedCumulAmount:
          description: Amount already cached
          type: string
        orderReference:
          $ref: "#/components/schemas/orderReference"
          description: ""
        accountCurrencyCode:
          $ref: "#/components/schemas/currencyCode"
          description: ""
        operationLabel:
          $ref: "#/components/schemas/operationLabel"
          description: ""
        relatedMsgStatusLabel:
          description: Status explanation
          type: string
        thirdPartyName:
          description: ""
          type: string
        accountType:
          $ref: "#/components/schemas/accountType"
          description: ""
        accountCptNumber:
          $ref: "#/components/schemas/accountNumber"
          description: ""
        accountCptTypeLabel:
          $ref: "#/components/schemas/accountType"
          description: ""
        accountCptCurrencyCode:
          $ref: "#/components/schemas/currencyCode"
          description: ""
        thirdPartyCptName:
          description: ""
          type: string
    operationDate:
      description: |-
        Date of the operation.
        The format must be YYYYMMDD
      type: string
    operationLabel:
      description: Label of the operation
      type: string
    operationsListResponse:
      description: List of operation matching the request
      required:
      - operationList
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        operationList:
          description: List of operation matching the request
          type: array
          items:
            $ref: "#/components/schemas/operation"
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        lineCount:
          description: Total number of lines
          type: string
    operationStatus:
      description: |-
        Status of the operation
        - registered: operation is registered
        - waiting: operation is waiting for funds
        - cashed: funds are received
        - cancelled: operation is canceled
        - suspended: operation is temporay suspended
        - rejected: operation is rejeted by peer
      enum:
      - registered
      - waiting
      - cashed
      - cancelled
      - suspended
      - rejected
      type: string
    operationType:
      description: |-
        Type of the operation
        - 1: Purchase
        - 2: Refund
        - 3: Manual
        - 4: Transfer
        - 5: Payment
        - 6: Reload/Payout
        - 7: Authorization
        - 8: Pre-authorization
        - 9: Unpaid
        - 11: Fees
      enum:
      - "1"
      - "2"
      - "3"
      - "4"
      - "5"
      - "6"
      - "7"
      - "8"
      - "9"
      - "11"
      type: string
    orderId:
      description: Order id obtained in order creation
      type: string
      minLength: 1
      maxLength: 18
      pattern: "^[0-9]+$"
    payer:
      description: Payer's details
      required:
      - reference
      type: object
      properties:
        IPAddress:
          description: IP address of the customer. IPv4 and IPv6 formats are accepted.
          type: string
          minLength: 1
          maxLength: 39
          pattern: "((^(((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])))$))"
        reference:
          description: reference of the customer from the marketplace
          type: string
          minLength: 1
          maxLength: 100
        userAgent:
          description: The browser information used to request the payment
          type: string
          minLength: 1
          maxLength: 255
        language:
          description: |-
            The default language of the browser.
            The first two characters are used to identify the language code.
            Must be in upper case.
            Only french is supported at this time.
          type: string
          minLength: 2
          maxLength: 2
          pattern: "^[A-Z]+$"
    payerSimple:
      description: payer information
      required:
      - reference
      type: object
      properties:
        reference:
          description: Reference of the customer from the marketplace, which must be equal to the initial reference
          type: string
          minLength: 1
          maxLength: 100
        language:
          description: |-
            The default language of the browser.
            The first two characters are used to identify the language code.
            Must be in upper case.
            Only french is supported at this time.
          type: string
          minLength: 2
          maxLength: 2
          pattern: "^[A-Z]+$"
    paymentAccountCreditRequest:
      description: Data in input of paymentAccount credit request
      required:
      - amount
      - currency
      - accountNumber
      - paymentMethodKey
      type: object
      properties:
        accountNumber:
          $ref: "#/components/schemas/accountNumber"
          description: ""
        amount:
          description: Recharge amount
          type: string
          minLength: 1
          maxLength: 16
          pattern: "^[0-9]{1,13}([.][0-9]{1,2})?$"
        currency:
          $ref: "#/components/schemas/currencyCode"
          description: ""
        paymentMethodKey:
          description: |-
            Key identifier of the payment method type id. The following method are available:
            - SCT: Sepa Credit Transfer
          enum:
          - SCT
          type: string
    paymentAccountCreditResponse:
      description: Payment account credit response
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        transactionId:
          $ref: "#/components/schemas/transactionId"
          description: ""
        virtualIban:
          $ref: "#/components/schemas/virtualIban"
          description: ""
    paymentAccountDisableIBANRequest:
      description: |-
        Disable IBAN request.
        One of requestId or paymentMethodAlias is required
      type: object
      properties:
        requestId:
          description: Current payment method, or pending payment method
          type: string
          minLength: 1
          maxLength: 18
          pattern: "^[0-9a-zA-Z]+$"
        paymentMethodAlias:
          $ref: "#/components/schemas/paymentMethodAlias"
    paymentAccountDisableIBANResponse:
      description: Disable IBAN response
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
    paymentAccountFloorLimitRequest:
      description: Account set floor limit request
      required:
      - accountFloorLimit
      - accountNumber
      type: object
      properties:
        accountNumber:
          $ref: "#/components/schemas/accountNumber"
          description: ""
          minLength: 1
          maxLength: 30
          pattern: "^[a-zA-Z0-9]+$"
        accountFloorLimit:
          description: Minimum amount left in the account with payoutAuto process
          type: string
          minLength: 1
          maxLength: 16
          pattern: "^[0-9]{1,13}([.][0-9]{1,2})?$"
    paymentAccountFloorLimitResponse:
      description: Account set floor limit response
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
    paymentAccountListResponse:
      description: Account list response
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        lineCount:
          description: Total number of lines
          type: string
        accountList:
          description: List of accounts
          type: array
          items:
            $ref: "#/components/schemas/accountList"
    paymentAccountPayautoRequest:
      description: Payout auto request
      required:
      - amount
      - frequency
      - accountNumber
      - paymentMethodAlias
      type: object
      properties:
        accountNumber:
          $ref: "#/components/schemas/accountNumber"
          description: ""
        amount:
          description: Recharge amount
          type: string
          minLength: 1
          maxLength: 16
          pattern: "^[0-9]{1,13}([.][0-9]{1,2})?$"
        frequency:
          description: |-
            0: deactivate
            1: once a day
            2: once a week
            3: once a month
            10: Automatic on threshold
          enum:
          - "0"
          - "1"
          - "2"
          - "3"
          type: string
        dayOfWeek:
          description: |-
            Selected day of the week. Between 0 and 6
            If frequency is set to 2, dayOfWeek is a mandatory field.
            0: Sunday
            1: Monday
            2: Tuesday
            3: Wednesday
            4: Thursday
            5: Friday
            6: Saturday
          type: string
          enum:
          - "0"
          - "1"
          - "2"
          - "3"
          - "4"
          - "5"
          - "6"
        dayOfMonth:
          description: |-
            Selected day of the month. Between 1 and 31.
            If frequency is set to 3, dayOfMonth is a mandatory field
          type: string
          enum:
          - "1"
          - "2"
          - "3"
          - "4"
          - "5"
          - "6"
          - "7"
          - "8"
          - "9"
          - "10"
          - "11"
          - "12"
          - "13"
          - "14"
          - "15"
          - "16"
          - "17"
          - "18"
          - "19"
          - "20"
          - "21"
          - "22"
          - "23"
          - "24"
          - "25"
          - "26"
          - "27"
          - "28"
          - "29"
          - "30"
          - "31"
        paymentMethodAlias:
          $ref: "#/components/schemas/paymentMethodAlias"
          description: ""
          minLength: 1
          maxLength: 30
          pattern: "^[a-zA-Z0-9]+$"
    paymentAccountPayautoResponse:
      description: Payout auto response
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
    paymentAccountSetIBANRequest:
      description: |- 
        Start the change IBAN process request
        Upload must be done in multipart/form-data mime type.
        One part must be a valid JSON with required fields in content-disposition named 'json'.
        Second part must be the file base64 encoded in content-disposition named 'file'.
        fileExt is defined in content-type of file part.
      required:
      - currency
      - address
      - city
      - country
      - postalCode
      - iban
      type: object
      properties:
        accountNumber:
          $ref: "#/components/schemas/accountNumber"
          description: ""
        firstName:
          description: The first name of the IBAN account's owner
          type: string
          minLength: 1
          maxLength: 50          
        lastName:
          description: The last name of the IBAN account's owner
          type: string
          minLength: 1
          maxLength: 50          
        socialReason:
          description: The name of the IBAN account's owner if compagny
          type: string
          minLength: 1
          maxLength: 50          
        address:
          description: The road name and number of the IBAN account's owner
          type: string
          minLength: 1
          maxLength: 38          
        city:
          description: The city of the IBAN account's owner
          type: string
          minLength: 1
          maxLength: 30          
        postalCode:
          description: The postal code of the IBAN account's owner
          type: string
          minLength: 1
          maxLength: 10          
          pattern: "^[-a-zA-Z0-9 ]+$"
        country:
          description: The country code (in 3 letter format) of the IBAN account's owner
          type: string
          minLength: 3
          maxLength: 3
          pattern: "^[A-Z]+$"          
        fileType:
          description: |-
            Type of the file contening the proof document
            The type of file is defined in content-type header of file part in multipart request.
            - image/jpeg: JPEG
            - image/png: PNG
            - application/pdf: PDF
            - application/msword: DOC
            - application/vnd.ms-excel: XLS
            - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: XLSX
          enum:
          - JPEG
          - PNG
          - PDF
          - DOC
          - XLS
          - XLSX
          type: string
        fileContent:
          description: |-
            The content of the file contening the proof in base64 encoding format.
            The file is provided in second part of multipart request, in content-disposition named 'file'
          type: string
          minLength: 1
          maxLength: 6000000
          pattern: "^[a-zA-Z0-9\/=+]+$"          
        iban:
          description: The new IBAN
          type: string
          minLength: 1
          maxLength: 30
          pattern: "^[a-zA-Z0-9]+$"                    
        currency:
          $ref: "#/components/schemas/currencyCode"
          description: ""
        paymentMethodAlias:
          description: |-
            Current payment method alias to update.
            If not provided a new payment method is added.
          type: string
          minLength: 1
          maxLength: 30
          pattern: "^[a-zA-Z0-9]+$"
        paymentMethodKey:
          description: |-
            Type of payment method
            - SCT
            - SCT INST
          enum:
          - SCT
          - SCT INST
          type: string
    paymentAccountSetIBANResponse:
      description: Start change IBAN process response
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        requestId:
          $ref: "#/components/schemas/requestId"
          description: ""
        paymentMathodAlias:
          $ref: "#/components/schemas/paymentMethodAlias"
          description: ""
    paymentDetailsRequest:
      description: Payment details request
      required:
      - orderId
      type: object
      properties:
        metaData:
          $ref: "#/components/schemas/metaData"
          description: ""
        orderId:
          $ref: "#/components/schemas/orderId"
          description: ""
        paymentData:
          $ref: "#/components/schemas/paymentData"
          description: ""
    paymentDetailsResponse:
      description: Payment details response
      required:
      - resultCode
      type: object
      properties:
        orderId:
          $ref: "#/components/schemas/orderId"
          description: Present if success (resultCode=0)
        orderStatus:
          $ref: "#/components/schemas/orderStatus"
          description: ""
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        transactionId:
          $ref: "#/components/schemas/transactionId"
          description: ""
        transactionStatus:
          $ref: "#/components/schemas/transactionStatus"
          description: ""
        reference:
          $ref: "#/components/schemas/mndtRef"
          description: ""
    paymentIframeRequest:
      description: Payment with iFrame request
      required:
      - payer
      - amount
      - orderCountryCode
      - orderReference
      type: object
      properties:
        orderReference:
          $ref: "#/components/schemas/orderReference"
          description: The order reference of the requester
        orderCountryCode:
          $ref: "#/components/schemas/countryCode"
          description: country iso code of the order
        amount:
          $ref: "#/components/schemas/amount"
          description: amount of the order
        breakdownList:
          description: breakdown list
          type: array
          items:
            $ref: "#/components/schemas/breakdown"
        payer:
          $ref: "#/components/schemas/payerSimple"
          description: customer details for iframe
        capture:
          $ref: "#/components/schemas/capture"
          description: ""
        metaData:
          $ref: "#/components/schemas/metaData"
          description: ""
        recurrent:
          $ref: "#/components/schemas/recurrent"
          description: ""
        endToEndId:
          $ref: "#/components/schemas/endToEndId"
          description: ""
        paymentMethodId:
          description: |-
            Identifier of the payment method.
            If given, the end-user will be redirected to the corresponding payment method iFrame.
            If not given, the end-user will be redirected to the payment method selection iFrame.
          type: string
          minLength: 1
          maxLength: 18
          pattern: "^[0-9]+$"
        urlRedirect:
          $ref: "#/components/schemas/urlRedirectIn"
          description: ""
          minLength: 1
          maxLength: 255
          pattern: "^https?://(www.)?[-a-zA-Z0-9@:%._+~#=]{1,256}.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$"
        cart:
          $ref: "#/components/schemas/cart"
          description: ""
        paymentAccount:
          type: string
        cbChallenge:
          $ref: "#/components/schemas/cbChallenge"
          description: ""
        details:
          $ref: "#/components/schemas/details"
          description: ""
        page:
          description: |-
            Type of page to display.
            - iframe: integrated in marketplace site (default)
            - full: full page 
          minLength: 1
          type: string
          enum:
          - full
          - iframe
        paymentOptions:
            $ref: "#/components/schemas/paymentOptions"
            description: ""
        reason:
          $ref: "#/components/schemas/reason"
          description: ""        
    paymentIframeResponse:
      description: Payment with iFrame response
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        orderId:
          $ref: "#/components/schemas/orderId"
          description: Reference of the order, to be use in every next request
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        authenticationCode:
          description: Authentification Code to use to open user iframe
          type: string
        Site:
          description: Site name or number
          type: string
        url:
          description: Url to connect iframe to.
          type: string
    paymentMethod:
      description: Payment method information
      required:
      - id
      type: object
      properties:
        aliasList:
          description: if alias exist for the customer and the payment Method
          type: array
          items:
            $ref: "#/components/schemas/alias"
        id:
          $ref: "#/components/schemas/paymentMethodId"
          description: ""
        label:
          description: label of the payment Method
          type: string
        type:
          $ref: "#/components/schemas/paymentMethodTypeId"
          description: ""
    paymentMethodSimple:
      description: Payment method information
      required:
      - id
      type: object
      properties:
        id:
          description: |-
            id (string) : ID of the type of payment method. 
            This id must be provided to identify the payment method.
            The list of payment method IDs is provided when your AgoraPay account is created.
          type: string
          minLength: 1
          maxLength: 18
          pattern: "^[0-9]+$"
    paymentMethodsRequest:
      description: Payement methods request
      required:
      - payer
      - amount
      - orderCountryCode
      - orderReference
      type: object
      properties:
        orderReference:
          $ref: "#/components/schemas/orderReference"
          description: ""
        orderCountryCode:
          $ref: "#/components/schemas/countryCode"
          description: ""
        amount:
          $ref: "#/components/schemas/amount"
          description: amount of the order
        payer:
          $ref: "#/components/schemas/payer"
          description: ""
        metaData:
          description: ""
          type: object
          additionalProperties: true
          minLength: 1
          maxLength: 2048
    paymentMethodsResponse:
      description: Payment methods response
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        paymentMethodList:
          description: list of available payment methods
          type: array
          items:
            $ref: "#/components/schemas/paymentMethod"
        orderId:
          $ref: "#/components/schemas/orderId"
          description: reference of the order, to be use in every next request
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
    paymentRequest:
      description: |-
        Payment request.
        if orderId is not provided, the following fields are mandatory :
        - orderReference
        - orderCountryCode
        - payer

        if orderId is present, it must be obtain from previous call to paymentMethods
      required:
      - transactionAmount
      - urlRedirect
      type: object
      additionalProperties: true
      properties:
        transPaymentMethod:
          $ref: "#/components/schemas/paymentMethodSimple"
          description: the payment Method choosen by the shopper
        orderId:
          $ref: "#/components/schemas/orderId"
          description: ""
        orderReference:
          $ref: "#/components/schemas/orderReference"
          description: Mandatory if orderId is not present
        orderCountryCode:
          $ref: "#/components/schemas/countryCode"
          description: Mandatory if orderId is not present
        breakdownList:
          description: List of breakdown for this payment
          type: array
          items:
            $ref: "#/components/schemas/breakdown"
        alias:
          $ref: "#/components/schemas/aliasSimple"
          description: If the shopper use an alias
        metaData:
          $ref: "#/components/schemas/metaData"
          description: ""
        payer:
          $ref: "#/components/schemas/payer"
          description: Mandatory if orderId is not present
        details:
          $ref: "#/components/schemas/details"
          description: ""
        capture:
          $ref: "#/components/schemas/capture"
          description: ""
        transactionAmount:
          $ref: "#/components/schemas/amount"
          description: Amount for this transaction
        urlRedirect:
          $ref: "#/components/schemas/urlRedirectIn"
          description: ""
        registerAlias:
          $ref: "#/components/schemas/registerAlias"
          description: ""
        reason:
          $ref: "#/components/schemas/reason"
          description: ""
        endToEndId:
          $ref: "#/components/schemas/endToEndId"
          description: ""
        cart:
          $ref: "#/components/schemas/cart"
          description: ""
        operationDate:
          $ref: "#/components/schemas/operationDate"
          description: ""
        cbChallenge:
          $ref: "#/components/schemas/cbChallenge"
          description: ""
        paymentOptions:
          $ref: "#/components/schemas/paymentOptions"
          description: ""
    paymentResponse:
      description: Payment response
      required:
      - resultCode
      type: object
      properties:
        orderId:
          $ref: "#/components/schemas/orderId"
          description: ""
        orderStatus:
          $ref: "#/components/schemas/orderStatus"
          description: ""
        transactionId:
          $ref: "#/components/schemas/transactionId"
          description: ""
        transactionStatus:
          $ref: "#/components/schemas/transactionStatus"
          description: ""
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        virtualIban:
          $ref: "#/components/schemas/virtualIban"
          description: ""
        redirectUrl:
          $ref: "#/components/schemas/urlRedirectOut"
          description: ""
        reference:
          $ref: "#/components/schemas/mndtRef"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        redirectInd:
          description: 1 if user must be redirect to the redirectUrl site
          type: string
    payoutRequest:
      description: Payout request
      required:
      - payoutAmount
      - paymentMethodAlias
      - accountNumber
      type: object
      properties:
        endToEndId:
          $ref: "#/components/schemas/endToEndId"
          description: end to end identifier
        payoutAmount:
          $ref: "#/components/schemas/amount"
          description: amount and currency of the payout
        paymentMethodAlias:
          $ref: "#/components/schemas/paymentMethodAlias"
          description: ""
        accountNumber:
          $ref: "#/components/schemas/accountNumber"
          description: Account Number invloved in payout
        commission:
          $ref: "#/components/schemas/commission"
          description: ""
        metaData:
          $ref: "#/components/schemas/metaData"
          description: User metaData in Json or string format
        reason:
          $ref: "#/components/schemas/reason"
          description: ""
    payoutResponse:
      description: Payout response
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        transactionId:
          $ref: "#/components/schemas/transactionId"
          description: ""
        transactionStatus:
          $ref: "#/components/schemas/transactionStatus"
          description: ""
    recurrent:
      description: |-
        recurrent indicator
        "1" for recurrent payment
        "0" or absent if not a recurrent payment
      type: string
      enum: 
      - "Y"
      - "N"
      - "1"
      - "0"
    refundRequest:
      description: Refund request
      required:
      - transactionAmount
      - orderId
      - orderReference
      - payer
      type: object
      properties:
        orderId:
          $ref: "#/components/schemas/orderId"
          description: Id of the order
        transactionAmount:
          $ref: "#/components/schemas/amount"
          description: Amount to refund
        transactionId:
          $ref: "#/components/schemas/transactionId"
          description: ""
        metaData:
          $ref: "#/components/schemas/metaData"
          description: ""
        reason:
          $ref: "#/components/schemas/reason"
          description: The refund reason
        breakdownList:
          description: ""
          type: array
          items:
            $ref: "#/components/schemas/breakdown"
        orderReference:
          $ref: "#/components/schemas/orderReference"
          description: |-
            Marketplace reference for this order, which must be equal to the initial reference.
            Characters authorized are: a to z, A to Z, 0 to 9 and - / . +  : and space
        payer:
          $ref: "#/components/schemas/payerSimple"
          description: ""
    refundResponse:
      description: Refund response
      type: object
      properties:
        orderStatus:
          $ref: "#/components/schemas/orderStatus"
          description: ""
        transactionList:
          description: ""
          type: array
          items:
            $ref: "#/components/schemas/transaction"
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        orderId:
          $ref: "#/components/schemas/orderId"
          description: ""
    registerAccount:
      description: Register account information
      required:
      - country
      - currency
      - iban
      - floorLimit
      type: object
      properties:
        country:
          $ref: "#/components/schemas/countryCode"
          description: ""
        currency:
          $ref: "#/components/schemas/currencyCode"
          description: Currency code
        iban:
          $ref: "#/components/schemas/IBAN"
          description: ""
        floorLimit:
          description: Floor limit in currency unit
          type: string
          minLength: 1
          maxLength: 16
          pattern: "^[0-9]{1,13}([.][0-9]{1,2})?$"
    registerAddress:
      description: Register address information
      required:
      - address
      - city
      - postalCode
      - country
      type: object
      properties:
        address:
          description: Number and road name
          type: string
          minLength: 1
          maxLength: 38
          pattern: "^[-A-Z0-9 ]+$"
        city:
          description: ""
          type: string
          minLength: 1
          maxLength: 30
          pattern: "^[-A-Z0-9 ]+$"
        postalCode:
          description: ""
          type: string
          minLength: 1
          maxLength: 10
          pattern: "^[-a-zA-Z0-9 ]+$"
        country:
          $ref: "#/components/schemas/countryCode"
          description: ""
    registerPersonRequest:
      description: Register a person information in request
      required:
      - gender
      - firstName
      - lastName
      - roles
      type: object
      properties:
        gender:
          $ref: "#/components/schemas/gender"
          description: ""
        firstName:
          description: ""
          type: string
          minLength: 1
          maxLength: 50
          pattern: "^[A-ZÀ-ÿa-z ]+$"
        lastName:
          description: ""
          type: string
          minLength: 1
          maxLength: 50
          pattern: "^[A-ZÀ-ÿa-z ]+$"
        email:
          description: ""
          type: string
          minLength: 1
          maxLength: 50
          pattern: "^([-_a-zA-Z0-9]+[.])*[-_+a-zA-Z0-9]+@([-_a-zA-Z0-9]+[.])+[-_a-zA-Z0-9]{2,4}$"
        phoneNumber:
          description: ""
          type: string
          minLength: 1
          maxLength: 16
          pattern: "^([+]|0|00)[1-9][0-9]{7,15}$"
        roles:
          description: "List of role"
          type: array
          items:
            description: "Physical person role"
            type: object
            properties: 
              role:
                description: |-
                  Role of a physical person
                  - BE : Beneficial owner
                  - D : Manager
                  - MD : Mandatary
                  - CP : Legal representative
                type: string
                enum:
                - BE
                - D
                - MD
                - CP
        birthDate:
          format: date
          description: Date of birth in YYYYMMAA format
          type: string
          minLength: 8
          maxLength: 8
          pattern: "^[0-9]+$"
    registerPersonResponse:
      description: Person information in response
      required:
      - firstName
      - lastName
      - id
      - requirements
      type: object
      properties:
        firstName:
          description: ""
          type: string
        lastName:
          description: ""
          type: string
        id:
          description: Registration identification number
          type: string
        requirements:
          description: List of document to provide or provided
          type: array
          items:
            $ref: "#/components/schemas/requirementResponse"
    registerPersonResponseDetail:
      description: Register a person information
      required:
      - firstName
      - lastName
      - id
      - requirements
      type: object
      properties:
        firstName:
          description: ""
          type: string
        lastName:
          description: ""
          type: string
        id:
          description: Registration identification number
          type: string
        requirements:
          description: List of document to provide or provided
          type: array
          items:
            $ref: "#/components/schemas/requirementResponseDetail"
    registerPersonUpdateRequest:
      description: Person information for register update
      required:
      - gender
      - firstName
      - lastName
      - roles
      type: object
      properties:
        id:
          description: |-
            Previous ID provided in register response of physical person to update.
            If absent, a new person is added.
          type: string
          minLength: 1
          maxLength: 18
          pattern: "^[0-9]+$"
        gender:
          $ref: "#/components/schemas/gender"
          description: ""
          minLength: 1
          maxLength: 1
          pattern: "[MF]"
        firstName:
          description: ""
          type: string
          minLength: 1
          maxLength: 50
          pattern: "^[A-ZÀ-ÿa-z ]+$"
        lastName:
          description: ""
          type: string
          minLength: 1
          maxLength: 50
          pattern: "^[A-ZÀ-ÿa-z ]+$"
        email:
          description: ""
          type: string
          minLength: 1
          maxLength: 50
          pattern: "^([-_a-zA-Z0-9]+[.])*[-_+a-zA-Z0-9]+@([-_a-zA-Z0-9]+[.])+[-_a-zA-Z0-9]{2,4}$"
        phoneNumber:
          description: ""
          type: string
          minLength: 1
          maxLength: 16
          pattern: "^([+]|0|00)[1-9][0-9]{7,15}$"
        roles:
          description: "List of role"
          type: array
          items:
            description: "Physical person role"
            type: object
            properties: 
              role:
                description: |-
                  Role of a physical person
                  - BE : Beneficial owner
                  - D : Manager
                  - MD : Mandatary
                  - CP : Legal representative
                type: string
                enum:
                - BE
                - D
                - MD
                - CP
        birthDate:
          format: date
          description: Date of birth in YYYYMMAA format
          type: string
          minLength: 8
          maxLength: 8
          pattern: "^[0-9]+$"
    requirementResponse:
      description: Document requirement for registration in response
      required:
      - id
      - fileType
      type: object
      properties:
        id:
          description: Requirement identification number
          type: string
        label:
          description: Requirement description
          type: string
        code:
          description: Requirement code identification
          type: string
        fileExt:
          description: Type of form file provided (JPEG, JPG, PNG, PDF, DOC)
          type: string
        fileContent:
          description: Content of the form document base64 encoded
          type: string
        fileType:
          description: Type of document (BANK_ID, COMPANY_REG, ...)
          type: string
        mandatory:
          description: Y or N. May be absent if N
          type: string
    requirementResponseDetail:
      description: Requirement for registration
      required:
      - id
      - label
      - mandatory
      type: object
      properties:
        id:
          description: Requirement identification number
          type: string
        mandatory:
          description: |-
            -Y if document must be provided
            -N if document is not mandatory. May be absent in this case.
          type: string
        label:
          description: Requirement description
          type: string
        status:
          description: |-
            Document status
            - Missing
            - Partial
            - To validate
            - Validated
            - Refused
          enum:
          - Missing
          - Partial
          - To validate
          - Validated
          - Refused
          type: string
        documents:
          description: List of documents
          type: array
          items:
            $ref: "#/components/schemas/requirementResponseDetailDocument"
    requirementResponseDetailDocument:
      description: Document requirement for registration in response
      required:
      - status
      type: object
      properties:
        fileExt:
          description: Type of file provided in fileContent (PDF)
          type: string
        fileContent:
          description: Content of the document base64 encoded
          type: string
        status:
          description: |-
            Document status
            - Missing
            - Partial
            - To validate
            - Validated
            - Refused
          type: string
          enum:
          - Missing
          - Partial
          - To validate
          - Validated
          - Refused
        receiptDate:
          description: Date of document reception in ISO8601 format
          type: string
        validated:
          description: Y or N
          type: string
        fileType:
          description: ""
          type: string
        validateDate:
          description: Date of validation of the document in ISO8601 format
          type: string
    requirementUploadRequest:
      description: |-
        Upload document information for registration.
        Upload must be done in multipart/form-data mime type.
        One part must be a valid JSOON with required fields in content-disposition named 'json'.
        Second part must be the file base64 encoded in content-disposition named 'file'.
        fileExt is defined in content-type of file part.
      required:
      - id
      - fileType
      type: object
      properties:
        id:
          description: Requirement identification number
          type: string
          minLength: 1
          maxLength: 18
          pattern: "^[.0-9]+$"
        fileExt:
          description: |-
            Type of file provided (JPEG, PNG, PDF, DOC, XLS, XLSX)
            This type is defined in content-type header of file part in multipart request.
            - image/jpeg: JPEG
            - image/png: PNG
            - application/pdf: PDF
            - application/msword: DOC
            - application/vnd.ms-excel: XLS
            - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: XLSX
          type: string
          enum:
          - JPEG
          - PNG
          - PDF
          - DOC
          - XLS
          - XLSX
        fileContent:
          description: |- 
            Content of the document base64 encoded.
            File is provided in file part of multipart request.
          type: string
          minLength: 1
          maxLength: 6000000
          pattern: "^[a-zA-Z0-9\/=+]+$"
        fileType:
          description: |-
            File type allowed based on requirement code. The following value are allowed :
            INDIVIDUAL_INDIFICATION
              - PASSPORT: Passeport
              - IDCARD_FRONT_BACK: Identity document
              - IDCARD_FRONT: Identity document
              - IDCARD_BACK: Identity document
              - PERMANENT_RES: Permanent residence permit
            BUSINESS_IDENTIFICATION  
              - COMPANY_REG: Proof of registration
            NONPROFIT_IDENTICIATION
              - NONPROFIT_REG: Proof of existence of the association
              - NONPROFIT_OJ: JOAFE publication
            BUSINESS_ARTICLES  
              - COMPANY_ART: Final status
            NONPROFIT_DIRECTORS  
              - REPORT_GEN_ASS: Minutes of last general assembly
            BUSINESS_UBO
              - UBO_REG: Register of beneficial owners filed with the registry
            LEGAL_EXISTENCE
              - SIRENE_REG: INSEE file less than 3 months old
              - RECEIPT_APP: Receipt of prefecture
              - SIRENE_NOT: Notice of situation
            REGISTRATION_PROOF  
              - INDIVIDUAL_REG: Registration with the Trade and Companies Register or Trades and Crafts Register
            ADDRESS_PROOF
              - PROPERTY_TAX: Property tax less than a year old
              - HOUSING_TAX: Housing tax less than a year old
              - INVOICE: Energy or telephony supplier bill (less than 3 months old)
            COOPERATIVE_APPROUVAL
              - COOP_APP: Approval of the High Council of the agricultural cooperative (if agricultural cooperative)
            SUBSCRIPTION_PROOF
              - PROOF_REG: Proof of registration for SCs and SCPs
            BUSINESS_IDENTIFICATION_WORLD
              - COMPANY_REG_WORLD: Extract from the commercial register (original + translation)
              - COMPANY_CER_WORLD: Certificate of legal validity of the company (original + translation)
            BUSINESS_ARTICLES_WORLD
              - COMPANY_ART_WORLD: Definitive statutes or equivalent (original + translation)
            BUSINESS_UBO_WORLD
              - UBO_REG_WORLD: Beneficial ownership declaration form (original + translation)
            BANK_ID              
              - BANK_ID: Bank Account Proof
            OTHER_DOC
              - OTHER_DOC: Additional supporting documents
            ACCOUNT_AGR
              - ACCOUNT_AGR: Account Agreement
            QUESTIONNAIRE
              - QUESTIONNAIRE: Country Questionnaire (FR)
            SYNDICATE_IDENTIFICATION
              - SYND_ID: Condominium summary sheet
            REPORT_GENERAL_SYNDICATE
              - REPORT_GEN_SYND PV: Minutes of the last Ordinary General Meeting of the condominium
          enum:
            - PASSPORT
            - IDCARD_FRONT_BACK
            - COMPANY_REG
            - BANK_ID
            - COMPANY_REG_WORLD
            - OTHER_DOC
            - ACCOUNT_AGR
            - QUESTIONNAIRE
            - IDCARD_FRONT
            - IDCARD_BACK
            - NONPROFIT_REG
            - NONPROFIT_OJ
            - COMPANY_ART
            - REPORT_GEN_ASS
            - PERMANENT_RES
            - UBO_REG
            - SIRENE_REG
            - RECEIPT_APP
            - SIRENE_NOT
            - INDIVIDUAL_REG
            - PROPERTY_TAX
            - HOUSING_TAX
            - INVOICE
            - COOP_APP
            - PROOF_REG
            - COMPANY_CER_WORLD
            - COMPANY_ART_WORLD
            - UBO_REG_WORLD
            - SYND_ID
            - REPORT_GEN_SYND
          type: string
    sellerAccountNumber:
      description: Account number of the merchant or marketplace.
      type: string
      minLength: 1
      maxLength: 30
      pattern: "^[a-zA-Z0-9]+$"
    thirdParty:
      description: Third party name or reference
      type: string
      minLength: 1
      maxLength: 50
    transaction:
      description: Details of a transaction
      required:
      - amount
      - id
      - status
      type: object
      properties:
        paymentMethodId:
          description: id of the payment Method used for the transaction
          type: string
        id:
          $ref: "#/components/schemas/transactionId"
          description: ""
        status:
          $ref: "#/components/schemas/transactionStatus"
          description: ""
        amount:
          $ref: "#/components/schemas/amount"
          description: amount of the transaction
        type:
          $ref: "#/components/schemas/operationType"
          description: ""
    transactionStatus:
      description: |-
        Status of a transaction. The following value may be provided:
        - created: The transaction is just created. No payment is already made.
        - in_progress: Payment is in progress
        - accepted: Payment is accepted
        - completed: Payment confirmation is received
        - canceled: Payment is canceled
        - refused: Payment is refused
        - abandonned: Payment is not performed
        - refund: Transction is refunded
      enum:
      - created
      - in_progress
      - accepted
      - completed
      - canceled
      - refused
      - abandonned
      - refund
      type: string
    transferRequest:
      description: Transfer Resquest
      required:
      - accountCptNumber
      - transferAmount
      - accountNumber
      - reason
      type: object
      properties:
        accountCptNumber:
          $ref: "#/components/schemas/accountNumber"
          description: Account number to credit
        transferAmount:
          $ref: "#/components/schemas/amount"
          description: the Amount to transfer
        accountNumber:
          $ref: "#/components/schemas/accountNumber"
          description: Account Number to debit
        orderRef:
          $ref: "#/components/schemas/orderReference"
          description: operation reference of the transfer
        metaData:
          $ref: "#/components/schemas/metaData"
          description: ""
        reason:
          $ref: "#/components/schemas/reason"
          description: ""
    cart:
      description: Cart detail for 3DSV2. Mandatory in API v2.
      required:
      - totalQuantity
      type: object
      properties:
        totalQuantity:
          description: number of article in cart
          type: string
          minLength: 1
          maxLength: 18
          pattern: "^[0-9]+$"
    mndtRef:
      description: Mandate reference
      type: string
      minLength: 1
      maxLength: 30
      pattern: "^[a-zA-Z0-9]+$"
    captureResponse:
      description: capture response
      required:
      - transactionList
      - resultCode
      - orderStatus
      - orderId
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: resultCode of the processing
        orderStatus:
          $ref: "#/components/schemas/orderStatus"
          description: ""
        transactionList:
          description: List of transaction for the order
          type: array
          items:
            $ref: "#/components/schemas/transaction"
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        orderId:
          $ref: "#/components/schemas/orderId"
          description: ""
    cancelResponse:
      description: Cancel response
      required:
      - resultCode
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: resultCode of the processing
        orderStatus:
          $ref: "#/components/schemas/orderStatus"
          description: ""
        transactionList:
          description: List of transaction for the order
          type: array
          items:
            $ref: "#/components/schemas/transaction"
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
    orderDetailsResponse:
      description: Details of an order
      required:
      - resultCode
      type: object
      properties:
        orderAmount:
          $ref: "#/components/schemas/amount"
          description: amount of the order
        orderRemainingAmount:
          $ref: "#/components/schemas/amount"
          description: remaining amount of the order if not completed
        orderId:
          $ref: "#/components/schemas/orderId"
          description: Order identifier
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        orderStatus:
          $ref: "#/components/schemas/orderStatus"
          description: ""
        transactionList:
          description: List of transaction for the order
          type: array
          items:
            $ref: "#/components/schemas/transaction"
    operationsListRequest:
      description: Criteria to list operation
      type: object
      properties:
        pagination:
          description: Number of lines in reporting. Limited to 50.
          type: string
          minLength: 1
          maxLength: 2
          pattern: "^[0-5]?[0-9]$"
        startDate:
          format: date
          description: Begin date of operation reporting in YYYYMMDD format
          type: string
          minLength: 1
          maxLength: 8
          pattern: "^[0-9]+$"
        endDate:
          format: date
          description: ended Date of operation Reporting in YYYYMMDD format
          type: string
          minLength: 1
          maxLength: 8
          pattern: "^[0-9]+$"
        maxAmount:
          description: ""
          type: string
          minLength: 1
          maxLength: 16
          pattern: "^[0-9]{1,13}([.][0-9]{1,2})?$"
        minAmount:
          description: ""
          type: string
          minLength: 1
          maxLength: 16
          pattern: "^[0-9]{1,13}([.][0-9]{1,2})?$"
        offset:
          description: Start response line. Set to 0 when not indicated
          type: string
          minLength: 1
          maxLength: 18
          pattern: "^[0-9]+$"
        orderReference:
          description: |-
            Order reference.
            Characters authorized are: a to z, A to Z, 0 to 9 and - / . +  : _ and space
          type: string
          minLength: 1
          maxLength: 50
          pattern: "^[-a-zA-Z0-9.+:_]+(\/?[-a-zA-Z0-9.+:_ ])*([-a-zA-Z0-9.+:_])+$"
        currency:
          $ref: "#/components/schemas/currencyCode"
          description: ""
        transactionId:
          $ref: "#/components/schemas/transactionId"
          description: ""
        paymentMethodKey:
          description: |-
            Key identifier of the payment method type id
            - SDD: Sepa Direct Debit
            - SCT: Sepa Credit Transfer
            - CARD: Payment with card
            - SDD B2B: Sepa Direct Debit for B2B
            - PISP: PISP
          enum:
          - "SDD"
          - "SCT"
          - "CARD"
          - "SDD B2B"
          - "PISP"
          type: string
        sellerAccountNumber:
          $ref: "#/components/schemas/sellerAccountNumber"
          description: ""
        parentAccountNumber:
          $ref: "#/components/schemas/accountNumber"
          description: ""
    paymentAccountListRequest:
      description: Account list request. Criteria to find account
      type: object
      properties:
        accountNumber:
          $ref: "#/components/schemas/accountNumber"
          description: ""
        currency:
          $ref: "#/components/schemas/currencyCode"
          description: ""
        accountStatus:
          $ref: "#/components/schemas/accountStatusCode"
          description: ""
        sellerReference:
          description: Account reference
          type: string
          minLength: 1
          maxLength: 30
          pattern: "^[a-zA-Z0-9 ]+$"
        pagination:
          description: Number of line in reporting. Limited to 99. Default value 50.
          type: string
          minLength: 1
          maxLength: 2
          pattern: "^[0-9]+$"
        offset:
          description: Start response line. Set to 0 when not indicated
          type: string
          minLength: 1
          maxLength: 18
          pattern: "^[0-9]+$"
    cbChallenge:
      description: |-
        Challenge negotiation for card payment.
        01: No preference
        02: No challenge required
        03: Desired challenge 
        04: Required challenge
      type: string
      minLength: 2
      maxLength: 2
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
    paymentAccountSetFloorLimitRequest:
      description: Set account floor limit request
      required:
      - accountNumber
      - amount
      type: object
      properties:
        accountNumber:
          $ref: "#/components/schemas/accountNumber"
          description: ""
        amount:
          description: Floor limit amount
          $ref: "#/components/schemas/amount"
    paymentAccountSetFloorLimitResponse:
      description: Set account floor limit response
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
    paymentAccountReportResponse:
      description: Get report response
      type: object
      properties:
        resultCode:
          $ref: "#/components/schemas/resultCode"
          description: ""
        resultCodeMessage:
          $ref: "#/components/schemas/resultCodeMessage"
          description: ""
        type: 
          description: Type of the report
          type: string
        accountNumber: 
          description: Account number
          type: string
        year: 
          description: Year of the report
          type: string
        month: 
          description: Month of the report
          type: string
        fileContent: 
          description: Content of the report in base64
          type: string
    paymentOptions:
        description: Payment options
        type: string
        enum:
        - "cardOnFile"
        - "withoutCardOnFile"
    selfcareInitRequest:
      description: Register Selfcare enrollment informations in request
      required:
        - firstName
        - lastName
        - email
        - phone
        - socialReason
        - accountFloorLimit
        - language
      type: object
      properties:
        firstName:
          description: Seller first name
          type: string
          minLength: 1
          maxLength: 50
        lastName:
          description: Seller last name
          type: string
          minLength: 1
          maxLength: 50
        email:
          description: Email
          type: string
          minLength: 1
          maxLength: 50
          pattern: "^([-_a-zA-Z0-9]+[.])*[-_+a-zA-Z0-9]+@([-_a-zA-Z0-9]+[.])+[-_a-zA-Z0-9]{2,4}$"
        phone:
          description: Seller phone number
          type: string
          minLength: 1
          maxLength: 16
          pattern: '^([+]|0|00)[1-9][0-9]{7,15}$'
        socialReason:
          description: Seller social reason
          type: string
          minLength: 1
          maxLength: 50
        accountFloorLimit:
          description: >-
            Seller floor limit amount. The value of the amount in decimal with
            max 2 digits after separator.

            Only digits and dot are authorized.
          type: string
          minLength: 1
          maxLength: 16
          pattern: '^[0-9]{1,13}([.][0-9]{1,2})?$'
        language:
          description: |-
            The first two characters are used to identify the language code.
            Must be in upper case.
            Only french is supported at this time.
          type: string
          minLength: 2
          maxLength: 2
          pattern: '^[A-Z]+$'
    selfcareInitResponse:
      description: Selfcare enrollment initiation response
      required:
        - resultCode
      type: object
      properties:
        resultCode:
          $ref: '#/components/schemas/resultCode'
          description: ''
        resultCodeMessage:
          $ref: '#/components/schemas/resultCodeMessage'
          description: ''
        requestId:
          $ref: '#/components/schemas/requestId'
          description: ''
        statusLabel:
          description: Request status label
          type: string