openapi: 3.0.3
info:
  title: mard2p API
  version: 0.0.2-dev
  description: This is a payment pending using Mobile Money API and Credit Card. This
    API allows merchant to get payment information of the consumer which have its
    own account and money manage by the solution. The merchant can receive its money
    if only the consumer agreed [1st case].
servers:
- url: https://api.apibuilder.io
paths:
  /accounts/create:
    post:
      description: Used to create an account.
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - accountid
              - ownerid
              - total_amount
              - sold
              - debit
              - currency
              properties:
                accountid:
                  type: integer
                  format: int64
                ownerid:
                  type: string
                total_amount:
                  type: number
                  format: double
                sold:
                  type: number
                  format: double
                debit:
                  type: number
                  format: double
                currency:
                  type: string
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaypMard2pApiV0ModelsAccount'
        '409':
          description: Conflict
  /accounts/delete/{accountid}:
    delete:
      description: Delete some account.
      parameters:
      - name: accountid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          description: No content
        '401':
          description: Unauthorized
        '404':
          description: Not found
  /accounts/list:
    get:
      description: Find all the accounts.
      parameters:
      - name: accountid
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: ownerid
        in: query
        required: true
        schema:
          type: string
      - name: total_amount
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: currency
        in: query
        required: true
        schema:
          type: string
      - name: sold
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: debit
        in: query
        required: true
        schema:
          type: number
          format: double
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PaypMard2pApiV0ModelsAccount'
        '404':
          description: Not found
  /accounts/update/{accountid}:
    put:
      description: Used to update an account.
      parameters:
      - name: accountid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - ownerid
              - total_amount
              - currency
              - sold
              - debit
              properties:
                ownerid:
                  type: string
                total_amount:
                  type: number
                  format: double
                currency:
                  type: string
                sold:
                  type: number
                  format: double
                debit:
                  type: number
                  format: double
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaypMard2pApiV0ModelsAccount'
        '409':
          description: Conflict
  /accounts/{accountid}:
    get:
      description: Find account by its id
      parameters:
      - name: accountid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: ownerid
        in: query
        required: true
        schema:
          type: string
      - name: total_amount
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: sold
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: debit
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: currency
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaypMard2pApiV0ModelsAccount'
        '404':
          description: Not found
  /deposits/delete/{depid}:
    delete:
      description: Delete some deposit.
      parameters:
      - name: depid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          description: No content
        '401':
          description: Unauthorized
        '404':
          description: Not found
  /deposits/list:
    get:
      description: List all the deposits
      parameters:
      - name: payid
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: payment_method
        in: query
        required: true
        schema:
          type: string
      - name: actorid
        in: query
        required: true
        schema:
          type: string
      - name: ref_accountid
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: operatorid
        in: query
        required: true
        schema:
          type: string
      - name: amount
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: phone
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: pin
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: currency
        in: query
        required: true
        schema:
          type: string
      - name: payment_context
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PaypMard2pApiV0ModelsPayment'
        '404':
          description: Not found
  /deposits/{depid}:
    get:
      description: Find deposit by its id.
      parameters:
      - name: depid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: payment_method
        in: query
        required: true
        schema:
          type: string
      - name: actorid
        in: query
        required: true
        schema:
          type: string
      - name: ref_accountid
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: operatorid
        in: query
        required: true
        schema:
          type: string
      - name: amount
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: phone
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: pin
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: currency
        in: query
        required: true
        schema:
          type: string
      - name: payment_context
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaypMard2pApiV0ModelsPayment'
        '404':
          description: Not found
  /payments/create:
    post:
      description: Used to create a payment.
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - payid
              - payment_method
              - actorid
              - ref_accountid
              - operatorid
              - amount
              - currency
              - phone
              - pin
              - payment_context
              properties:
                payid:
                  type: integer
                  format: int64
                payment_method:
                  type: string
                actorid:
                  type: string
                ref_accountid:
                  type: integer
                  format: int64
                operatorid:
                  type: string
                amount:
                  type: number
                  format: double
                currency:
                  type: string
                phone:
                  type: integer
                  format: int64
                pin:
                  type: integer
                  format: int32
                payment_context:
                  type: string
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaypMard2pApiV0ModelsPayment'
        '409':
          description: Conflict
  /payments/delete/{payid}:
    delete:
      description: Delete some payment.
      parameters:
      - name: payid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          description: No content
        '401':
          description: Unauthorized
        '404':
          description: Not found
  /payments/list:
    get:
      description: List all the payments
      parameters:
      - name: payid
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: payment_method
        in: query
        required: true
        schema:
          type: string
      - name: actorid
        in: query
        required: true
        schema:
          type: string
      - name: ref_accountid
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: operatorid
        in: query
        required: true
        schema:
          type: string
      - name: amount
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: phone
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: pin
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: currency
        in: query
        required: true
        schema:
          type: string
      - name: payment_context
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PaypMard2pApiV0ModelsPayment'
        '404':
          description: Not found
  /payments/update/{payid}:
    put:
      description: Used to update a payment.
      parameters:
      - name: payid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - payment_method
              - actorid
              - ref_accountid
              - operatorid
              - amount
              - phone
              - pin
              - currency
              - payment_context
              properties:
                payment_method:
                  type: string
                actorid:
                  type: string
                ref_accountid:
                  type: integer
                  format: int64
                operatorid:
                  type: string
                amount:
                  type: number
                  format: double
                phone:
                  type: integer
                  format: int64
                pin:
                  type: integer
                  format: int32
                currency:
                  type: string
                payment_context:
                  type: string
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaypMard2pApiV0ModelsPayment'
        '409':
          description: Conflict
  /payments/{payid}:
    get:
      description: Find payment by id accountid
      parameters:
      - name: ref_accountid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: payid
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: payment_method
        in: query
        required: true
        schema:
          type: string
      - name: actorid
        in: query
        required: true
        schema:
          type: string
      - name: operatorid
        in: query
        required: true
        schema:
          type: string
      - name: amount
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: phone
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: pin
        in: query
        required: true
        schema:
          type: integer
          format: int32
      - name: currency
        in: query
        required: true
        schema:
          type: string
      - name: payment_context
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaypMard2pApiV0ModelsPayment'
        '404':
          description: Not found
  /transfers/create:
    post:
      description: Used to create a transfer resource.
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - transferid
              - senderid
              - amount
              - currency
              - ref_accountid_receiver
              - ref_accountid_sender
              properties:
                transferid:
                  type: integer
                  format: int64
                senderid:
                  type: string
                amount:
                  type: number
                  format: double
                currency:
                  type: string
                ref_accountid_receiver:
                  type: integer
                  format: int64
                ref_accountid_sender:
                  type: integer
                  format: int64
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaypMard2pApiV0ModelsTransfer'
        '409':
          description: Conflict
  /transfers/delete/{transferid}:
    delete:
      description: Delete some transfer.
      parameters:
      - name: transferid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          description: No content
        '401':
          description: Unauthorized
        '404':
          description: Not found
  /transfers/list:
    get:
      description: Find all the transfers.
      parameters:
      - name: transferid
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: senderid
        in: query
        required: true
        schema:
          type: string
      - name: amount
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: currency
        in: query
        required: true
        schema:
          type: string
      - name: ref_accountid_receiver
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: ref_accountid_sender
        in: query
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PaypMard2pApiV0ModelsAccount'
        '404':
          description: Not found
  /transfers/update/{transferid}:
    put:
      description: Used to update a transfer resource.
      parameters:
      - name: transferid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - senderid
              - amount
              - currency
              - ref_accountid_receiver
              - ref_accountid_sender
              properties:
                senderid:
                  type: string
                amount:
                  type: number
                  format: double
                currency:
                  type: string
                ref_accountid_receiver:
                  type: integer
                  format: int64
                ref_accountid_sender:
                  type: integer
                  format: int64
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaypMard2pApiV0ModelsTransfer'
        '409':
          description: Conflict
  /transfers/{transferid}:
    get:
      description: Find transfer by its id
      parameters:
      - name: transferid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: senderid
        in: query
        required: true
        schema:
          type: string
      - name: amount
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: currency
        in: query
        required: true
        schema:
          type: string
      - name: ref_accountid_receiver
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: ref_accountid_sender
        in: query
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaypMard2pApiV0ModelsAccount'
        '404':
          description: Not found
  /validations:
    post:
      requestBody:
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaypMard2pApiV0ModelsValidation'
  /withdraws/delete/{wdwid}:
    delete:
      description: Delete some withdraw.
      parameters:
      - name: wdwid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          description: No content
        '401':
          description: Unauthorized
        '404':
          description: Not found
  /withdraws/list:
    get:
      description: List all the withdraws
      parameters:
      - name: payid
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: payment_method
        in: query
        required: true
        schema:
          type: string
      - name: actorid
        in: query
        required: true
        schema:
          type: string
      - name: ref_accountid
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: operatorid
        in: query
        required: true
        schema:
          type: string
      - name: amount
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: phone
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: pin
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: currency
        in: query
        required: true
        schema:
          type: string
      - name: payment_context
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PaypMard2pApiV0ModelsPayment'
        '404':
          description: Not found
  /withdraws/{wdwid}:
    get:
      description: Find withdraw by its id.
      parameters:
      - name: wdwid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: depid
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: payment_method
        in: query
        required: true
        schema:
          type: string
      - name: actorid
        in: query
        required: true
        schema:
          type: string
      - name: ref_accountid
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: operatorid
        in: query
        required: true
        schema:
          type: string
      - name: amount
        in: query
        required: true
        schema:
          type: number
          format: double
      - name: phone
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: pin
        in: query
        required: true
        schema:
          type: integer
          format: int64
      - name: currency
        in: query
        required: true
        schema:
          type: string
      - name: payment_context
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaypMard2pApiV0ModelsPayment'
        '404':
          description: Not found
