Skip to content

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 to regular
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
After a successful request where a Portal has been updated, this endpoint will return an HTTP response with a status code of 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