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 999 
  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
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:
        "200":
          description: Succesful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkDTO'
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        "400":
          description: Property missing from JSON
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        "500":
          description: Unable to parse JSON or encode transaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /globadymeGateway/transaction/qrcode:
    post:
      description: |
        Request a qrcode image for the payment
      tags:
      - Payment
      operationId: generateQRCodeImage
      requestBody:
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        "200":
          description: OK
          content:
            image/png:
              schema:
                type: array
                items:
                  type: string
                  format: byte
        "400":
          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:
      description: |
        Initiate a payment, using the payment link
      tags:
      - Payment
      operationId: initiatePayment
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InitiatePaymentRequestDTO'
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkDTO'
        "400":
          description: Invalid input provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        "500":
          description: Technical error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'

  /globadymeGateway/refund/initiateRefund:
    post:
      tags:
      - Refunds
      summary: Initiate a refund
      description: Initiate a refund on an earlier created and approve transaction
      operationId: initiateRefund
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefundRequestDTO'
        required: true
      responses:
        "200":
          description: Succesful operation
          content:
            plain/text: {}
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        "400":
          description: Total refund amount exceeds original transaction amount
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        "401":
          description: Authentication failure
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OkDTO'
        "403":
          description: Autorisation failure
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OkDTO'

  /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:
            '*/*':
              schema:
                $ref: '#/components/schemas/JwtResponse'
        "401":
          description: Authentication failure
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/OkDTO'
  /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:
            '*/*':
              schema:
                $ref: '#/components/schemas/TokenRefreshResponse'
 
  /globadymeGateway/transaction/getPaymentByRequestId:
    get:
      security:
      - Bearer: []
      tags:
      - Payment
      operationId: getPaymentByRequestId
      parameters:
      - name: getPaymentByRequestIdRequestDTO
        in: query
        required: true
        schema:
          $ref: '#/components/schemas/GetPaymentByRequestIdRequestDTO'
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkDTO'

  /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'

