Está en la página 1de 88

Sky Airline

Microservicios

Santiago de Chile, 21 de abril de 2021


Contenido
Glosario..............................................................................................................................................4
Ambientes..........................................................................................................................................5
Ambientes de QA:..........................................................................................................................5
Ambientes de Stage:......................................................................................................................6
Estructura de los microservicios.........................................................................................................8
Eventos.............................................................................................................................................11
Microservicio de Inventory..............................................................................................................13
MS Inventory - FaresShopFareclass.............................................................................................14
Inventory – AircraftType..............................................................................................................15
MS Inventory - Cheapest Fare By SegDate..................................................................................17
MS Inventory - Cheapest Fare By DateRange.............................................................................19
MS Inventory - Flight Services Shop............................................................................................20
MS Inventory - Flight Services Shop - SeatAvailability................................................................22
MS Inventory -FlightSchedule.....................................................................................................23
MS Inventory – GetAirportList....................................................................................................24
MS Inventory - faresBySegment- /inventory/fares....................................................................25
Microservicio de Booking.................................................................................................................27
MS Booking - GET Rerserva.........................................................................................................29
MS Booking - /booking/timelimit updateTimeLimit...................................................................30
MS Booking -/booking/segments/seats -RemoveSeatAssignment............................................31
MS Booking - /bookings/segments/passengers/apis update pax api........................................34
MS Booking – CreateBooking......................................................................................................35
MS Booking - Add Services..........................................................................................................41
MS Booking – ModifySegment.....................................................................................................46
MS Booking - Seat Assignment....................................................................................................49
MS Booking - By DNI....................................................................................................................51
MS Booking - Update Contact.....................................................................................................52
MS Booking update passengers..................................................................................................54
MS Booking - asignar checkin......................................................................................................55
MS Booking - Cancel Reservation................................................................................................56
MS Booking - Passenger Checkout..............................................................................................57
MS Booking /booking/charges OverrideCharges........................................................................59
Microservicio Fulfillment MS............................................................................................................61
Fulfillment MS – RetrieveVoucher..............................................................................................61
Fulfillment MS – RegisterPSSPayment........................................................................................62
Microservicio Pricing........................................................................................................................65
PRICING MS- currencies/conversion...........................................................................................66
Pricing MS - adjust fares shop.....................................................................................................67
Dynamic Fares.............................................................................................................................69
Dynamic services seatMax..........................................................................................................69
Rebooking Simulate.....................................................................................................................71
Inventory BL.....................................................................................................................................74
Inventory BL – By agent...............................................................................................................74
Inventory BL- Seats availability PSS............................................................................................75
BOOKING BL.....................................................................................................................................76
Booking BL - by Lastname:...........................................................................................................76
Booking BL – Checkin and seat....................................................................................................76
Booking BL – Rebooking Availability Check................................................................................78
Booking BL – Refund....................................................................................................................78
BOOKING BL- GET REFUND..........................................................................................................79
Booking BL - Insurance................................................................................................................80
Princing BL........................................................................................................................................81
Pricing BL – Pricing fares..............................................................................................................81
Pricing BL – Pricing services.........................................................................................................82
Pricing BL – Segment rebooking cost..........................................................................................83
Fulfillment Events Rabbit.................................................................................................................84
Glosario

Microservicio: es un enfoque para desarrollar una aplicación software como una serie de
pequeños servicios, cada uno ejecutándose de forma autónoma y comunicándose entre sí, por
ejemplo, a través de peticiones HTTP a sus API
Capa de negocio: es donde residen los programas que se ejecutan, se reciben las peticiones del
usuario y se envían las respuestas tras el proceso. Se denomina capa de negocio (e incluso de
lógica del negocio) porque es aquí donde se establecen todas las reglas que deben cumplirse. Esta
capa se comunica con la capa de presentación, para recibir las solicitudes y presentar los
resultados, y con la capa de datos, para solicitar al gestor de base de datos almacenar o recuperar
datos de él. También se consideran aquí los programas de aplicación.

Json Array: La matriz JSON representa una lista ordenada de valores. La matriz JSON puede almacenar
varios valores. Puede almacenar cadenas, números, booleanos u objetos en una matriz JSON.

Método get: El método GET solicita una representación de un recurso específico. Las peticiones
que usan el método GET sólo deben recuperar datos.

Método post: El método POST se utiliza para enviar una entidad a un recurso en específico,
causando a un cambio en el estado o efectos secundarios en el servidor.

Método put: El modo PUT reemplaza todas las representaciones actuales del recurso de destino
con la carga útil de la petición.

Método delete: El método DELETE borra un recurso en específico.

http: Protocolo de transferencia de hipertexto

NoSQL: NoSQL, también llamadas No Solo SQL, son un enfoque hacia la gestión de datos y el
diseño de base de datos que es útil para grandes conjuntos de datos distribuidos.

RabbitMQ: es un broker de mensajería de código abierto, distribuido y escalable, que sirve como
intermediario para la comunicación eficiente entre productores y consumidores.

Elasctic: es una herramienta de monitoreo

Mongo DB: es un motor de base de datos NoSQL

XML: Lenguaje Extensible de Etiquetado es definido como un lenguaje marcado para documentos
que contienen información estructurado
JSON: Siglas de JavaScript Object Notation o Notación de Objetos de JavaScript, es un formato
ligero de intercambio de datos, que resulta sencillo de leer y escribir para los programadores y
simple de interpretar y generar para las máquinas.

Ambientes

Ambientes de QA:

Inventory MS:
URL: https://inventory-ms-qa.skyairline.com

x-api-key:5A0532AC51154CB1843A33C493D63CC9

Authorization:E214506C70FD4B53B4CC97178F9F91D5

Inventory BL:
URL: https://inventory-bl-qa.skyairline.com

x-api-key:5574CF407AA2433B9D5F77491D8B9340

Authorization:BB2E118B0B804C06B7DC5F4AA515E3E4

Booking MS:

URL: https://booking-ms-qa.skyairline.com/

Authorization:76D9A6CB5A654A95A64D05EE60B82307

x-api-key:501928AB79C24691BDE7BAACC6607800

Booking BL:

URL: https://booking-bl-qa.skyairline.com/

x-api-key:5574CF407AA2433B9D5F77491D8B9340

Authorization:BB2E118B0B804C06B7DC5F4AA515E3E4

Pricing MS:

