> For the complete documentation index, see [llms.txt](https://dev.vulos.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev.vulos.io/reference/identity-javascript-sdk/the-base-package/organizations/organizationmembership/organizationmembershipwithmetadata.md).

# OrganizationMembershipWithMetadata

{% hint style="info" %}
This class implements [`OrganizationMembership`](/reference/identity-javascript-sdk/the-base-package/organizations/organizationmembership.md).
{% endhint %}

## Members

### `roles :` [`OrganizationRole[]`](/reference/identity-javascript-sdk/the-base-package/organizations/organizationrole.md)

The roles associated with this membership.

### `firstName : string`

The first name of the user associated with this membership.

### `lastName : string`

The last name of the user associated with this membership.

### `email : string`

The email of the user associated with this membership.

## Methods

### `constructor(api, membership)`

Create a new Membership object using the [Organization API](/reference/organization-api.md).

* `api` must be an instance of [`OrganizationApi`](/reference/identity-javascript-sdk/the-base-package/organizations/organizationapi.md);
* `membership` must implement the [`MembershipInfo`](/reference/identity-javascript-sdk/the-base-package/organizations/organizationapi.md#membershipinfo) interface;

```javascript
const info = await organizationApi.memberInfo(organizationId, membershipId)
const membership = new OrganizationMembershipWithMetadata(organizationApi, info)
```

### `static async fromMembership(membership)`

Create a membership with metadata object from a normal membership.

```javascript
const membership = await OrganizationMembershipWithMetadata.fromMembership(normalMembershipObject)
```

### `override async getRoles()`

An override of [`OrganizationMembership.getRoles()`](/reference/identity-javascript-sdk/the-base-package/organizations/organizationmembership.md#async-getroles) that doesn't send a request to get the roles.

```javascript
const roles = await membership.getRoles()
```
