# Service baru span

![LLD https://drive.google.com/file/d/1f5cD50FPyEsGLyQkgrI036Uenr9uPxdt/view?usp=drivesdk](service-baru-span.drawio.png)

## Overview

Perubahan meliputi:
- porting span-gateway, span-user-api, dan span-token-api dari jar-based deployment ke WebLogic 12C
- membebaskan BIGEBBRIDGE dari SoapUI
- memecah fungsi sign dan verify dari BIGEBBRIDGE dan integrasi.js menjadi proyek baru skdramd4j
- porting soa_ftp dari Node ke WebLogic

yg artinya sunsetting:
- 2 NodeJS (integrasi.js dan SOA_FTP)
- 4 jar-based deployment (span-gateway, span-user-api, span-token-api, dan BIGEBBRIDGE)

menjadi:
- 6 deployment WebLogic (<!--
-->[skramd4j](http://10.216.99.57:3000/SPAN-Enhancement/soa_security), <!--
-->[soa_ftp](http://10.216.99.57:3000/SPAN-Enhancement/soa_ftp), <!--
-->[span-gateway](https://repo.radiusdata.id/SpanPhase2/span-gateway), <!--
-->[span-user-api](https://repo.radiusdata.id/azka/span-user-api), <!--
-->[span-token-api](https://repo.radiusdata.id/azka/span-token-api), <!--
-->[BIGEBBRIDGE](http://10.216.99.57:3000/SPAN-Enhancement/BIGEBBRIDGE))

> [!note]
> Link repo diatas

## TOC
- [Overview](#overview)
- [TOC](#toc)
- [Repositories](#repositories)
  * [span-gateway, span-user-api, span-token-api](#span-gateway-span-user-api-span-token-api)
  * [skramd4j](#skramd4j)
  * [BIGEBBRIDGE](#bigebbridge)
  * [soa_ftp](#soa_ftp)
- [API endpoints and context roots](#api-endpoints-and-context-roots)
  * [span-gateway](#span-gateway)
    + [`POST` /auth/login](#post-authlogin)
    + [`POST` /api/**](#post-api)
    + [`POST` /users/**](#post-users)
  * [skramd4j](#skramd4j-1)
    + [`POST` /api/v2/sign](#post-apiv2sign)
    + [`POST` /api/v2/verify](#post-apiv2verify)
  * [BIGEBBRIDGE](#bigebbridge-1)
    + [`POST` /bankStatementBI](#post-bankstatementbi)
    + [`POST` /dailyRateBI](#post-dailyratebi)
    + [`POST` /fundTransferBI](#post-fundtransferbi)
    + [`POST` /overbookingBI](#post-overbookingbi)
    + [`POST` /transactionStatusBI](#post-transactionstatusbi)
  * [soa_ftp](#soa_ftp-1)
    + [`POST` /api/list](#post-apilist)
    + [`POST` /api/upload](#post-apiupload)
    + [`POST` /api/download](#post-apidownload)
    + [`POST` /api/move](#post-apimove)
    + [`POST` /api/delete](#post-apidelete)
    + [`POST` /api/generateJar](#post-apigeneratejar)
    + [`POST` /api/unzip](#post-apiunzip)
- [Deployment guide](#deployment-guide)
  * [Dependencies summary](#dependencies-summary)
  * [Dependencies matrix](#dependencies-matrix)

## Repositories

### span-gateway, span-user-api, span-token-api

Trio ini berfungsi sebagai garda depan dalam menangani koneksi masuk dari user. Gateway berfungsi memverifikasi kredensial user sebelum dapat melanjutkan panggilan API ke dalam sistem. Beberapa jalur endpoint tersedia:

- `/auth/login`: untuk login dan ambil dynamic token
- `/api/**`: untuk memanggil API ke dalam span dengan dynamic token yg masih aktif. JWT claim dan HTTP header `token` juga akan disisipi static token apabila user yg dipakai memiliki static token terdaftar.
- `/users/**`: untuk listing user, lihat detail user, edit user, dan delete user

### skramd4j

skramd4j, atau yg dikenal juga dengan soa_security adalah penyedia layanan verify dan sign. Dulunya tugas ini ditawarkan oleh BIGEBBRIDGE dan integrasi.js dengan bantuan SoapUI. skramd4j selaku service baru implement fungsi sign secara mandiri juga verify dengan acuan truststore yg tersimpan di sistem. Adapun proses verifikasi dan mapping respon error sebagai berikut

![](skramd4j%20verification%20process.excalidraw.png)

### BIGEBBRIDGE

BIGEBBRIDGE adalah tempat persiapan request sebelum dikirimkan ke BI. Layanan ada 5: `BankStatement`, `DailyRate`, `FundTransfer`, `Overbooking`, dan `TransactionStatus`. Dulunya juga menyediakan layanan sign dan verify namun sekarang fungsi tersebut sudah dipisah menjadi proyek baru skramd4j.

### soa_ftp

soa_ftp digunakan untuk download, upload, move, delete, read jar (unzip), dan jar xml (generatejar)

## API endpoints and context roots

### span-gateway
context root: `/`

#### `POST` /auth/login
Request json:
- username
- password

#### `POST` /api/**
forwarding to OSB

#### `POST` /users/**
forwarding to span-user-api

> [!INFO]
> span-token-api dan span-user-api hanya digunakan oleh span-gateway, tdk punya API untuk dipanggil user

### skramd4j
context root: `skramd4j`

#### `POST` /api/v2/sign
Request xml: the whole soap message to sign

#### `POST` /api/v2/verify
Request xml: the whole soap message to verify

### BIGEBBRIDGE
context root: `/BIGEBBRIDGENEW`

#### `POST` /bankStatementBI
Request json:
- AccountNo
- StatementDate

#### `POST` /dailyRateBI
Request json:
- dailyRateDate

#### `POST` /fundTransferBI
Request xml: the whole soap message to sign

#### `POST` /overbookingBI
Request xml: the whole soap message to sign

#### `POST` /transactionStatusBI
Request json:
- WarkatNo

### soa_ftp
context root: /sftp-app

#### `POST` /api/list
Request json:
- directory

#### `POST` /api/upload
Request json:
- localFile
- remoteFile

#### `POST` /api/download
Request json:
- localFile
- remoteFile

#### `POST` /api/move
Request json:
- sourceFile
- destinationFile

#### `POST` /api/delete
Request json:
- filePath

#### `POST` /api/generateJar
Request json:
- xmlFilePath

#### `POST` /api/unzip
Request json:
- jarFilePath

## Deployment guide

### Dependencies summary
Database dependencies:
- jndi: jdbc/osbTrxDS on schema osb_trx
- jndi: jdbc/soaGatewayDs on schema gateway

File dependencies
- /n01/files/common_files/truststore/osb-truststore.jks
- /n01/app/oracle/config/integration/config-bigebbridge.xml

External dependencies:
- ftpsvr1

### Dependencies matrix

|Repo|Database|File|External|
|-|-|-|-|
|span-gateway|jndi: jdbc/soaGatewayDs on schema gateway|||
|span-user-api|jndi: jdbc/soaGatewayDs on schema gateway|||
|span-token-api|jndi: jndi: jdbc/osbTrxDS on schema osb_trx|||
|skramd4j||/n01/files/common_files/truststore/osb-truststore.jks||
|BIGEBBRIDGE||/n01/app/oracle/config/integration/config-bigebbridge.xml||
|soa_ftp|||ftpsvr1|


