---
title: "Sign"
description: "E-signering. Varje app är en modul i en gemensam datamodell."
canonical: "https://obop.dev/sv/apps/sign/"
lang: "sv"
---

# Sign

## Vad den är till för

Manage templates and signature requests through draft, sent, signed, declined and expired, and record the document hash that was signed. The platform cannot yet lock a record, so a signed request is immutable by convention only.

## Vad paketet gör och inte gör

Document templates and signature requests with a draft, sent, signed, declined, expired flow. A request names the signer (personal data) and keeps the signature evidence as references. A signed request is immutable by convention only: the platform cannot yet lock a record, so nobody should edit a request once it is signed, and the document_hash records what was signed. Sending and recording a signature need a human approval; agents may only propose them.

## Modeller

### `sign_template`

A document that can be sent out for signature

Läsgrupp: `sign.user`. Skrivgrupp: `sign.manager`.

| Fält | Typ | Dataklass | Personuppgift | Grupp | Agenter ser | Beskrivning |
|---|---|---|---|---|---|---|
| `name` | text | `none` | nej | `sign.user` | i klartext | Template name, for example Employment contract |
| `description` | longtext | `none` | nej | `sign.user` | i klartext | What the document is for and who signs it |
| `body` | longtext | `none` | nej | `sign.user` | i klartext | The document text, or a reference to where the file is kept |
| `signer_role` | text | `none` | nej | `sign.user` | i klartext | Role of the person who signs, for example Customer |
| `active` | bool | `none` | nej | `sign.user` | i klartext | Whether new requests can use the template |

### `sign_request`

A request for one person to sign one document

Läsgrupp: `sign.user`. Skrivgrupp: `sign.user`.

| Fält | Typ | Dataklass | Personuppgift | Grupp | Agenter ser | Beskrivning |
|---|---|---|---|---|---|---|
| `template_id` | ref → sign_template | `none` | nej | `sign.user` | i klartext | The document to sign |
| `title` | text | `none` | nej | `sign.user` | i klartext | Subject shown to the signer |
| `message` | longtext | `none` | nej | `sign.user` | i klartext | Message shown to the signer in the request |
| `signer_name` | text | `internal` | ja | `sign.user` | maskerad | Name of the person who must sign |
| `signer_email` | text | `internal` | ja | `sign.user` | maskerad | Email address the request is sent to |
| `sent_on` | date | `none` | nej | `sign.user` | i klartext | Day the request was sent (YYYY-MM-DD) |
| `expires_on` | date | `none` | nej | `sign.user` | i klartext | Last day the request can be signed (YYYY-MM-DD) |
| `signed_on` | date | `none` | nej | `sign.user` | i klartext | Day the document was signed (YYYY-MM-DD) |
| `signer_ip` | text | `internal` | ja | `sign.manager` | maskerad | IP address the signature came from (evidence) |
| `signer_user_agent` | text | `internal` | ja | `sign.manager` | maskerad | Browser the signature was made with (evidence) |
| `signature_reference` | text | `none` | nej | `sign.manager` | i klartext | Where the signature image or certificate is stored |
| `document_hash` | text | `none` | nej | `sign.manager` | i klartext | SHA-256 hash (hex) of the signed document, to prove it was not changed afterwards |
| `state` | select (draft, sent, signed, declined, expired) | `none` | nej | `sign.user` | i klartext | Request status: draft, sent, signed, declined, expired |

## Arbetsflöden

### `sign_request`

| Åtgärd | Flyttar | Vem får köra den | Godkännande |
|---|---|---|---|
| `sign_request.send` | state: draft → sent | `sign.user` | ja |
| `sign_request.sign` | state: sent → signed | `sign.manager` | ja |
| `sign_request.decline` | state: sent → declined | `sign.user` | nej |
| `sign_request.expire` | state: sent → expired | `sign.user` | nej |

## Behörighetsgrupper

Grupper som den här appen använder:

- `sign.manager`
- `sign.user`

## Steg som kräver godkännande

Steg som en agent bara kan föreslå:

- `sign_request.send`
- `sign_request.sign`

## Vad agenter kan och inte kan göra

En agent kan läsa, söka, skapa och uppdatera poster i den här appen, och köra de åtgärder som inte kräver godkännande, inom behörighetsgrupperna för sin token.

Den kan bara föreslå de här stegen, och en person måste godkänna dem: `sign_request.send`, `sign_request.sign`, `sign_template.delete`, `sign_request.delete`.

Personuppgifter maskeras som platshållare: `sign_request.signer_name`, `sign_request.signer_email`, `sign_request.signer_ip`, `sign_request.signer_user_agent`.

## Beroenden

Inga.

## Installera

Installera den från appen Customize (Marknadsplats), eller från kommandoraden:

```bash
obop modules install-from sign
```

Kräver en databas och administratörsbehörighet.

## Bygg din egen

[Modulguiden visar hur appar som den här skrivs](/sv/docs/reference/module-manifest/)
