# List Invitation-Linkable Files

`GET https://api.suger.cloud/org/{orgId}/prm/partner/invitation/linkable-file`

List partner files that may be linked from a partner invitation email — only files shared with All Partners and available for download. The recipient of an invitation is not a partner yet, so this deliberately never returns Private, Specific-Partners, or non-downloadable files. Feed a returned file's id (as a FILE-kind referenced document) to CreatePrmInvitation or GeneratePrmInvitationEmail.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `orgId` | path | string | yes | Organization ID |
| `q` | query | string | no | CRUD filter (LISP expression) |
| `s` | query | string | no | Sort field |
| `limit` | query | integer | no | Page size |
| `offset` | query | integer | no | Page offset |

## Responses

### 200 — OK

Content-Type: `application/json` · Schema: `ListBaseResponse-PartnerFile`

**`ListBaseResponse-PartnerFile`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | array<PartnerFile> | no |  |
| `page_number` | integer | no |  |
| `page_size` | integer | no |  |
| `total_count` | integer | no | TotalCount is the number of matching rows, counted up to ListCountCap. When TotalCountCapped is true it is that cap rather than the real total. |
| `total_count_capped` | boolean | no | TotalCountCapped reports that more rows match than TotalCount says: the count stopped at ListCountCap because an exact total costs a full scan of everything the filter matches. Clients should present TotalCount as a lower bound ("10,000+") when this is set. Omitted when false, so clients that predate the field are unaffected. |

**`PartnerFile`** fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `allowDownload` | boolean | no | Whether partners can download (vs preview only) |
| `category` | string | no | sales_enablement, product_documentation, marketing_assets, technical_resources, case_studies, legal_compliance, onboarding |
| `createTime` | string | no | Creation timestamp |
| `deletedAt` | string | no | Soft-delete marker. NULL = active. |
| `description` | string | no | Optional description |
| `externalId` | string | no | The file's ID in the source CRM. Nil for manual uploads. |
| `fileType` | string | no | pdf, pptx, docx, xlsx, mp4, image, zip, other |
| `id` | string | no | ID of the ent. Unique partner file identifier (UUID) |
| `lastUpdateTime` | string | no | Last update timestamp |
| `mimeType` | string | no | Content-Type captured from upload |
| `name` | string | no | Display name |
| `s3Bucket` | string | no | S3 bucket name (org-file bucket) |
| `s3Key` | string | no | Full S3 object key |
| `sharingMode` | string | no | private, all_partners, specific_partners |
| `sizeBytes` | integer | no | File size in bytes |
| `source` | string | no | Origin of the file: empty = uploaded by the user in Suger; otherwise the source CRM (e.g. salesforce) |
| `sourceOrgId` | string | no | Uploader org (ISV org for ISV uploads, partner org for partner uploads) |
| `targetOrgId` | array<string> | no | Recipient org IDs that can see this file. Empty for ISV private/all_partners files. Single element for partner uploads (the ISV org). |
| `uploadedByUserId` | string | no | Suger user ID for ISV uploads, partner email for partner uploads |
| `uploadedByUserName` | string | no | Display name of the uploader, denormalized at upload time |

### 400 — Bad request error

Content-Type: `application/json`

## Example

_Generated from this operation's schema. Values are placeholders — substitute your own ids, and set `SUGER_TOKEN` to a bearer token from the [OAuth client-credentials exchange](https://doc.suger.io/get-started/oauth-app/)._

### Request

```bash
curl -X GET 'https://api.suger.cloud/org/{orgId}/prm/partner/invitation/linkable-file' \
  -H "Authorization: Bearer $SUGER_TOKEN"
```

### Response — 200

```json
{
  "data": [
    {
      "allowDownload": true,
      "category": "string",
      "createTime": "2026-01-31T12:00:00Z",
      "deletedAt": "string",
      "description": "string",
      "externalId": "01H0000000000000000000",
      "fileType": "string",
      "id": "01H0000000000000000000",
      "lastUpdateTime": "2026-01-31T12:00:00Z",
      "mimeType": "string",
      "name": "Acme Corp",
      "s3Bucket": "string"
    }
  ],
  "page_number": 1,
  "page_size": 1,
  "total_count": 1,
  "total_count_capped": true
}
```

### Error — 400

```json
"string"
```

---

Interactive API reference: https://doc.suger.io/api/
