Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Swagger integration
openapi: 3.0.3
info:
  title: Globadyme-gateway
  version: v0.99  9999
  description:
    The Globadyme Gateway API facilitates Global Payment acceptance for businesses, enabling them to seamlessly process
    transactions across various Payment methods and currencies on a worldwide scale.  
  contact:
    email: onboarding@globadyme.com
    name: Globadyme
    url: https://globadyme.com/wp-content/uploads/2024/04/Globadyme-Integration-Guide.pdf
servers:
  - url: https://sandbox.globadyme.com/api
  - url: https://dev.globadyme.com/api
tags:
  - description: Payments 
    name: globadyme-gateway-api
paths:
  /globadymeGateway/transaction/requestPayment:
    post:
      tags:
      - Payment
      summary: Request a transaction
      description: Request a transaction to obtain a payment link.
      operationId: requestPayment
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestPaymentRequestDTO'
        required: true
      responses:        description: "200":The body must always contain the transaction and password."
  description: Succesful operation           contentresponses:
            application/json"200":
              schemadescription: |
               $ref: '#/components/schemas/OkDTO'Succesful operation<br/>
        "404":    The response contains the redirect URL and description:a Notunique foundrequestId.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTOOkDTO'
        "400":      examples:
    description: Property missing from JSON        payment:
  content:             application/json:   summary: Request a payment
        schema:          value: |
     $ref: '#/components/schemas/ErrorDTO'         "500":     {
     description: Unable to parse JSON or encode transaction.           content:"message": "OK",
            application/json:          "details": {
   schema:                 $ref: '#/components/schemas/ErrorDTO'   /globadymeGateway/transaction/qrcode:
"requestId": "623277d0-464b-4e72-8632-2b9a284c699d",
   post:       description: |         Request a qrcode image for the payment"redirectUrl": "https://localhost:8028/pay?data=0f628643a49a71ce...1d023822ec5f02f2587057fe"
       tags:       - Payment       operationId:}
generateQRCodeImage       requestBody:         content:    }

     application/json:             schemapaymentLink:
              type: string   summary: Request a payment link
 required: true       responses:         "200"value: |
          description: OK         {
 content:             image/png:        "message": "OK",
     schema:                 type"details": array{
                items:        "requestId": "129294ac-ec36-4155-addd-697be68ec8aa",
         type: string                   format: byte
        "400":"redirectUrl": "https://localhost:8028/api/link?id=BH3IiBlBN2XjaqWR"
          description: Invalid input provided         }
 content:             application/json:      }
        schema:            
    $ref: '#/components/schemas/ErrorDTO'         "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /globadymeGateway/transaction/initiatePayment:     post:       descriptionexamples:
  |         Initiate a payment, using the paymentUNKNOWN:
link       tags:       - Payment   summary: Whenever the given operationId:merchant initiatePaymentis unknown
     requestBody:         content:    value: |
     application/json:             schema:  {
            $ref: '#/components/schemas/InitiatePaymentRequestDTO'         required: true
   "message": "Merchant not found with id 7699cab7-2dfa-4981-9c90-0d0c93c801ac",
  responses:         "200":           description"httpStatus": OK404,
          content:             application/json"details": "Not Found"
            schema:                 $ref: '#/components/schemas/OkDTO'}
        "400401":
          description: InvalidUnauthorized
input provided           content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        "500":      examples:
    description: Technical error           contentpasswd:
            application/json:      summary: Wrong password provided
     schema:             value: |
  $ref: '#/components/schemas/ErrorDTO'         /globadymeGateway/refund/initiateRefund:     post:    {
  tags:       - Refunds       summary: Initiate a refund  "message": "Incorrect merchant password for descriptionmerchant: Initiatex@yz.com",
a refund on an earlier created and approve transaction       operationId: initiateRefund       requestBody:"httpStatus": 401,
        content:           application/json:   "details": "Unauthorized"
        schema:            }
  $ref: '#/components/schemas/RefundRequestDTO'         required: true       responses:
        "200400":
          description: Succesful>-
