# ConfigEntries

**Kind:** Interface

**Source:** [`packages/microservices/external/kafka.interface.ts`](https://github.com/nestjs/nest/blob/master/packages/microservices/external/kafka.interface.ts#L349)

**Part of:** [Microservices](subsystem-packages-microservices)

`ConfigEntries` represents a single Kafka configuration entry returned or managed through the microservices Kafka integration. It captures the configuration value, its origin, mutability, sensitivity, default status, and any equivalent configuration synonyms.

## Properties

| Property | Type |
|---|---|
| `configName` | `string` |
| `configValue` | `string` |
| `isDefault` | `boolean` |
| `configSource` | `ConfigSource` |
| `isSensitive` | `boolean` |
| `readOnly` | `boolean` |
| `configSynonyms` | `ConfigSynonyms[]` |

## Diagram

```mermaid
graph LR
  ConfigEntries[ConfigEntries]
  ConfigEntries --> Name[configName: string]
  ConfigEntries --> Value[configValue: string]
  ConfigEntries --> Source[configSource: ConfigSource]
  ConfigEntries --> Default[isDefault: boolean]
  ConfigEntries --> Sensitive[isSensitive: boolean]
  ConfigEntries --> ReadOnly[readOnly: boolean]
  ConfigEntries --> Synonyms[configSynonyms: ConfigSynonyms[]]
```

## Usage

```ts
import type {
  ConfigEntries,
  ConfigSource,
  ConfigSynonyms,
} from './kafka.interface';

const retentionConfig: ConfigEntries = {
  configName: 'retention.ms',
  configValue: '604800000',
  isDefault: false,
  configSource: ConfigSource.DYNAMIC_TOPIC_CONFIG,
  isSensitive: false,
  readOnly: false,
  configSynonyms: [
    {
      configName: 'retention.ms',
      configValue: '604800000',
      configSource: ConfigSource.DYNAMIC_TOPIC_CONFIG,
    } as ConfigSynonyms,
  ],
};

if (!retentionConfig.readOnly && !retentionConfig.isSensitive) {
  console.log(
    `${retentionConfig.configName} is set to ${retentionConfig.configValue}`,
  );
}
```

## AI Coding Instructions

- Preserve Kafka-provided metadata such as `configSource`, `isDefault`, and `readOnly` when mapping admin-client configuration responses.
- Do not log or expose `configValue` when `isSensitive` is `true`.
- Check `readOnly` before attempting to update a configuration entry through Kafka Admin APIs.
- Treat `configSynonyms` as alternate or inherited values; use the primary `configValue` as the effective configuration value.
- Use the corresponding `ConfigSource` and `ConfigSynonyms` types from `kafka.interface.ts` rather than replacing them with loose strings or objects.