URL: https://pricing-ms-qa.skyairline.com

x-api-key:1F37813C1DCD4211ADB39971A63241D6

Authorization:7FA093AD0FC64809B3C4C7FA987E06AB

Pricing BL:

URL: https://pricing-bl-qa.skyairline.com
x-api-key:5574CF407AA2433B9D5F77491D8B9340

Authorization:BB2E118B0B804C06B7DC5F4AA515E3E4

Fulfillment MS:

URL: https://fulfillment-ms-qa.skyairline.com/

x-api-key:65550ED330B2439A8DCC898B8E26DA59

Authorization:457220AC0A1A42188541B9258F6E8C1D

Fulfillment BL:

URL: https://fulfillment-bl-qa.skyairline.com/

x-api-key:65550ED330B2439A8DCC898B8E26DA59

Authorization:457220AC0A1A42188541B9258F6E8C1D

Miselaneous MS:
URL: https://miscellaneous-ms-qa.skyairline.com

x-api-key:5EEB6B4C76B24F5AB8E696E06F1EC0C1

Authorization:836C381716794A319ED7849B3C55862A

Ambientes de Stage:
Booking BL:

URL: https://booking-bl-stage.skyairline.com

authorization: A5B7C4AF000148989C509E3E71C98383

x-api-key: 0A74254B49F6497C842152FAC6210CD1

Booking MS:

URL: https://booking-ms-stage.skyairline.com

authorization:02871FEAD3614155915323321C84F50E

x-api-key:AE1EDC419E764D1F86E5FEA4BAF01A14

Inventory MS:

URL: https://inventory-ms-stage.skyairline.com
authorization:190477E9531C41338D7086A5CE3E2246

x-api-key:2BB2ADDA0AED4918BAC5FC507780AA3B

Inventory BL:

URL: https://inventory-bl-stage.skyairline.com

authorization:395C39B211F644B49A3401034F553801

x-api-key:5F54BCDC351D4035B46F935F5C081BB3

Pricing MS:

URL: https://pricing-ms-stage.skyairline.com

authorization:97684B88F211479EACE57E0CE82FD0BE

x-api-key:7254EA8D078D4008BD77ED1482B2A984

Pricing BL:

URL: https://pricing-bl-stage.skyairline.com

authorization:D87E4C662B3F4353975C53F666B21AAB

x-api-key:C4CF44FE581A49C389F248C7E59D6418

Fulfillment MS:

URL: https://fulfillment-ms-stage.skyairline.com

authorization:FBE5148F9EFA42019821F6F8119939AA

x-api-key:22AEDF38F6284FACB348C2EDC62985B0

Fulfillment BL:

URL: https://fulfillment-bl-stage.skyairline.com

authorization:8096F58E376141BE9E83E997817522CA

x-api-key:130672E758AD4345AFEEC130C0894268

Order:

URL: https://order-ms-stage.skyairline.com

x-api-key: F73BDFEB3B2F464C8B9F9BBADF17559C

Authorization: A3F6EF9152DD4B69B525F9FF6A02520F
Estructura de los microservicios
Microservicios:

Pricing MS

Booking MS
Misceláneos MS

Fulfillment MS

Capa Negocio:

Booking BL
Princing BL

Inventory BL

Fulfillment BL

Payment Approved se verifica en RabbitMQ a través de eventos


Eventos
Los eventos serán nuestros orquestadores para implementaciones asíncronas, siendo estos
una declaración de un "hecho" el cuál será publicado a un message broker (RabbitMQ) el
cuál se encargará de gestionar los mensajes a las distintas colas según corresponda.
 
Mensajes como un estandar
Se ha definido una estructura base como primer acercamiento al event sourcing, en donde,
los mensajes deben respetar la siguiente estructura:
 
Ej:
{
messageId:
"$2b$10$zatTfnLLmZPHJsCPdo/ZEuG5PUbevyn19MeIi.sbfI0ZuxRvRTZo6",
publisher: "Wallet",
event: "paymentApproved",
published: 2020-11-26T19:28:37.640Z,
data: {}
}
 

 id: Llave generada para facilitar la detección de mensajes duplicados, de esta forma, los
consumidores tienen una propiedad para evitar ejecutar algún caso de uso más de las
veces que corresponda.

Se propone el siguiente algoritmo para la generación del id en los mensajes:


 const bcrypt = require("bcrypt");
 let published = new Date();
 let salt = 10;//default

 console.log("id hash: ", bcrypt.hashSync(published.toString(), salt));
 

 publisher: Referencia de que aplicación genera el evento.


 event: Podemos considerar un evento como un hecho el que será notificado mediante
el uso de un message broker.
Al ser un hecho (algo que ocurrió), listaremos estos eventos con sentencias en pasado.
Ej:
o Command: Servicio expuesto por el wallet para regitrar un pago
 registerPayment -> (esto no debería llegar al bus de eventos)
 
o Event: Hecho resultante de un comando.
 paymentRegistered
 paymentApproved
 paymentRejected
 paymentRequested
 
 published: Fecha de publicación del evento (cuando ocurrió el hecho)
 
 data: Objeto que contendrá los datos relacionados al hecho y por lo tanto al caso de
uso (o comando) que lo generó.

{
messageId: "1",
    publisher: "Wallet",
    event: "paymentApproved",
    published: 2021-01-01T00:00:00.000Z,
    data: {
        metadata: {
            orderId: "", [PNR - transiente, Order]
     },
headers:{
            homemarket: CL
        },
        body: {
            pnr: "",
            voucher: "",
            paymentDetails: [
            {
                    payment: {
                        baseAmount: 1,
                        baseCurrency: "CLP",
                        cardHolder: "",
                        cardNumber: "",
                        currency: "CLP",
                        cvc: "",
                        method: "VISA",
                        datePaid: "2020-10-14",
                        exchangeRate: "1",
                        exchangeRateDate: "2020-10-20",
                        amount: 1,
                        transactionId: "123456",
                        reference: "web-CL-webpay-IS",
                        iataNumber: "",
                        authorizationCode: "A845645645",
                        userId: ""
                },
                    payor: {
                        firstName: "Juan",
                        lastName: "Perez",
                        dateOfBirth: "1991-06-28",
                        gender: "Male",
                        companyName: "TESTCompany"
                }
            }
        ]
    }
}
}

Microservicio de Inventory

