#Memberships
Memberships represent a user’s role and access within an organization. Each membership defines what a user can do — from read-only viewing to full owner access.
Base path: transcodely.v1.MembershipService Requires: X-Organization-ID header on all endpoints.
#Roles
| Role | Description |
|---|
owner | Full access. Can manage billing, delete the organization, and perform all admin actions. |
admin | Can manage members and resources. Cannot delete the organization or manage billing. |
member | Can manage resources (jobs, presets, origins). Cannot manage members. |
viewer | Read-only access to all resources. |
#List Memberships
List members of an organization with their user details. Requires viewer permission or higher.
POST /transcodely.v1.MembershipService/List
#Request
| Field | Type | Required | Description |
|---|
status | string | No | Filter by membership status: "active", "invited", or "suspended". |
pagination | object | No | Pagination parameters. See Pagination. |
#Response
| Field | Type | Description |
|---|
memberships | MembershipWithUser[] | List of memberships with user details. |
pagination | object | Pagination metadata. |
#MembershipWithUser object
| Field | Type | Description |
|---|
membership | Membership | The membership record. |
user_email | string | User’s email address. |
user_name | string | User’s display name. |
user_is_active | boolean | Whether the user account is active. |
#Membership object
| Field | Type | Description |
|---|
id | string | Unique identifier (e.g., "mem_a1b2c3d4e5"). |
user_id | string | User ID. |
org_id | string | Organization ID. |
role | string | One of: "owner", "admin", "member", "viewer". |
status | string | One of: "active", "invited", "suspended". |
invited_by | string | ID of the user who sent the invitation. Omitted if not applicable. |
invited_at | string | ISO 8601 timestamp of invitation. Omitted if not applicable. |
accepted_at | string | ISO 8601 timestamp of acceptance. Omitted if not applicable. |
created_at | string | ISO 8601 timestamp. |
updated_at | string | ISO 8601 timestamp. |
#Example
curl -X POST https://api.transcodely.com/transcodely.v1.MembershipService/List
-H "Authorization: Bearer {{API_KEY}}"
-H "X-Organization-ID: {{ORG_ID}}"
-H "Content-Type: application/json"
-d '{
"status": "active",
"pagination": {"limit": 20}
}'
{
"memberships": [
{
"membership": {
"id": "mem_a1b2c3d4e5",
"user_id": "usr_a1b2c3d4e5",
"org_id": "org_f6g7h8i9j0",
"role": "owner",
"status": "active",
"created_at": "2025-01-10T08:00:00Z",
"updated_at": "2025-01-10T08:00:00Z"
},
"user_email": "jane@acme.com",
"user_name": "Jane Doe",
"user_is_active": true
},
{
"membership": {
"id": "mem_f6g7h8i9j0",
"user_id": "usr_q2w3e4r5t6",
"org_id": "org_f6g7h8i9j0",
"role": "member",
"status": "active",
"invited_by": "usr_a1b2c3d4e5",
"invited_at": "2025-01-20T14:00:00Z",
"accepted_at": "2025-01-20T15:30:00Z",
"created_at": "2025-01-20T14:00:00Z",
"updated_at": "2025-01-20T15:30:00Z"
},
"user_email": "bob@acme.com",
"user_name": "Bob Johnson",
"user_is_active": true
}
],
"pagination": {
"next_cursor": "",
"total_count": 2
}
}
#Get Membership
Retrieve a specific membership by its ID. Requires viewer permission or higher.
POST /transcodely.v1.MembershipService/Get
#Request
| Field | Type | Required | Description |
|---|
id | string | Yes | Membership ID (e.g., "mem_a1b2c3d4e5"). |
#Response
| Field | Type | Description |
|---|
membership | MembershipWithUser | The requested membership with user details. |
#Example
curl -X POST https://api.transcodely.com/transcodely.v1.MembershipService/Get
-H "Authorization: Bearer {{API_KEY}}"
-H "X-Organization-ID: {{ORG_ID}}"
-H "Content-Type: application/json"
-d '{"id": "mem_a1b2c3d4e5"}'
#Update Role
Change a member’s role within the organization. Requires admin permission. Cannot demote the last owner.
POST /transcodely.v1.MembershipService/UpdateRole
#Request
| Field | Type | Required | Description |
|---|
id | string | Yes | Membership ID. |
role | string | Yes | New role: "owner", "admin", "member", or "viewer". |
#Response
| Field | Type | Description |
|---|
membership | Membership | The updated membership. |
#Example
curl -X POST https://api.transcodely.com/transcodely.v1.MembershipService/UpdateRole
-H "Authorization: Bearer {{API_KEY}}"
-H "X-Organization-ID: {{ORG_ID}}"
-H "Content-Type: application/json"
-d '{
"id": "mem_f6g7h8i9j0",
"role": "admin"
}'
{
"membership": {
"id": "mem_f6g7h8i9j0",
"user_id": "usr_q2w3e4r5t6",
"org_id": "org_f6g7h8i9j0",
"role": "admin",
"status": "active",
"invited_by": "usr_a1b2c3d4e5",
"invited_at": "2025-01-20T14:00:00Z",
"accepted_at": "2025-01-20T15:30:00Z",
"created_at": "2025-01-20T14:00:00Z",
"updated_at": "2025-02-28T15:00:00Z"
}
}
#Remove Member
Remove a member from the organization. Requires admin permission. Cannot remove the last owner.
POST /transcodely.v1.MembershipService/Remove
#Request
| Field | Type | Required | Description |
|---|
id | string | Yes | Membership ID. |
#Response
Empty response on success.
#Example
curl -X POST https://api.transcodely.com/transcodely.v1.MembershipService/Remove
-H "Authorization: Bearer {{API_KEY}}"
-H "X-Organization-ID: {{ORG_ID}}"
-H "Content-Type: application/json"
-d '{"id": "mem_f6g7h8i9j0"}'