## Update Organization Membership

`client.Organizations.Memberships.Update(ctx, organizationID, membershipID, body) (*OrganizationMembership, error)`

**patch** `/v1/organizations/{organization_id}/memberships/{membership_id}`

Change the role of a member of an organization. Owners may assign any role. Admins may assign admin, billing or member, and cannot change the role of an owner. The last owner cannot be demoted, and members cannot change their own role except for an owner stepping down while another owner remains.

### Parameters

- `organizationID string`

- `membershipID string`

- `body MembershipUpdateParams`

  - `Role param.Field[MembershipUpdateParamsRole]`

    Role of the user in the organization.

    - `const MembershipUpdateParamsRoleOwner MembershipUpdateParamsRole = "owner"`

    - `const MembershipUpdateParamsRoleAdmin MembershipUpdateParamsRole = "admin"`

    - `const MembershipUpdateParamsRoleBilling MembershipUpdateParamsRole = "billing"`

    - `const MembershipUpdateParamsRoleMember MembershipUpdateParamsRole = "member"`

### Returns

- `type OrganizationMembership struct{…}`

  Organization membership details.

  - `ID string`

    Membership ID.

  - `CreatedAt Time`

    When the membership was created.

  - `OrganizationID string`

    Organization ID.

  - `Role OrganizationMembershipRole`

    Role of the user in the organization.

    - `const OrganizationMembershipRoleOwner OrganizationMembershipRole = "owner"`

    - `const OrganizationMembershipRoleAdmin OrganizationMembershipRole = "admin"`

    - `const OrganizationMembershipRoleBilling OrganizationMembershipRole = "billing"`

    - `const OrganizationMembershipRoleMember OrganizationMembershipRole = "member"`

  - `UpdatedAt Time`

    When the membership was updated.

  - `UserID string`

    User ID.

### Example

```go
package main

import (
  "context"
  "fmt"

  "github.com/nirvana-labs/nirvana-go"
  "github.com/nirvana-labs/nirvana-go/option"
  "github.com/nirvana-labs/nirvana-go/organizations"
)

func main() {
  client := nirvana.NewClient(
    option.WithAPIKey("My API Key"),
  )
  organizationMembership, err := client.Organizations.Memberships.Update(
    context.TODO(),
    "organization_id",
    "membership_id",
    organizations.MembershipUpdateParams{
      Role: organizations.MembershipUpdateParamsRoleOwner,
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", organizationMembership.ID)
}
```

#### Response

```json
{
  "id": "987e6543-e89b-12d3-a456-426614174000",
  "created_at": "2025-01-01T00:00:00Z",
  "organization_id": "123e4567-e89b-12d3-a456-426614174000",
  "role": "owner",
  "updated_at": "2025-01-01T00:00:00Z",
  "user_id": "456e7890-e89b-12d3-a456-426614174000"
}
```