Aplicacion Endpoint Descripción Controller

Inventory /inventory/fares/shop/by- Busca tarifas por clase FaresShopFareclass


MS fareclass
Inventory /inventory/segments/ Devuelve tipo de material AircraftType
MS aircraft de un vuelo
Inventory /inventory/routes Devuelve listado AirportRoutes
MS completo de rutas
configuradas en PSS
Inventory /inventory/fares/shop Devuelve disponibilidad CheapestFareBySegDat
MS de tarifa para un e
segmento/bundle
Inventory /inventory/fares/shop/by- Devuelve disponibilidad CheapestFareByDateRa
MS daterange de tarifa para un rango de nge
fecha
Inventory /inventory/services/shop Devuelve disponibilidad FlightServicesShop
MS de ancillaries para un
segmento
Inventory /inventory/seats/pss Disponibilidad de asientos SeatAvailability
MS PSS
Inventory /inventory/seats/dcs Disponibilidad de asientos InkSeatAvailability
MS DCS
Inventory /inventory/flights/ Devuelve itinerario FlightSchedule
MS retrieve
Inventory /inventory/airports Entrega listado de GetAirportList
MS aeropuertos
Inventory /inventory/fares Entrega todas las tarifas faresBySegment
MS disponibles para un
segmento
MS Inventory - FaresShopFareclass

Permitir al momento de ingresar al MS Inventory Fares Shop Fare Class, debe poder buscar tarifas
por clase

POST: https://ms-inventory-stage.herokuapp.com/inventory/fares/shop/by-fareclass

Headers:
homemarket:CL

x-api-key:5A0532AC51154CB1843A33C493D63CC9

Authorization:E214506C70FD4B53B4CC97178F9F91D5

Payload:

{
    "currency": "CLP",
    "promoCode": "",
    "segments": [
        {
            "LFID": 292648,
            "origin": "PMC",
            "destination": "SCL",
            "departureDate": "2021-03-17",
            "fareClass": "A"
        },
        {
            "LFID": 292649,
            "origin": "SCL",
            "destination": "PMC",
            "departureDate": "2021-03-17",
            "flightNumber": "077",
            "fareClass": "A"
        }
    ],
    "passengerCount": [
        {
            "ptc": "ADT",
            "quantity": "4"
        }
    ]
}
Inventory – AircraftType

Al ingresar al MS Inventory - AircraftType - debe devolver tipo de material de un vuelo.

Get: https://ms-inventory-stage.herokuapp.com/inventory/segments/aircraft?
LFID=272885&departureDate=2020-12-05

Params:

LFID:322486

departureDate:2021-03-26
MS Inventory - Cheapest Fare By SegDate

Al ingresar la MS Inventory Cheapest Fare By SegDate debe devolver la disponibilidad de tarifa


para un segmento/bundle

URL https://ms-inventory-stage.herokuapp.com/inventory/fares/shop

Payload:

{
    "currency": "USD",
    "promoCode": 0,
    "passengerCount": [
        {
            "ptc": "ADT",
            "quantity": "2"
        }
    ],
    "segments": [
        {
            "origin": "SCL",
            "destination": "PMC",
            "departureDate": "2021-04-30"
        }
    ]
}
MS Inventory - Cheapest Fare By DateRange
Description

Al ingresar al MS Inventory Cheapest Fare By DateRange - Debe devolver la disponibilidad de tarifa


para un rango de fecha.

RUTA: https://ms-inventory-stage.herokuapp.com/inventory/fares/shop/by-daterange

Payload:

"currency": "CLP",

"promoCode": "0",

"initialDate": "2021-01-13",

"endDate": "2021-01-15",

"passengerCount": [

"ptc": "ADT",

"quantity": "2"

},

"ptc": "INF",

"quantity": "1"

},

"ptc": "CHD",

"quantity": "1"

],

"segments": [

"origin": "ANF",

"destination": "SCL"
},

MS Inventory - Flight Services Shop


Description

Al ingresar al MS Inventorty Flight Services Shop - Debe devolver la disponibilidad de ancillaries


para un segmento

URL: https://ms-inventory-stage.herokuapp.com/inventory/services/shop

Payload:

"currency": "CLP",

"channel": "EXT_WEB",