components:
  securitySchemes:
    bearerAuth:
     type: http
     scheme: bearer
     name: JWT
  schemas:
    BillingAddressDTO:
      type: object
      properties:
        attention:
          type: string
        email:
          type: string
        city:
          type: string
        familyName:
          type: string
        givenName:
          type: string
        phoneNumber:
          type: string
        postalCode:
          type: string
        region:
          type: string
        streetAddress1:
          type: string
        streetAddress2:
          type: string
        title:
          type: string
    KlarnaSpecDTO:
      type: object
      properties:
        taxAmount:
          type: integer
        orderItems:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/OrderItemDTO'
        billingAddress:
          $ref: '#/components/schemas/BillingAddressDTO'
    OrderItemDTO:
      type: object
      properties:
        name:
          type: string
        quantity:
          type: integer
          format: int32
        totalAmount:
          type: number
        unitPrice:
          type: number
    RecurrenceDTO:
      type: object
      properties:
        recurrenceFrequency:
          type: string
          enum:
          - DAILY
          - WEEKLY
          - MONTHLY
          - QUARTERLY
          - YEARLY
        recurrenceStatus:
          type: string
          enum:
          - ACTIVE
          - PAUSED
          - FINISHED
        startDate:
          type: string
          format: date
        recurrenceAmount:
          type: number
        transactionId:
          type: string
        description:
          type: string
        id:
          type: integer
          format: int32
    SepaSpecDTO:
      type: object
      properties:
        iban:
          type: string
        emailAddress:
          type: string
        postalAddress:
          type: string
    RequestPaymentRequestDTO:
      type: object
      properties:
        transaction:
          $ref: '#/components/schemas/RequestPaymentRequestTransactionDTO'
        password:
          type: string
    RequestPaymentRequestTransactionDTO:
      type: object
      properties:
        merchantId:
          type: string
        amount:
          type: string
        currency:
          type: string
        country:
          type: string
        description:
          type: string
        accountHolderName:
          type: string
        emailAddress:
          type: string
        recurrence:
          $ref: '#/components/schemas/RecurrenceDTO'
        klarnaSpec:
          $ref: '#/components/schemas/KlarnaSpecDTO'
        sepaSpec:
          $ref: '#/components/schemas/SepaSpecDTO'
        transactionRecurrenceType:
          type: string
          enum:
          - ONETIME
          - FIRST
          - RECURRING
        redirectUrlSuccess:
          type: string
        redirectUrlFailed:
          type: string
        redirectUrlAborted:
          type: string
        paymentLink:
          type: boolean
        linkValidityDays:
          type: integer
          format: int32
    OkDTO:
      description: Common Success response
      type: object
      properties:
        message:
          description: A descriptive message for the consumer
          type: string
        details:
          description: Key/value pair detailing the message results
          type: object
          additionalProperties:
            type: object
    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"
        cause:
          description: Optional a Technical error
          type: string
        httpStatus:
          description: The http status code
          type: integer
          format: int32
          example: 401
        details:
          description: Optional a detailed description, e.g. which field was missing
          type: string
          example: Unauthorized 
    InitiatePaymentRequestDTO:
      type: object
      properties:
        encryptedTransaction:
          type: string
        bank:
          type: string
        paymentMethod:
          type: string
    RequestPaymentResponseDTO:
      type: object
      properties:
        redirectUrl:
          type: string
        requestId:
          type: string
    RefundRequestDTO:
      type: object
      properties:
        refundId:
          type: string
        transactionId:
          type: string
        merchantId:
          type: string
        description:
          type: string
        amount:
          type: number
    JwtRequest:
      type: object
      properties:
        user:
          $ref: '#/components/schemas/User'
    User:
      type: object
      properties:
        username:
          type: string
        password:
          type: string
    JwtResponse:
      type: object
      properties:
        accessToken:
          type: string
        tokenType:
          type: string
        refreshToken:
          type: string
        userId:
          type: string
        roles:
          type: array
          items:
            type: string
            enum:
            - ROLE_ADMIN
            - ROLE_CLIENT
    TokenRefreshRequest:
      type: object
      properties:
        refreshToken:
          type: string
    TokenRefreshResponse:
      type: object
      properties:
        accessToken:
          type: string
        refreshToken:
          type: string
        tokenType:
          type: string
    GetPaymentByRequestIdRequestDTO:
      type: object
      properties:
        requestId:
          type: string
        password:
          type: string
        merchantId:
          type: string
    BankDTO:
      type: object
      properties:
        displayName:
          type: string
        name:
          type: string
        ibanAbbreviation:
          type: string
        BIC:
          type: string
    PaymentMethodDTO:
      type: object
      properties:
        name:
          type: string
        displayName:
          type: string
        hasRecurring:
          type: boolean
        countries:
          uniqueItems: true
          type: array
          items:
            type: string
        overrideCountry:
          type: boolean
    TransactionSummaryDTO:
      type: object
      properties:
        id:
          type: string
        created:
          type: string
          format: date-time
        status:
          type: string
        amount:
          type: number
        currency:
          type: string
        country:
          type: string
        paymentMethod:
          $ref: '#/components/schemas/PaymentMethodDTO'
        bank:
          $ref: '#/components/schemas/BankDTO'
        description:
          type: string
        iban:
          type: string
        accountholderName:
          type: string
        transactionRecurrenceType:
          type: string
        failReason:
          type: string
        emailAddress:
          type: string
        linkId:
          type: string
    GetPaymentByRequestIdResponseTransactionDTO:
      type: object
      properties:
        id:
          type: string
        created:
          type: string
          format: date-time
        status:
          type: string
        amount:
          type: number
        currency:
          type: string
        country:
          type: string
        paymentMethod:
          type: string
        accountholderName:
          type: string
        requestId:
          type: string
 

...