***

title: "Role"
generated: true
---------------

<GenerationInfo sourceFile="packages/core/src/entity/role/role.entity.ts" sourceLine="16" packageName="@vendure/core" />

A Role represents a collection of permissions which determine the authorization
level of a [User](/current/core/reference/typescript-api/entities/user#user) on a given set of [Channel](/current/core/reference/typescript-api/entities/channel#channel)s.

```ts title="Signature"
class Role extends VendureEntity implements ChannelAware {
    constructor(input?: DeepPartial<Role>)
    @Column() code: string;
    @Column() description: string;
    @Column('simple-array') permissions: Permission[];
    @ManyToMany(type => Channel, channel => channel.roles)
    @JoinTable()
    channels: Channel[];
}
```

* Extends: [`VendureEntity`](/current/core/reference/typescript-api/entities/vendure-entity#vendureentity)

* Implements: [`ChannelAware`](/current/core/reference/typescript-api/entities/interfaces#channelaware)

<div className="members-wrapper">

### code

\<MemberInfo kind="property" type={`string`}   />

### description

\<MemberInfo kind="property" type={`string`}   />

### permissions

\<MemberInfo kind="property" type={`<a href='/current/core/reference/typescript-api/common/permission#permission'>Permission</a>[]`}   />

### channels

\<MemberInfo kind="property" type={`<a href='/current/core/reference/typescript-api/entities/channel#channel'>Channel</a>[]`}   />

</div>