"segments": [
{

"LFID": "319029",

"origin": "SCL",

"destination": "PMC",

"departureDate": "2021-03-01"

}
MS Inventory - Flight Services Shop - SeatAvailability
Description

Al ingresar MS Inventory - Flight Services Shop - SeatAvailability Disponibilidad de asientos PSS

URL:

https://ms-inventory-stage.herokuapp.com/inventory/seats/pss?
currency=CLP&LFID=310803&departureDate=2021-01-07

currency:CLP

//currency:USD

LFID:310803

departureDate:2021-01-07
MS Inventory -FlightSchedule
Permitir al momento de ingresar al MS Inventory - FlightSchedule debe devolver el
itinerario de vuelo

 Método: POST

Payload:

{
    "initialDate": "2020-08-13",
    "endDate": "2020-09-30",
    "includeCancelled": "false",
    "route": {
        "origin": "LIM",
       "destination": "TRU"
   }
}

URL: https://ms-inventory-stage.herokuapp.com/inventory/flights/retrieve
MS Inventory – GetAirportList
Al ingresar MS Inventory - GetAirportList debe Entregar listado de aeropuertos
URL
https://ms-inventory-stage.herokuapp.com/inventory/airports

Headers:
homemarket:CL
x-api-key:5A0532AC51154CB1843A33C493D63CC9
Authorization:E214506C70FD4B53B4CC97178F9F91D
MS Inventory - faresBySegment- /inventory/fares
Ingresar al MS Inventory - FaresBySegment - Validar que entrega todas las tarifas
disponibles para un segmento
URL: POST https://ms-inventory-stage.herokuapp.com/inventory/fares/shop/by-fareclass

{
"currency": "CLP",
"promoCode": "",
"segments": [
{
"LFID": "288204",
"origin": "SCL",
"destination": "ARI",
"departureDate": "2021-01-28"
}
],
"passengerCount": [
{
"ptc": "ADT",
"quantity": "1"
}
]
}
Microservicio de Booking

Aplicaci endpoint Descripci Controller


on ón
Booking /booking Busca getBooking
MS Reserva
(GET)
Booking /booking Crea CreateBooking
MS reserva
Booking /booking/segments/ Agrega AddServices
MS passengers/services servicios
a un
segment
o
pasajero
Booking /booking/segments Reemisió ModifySegment
MS n de
segment
o
Booking /booking/segments/ Asignació SeatAssignment
MS passengers/seats n de
asiento
Booking /booking/by-dni Devuelve GetBookingByDNI
MS reservas
asociada
s a un
DNI
Booking /booking/contact Actualiza UpdateContactsInfo
MS datos de
contacto
en
reserva
Booking /booking/segments/passengers Actualiza UpdatePassengers
MS datos de
pasajero
Booking /booking/timelimit Actualiza UpdateTimeLimit
MS tiempo
límite de
pago de
una
reserva
Booking /booking/contact/emergency Crea EmergencyContact
MS contacto
de
emergen
cia
Booking /booking/segments/ Asigna CheckIn
MS passengers/checkin checkin
Booking /booking/segments/seats Remueve RemoveSeatAssignment
MS asiento
Booking /bookings/segments/ Actualiza SetApisInformation
MS passengers/apis informaci
ón pax
APIS
Booking /booking/cancel Cancela CancelReservation
MS reserva
Booking /booking/segments/ Descheck PassengerCheckout
MS passengers/checkout ea
pasajero
segment
o
Booking /booking/charges Sobrescri OverrideChargesController
MS be el
costo de
un cargo
sin pagos
anteriore
s
Booking /booking/cancel/total Cancela CancelReservationOverridesC
MS un PNR y ontroller
netea
PNLT a 0
MS Booking - GET Rerserva
Ingresar /booking buscar una reserva

Params:

debe agregar los parametros los cuales son los siguientes:

sync:true
pnr:IZCVVB

Método:

GET

URL:

https://ms-booking-stage.herokuapp.com/booking/?sync=true&pnr=OGHBQC
MS Booking - /booking/timelimit updateTimeLimit
Al ingresar MS Booking - /booking/timelimit updateTimeLimit debe Actualizar tiempo
límite de pago de una reserva

Ruta: https://booking-ms-qa.skyairline.com/booking/timelimit

Metodo: Post

Payload:

{
"pnr": "GCWXCC",
"newTimeLimit": "2020-12-08T03:43:04"
}
MS Booking -/booking/segments/seats -RemoveSeatAssignment

Al ingresar al MS Booking/segments/seat se pueda eliminar los asientos

DELETE: https://ms-booking-stage.herokuapp.com//booking/segments/seats

Payload:

{
"pnr": "HDEASC",
"segments": [
{
"LFID": 288218,
"origin": "SCL",
"destination": "LIM",
"departureDate": "2020-12-31",
"passengers": [
{
"passengerId": 40831377,
"seats": [
{
"PFID": 281011,
"seat": "A",
"row": "1x"
}
]
},
{
"passengerId": 40831378,
"seats": [
{
"PFID": 281011,
"seat": "A",
"row": 2
}
]
},
{
"passengerId": 40831379,
"seats": [
{
"PFID": 281011,
"seat": "A",
"row": 3
}
]
},
{
"passengerId": 40831376,
"seats": [
{
"PFID": 281011,
"seat": "A",
"row": 4
}
]
}
]
}
]
}
MS Booking - /bookings/segments/passengers/apis update pax api

Al ingresar MS Booking - /bookings/segments/passengers/apis update pax api debe poder


Actualiza información pax APIS

URL:

POST https://ms-booking-stage.herokuapp.com/booking/segments/passengers/apis

{
"pnr": "PBDCCCD",
"passengers": [
{
"passengerId": "37260779",
"firstName": "YZAMNY",
"lastName": "ZAMALLOA SANCHEZ",
"dateOfBirth": "1991-09-03",
"age": "29",
"dni": "70707070",
"dniType": "DNI",
"phone": "+5699999999",
"phoneCode": "56",
"country": "CL",
"email": "mail@mail.com",
"gender": "FEMALE"
}
]
}

MS Booking – CreateBooking

ingresar al CreateBooking pueda crear una reserva

Método: POST

URL: https://ms-booking-stage.herokuapp.com/booking

Payload:

{
"promoCode": "",
"currency": "USD",
"segments": [
{
"segmentId": 1,
"LFID": "289081",
"origin": "SCL",
"destination": "ANF",
"flightNumber": "270",
"departureDate": "2021-01-15",
"farebasis": "AZERO",
"fareAmount": "35"
}
],
"passengers": [
{
"passengerId": "123",
"firstName": "Oscar",
"lastName": "Urdaniga",
"dateOfBirth": "1994-03-14",
"dni": "12345678",
"gender": "Male",
"country": "PE",
"citizenship": "we",
"phone": "34343",
"email": "oscar.urdaniga@gmail.com",
"ptc": "ADT",
"seats": [
{
"segmentId": 1,
"PFID": "286758",
"seat": "A",
"rowNumber": "9"
}
],
"services": [
{
"segmentId": 1,
"ssrCode": "1BAG",
"amount": "12"
}
]
},
{
"passengerId": "12345",
"firstName": "Oscar",
"lastName": "Urdaniga",
"dateOfBirth": "1994-03-14",
"dni": "12345678",
"gender": "Male",
"country": "PE",
"citizenship": "we",
"phone": "34343",
"email": "oscar.urdaniga@gmail.com",
"ptc": "ADT",
"seats": [
{
"segmentId": 1,
"PFID": "286758",
"seat": "A",
"rowNumber": "9"
}
],
"services": [
{
"segmentId": 1,
"ssrCode": "1BAG",
"amount": "12"
}
]
},
{
"passengerId": "1234",
"firstName": "Oscar",
"lastName": "Urdaniga",
"dateOfBirth": "2020-03-14",
"dni": "12345678",
"gender": "Male",
"country": "PE",
"citizenship": "we",
"phone": "34343",
"email": "oscar.urdaniga@gmail.com",
"ptc": "INF",
"seats": [
{
"segmentId": 1,
"PFID": "286758",
"seat": "A",
"rowNumber": "9"
}
],
"services": [
{
"segmentId": 1,
"ssrCode": "1BAG",
"amount": "12"
}
]
},
{
"passengerId": "1235",
"firstName": "Oscar",
"lastName": "Urdaniga",
"dateOfBirth": "2010-03-14",
"dni": "12345678",
"gender": "Male",
"country": "PE",
"citizenship": "we",
"phone": "34343",
"email": "oscar.urdaniga@gmail.com",
"ptc": "CHD",
"seats": [
{
"segmentId": 1,
"PFID": "286758",
"seat": "A",
"rowNumber": "9"
}
],
"services": [
{
"segmentId": 1,
"ssrCode": "1BAG",
"amount": "12"
}
]
}
]
}
MS Booking - Add Services

Al ingresar MS Add Services agregar servicios

URL:
https://ms-booking-stage.herokuapp.com/booking/segments/passengers/services

Método: POST
Payload:

{
"pnr": "DACHQP",
"currency": "USD",
"segments": [
{
"LFID": "289081",
"departureDate": "2021-01-15",
"passengers": [
{
"passengerId": "40883868",
"services": [
{
"ssrCode": "1BAG",
"amount": 4
},
{
"ssrCode": "SEAT",
"amount": 7
},
{
"ssrCode": "CRRY",
"amount": 5
},
{
"ssrCode": "1SCH",
"amount": 5
}
]
},
{
"passengerId": "40883869",
"services": [
{
"ssrCode": "1BAG",
"amount": 4
},
{
"ssrCode": "SEAT",
"amount": 7
},
{
"ssrCode": "CRRY",
"amount": 5
},
{
"ssrCode": "1SCH",
"amount": 5
}
]
},
{
"passengerId": "40883870",
"services": [
{
"ssrCode": "1BAG",
"amount": 4
},
{
"ssrCode": "SEAT",
"amount": 7
},
{
"ssrCode": "CRRY",
"amount": 5
},
{
"ssrCode": "1SCH",
"amount": 5
}
]
},
{
"passengerId": "40883867",
"services": [
{
"ssrCode": "1BAG",
"amount": 4
},
{
"ssrCode": "SEAT",
"amount": 7
},
{
"ssrCode": "CRRY",
"amount": 5
},
{
"ssrCode": "1SCH",
"amount": 5
}
]
}
]
}
]
}
MS Booking – ModifySegment

Permitir al momento de ingresar al MS ModifySegment modificar segmentos


Método: GET
RUTA: https://ms-booking-stage.herokuapp.com/booking/segments
Payload:

{
"pnr": "OGHBQ",
"currency": "CLP",
"promoCode": "",
"bookingAgent": "EXT_WEB",
"modifyDetails": [
{
"oldSegment": {
"LFID": "290105",
"origin": "SCL X",
"destination": "LIM X",
"departureDate": "2021-02-01",
"flightNumber": "802"
},
"newSegment": {
"LFID": "319029",
"origin": "SCL",
"destination": "PMC",
"departureDate": "2021-03-01",
"flightNumber": "401",
"farebasis": "NZERO",
"fareAmount": "14990"
},
"passengers": [
{
"passengerId": "40883734",
"ptc": "ADT",
"services": [
{
"serviceCode": "1BAG",
"serviceAmount": 10.48
}
],
"penalties": []
},
{
"passengerId": "40883733",
"ptc": "ADT",
"services": [
{
"serviceCode": "1SCH",
"serviceAmount": 10.48
},
{
"serviceCode": "1BAG",
"serviceAmount": 10.48
}
],
"penalties": []
},
{
"passengerId": "40883732",
"ptc": "ADT",
"services": [
{
"serviceCode": "1BAG",
"serviceAmount": 10000
},
{
"serviceCode": "CRRY",
"serviceAmount": 8000
}
],
"penalties": []
},
{
"passengerId": "40883731",
"ptc": "ADT",
"services": [
{
"serviceCode": "1BAG",
"serviceAmount": 15000
}
],
"penalties": []
}
]
}
]
}

MS Booking - Seat Assignment


Al ingresar MS SEAT Assignment agregar asientos a los PAX( pasajeros).

URL: https://ms-booking-stage.herokuapp.com/booking/segments/passengers/seats

payload:

{
"pnr": "WCYKVO",
"segments": [
{
"LFID": "272885",
"flightNumber": "163",
"departureDate": "2020-12-05",
"passengers": [
{
"ptc": "ADT",
"passengerId": "40853186",
"seats": [
{
"PFID": "265606",
"seat": "A",
"row": 1
}
]
}
]
}
]
}
MS Booking - By DNI

Al ingresar a MS /booking/by-dni debe devolver reservas asociado a un DNI


URL: https://ms-booking-stage.herokuapp.com/booking/by-dni/?
dni=445225479&sync=false
Params:
dni:445225479
sync:false
MS Booking - Update Contact
Al Ingresar MS Booking - Update Contact, debe actualizar datos de contacto en reserva

URL: https://ms-booking-stage.herokuapp.com/booking/contact

Metodo: PUT

Payload:

{
"pnr": "XRCWGR",
"passengers": [
{
"passengerId": 40796592,
"firstName": "JUAN",
"lastName": "PEREZ",
"dateOfBirth": "1991-09-03",
"age": "29",
"dni": "123456",
"dniType": "DNI",
"phone": "+5699999999",
"phoneCode": "56",
"country": "CL",
"email": "el.juan@juan.com",
"gender": "Male"
}
]
}
MS Booking update passengers
Permitir al momento de ingresar la servicio de updatepassengers pueda actualizar los
datos de los pasajeros.

URL https://ms-booking-stage.herokuapp.com/booking/segments/passengers

Payload:

{
"pnr": "USARHK",
"passengers": [
{
"passengerId": 40802909,
"firstName": "Claudio",
"lastName": "Test",
"dateOfBirth": "1991-09-03",
"age": "29",
"dni": "123456",
"dniType": "DNI",
"phone": "+5699999999",
"phoneCode": "56",
"country": "PE",
"email": "el.juan@juan.com",
"gender": "Male"
}
]
}
MS Booking - asignar checkin
Permitir al momento de ingresar al MS booking - checkin, debe poder realizar checkin a los
pasajeros de la reserva
Metodo: POST
URL: https://ms-booking-stage.herokuapp.com/booking/segments/passengers/checkin
Payload:
{
"pnr": "WCYKVO",
"segments": [
{
"LFID": "272885",
"origin": "SCL",
"destination": "CCP",
"departureDate": "2020-12-05",
"passengers": [
{
"passengerId": "40853186"
}
]
}
]
}

MS Booking - Cancel Reservation


Permitir cancelar una reserva en el MS Booking - Cancel
Método: POST
URL:
https://ms-booking-stage.herokuapp.com/booking/cancel

Payload:

{
"pnr": "WTNMDV"
}

MS Booking - Passenger Checkout

Permitir realizar un descheckea pasajero segmento en el MS Booking - Passenger


Checkout

Metodo: POST

URL: https://ms-booking-stage.herokuapp.com/booking/segments/passengers/checkout

Payload:

{
"pnr": "NUPHKQ",
"segments": [
{
"LFID": 272915,
"origin": "SCL",
"destination": "LIM",
"departureDate": "2020-12-05",
"passengers": [
{
"passengerId": "40853157"
},
{
"passengerId": "40853158"
}
]
}
]
}
MS Booking /booking/charges OverrideCharges

MS Booking OverrrideCharges Sobrescribe el costo de un cargo sin pagos anteriores para 1


o varios segments.
AL momento de ingresar MS Override charges, debe permitir editar los valores de los
cargos, para corregir incidencias en los montos ingresados.

URL: PUT Booking/charges

Payload:

{ "pnr":"ABCDEF", "currency":"CLP", "charges":[ { "chargeId":"", "originalAmount":"",


"overrideAmount":"", "overrideReason":"" } ] }
MS Booking Cancel Reservation Overrides -> /booking/cancel/total
Permitir al momento de ingresar Cancel PNR, debe poder realizar una devolución total
considerando que el servicio debe ser capaz de dejar los cargos a las penalidades en 0
URL:
https://ms-booking-stage.herokuapp.com/booking/cancel/total

PAYLOAD:
{
"pnr": "CAVJYT"
}
Microservicio Fulfillment MS

Aplicacio endpoint Descripci Controller


n ón
Fulfillme /fulfillment/pss/payment Salda RegisterPSSPayment
nt MS balance
de
reserva
[Registra
un pago]
Fulfillme /fulfillment/voucher/retrieve Devuelv RetrieveVoucher
nt MS e
voucher

Fulfillment MS – RetrieveVoucher
Permitir al momento de ingresar Fulfillment MS - RetrieveVoucher debe devolver un
voucher
Método: POST
Payload:

{
"voucherNumbers": [
"SDXXWV",
"NLBZGN",
"SDXXWV"

]
}
URL: https://ms-fulfillment-stage.herokuapp.com/fulfillment/voucher/retrieve

Fulfillment MS – RegisterPSSPayment
Permitir al momento de ingresar Fulfillment MS - RegisterPSSPayment debe mostrar Salda
balance de reserva [Registra un pago]

Payload:

{
"seriesNumber": 299,
"pnr": "DACHQP",
"voucher": "",
"paymentDetails": [
{
"payment": {
"baseAmount": "162.84",
"baseCurrency": "USD",
"cardHolder": "Il rorro",
"cardNumber": "4051885600446623",
"currency": "CLP",
"cvc": "123",
"method": "VISA",
"datePaid": "2021-10-21",
"exchangeRate": "1",
"exchangeRateDate": "2021-10-21",
"amount": "162.84",
"transactionId": "123456",
"reference": "web-CL-VISA-MMB",
"iataNumber": "456456",
"authorizationCode": "XXX445645",
"userId": "33"
},
"payor": {
"firstName": "MARIA",
"lastName": "ROZAS",
"dateOfBirth": "1995-09-06",
"gender": "Female",
"companyName":"jotaadev"
}
}
]
}
URL:

https://ms-fulfillment-stage.herokuapp.com/fulfillment/pss/payment
Microservicio Pricing

Aplicació Endpoint Descripción Controller


n
Pricing /pricing/fares/adjust Ajusta tarifa AdjustFaresShop
MS desde
ConnectPoin
t
Pricing /pricing/currencies/conversión Conversión Currencies
MS de moneda
por tipo de
cambio
Pricing /pricing/fares/Dynamic Devuelve DynamicFares
MS tarifas desde
SeatMax
Pricing /pricing/services/Dynamic Devuelve DynamicServices
MS Ancillaries
desde
SeatMax

Ambientes:
 PROD https://pricing-ms.skyairline.com
 STAGE https://pricing-ms-stage.skyairline.com
 DEV https://pricing-ms-qa.skyairline.com

Repositorio:
GITLAB https://gitlab.com/sky_airline/integraciones/microservicio/pricing_ms

Servicios:

 Convertir divisas, dentro de un conjunto permitido.


POST /pricing/currencies/conversion

 Ajustar valor de tarifa áerea asociada a un segmento-pasajero.


POST /pricing/fares/adjust
 Obtener precio dinámico de tarifas áereas, congifuradas en SEATMAX, para un
segmento específico.
POST /pricing/fares/dynamic

 Obtener precio dinámico de servicios, congifurados en SEATMAX, para un segmento


específico.
POST /pricing/services/dynamic

 Obtener costo simulado de reemisión de segmento.


POST /pricing/rebooking/simulate

PRICING MS- currencies/conversion


Permitir al momento de ingresar MS PRICING - currencies/conversion debe Conversión de
moneda por tipo de cambio.

URL: https://ms-pricing-stage.herokuapp.com/pricing/currencies/conversion

Método: Post

Payload:

{
"amount": 1000,
"fromCurrency": "CLP",
"toCurrency": "USD"
}
Pricing MS - adjust fares shop
AL Ingresar Pricing MS ADdjust Fares shop, validar cuando no existan segmentos en la
búsqueda, muestre una validación.

https://pricing-ms-qa.skyairline.com/pricing/fares/adjust

Payload:

{
"currency": "CLP",
"adjustmentDetails": [
{
"LFID": 255080,
"origin": "SCL",
"destination": "CJf",
"departureDate": "2020-09-3s",
"ptc": "ADT",
"fareId": 1,
"farebasis": "AZERO",
"newAmount": 7003
}

]
}
Dynamic Fares
Al ingresar Princing MS - para los servicios para services/dynamic - fares/dynamic debe
estar timeout que va hacia seatMax

URL: https://ms-pricing-stage.herokuapp.com/pricing/fares/dynamic

Payload:
{
"stage": "INITIAL_SALE",
"flightNumber": "401",
"origin": "SCL",
"destination": "CSS",
"departureDate": "2021-01-02",
"aircraftType": "320 201",
"currency": "CLP",
"fareClass": "Q"
}

Dynamic services seatMax

Permitir al momento de ingresar al Dynamic services seatMax debe mostrar el precio de


los servicios disponibles
URL:https://ms-pricing-stage.herokuapp.com/pricing/services/dynamic

Payload:

{
"stage": "INITIAL_SALE",
"flightNumber": "304",
"origin": "SCL",
"destination": "ARI",
"departureDate": "2020-09-02",
"aircraftType": "320 201",
"currency": "CLP",
"fareClass": "S"
}
Rebooking Simulate

 Obtener costo simulado de reemisión de segmento.


POST /pricing/rebooking/simulate

Permitir al momento de realizar una simulación de reeemision para los segmentos boteados en
Princing MS

Pre-condiciones:

 Tener una reserva con vuelo


 revisar en la simulación de rebooking
 hacer una comparación cambio de segmento
 la reserva debe estar pagada antes de realizar un cambio de vuelo.

POST: https://pricing-ms-qa.skyairline.com/pricing/rebooking/simulate

Payload:

    "pnr": "FUGYDK",

    "currency": "USD",

    "promoCode": "",

    "bookingAgent": "EXT_WEB",

    "changeCost": 1,

    "modifyDetails": [

        {

            "oldSegment": {

                "LFID": 322480,

                "origin": "SCL",

                "destination": "PNT",

                "departureDate": "2021-03-25",

                "flightNumber": "421"

            },

1
6            "newSegment": {

17                "LFID": 322486,

18                "origin": "SCL",

19                "destination": "PNT",

20                "departureDate": "2021-03-26",

21                "flightNumber": 421,

22                "farebasis": "MZERO",

23                "fareAmount": 61

24            },

25            "passengers": [

26                {

27                    "passengerId": 40926354,

28                    "ptc": "ADT",

29                    "services": [

30                        {

31                            "segmentId": 1,

32                            "serviceCode": "INSU",

33                            "serviceAmount": 3

34                        },

35                        {

36                            "segmentId": 1,

37                            "serviceCode": "1BAG",

38                            "serviceAmount": 4

39                        }

40                    ],

41                    "penalties": [],

42                    "taxes": []

43                }

44                

45            ]

46        }

47    ]
48}
Inventory BL

