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:
| Type | Storage | Behavior |
|---|---|---|
| Upload | Stored in smenso | File content is uploaded and can be downloaded via the API. |
| OneDrive/SharePoint link | Stored in Microsoft 365 | smenso 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
| Action | Method | Endpoint |
|---|---|---|
| Download attachment | GET | /api/integration/attachment/json/{attachmentId} |
| Delete attachment | DELETE | /api/integration/attachment/json/{attachmentId} |
Project attachments:
| Action | Method | Endpoint |
|---|---|---|
| Upload project attachment | POST | /api/integration/attachment/project/json/{projectId} |
| Get project attachments | GET | /api/integration/attachment/project/json/{projectId} |
Task attachments:
| Action | Method | Endpoint |
|---|---|---|
| Upload task attachment | POST | /api/integration/attachment/task/json/{taskId} |
| Get task attachments | GET | /api/integration/attachment/task/json/{taskId} |
Status report attachments:
| Action | Method | Endpoint |
|---|---|---|
| Upload status report attachment | POST | /api/integration/attachment/statusreport/json/{statusReportId} |
| Get status report attachments | GET | /api/integration/attachment/statusreport/json/{statusReportId} |
Integration XML API / Reporting API
| Action | Method | Endpoint |
|---|---|---|
| Get attachment (XML) | GET | /api/integration/attachment/{attachmentId} |
| Download attachment (Reporting) | GET | Reporting attachment endpoint |
Attachment Response Fields
When listing attachments, the response contains the following fields:
| Field | Type | Description |
|---|---|---|
id | string (GUID) | Unique attachment ID. Use this for download or delete operations. |
name | string | Original file name |
size | number | File size in bytes |
type | string | File extension (e.g. .pdf, .gif) |
uploadedById | string (GUID) | ID of the user who uploaded the file |
uploadedBy | string | Display name of the uploader |
uploadedOn | date-time | Upload 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: TheprojectOnlyparameter controls the scope of the response. Set it totrueto fetch only files attached in the project details (master data), orfalse/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:
- Use the JSON API list endpoints to get attachment metadata including IDs.
- Use the Reporting API to download attachments or documents directly.
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
- Attachments in the smenso Help Center – UI workflows, permissions, and troubleshooting
- Status Reports Guide – Attachments in the context of status reports
- Permissions & Privacy Guide – How access control works
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.
Updated 19 days ago