operation           content: Bad Request
          plain/text: {} Property wrong or missing from JSON, for example "404":UUID string          description: Not foundtoo large.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
         "400":     examples: 
    description: Total refund amount exceeds original transaction amount     UUID:
     content:             application/jsonsummary: Wrong UUID provided
           schema:       value: |
         $ref: '#/components/schemas/ErrorDTO'         "401": {
         description: Authentication failure           content"message": "UUID string too large",
        '*/*':               schema:
"cause": "UUID string too large",
               $ref: '#/components/schemas/OkDTO'         "403httpStatus": 400,
         description: Autorisation failure           content"details": "/globadymeGateway/transaction/requestPayment"
           '*/*':         }

    schema:            JSON:
    $ref: '#/components/schemas/OkDTO'    /api/auth/sign-in:     post:       tagssummary: Invalid JSON provided
   - Authentication       operationId: signIn       requestBodyvalue: |
       content:           application/json:  {
          schema:            "message": "JSON parse $referror: '#/components/schemas/JwtRequest'
        required: trueUnexpected character ('}' (code 125)): was expecting double-quote to start field name",
       responses:         "200":      "cause": "JSON parse error: Unexpected description: OK
          content:character ('}' (code 125)): was expecting double-quote to start field name",
              '*/*':        "httpStatus": 400,
     schema:                 $ref"details": '#"/componentsglobadymeGateway/schemastransaction/JwtResponse'requestPayment"
        "401":           description: Authentication}