Ambientes:

 PROD https://inventory-bl.skyairline.com/
 STAGE https://inventory-bl-stage.skyairline.com/
 DEV https://inventory-bl-qa.skyairline.com/

Repositorio:
 GITLAB https://gitlab.com/sky_airline/integraciones/microservicio/inventory_bl

Inventory BL – By agent
Obtener listado de rutas aéreas en operación.
GET /inventory/routes/by-agent

https://inventory-bl-qa.skyairline.com/inventory/routes/by-agent
Inventory BL- Seats availability PSS
Obtener la disponibilidad de asientos para un segmento en específico.
GET /inventory/seats

URL: https://bl-inventory-stage.herokuapp.com/inventory/seats?LFID=272885&departureDate=2026-12-
05&origin=SCL&destination=LIM&flightNumber=163&currency=CLP

Params:
LFID:272885

departureDate:2026-12-05

origin:SCL

destination:LIM

flightNumber:163

currency:CLP

Headers:
x-api-key:5574CF407AA2433B9D5F77491D8B9340

Authorization:BB2E118B0B804C06B7DC5F4AA515E3E4

homeMarket:CL
BOOKING BL

Booking BL - by Lastname:
 GET /booking/by-lastname
 
Microservicio que nos permite buscar un PNR con validación de pasajeros, en donde uno
de los parámetros debe ser el apellido de alguno de los pax dentro de la reserva; Además,
contiene lógicas de negocio para cálculo de flags para MMB y WCI.

