# API Maker v1.20.0 Release Notes

> What’s new in v1.20.0:- Index Maker released & Multi tenant architecture supported out of the box.

Source: https://docs.apimaker.dev/v1/docs/blog/release-notes/v1.20.0.html

## Jan 2026

### New Features
- **[FEATURE] :** Index Maker : Watch your APIs and find out why they are slow and what is actually happening internally in graphical representation view.
- **[FEATURE] :** Multi-tenant architecture : True multi tenant architecture supported out of the box. You can have completely separate installations of databases for each customer.

### Changes

- **[BUG] :** Integrations tab will sync data with selected API automatically without changing dropdown value.
- **[BUG] :** Cloning custom API and UI Maker page is not working, issue fixed.
- **[BUG] :** Pre/Post hook add & then update without page reload, is not working, issue fixed.
- **[IMPROVEMENT] :** Run native should be true by default in case of hooks.
- **[IMPROVEMENT] :** Passing sorting as JSON5 object support added for `sort` field in get all APIs. This will work now `{ customer_id: 1}`.
- **[IMPROVEMENT] :** System will show proper error message while inserting more than 1000 rows in sql server bulk insert.
- **[IMPROVEMENT] :** Allow changing base params in pre/post hooks.

```typescript
import * as T from 'types';
import * as db from 'db-interfaces';

async function main(g: T.IAMGlobal) {
    const params: T.IBaseParams = g.req.params;
    params.instanceName = 'new_instance_name';
    params.dbUser = 'new_db_name';
    params.collection = 'new_table_name';
};
module.exports = main;
```

- **[IMPROVEMENT] :** Event listeners will have below things available.

```typescript
import * as T from 'types';

async function main(g: T.IAMGlobal) {
    console.log(g.req.params);
    console.log(g.req.reqInfo);
    console.log(g.req.eventData);
    console.log(g.req.auth);
};
module.exports = main;
```

- **[IMPROVEMENT] :** UI Maker : `CLICK_GRID_EVENT` & `DOUBLE_CLICK_GRID_EVENT` events support added in UI Maker. Parent will receive these events.
- **[IMPROVEMENT] :** UI Maker : Added support for `processDataBeforeExport`. It can be used to generate dynamic values just before exporting data in CSV.

```typescript
// CSV has these fields : Name, Email, Price, Profile Photo
async function processDataBeforeExport($scope: T.IDBMasterUIPageUtilsScope) {
    let sum = 0;
    for (const item of $scope.gridData) {
        sum += (item.Price || 0);
    }
    
    // Create new row at the end for showing sum of price field
    $scope.gridData.push({
        Email: 'Total',
        Price: sum,
    });
}
```

- **[IMPROVEMENT] :** UI Maker : `parentFormData` is now available to get data of all the parents in nested forms.
