# Reset Custom API Cache API

> Drop the cached answers of one or several custom APIs with the reset custom API cache system API of API Maker, for one tenant or all of them.

Source: https://docs.apimaker.dev/v1/docs/apis-all/system-apis/system-generated-reset-redis-cache-custom-api.html

Drops the cached answers of a custom API with `enableCaching`. `resetCacheOnModificationOf` in its settings does it on its own when a table it names is written ; this API is for the other cases.

| | |
|---|---|
| Method | POST |
| URL | `/api/system-api/admin/reset-redis-cache-custom-apis` : `admin` is the user path of your account |
| Body | `{ name, tenantUsername? }` or an array of them |
| Answer | `data` : the number of cache entries removed |
| From code | [`g.sys.cache.resetCacheCustomApis`](https://docs.apimaker.dev/v1/examples/sys/cache/resetCacheCustomApis.html) |

## The call

**Body : one custom API**

```json
{ "name": "customers-report" }
```

**Body : several**

```json
[ { "name": "customers-report" }, { "name": "top-products" } ]
```

**Body : one tenant**

```json
{ "name": "customers-report", "tenantUsername": "acme" }
```

**Answer**

```json
{ "success": true, "statusCode": 200, "data": 1 }
```

- `name` is the name of the custom API (its settings), not its path. An unknown name gives `-1` and a `404` in `errors`.
- Without `tenantUsername`, the cached answers of every tenant and of the calls without a tenant are reset.

## From code

```typescript
await g.sys.cache.resetCacheCustomApis('customers-report');
await g.sys.cache.resetCacheCustomApis({ name: 'customers-report', tenantUsername: 'acme' });
```

## Access and settings

- Over HTTP, a system API answers once its [settings](https://docs.apimaker.dev/v1/docs/settings/systemApiSettings.html) give it `apiAccessType: TOKEN_ACCESS` (the token of an API user whose [group](https://docs.apimaker.dev/v1/docs/apis-security/api-group-permission.html) grants this system API, in `x-am-authorization`) or `IS_PUBLIC`. Without settings it is `NO_ACCESS` : your code calls it through `g.sys`, the admin panel tests it, and an HTTP call is refused.
- The settings can also cache the answer or require person tokens (`authProviders`) ; [pre and post hooks](https://docs.apimaker.dev/v1/docs/apis-all/hooks/preHook-api.html) run around it like around any API.
- The [request headers](https://docs.apimaker.dev/v1/docs/apis-all/header/requestHeader.html) apply : `x-am-response-case`, `x-am-content-type-response`, `x-am-internationalization`, `x-am-tenant-username`…

## Errors

| Code | When |
|---|---|
| `400` | The body is wrong : the message names the missing or invalid key. |
| `401` | No valid API user token, or the API is `NO_ACCESS` : `You are not authorized to access this API.` |
| `403` | No group grants this system API. |

## Related

- [All APIs at a glance](https://docs.apimaker.dev/v1/docs/apis-all/overview.html) · [Response format](https://docs.apimaker.dev/v1/docs/apis-all/response-format.html) · [System API settings](https://docs.apimaker.dev/v1/docs/settings/systemApiSettings.html) · [System APIs from code](https://docs.apimaker.dev/v1/examples/sys/system/system.html)