URL: https://bl-booking-ms-qa.skyairline.com/booking/by-lastname?pnr=CAVJYT&lastName=Test&sync=true

Params:

pnr:CAVJYT
lastName:Test
sync:true

Booking BL – Checkin and seat

POST /booking/segments/checkin

Microservicio con lógica de negocio que nos permite realizar el checkin con asignación de
asiento aleatorio sino tiene un asiento asignado.

URL: https://booking-bl-qa.skyairline.com/booking/segments/checkin

Payload:
{
    "pnr": "LZKOLB",
    "segments": [
        {
            "LFID": "299821",
            "origin": "SCL",
            "destination": "LIM",
            "departureDate": "2021-03-30",
            "passengers": [
                {
                    "passengerId": "40929203"
                },
                 {
                    "passengerId": "40929201"
                },
                {
                    "passengerId": "40929202"
                }

                
            ]
        }
    ]
}
Booking BL – Rebooking Availability Check

POST /booking/segment/rebooking-availability-check
 
Microservicio que nos permite validar si una intención de cambio de segmento
tiene disponibilidad de inventario respecto de los servicios y tarifa asociados a una
reserva anterior.

Payload:
{
    "pnr": "KAZFQL",
    "oldSegment": {
        "LFID": "291087",
        "origin": "SCL",
        "destination": "ANF",
        "departureDate": "2021-02-18",
        "flightNumber": "0280"
    },
    "newSegment": {
        "LFID": "291133",
        "origin": "SCL",
        "destination": "LSC",
        "departureDate": "2021-02-19",
        "flightNumber": "0204"
    }
}

