# AclResource

**Kind:** Interface

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

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

`AclResource` describes a Kafka resource targeted by an access control list (ACL) rule. It identifies the resource category, its name, and the pattern Kafka should use when matching the resource name during authorization.

## Properties

| Property | Type |
|---|---|
| `resourceType` | `AclResourceTypes` |
| `resourceName` | `string` |
| `resourcePatternType` | `ResourcePatternTypes` |

## Diagram

```mermaid
graph LR
  ACL[Kafka ACL Rule] --> Resource[AclResource]
  Resource --> Type[resourceType: AclResourceTypes]
  Resource --> Name[resourceName: string]
  Resource --> Pattern[resourcePatternType: ResourcePatternTypes]
  Type --> KafkaResource[Kafka resource category]
  Pattern --> Matching[Kafka resource matching behavior]
```

## Usage

```ts
import {
  AclResource,
  AclResourceTypes,
  ResourcePatternTypes,
} from './kafka.interface';

const topicResource: AclResource = {
  resourceType: AclResourceTypes.TOPIC,
  resourceName: 'orders',
  resourcePatternType: ResourcePatternTypes.LITERAL,
};

// Use the resource definition when creating or filtering Kafka ACLs.
await admin.createAcls({
  acl: {
    resource: topicResource,
    principal: 'User:order-service',
    host: '*',
    operation: 'READ',
    permissionType: 'ALLOW',
  },
});
```

## AI Coding Instructions

- Provide all three fields when constructing an `AclResource`; they define how Kafka locates the protected resource.
- Use `AclResourceTypes` and `ResourcePatternTypes` enum values instead of hard-coded strings.
- Use `LITERAL` matching for a single, exact topic or consumer group name; use prefix matching only when broader access is intentional.
- Ensure `resourceName` matches the Kafka resource naming convention used by the target cluster.
- Pass this interface as the `resource` portion of Kafka ACL create, delete, or filter operations.