components:
  schemas:
    PaypMard2pApiV0ModelsDeposit:
      description: Deposit describes a way a payment is handled. It depends of Payment
        Resource
      type: object
      required:
      - depid
      - paymentid
      properties:
        depid:
          description: Internal unique identifier for this account.
          type: integer
          format: int64
        paymentid:
          description: The added paymentid used to proceed the deposit transaction.
          type: integer
          format: int64
    PaypMard2pApiV0ModelsWithdraw:
      description: Withdraw describes a way a payment is handled. It depends of Payment
        Resource
      type: object
      required:
      - wdwid
      - paymentid
      properties:
        wdwid:
          description: Internal unique identifier for this account.
          type: integer
          format: int64
        paymentid:
          description: The added paymentid used to proceed the deposit transaction.
          type: integer
          format: int64
    PaypMard2pApiV0ModelsPayment:
      description: Payment is defined by the app specifically to emit users transactions.
      type: object
      required:
      - payid
      - actorid
      - amount
      - ref_accountid
      - payment_method
      - operatorid
      - phone
      - pin
      - currency
      - payment_context
      properties:
        payid:
          description: Internal unique identifier for this payment.
          type: integer
          format: int64
        actorid:
          description: The username registered in the application
          type: string
        amount:
          description: The amount to send. This field allowed the processing transactions.
          type: number
          format: double
        ref_accountid:
          description: The accountid to use to send money to the specific account.
          type: integer
          format: int64
        payment_method:
          description: The type of payment to use [Mobile Money or Credit Card].
          type: string
        operatorid:
          description: The operator specified the type of payment if Mobile Money.
          type: string
        phone:
          description: The phone identifying specific account of consumer.
          type: integer
          format: int64
        pin:
          description: The code used to validate the transaction.
          type: integer
          format: int32
        currency:
          description: The phone identifying specific account of consumer.
          type: string
        payment_context:
          description: This field specify the type of transaction [Buying, Deposit,
            Withdraw].
          type: string
    PaypMard2pApiV0ModelsValidation:
      description: Used only to validate json files - used as a resource where http
        status code defines success
      type: object
      required:
      - valid
      - errors
      properties:
        valid:
          description: If true, the json schema is valid. If false, there is at least
            one validation error.
          type: boolean
        errors:
          description: Contains any validation errors that result from parsing the
            json document. If empty, the document is valid.
          type: array
          items:
            type: string
    PaypMard2pApiV0ModelsTransfer:
      description: Transfer is defined by the app specifically to manage users transactions
        (sending and receiving).
      type: object
      required:
      - transferid
      - senderid
      - amount
      - ref_accountid_receiver
      - ref_accountid_sender
      - currency
      properties:
        transferid:
          description: Internal unique identifier for this account.
          type: integer
          format: int64
        senderid:
          description: The username registered in the application
          type: string
        amount:
          description: The amount to be send. This field allows the process transactions.
          type: number
          format: double
        ref_accountid_receiver:
          description: The accountid to use to send money and referencing the receiver.
          type: integer
          format: int64
        ref_accountid_sender:
          description: The accountid to use to send money and referencing the sender.
          type: integer
          format: int64
        currency:
          description: The currency specific to a country.
          type: string
    PaypMard2pApiV0ModelsAccountForm:
      type: object
      required:
      - accountid
      - ownerid
      - sold
      - currency
      properties:
        accountid:
          description: Internal unique identifier for this account.
          type: integer
          format: int64
        ownerid:
          description: The username registered in the application.
          type: string
        total_amount:
          description: The amount specific to the debit and sold account. This field
            allows the process transactions.
          type: number
          format: double
        sold:
          description: The amount specific to the balance account. This field allows
            the process transactions.
          type: number
          format: double
        debit:
          description: The amount specific to the money merchant have to collect and
            pay. This field allows the process transactions.
          type: number
          format: double
        currency:
          description: The currency specific to location.
          type: string
    PaypMard2pApiV0ModelsPaymentForm:
      type: object
      required:
      - payid
      - actorid
      - amount
      - ref_accountid
      - payment_method
      - operatorid
      - phone
      - pin
      - currency
      - payment_context
      properties:
        payid:
          description: Internal unique identifier for this payment.
          type: integer
          format: int64
        actorid:
          description: The username registered in the application
          type: string
        amount:
          description: The amount to send. This field allowed the processing transactions.
          type: number
          format: double
        ref_accountid:
          description: The accountid to use to send money to the specific account.
          type: integer
          format: int64
        payment_method:
          description: The type of payment to use [Mobile Money or Credit Card].
          type: string
        operatorid:
          description: The operator specified the type of payment if Mobile Money.
          type: string
        phone:
          description: The phone identifying specific account of consumer.
          type: integer
          format: int64
        pin:
          description: The code used to validate the transaction.
          type: integer
          format: int32
        currency:
          description: The phone identifying specific account of consumer.
          type: string
        payment_context:
          description: This field specify the type of transaction [Buying, Deposit,
            Withdraw].
          type: string
    PaypMard2pApiV0ModelsAccount:
      description: Account is defined by the app specifically to manage users transactions.
      type: object
      required:
      - accountid
      - ownerid
      - total_amount
      - currency
      - sold
      - debit
      properties:
        accountid:
          description: Internal unique identifier for this account.
          type: integer
          format: int64
        ownerid:
          description: The username registered in the application
          type: string
        total_amount:
          description: The amount specific to the debit and sold account. This field
            allows the process transactions.
          type: number
          format: double
        currency:
          description: The currency specific to location.
          type: string
        sold:
          description: The amount specific to the balance account. This field allows
            the process transactions.
          type: number
          format: double
        debit:
          description: The amount specific to the money merchant have to collect and
            pay. This field allows the process transactions.
          type: number
          format: double
    PaypMard2pApiV0ModelsTransferForm:
      type: object
      required:
      - transferid
      - senderid
      - amount
      - ref_accountid_receiver
      - ref_accountid_sender
      - currency
      properties:
        transferid:
          description: Internal unique identifier for this account.
          type: integer
          format: int64
        senderid:
          description: The username registered in the application.
          type: string
        amount:
          description: The amount to be send. This field allows the process transactions.
          type: number
          format: double
        ref_accountid_receiver:
          description: The accountid to use to send money and referencing the receiver.
          type: integer
          format: int64
        ref_accountid_sender:
          description: The accountid to use to send money and referencing the sender.
          type: integer
          format: int64
        currency:
          description: The currency specific to a country.
          type: string
    PaypMard2pApiV0EnumsSortOrder:
      type: string
      enum:
      - asc
      - desc
    PaypMard2pApiV0EnumsOriginalType:
      type: string
      enum:
      - api_json
    PaypMard2pApiV0EnumsAppSortBy:
      type: string
      enum:
      - created
      - edited
    PaypMard2pApiV0EnumsVisibility:
      description: Controls who is able to view this version
      type: string
      enum:
      - public
    PaypMard2pApiV0EnumsPublication:
      description: A publication represents something that a user can subscribe to.
        An example would be subscribing to an email alert whenever a new version of
        an application is created.
      type: string
      enum:
      - membership_requests.create
      - memberships.create
      - applications.create
      - versions.create