Booking BL – Refund

 POST /booking/refund
 

Microservicio que nos permite persistir los datos bancarios de los clientes que
solicitan devolución; Además, cancela la reserva.

URL: https://bl-booking-stage.herokuapp.com/booking/refund

Payload:
{
    "pnr": "DYUPXZ",
    "requestor": {
        "payorName": "Luis Valenzuela",
        "documentType": "DNI",
        "documentNumber": "12345687890",
        "accountType": "Cuenta Corriente",
        "accountNumber": 10110111927,
        "bankCode": "012",
        "cciCode": 12345678987654654000,
        "currency": "CLP",
        "email": "luis.valenzuela@yourmail.com"
    }
}

BOOKING BL- GET REFUND

 GET /booking/refund

Microservicio que nos permite extraer las devoluciones procesadas en cierto día
desde el servicio /booking/refund.

URL: https://bl-booking-stage.herokuapp.com/booking/refund?date=20201-04-21
Booking BL - Insurance
 POST /booking/insurance Orquestación no completada debido a falta de
Insurance MS

Microservicio en construcción, debiese ser gatillado desde la subscripción a un


evento de fulfillmentCompleted para la validación de polizas de seguro emitidas
dentro de la reserva.

URL: https://booking-bl-qa.skyairline.com/booking/insurance

