---
swagger: "2.0"
info:
title: SERV-PYI-V-BillPay
description: The purpose of this microservice is to manage all the bill payments
for the customer. This service will be utilized for both mobile and online platform
applications to call the internal microservice.
version: 1.0.0
x-ibm-name: serv-pyi-v-billpay
host: 127.0.0.1
schemes:
- https
basePath: /api
produces:
- application/json
paths:
/v1/servicing/payments/bills/detail/validate:
post:
tags:
- validate-bill-payment-detail
operationId: validate-bill-payment-detail
summary: This API requests for payment validation and receives applicable charges
and discounts
description: This API validates all payment entries before it is carried out.
The response will return all applicable charges, fees and discounts
consumes:
- application/json
produces:
- application/json
parameters:
- name: client_id
in: header
required: true
type: string
description: Client ID generated during application registration
- name: Authorization
in: header
required: true
type: string
description: The Authorization Token received during login
- name: Accept
in: header
required: true
type: string
description: Content-Types that are acceptable for the response
- name: uuid
in: header
required: true
type: string
description: 128 bit UUID that you generate for every request
- name: Accept-Language
in: header
required: false
type: string
description: List of acceptable human languages for response
- name: Content-Type
in: header
required: true
type: string
description: Content-Types that are sent in the request
- name: ChannelId
in: header
required: true
type: string
description: Channel where request originated
- name: sid
in: header
required: true
type: string
description: SessionId sent by Consumer
- name: validateBillPaymentRequest
in: body
schema:
$ref: '#/definitions/ValidateBillPaymentRequest'
responses:
200:
description: Successful operation.
schema:
$ref: '#/definitions/ValidateBillPaymentResponse'
400:
description:
Type | Code | Details |
error | invalidRequest | Missing
or invalid Parameters |
schema:
$ref: '#/definitions/ErrorResponse'
401:
description: Type | Code | Details |
error | unAuthorized | Authorization
credentials are missing or invalid |
schema:
$ref: '#/definitions/ErrorResponse'
403:
description: Type | Code | Details | More
Info |
error | accessNotConfigured | The request
operation is not configured to access this resource | Channel/Country/Business
provided in the request is not supported currently |
schema:
$ref: '#/definitions/ErrorResponse'
404:
description: Type | Code | Details | More
Info |
error | resourceNotFound | The requested
resource was not found | Empty resource/resource not found |
schema:
$ref: '#/definitions/ErrorResponse'
422:
description: Type | Code | Details |
error | businessValidationFailed | Business
validation error occured on one or more parameters |
schema:
$ref: '#/definitions/ErrorResponse'
500:
description: Type | Code | Details |
fatal | serverUnavailable | The
request failed due to an internal error/server unavailability |
schema:
$ref: '#/definitions/ErrorResponse'
/v1/servicing/payments/bills/detail:
post:
tags:
- bill-payment-detail
operationId: bill-payment-detail
summary: This API requests for payment sending its details and receives the
result of the action
description: This API sends a request to instruct for payment once the user
of the front end agrees on its details. The result of the action is returned
in the response
consumes:
- application/json
produces:
- application/json
parameters:
- name: client_id
in: header
required: true
type: string
description: Client ID generated during application registration
- name: Authorization
in: header
required: true
type: string
description: The Authorization Token received during login
- name: Accept
in: header
required: true
type: string
description: Content-Types that are acceptable for the response
- name: uuid
in: header
required: true
type: string
description: 128 bit UUID that you generate for every request
- name: Accept-Language
in: header
required: false
type: string
description: List of acceptable human languages for response
- name: Content-Type
in: header
required: true
type: string
description: Content-Types that are sent in the request
- name: ChannelId
in: header
required: true
type: string
description: Channel where request originated
- name: sid
in: header
required: true
type: string
description: SessionId sent by Consumer
- name: billPaymentRequest
in: body
schema:
$ref: '#/definitions/BillPaymentRequest'
responses:
200:
description: Successful operation.
schema:
$ref: '#/definitions/BillPaymentResponse'
400:
description: Type | Code | Details |
error | invalidRequest | Missing
or invalid Parameters |
schema:
$ref: '#/definitions/ErrorResponse'
401:
description: Type | Code | Details |
error | unAuthorized | Authorization
credentials are missing or invalid |
schema:
$ref: '#/definitions/ErrorResponse'
403:
description: Type | Code | Details | More
Info |
error | accessNotConfigured | The request
operation is not configured to access this resource | Channel/Country/Business
provided in the request is not supported currently |
schema:
$ref: '#/definitions/ErrorResponse'
404:
description: Type | Code | Details | More
Info |
error | resourceNotFound | The requested
resource was not found | Empty resource/resource not found |
schema:
$ref: '#/definitions/ErrorResponse'
422:
description: Type | Code | Details |
error | businessValidationFailed | Business
validation error occured on one or more parameters |
schema:
$ref: '#/definitions/ErrorResponse'
500:
description: Type | Code | Details |
fatal | serverUnavailable | The
request failed due to an internal error/server unavailability |
schema:
$ref: '#/definitions/ErrorResponse'
definitions:
ValidateBillPaymentRequest:
type: object
properties:
sourceAccountId:
description: Unique identifier for the source account
type: string
example: "1234567890"
merchantInformation:
$ref: '#/definitions/MerchantInformation'
payment:
$ref: '#/definitions/Payment'
required:
- sourceAccountId
MerchantInformation:
type: object
properties:
merchantCategoryCode:
description: Unique identifier of a service (merchant)
type: string
example: "1174"
merchantSubCategory:
description: Line of business or activity of the merchant
type: string
example: "01"
required:
- merchantCategoryCode
- merchantSubCategory
Payment:
type: object
properties:
paymentAmount:
description: Base amount of the payment to be made
type: number
format: double
example: 1234.560000
paymentConfigurationInformation:
type: array
items:
$ref: '#/definitions/PaymentConfigurationInformation'
required:
- paymentAmount
PaymentConfigurationInformation:
type: object
properties:
paymentReferenceId:
description: Unique ID used by front-end to identify the input of the payment
reference
type: integer
format: int32
example: 2
paymentReferenceValue:
description: Input of the payment reference
type: string
example: 123ABC456DEF
required:
- paymentReferenceValue
ValidateBillPaymentResponse:
type: object
properties:
confirmation:
$ref: '#/definitions/PaymentConfirmation'
PaymentConfirmation:
type: object
properties:
duplicatePaymentAllowedFlag:
description: This flag indicates if it?s possible to accept a duplicated payment
of the service
type: boolean
example: false
feesAndCharges:
type: array
items:
$ref: '#/definitions/FeesAndCharges'
FeesAndCharges:
type: object
properties:
feeCode:
description: Code of Fee Type
type: integer
example: 1
feeType:
description: 'Type of Fee or Charge, example: SURCHARGE, DISCOUNT, COMMISSION,
TAX_COMMISSION, TAX_PAYMENT'
type: string
example: SURCHARGE
feeAmount:
description: Amount of the Fee or Charge
type: number
format: double
example: 1234.560000
BillPaymentRequest:
type: object
properties:
sourceAccountId:
description: Unique identifier for the source account
type: string
example: "1234567890"
merchantDetail:
$ref: '#/definitions/MerchantDetail'
paymentConfirmationDetail:
$ref: '#/definitions/PaymentConfirmationDetail'
security:
$ref: '#/definitions/Security'
required:
- sourceAccountId
- merchantDetail
- paymentConfirmationDetail
- security
Security:
type: object
properties:
lastEncryptedChallenge:
type: string
example: 0736H4sIAAAAAAAAAI1STWgTQRR+2SbUNBWq6MFbaEUQIT+SmoSeQtrDyhqDWxXsQSababKyM7POvm2SCp4KQu+eBa967cWbR2+ePAjeBfEgiNSbbzbbNtYeHBjm/b/vfW/efodcpGG5xyQTfFzyKrXq43qlUtr0hS8HrRiHXLrIkP/e/fypFLV/WZC5DfkImUaK4WMNxYh7seaeEmGMlFSKRtwrzaS+PvhhHbb2OhYUbLgs2rHWXOI0AH2PodI2LImuVqg8FTzgOvKVtKEg7nGMtbTltjLa/YhrW1KTyIFFMc1vK9FTCBedJ2yHlQMmB2UXNaFY24KcWGfUH65vOacglg3E8l8ITOiaA/PC7hvxKTwHy4E8qRsUgpPUYPybk5Cn6iVxV/sDX7JgBk7qOy9cHplJ2kMWBIlxHML0fKCbMRchX62kJ9ZnQJ1lcxbqx9zVFwfvX96wAJKqc7TGlTNz1ye0W9/rjpLBfr678nWn/u2ZBfOPiKENb5hwe8eXFOD6u9yBBZEg5nJwNGZiCU/mMDwYi90/Vjt8RAVSNSuOZPof1/5vIrW/t3L45c2yBVkDqIW0xl6MPLJN9Vj0uHYIcIf+adolJ443YSjIwpTQCy7b5g+V7he7AaOGsUBYOCHB0A4IhWqxVm00i/XV5q2QTmTqnEvXY4VGW0zk8B/v3GkvwhKtr7parzUa9eZNIyNkY/qu9MgUcI4gZgTmX+3/AT2pjop1AwAA=
description: 'Challenge previously received (must be same as the given from
get challenge service), composed by "Challenge" : "String State". This is
encrypted by the frontend using Platform
End-to-End encryption APIs.'
encryptedChallengeToken:
type: string
example: 0736H4sIAAAAAAAAAI1STWgTQRR+2SbUNBWq6MFbaEUQIT+SmoSeQtrDyhqDWxXsQSababKyM7POvm2SCp4KQu+eBa967cWbR2+ePAjeBfEgiNSbbzbbNtYeHBjm/b/vfW/efodcpGG5xyQTfFzyKrXq43qlUtr0hS8HrRiHXLrIkP/e/fypFLV/WZC5DfkImUaK4WMNxYh7seaeEmGMlFSKRtwrzaS+PvhhHbb2OhYUbLgs2rHWXOI0AH2PodI2LImuVqg8FTzgOvKVtKEg7nGMtbTltjLa/YhrW1KTyIFFMc1vK9FTCBedJ2yHlQMmB2UXNaFY24KcWGfUH65vOacglg3E8l8ITOiaA/PC7hvxKTwHy4E8qRsUgpPUYPybk5Cn6iVxV/sDX7JgBk7qOy9cHplJ2kMWBIlxHML0fKCbMRchX62kJ9ZnQJ1lcxbqx9zVFwfvX96wAJKqc7TGlTNz1ye0W9/rjpLBfr678nWn/u2ZBfOPiKENb5hwe8eXFOD6u9yBBZEg5nJwNGZiCU/mMDwYi90/Vjt8RAVSNSuOZPof1/5vIrW/t3L45c2yBVkDqIW0xl6MPLJN9Vj0uHYIcIf+adolJ443YSjIwpTQCy7b5g+V7he7AaOGsUBYOCHB0A4IhWqxVm00i/XV5q2QTmTqnEvXY4VGW0zk8B/v3GkvwhKtr7parzUa9eZNIyNkY/qu9MgUcI4gZgTmX+3/AT2pjop1AwAA=
description: Challenge token generated by the hardToken or softToken assigned
to the client, This is encrypted by the frontend using Platform
End-to-End encryption APIs.
rsaVersion:
description: Version of the RSA that generates the data in the client (Browsers
or Mobile Apps)
type: string
example: 3.4.1.1
browserDetails:
$ref: '#/definitions/BrowserDetails'
mobileDetails:
$ref: '#/definitions/MobileDetails'
required:
- rsaVersion
BrowserDetails:
type: object
properties:
sessionBrowserUserAgent:
description: Web browser identifier
type: string
example: mozilla/5.0+(macintosh;+intel+mac+os+x+10_14_3)
screenResolution:
description: Resolution of the client's screen where the browser is running
type: string
example: 24|1440|900|830
browserTimezone:
description: Time zone configured in the browser
type: integer
format: int32
example: 6
javaVersion:
description: Java version loaded in the browser
type: integer
format: int32
example: 1
browserLanguage:
description: Browser language
type: string
example: lang=es-XL|syslang=|userlang=
cookieEnabledIndicator:
description: It indicates if cookies are enabled 0-disabled, 1-enabled
type: integer
format: int32
example: 1
applicationName:
description: Name of the application or in its absence the simple name of
the browser
type: string
example: Netscape
applicationCode:
description: Application code or browser agent code
type: string
example: Mozilla
internetEnabledFlag:
description: Flag that indicates if the browser has internet, true-enabled,
false-disabled
type: boolean
example: true
screenSize:
description: Width of the client's screen
type: integer
format: int32
example: 1440
screenPixels:
description: Deep of pixels on the client's screen
type: integer
format: int32
example: 24
osName:
description: Name of the operating system where the browser is running
type: string
example: Mac
browserVersion:
description: Browser version
type: integer
format: int32
example: 12
browserName:
description: Browser name
type: string
example: Safari
required:
- browserName
- browserVersion
- osName
- screenPixels
- screenSize
- internetEnabledFlag
- applicationCode
- applicationName
- cookieEnabledIndicator
- browserLanguage
- javaVersion
- browserTimezone
- screenResolution
- sessionBrowserUserAgent
MobileDetails:
type: object
properties:
queryTime:
description: Time at which the request is launched, this data comes from the
time of the smartPhone
type: string
format: date
example: "2019-03-09T13:00:00Z"
deviceId:
description: Device identifier, if the SDK can not recover it, it returns
-1
type: string
example: "-1"
simId:
description: Identifier of the SIM card of the device, if the SDK can not
recover it, it returns -1
type: string
example: "-1"
phoneNumber:
description: Phone number of the device, if the SDK can not recover it, it
returns -1
type: string
example: "-1"
rsaApplicationKey:
description: Key that identifies the RSA SDK
type: string
example: 10F29219081905EC2BEBFF5AD779EE48
mobileCompromisedIndicator:
description: It indicates if the smartphone is altered (Root or Jailbreak),0-
disabled,1- enabled
type: integer
format: int32
example: 0
mobileEmulatorIndicator:
description: It indicates if the RSA SDK is running in simulator or in a physical
device,0- disabled,1- enabled
type: integer
format: int32
example: 1
required:
- mobileEmulatorIndicator
- mobileCompromisedIndicator
- rsaApplicationKey
- phoneNumber
- simId
- deviceId
- queryTime
Installment:
type: object
properties:
installmentId:
description: Number to identify the promotion
type: string
example: "510060"
tenureFrequencyNumber:
description: It refers to the number of months or period to pay in the promotion
type: integer
format: int32
example: 6
processingChargeAmount:
description: The amount of the commission in order to use the promotion
type: number
format: double
example: 5.050000
required:
- installmentId
- tenureFrequencyNumber
- processingChargeAmount
MerchantDetail:
type: object
properties:
merchantCategoryCode:
description: Unique identifier of a service (merchant)
type: string
example: "1174"
merchantSubCategory:
description: Line of business or activity of the merchant
type: string
example: "01"
installmentPlans:
$ref: '#/definitions/Installment'
paymentConfigurationDetail:
type: array
items:
$ref: '#/definitions/PaymentConfigurationDetail'
required:
- merchantCategoryCode
- merchantSubCategory
PaymentConfigurationDetail:
type: object
properties:
paymentReferenceId:
description: Unique ID used by front-end to identify the input of the payment
reference
type: integer
format: int32
example: 2
paymentReferenceValue:
description: Input of the payment reference
type: string
example: 123ABC456DEF
required:
- paymentReferenceValue
PaymentConfirmationDetail:
type: object
properties:
duplicatePaymentAllowedFlag:
description: This flag indicates if it's possible to accept a duplicated payment
of the service
type: boolean
example: false
paymentAmount:
description: Payment Amount
type: number
format: double
example: 1234.560000
paymentScheduleDate:
description: Date and time used when the operation is scheduled for future
day
type: string
format: dateTime
example: 2019-08-18T10:10:10.000z
feesAndChargesDetail:
type: array
items:
$ref: '#/definitions/FeesAndChargesDetail'
required:
- paymentAmount
FeesAndChargesDetail:
type: object
properties:
feeCode:
description: Code of Fee Type
type: integer
example: 1
feeType:
description: 'Type of Fee or Charge, example: SURCHARGE, DISCOUNT, COMMISSION,
TAX_COMMISSION, TAX_PAYMENT'
type: string
example: SURCHARGE
feeAmount:
description: Amount of the Fee or Charge
type: number
format: double
example: 1234.560000
BillPaymentResponse:
type: object
properties:
paymentAuthorizationCode:
description: This tells the payment authorization status
type: string
example: "12345"
paymentStatus:
description: Status of the payment
type: integer
format: int32
example: 3
paymentStatusReason:
description: Description of the status of the payment
type: string
example: SCHEDULED
paymentDate:
description: Date and time when the payment will be performed if scheduled
or if it was immediate, this is the date and time of authorization
type: string
format: dateTime
example: 2019-04-25T17:20:00.000z
accountInformation:
$ref: '#/definitions/AccountInformation'
required:
- paymentAuthorizationCode
- paymentStatus
- paymentStatusReason
- paymentDate
AccountInformation:
type: object
properties:
accountId:
description: Unique ID used by front end to indentify the account
type: string
example: "123456"
accountBalanceInformation:
$ref: '#/definitions/AccountBalanceInformation'
required:
- accountId
AccountBalanceInformation:
type: object
properties:
currentBalanceAmount:
description: The current balance amount
type: number
format: double
example: 15000.230000
required:
- currentBalanceAmount
ErrorResponse:
properties:
type:
type: string
description: Invalid - Request did not confirm to the specification and was
unprocessed and rejected. Please fix the value and try again
enum:
- error
- warn
- invalid
- fatal
code:
description: Error code which qualifies the error
type: string
details:
description: Human readable explanation specific to the occurrence of the
problem
type: string
location:
description: The name of the field that resulted in the error
type: string
moreInfo:
description: More Info can be used to pass any additional details
type: string
uuid:
description: 128 bit UUID that you generate for every request
type: string
timestamp:
description: Timestamp of the error
type: string
required:
- type
- code
x-ibm-configuration:
enforced: true
testable: true
phase: realized
securityDefinitions:
OAuth2 Application Flow:
type: oauth2
description: ""
flow: application
scopes:
/api/v1: ""
tokenUrl: https://sandbox.externalapib2b.wlb.nam.nsroot.net:7101/mx-gcgapi-uat/sandbox2/api/v1/oauth/token
Client ID:
type: apiKey
description: ""
in: header
name: X-IBM-Client-Id
security:
- OAuth2 Application Flow:
- /api/v1
Client ID: []
x-ibm-endpoints:
- endpointUrl: https://sandbox.externalapib2b.wlb.nam.nsroot.net:7101/mx-gcgapi-uat/sandbox2
type:
- production
- development
...