Attachments

Attachments in smenso allow files to be linked to objects such as project details, tasks, and status reports. They are commonly used to store supporting documents, specifications, images, or other artifacts that are relevant for execution and reporting. In the UI, all attachments from a project context also show up in the project's Files tab so users can find and manage everything in one place.


Attachment Types

smenso supports two attachment types:

TypeStorageBehavior
UploadStored in smensoFile content is uploaded and can be downloaded via the API.
OneDrive/SharePoint linkStored in Microsoft 365smenso stores a reference. The file remains in Microsoft 365 and is displayed as a link. Microsoft permissions still apply.
📘

The maximum file size for uploads is 500 MB.


Available Endpoints

Integration JSON API

ActionMethodEndpoint
Download attachmentGET/api/integration/attachment/json/{attachmentId}
Delete attachmentDELETE/api/integration/attachment/json/{attachmentId}

Project attachments:

ActionMethodEndpoint
Upload project attachmentPOST/api/integration/attachment/project/json/{projectId}
Get project attachmentsGET/api/integration/attachment/project/json/{projectId}

Task attachments:

ActionMethodEndpoint
Upload task attachmentPOST/api/integration/attachment/task/json/{taskId}
Get task attachmentsGET/api/integration/attachment/task/json/{taskId}

Status report attachments:

ActionMethodEndpoint
Upload status report attachmentPOST/api/integration/attachment/statusreport/json/{statusReportId}
Get status report attachmentsGET/api/integration/attachment/statusreport/json/{statusReportId}

Integration XML API / Reporting API

ActionMethodEndpoint
Get attachment (XML)GET/api/integration/attachment/{attachmentId}
Download attachment (Reporting)GETReporting attachment endpoint

Attachment Response Fields

When listing attachments, the response contains the following fields:

FieldTypeDescription
idstring (GUID)Unique attachment ID. Use this for download or delete operations.
namestringOriginal file name
sizenumberFile size in bytes
typestringFile extension (e.g. .pdf, .gif)
uploadedByIdstring (GUID)ID of the user who uploaded the file
uploadedBystringDisplay name of the uploader
uploadedOndate-timeUpload timestamp

Typical Integration Workflows

1) List attachments (get attachment IDs)

To download or delete an attachment, you first need its attachmentId. Use the list endpoint for the relevant context:

Example response:

[
  {
    "id": "fa255fd8-2572-4881-92a9-2f5921b04d35",
    "name": "test.gif",
    "size": 912712,
    "type": ".gif",
    "uploadedById": "12345678-aa12-3d4f-ab5e-ad6e78dffbc9",
    "uploadedBy": "Jane Doe",
    "uploadedOn": "2026-02-12T09:49:49.3011721+00:00"
  }
]
📘

Project attachments: The projectOnly parameter controls the scope of the response. Set it to true to fetch only files attached in the project details (master data), or false/omit to fetch all files across the project (including task and status report attachments).

2) Download an attachment

Use Download attachment with the attachmentId:

curl --request GET \
     --url https://customersubdomain.smenso.cloud/skyisland/api/integration/attachment/json/fa255fd8-2572-4881-92a9-2f5921b04d35 \
     --header 'Authorization: Basic xxxx' \
     --header 'accept: application/json'
📘

For uploaded attachments, the endpoint returns the file content as binary data. For OneDrive/SharePoint-linked attachments, the endpoint returns metadata including the link URL – the file content itself must be retrieved from Microsoft 365.

3) Upload a new attachment

Use the upload endpoint that matches the context:

Example (upload to a project):

curl --request POST \
     --url https://customersubdomain.smenso.cloud/skyisland/api/integration/attachment/project/json/{projectId} \
     --header 'Authorization: Basic xxxx' \
     --header 'Content-Type: multipart/form-data' \
     --form 'file=@/path/to/document.pdf'
📘

The maximum file size is 500 MB. For status report attachments, the report must be saved (at least as a draft) before files can be attached.

4) Delete an attachment

Use Delete attachment with the attachmentId:

curl --request DELETE \
     --url https://customersubdomain.smenso.cloud/skyisland/api/integration/attachment/json/fa255fd8-2572-4881-92a9-2f5921b04d35 \
     --header 'Authorization: Basic xxxx'

Special Case: XML / Reporting Endpoint

The XML/Reporting endpoint does not return attachment IDs by default. To access them, you need to create a Formula Flavor in the UI that exposes the attachmentId for the respective object (e.g., project, task, or status report). Once you have the IDs, you can download or manage the attachments via the dedicated attachment endpoints.

You can also retrieve attachment IDs programmatically:


Permissions & Visibility

Attachments follow the permission model of their parent object:

  • If a user cannot view the project/task/status report, they cannot access its attachments.
  • If visibility or access restrictions apply, attachment retrieval is limited accordingly.
  • For OneDrive/SharePoint links, Microsoft permissions apply as well.
  • When linking from OneDrive/SharePoint, smenso sets Microsoft sharing defaults so the file is shared within your Microsoft 365 organization and is editable for organization members.

If a user cannot perform an action in the UI, the API will not allow it either.


Further Reading


Learn more about attachments > smenso Help Center

While this API reference documents fields, requests, and responses or our API, the Help Center explains how workflows and features work in practice - how to set them up, which permissions apply, and how to use them.