# Downloads and links (/ai/reference/content/content-downloads)

Toolset `content_downloads`, 5 tools.

## Records [#records]

### `product_download` [#product_download]

The files and links attached to a product itself, in the order the product page's guides and downloads tab shows them, before its guides' own. There is no get; the list rows are the full records.

- Permission: `products.read`
- Tools: `product_download_list`

Filters on the list:

| Filter | Type | Required | Description |
| --- | --- | --- | --- |
| `product_id` | string | yes | Product ID. at least 1 characters |

## Actions [#actions]

### `content_attachment_remove` [#content_attachment_remove]

Drop a download or link from a guide or page; the media library keeps the file.

Read attachment ids with content_entry_get.

- Action key: `content_attachment.remove`
- Permission: `content.write`
- Approval: Always waits for a person to approve it.
- Effect: Changes the live store.
- Destructive: in compact mode it runs with `run_destructive_action`.
- Retries: safe to repeat with the same input.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `attachment_id` | string | yes |  |

Example input:

```json
{
  "attachment_id": "019bb1e8-3f94-76da-9cef-8e8afee95e99"
}
```

### `content_attachment_update` [#content_attachment_update]

Add, change or reorder the downloads and links attached to a guide or page.

op add attaches a library file or a link to an entry; update changes one attachment (title, facts); reorder takes every attachment id of the entry in the new order. Read attachment ids with content_entry_get; content_attachment_remove drops one.

- Action key: `content_attachment.update`
- Permission: `content.write`
- Approval: Waits for approval when the store requires it for this action.
- Effect: Changes the live store.
- Retries: runs at most once; a repeat with the same idempotency key returns the first result.

Takes no input.

Example inputs:

```json
{
  "op": "add",
  "entry_id": "019bb20c-0471-71a7-9c3a-ba01e7253fcf",
  "kind": "link",
  "title": "Manual",
  "url": "https://example.com/manual"
}
```

```json
{
  "op": "update",
  "attachment_id": "019bb1e8-3f94-76da-9cef-8e8afee95e99",
  "title": "User manual"
}
```

### `product_download_remove` [#product_download_remove]

Drop a file or link from a product; the media library keeps the file.

Read download ids with product_download_list.

- Action key: `product_download.remove`
- Permission: `products.write`
- Approval: Always waits for a person to approve it.
- Effect: Changes the live store.
- Destructive: in compact mode it runs with `run_destructive_action`.
- Retries: safe to repeat with the same input.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `product_id` | string | yes |  |
| `download_id` | string | yes |  |

Example input:

```json
{
  "product_id": "019bb58e-0ec1-79c1-9f40-d39d8d07674b",
  "download_id": "019bb1f6-2e10-7341-823d-8e112c8204ba"
}
```

### `product_download_update` [#product_download_update]

Add, change or reorder the files and links attached to a product.

op add attaches a media library file (kind file, media_id from media_list) or a link; it shows after the product's other downloads. update changes one download's title or facts, reorder takes every download id once in the new order. product_download_remove drops one.

- Action key: `product_download.update`
- Permission: `products.write`
- Approval: Waits for approval when the store requires it for this action.
- Effect: Changes the live store.
- Retries: runs at most once; a repeat with the same idempotency key returns the first result.

Takes no input.

Example inputs:

```json
{
  "op": "add",
  "product_id": "019bb58e-0ec1-79c1-9f40-d39d8d07674b",
  "kind": "file",
  "title": "Installer",
  "media_id": "019bb376-6c29-7c26-ae15-8fc079ac5f2b",
  "platform": "Windows"
}
```

```json
{
  "op": "reorder",
  "product_id": "019bb58e-0ec1-79c1-9f40-d39d8d07674b",
  "ids": [
    "019bb1f8-edce-73e6-aadd-49b21c145e6c",
    "019bb1f6-2e10-7341-823d-8e112c8204ba"
  ]
}
```