failure           content:       
     '*/*':   "405":
           schema$ref: '#/components/responses/methodNotSupported'
         "406":
          $ref: '#/components/schemasresponses/OkDTO'
  /api/auth/refresh-token:
    post:
      tags:
      - Authentication
      operationId: refreshToken
      requestBody:
        content:
          application/json:
            schema:
 notAcceptable'
        "415":
          $ref: '#/components/responses/unsupportedMediaType'  
        "429":
          $ref: '#/components/responses/tooManyRequests'                
        "500":
          $ref: '#/components/responses/unexpectedError'
  /globadymeGateway/transaction/qrcode:
    post:
      description: Request a qrcode image for the payment
      security:
      - Bearer: []
      tags:
      - Payment
      operationId: generateQRCodeImage
      requestBody:
        content:
          application/json:
            schema:
              type: string
            example: |
              id=BVvBVE41t7t1YnBQ
        required: true
      responses:
        "200":
          description: OK
          content:
            image/png:
              schema:
                description: Return a generated qr-code image for the payment as a binary string
                type: array
                items:
                  type: string
                  format: byte
        "400":
          description: Invalid input provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples: 
                UUID:
                  summary: Wrong UUID provided
                  value: |
                    {
                      "message": "UUID string too large",
                      "cause": "UUID string too large",
                      "httpStatus": 400,
                      "details": "/globadymeGateway/transaction/requestPayment"
                    }

                JSON:
                  summary: Invalid JSON provided
                  value: |
                    {
                      "message": "JSON parse error: Unexpected character ('}' (code 125)): was expecting double-quote to start field name",
                      "cause": "JSON parse error: Unexpected character ('}' (code 125)): was expecting double-quote to start field name",
                      "httpStatus": 400,
                      "details": "/globadymeGateway/transaction/requestPayment"
                    }
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                UNKNOWN:
                  summary: Whenever the given merchant is unknown
                  value: |
                    {
                      "message": "Merchant not found with id 7699cab7-2dfa-4981-9c90-0d0c93c801ac",
                      "httpStatus": 404,
                      "details": "Not Found"
                    }
                  
        "405":
          $ref: '#/components/responses/methodNotSupported'
        "406":
          $ref: '#/components/responses/notAcceptable'
        "415":
          $ref: '#/components/responses/unsupportedMediaType'  
        "429":
          $ref: '#/components/responses/tooManyRequests'                 
        "500":
          $ref: '#/components/responses/unexpectedError'
          
  /globadymeGateway/transaction/initiatePayment:
    post:
      description: |
        Initiate a payment, using the payment link
      tags:
      - Payment
      operationId: initiatePayment
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InitiatePaymentRequestDTO'
            example: |
              {
                "encryptedTransaction": "0f628643a49a71cecb16d1a604008...2ecd4b64724abda392abd80f8388bae1b",
                "paymentMethod": "IDEAL"
              }
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkDTO'
              example: |
                {
                  "message": "payment",
                  "details": {
                    "redirectUrl": "https://r3.girogate.de/ti/simideal?tx=140250159191&rs=VT5S...6d231184",
                    "id": "d549d14f-2827-4579-8a03-57077bc7cda7"
                  }
                }
        "400":
          description: Invalid input provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                expired:
                  summary: The request for this payment has expired
                  value: |
                    {
                      "message": "The requested payment has expired",
                      "httpStatus": 400,
                      "details": "Bad Request"
                    }
                paymentMethod:
                  summary: No payment method provided
                  value: |
                    {
                      "message": "Missing or invalid payment method provided!",
                      "httpStatus": 400,
                      "details": "Bad Request"
                    }
        
        "405":
          $ref: '#/components/responses/methodNotSupported'
        "406":
          $ref: '#/components/responses/notAcceptable'
        "415":
          $ref: '#/components/responses/unsupportedMediaType'                  
        "500":
          $ref: '#/components/responses/unexpectedError'

  /globadymeGateway/refund/initiateRefund:
    post:
      tags:
      - Refunds
      summary: Initiate a refund
      description: Initiate a refund on an earlier created and approved transaction
      operationId: initiateRefund
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefundRequestDTO'
            example: |
              {
                "transactionId": "9378c831-dac4-4169-9210-065a70ef7b13",
                "merchantId": "d549d14f-2827-4579-8a03-57077bc7cda7",
                "description": "Return this article",
                "amount": 123.45
              }

        required: true
      responses:
        "200":
          description: Succesful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkDTO'
              examples:
                success:
                  summary: refund succeeded
                  value: |
                    {
                      "message": "refund",
                      "details": {
                        "status": "SUCCEEDED"
                      }
                    }

        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                merchant:
                  summary: merchant not found
                  value: |
                    {
                      "message": "Refund no merchant found for merchantId",
                      "httpStatus": 404,
                      "details": "Not Found"
                    }
                transaction:
                  summary: transaction not found
                  value: |
                    {
                      "message": "Refund no transaction found for transactionId",
                      "httpStatus": 404,
                      "details": "Not Found"
                    }  
                exceeded:
                  summary: total amount exceeds original amount
                  value: |
                    {
                      "message": "Total refund amount: 200.12 exceeds original transactionId amount: 123.00",
                      "httpStatus": 400,
                      "details": "Bad Request"
                    }

        "400":
          description: Invalid input provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                desc:
                  summary: description empty
                  value: |
                    {
                      "message": "Refund description is empty.",
                      "httpStatus": 400,
                      "details": "Bad Request"
                    }
                merchant:
                  summary: merchant empty
                  value: |
                    {
                      "message": "Refund merchantId is empty.",
                      "httpStatus": 400,
                      "details": "Bad Request"
                    }
                transaction:
                  summary: transaction empty
                  value: |
                    {
                      "message": "Refund transactionId is empty.",
                      "httpStatus": 400,
                      "details": "Bad Request"
                    }
                amount:
                  summary: amount empty or negative
                  value: |
                    {
                      "message": "Refund amount is empty or less then 0.00.",
                      "httpStatus": 400,
                      "details": "Bad Request"
                    }

        "401":
          $ref: '#/components/responses/authenticationFailure'
        "405":
          $ref: '#/components/responses/methodNotSupported'
        "406":
          $ref: '#/components/responses/notAcceptable'
        "415":
          $ref: '#/components/responses/unsupportedMediaType'                  
        "500":
          $ref: '#/components/responses/unexpectedError'
          
  /api/auth/sign-in:
    post:
      tags:
      - Authentication
      operationId: signIn
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JwtRequest'
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JwtResponse'
        "401":
          description: Authentication failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              example: |
                {
                  "message": "Could not sign in. User/password combination wrong",
                  "httpStatus": 401,
                  "details": "Unauthorized"
                }

        "405":
          $ref: '#/components/responses/methodNotSupported'
        "406":
          $ref: '#/components/responses/notAcceptable'
        "415":
          $ref: '#/components/responses/unsupportedMediaType'                  
        "500":
          $ref: '#/components/responses/unexpectedError'
                 
  /api/auth/refresh-token:
    post:
      tags:
      - Authentication
      operationId: refreshToken
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TokenRefreshRequest'
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenRefreshResponse'
                         
        "405":
          $ref: '#/components/responses/methodNotSupported'
        "406":
          $ref: '#/components/responses/notAcceptable'
        "415":
          $ref: '#/components/responses/unsupportedMediaType'                  
        "500":
          $ref: '#/components/responses/unexpectedError'
 
  /globadymeGateway/transaction/getPaymentByRequestId:
    get:
      tags:
      - Payment
      operationId: getPaymentByRequestId
      parameters:
      - name: getPaymentByRequestIdRequestDTO
        in: query
        required: true
        schema:
          $ref: '#/components/schemas/GetPaymentByRequestIdRequestDTO'
        example: |
          {
            "requestId": "04f5faf0-e46c-4a8e-82e6-d69c1ab434bc",
            "password": "merchantPassword",
            "merchantId": "9378c831-dac4-4169-9210-065a70ef7b13"
          }
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkDTO'
              examples:
                found:
                  summary: items found
                  value: |
                    {
                      "message": "PaymentByRequestId",
                      "details": {
                        "requestId": "04f5faf0-e46c-4a8e-82e6-d69c1ab434ac",
                        "transactions": [
                          {
                            "id": "9378c831-dac4-4169-9210-065a70ef7b13",
                            "created": "2024-06-17T14:24:31.801722Z",
                            "status": "PENDING",
                            "amount": 368.00,
                            "currency": "EUR",
                            "country": "NL",
                            "paymentMethod": "iDEAL",
                            "accountholderName": "Oebele de Rekeninghouder",
                            "requestId": "04f5faf0-e46c-4a8e-82e6-d69c1ab434ac",     
                            "settled": true,
                            "settlementDate": "2024-01-28T06:00:00.572957294Z",
                            "settlementId": "1-912-W-2024-3-C0"
                          }
                        ]
                       }
                     }
                  none:
                    summary: none found
                    value: |
                      {
                        "message": "PaymentByRequestId",
                        "details": {
                          "requestId": "04f5faf0-e46c-4a8e-82e6-d69c1ab434bc"
                        }
                      }

        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                passwd:
                  summary: Wrong password provided
                  value: |
                    {
                      "message": "Incorrect merchant password for merchant: x@yz.com",
                      "httpStatus": 401,
                      "details": "Unauthorized"
                    }

        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                UNKNOWN:
                  summary: Whenever the given merchant is unknown
                  value: |
                    {
                      "message": "Merchant not found with id 7699cab7-2dfa-4981-9c90-0d0c93c801ac",
                      "httpStatus": 404,
                      "details": "Not Found"
                    }

        "405":
          $ref: '#/components/responses/methodNotSupported'
        "406":
          $ref: '#/components/responses/notAcceptable'
        "415":
          $ref: '#/components/responses/unsupportedMediaType'                  
        "500":
          $ref: '#/components/responses/unexpectedError'
          
  /globadymeGateway/common/banks:
    get:
      security:
      - Bearer: []
      tags:
      - Payment
      - Common
      operationId: getBanks
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BankDTO'
              example: |
                [
                  {
                    "displayName": "Nationale Nederlanden",
                    "name": "NN",
                    "ibanAbbreviation": "NNBA",
                    "BIC": "NNBANL2G"
                  },
                  {
                    "displayName": "ING",
                    "name": "ING",
                    "ibanAbbreviation": "INGB",
                    "BIC": "INGBNL2A"
                  }
                ]

        "401":
          $ref: '#/components/responses/authenticationFailure'
        "405":
          $ref: '#/components/responses/methodNotSupported'
        "406":
          $ref: '#/components/responses/notAcceptable'
        "415":
          $ref: '#/components/responses/unsupportedMediaType'                  
        "500":
          $ref: '#/components/responses/unexpectedError'
