Teamspaces
A MASV Team is a way to organize users, security, and access. A Teamspace organizes a subset of Team users into a group for a project, client, department and so on. With a Teamspace, a MASV Owner or Admin can do these tasks:
- Control access to files sent to specific Portals.
- A Team can have as many Teamspaces as needed.
- Combine with Tags for an extra level of project tracking and billing.
- See Transfer History and billing in the MASV Web App for each Teamspace.
Teamspace Creation
The MASV API allows authorized users to create Teamspaces under any team that they belong to.
Method | Route |
---|---|
POST |
/v1/teams/{team_id}/spaces |
HEADERS
Name | Type | Required | Description |
---|---|---|---|
X-API-KEY |
String | Yes | API key |
Content-Type |
String | Yes | Must be application/json |
URL Parameters
Name | Type | Required | Description |
---|---|---|---|
team_id |
String | Yes | The ID of the team to own the Teamspace |
BODY
Name | Type | Required | Description |
---|---|---|---|
name |
String | Yes | Name of the Teamspace to create |
member_ids |
Array of Strings | No | Membership ID(s) of team members to add to the Teamspace |
REQUEST
curl -d "{\"name\": \"$NAME\", \"\member_ids\": [\"$M1_MEMBERSHIP_ID\"]}" \
-H "X-API-KEY: $API_KEY" \
-H "Content-Type: application/json" \
-X POST https://api.massive.app/v1/teams/$TEAM_ID/spaces
RESPONSE
After a successful request, this endpoint returns an HTTP response with a status code of 201 Created
and a body similar to the one below.
{
"id": "01E8TP2TJCTDNW11G67NKHQW5J",
"name": "Marketing-space",
"members": [
{
"id": "01H6CTJJJ19PVMR0J0JXGFK96D",
"name": "Jim Halpert",
"user_id": "01H6CTJJHQAKKWJ50Y635NNEPD"
}
]
}
Response Properties:
Property | Description |
---|---|
id |
Teamspace ID of the Teamspace that was created. |
name |
Name of the Teamspace that was created. |
members |
List of members on the Teamspace. |
Get Teamspace
Authorized users can see a Teamspace that they belong to subject to the access policy.
Method | Route |
---|---|
GET |
/v1/spaces/{space_id} |
HEADERS
Name | Type | Required | Description |
---|---|---|---|
X-API-KEY |
String | Yes | API key |
URL Parameters
Name | Type | Required | Description |
---|---|---|---|
space_id |
String | Yes | The ID of the Teamspace to update |
REQUEST
curl -H "X-API-KEY: $API_KEY" \
-X GET https://api.massive.app/v1/spaces/$SPACE_ID
RESPONSE
After a successful request, this endpoint returns an HTTP response with a status code of 200 OK
and a body similar to the one below.
{
"id": "01DANEM9H2AMVH33X0EVDY8AJ",
"name": "Marketing-space",
"members": [
{
"id": "01H23X0EGDY8AJEM9H2AMVANEM",
"user_id": "01CNH24NGPTJTMXGGEZJ8E2J2K",
"name": "John Champion"
},
{
"id": "010FXNFS0EGDY08GOT6HTYU0EVD",
"user_id": "01CD4H2NGTPJTMXGGE8FWVG1V1",
"name": "Jim Benglin"
},
{
"id": "01DT70FEGDY8AJEM9H2AMVANEM",
"user_id": "01G0MVH33X0EVDYYMXGY5R9H",
"name": "Peter Drury"
}
]
}
Property | Description |
---|---|
id |
Teamspace ID of the Teamspace that was created. |
name |
Name of the Teamspace that was created. |
members |
List of members on the Teamspace. |
Listing Teamspaces
Authorized users can list all Teamspaces under any team that they belong to (subject to access policy).
Method | Route |
---|---|
GET |
/v1.1/teams/{team_id}/spaces |
HEADERS
Name | Type | Required | Description |
---|---|---|---|
X-API-KEY |
String | Yes | API key |
URL Parameters
Name | Type | Required | Description |
---|---|---|---|
team_id |
String | Yes | The ID of the team that owns the Teamspace |
QUERY PARAMETERS
Name | Type | Required | Description |
---|---|---|---|
page |
Integer | No | The page number to access Default Value: 0 |
limit |
Integer | No | The maximum number of records to fetch at a time (50 max) Default Value: 50 |
REQUEST
curl -H "X-API-KEY: $API_KEY" \
-X GET https://api.massive.app/v1.1/teams/$TEAM_ID/spaces
RESPONSE
After a successful request, this endpoint returns an HTTP response with a status code of 200 OK
and a body similar to the one below.
{
"metadata": {
"total": 2
},
"teamspaces": [
{
"id": "01DANEM9H2AMVH33X0EVDY8AJ",
"name": "Marketing-space",
"members": [
{
"id": "01H23X0EGDY8AJEM9H2AMVANEM",
"user_id": "01CNH24NGPTJTMXGGEZJ8E2J2K",
"name": "John Champion"
},
{
"id": "010FXNFS0EGDY08GOT6HTYU0EVD",
"user_id": "01CD4H2NGTPJTMXGGE8FWVG1V1",
"name": "Jim Benglin"
},
{
"id": "01DT70FEGDY8AJEM9H2AMVANEM",
"user_id": "01G0MVH33X0EVDYYMXGY5R9H",
"name": "Peter Drury"
}
]
},
{
"id": "01CNH4M8J88WSVS7P3NMB1HG42",
"name": "Engineering",
"members": [
{
"id": "01CXBDDNJ3298WQBGT1GMJR5QQ",
"user_id": "01CNH4WNNKZC5FWVG1V100JTXH",
"name": "Axe joe"
},
{
"id": "01R5CCI6IK3XVCJ9T70FXNFS6YDPR",
"user_id": "01CNH4WNNKZC5FWVG1V100JTXH",
"name": "Gina Mane"
},
{
"id": "01DTCI6I5Y1LC5ZdW7IOIIWMUNOS",
"user_id": "01ZUYISINR5CCI6INBHY2THZ2UQ",
"name": "Ade Tunde"
}
]
}
]
}
Property | Description |
---|---|
id |
Teamspace ID of the Teamspace that was created. |
name |
Name of the Teamspace that was created. |
members |
List of members on the Teamspace. |
Update Teamspace
The MASV API allows authorized users to update Teamspaces under any Team that they belong to subject to the access policy.
Method | Route |
---|---|
PUT |
/v1/spaces/{space_id} |
HEADERS
Name | Type | Required | Description |
---|---|---|---|
X-API-KEY |
String | Yes | API key |
Content-Type |
String | Yes | Must be application/json |
URL Parameters
Name | Type | Required | Description |
---|---|---|---|
space_id |
String | Yes | The ID of the Teamspace to update |
BODY
Name | Type | Required | Description |
---|---|---|---|
name |
String | Yes | A new name of the Teamspace |
REQUEST
curl -H "X-API-KEY: $API_KEY" \
-H "Content-Type: application/json" \
-X PUT https://api.nmassive.app/v1/spaces/$SPACE_ID \
-d "{\"name\": \"$NAME\"}"
RESPONSE
After successful authentication, this endpoint returns an HTTP response with a status code 200 OK
and a body similar to the oone below.
{
"metadata": {
"total": 2
},
"teamspaces": [
{
"id": "01DANEM9H2AMVH33X0EVDY8AJ",
"name": "New-Marketing-space",
"members": [
{
"id": "01H23X0EGDY8AJEM9H2AMVANEM",
"user_id": "01CNH24NGPTJTMXGGEZJ8E2J2K",
"name": "John Champion"
},
{
"id": "010FXNFS0EGDY08GOT6HTYU0EVD",
"user_id": "01CD4H2NGTPJTMXGGE8FWVG1V1",
"name": "Jim Benglin"
},
{
"id": "01DT70FEGDY8AJEM9H2AMVANEM",
"user_id": "01G0MVH33X0EVDYYMXGY5R9H",
"name": "Peter Drury"
}
]
},
{
"id": "01CNH4M8J88WSVS7P3NMB1HG42",
"name": "Engineering",
"members": [
{
"id": "01CXBDDNJ3298WQBGT1GMJR5QQ",
"user_id": "01CNH4WNNKZC5FWVG1V100JTXH",
"name": "Axe joe"
},
{
"id": "01R5CCI6IK3XVCJ9T70FXNFS6YDPR",
"user_id": "01CNH4WNNKZC5FWVG1V100JTXH",
"name": "Gina Mane"
},
{
"id": "01DTCI6I5Y1LC5ZdW7IOIIWMUNOS",
"user_id": "01ZUYISINR5CCI6INBHY2THZ2UQ",
"name": "Ade Tunde"
}
]
}
]
}
Response Properties:
Property | Description |
---|---|
id |
Teamspace ID of the Teamspace. |
name |
Name of the Teamspace. |
members |
List of members on the Teamspace. |
Delete Teamspace
The MASV API allows users to delete Teamspaces that they have created
Method | Route |
---|---|
DELETE |
/v1/spaces/{space_id} |
HEADERS
Name | Type | Required | Description |
---|---|---|---|
X-API-KEY |
String | Yes | API key |
URL Parameters
Name | Type | Required | Description |
---|---|---|---|
space_id |
String | Yes | The ID of the Teamspace to delete |
REQUEST
curl -X DELETE \
-H "X-API-KEY: $API_KEY" \
https://api.massive.app/v1/spaces/$SPACE_ID
RESPONSE
After a successful request, this endpoint returns an HTTP response with a status code of 204 No Content
.
Listing Teamspace packages
Authorized users can retrieve a list of all packages sent by a Teamspace that they belong to and that that they are authorized to view. (access policy).
Method | Route |
---|---|
GET |
/v1.1/spaces/{space_id}/packages |
HEADERS
Name | Type | Required | Description |
---|---|---|---|
X-API-KEY |
String | Yes | API key |
Content-Type |
String | Yes | Must be application/json |
QUERY PARAMETERS
Name | Type | Required | Description |
---|---|---|---|
page |
Integer | No | The page number to access Default Value: 0 |
limit |
Integer | No | The maximum number of records to return (from 1 to 100) Example Value: 50 |
sort |
String | No | Sort results ascending (fieldname) or descending (-fieldname) Example Value: -name |
status |
String | No | Retrieve records that match one of the specified states: [new, finalized, expired, archived] default: [finalized, expired] Example Value: new |
name |
String | No | Retrieve records where name is like the value specified (includes partial matches) Example Value: packagename |
sender |
String | No | Sender's email address Example Value: [email protected] |
tags |
String | No | Retrieve records where tag is equal to one of these values Example Value: comma separated tag IDs |
created_at_start |
String | No | Retrieve records that were created on or after (YYYY-MM-DD) Example Value: 2022-11-10 |
created_at_end |
String | No | Retrieve records that were created on or before (YYYY-MM-DD) Example Value: 2022-11-10 |
URL Parameters
Name | Type | Required | Description |
---|---|---|---|
space_id |
String | Yes | The ID of the Teamspace to retrieve package from |
REQUEST
curl -H "X-API-KEY: $API_KEY" \
-X GET https://api.massive.app/v1.1/spaces/$SPACE_ID/packages?page=1&tags=engineering,marketing&created_at_end=2022-11-10
RESPONSE
After a successful request, this endpoint returns an HTTP response with a status code of 200 OK
and a body similar to the one below:
[
{
"id": "01CNH4M62513B3FT70FXNFS6YS",
"created_at": "2018-08-22T11:39:07.717-04:00",
"updated_at": "2018-08-22T11:39:10.271-04:00"
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MzU1NTgxMDksImx2bCI6ImYiLCJzdWIiOiIwMUNOSDRNNjI1MTNCM0ZUNzBGWE5GUzZZUyIsInR5cCI6InBhY2thZ2UifQ.T1tTJkqcaaptWtHg59Ta94LcYl8DomtnY8ieYVdqP_I",
"state": "finalized",
"name": "Test package #1",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"progress_channels": [],
"unlimited_storage": false,
"sender": "[email protected]"
},
{
"id": "01CNH4WNNKZC5FWVG1V100JTXH",
"created_at": "2018-08-22T11:43:45.843-04:00",
"updated_at": "2018-08-22T11:43:47.111-04:00"
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MzU1NTgxMDksImx2bCI6ImYiLCJzdWIiOiIwMUNOSDRXTk5LWkM1RldWRzFWMTAwSlRYSCIsInR5cCI6InBhY2thZ2UifQ.Y2gI_a_utNNlU_nujZch0zLIDdZ5EDMtQpohIFifvXA",
"state": "new",
"name": "Another package",
"description": "At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium",
"progress_channels": [
{
"auth": {
"token": "xxxxxxxxxxxxxxxxx",
"channel_name": "proc.upload.01CNH4WNNKZC5FWVG1V100JTXH",
"publish_key": "pub-c-xxxxx-xxxxxxxxxxxxx",
"subscribe_key": "sub-c-xxxxx-xxxxxxxxxxxxx"
},
"topic":"upload",
"provider": "pubnub"
}
],
"sender": "[email protected]",
"unlimited_storage": false
},
{
"id": "01CXBDDNMJR5QQJ3298WQBGT1G",
"created_at": "2018-08-22T11:43:45.843-04:00",
"updated_at": "2018-08-22T11:43:47.111-04:00"
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MzU1NTgxMDksImx2bCI6ImYiLCJzdWIiOiIwMUNOSDRXTk5LWkM1RldWRzFWMTAwSlRYSCIsInR5cCI6InBhY2thZ2UifQ.Y2gI_a_utNNlU_nujZch0zLIDdZ5EDMtQpohIFifvXA",
"state": "expired",
"name": "Another package",
"description": "At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium",
"progress_channels": [],
"sender": "[email protected]",
"unlimited_storage": false
}
]
Property | Description |
---|---|
id |
The package ID requested. |
created_at |
Time that the object was created at |
updated_at |
Last time the package was updated. |
access_token |
Auth token required to interact with the package. |
state |
Indicates the state of the package Possible Values: new , finalized , expired , archived |
progress_channels |
PubNub progress events. |
progress_channels.zip |
Reports the progress of zip file creation for finalized packages. |
progress_channels.upload |
Reports the progress of initial package upload for new packages only. |
links |
List of download links created for this package. |
Note
MASV integrates with PubNub for publishing and subscribing to progress messages. They provide client SDKs in several programming languages. More details can be found on their developer documentation website.
Warning
PubNub has recently migrated their authentication mechanism to rely on tokens instead of authentication codes. The progress_channels
auth.token
property should be used for all authentication requests with PubNub and the now deprecated auth.auth_key
property should no longer be used at all. More details on how to switch from auth_key
to token
can be found on their migration guide.
Add Team members to Teamspace
Authorized users can add Team members to a Teamspace. While Team Owners and Admins already have read and write access to all Teamspaces in their team, Team members will need to be added to access a Teamspace. A Team member can be added to multiple Teamspaces.
Method | Route |
---|---|
POST |
/v1/spaces/{space_id}/members |
HEADERS
Name | Type | Required | Description |
---|---|---|---|
X-API-KEY |
String | Yes | API key |
Content-Type |
String | Yes | Must be application/json |
URL Parameters
Name | Type | Required | Description |
---|---|---|---|
space_id |
String | Yes | The ID of the Teamspace |
BODY
Name | Type | Required | Description |
---|---|---|---|
member_ids |
Array of Strings | Yes | Membership ID(s) of team members to add to the Teamspace |
REQUEST
curl -d "{\"\member_ids\": [\"$M1_MEMBERSHIP_ID\"]}" \
-H "X-API-KEY: $API_KEY" \
-H "Content-Type: application/json" \
-X POST https://api.massive.app/v1/spaces/$SPACE_ID/members
RESPONSE
After a successful request, this endpoint returns an HTTP response with a status code of 201 Created
and a body similar to the one below.
[
{
"id": "01H6D3W6RM3VBKWE25AJ5ZD2X8",
"membership_id": "01H6CTJJJ19PVMR0J0JXGFK96D",
"teamspace_id": "01H6CKTEYSSTD7CABVSP54K4DE"
}
]
Response Properties:
Property | Description |
---|---|
[] |
Top level array of teamspace membership objects. |
Teamspace membership objects:
Property | Description |
---|---|
id |
Teamspace membership ID. |
membership_id |
Team membeership ID. |
teamspace_id |
Teamspace ID that the member was added to. |
Listing Teamspace members
Authorized users can list all members under a Teamspace they belong to (subject to access policy).
Method | Route |
---|---|
GET |
/v1/spaces/{space_id}/members |
HEADERS
Name | Type | Required | Description |
---|---|---|---|
X-API-KEY |
String | Yes | API key |
URL Parameters
Name | Type | Required | Description |
---|---|---|---|
space_id |
String | Yes | The ID of the Teamspace |
REQUEST
curl -H "X-API-KEY: $API_KEY" \
-X GET https://api.massive.app/v1/spaces/$SPACE_ID/members
RESPONSE
After a successful request, this endpoint returns an HTTP response with a status code of 200 OK
and a body similar to the one below.
[
{
"id": "01H6D3W6RM3VBKWE25AJ5ZD2X8",
"membership_id": "01H6CTJJJ19PVMR0J0JXGFK96D",
"teamspace_id": "01H6CKTEYSSTD7CABVSP54K4DE"
},
{
"id": "01GW63QXJ3E2N5HPJ9HYSB1R7V",
"membership_id": "01H6CMC1WE4TZRH5ZF4CS1H1D2",
"teamspace_id": "01H6CKTEYSSTD7CABVSP54K4DE"
}
]
Response Properties:
Property | Description |
---|---|
[] |
Top level array of teamspace membership objects. |
Teamspace membership objects:
Property | Description |
---|---|
id |
Teamspace membership ID. |
membership_id |
Team membership ID. |
teamspace_id |
Teamspace ID. |
Remove members from Teamspace
The MASV API allows authorized users to remove Team members from a Teamspace.
Method | Route |
---|---|
DELETE |
/v1/spaces/{space_id}/members/{teamspace_membership_id} |
HEADERS
Name | Type | Required | Description |
---|---|---|---|
X-API-KEY |
String | Yes | API key |
URL Parameters
Name | Type | Required | Description |
---|---|---|---|
space_id |
String | Yes | The ID of the Teamspace |
teamspace_membership_id |
String | Yes | User’s Teamspace Membership ID |
REQUEST
curl -X DELETE \
-H "X-API-KEY: $API_KEY" \
https://api.massive.app/v1/spaces/$SPACE_ID/members/$TEAMSPACE_MEMBERSHIP_ID
RESPONSE
After a successful request, this endpoint returns an HTTP response with a status code of 204 No Content
.