> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devmob.app.br/llms.txt
> Use this file to discover all available pages before exploring further.

# SupportCaseAttachment

> Anexo associado a um chamado ou mensagem de suporte

O `SupportCaseAttachment` representa um arquivo anexado a um [SupportCase](/data-modelling/support/support-case), normalmente por meio de uma [SupportCaseMessage](/data-modelling/support/support-case-message).

## Campos

| Campo                     | Tipo        | Descrição                                  |
| ------------------------- | ----------- | ------------------------------------------ |
| `supportCaseAttachmentId` | `UUID`      | Identificador único                        |
| `supportCaseId`           | `UUID`      | Referência ao chamado                      |
| `supportCaseMessageId`    | `UUID?`     | Referência à mensagem que originou o anexo |
| `uploadedByUserId`        | `UUID?`     | Usuário que enviou o arquivo               |
| `storageKey`              | `String`    | Chave do objeto no storage                 |
| `fileName`                | `String`    | Nome original do arquivo                   |
| `contentType`             | `String`    | MIME type do arquivo                       |
| `sizeBytes`               | `Int`       | Tamanho do arquivo em bytes                |
| `createdAt`               | `DateTime`  | Data de criação                            |
| `deletedAt`               | `DateTime?` | Data de remoção lógica                     |

## Relacionamentos

* Relaciona-se com [SupportCase](/data-modelling/support/support-case).
* Relaciona-se com [SupportCaseMessage](/data-modelling/support/support-case-message), quando o anexo veio de uma mensagem.
* Relaciona-se com [User](/data-modelling/identity/user) como usuário de upload.

## Regras de Negócio

* Todo anexo pertence a um chamado via `supportCaseId`.
* `supportCaseMessageId` é opcional para permitir anexos no nível do chamado.
* `storageKey` deve apontar para um arquivo privado no storage.
* A autorização de leitura do anexo deve seguir a autorização do chamado e a visibilidade da mensagem, quando houver `supportCaseMessageId`.
* Remoção lógica do anexo não deve remover o chamado nem a mensagem.

## Example

```json theme={null}
{
  "supportCaseAttachmentId": "0197f153-4269-7183-b91c-4d73c8ccb191",
  "supportCaseId": "0197f150-40d6-7c1a-bdf2-c5884e07d401",
  "supportCaseMessageId": "0197f152-58dd-70c7-a69d-35ecda7ff28f",
  "uploadedByUserId": "0197a7f6-2c4d-74ae-b89b-9d36d9c341f2",
  "storageKey": "support-cases/0197f150-40d6-7c1a-bdf2-c5884e07d401/qr-error.png",
  "fileName": "qr-error.png",
  "contentType": "image/png",
  "sizeBytes": 182440,
  "createdAt": "2026-07-04T10:16:10.000Z",
  "deletedAt": null
}
```