components:
  securitySchemes:
    bearerAuth:
     type: http
     scheme: bearer
     name: JWT
     
  responses:
    authenticationFailure:
      description: Authentication failure
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorDTO'
          example: |
            {
              "message": "Expired or invalid JWT token",
              "httpStatus": 401,
              "details": "Unauthorized"
            }
                       
    methodNotSupported:
      description: Method not supported.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorDTO'
          example: |
            {
              "message": "Request method 'GET' is not supported",
              "cause": "Request method 'GET' is not supported",
              "httpStatus": 405,
              "details": "/globadymeGateway/transaction/requestPayment"
            }

    notAcceptable:
      description: Not acceptable.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorDTO'
  
    unsupportedMediaType:
      description: Media type not supported.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorDTO'
          example: |
            {
              "message": "Content-Type 'text/plain;charset=UTF-8' is not supported",
              "cause": "Content-Type 'text/plain;charset=UTF-8' is not supported",
              "httpStatus": 415,
              "details": "/globadymeGateway/transaction/requestPayment"
            }

    tooManyRequests:
      description: Too many requests.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorDTO'
          example: |
            {
              "message": "To many request at endpoint /globadymeGateway/transaction/requestPayment from IP 127.0.0.1! Please try again after 60000 milliseconds!",
              "cause": "To many request at endpoint /globadymeGateway/transaction/requestPayment from IP 127.0.0.1! Please try again after 60000 milliseconds!",
              "httpStatus": 429,
              "details": "/globadymeGateway/transaction/requestPayment"
            }

    unexpectedError:
      description: Internal Server Error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorDTO'
     
  schemas:
    BillingAddressDTO:
      required:
      - attention
      - email
      - city
      - familyName
      - givenName
      - phoneNumber
      - postalCode
      - region
      - streetAddress1
      - title
      type: object
      properties:
        attention:
          description: the attention string, for example the department of the addressee
          type: string
        email:
          description: Customer e-mailaddress
          type: string
          example: 'customer@example.com'
        city:
          type: string
          example: 'Goirle'
        familyName:
          type: string
          example: 'Janssen'
        givenName:
          type: string
          example: 'Piet'
        phoneNumber:
          type: string
          example: '+1234567890'
        postalCode:
          type: string
          example: '1234AB'
        region:
          type: string
          example: 'North-East'
        streetAddress1:
          type: string
          example: 'Kasteelstraat 123'
        streetAddress2:
          type: string
          example: 'Apartment 13'
        title:
          type: string
          example: 'Mr.'
    KlarnaSpecDTO:
      description: In order to be able to process Klarna payments, this field and its sub elements must be filled.
      required:
      - orderItems
      - billingAddress
      type: object
      properties:
        taxAmount:
          type: integer
        orderItems:
          description: |
            A list of the items being ordered. Note that the sum of the totalAmounts must 
            add up to the total transaction amount. If not, the payment request wil be rejected
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/OrderItemDTO'
        billingAddress:
            $ref: '#/components/schemas/TokenRefreshRequestBillingAddressDTO'
    OrderItemDTO:
      required:
true      - responses:name
      - quantity
"200":      - totalAmount
   description: OK  - unitPrice
       contenttype: object
      properties:
    '*/*':    name:
          schematype: string
        quantity:
      $ref: '#/components/schemas/TokenRefreshResponse'   type: integer
/globadymeGateway/transaction/getPaymentByRequestId:     get:     format: int32
security:       - BearertotalAmount:
[]          tagsdescription: The total amount in cents
 -  Payment       operationIdtype: getPaymentByRequestIdnumber
      parameters:  unitPrice:
    - name: getPaymentByRequestIdRequestDTO    description: Unit price in cents
in: query         requiredtype: truenumber
    RecurrenceDTO:
   schema:   type: object
      $refproperties: '#/components/schemas/GetPaymentByRequestIdRequestDTO'
        responsesrecurrenceFrequency:
        "200":  type: string
          descriptionenum:
OK          - DAILY
 content:         - WEEKLY
  application/json:        - MONTHLY
     schema:     - QUARTERLY
          $ref: '#/components/schemas/OkDTO'- YEARLY
   /globadymeGateway/common/banks:     getrecurrenceStatus:
          securitytype: string
     - Bearer: []     enum:
   tags:       - PaymentACTIVE
      - Common   - PAUSED
  operationId:  getBanks      - responses:FINISHED
        "200"startDate:
          descriptiontype: OKstring
          contentformat: date
        recurrenceAmount:
  application/json:        type: number
     schema:   transactionId:
          type: string
 type: array      description:
          itemstype: string
        id:
        $ref  type: '#/components/schemas/BankDTO' integer
  components:   securitySchemes:     bearerAuthformat: int32
    typeSepaSpecDTO:
