---
# System prepended metadata

title: CIMB API Updates

---

# CIMB API Updates
###### tags: cimb updates, 23Apr

### Prepare flipper checks

```
FlipperHelper.feature_enabled?("cimb_withdrawal_service_outage")

FlipperHelper.add_feature("cimb_withdrawal_service_outage")

FlipperHelper.add_feature("CIMB_23APR22_UPDATE_ENABLE")

FlipperHelper.remove_feature("disbursement-api-o-model")

FlipperHelper.feature_enabled_by_id?("disbursement-api-o-model", "#{Rails.env}_Merchant_#{current_identity.email}")
```


### Add back later
```
FlipperHelper.remove_feature("cimb_withdrawal_service_outage")


FlipperHelper.feature_enabled?("CIMB_23APR22_UPDATE_ENABLE")

```

- [x] Xfers to send Oauth API calls
```
Cimb::Secrets::base_url
#### Included in below requests alr
```
- [x] Account Statement Inquiry API
```
### CIMB Should receive Xfers request after this job is run

#### Alternative
bank_account_id = 42
bank_account = BankAccountModel.find(bank_account_id)
statement_id = "#{bank_account.account_no}#{Time.now.in_current_zone.to_i}"
start_date = 2.days.ago.in_current_zone.strftime("%Y-%m-%d")
end_date = Time.now.in_current_zone.strftime("%Y-%m-%d")

statements = []
response = nil
pagination_key = nil

response = Cimb::Services::HttpClient.account_statements_inquiry(
bank_account,
start_date,
end_date,
statement_id: statement_id,
pagination: {
key: pagination_key,
},
)

response.succeeded?
```

OR
```
yesterday = 2.days.ago.in_current_zone.strftime("%Y-%m-%d")
today = Time.now.in_current_zone.strftime("%Y-%m-%d")

Cimb::Jobs::InquireBankStatementsJob.perform_now(42, yesterday, today, paginated: true)
```


- [x] Balance Inquiry API
```
params = {
code: "heMUjRFYKI56WlRyb7TWz0PPVnILbx", state:"111650682761"
}
code = params[:code]
@state = params[:state]
api_type = @state[0..1]
@account_id = Cimb::Secrets.inquiry_account_id(api_type)
@client_secret = Cimb::Secrets.client_secret(api_type)
@client_id = Cimb::Secrets.client_id(api_type)
token_resp = Cimb::Services::HttpClient.get_token(code, @client_secret, @client_id)
@access_token = token_resp.try(:dig, "access_token")


# Cimb::Services::HttpClient.account_inquiry(@access_token, @account_id, @client_id)

ACCOUNT_INQUIRY_SCOPE = "Ainq"

statement_id = Time.now.in_current_zone.to_i # unique reference ID for transaction
inquiry_api_key = Cimb::Secrets.api_key(ACCOUNT_INQUIRY_SCOPE)
query_string = {
StatementId: statement_id,
AccountType: "CDA",
client_id: @client_id,
}.to_query
endpoint = Cimb::Secrets.base_url

url = "#{endpoint}/sg/cimb/v1/accounts/CASA/#{@account_id}?#{query_string}"
HTTParty.get(
url,
headers: {
"Authorization": "Bearer #{@access_token}",
"API-Key": inquiry_api_key,
},
verify: false,
).parsed_response

```
OR

```
Cimb::Services::RequestOauthCallbackService.account_inquiry
```

- Xfers to send Oauth API calls
    - [ ] FAST payment $1 to intra company account
        - [ ] Disburse `$1` to `UOB 4513055336`
    
    ```
    Cimb::Jobs::WasvfWithdrawalJob.perform_now
    ```
    - [ ] Using disbursement api

- [x] Xfers to receive BAN for payment debit
    - [x] Xfers to send HTTP 200 OK to CIMB as ack