Payload:

{
    "pnr": "PBINSH"
}
Princing BL
Ambientes:
 PROD https://pricing-bl.skyairline.com
 STAGE https://pricing-bl-stage.skyairline.com
 DEV https://pricing-bl-qa.skyairline.com

Repositorio:

GITLAB https://gitlab.com/sky_airline/integraciones/microservicio/pricing_bl

Pricing BL – Pricing fares


Obtener tarifas y bundles disponibles para un arreglo de segmentos.
POST /pricing/fares

URL: https://bl-pricing-stage.herokuapp.com/pricing/fares

Payload:

{
    "stage": "INITIAL_SALE",
    "currency": "CLP",
    "promoCode": "",
    "segments": [
        {
            "LFID": 291087,
            "origin": "SCL",
            "destination": "ANF",
            "departureDate": "2021-02-18",
            "fareClass": "Q"
        }
    ],
    "passengerCount": [
        {
            "ptc": "ADT",
            "quantity": "1"
        }
    ]
}

Pricing BL – Pricing services


 Obtener listado de precios asociados a SSRs para un arreglo de segmentos.
POST /pricing/services

URL: https://pricing-bl-qa.skyairline.com/pricing/services

Payload:

{
    "stage": "INITIAL_SALE",
    "channel": "EXT_WEB",
    "currency": "CLP",
    "segments": [
        {
            "segmentId": "1",
            "LFID": 301645,
            "origin": "SCL",
            "destination": "LIM",
            "departureDate": "2021-04-30",
            "flightNumber": 800,
            "fareBasis": "MZERO",
            "fareAmount": 82
        }
    ]
}
Pricing BL – Segment rebooking cost
 Obtener costo simulado de reemisión de segmento.
POST /pricing/segment/rebooking

URL: https://pricing-bl-qa.skyairline.com/pricing/segment/rebooking

Payload:

{
    "pnr": "KAZFQL",
    "stage": "MMB",
    "oldSegment": {
        "LFID": 322480,
        "origin": "SCL",
        "destination": "PNT",
        "departureDate": "2021-03-25",
        "flightNumber": "421"
    },
    "newSegment": {
        "LFID": 322486,
        "origin": "SCL",
        "destination": "PNT",
        "departureDate": "2021-03-26",
        "flightNumber": 421,
        "farebasis": "SZERO",
        "fareAmount": "144990"
    }
}
Fulfillment Events Rabbit
Al ingresar en RabbitMQ Fulfillment BL- paymentApproved se puede realizar pagos
mixtos, voucher, cash, crédito.

Pre-condiciones:

 Tener una reserva


 Revisar en pago para USD, CLP
 Acceso Rabbit MQ
 Acceso MongoDB
 Acceso Radixx 

Paso a paso MMB:

1. tener una reserva sin balance


2. realizar un find PNR
3. asignación de asiento
4. add services transsaction
5. Inyectar paymnentAproved ( reference: MMB)
6. .Revisar fulfillment completed.
7. Revisar la asignación de asiento.

Pasos para WCI

1. tener una reserva sin balance


2. realizar un find pnr
3. add servicii transsaction
4. checkin request
5. Inyectar paymnentAproved ( reference: WCI)
6. Revisar fulfillment completed.
7. Revisar cambio de estado del segmento

Payload:

{
"messageId":"$ConfiguMQrequestTestWCI005",
"publisher":"WALLET",
"event":"paymentApproved",
"published":"2021-03-23T18:59:54.371Z",
"data":{
"headers":{
"homemarket":"CL",
"business":"Retail"
},
"body":{
"pnr":"WANIIC",
"voucher":"",
"seriesNumber":299,
"paymentDetails":[
{
"baseAmount":15980,
"baseCurrency":"CLP",
"currency":"CLP",
"method":"CASH",
"cvc":"",
"cardHolder":"",
"cardNumber":"",
"exchangeRate":"1",
"exchangeRateDate":"2021-03-23",
"amount":15980,
"transactionId":"ert345345ertretrtConf005",
"reference":"WEB-CL-CASH-WCI",
"iataNumber":"",
"authorizationCode":"44c6b6d445dbd6e2"

}
],
"payor":{
"id":"40924753",
"firstName":"ROSA",
"lastName":"Test001Confi0005",
"dateOfBirth":"1991-04-07",
"gender":"Male",
"country":"Alemania",
"codeType":"CUIT",
"code":"32233",
"branchOfficeId":"x",
"businessId":"x",
"payorId":"x"
}
}
}
}
Rabbit MQ:

Exchan fulfillment-fulfillmentCompleted
ge

Routin Retail
g Key
Redeli ○
vered

Proper delivery_mode:2headers:
ties

Payloa 1{"messageId":"$2b$10$jZ27yIfqrnNJ8PcJT5immO5IsZm
d1015 e1nRqUjqRBXk01kdxeVrH20FEa"
,"publisher":"MS-
bytesEncodi FULFILLMENT","event":"fulfillmentCompleted",
ng: string "published":"2021-03-31T16:43:17.470Z",
"data":{"code":0,"message":"Successful
operation"
,"seriesNumber":299,"pnr":"XVLPIW",
"balance":0.02,"currency":"USD","paymentDetails"
:[
{"paymentId":"24156205","amount":389010,
"method":"CASH","authorizationCode":"44c6b6d445d
bd6e2",
"baseAmount":465.88,"baseCurrency":"USD","curren
cy":
"ARS","cvc":"","cardHolder":"-","cardNumber":0,
"datePaid":"2021-03-
31T16:43:16","exchangeRate":835
,"exchangeRateDate":"2021-03-
31T00:00:00","transactionId":
"ert345345testing0017rosa017","reference":"WEB-
AR-CASH-IS",
"iataNumber":"","userId":"123123123"}],"payor":
{"id":"40924753"
,"firstName":"ROSA","lastName":"Test017rose10017
","dateOfBirth"
:"1991-04-
07","gender":"Male","country":"Alemania","codeTy
pe":"CUIT","code
":"32233","branchOfficeId":"x","businessId":"x",
"payorId":"x"}}
,"metadata":
{"originMessageId":"$testing00017rosangela0017",
"business":"Retail"}}

Mongo DB:

También podría gustarte