http      schemedescription: bearerContainer for SEPA payments.
  name: JWT   schemasrequired:
    BillingAddressDTO:  - iban
   type: object  - emailAddress
   properties:   - postalAddress
    attention:  type: object
       typeproperties: string
        emailiban:
          typedescription: string The buyer's IBAN.
          citytype: string
          typeexample: string'ES9121000418450200051332'
        familyNameemailAddress:
          typedescription: stringThe buyer's email address.
     givenName:     type: string
    type: string     example: 'customer@example.com'
  phoneNumber:      postalAddress:
    type: string     description: The buyer's postal postalCode:address.
          type: string
        region:  example: 'Customerstreet 13, 1234AB Customercity'
    typeRequestPaymentRequestDTO:
string         streetAddress1type: object
      required:
  type: string   - transaction
    streetAddress2:  - password
       typeproperties:
string         titletransaction:
          type: string$ref: '#/components/schemas/RequestPaymentRequestTransactionDTO'
     KlarnaSpecDTO:   password:
   type: object       propertiestype: string
       taxAmount:   description: Password to authenticate this merchant
  type: integer       example: 'MerchantTestPassword'
orderItems:    RequestPaymentRequestTransactionDTO:
      uniqueItemsdescription: true
        Holds the type:detail arrayfor this payment
        itemsrequired:
        - merchantId
  $ref: '#/components/schemas/OrderItemDTO'     - amount
  billingAddress:      - currency
   $ref: '#/components/schemas/BillingAddressDTO'    - OrderItemDTO:country
      type: object - description
    properties:    - accountHolderName
   name:   type: object
      typeproperties:
string         quantitymerchantId:
          type: integerstring
          formatdescription: int32UUID to identify       totalAmount:this merchant
          typeexample: number'7699cab7-2dfa-4981-9c90-0d0c93c801ac'
        unitPriceamount:
          type: numberstring
    RecurrenceDTO:       typedescription: objectAn amount for the payment. The decimal properties:separator must be a dot   '.'
 recurrenceFrequency:           typeexample: string'123.45'
        currency:
 enum:         type: string
- DAILY         pattern:  - WEEKLY'[A-Z]{3,3}'
          example: -'EUR'
MONTHLY          description: -'3 QUARTERLYLetter ISO Currency Code: ISO 4217 code'
    - YEARLY         recurrenceStatuscountry:
          type: string
          enumpattern:
    '[A-Z]{2,2}'
      - ACTIVE   example: 'NL'
      - PAUSED   description: '2 Letter ISO Country Code: ISO 3166 - FINISHEDcode'
        startDatedescription:
          type: string
          formatdescription: date'A descriptive string for this transaction'
   recurrenceAmount:       example: 'Test payment' 
type: number         transactionIdaccountHolderName:
          type: string
          description: 'Name of the account holder'
          typeexample: string'Test account holder'
        idemailAddress:
          type: integerstring
          formatexample: int32'klant@yourshop.com'
    SepaSpecDTO:    recurrence:
  type:   object       properties:$ref: '#/components/schemas/RecurrenceDTO'
        ibanklarnaSpec:
          type$ref: string'#/components/schemas/KlarnaSpecDTO'
        emailAddresssepaSpec:
          type$ref: string'#/components/schemas/SepaSpecDTO'
        postalAddresstransactionRecurrenceType:
          type: string
    RequestPaymentRequestDTO:       typeenum:
object       properties:   - ONETIME
    transaction:      - FIRST
   $ref: '#/components/schemas/RequestPaymentRequestTransactionDTO'      -   password:RECURRING
          typedescription:
string     RequestPaymentRequestTransactionDTO:       type:This objectwill default to ONETIME if not present. properties:For recurring payments, 
     merchantId:       this field needs to type:be stringpresent and filled with      amount:
          type: stringFIRST. This will then 
          currency:  be the first in a series of recurring payments, type:also stringserving as the 
     country:       mandate for future payments. type:Scheduling stringand execution of subsequent 
    description:        recurrences are handled type:by stringGlobadyme according to parameters set in 
  accountHolderName:          the type:next stringfield.
        emailAddressredirectUrlSuccess:
          type: string
          recurrencedescription: Optional specific url to redirect to in case of a $ref: '#/components/schemas/RecurrenceDTO'successful transaction.
        klarnaSpecredirectUrlFailed:
          $reftype: '#/components/schemas/KlarnaSpecDTO'string
          sepaSpecdescription: Optional specific url to redirect to in case of a $ref: '#/components/schemas/SepaSpecDTO'failed transaction.
        transactionRecurrenceTyperedirectUrlAborted:
          type: string
          enumdescription: Optional specific url to redirect to in case of an -aborted ONETIMEtransaction.
        paymentLink:
 - FIRST        type: boolean
 - RECURRING         redirectUrlSuccessdescription: 
         type: string Flag to choose between a payment link  redirectUrlFailed:and a one-time or recurring 
         type: string payment. A value of true will return a redirectUrlAborted:payment link 
        typelinkValidityDays:
string          paymentLinktype: integer
          typeformat: int32
boolean          linkValidityDaysdescription:
          type: integer
          format: int32  The amount of days the payment link will be valid. Default value is 14.
    OkDTO:
      description: Common Success response
      type: object
      properties:
        message:
          description: A descriptive message for the consumer
          type: string
          example: 'OK'
        details:
          description: Key/value pair detailing the message results
          type: object
          additionalProperties:
            type: object
          example:
            redirectUrl: "https://dev.globadyme.com/pay?data=0f6286...ad990f4"
            requestId: "9694c0c8-d411-4d3d-af08-2b0d21ba9521"
              
    ErrorDTO:
      description: Common Error response - In case of any error.
      type: object
      properties:
        message:
          description: A descriptive error message for the consumer
          type: string
          example: "Incorrect merchant password for merchant: x@yz.com "Error processing encoded transaction"
        cause:
          description: Optional a Technical error
          type: string
        httpStatus:
          description: The http status code
          type: integer
          format: int32
          example: 401500
        details:
          description: Optional a detailed description, e.g. which field was missing
          type: string
          example: Internal Server Error 
Unauthorized      InitiatePaymentRequestDTO:example: |
        {
      type    "message": object"Error processing encoded transaction: Unable to deserialise",
properties:          encryptedTransaction:"httpStatus": 500,
          type: string"details": "Internal Server Error"
        }

bank:    InitiatePaymentRequestDTO:
      type: stringobject
      required:
    paymentMethod:  - encryptedTransaction
      - type:paymentMethod
 string     RequestPaymentResponseDTOproperties:
      type: object  encryptedTransaction:
          propertiesdescription: The encrypted transaction as received in the return url  redirectUrl:from '/globadymeGateway/transaction/requestPayment'
          type: string
        requestIdbank:
          typedescription: string
The name of the bank.
   RefundRequestDTO:       type: string
 object         propertiesexample: 'ING'
        refundIdpaymentMethod:
          typedescription: stringThe payment method as chosen by the consumer.
 transactionId:
          type: string
          merchantIdenum:
          type: string- IDEAL
          - PAYPAL
