File attachments

Set who outside the company can see an attachment

Replaces the list of outside audiences that may see an attachment in their own portal. Sending an empty list, or leaving the field out, makes the file internal again.

PUT
https://api.portal.magicdoor.com/company-app/file-attachments/{entityType}/{entityId}/{fileAttachmentId}/share-types

Authorization

Authorizationstringrequired
Bearer token — Send your API token in the Authorization header as Bearer <token>. Requests without a valid token are rejected with 401 Unauthorized.

Path parameters

entityTypeenum<string>required

What kind of record the file hangs off. Written in the path in lower case, for example lease.

example: leaseleaseunitpropertyportfoliocompanytenantvendormaintenanceRequestworkOrderbilltransactionchatchatMessagepropertyManagerunknownrentalApplicationleaseTemplateleaseDocumentassociationViolationownerunitListingfileworkOrderGroup
entityIdstringrequired

The record the file hangs off, of the kind named by entityType. A Snowflake id sent as a decimal string.

example: 1830472847398404096
fileAttachmentIdstringrequired

The attachment to act on. A Snowflake id sent as a decimal string.

example: 1830472847398420020

Body

application/json

shareTypesenum<string>[]

The audiences that may see the file. Only these three are allowed. This replaces the whole list.

tenantvendorowner

Response

200 · The attachment with its new `shareTypes`.

idstring

The attachment. A Snowflake id sent as a decimal string. Different from file.id, which is the stored file.

fileNamestring

Name shown for the attachment.

descriptionstring

Note about the attachment. Absent when none was set.

createdstring · date-time

When the file was attached, in the company's timezone.

uploaderNamestring

Name of whoever attached it. Absent when it is not known.

uploaderTypestring

What kind of user attached it, written in PascalCase: System, MagicDoor, PropertyManager, Tenant, Vendor or Owner. Absent when it is not known.

shareTypesstring[]

Which outside audiences can see the file, written in PascalCase: Tenant, Vendor or Owner. Empty when it is internal only.

relationTypeenum<string>

What kind of record the file hangs off.

leaseunitpropertyportfoliocompanytenantvendormaintenanceRequestworkOrderbilltransactionchatchatMessagepropertyManagerunknownrentalApplicationleaseTemplateleaseDocumentassociationViolationownerunitListingfileworkOrderGroup
relationIdstring

The record the file hangs off.

fileobject

The stored file itself.

fileIdstringdeprecated

Same value as file.id.

fileUrlstringdeprecated

Pre-signed URL for the file. Use file.secureUrl.raw instead.

fileThumbUrlstringdeprecated

Pre-signed thumbnail URL. Use file.secureUrl.variantTemplate instead.

fileSizeBytesintegerdeprecated

Same value as file.size.

propertyIdstringdeprecated

Set to relationId when relationType is property, otherwise absent. Use relationType and relationId.

leaseIdstringdeprecated

Set to relationId when relationType is lease, otherwise absent. Use relationType and relationId.

400 · `shareTypes` held a value other than tenant, vendor or owner.

401 · The access token is missing, expired, or not valid for this company.

404 · No file attachment with that id exists in the caller's company.

`shareTypes` and `uploaderType` are PascalCase

Most enums in this API come back camelCased. These two do not: they are turned into strings by hand, so you get Tenant, not tenant. On the way in, shareTypes is a real enum and is read case-insensitively.

Adding an audience makes the file visible to real people outside the company straight away. There is no draft or review step.