Portals
A MASV Portal is a brandable file transfer web page hosted by MASV with a custom URL. End users can visit the page to upload files to MASV. After the sender has uploaded files, MASV notifies the specified email addresses associated with the Portal.
Custom expiry
Each Portal can override the default number of days that MASV stores an uploaded package with the custom_expiry_days
property. Setting it to -1
specifies storage for an indefinite period if the Team's plan allows it.
Extended Storage charges will be incurred beyond the free period included with the Team's plan. For example, setting a Portal's custom_expiry_days
property to 10 days in a Team with a plan that includes 7 days of free storage will incur charges for 10 - 7 = 3 days per package uploaded with the Portal. For details, see How does Extended Storage Work and Pricing.
Regular and private access levels
A Portal's access level can be regular or private. By default, all Portals are regular.
Packages received via a regular Portal can be viewed by all Team members, while packages uploaded to Private Portals are accessible only for the Team members included in the Portal's access list.
Note
Use Teamspaces to limit Portal and package access to one or more groups of users within a Team. Access to the Private Portals feature is currently restricted as it will be deprecated in the future.
Setting a Portal's access_code
requires users to enter it as a password to access the Portal's web page. Regular Portals can optionally be configured with an access_code
, Private Portals require one.
Private Portals are not allowed in a Teamspace. Regular Portals can be added and removed from a Teamspace but they cannot belong to multiple Teamspaces at the same time.
Creating a Portal
The MASV API allows authorized users to create Portals under any Team that they belong to, subject to their role.
Method | Route |
---|---|
POST |
/v1/teams/{team_id}/portals |
HEADERS
Name | Type | Required | Description |
---|---|---|---|
X-API-KEY |
String | Yes | API key |
Content-Type |
String | Yes | Must be application/json |
PATH PARAMETERS
Name | Type | Required | Description |
---|---|---|---|
team_id |
String | Yes | The Team id to bind the Portal to. |
BODY
Name | Type | Required | Description |
---|---|---|---|
name |
String | Yes | Name of the Portal to create. |
subdomain |
String | Yes | Subdomain of the Portal to create. |
message |
String | No | Message displayed on the Portal upload page. |
has_access_code |
Boolean | No | Enable/disable access code for Portal page. |
access_code |
String | No | Access code to be able to access Portal upload page. Must be set if has_access_code is true . |
active |
Boolean | No | Enable/disable Portal page. Default is false . |
logo_url |
String | No | URL for logo to be displayed on Portal page. |
background_url |
String | No | URL for background image of the Portal page. |
primary_color |
String | No | HTML hex code for primary color used on Portal page. |
recipients |
Array of Strings | No | Email(s) that will receive notifications for Portal uploads. |
has_download_password |
Boolean | No | Enable/disable download password for Portal packages. Default is false . |
download_password |
String | No | Password to protect download access on any package uploaded to this Portal. Must be set if has_download_password is true . |
custom_expiry_days |
Integer | No | Length of storage days for packages that belong to the Portal. Must be from -1 to 65535 . |
cloud_connections |
Array of cloud connections | No | Cloud connections attached to the Portal. Must be set if configure_cloud_connections is true . See Cloud connect. |
disable_upload_receipt |
Boolean | No | Enable/disable the sending of a confirmation email to the uploader. Default is false . |
custom_webhooks |
Array of custom webhooks | No | Custom webhooks attached to the Portal. See Custom webhooks. |
tag |
Tag | No | An optional tag object used to assign a tag to the new Portal. When a Portal has a tag, all packages created on the Portal are assigned the Portal's tag. See Tags. |
access_level |
String | No | Portal access level, regular or private . Default is regular . |
access_list |
Array of Strings | No | User membership IDs with access to the private Portal and its received packages. Leave it empty for regular Portals. |
teamspace_id |
String | No | ID of the Teamspace that the Portal should be bound to. To attach the Portal to a Team and not a Teamspace, either use the empty string or omit this object. |
terms_of_service_enabled |
Boolean | No | Enable/disable the display of the Terms of Service checkbox. Default is false . |
terms_of_service |
Terms of service | No | Custom terms of service required to start collecting files. If terms_of_service_enabled set to true this object cannot be empty or omitted. |
package_size_restriction_enabled |
Boolean | No | Enable/disable restrictions on the package size, as well as the number and size of files included in the Package. If it is set to true then one or more of max_package_size , max_file_size , or max_file_count must be provided. Default is false . |
max_package_size |
Integer | No | The maximum Package size allowed for Users to input and save through the Portal. |
max_file_size |
Integer | No | The maximum size, in bytes, of an individual file allowed for Users to input and save through the Portal. |
max_file_count |
Integer | No | The maximum number of files allowed for the Portal upload. |
file_type_restriction_enabled |
Boolean | No | Enable/disable list of File types allowed for Users to upload. If file_type_restriction_enabled set to true , this list cannot be empty or omitted. Default is false . |
file_types |
Array of Strings | No | File types allowed for upload only. File type is presented as a file extension prefixed with a dot like ".mov" or ".mp4" . |
expiry_enabled |
Boolean | No | Enable/disable expiry for the Portal. When enabled this will make the Portal unavailable for new uploads once the expiry datetime has passed. Default is false . |
expiry |
String | No | Date-time expiry for the Portal. Default: 0001-01-01T00:00:00.000Z . Accepted Format: ISO 8601. |
package_name_format |
Package name format | No | Accepted syntax for package names sent through this Portal. MASV enforces this format only when package_name_format_enabled is true. |
package_name_format_enabled |
Boolean | No | Enable/disable encorcement of package_name_format |
REQUEST
curl -d "{\"name\": \"$NAME\", \"message\": \"$MESSAGE\", \"subdomain\": \"$SUBDOMAIN\", \"recipients\": [\"$R1_EMAIL\"], \"access_code\": \"$ACCESSCODE\", \"has_access_code\": true, \"download_password\": \"$DOWNLOADPASSWORD\", \"has_download_password\":true,\"custom_expiry_days\":$CUSTOMEXPIRYDAYS}" \
-H "X-API-KEY: $API_KEY" \
-H "Content-Type: application/json" \
-X POST https://api.massive.app/v1/teams/$TEAM_ID/portals
After a successful request where a Portal has been created, this endpoint will return an HTTP response with a status code of 201 Created
and a body similar to the one below.
{
"access_level": "regular",
"access_list": [],
"active": true,
"cloud_connections": [
{
"connections": 1,
"created_at": "2024-06-20T19:50:59.109Z",
"destination": "sample-s3-bucket",
"id": "01J0VK7K95A2ACFRW3Z93DJ7B2",
"name": "Amazon S3",
"provider": "amazon_s3",
"region": "us-east-1",
"state": "ok",
"sync_metadata": true,
"target_action": "transfer",
"updated_at": "2024-10-11T18:33:45.031Z"
}
],
"created_at": "2024-10-28T17:02:09.334Z",
"custom_expiry_days": 0,
"custom_webhooks": [
{
"id": "01CTJE8TGGEZDNW91C67JSHQW5"
}
],
"disable_upload_receipt": false,
"expiry": "0001-01-01T00:00:00.000Z",
"expiry_enabled": false,
"file_type_restriction_enabled": true,
"file_type_restriction_exclude": false,
"file_types": [
".mov",
".mp4"
],
"has_access_code": false,
"has_download_password": true,
"id": "01CTDNW11G67NKHQW5JE8TP2TJ",
"max_file_count": 10,
"max_file_size": 1073741824,
"max_package_size": 53687091200,
"message": "Hello world!",
"name": "My Portal",
"package_name_format": {
"label": "",
"value": ""
},
"package_name_format_enabled": false,
"package_size_restriction_enabled": false,
"recipients": [
"[email protected]",
"[email protected]"
],
"subdomain": "customesub",
"tag": {
"id": "01CTDNW91C67JSHQW5JE8TGGEZ",
"name": "test tag name"
},
"terms_of_service": {
"checkbox_label": "I agree to the terms of service",
"checkbox_url": "http://test.com/customs/tos.html",
"description": "Term of Service Description",
"title": "Term of Service Title"
},
"terms_of_service_enabled": true,
"updated_at": "2024-06-11T10:12:01.241Z"
}
Response Properties:
Property | Description |
---|---|
active |
The enable/disable state of the Portal. |
has_access_code |
Is an access code required. |
has_download_password |
Is a password required for download. |
access_code |
Access code to be able to access Portal upload page. |
download_password |
Password to protect download access on any package uploaded to this Portal. |
custom_expiry_days |
Length of storage days for packages that belong to the Portal. |
disable_upload_receipt |
Enable/disable the sending of a confirmation email to the uploader. Default is false . |
cloud_connections |
Array of cloud connections attached to the Portal. See Cloud connect. |
custom_webhooks |
Array of custom webhooks attached to the Portal. See Custom webhooks. |
id |
Portal id for the Portal created. |
message |
Message displayed on the Portal upload page. |
name |
Name of the Portal to create. |
logo_url |
URL for logo to be displayed on Portal page. |
background_url |
URL for background image of the Portal page. |
primary_color |
HTML hex code for primary color used on Portal page. |
recipients |
Email(s) that will receive notifications for Portal uploads. |
subdomain |
Subdomain of the Portal created. |
tag |
A tag object representing this Portal's tag. If the Portal does not have a tag, tag is excluded from the response. See Tags for more details. |
access_level |
Portal access level, can be regular or private . |
access_list |
Array of user memberships with access to the private Portal and its received packages. It is empty for regular Portals. |
teamspace |
Teamspace that the Portal is bound to. |
terms_of_service_enabled |
Enable/disable the display of the Terms of Service checkbox. |
terms_of_service |
Terms of service object representing custom terms of service required to start collecting files. |
package_size_restriction_enabled |
Enable/disable restrictions on the package size, as well as the number and size of files included in the Package. |
max_package_size |
The maximum Package size allowed for Users to input and save through the Portal. |
max_file_size |
The maximum size, in bytes, of an individual file allowed for Users to input and save through the Portal. |
max_file_count |
The maximum number of files allowed for the Portal upload. |
file_type_restriction_enabled |
Enable/disable list of File types allowed for Users to upload. |
file_types |
Array of file types allowed for upload only. File type is presented as a file extension prefixed with a dot like ".mov" or ".mp4" . |
expiry_enabled |
Enable/disable expiry for the Portal. When enabled this will make the Portal unavailable for new uploads once the expiry datetime has passed. |
expiry |
Date-time expiry for the Portal in format: ISO 8601. |
created_at |
Time that the Portal was created at. |
updated_at |
Last time the Portal was updated at. |
Updating a Portal
The MASV API allows authorized users to update Portals under any Team that they belong to.
The user performing the update must have permission subject to the access policy or their Team membership ID must be included in the access list for private
Portals. Users who do not have permission but have their membership ID included in the access list cannot:
- remove their own membership ID from the Portal's access list
- change the Portal access level from
private
toregular
Method | Route |
---|---|
PUT |
/v1/portals/{portal_id} |
HEADERS
Name | Type | Required | Description |
---|---|---|---|
X-API-KEY |
String | Yes | API key |
Content-Type |
String | Yes | Must be application/json |
PATH PARAMETERS
Name | Type | Required | Description |
---|---|---|---|
portal_id |
String | Yes | The ID of the Portal you are updating. |
BODY
Name | Type | Required | Description |
---|---|---|---|
active |
Boolean | Yes | Enable/disable Portal page. |
has_access_code |
Boolean | Yes | Enable/disable access code for Portal page. |
name |
String | Yes | Name of the Portal to update. |
subdomain |
String | Yes | Subdomain of the Portal to update. |
access_code |
String | No | Access code to be able to access Portal upload page. Must be set if has_access_code is true . |
message |
String | No | Message displayed on the Portal upload page. |
logo_url |
String | No | URL for logo to be displayed on Portal page. |
background_url |
String | No | URL for background image of the Portal page. |
primary_color |
String | No | HTML hex code for primary color used on Portal page. |
recipients |
Array of Strings | No | Email(s) that will receive notifications for Portal uploads. |
has_download_password |
Boolean | No | Enable/disable download password for Portal packages. Default is false . |
download_password |
String | No | Password to protect download access on any package uploaded to this Portal. Must be set if has_download_password is true . |
custom_expiry_days |
Integer | No | Length of storage days for packages that belong to the Portal. Must be from -1 to 65535 . |
configure_cloud_connections |
Boolean | No | Overwrite the attached cloud connections for this portal with the list passed in cloud_connections array. Default is false . |
cloud_connections |
Array of cloud connections | No | Array of cloud connections attached to the Portal. Must be set if configure_cloud_connections is true . See Cloud connect. |
disable_upload_receipt |
Boolean | No | Enable/disable the sending of a confirmation email to the uploader. Default is false . |
custom_webhooks |
Array of custom webhooks | No | Array of custom webhooks attached to the Portal. See Custom webhooks. |
tag |
Tag | No | This Portal's tag. Excluded from the response if the Portal does not have a tag. See Tags. |
access_level |
String | No | Portal access level, can be regular or private . Default is regular . |
access_list |
Array of Strings | No | User membership IDs with access to the private Portal and its received packages. Leave it empty for regular Portals. |
teamspace_id |
String | No | ID of the Teamspace that the Portal should be bound to. To attach the Portal to a Team and not a Teamspace, either use the empty string or omit this object. |
terms_of_service_enabled |
Boolean | No | Enable/disable the display of the Terms of Service checkbox. Default is false . |
terms_of_service |
Terms of service | No | Custom terms of service required to start collecting files. If terms_of_service_enabled set to true this object cannot be empty or omitted. |
package_size_restriction_enabled |
Boolean | No | Enable/disable restrictions on the package size, as well as the number and size of files included in the Package. If it is set to true then one or more of max_package_size , max_file_size , or max_file_count must be provided. Default is false . |
max_package_size |
Integer | No | The maximum Package size allowed for Users to input and save through the Portal. |
max_file_size |
Integer | No | The maximum size, in bytes, of an individual file allowed for Users to input and save through the Portal. |
max_file_count |
Integer | No | The maximum number of files allowed for the Portal upload. |
file_type_restriction_enabled |
Boolean | No | Enable/disable list of File types allowed for Users to upload. If file_type_restriction_enabled set to true , this list cannot be empty or omitted. Default is false . |
file_types |
Array of Strings | No | File types allowed for upload only. File type is presented as a file extension prefixed with a dot like ".mov" or ".mp4" . |
expiry_enabled |
Boolean | No | Enable/disable expiry for the Portal. When enabled this will make the Portal unavailable for new uploads once the expiry datetime has passed. Default is false . |
expiry |
String | No | Date-time expiry for the Portal. Default: 0001-01-01T00:00:00.000Z . Accepted Format: ISO 8601. |
Warning
If you set custom_expiry_days
to -1
, Unlimited Extended Storage will be activated and charges will be incurred beyond the free period included with the pricing plan. Trial accounts can only set the expiry of a package before the datetime given on the package's creation, it cannot be extended. For details, see How does Extended Storage Work.
REQUEST
Note
The request and response below do not list all fields. When updating a Portal, it is important that you provide the full Portal object. A typical workflow would be: Get Portal > Modify Fields > Update Portal.
curl -d "{\"name\": \"$NAME\", \"message\": \"$MESSAGE\", \"subdomain\": \"$SUBDOMAIN\", \"recipients\": [\"$R1_EMAIL\"], \"access_code\": \"$ACCESSCODE\", \"active\": true, \"has_access_code\": true, \"download_password\": \"$DOWNLOADPASSWORD\", \"has_download_password\":true,\"custom_expiry_days\":$CUSTOMEXPIRYDAYS}" \
-H "X-API-KEY: $API_KEY" \
-H "Content-Type: application/json" \
-X PUT https://api.massive.app/v1/portals/$PORTAL_ID
200 OK
and a body similar to the one below.
{
"access_level": "regular",
"access_list": [],
"active": true,
"cloud_connections": [
{
"connections": 1,
"created_at": "2024-06-20T19:50:59.109Z",
"destination": "sample-s3-bucket",
"id": "01J0VK7K95A2ACFRW3Z93DJ7B2",
"name": "Amazon S3",
"provider": "amazon_s3",
"region": "us-east-1",
"state": "ok",
"sync_metadata": true,
"target_action": "transfer",
"updated_at": "2024-10-11T18:33:45.031Z"
}
],
"created_at": "2024-10-28T17:02:09.334Z",
"custom_expiry_days": 0,
"custom_webhooks": [
{
"id": "01CTJE8TGGEZDNW91C67JSHQW5"
}
],
"disable_upload_receipt": false,
"expiry": "0001-01-01T00:00:00.000Z",
"expiry_enabled": false,
"file_type_restriction_enabled": true,
"file_type_restriction_exclude": false,
"file_types": [
".mov",
".mp4"
],
"has_access_code": false,
"has_download_password": true,
"id": "01CTDNW11G67NKHQW5JE8TP2TJ",
"max_file_count": 10,
"max_file_size": 1073741824,
"max_package_size": 53687091200,
"message": "Hello world!",
"name": "My Portal",
"package_name_format": {
"label": "",
"value": ""
},
"package_name_format_enabled": false,
"package_size_restriction_enabled": false,
"recipients": [
"[email protected]",
"[email protected]"
],
"subdomain": "customesub",
"tag": {
"id": "01CTDNW91C67JSHQW5JE8TGGEZ",
"name": "test tag name"
},
"terms_of_service": {
"checkbox_label": "I agree to the terms of service",
"checkbox_url": "http://test.com/customs/tos.html",
"description": "Term of Service Description",
"title": "Term of Service Title"
},
"terms_of_service_enabled": true,
"updated_at": "2024-06-11T10:12:01.241Z"
}
Response Properties:
Property | Description |
---|---|
active |
The enable/disable state of the Portal. |
has_access_code |
Is an access code required. |
has_download_password |
Is a password required for download. |
access_code |
Access code to be able to access Portal upload page. |
download_password |
Password to protect download access on any package uploaded to this Portal. |
custom_expiry_days |
Length of storage days for packages that belong to the Portal. |
disable_upload_receipt |
Enable/disable the sending of a confirmation email to the uploader. Default is false . |
configure_cloud_connections |
Overwrite the attached cloud connections for this portal with the list passed in cloud_connections array. |
cloud_connections |
Array of cloud connections attached to the Portal. See Cloud connect. |
custom_webhooks |
Array of custom webhooks attached to the Portal. See Custom webhooks. |
id |
Portal id for the Portal created. |
team_id |
The team ID that the Portal is bound to. |
message |
Message displayed on the Portal upload page. |
name |
Name of the Portal to create. |
logo_url |
URL for logo to be displayed on Portal page. |
background_url |
URL for background image of the Portal page. |
primary_color |
HTML hex code for primary color used on Portal page. |
recipients |
Email(s) that will receive notifications for Portal uploads. |
subdomain |
Subdomain of the Portal created. |
tag |
Tag object representing this Portal's tag. Excluded from the response if the Portal does not have a tag. See Tags. |
access_level |
Portal access level, can be regular or private . |
access_list |
Array of user memberships with access to the private Portal and its received packages. It is empty for regular Portals. |
teamspace |
Teamspace that the Portal is bound to. |
terms_of_service_enabled |
Enable/disable the display of the Terms of Service checkbox. |
terms_of_service |
Terms of service object representing custom terms of service required to start collecting files. |
package_size_restriction_enabled |
Enable/disable restrictions on the package size, as well as the number and size of files included in the Package. |
max_package_size |
The maximum Package size allowed for Users to input and save through the Portal. |
max_file_size |
The maximum size, in bytes, of an individual file allowed for Users to input and save through the Portal. |
max_file_count |
The maximum number of files allowed for the Portal upload. |
file_type_restriction_enabled |
Enable/disable list of File types allowed for Users to upload. |
file_types |
Array of strings of file name extensions. File type is presented as a file extension prefixed with a dot like ".mov" or ".mp4" . |
expiry_enabled |
Enable/disable expiry for the Portal. When enabled this will make the Portal unavailable for new uploads once the expiry datetime has passed. |
expiry |
Date-time expiry for the Portal in format: ISO 8601. |
created_at |
Time that the Portal was created at. |
updated_at |
Last time the Portal was updated at. |
Listing Portals
Users can retrieve a list of Portals in a Team that meets specific criteria, subject to the MASV access policy.
To paginate through all Portals, use the metadata.total
property in the response. It contains the total number of Portals that meet your request's criteria.
Info
This request uses version 1.1 of the API. To retrieve a list of Portals with version 1.0 of the API, see Listing Portals (legacy).
Method | Route |
---|---|
GET |
/v1.1/teams/{{ team_id }}/portals |
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 | Page number of records to respond. Default: 1 . |
limit |
Integer | No | The number of records in a page, from 1 to 50. Default: 50 . |
sort |
String | No | Sort results ascending (fieldname ) or descending (-fieldname ). Accepted field names: name , created_at , active . |
name |
String | No | Retrieve records where name is a substring of the full Portal name. |
subdomain |
String | No | Retrieve records where subdomain is a substring of the full Portal subdomain. |
tags |
String | No | Retrieve records where the package tag is equal to one of the tag IDs in this string of comma-separated IDs |
teamspaces |
String | No | Retrieve records where the package belongs to one of the Teamspaces IDs in this string of comma-separated IDs. |
PATH PARAMETERS
Name | Type | Required | Description |
---|---|---|---|
team_id |
String | Yes | The Team ID that the Portal is bound to. |
REQUEST
curl -H "Content-Type: application/json" \
-H "X-API-KEY: $API_KEY" \
-X GET https://api.massive.app/v1.1/teams/$TEAM_ID/portals?page=0\&limit=1
This endpoint returns an HTTP response with a status code of 200 OK
and a body similar to the one below.
{
"metadata": {
"total": 12
},
"records": [
{
"access_level": "regular",
"access_list": [],
"active": true,
"cloud_connections": [],
"created_at": "2024-05-13T15:18:30.272Z",
"custom_expiry_days": 0,
"disable_upload_receipt": false,
"expiry": "0001-01-01T00:00:00.000Z",
"expiry_enabled": false,
"file_type_restriction_enabled": false,
"file_type_restriction_exclude": false,
"file_types": [],
"has_access_code": false,
"has_download_password": false,
"id": "E1XXA8MAP0L2EZNQSGPRJ1TYKF",
"max_file_count": 0,
"max_file_size": 0,
"max_package_size": 0,
"message": "Welcome to the Second Unit Portal!",
"name": "Second Unit",
"package_name_format": {
"label": "",
"value": ""
},
"package_name_format_enabled": false,
"package_size_restriction_enabled": false,
"primary_color": "#0078D4",
"recipients": [
"[email protected]"
],
"subdomain": "example",
"terms_of_service": {
"checkbox_label": "",
"checkbox_url": "",
"description": "",
"title": ""
},
"terms_of_service_enabled": false,
"updated_at": "2024-05-13T15:18:30.272Z"
}
]
}
Response Properties:
Property | Description |
---|---|
metadata |
Information about all of the Team's Portals. The total property is the total number of Portals in the Team that meet your request's criteria. |
records |
An array of up to limit Portal objects |
Listing Portal packages
Authorized users can list packages uploaded to any Portal under their Team(s) subject to the access policy.
To paginate through all Portal packages, use the metadata.total
property in the response. It contains the total number of packages that meet your request's criteria.
To retrieve a list of packages that were sent to a Team, see Listing sent packages.
Info
This request uses version 1.1 of the API. To retrieve a list of Portals with version 1.0 of the API, see Listing Portal packages (legacy).
Method | Route |
---|---|
GET |
/v1.1/portals/{portal_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 | Page number of records to respond. Default: 1 . |
limit |
Integer | No | The number of records in a page, from 1 to 50. Default: 50 . |
sort |
String | No | Sort results ascending (fieldname ) or descending (-fieldname ). |
tags |
String | No | Retrieve records where the package tag is equal to one of the tag IDs in this string of comma-separated IDs |
sender |
String | No | Retrieve records that match the package sender’s email address |
created_at_start |
String | No | Retrieve records where the package was created on or after a date. Accepted format: ISO 8601. |
created_at_end |
String | No | Retrieve records where the package was created on or before a date. Accepted format: ISO 8601. |
PATH PARAMETERS
Name | Type | Required | Description |
---|---|---|---|
portal_id |
String | Yes | The Portal ID to get packages from |
REQUEST
curl -H "Content-Type: application/json" \
-H "X-API-KEY: $API_KEY" \
-X GET https://api.massive.app/v1.1/portals/$PORTAL_ID/packages?page=0\&limit=3
After a successful request, this endpoint will return an HTTP response with a status code of 200 OK
and a body similar to the one below:
{
"metadata": {
"total": 95
},
"records": [
{
"access_token": "eyxhaGmipilIe",
"contains_virus": false,
"created_at": "2024-08-29T15:58:55.990Z",
"custom_expiry": false,
"description": "Fiumefreddo Bruzio photo shoot",
"extra_storage": false,
"extra_storage_updated_at": "2024-08-29T15:58:55.990Z",
"id": "E1X6ADMZPPLTE3Z7ADNJ136G3G",
"name": "Marchesa upload - 202408291558",
"recipients": [
"[email protected]"
],
"sender": "[email protected]",
"size": 17772543372,
"state": "finalized",
"teamspace": {
"id": "E1X6ANMGP3L5E9KFG1DF9W9J71",
"name": "Marchesa"
},
"unlimited_storage": false,
"updated_at": "2024-08-29T15:59:06.027Z",
"usage_updated_at": "2024-08-29T15:58:55.990Z"
}
]
}
Note
If the referenced Portal has a tag, each package created after the Portal was given a tag will have the Portal's tag.
Response Properties:
Property | Description |
---|---|
metadata |
Information about all of the Portal's packages. The total property is the total number of packages in the Portal that meet your request's criteria. |
records |
An array of up to limit Portal package objects |
Listing Portal package files
Authorized users can list package files uploaded to any Portal under their Team(s), subject to the access policy. The listing will include all files that are a part of the uploaded package.
Method | Route |
---|---|
GET |
/v1/packages/{package_id}/files |
HEADERS
Name | Type | Required | Description |
---|---|---|---|
X-Package-Token |
String | Yes | Package JSON Web Token |
PATH PARAMETERS
Name | Type | Required | Description |
---|---|---|---|
package_id |
String | Yes | Package ID for which to grab data from. |
REQUEST
curl -H "X-Package-Token: $PACKAGE_TOKEN" \
-X GET https://api.massive.app/v1/packages/$PACKAGE_ID/files
After a successful request, this endpoint will return an HTTP response with a status code of 200 OK
and a body similar to the one below:
[
{
"id": "01CNH4M62EFJFX5F7XTC9GZWDF",
"kind": "file",
"name": "photo.jpg",
"path": "/some/directory",
"size": 193022,
"last_modified": "2018-08-22T11:39:10.280-04:00"
},
{
"id": "01CNH4M86PKYWPKSK8EWEFEQPS",
"kind": "file",
"name": "my-image.png",
"path": "/anotherpath",
"size": 72012,
"last_modified": "2018-08-22T11:39:10.280-04:00"
},
{
"id": "01CNH4M8J88WSVS7P3NMB1HG42",
"kind": "zip_windows",
"name": "windows.zip",
"last_modified": "2018-08-22T11:39:10.280-04:00"
},
{
"id": "01CNH4M8JMXHTWCTTS8R2PJFVE",
"kind": "zip_mac",
"name": "mac.zip",
"last_modified": "2018-08-22T11:39:10.292-04:00"
}
]
Property | Description |
---|---|
id |
The file id requested. |
kind |
Indicates the kind of file. Possible Values: file , directory , zip_windows , zip_mac |
name |
File or directory name. |
path |
The relative path in file system. |
size |
The file size in bytes. (If applicable) |
last_modified |
File's last modification date. |
Archiving Portal packages
Authorized users can archive or unarchive multiple packages that were previously in an expired
state and received through a specific Portal, subject to the access policy.
Archived packages can be separated from Expired packages using the filters on the package list. The Unarchive action will put the packages back to an expired
state.
Method | Route |
---|---|
PUT |
/v1/portals/{{ portal_id }}/packages/{{ package_id }}/archive |
PUT |
/v1/portals/{{ portal_id }}//packages/{{ package_id }}/unarchive |
HEADERS
Name | Type | Required | Description |
---|---|---|---|
X-API-KEY |
String | Yes | API key |
Content-Type |
String | Yes | Must be application/json |
BODY
Name | Type | Required | Description |
---|---|---|---|
expiry_start |
String | Yes | Earliest package expiry date-time to archive/unarchive from |
expiry_end |
String | Yes | Latest package expiry date-time to archive/unarchive to |
PATH PARAMETERS
Name | Type | Required | Description |
---|---|---|---|
package_id |
String | Yes | Package ID for which to grab data from. |
portal_id |
String | Yes | The Portal id that we are getting packages from. |
REQUEST
curl -d "{\"expiry_start\": \"$EXPIRY_START\", \"expiry_end\": \"$EXPIRY_END\"}" \
-H "X-API-KEY: $API_KEY" \
-H "Content-Type: application/json" \
-X POST https://api.massive.app/v1/portals/$PORTAL_ID/packages/archive
After a successful request to archive or unarchive packages, this endpoint will return an HTTP response with a status code of 200 OK
and include a body similar to the one below.
{
"total_updated": 51
}
Response Properties:
Property | Description |
---|---|
total_updated |
Number of records that were effected. |
Deleting a Portal
The MASV API allows authorized users to delete Portals that they have created.
Method | Route |
---|---|
DELETE |
/v1/portals/{portal_id} |
HEADERS
Name | Type | Required | Description |
---|---|---|---|
X-API-KEY |
String | Yes | API key |
PATH PARAMETERS
Name | Type | Required | Description |
---|---|---|---|
portal_id |
String | Yes | The id of the Portal to delete |
REQUEST
curl -X DELETE \
-H "X-API-KEY: $API_KEY" \
https://api.massive.app/v1/portals/$PORTAL_ID
After a successful request where a Portal has been deleted, this endpoint will return an HTTP response with a status code of 204 No Content
and an empty body.
Cloud connection object
Represents how a Portal interacts with a cloud connection.
Name | Type | Required | Description |
---|---|---|---|
id |
String | Yes | ID of the Could Connection. |
target_action |
String | Yes | Action to be taken using this connection (ie. transfer ). |
sync_metadata |
Boolean | No | If true , MASV metadata will be synced with the cloud connection provider external metadata if supported. Default is false . |
Teamspace object
Represents the Teamspace a Portal belongs to.
Name | Type | Required | Description |
---|---|---|---|
id |
String | No | ID of the Teamspace |
name |
String | No | Name of the Teamspace |
Custom webhook object
Represents a custom webhook to associate with a Portal.
Name | Type | Required | Description |
---|---|---|---|
id |
String | Yes | ID of the Custom Webhook. |
Tag object
Represents a tag to associate with packages sent with a Portal.
Name | Type | Required | Description |
---|---|---|---|
id |
String | Yes | ID of the Tag. |
name |
String | Yes | The name given to the Tag. |
Terms of service object
Represents custom terms of service.
Name | Type | Required | Description |
---|---|---|---|
checkbox_label |
String | Yes | The label of the Terms of Service checkbox. |
checkbox_url |
String | No | URL for the Terms of Service external page. |
title |
String | No | The Terms of Service title. |
description |
String | No | The Terms of Service description. |
Package name format object
Represents the syntax for a valid package name.
Name | Type | Required | Description |
---|---|---|---|
value |
RegExp | Yes | Regular expression pattern that package names must match |
label |
String | Yes | Description shown to end users to explain the format |
Portal object
Represents a Portal in a Team.
Property | Type | Description |
---|---|---|
access_level |
String | Portal access level, regular or private . |
access_list |
Array of users | Registered MASV users with access to the private Portal and its received packages. It is empty for regular Portals. |
active |
Boolean | Enable or disable Portal page. Default: false . |
cloud_connections |
Array of cloud connections | Cloud connections attached to the Portal. See Cloud connect. |
created_at |
String | Date-time that the Portal was created in ISO 8601 format |
custom_expiry_days |
Integer | Length of storage days for packages that belong to the Portal. Must be from -1 to 65535 . |
custom_webhooks |
Array of custom webhooks | Custom webhooks attached to the Portal. See Custom webhooks. |
disable_upload_receipt |
Boolean | Enable or disable the sending of a confirmation email to the uploader. Default: false . |
download_password |
String | Password to protect download access on any package uploaded to this Portal. Must be set if has_download_password is true . |
has_access_code |
Boolean | Enable or disable the access code for the Portal web page. |
has_download_password |
Boolean | Enable or disable the download password for Portal packages. Default: false . |
id |
String | The Portal's unique ID |
message |
String | Message displayed on the Portal upload page. |
name |
String | Portal name |
primary_color |
String | HTML hex code for primary color used on Portal page. |
recipients |
Array of strings | Email(s) that will receive notifications for Portal uploads. |
subdomain |
String | Subdomain of the Portal. Example: https://subdomain.portal.massive.io/ |
tag |
Tag | The Portal's tag. If it exists, all packages created on the Portal are assigned this tag. See Tags. |
teamspace |
Teamspace | Teamspace that the Portal is bound to. See Teamspaces. |
updated_at |
String | Date-time that the Portal was last modified in ISO 8601 format |
Portal package object
Property | Type | Description |
---|---|---|
access_limit |
Integer | Default access limit for new links to restrict download access to the package. A 0 value indicates that no default has been set. |
access_token |
String | Access token for managing and retrieving the package. It allows read/write access for requests the retrieve and modify the package. |
contains_virus |
Boolean | If this package contains a virus |
created_at |
String | Date-time that the package was created in ISO 8601 format |
custom_expiry |
Boolean | If a custom expiry date was set |
description |
String | Package description |
form_data_id |
String | The ID of the form response that contains the data associated with this package, if any. See Submitting a form response. |
id |
String | The package's unique ID |
name |
String | Package name |
password |
String | A non-empty value indicates that there is a default password for the package for all new links to use. An empty or missing password means that no default password is set. |
recipients |
Array of Strings | Email addresses of recipients of the package |
sender |
String | Sender’s email address |
size |
Integer | Package size in bytes |
state |
String | Current status of the package: new , finalized , expired , or archived |
unlimited_storage |
Boolean | If unlimited storage is enabled or disabled |
updated_at |
String | When the package metadata was last modified, in ISO 8601 format |
usage_updated_at |
String | When the package was last downloaded, in ISO 8601 format |
tag |
Tag | Tag assigned to the package. See Tags. |
Access list object
Represents a registered MASV user to associate with a Portal.
Name | Type | Required | Description |
---|---|---|---|
membership_id |
String | No | User's membership ID |
name |
String | No | User's name |
email |
String | No | User's email |