description:          - type:KLARNA
string         amount: - CREDITCARD
        type: number - EPS
  JwtRequest:       type: object- GIROPAY
     properties:     - SOFORT
  user:        - PAYCONIQ
 $ref: '#/components/schemas/User'         - User:SEPA
      type: object   - BANCONTACT
  properties:  RefundRequestDTO:
      usernamedescription: Object to request a refund
      typerequired:
     string - transactionId
      password:- merchantId
      - description
 type: string    - JwtResponse:amount
      type: object
      properties:
        accessTokenrefundId:
          type: string
        tokenTypetransactionId:
          type: string
        refreshTokenmerchantId:
          type: string
        userIddescription:
          type: string
        rolesamount:
          type: arraynumber
    JwtRequest:
      itemsdescription: Request an jwt token to authorise subsequent requests
    type: string required:
      - user
   enum:   type: object
      properties:
 - ROLE_ADMIN      user:
      - ROLE_CLIENT     TokenRefreshRequest:
      type: object$ref: '#/components/schemas/User'
      example: properties:|
        refreshToken:{
          type"user": {
string     TokenRefreshResponse:       type"username": object"merchant@merchandise.shop",
      properties:      "password": "merchantPassword"
 accessToken:         }
 type: string      }
  refreshToken:  User:
      description: Object type:to stringidentify a merchant/user
      tokenTyperequired:
      - username
  type: string   - password
GetPaymentByRequestIdRequestDTO:       type: object
      properties:
        requestIdusername:
          type: string
        password:
          type: string
        merchantIdJwtResponse:
      description: Object containing tokens type:to stringauthorise a merchant/user
  BankDTO:       type: object
      properties:
        displayNameaccessToken:
          type: string
        nametokenType:
          type: string
        ibanAbbreviationrefreshToken:
          type: string
        BICuserId:
          type: string
        PaymentMethodDTOroles:
      type: object    type: array
 properties:         nameitems:
            type: string
          displayName  enum:
          type: string - ROLE_ADMIN
      hasRecurring:      - ROLE_MERCHANT
   type: boolean        - countries:ROLE_CLIENT
          uniqueItemsexample: true|
          type: array {
         items:     "accessToken": "eyJhbGciOiJIUzI1NiJ...Bruizs7XwzPRzMBdQoKj2WNAJrZ9XlH8",
      type: string         overrideCountry"tokenType": "Bearer",
         type: boolean     TransactionSummaryDTO"refreshToken": "c84e512...1128b62a2",
     type:  object       properties"userId": "9694c0c8-d411-4d3d-af08-2b0d21ba9521",
       id:           type"roles": string[
        created:        "ROLE_MERCHANT",
  type: string           format: date-time
 "ROLE_CLIENT"
       status:       ]
   type: string        } amount:         
 type: number  TokenRefreshRequest:
      currencydescription: Request a new accessToken
      typerequired:
 string     - refreshToken
  country:    type: object
     type properties:
string         paymentMethodrefreshToken:
          $reftype: '#/components/schemas/PaymentMethodDTO'string
        bankexample: |
        {
$ref: '#/components/schemas/BankDTO'         description:"refreshToken": "refreshToken"
        }
 type: string  TokenRefreshResponse:
      ibantype: object
         type: stringproperties:
        accountholderNameaccessToken:
          type: string
        transactionRecurrenceTyperefreshToken:
          type: string
        failReasontokenType:
          type: string
        emailAddressexample: |
        {
type: string         linkId:"accessToken": "eyJhbGciOiJIUzI1...Lw4VDWjcPBuN01IQZMIWDAdtLZLNfDdgAIM",
          type"refreshToken": string"78738b...7e085618",
    GetPaymentByRequestIdResponseTransactionDTO:       type"tokenType": object"Bearer"
      properties:  }
      idGetPaymentByRequestIdRequestDTO:
          type: stringobject
        createdproperties:
          typerequestId:
string           formattype: date-timestring
        statuspassword:
          type: string
        amountmerchantId:
          type: numberstring
    BankDTO:
   currency:   type: object
      typeproperties:
string         countrydisplayName:
          type: string
        paymentMethodname:
          type: string
        accountholderNameibanAbbreviation:
          type: string
        requestIdBIC:
          type: string
 

Download

View file
nameglobadyme-gateway-api.yaml
specification.