# Agendas · API DameDokladu

> Operace ve skupině Agendas.

Source: https://damedoklad.cz/docs/api-reference/agendas/

# Agendas

Operace ve skupině Agendas.

## List batches of evidence náhradního plnění

GET `/v1/agendas/enp/batches`

List batches of evidence náhradního plnění

Nástroj MCP: `list-enp-batches`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "enp\_batch" povinné

`id` string povinné

`name` null | string povinné

`exportedAt` null | string povinné date-time

`createdAt` string povinné date-time

`lineCount` integer povinné

`totalHaler` integer | null povinné

`lines` object\[\] povinné

`documentType` null | string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`amountHaler` integer | null povinné

`deliveredOn` null | string povinné date

`paidOn` null | string povinné date

`customerIco` null | string povinné

`customerBirthNumber` string | null povinné

`customerEmail` null | string povinné

`deadline` string povinné date

`problems` string\[\] povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/agendas/enp/batches \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/agendas/enp/batches', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/agendas/enp/batches",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Save paid documents as a batch. Each keeps the data as it is now: a later change to the document does not reach the batch. A delivery outside the recorded basis (§ 78) stops it

POST `/v1/agendas/enp/batches`

Save paid documents as a batch. Each keeps the data as it is now: a later change to the document does not reach the batch. A delivery outside the recorded basis (§ 78) stops it

Nástroj MCP: `create-enp-batch`

### Tělo požadavku

`name` string povinné max 120 chars

`documents` object\[\] povinné

`documentType` "invoice" | "pos\_receipt" | "other\_receivable" | "cash\_receipt" | "proforma" povinné

`documentId` string povinné

ID of the document.

`amountHaler` integer max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`deliveredOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`overrideRecognition` boolean

### Odpověď · 201

`id` string povinné

`name` null | string povinné

`exportedAt` null | string povinné date-time

`createdAt` string povinné date-time

`lineCount` integer povinné

`totalHaler` integer | null povinné

`lines` object\[\] povinné

`documentType` null | string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`amountHaler` integer | null povinné

`deliveredOn` null | string povinné date

`paidOn` null | string povinné date

`customerIco` null | string povinné

`customerBirthNumber` string | null povinné

`customerEmail` null | string povinné

`deadline` string povinné date

`problems` string\[\] povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/agendas/enp/batches \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "documents": [
    {
      "documentType": "invoice",
      "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/agendas/enp/batches', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o.",
    "documents": [
      {
        "documentType": "invoice",
        "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/agendas/enp/batches",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "documents": [
            {
                "documentType": "invoice",
                "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
            }
        ]
    },
)
data = response.json()
```

## Delete a batch not yet exported, so its invoices are offered again

DELETE `/v1/agendas/enp/batches/{id}`

Delete a batch not yet exported, so its invoices are offered again

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-enp-batch`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`name` null | string povinné

`exportedAt` null | string povinné date-time

`createdAt` string povinné date-time

`lineCount` integer povinné

`totalHaler` integer | null povinné

`lines` object\[\] povinné

`documentType` null | string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`amountHaler` integer | null povinné

`deliveredOn` null | string povinné date

`paidOn` null | string povinné date

`customerIco` null | string povinné

`customerBirthNumber` string | null povinné

`customerEmail` null | string povinné

`deadline` string povinné date

`problems` string\[\] povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/agendas/enp/batches/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/agendas/enp/batches/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/agendas/enp/batches/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Download the CSV for the Ministry’s bulk import: CP 1250, semicolons, its own header. Refused while a line would be rejected

GET `/v1/agendas/enp/batches/{id}/csv`

Download the CSV for the Ministry’s bulk import: CP 1250, semicolons, its own header. Refused while a line would be rejected

Nástroj MCP: `export-enp-batch`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor text/csv; charset=windows-1250.

```bash
curl https://api.damedoklad.cz/v1/agendas/enp/batches/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/csv \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/agendas/enp/batches/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/csv', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/agendas/enp/batches/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/csv",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Paid invoices, till receipts, cash receipts and advances not yet in a náhradní plnění batch, with the amount without VAT and the 30-day deadline

GET `/v1/agendas/enp/documents`

Paid invoices, till receipts, cash receipts and advances not yet in a náhradní plnění batch, with the amount without VAT and the 30-day deadline

Nástroj MCP: `list-enp-documents`

### Parametry dotazu

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`documentType` null | string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`amountHaler` integer | null povinné

`deliveredOn` null | string povinné date

`paidOn` null | string povinné date

`customerIco` null | string povinné

`customerBirthNumber` string | null povinné

`customerEmail` null | string povinné

`deadline` string povinné date

`problems` string\[\] povinné

`contactName` null | string povinné

`overdue` boolean povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/agendas/enp/documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/agendas/enp/documents', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/agendas/enp/documents",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## On what basis the company supplies náhradní plnění (§ 81 odst. 2 písm. b), § 78 zákona o zaměstnanosti), and until when

GET `/v1/agendas/enp/recognition`

On what basis the company supplies náhradní plnění (§ 81 odst. 2 písm. b), § 78 zákona o zaměstnanosti), and until when

Nástroj MCP: `get-enp-recognition`

### Odpověď · 200

`recorded` boolean povinné

`validToday` boolean povinné

`basis` null | string povinné

`reference` null | string povinné

`office` any povinné

Null in every recorded response.

`validFrom` null | string povinné date

`validTo` null | string povinné date

```bash
curl https://api.damedoklad.cz/v1/agendas/enp/recognition \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/agendas/enp/recognition', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/agendas/enp/recognition",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Record the agreement with the Labour Office, or that the company is a self-employed person with a disability or an integrating social enterprise. A batch then checks each delivery against it

PUT `/v1/agendas/enp/recognition`

Record the agreement with the Labour Office, or that the company is a self-employed person with a disability or an integrating social enterprise. A batch then checks each delivery against it. The Ministry offers no interface to ask whether a company is recognised, so this is what the company states: nothing here reaches or confirms anything at the Labour Office.

Nástroj MCP: `set-enp-recognition`

### Tělo požadavku

`basis` "agreement\_78" | "self\_employed\_disabled" | "integration\_enterprise" povinné

`reference` string | null

`office` string | null

`validFrom` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`validTo` string | null

Date as YYYY-MM-DD.

### Odpověď · 200

`recorded` boolean povinné

`validToday` boolean povinné

`basis` null | string povinné

`reference` null | string povinné

`office` any povinné

Null in every recorded response.

`validFrom` null | string povinné date

`validTo` null | string povinné date

```bash
curl -X PUT https://api.damedoklad.cz/v1/agendas/enp/recognition \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "basis": "agreement_78",
  "validFrom": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/agendas/enp/recognition', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "basis": "agreement_78",
    "validFrom": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/agendas/enp/recognition",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "basis": "agreement_78",
        "validFrom": "2026-10-30"
    },
)
data = response.json()
```

## Give many contacts the same reason for processing at once

POST `/v1/bulk/contact-processing-reason`

Give many contacts the same reason for processing at once

Nástroj MCP: `bulk-add-contact-processing-reason`

### Tělo požadavku

`ids` string\[\] povinné

`legalBasis` "consent" | "contract" | "legal\_obligation" | "vital\_interest" | "public\_task" | "legitimate\_interest"

`purpose` string max 200 chars

`validFrom` string YYYY-MM-DD

Date as YYYY-MM-DD.

`validTo` string | null

Date as YYYY-MM-DD.

`note` string | null

`reasonId` string

A reason from the company list (GET /gdpr/reasons). It fills legal basis, purpose, and the end date from its length. Without it, name legalBasis and purpose.

### Odpověď · 200

`results` object\[\] povinné

`id` string

`ok` boolean povinné

`error` null | string

`code` null | string

`number` null | string

`stockDocumentId` null | string

`documentId` null | string

`status` string

`contactName` null | string

`name` null | string

`to` string

`amountHaler` integer | null

`movementId` null | string

`row` integer

`recognised` boolean

`shipmentId` string

`trackingNumber` null | string

`total` integer povinné

`succeeded` integer povinné

`failed` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/bulk/contact-processing-reason \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/contact-processing-reason', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bulk/contact-processing-reason",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
data = response.json()
```

## Change a field on many contacts at once, or add them to a group or take them out. Documents already issued keep the details they were issued with

POST `/v1/bulk/edit-contacts`

Change a field on many contacts at once, or add them to a group or take them out. Documents already issued keep the details they were issued with

Nástroj MCP: `bulk-edit-contacts`

### Tělo požadavku

`ids` string\[\] povinné

`changes` object povinné

`roles` "customer" | "supplier" | "both"

`usualDueDays` integer | null

`preferredPaymentMethod` "transfer" | "cash" | "card" | "cod" | "proforma" | null

`invoiceLanguage` "cs" | "en" | "sk" | "de" | "fr" | "pl" | null

`defaultCurrency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`creditWarnHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`creditBlockHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`reminderOnDue` boolean

`reminderWeekAfter` boolean

`reminder14DaysAfter` boolean

`reminderMonthAfter` boolean

`addGroupId` string

ID of the add group.

`removeGroupId` string

ID of the remove group.

### Odpověď · 200

`results` object\[\] povinné

`id` string

`ok` boolean povinné

`error` null | string

`code` null | string

`number` null | string

`stockDocumentId` null | string

`documentId` null | string

`status` string

`contactName` null | string

`name` null | string

`to` string

`amountHaler` integer | null

`movementId` null | string

`row` integer

`recognised` boolean

`shipmentId` string

`trackingNumber` null | string

`total` integer povinné

`succeeded` integer povinné

`failed` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/bulk/edit-contacts \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ],
  "changes": {
    "roles": "customer",
    "usualDueDays": 0,
    "preferredPaymentMethod": "transfer"
  }
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/edit-contacts', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ],
    "changes": {
      "roles": "customer",
      "usualDueDays": 0,
      "preferredPaymentMethod": "transfer"
    }
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bulk/edit-contacts",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ],
        "changes": {
            "roles": "customer",
            "usualDueDays": 0,
            "preferredPaymentMethod": "transfer"
        }
    },
)
data = response.json()
```

## Change a field on many documents at once (POHODA Upravit vše). A draft takes all of them; past draft only the due date and notes, and anything else fails for that document

POST `/v1/bulk/edit-documents`

Change a field on many documents at once (POHODA Upravit vše). A draft takes all of them; past draft only the due date and notes, and anything else fails for that document. Each document goes through its own update, with its own rules. Amounts, dates, and the partner are not offered: a document already issued keeps what it said.

Nástroj MCP: `bulk-edit-documents`

### Tělo požadavku

`kind` "invoice" | "received\_invoice" | "proforma" | "credit\_note" | "delivery\_note" | "quote" | "rfq" | "order\_received" | "order\_issued" | "debit\_note" | "other\_receivable" | "other\_payable" | "pos\_receipt" | "advance\_tax\_document" povinné

`ids` string\[\] povinné

`changes` object povinné

`dueDate` string | null

Date as YYYY-MM-DD.

`notePublic` string | null

`noteInternal` string | null

`language` "cs" | "en" | "sk" | "de" | "fr" | "pl"

`paymentMethod` "transfer" | "cash" | "card" | "cod" | "proforma"

`centerId` string | null

ID of the center.

`activityId` string | null

ID of the activity. Find it with list-activity.

`projectId` string | null

ID of the project.

`templateId` string | null

ID of the template.

### Odpověď · 200

`results` object\[\] povinné

`id` string

`ok` boolean povinné

`error` null | string

`code` null | string

`number` null | string

`stockDocumentId` null | string

`documentId` null | string

`status` string

`contactName` null | string

`name` null | string

`to` string

`amountHaler` integer | null

`movementId` null | string

`row` integer

`recognised` boolean

`shipmentId` string

`trackingNumber` null | string

`total` integer povinné

`succeeded` integer povinné

`failed` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/bulk/edit-documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "invoice",
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ],
  "changes": {
    "dueDate": "2026-10-30",
    "notePublic": "string",
    "noteInternal": "string"
  }
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/edit-documents', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "invoice",
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ],
    "changes": {
      "dueDate": "2026-10-30",
      "notePublic": "string",
      "noteInternal": "string"
    }
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bulk/edit-documents",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "invoice",
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ],
        "changes": {
            "dueDate": "2026-10-30",
            "notePublic": "string",
            "noteInternal": "string"
        }
    },
)
data = response.json()
```

## E-mail many issued documents to their customers, each with its PDF. Uses each contact e-mail and the document type template

POST `/v1/bulk/email`

E-mail many issued documents to their customers, each with its PDF. Uses each contact e-mail and the document type template

Nástroj MCP: `bulk-email-documents`

### Tělo požadavku

`kind` "invoice" | "received\_invoice" | "proforma" | "credit\_note" | "delivery\_note" | "quote" | "rfq" | "order\_received" | "order\_issued" | "debit\_note" | "other\_receivable" | "other\_payable" | "pos\_receipt" | "advance\_tax\_document" povinné

`ids` string\[\] povinné

`subject` string max 300 chars

`body` string max 10000 chars

### Odpověď · 200

`results` object\[\] povinné

`id` string

`ok` boolean povinné

`error` null | string

`code` null | string

`number` null | string

`stockDocumentId` null | string

`documentId` null | string

`status` string

`contactName` null | string

`name` null | string

`to` string

`amountHaler` integer | null

`movementId` null | string

`row` integer

`recognised` boolean

`shipmentId` string

`trackingNumber` null | string

`total` integer povinné

`succeeded` integer povinné

`failed` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/bulk/email \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "invoice",
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/email', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "invoice",
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bulk/email",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "invoice",
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
data = response.json()
```

## Export the selected documents as a table: format=xlsx or csv

POST `/v1/bulk/export`

Export the selected documents as a table: format=xlsx or csv

Nástroj MCP: `bulk-export-documents`

### Tělo požadavku

`kind` "invoice" | "received\_invoice" | "proforma" | "credit\_note" | "delivery\_note" | "quote" | "rfq" | "order\_received" | "order\_issued" | "debit\_note" | "other\_receivable" | "other\_payable" | "pos\_receipt" | "advance\_tax\_document" povinné

`ids` string\[\] povinné

`format` "csv" | "xlsx"

### Odpověď · 200

Vrací soubor application/octet-stream.

```bash
curl -X POST https://api.damedoklad.cz/v1/bulk/export \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "invoice",
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/export', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "invoice",
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bulk/export",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "invoice",
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
content = response.content
```

## Hromadná fakturace: create one invoice, proforma, quote, or order per contact from the same lines or a sample document. Drafts unless issue=true; each answers on its own

POST `/v1/bulk/invoice-contacts`

Hromadná fakturace: create one invoice, proforma, quote, or order per contact from the same lines or a sample document. Drafts unless issue=true; each answers on its own. At most 200 at once here: createBulkJob runs more through the queue. Each document takes its address, due days, and language from its contact, and goes through the same rules as one made by hand, including the credit limit when issued.

Nástroj MCP: `bulk-invoice-contacts`

### Tělo požadavku

`contactIds` string\[\]

`groupId` string

ID of the group.

`kind` "invoice" | "proforma" | "quote" | "order\_received" | "order\_issued"

Issued invoice (default), proforma, quote, received order or issued order.

`sampleId` string

A draft or issued document to copy lines and terms from, as in POHODA. Its own contact is ignored.

`lines` object\[\]

`description` string povinné max 200 chars

`quantity` number povinné

`unit` string max 16 chars

`unitPriceHaler` integer povinné min -9007199254740991 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`vatRate` number min 0 max 30

`issueDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`taxPointDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`dueDays` integer min 0 max 2000

Left out: each contact's own usual due days.

`seriesId` string

ID of the series. Find it with list-series.

`notePublic` string | null

`issue` boolean

Issue each one at once. Default: leave them as drafts to check first.

### Odpověď · 200

`results` object\[\] povinné

`id` string

`ok` boolean povinné

`error` null | string

`code` null | string

`number` null | string

`stockDocumentId` null | string

`documentId` null | string

`status` string

`contactName` null | string

`name` null | string

`to` string

`amountHaler` integer | null

`movementId` null | string

`row` integer

`recognised` boolean

`shipmentId` string

`trackingNumber` null | string

`total` integer povinné

`succeeded` integer povinné

`failed` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/bulk/invoice-contacts \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactIds": [
    "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ],
  "groupId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "kind": "invoice"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/invoice-contacts', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactIds": [
      "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ],
    "groupId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "kind": "invoice"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bulk/invoice-contacts",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactIds": [
            "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ],
        "groupId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "kind": "invoice"
    },
)
data = response.json()
```

## Issue many draft documents at once. Each one is numbered and posted on its own; the answer lists successes and failures

POST `/v1/bulk/issue`

Issue many draft documents at once. Each one is numbered and posted on its own; the answer lists successes and failures. A document over Kredit max fails with credit\_limit\_exceeded while the rest go on. An owner or accountant may then send those ids again with overrideCreditLimit.

Nástroj MCP: `bulk-issue-documents`

### Tělo požadavku

`kind` "invoice" | "received\_invoice" | "proforma" | "credit\_note" | "delivery\_note" | "quote" | "rfq" | "order\_received" | "order\_issued" | "debit\_note" | "other\_receivable" | "other\_payable" | "pos\_receipt" | "advance\_tax\_document" povinné

`ids` string\[\] povinné

`overrideCreditLimit` boolean

Issue although the customer goes over Kredit max. Owner or accountant only, after the user has seen which documents failed for it.

### Odpověď · 200

`results` object\[\] povinné

`id` string

`ok` boolean povinné

`error` null | string

`code` null | string

`number` null | string

`stockDocumentId` null | string

`documentId` null | string

`status` string

`contactName` null | string

`name` null | string

`to` string

`amountHaler` integer | null

`movementId` null | string

`row` integer

`recognised` boolean

`shipmentId` string

`trackingNumber` null | string

`total` integer povinné

`succeeded` integer povinné

`failed` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/bulk/issue \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "invoice",
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/issue', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "invoice",
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bulk/issue",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "invoice",
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
data = response.json()
```

## List bulk jobs running in the background and how they ended, newest first

GET `/v1/bulk/jobs`

List bulk jobs running in the background and how they ended, newest first

Nástroj MCP: `list-bulk-jobs`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`status` "queued" | "running" | "done" | "failed"

### Odpověď · 200

`data` object\[\] povinné

`object` "bulk\_job" povinné

`id` string povinné

`operation` string povinné

`status` string povinné

`total` integer povinné

`processed` integer povinné

`succeeded` integer povinné

`failed` integer povinné

`results` object\[\] povinné

`id` string povinné

`ok` boolean povinné

`number` null | string

`status` string

`code` null | string

`error` null | string

`fileId` null | string povinné

`filename` null | string povinné

`error` string | null povinné

`startedAt` null | string povinné date-time

`finishedAt` null | string povinné date-time

`createdAt` string povinné date-time

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/bulk/jobs \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/jobs', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/bulk/jobs",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Run a bulk operation on any number of documents in the background, up to 20 000. Answers at once with a job to watch; each document still stands on its own

POST `/v1/bulk/jobs`

Run a bulk operation on any number of documents in the background, up to 20 000. Answers at once with a job to watch; each document still stands on its own. Takes the same body as the operation it names. getBulkJob tells how far it got and what happened to each. PDFs in a ZIP and exports end as a file: downloadBulkJobFile.

Nástroj MCP: `create-bulk-job`

### Tělo požadavku

`operation` "issue" | "email" | "match-payments" | "edit-documents" | "invoice-contacts" | "pdf-zip" | "export" povinné

`body` object povinné

What the operation of that name takes: /bulk/issue, /bulk/email, /bulk/match-payments, /bulk/edit-documents, /bulk/invoice-contacts, /bulk/pdf-zip or /bulk/export. Up to 20 000 documents.

### Odpověď · 202

`id` string povinné

`operation` string povinné

`status` string povinné

`total` integer povinné

`processed` integer povinné

`succeeded` integer povinné

`failed` integer povinné

`results` object\[\] povinné

`id` string povinné

`ok` boolean povinné

`number` null | string

`status` string

`code` null | string

`error` null | string

`fileId` null | string povinné

`filename` null | string povinné

`error` string | null povinné

`startedAt` null | string povinné date-time

`finishedAt` null | string povinné date-time

`createdAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/bulk/jobs \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "operation": "issue",
  "body": {}
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/jobs', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "operation": "issue",
    "body": {}
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bulk/jobs",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "operation": "issue",
        "body": {}
    },
)
data = response.json()
```

## How far a bulk job got, and what happened to each document so far

GET `/v1/bulk/jobs/{id}`

How far a bulk job got, and what happened to each document so far

Nástroj MCP: `get-bulk-job`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`operation` string povinné

`status` string povinné

`total` integer povinné

`processed` integer povinné

`succeeded` integer povinné

`failed` integer povinné

`results` object\[\] povinné

`id` string povinné

`ok` boolean povinné

`number` null | string

`status` string

`code` null | string

`error` null | string

`fileId` null | string povinné

`filename` null | string povinné

`error` string | null povinné

`startedAt` null | string povinné date-time

`finishedAt` null | string povinné date-time

`createdAt` string povinné date-time

```bash
curl https://api.damedoklad.cz/v1/bulk/jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/bulk/jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Download the ZIP or the table a finished bulk job made

GET `/v1/bulk/jobs/{id}/file`

Download the ZIP or the table a finished bulk job made

Nástroj MCP: `download-bulk-job-file`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor application/octet-stream.

```bash
curl https://api.damedoklad.cz/v1/bulk/jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/file \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/file', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/bulk/jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/file",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Settle many documents at once: pair each with its one exact bank movement, or with mode=manual record it as paid on a date

POST `/v1/bulk/match-payments`

Settle many documents at once: pair each with its one exact bank movement, or with mode=manual record it as paid on a date. Bank mode pairs only when exactly one open movement has the same direction, currency, amount, and variable symbol. Anything else is reported, never guessed.

Nástroj MCP: `bulk-match-payments`

### Tělo požadavku

`kind` "invoice" | "received\_invoice" | "proforma" | "credit\_note" | "delivery\_note" | "quote" | "rfq" | "order\_received" | "order\_issued" | "debit\_note" | "other\_receivable" | "other\_payable" | "pos\_receipt" | "advance\_tax\_document" povinné

`ids` string\[\] povinné

`mode` "bank" | "manual"

`paidOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`method` "transfer" | "cash" | "card"

`registerId` string

ID of the register.

`bankAccountId` string

ID of the bank account. Find it with list-bank-accounts.

### Odpověď · 200

`results` object\[\] povinné

`id` string

`ok` boolean povinné

`error` null | string

`code` null | string

`number` null | string

`stockDocumentId` null | string

`documentId` null | string

`status` string

`contactName` null | string

`name` null | string

`to` string

`amountHaler` integer | null

`movementId` null | string

`row` integer

`recognised` boolean

`shipmentId` string

`trackingNumber` null | string

`total` integer povinné

`succeeded` integer povinné

`failed` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/bulk/match-payments \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "invoice",
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/match-payments', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "invoice",
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bulk/match-payments",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "invoice",
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
data = response.json()
```

## Pair the documents and bank movements a person accepted in the review. Each pair posts on its own and answers on its own

POST `/v1/bulk/match-payments/confirm`

Pair the documents and bank movements a person accepted in the review. Each pair posts on its own and answers on its own

Nástroj MCP: `confirm-bulk-match`

### Tělo požadavku

`kind` "invoice" | "received\_invoice" | "proforma" | "credit\_note" | "delivery\_note" | "quote" | "rfq" | "order\_received" | "order\_issued" | "debit\_note" | "other\_receivable" | "other\_payable" | "pos\_receipt" | "advance\_tax\_document" povinné

`pairs` object\[\] povinné

`id` string povinné

`movementId` string povinné

ID of the movement. Find it with list-movements.

`amountHaler` integer max 9007199254740991

How much of the movement goes to this document. Left out: as much as both still have open.

### Odpověď · 200

`results` object\[\] povinné

`id` string

`ok` boolean povinné

`error` null | string

`code` null | string

`number` null | string

`stockDocumentId` null | string

`documentId` null | string

`status` string

`contactName` null | string

`name` null | string

`to` string

`amountHaler` integer | null

`movementId` null | string

`row` integer

`recognised` boolean

`shipmentId` string

`trackingNumber` null | string

`total` integer povinné

`succeeded` integer povinné

`failed` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/bulk/match-payments/confirm \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "invoice",
  "pairs": [
    {
      "id": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
      "movementId": "mov_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/match-payments/confirm', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "invoice",
    "pairs": [
      {
        "id": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "movementId": "mov_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bulk/match-payments/confirm",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "invoice",
        "pairs": [
            {
                "id": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
                "movementId": "mov_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
            }
        ]
    },
)
data = response.json()
```

## Propose bank movements for many documents, for a person to review: best match first, with why it fits. Pairs nothing

POST `/v1/bulk/match-payments/preview`

Propose bank movements for many documents, for a person to review: best match first, with why it fits. Pairs nothing. Goes beyond one exact match: part payments, a number in the message, a known account, and more than one candidate. confirmBulkMatch pairs what the person accepts.

Nástroj MCP: `preview-bulk-match`

### Tělo požadavku

`kind` "invoice" | "received\_invoice" | "proforma" | "credit\_note" | "delivery\_note" | "quote" | "rfq" | "order\_received" | "order\_issued" | "debit\_note" | "other\_receivable" | "other\_payable" | "pos\_receipt" | "advance\_tax\_document" povinné

`ids` string\[\] povinné

### Odpověď · 200

`kind` string povinné

`data` object\[\] povinné

`id` string povinné

`open` boolean povinné

`number` null | string povinné

`contactName` null | string povinné

`currency` null | string povinné

`remainingHaler` integer | null povinné

`proposedMovementId` any povinné

Null in every recorded response.

`candidates` object\[\] povinné

`movementId` null | string povinné

`bankAccountId` string povinné

`bookedOn` string povinné date

`amountHaler` integer | null povinné

`openHaler` integer povinné

`variableSymbol` null | string povinné

`counterpartyName` string | null povinné

`message` string | null povinné

`confidence` null | number povinné

`reason` null | string povinné

`suggestedAmountHaler` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/bulk/match-payments/preview \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "invoice",
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/match-payments/preview', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "invoice",
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bulk/match-payments/preview",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "invoice",
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
data = response.json()
```

## Download the PDFs of many documents as one ZIP. A document without a PDF is listed in chyby.txt inside

POST `/v1/bulk/pdf-zip`

Download the PDFs of many documents as one ZIP. A document without a PDF is listed in chyby.txt inside

Nástroj MCP: `bulk-download-pdf`

### Tělo požadavku

`kind` "invoice" | "received\_invoice" | "proforma" | "credit\_note" | "delivery\_note" | "quote" | "rfq" | "order\_received" | "order\_issued" | "debit\_note" | "other\_receivable" | "other\_payable" | "pos\_receipt" | "advance\_tax\_document" povinné

`ids` string\[\] povinné

### Odpověď · 200

Vrací soubor application/zip.

```bash
curl -X POST https://api.damedoklad.cz/v1/bulk/pdf-zip \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "invoice",
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bulk/pdf-zip', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "invoice",
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bulk/pdf-zip",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "invoice",
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
content = response.content
```

## Seznam: dopravci

GET `/v1/carriers`

List carriers (dopravci): each is a preset way of sending, with the file format its shipments export in

Nástroj MCP: `list-carriers`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "carrier" povinné

`id` string povinné

`name` string povinné

`exportFormat` string povinné

`exportFormatPublished` boolean povinné

`serviceCode` null | string povinné

`senderCode` null | string povinné

`defaultWeightGrams` integer | null povinné

`isActive` boolean povinné

`note` string | null povinné

`adapter` null | string

`hasApiPassword` boolean

`apiUsername` null | string

`senderAddressRef` null | string

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/carriers \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/carriers', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/carriers",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Vytvoření: dopravce

POST `/v1/carriers`

Add a carrier. Česká pošta exports in its published posting sheet (ePA), Packeta in its packet import; any other carrier in generic CSV, or through its own API (Packeta, PPL, DPD, GLS) where the operator allows

Nástroj MCP: `create-carrier`

### Tělo požadavku

`name` string povinné max 200 chars

`exportFormat` "generic" | "ceska\_posta\_epa" | "packeta\_csv"

ceska\_posta\_epa is the posting sheet Česká pošta publishes, packeta\_csv the packet import Packeta publishes. Any other carrier takes generic: our own columns, for the carrier's import to map.

`adapter` "packeta" | "ppl" | "dpd" | "gls" | null

The carrier's own API, used only where the operator allows live calls.

`apiUsername` string | null

PPL: the client ID. GLS: the MyGLS user name, an e-mail address. Packeta and DPD need none.

`apiPassword` string | null

Packeta: the API password. PPL: the client secret. DPD: the API key. GLS: the MyGLS password. Stored encrypted and never returned.

`senderAddressRef` string | null

DPD: the numeric ID of the pick-up address registered at DPD.

`serviceCode` string | null

For Česká pošta the services of field 3.13, such as S or S+34. For PPL the product type, such as BUSS.

`senderCode` string | null

Packeta: the sender indication. DPD: the customer number (DSW). GLS: the client number.

`defaultWeightGrams` integer | null

`isActive` boolean

`note` string | null

### Odpověď · 201

`id` string povinné

`name` string povinné

`exportFormat` string povinné

`exportFormatPublished` boolean povinné

`serviceCode` null | string povinné

`senderCode` null | string povinné

`defaultWeightGrams` integer | null povinné

`isActive` boolean povinné

`note` string | null povinné

`adapter` null | string

`hasApiPassword` boolean

`apiUsername` null | string

`senderAddressRef` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/carriers \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o."
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/carriers', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o."
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/carriers",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o."
    },
)
data = response.json()
```

## Úprava: dopravce

PATCH `/v1/carriers/{id}`

Change a carrier, or set it inactive

Nástroj MCP: `update-carrier`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`name` string max 200 chars

`exportFormat` "generic" | "ceska\_posta\_epa" | "packeta\_csv"

ceska\_posta\_epa is the posting sheet Česká pošta publishes, packeta\_csv the packet import Packeta publishes. Any other carrier takes generic: our own columns, for the carrier's import to map.

`adapter` "packeta" | "ppl" | "dpd" | "gls" | null

The carrier's own API, used only where the operator allows live calls.

`apiUsername` string | null

PPL: the client ID. GLS: the MyGLS user name, an e-mail address. Packeta and DPD need none.

`apiPassword` string | null

Packeta: the API password. PPL: the client secret. DPD: the API key. GLS: the MyGLS password. Stored encrypted and never returned.

`senderAddressRef` string | null

DPD: the numeric ID of the pick-up address registered at DPD.

`serviceCode` string | null

For Česká pošta the services of field 3.13, such as S or S+34. For PPL the product type, such as BUSS.

`senderCode` string | null

Packeta: the sender indication. DPD: the customer number (DSW). GLS: the client number.

`defaultWeightGrams` integer | null

`isActive` boolean

`note` string | null

### Odpověď · 200

`id` string povinné

`name` string povinné

`exportFormat` string povinné

`exportFormatPublished` boolean povinné

`serviceCode` null | string povinné

`senderCode` null | string povinné

`defaultWeightGrams` integer | null povinné

`isActive` boolean povinné

`note` string | null povinné

`adapter` null | string

`hasApiPassword` boolean

`apiUsername` null | string

`senderAddressRef` null | string

```bash
curl -X PATCH https://api.damedoklad.cz/v1/carriers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "exportFormat": "generic",
  "adapter": "packeta"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/carriers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o.",
    "exportFormat": "generic",
    "adapter": "packeta"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/carriers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "exportFormat": "generic",
        "adapter": "packeta"
    },
)
data = response.json()
```

## Smazání: dopravce

DELETE `/v1/carriers/{id}`

Delete a carrier no shipment uses. One that has shipments is set inactive instead

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-carrier`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/carriers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/carriers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/carriers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Seznam: reklamace

GET `/v1/complaints`

List complaints (reklamace) with their deadline state

Nástroj MCP: `list-complaints`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`status` "open" | "in\_progress" | "resolved" | "rejected" | "cancelled"

`contactId` string

ID of the contact. Find it with list-contacts.

`open` "true" | "false"

`customFieldKey` string

Only records with this custom field. Alone: it has any value. With customFieldValue: exactly that value, ignoring case.

`customFieldValue` string max 2000 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "complaint" povinné

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`consumer` boolean povinné

`invoiceId` null | string povinné

`invoiceLineId` null | string povinné

`itemId` null | string povinné

`subject` string povinné

`description` string povinné

`requestedResolution` string | null povinné

`quantity` integer | null povinné

`deliveredOn` null | string povinné date

`claimedOn` string povinné date

`agreedDeadline` null | string povinné date

`deadlineOn` null | string povinné date

`deadline` object povinné

`state` string povinné

`daysLeft` integer | null povinné

`withinTwoYears` boolean | null povinné

`status` string povinné

`outcome` null | string povinné

`resolvedOn` null | string povinné date

`resolutionNote` null | string povinné

`creditNoteId` null | string povinné

`serviceJobId` string | null povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`discoveredOn` null | string date

`warrantyUntil` null | string date

`businessPeriods` null | object

`hiddenDefectLimit` null | string povinné date

`withinHiddenDefectLimit` boolean | null povinné

`daysFromDiscovery` integer | null povinné

`warrantyUntil` null | string povinné date

`withinWarranty` boolean | null povinné

`customFields` object

`invoiceNumber` any

Null in every recorded response.

`creditNoteNumber` any

Null in every recorded response.

`creditNoteStatus` any

Null in every recorded response.

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/complaints \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/complaints', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/complaints",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Vytvoření: reklamace

POST `/v1/complaints`

Record a complaint against a sale. For a consumer the 30-day deadline of § 19 zákona 634/1992 Sb. is set automatically

Nástroj MCP: `create-complaint`

### Tělo požadavku

`contactId` string

ID of the contact. Find it with list-contacts.

`consumer` boolean

`invoiceId` string | null

ID of the invoice. Find it with list-invoices.

`invoiceLineId` string | null

ID of the invoice line.

`itemId` string | null

ID of the item. Find it with list-items.

`subject` string povinné max 200 chars

`description` string povinné max 4000 chars

`requestedResolution` string | null

`quantity` number | null

`deliveredOn` string | null

Date as YYYY-MM-DD.

`claimedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`agreedDeadline` string | null

`discoveredOn` string | null

Between businesses: when the buyer could first have found the defect (§ 2112 OZ).

`warrantyUntil` string | null

End of a warranty given on the goods (§ 2114, § 2115, § 2117 OZ).

### Odpověď · 201

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`consumer` boolean povinné

`invoiceId` null | string povinné

`invoiceLineId` null | string povinné

`itemId` null | string povinné

`subject` string povinné

`description` string povinné

`requestedResolution` string | null povinné

`quantity` integer | null povinné

`deliveredOn` null | string povinné date

`claimedOn` string povinné date

`agreedDeadline` null | string povinné date

`deadlineOn` null | string povinné date

`deadline` object povinné

`state` string povinné

`daysLeft` integer | null povinné

`withinTwoYears` boolean | null povinné

`status` string povinné

`outcome` null | string povinné

`resolvedOn` null | string povinné date

`resolutionNote` null | string povinné

`creditNoteId` null | string povinné

`serviceJobId` string | null povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`discoveredOn` null | string date

`warrantyUntil` null | string date

`businessPeriods` null | object

`hiddenDefectLimit` null | string povinné date

`withinHiddenDefectLimit` boolean | null povinné

`daysFromDiscovery` integer | null povinné

`warrantyUntil` null | string povinné date

`withinWarranty` boolean | null povinné

`customFields` object

`invoiceNumber` any

Null in every recorded response.

`creditNoteNumber` any

Null in every recorded response.

`creditNoteStatus` any

Null in every recorded response.

```bash
curl -X POST https://api.damedoklad.cz/v1/complaints \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "subject": "string",
  "description": "Pečivo, říjen"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/complaints', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "subject": "string",
    "description": "Pečivo, říjen"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/complaints",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "subject": "string",
        "description": "Pečivo, říjen"
    },
)
data = response.json()
```

## Detail: reklamace

GET `/v1/complaints/{id}`

Get a complaint

Nástroj MCP: `get-complaint`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`consumer` boolean povinné

`invoiceId` null | string povinné

`invoiceLineId` null | string povinné

`itemId` null | string povinné

`subject` string povinné

`description` string povinné

`requestedResolution` string | null povinné

`quantity` integer | null povinné

`deliveredOn` null | string povinné date

`claimedOn` string povinné date

`agreedDeadline` null | string povinné date

`deadlineOn` null | string povinné date

`deadline` object povinné

`state` string povinné

`daysLeft` integer | null povinné

`withinTwoYears` boolean | null povinné

`status` string povinné

`outcome` null | string povinné

`resolvedOn` null | string povinné date

`resolutionNote` null | string povinné

`creditNoteId` null | string povinné

`serviceJobId` string | null povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`discoveredOn` null | string date

`warrantyUntil` null | string date

`businessPeriods` null | object

`hiddenDefectLimit` null | string povinné date

`withinHiddenDefectLimit` boolean | null povinné

`daysFromDiscovery` integer | null povinné

`warrantyUntil` null | string povinné date

`withinWarranty` boolean | null povinné

`customFields` object

`invoiceNumber` any

Null in every recorded response.

`creditNoteNumber` any

Null in every recorded response.

`creditNoteStatus` any

Null in every recorded response.

```bash
curl https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Úprava: reklamace

PATCH `/v1/complaints/{id}`

Edit an open complaint. Changing the claim date or the agreed deadline recomputes the deadline

Nástroj MCP: `update-complaint`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`contactId` string

ID of the contact. Find it with list-contacts.

`consumer` boolean

`invoiceId` string | null

ID of the invoice. Find it with list-invoices.

`invoiceLineId` string | null

ID of the invoice line.

`itemId` string | null

ID of the item. Find it with list-items.

`subject` string max 200 chars

`description` string max 4000 chars

`requestedResolution` string | null

`quantity` number | null

`deliveredOn` string | null

Date as YYYY-MM-DD.

`claimedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`agreedDeadline` string | null

`discoveredOn` string | null

Between businesses: when the buyer could first have found the defect (§ 2112 OZ).

`warrantyUntil` string | null

End of a warranty given on the goods (§ 2114, § 2115, § 2117 OZ).

### Odpověď · 200

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`consumer` boolean povinné

`invoiceId` null | string povinné

`invoiceLineId` null | string povinné

`itemId` null | string povinné

`subject` string povinné

`description` string povinné

`requestedResolution` string | null povinné

`quantity` integer | null povinné

`deliveredOn` null | string povinné date

`claimedOn` string povinné date

`agreedDeadline` null | string povinné date

`deadlineOn` null | string povinné date

`deadline` object povinné

`state` string povinné

`daysLeft` integer | null povinné

`withinTwoYears` boolean | null povinné

`status` string povinné

`outcome` null | string povinné

`resolvedOn` null | string povinné date

`resolutionNote` null | string povinné

`creditNoteId` null | string povinné

`serviceJobId` string | null povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`discoveredOn` null | string date

`warrantyUntil` null | string date

`businessPeriods` null | object

`hiddenDefectLimit` null | string povinné date

`withinHiddenDefectLimit` boolean | null povinné

`daysFromDiscovery` integer | null povinné

`warrantyUntil` null | string povinné date

`withinWarranty` boolean | null povinné

`customFields` object

`invoiceNumber` any

Null in every recorded response.

`creditNoteNumber` any

Null in every recorded response.

`creditNoteStatus` any

Null in every recorded response.

```bash
curl -X PATCH https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "consumer": false,
  "invoiceId": "inv_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "consumer": false,
    "invoiceId": "inv_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "consumer": False,
        "invoiceId": "inv_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    },
)
data = response.json()
```

## Zrušení: reklamace

POST `/v1/complaints/{id}/cancel`

Cancel a complaint recorded by mistake

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `cancel-complaint`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`consumer` boolean povinné

`invoiceId` null | string povinné

`invoiceLineId` null | string povinné

`itemId` null | string povinné

`subject` string povinné

`description` string povinné

`requestedResolution` string | null povinné

`quantity` integer | null povinné

`deliveredOn` null | string povinné date

`claimedOn` string povinné date

`agreedDeadline` null | string povinné date

`deadlineOn` null | string povinné date

`deadline` object povinné

`state` string povinné

`daysLeft` integer | null povinné

`withinTwoYears` boolean | null povinné

`status` string povinné

`outcome` null | string povinné

`resolvedOn` null | string povinné date

`resolutionNote` null | string povinné

`creditNoteId` null | string povinné

`serviceJobId` string | null povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`discoveredOn` null | string date

`warrantyUntil` null | string date

`businessPeriods` null | object

`hiddenDefectLimit` null | string povinné date

`withinHiddenDefectLimit` boolean | null povinné

`daysFromDiscovery` integer | null povinné

`warrantyUntil` null | string povinné date

`withinWarranty` boolean | null povinné

`customFields` object

`invoiceNumber` any

Null in every recorded response.

`creditNoteNumber` any

Null in every recorded response.

`creditNoteStatus` any

Null in every recorded response.

```bash
curl -X POST https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/cancel \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/cancel', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/cancel",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Complaint protocol PDF: the intake confirmation of § 19 odst. 2, or the resolution confirmation of § 19 odst. 5

GET `/v1/complaints/{id}/pdf`

Complaint protocol PDF: the intake confirmation of § 19 odst. 2, or the resolution confirmation of § 19 odst. 5

Nástroj MCP: `download-complaint-protocol`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`document` "intake" | "resolution"

`language` "cs" | "en" | "de" | "fr"

Language of the protocol. Without it, the language set on the contact, then the company default.

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Close a complaint: repair, replacement, refund, discount, or rejection. Refund and discount create a credit note on the sale

POST `/v1/complaints/{id}/resolve`

Close a complaint: repair, replacement, refund, discount, or rejection. Refund and discount create a credit note on the sale. The credit note stays a draft to check unless issueCreditNote is set. Replacement with a warehouse issues the goods from stock.

Nástroj MCP: `resolve-complaint`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`outcome` "repair" | "replacement" | "refund" | "discount" | "rejected" povinné

`resolvedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`note` string max 4000 chars

`quantity` number max 1000000000

`discountNetHaler` integer max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`issueCreditNote` boolean

`replacementWarehouseId` string

ID of the replacement warehouse.

`replacementItemId` string

ID of the replacement item.

### Odpověď · 200

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`consumer` boolean povinné

`invoiceId` null | string povinné

`invoiceLineId` null | string povinné

`itemId` null | string povinné

`subject` string povinné

`description` string povinné

`requestedResolution` string | null povinné

`quantity` integer | null povinné

`deliveredOn` null | string povinné date

`claimedOn` string povinné date

`agreedDeadline` null | string povinné date

`deadlineOn` null | string povinné date

`deadline` object povinné

`state` string povinné

`daysLeft` integer | null povinné

`withinTwoYears` boolean | null povinné

`status` string povinné

`outcome` null | string povinné

`resolvedOn` null | string povinné date

`resolutionNote` null | string povinné

`creditNoteId` null | string povinné

`serviceJobId` string | null povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`discoveredOn` null | string date

`warrantyUntil` null | string date

`businessPeriods` null | object

`hiddenDefectLimit` null | string povinné date

`withinHiddenDefectLimit` boolean | null povinné

`daysFromDiscovery` integer | null povinné

`warrantyUntil` null | string povinné date

`withinWarranty` boolean | null povinné

`customFields` object

`invoiceNumber` any

Null in every recorded response.

`creditNoteNumber` any

Null in every recorded response.

`creditNoteStatus` any

Null in every recorded response.

```bash
curl -X POST https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/resolve \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "outcome": "repair"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/resolve', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "outcome": "repair"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/resolve",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "outcome": "repair"
    },
)
data = response.json()
```

## Mark a complaint as being worked on

POST `/v1/complaints/{id}/start`

Mark a complaint as being worked on

Nástroj MCP: `start-complaint`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`consumer` boolean povinné

`invoiceId` null | string povinné

`invoiceLineId` null | string povinné

`itemId` null | string povinné

`subject` string povinné

`description` string povinné

`requestedResolution` string | null povinné

`quantity` integer | null povinné

`deliveredOn` null | string povinné date

`claimedOn` string povinné date

`agreedDeadline` null | string povinné date

`deadlineOn` null | string povinné date

`deadline` object povinné

`state` string povinné

`daysLeft` integer | null povinné

`withinTwoYears` boolean | null povinné

`status` string povinné

`outcome` null | string povinné

`resolvedOn` null | string povinné date

`resolutionNote` null | string povinné

`creditNoteId` null | string povinné

`serviceJobId` string | null povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`discoveredOn` null | string date

`warrantyUntil` null | string date

`businessPeriods` null | object

`hiddenDefectLimit` null | string povinné date

`withinHiddenDefectLimit` boolean | null povinné

`daysFromDiscovery` integer | null povinné

`warrantyUntil` null | string povinné date

`withinWarranty` boolean | null povinné

`customFields` object

`invoiceNumber` any

Null in every recorded response.

`creditNoteNumber` any

Null in every recorded response.

`creditNoteStatus` any

Null in every recorded response.

```bash
curl -X POST https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/start \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/start', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/complaints/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/start",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Detail: nastavení, reklamace

GET `/v1/complaints/settings`

How many days the company works to on a complaint between businesses. The law sets no number for them

Nástroj MCP: `get-complaint-settings`

### Odpověď · 200

`businessDeadlineDays` integer | null povinné

```bash
curl https://api.damedoklad.cz/v1/complaints/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/complaints/settings', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/complaints/settings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Úprava: nastavení, reklamace

PUT `/v1/complaints/settings`

Set how many days the company works to on a complaint between businesses. An agreed date always wins, and consumers keep their 30 days

Nástroj MCP: `update-complaint-settings`

### Tělo požadavku

`businessDeadlineDays` integer | null povinné

Between businesses the law sets no number of days, so the company may choose how many it works to. Null: only an agreed date counts.

### Odpověď · 200

`businessDeadlineDays` integer | null povinné

```bash
curl -X PUT https://api.damedoklad.cz/v1/complaints/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "businessDeadlineDays": 1
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/complaints/settings', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "businessDeadlineDays": 1
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/complaints/settings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "businessDeadlineDays": 1
    },
)
data = response.json()
```

## Úprava: aktivita, kontakt

PATCH `/v1/contact-activities/{id}`

Edit an activity, or mark a task done

Nástroj MCP: `update-contact-activity`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`kind` "note" | "call" | "meeting" | "task"

`subject` string max 200 chars

`body` string | null

`occurredOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`dueOn` string | null

Date as YYYY-MM-DD.

`assignedToId` string | null

The colleague a task is for. They get an e-mail when it is given to them.

`parentId` string | null

The task this one is a subtask of, on the same contact. A task cannot be finished while a subtask is open.

`checkerId` string | null

The colleague who checks the work. A finished task waits for them, and only their approval completes it.

`recurrence` "daily" | "weekly" | "monthly" | "quarterly" | "yearly" | null

Repeat: when a task with a due date is completed, the next one appears with its subtasks. Our choice of steps; the Stormware pages we could read do not list POHODA's.

`recurrenceUntil` string | null

No further repeat falls due after this day.

`remindDaysBefore` integer | null

Days before the due date to remind the assignee, or the author of an unassigned task, in the bell and by e-mail.

`done` boolean

### Odpověď · 200

`id` string povinné

`contactId` string povinné

`kind` string povinné

`subject` string povinné

`body` null | string povinné

`occurredOn` string povinné date

`dueOn` null | string povinné date

`done` boolean povinné

`doneAt` null | string povinné date-time

`assignedToId` null | string povinné

`createdAt` string povinné date-time

`parentId` null | string

`checkerId` null | string

`checked` boolean

`checkedAt` null | string date-time

`waitingForCheck` boolean

`recurrence` null | string

`recurrenceUntil` null | string date

`nextTaskId` null | string

`remindDaysBefore` integer | null

`contactName` null | string

`assignedToName` string

```bash
curl -X PATCH https://api.damedoklad.cz/v1/contact-activities/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "note",
  "subject": "string",
  "body": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contact-activities/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "note",
    "subject": "string",
    "body": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/contact-activities/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "note",
        "subject": "string",
        "body": "string"
    },
)
data = response.json()
```

## Smazání: aktivita, kontakt

DELETE `/v1/contact-activities/{id}`

Delete an activity

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-contact-activity`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/contact-activities/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contact-activities/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/contact-activities/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## As the checking person, approve a finished task, which completes it and starts its next repeat, or send it back to the assignee

POST `/v1/contact-activities/{id}/check`

As the checking person, approve a finished task, which completes it and starts its next repeat, or send it back to the assignee. Only the person named as checker, an owner, or an accountant may do this. Sending it back reopens the task and adds the note to its text.

Nástroj MCP: `check-contact-task`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`approved` boolean povinné

true completes the task. false reopens it and tells the assignee.

`note` string | null

### Odpověď · 200

`id` string povinné

`contactId` string povinné

`kind` string povinné

`subject` string povinné

`body` null | string povinné

`occurredOn` string povinné date

`dueOn` null | string povinné date

`done` boolean povinné

`doneAt` null | string povinné date-time

`assignedToId` null | string povinné

`createdAt` string povinné date-time

`parentId` null | string

`checkerId` null | string

`checked` boolean

`checkedAt` null | string date-time

`waitingForCheck` boolean

`recurrence` null | string

`recurrenceUntil` null | string date

`nextTaskId` null | string

`remindDaysBefore` integer | null

`contactName` null | string

`assignedToName` string

```bash
curl -X POST https://api.damedoklad.cz/v1/contact-activities/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/check \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "approved": false
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contact-activities/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/check', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "approved": false
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/contact-activities/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/check",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "approved": False
    },
)
data = response.json()
```

## Change a reason for processing, for example end it when consent is withdrawn

PATCH `/v1/contact-processing-reasons/{id}`

Change a reason for processing, for example end it when consent is withdrawn

Nástroj MCP: `update-contact-processing-reason`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`legalBasis` "consent" | "contract" | "legal\_obligation" | "vital\_interest" | "public\_task" | "legitimate\_interest"

`purpose` string max 200 chars

`validFrom` string YYYY-MM-DD

Date as YYYY-MM-DD.

`validTo` string | null

Date as YYYY-MM-DD.

`note` string | null

### Odpověď · 200

`id` string povinné

`contactId` string povinné

`legalBasis` string povinné

`purpose` string povinné

`validFrom` string povinné date

`validTo` null | string povinné date

`note` string | null povinné

`state` string povinné

`reasonId` null | string

```bash
curl -X PATCH https://api.damedoklad.cz/v1/contact-processing-reasons/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "legalBasis": "consent",
  "purpose": "string",
  "validFrom": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contact-processing-reasons/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "legalBasis": "consent",
    "purpose": "string",
    "validFrom": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/contact-processing-reasons/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "legalBasis": "consent",
        "purpose": "string",
        "validFrom": "2026-10-30"
    },
)
data = response.json()
```

## Remove a reason for processing entered by mistake. To end one, set its end date instead, so the history stays

DELETE `/v1/contact-processing-reasons/{id}`

Remove a reason for processing entered by mistake. To end one, set its end date instead, so the history stays

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-contact-processing-reason`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/contact-processing-reasons/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contact-processing-reasons/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/contact-processing-reasons/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Seznam: aktivita, kontakt

GET `/v1/contacts/{id}/activities`

List the notes, calls, meetings, and tasks of a contact, newest first

Nástroj MCP: `list-contact-activities`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`kind` "note" | "call" | "meeting" | "task"

`openTasks` "true" | "false"

### Odpověď · 200

`data` object\[\] povinné

`object` "contact\_activity" povinné

`id` string povinné

`contactId` string povinné

`kind` string povinné

`subject` string povinné

`body` null | string povinné

`occurredOn` string povinné date

`dueOn` null | string povinné date

`done` boolean povinné

`doneAt` null | string povinné date-time

`assignedToId` null | string povinné

`createdAt` string povinné date-time

`parentId` null | string

`checkerId` null | string

`checked` boolean

`checkedAt` null | string date-time

`waitingForCheck` boolean

`recurrence` null | string

`recurrenceUntil` null | string date

`nextTaskId` null | string

`remindDaysBefore` integer | null

`contactName` null | string

`assignedToName` string

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/activities \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/activities', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/activities",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Vytvoření: aktivita, kontakt

POST `/v1/contacts/{id}/activities`

Add a note, call, meeting, or task to a contact. A task with a due date shows in K vyřízení, and can have subtasks, a checker, a repeat, and a reminder

Nástroj MCP: `create-contact-activity`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`kind` "note" | "call" | "meeting" | "task"

`subject` string povinné max 200 chars

`body` string | null

`occurredOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`dueOn` string | null

Date as YYYY-MM-DD.

`assignedToId` string | null

The colleague a task is for. They get an e-mail when it is given to them.

`parentId` string | null

The task this one is a subtask of, on the same contact. A task cannot be finished while a subtask is open.

`checkerId` string | null

The colleague who checks the work. A finished task waits for them, and only their approval completes it.

`recurrence` "daily" | "weekly" | "monthly" | "quarterly" | "yearly" | null

Repeat: when a task with a due date is completed, the next one appears with its subtasks. Our choice of steps; the Stormware pages we could read do not list POHODA's.

`recurrenceUntil` string | null

No further repeat falls due after this day.

`remindDaysBefore` integer | null

Days before the due date to remind the assignee, or the author of an unassigned task, in the bell and by e-mail.

### Odpověď · 201

`id` string povinné

`contactId` string povinné

`kind` string povinné

`subject` string povinné

`body` null | string povinné

`occurredOn` string povinné date

`dueOn` null | string povinné date

`done` boolean povinné

`doneAt` null | string povinné date-time

`assignedToId` null | string povinné

`createdAt` string povinné date-time

`parentId` null | string

`checkerId` null | string

`checked` boolean

`checkedAt` null | string date-time

`waitingForCheck` boolean

`recurrence` null | string

`recurrenceUntil` null | string date

`nextTaskId` null | string

`remindDaysBefore` integer | null

`contactName` null | string

`assignedToName` string

```bash
curl -X POST https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/activities \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "subject": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/activities', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "subject": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/activities",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "subject": "string"
    },
)
data = response.json()
```

## Get the GDPR overview of a contact: reasons for processing and their validity, last use on documents, restriction, unsubscribe

GET `/v1/contacts/{id}/gdpr`

Get the GDPR overview of a contact: reasons for processing and their validity, last use on documents, restriction, unsubscribe

Nástroj MCP: `get-contact-gdpr`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`contactId` null | string povinné

`state` string povinné

`restricted` boolean povinné

`restrictedAt` null | string povinné date-time

`marketingOptOut` boolean povinné

`marketingOptOutAt` null | string povinné date-time

`reasons` object\[\] povinné

`object` "contact\_processing\_reason" povinné

`id` string povinné

`contactId` string povinné

`legalBasis` string povinné

`purpose` string povinné

`validFrom` string povinné date

`validTo` null | string povinné date

`note` string | null povinné

`state` string povinné

`reasonId` null | string

`usage` object povinné

`lastPreSaleOn` null | string povinné date

`lastSaleOn` null | string povinné date

`lastPostSaleOn` null | string povinné date

```bash
curl https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/gdpr \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/gdpr', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/gdpr",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Add a legal reason for processing the personal data of a contact, picked from the company list or written out, with how long it lasts

POST `/v1/contacts/{id}/gdpr/reasons`

Add a legal reason for processing the personal data of a contact, picked from the company list or written out, with how long it lasts

Nástroj MCP: `add-contact-processing-reason`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`legalBasis` "consent" | "contract" | "legal\_obligation" | "vital\_interest" | "public\_task" | "legitimate\_interest"

`purpose` string max 200 chars

`validFrom` string YYYY-MM-DD

Date as YYYY-MM-DD.

`validTo` string | null

Date as YYYY-MM-DD.

`note` string | null

`reasonId` string

A reason from the company list (GET /gdpr/reasons). It fills legal basis, purpose, and the end date from its length. Without it, name legalBasis and purpose.

### Odpověď · 201

`id` string povinné

`contactId` string povinné

`legalBasis` string povinné

`purpose` string povinné

`validFrom` string povinné date

`validTo` null | string povinné date

`note` string | null povinné

`state` string povinné

`reasonId` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/gdpr/reasons \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "legalBasis": "consent",
  "purpose": "string",
  "validFrom": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/gdpr/reasons', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "legalBasis": "consent",
    "purpose": "string",
    "validFrom": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/gdpr/reasons",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "legalBasis": "consent",
        "purpose": "string",
        "validFrom": "2026-10-30"
    },
)
data = response.json()
```

## Restrict processing of a contact (GDPR Art. 18): it leaves the ordinary contact list and cannot go on a new document. Or lift the restriction

POST `/v1/contacts/{id}/gdpr/restriction`

Restrict processing of a contact (GDPR Art. 18): it leaves the ordinary contact list and cannot go on a new document. Or lift the restriction

Nástroj MCP: `restrict-contact-processing`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`restricted` boolean povinné

### Odpověď · 200

`contactId` null | string povinné

`state` string povinné

`restricted` boolean povinné

`restrictedAt` null | string povinné date-time

`marketingOptOut` boolean povinné

`marketingOptOutAt` null | string povinné date-time

`reasons` object\[\] povinné

`object` "contact\_processing\_reason" povinné

`id` string povinné

`contactId` string povinné

`legalBasis` string povinné

`purpose` string povinné

`validFrom` string povinné date

`validTo` null | string povinné date

`note` string | null povinné

`state` string povinné

`reasonId` null | string

`usage` object povinné

`lastPreSaleOn` null | string povinné date

`lastSaleOn` null | string povinné date

`lastPostSaleOn` null | string povinné date

```bash
curl -X POST https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/gdpr/restriction \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "restricted": false
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/gdpr/restriction', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "restricted": false
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/gdpr/restriction",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "restricted": False
    },
)
data = response.json()
```

## Mail merge (hromadná korespondence): a letter per contact as PDF files in a ZIP, format=docx to fill a Word template per contact in a ZIP, or format=csv for the merge data

POST `/v1/contacts/mail-merge`

Mail merge (hromadná korespondence): a letter per contact as PDF files in a ZIP, format=docx to fill a Word template per contact in a ZIP, or format=csv for the merge data. A Word template marks its places with {{name}} or a Word MERGEFIELD of the same name: name, person, ico, dic, email, phone, street, city, postalCode, companyName. An unknown one is refused, so a typo does not leave a gap in a letter.

Nástroj MCP: `contact-mail-merge`

### Tělo požadavku

`contactIds` string\[\]

`groupId` string

ID of the group.

`format` "pdf" | "csv" | "docx"

`title` string max 200 chars

`body` string max 20000 chars

`templateBase64` string max 14000000 chars

format=docx: a Word template, base64, with {{name}} or Word MERGEFIELD fields of the same names. At most 10 MB.

### Odpověď · 200

Vrací soubor application/octet-stream.

```bash
curl -X POST https://api.damedoklad.cz/v1/contacts/mail-merge \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactIds": [
    "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ],
  "groupId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "format": "pdf"
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contacts/mail-merge', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactIds": [
      "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ],
    "groupId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "format": "pdf"
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/contacts/mail-merge",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactIds": [
            "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ],
        "groupId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "format": "pdf"
    },
)
content = response.content
```

## List bulk e-mails sent, newest first, with how many went out

GET `/v1/contacts/mailings`

List bulk e-mails sent, newest first, with how many went out

Nástroj MCP: `list-contact-mailings`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "contact\_mailing" povinné

`id` string povinné

`purpose` string povinné

`subject` string povinné

`recipientCount` integer povinné

`sentCount` integer povinné

`failedCount` integer povinné

`skippedCount` integer povinné

`results` object\[\]

`contactId` null | string povinné

`name` null | string povinné

`email` null | string povinné

`status` string povinné

`reason` null | string povinné

`status` string

`finishedAt` null | string date-time

`createdAt` string date-time

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/contacts/mailings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contacts/mailings', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/contacts/mailings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Queue a bulk e-mail to contacts of this company, and answer at once. A marketing message is labelled, names the sender, and carries an unsubscribe link and List-Unsubscribe headers

POST `/v1/contacts/mailings`

Queue a bulk e-mail to contacts of this company, and answer at once. A marketing message is labelled, names the sender, and carries an unsubscribe link and List-Unsubscribe headers. Fields {{name}}, {{person}}, {{ico}}, {{dic}}, {{email}}, {{phone}}, {{street}}, {{city}}, {{postalCode}}, {{companyName}} fill per contact. Marketing goes only to contacts with consent or to customers, and never to one who unsubscribed (§ 7 zákona č. 480/2004 Sb.). At most 200 recipients per message and 1000 per day. It goes out in the background: follow it on GET /contacts/mailings/{id}.

Nástroj MCP: `send-contact-mailing`

### Tělo požadavku

`contactIds` string\[\]

`groupId` string

ID of the group.

`purpose` "service" | "marketing" povinné

service: a business message, such as a changed bank account. marketing: an obchodní sdělení under § 7 zákona č. 480/2004 Sb., labelled and with an unsubscribe link.

`subject` string povinné max 200 chars

`body` string povinné max 20000 chars

### Odpověď · 201

`id` string povinné

`purpose` string povinné

`subject` string povinné

`recipientCount` integer povinné

`sentCount` integer povinné

`failedCount` integer povinné

`skippedCount` integer povinné

`results` object\[\]

`contactId` null | string povinné

`name` null | string povinné

`email` null | string povinné

`status` string povinné

`reason` null | string povinné

`status` string

`finishedAt` null | string date-time

`createdAt` string date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/contacts/mailings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "purpose": "service",
  "subject": "string",
  "body": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contacts/mailings', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "purpose": "service",
    "subject": "string",
    "body": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/contacts/mailings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "purpose": "service",
        "subject": "string",
        "body": "string"
    },
)
data = response.json()
```

## See how a bulk e-mail is going: its status, and what happened to each recipient

GET `/v1/contacts/mailings/{id}`

See how a bulk e-mail is going: its status, and what happened to each recipient

Nástroj MCP: `get-contact-mailing`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`purpose` string povinné

`subject` string povinné

`recipientCount` integer povinné

`sentCount` integer povinné

`failedCount` integer povinné

`skippedCount` integer povinné

`results` object\[\]

`contactId` null | string povinné

`name` null | string povinné

`email` null | string povinné

`status` string povinné

`reason` null | string povinné

`status` string

`finishedAt` null | string date-time

`createdAt` string date-time

```bash
curl https://api.damedoklad.cz/v1/contacts/mailings/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contacts/mailings/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/contacts/mailings/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## See who a bulk e-mail would reach and why anyone is left out, with the first message filled in. Sends nothing

POST `/v1/contacts/mailings/preview`

See who a bulk e-mail would reach and why anyone is left out, with the first message filled in. Sends nothing

Nástroj MCP: `preview-contact-mailing`

### Tělo požadavku

`contactIds` string\[\]

`groupId` string

ID of the group.

`purpose` "service" | "marketing" povinné

service: a business message, such as a changed bank account. marketing: an obchodní sdělení under § 7 zákona č. 480/2004 Sb., labelled and with an unsubscribe link.

`subject` string povinné max 200 chars

`body` string povinné max 20000 chars

### Odpověď · 200

`willSend` integer povinné

`skipped` integer povinné

`limitPerMailing` integer povinné

`limitPerDay` integer povinné

`sentToday` integer povinné

`recipients` object\[\] povinné

`contactId` null | string povinné

`name` null | string povinné

`email` null | string povinné

`willSend` boolean povinné

`skipReason` null | string povinné

`sample` object povinné

`subject` null | string povinné

`text` string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/contacts/mailings/preview \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "purpose": "service",
  "subject": "string",
  "body": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contacts/mailings/preview', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "purpose": "service",
    "subject": "string",
    "body": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/contacts/mailings/preview",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "purpose": "service",
        "subject": "string",
        "body": "string"
    },
)
data = response.json()
```

## List SMS messages, newest first, with what happened to each. contactId narrows it to one contact

GET `/v1/contacts/sms`

List SMS messages, newest first, with what happened to each. contactId narrows it to one contact

Nástroj MCP: `list-contact-sms`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`contactId` string

ID of the contact. Find it with list-contacts.

`status` "pending" | "sent" | "failed" | "skipped"

### Odpověď · 200

`data` object\[\] povinné

`object` "contact\_sms" povinné

`id` string povinné

`batchId` string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`phone` null | string povinné

`purpose` null | string povinné

`text` string povinné

`status` string povinné

`reason` null | string povinné

`provider` null | string povinné

`providerId` null | string povinné

`sentAt` null | string povinné date-time

`createdAt` string povinné date-time

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/contacts/sms \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contacts/sms', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/contacts/sms",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Queue a business SMS to contacts, and answer at once. Answers sms\_not\_configured until an SMS gateway is set up by the operator

POST `/v1/contacts/sms`

Queue a business SMS to contacts, and answer at once. Answers sms\_not\_configured until an SMS gateway is set up by the operator. Goes out in the background: follow it on GET /contacts/sms. A marketing text is labelled, names the sender, and carries a way out, and goes only to contacts with consent or to customers (§ 7 zákona č. 480/2004 Sb.). At most 200 per sending and 1000 per day. The status says the gateway accepted a text; delivery reports are not read.

Nástroj MCP: `send-contact-sms`

### Tělo požadavku

`contactIds` string\[\]

`groupId` string

ID of the group.

`purpose` "service" | "marketing"

service, the default: a business message. marketing: an obchodní sdělení under § 7 zákona č. 480/2004 Sb., labelled and with a way out, only to contacts with consent or to customers.

`text` string povinné max 612 chars

Fields such as {{name}} fill per contact. At most 612 characters, or 268 with diacritics, once filled in.

### Odpověď · 201

`results` object\[\] povinné

`id` string povinné

`ok` boolean

`providerId` null | string

`contactId` null | string

`status` string

`reason` null | string

`total` integer povinné

`succeeded` integer

`failed` integer

`id` string

`queued` integer

`skipped` integer

```bash
curl -X POST https://api.damedoklad.cz/v1/contacts/sms \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "text": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contacts/sms', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "text": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/contacts/sms",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "text": "string"
    },
)
data = response.json()
```

## See who a text would reach and why anyone is left out, with the first message filled in. Sends nothing

POST `/v1/contacts/sms/preview`

See who a text would reach and why anyone is left out, with the first message filled in. Sends nothing

Nástroj MCP: `preview-contact-sms`

### Tělo požadavku

`contactIds` string\[\]

`groupId` string

ID of the group.

`purpose` "service" | "marketing"

service, the default: a business message. marketing: an obchodní sdělení under § 7 zákona č. 480/2004 Sb., labelled and with a way out, only to contacts with consent or to customers.

`text` string povinné max 612 chars

Fields such as {{name}} fill per contact. At most 612 characters, or 268 with diacritics, once filled in.

### Odpověď · 200

`configured` boolean povinné

`willSend` integer povinné

`skipped` integer povinné

`limitPerSending` integer povinné

`limitPerDay` integer povinné

`sentToday` integer povinné

`recipients` object\[\] povinné

`contactId` null | string povinné

`name` null | string povinné

`phone` null | string povinné

`willSend` boolean povinné

`skipReason` null | string povinné

`tooLong` boolean povinné

`sample` object povinné

`text` string povinné

`length` integer povinné

`limit` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/contacts/sms/preview \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "text": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contacts/sms/preview', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "text": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/contacts/sms/preview",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "text": "string"
    },
)
data = response.json()
```

## Say whether an SMS gateway is connected, and how many texts may still go out today

GET `/v1/contacts/sms/status`

Say whether an SMS gateway is connected, and how many texts may still go out today

Nástroj MCP: `get-contact-sms-status`

### Odpověď · 200

`configured` boolean povinné

`provider` null | string povinné

`sentToday` integer povinné

`limitPerDay` integer povinné

`limitPerSending` integer povinné

```bash
curl https://api.damedoklad.cz/v1/contacts/sms/status \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contacts/sms/status', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/contacts/sms/status",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Change an amendment

PATCH `/v1/contract-amendments/{id}`

Change an amendment

Nástroj MCP: `update-contract-amendment`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`title` string max 200 chars

`signedOn` string | null

Date as YYYY-MM-DD.

`effectiveFrom` string | null

Date as YYYY-MM-DD.

`newValidTo` string | null

The contract now runs to this day.

`valueChangeHaler` integer | null

How much this amendment adds to the value of the contract; negative lowers it.

`note` string | null

### Odpověď · 200

`id` string povinné

`contractId` string povinné

`position` integer povinné

`title` string povinné

`signedOn` string | null povinné

`effectiveFrom` string | null povinné

`newValidTo` null | string povinné date

`valueChangeHaler` integer | null povinné

`note` string | null povinné

`createdAt` string povinné date-time

```bash
curl -X PATCH https://api.damedoklad.cz/v1/contract-amendments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "string",
  "signedOn": "2026-10-30",
  "effectiveFrom": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contract-amendments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "title": "string",
    "signedOn": "2026-10-30",
    "effectiveFrom": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/contract-amendments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "title": "string",
        "signedOn": "2026-10-30",
        "effectiveFrom": "2026-10-30"
    },
)
data = response.json()
```

## Delete an amendment recorded by mistake

DELETE `/v1/contract-amendments/{id}`

Delete an amendment recorded by mistake

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-contract-amendment`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/contract-amendments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contract-amendments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/contract-amendments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List contracts (smlouvy) with their partner, status, and end date as amended

GET `/v1/contracts`

List contracts (smlouvy) with their partner, status, and end date as amended

Nástroj MCP: `list-contracts`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`contactId` string

ID of the contact. Find it with list-contacts.

`status` "draft" | "active" | "ended" | "terminated"

### Odpověď · 200

`data` object\[\] povinné

`object` "business\_contract" povinné

`id` string povinné

`number` null | string povinné

`title` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`contractType` string povinné

`category` string | null povinné

`status` string povinné

`signedOn` null | string povinné date

`validFrom` null | string povinné date

`validTo` null | string povinné date

`effectiveValidTo` null | string povinné date

`noticeDays` integer | null povinné

`remindDays` integer | null povinné

`valueHaler` integer | null povinné

`effectiveValueHaler` integer | null povinné

`currency` null | string povinné

`externalNumber` string | null povinné

`note` string | null povinné

`amendmentCount` integer povinné

`amendments` object\[\] povinné

`object` "contract\_amendment" povinné

`id` string povinné

`contractId` string povinné

`position` integer povinné

`title` string povinné

`signedOn` string | null povinné

`effectiveFrom` string | null povinné

`newValidTo` null | string povinné date

`valueChangeHaler` integer | null povinné

`note` string | null povinné

`createdAt` string povinné date-time

`createdAt` string povinné date-time

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/contracts \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contracts', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/contracts",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Record a contract with a partner. It gets its own number; attach the signed file to it through the document archive

POST `/v1/contracts`

Record a contract with a partner. It gets its own number; attach the signed file to it through the document archive

Nástroj MCP: `create-contract`

### Tělo požadavku

`title` string povinné max 200 chars

`contactId` string | null

ID of the contact. Find it with list-contacts.

`contractType` "sale" | "purchase" | "work" | "service" | "lease" | "loan" | "framework" | "nda" | "other"

`category` string | null

`status` "draft" | "active" | "ended" | "terminated"

`signedOn` string | null

Date as YYYY-MM-DD.

`validFrom` string | null

Date as YYYY-MM-DD.

`validTo` string | null

Date as YYYY-MM-DD.

`noticeDays` integer | null

`remindDays` integer | null

Show in K vyřízení this many days before the contract ends. Default 30.

`valueHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`externalNumber` string | null

`note` string | null

### Odpověď · 201

`id` string povinné

`number` null | string povinné

`title` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`contractType` string povinné

`category` string | null povinné

`status` string povinné

`signedOn` null | string povinné date

`validFrom` null | string povinné date

`validTo` null | string povinné date

`effectiveValidTo` null | string povinné date

`noticeDays` integer | null povinné

`remindDays` integer | null povinné

`valueHaler` integer | null povinné

`effectiveValueHaler` integer | null povinné

`currency` null | string povinné

`externalNumber` string | null povinné

`note` string | null povinné

`amendmentCount` integer povinné

`amendments` object\[\] povinné

`object` "contract\_amendment" povinné

`id` string povinné

`contractId` string povinné

`position` integer povinné

`title` string povinné

`signedOn` string | null povinné

`effectiveFrom` string | null povinné

`newValidTo` null | string povinné date

`valueChangeHaler` integer | null povinné

`note` string | null povinné

`createdAt` string povinné date-time

`createdAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/contracts \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "title": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contracts', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "title": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/contracts",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "title": "string"
    },
)
data = response.json()
```

## Get a contract with its amendments

GET `/v1/contracts/{id}`

Get a contract with its amendments

Nástroj MCP: `get-contract`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`number` null | string povinné

`title` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`contractType` string povinné

`category` string | null povinné

`status` string povinné

`signedOn` null | string povinné date

`validFrom` null | string povinné date

`validTo` null | string povinné date

`effectiveValidTo` null | string povinné date

`noticeDays` integer | null povinné

`remindDays` integer | null povinné

`valueHaler` integer | null povinné

`effectiveValueHaler` integer | null povinné

`currency` null | string povinné

`externalNumber` string | null povinné

`note` string | null povinné

`amendmentCount` integer povinné

`amendments` object\[\] povinné

`object` "contract\_amendment" povinné

`id` string povinné

`contractId` string povinné

`position` integer povinné

`title` string povinné

`signedOn` string | null povinné

`effectiveFrom` string | null povinné

`newValidTo` null | string povinné date

`valueChangeHaler` integer | null povinné

`note` string | null povinné

`createdAt` string povinné date-time

`createdAt` string povinné date-time

```bash
curl https://api.damedoklad.cz/v1/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Change a contract, including ending or terminating it

PATCH `/v1/contracts/{id}`

Change a contract, including ending or terminating it

Nástroj MCP: `update-contract`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`title` string max 200 chars

`contactId` string | null

ID of the contact. Find it with list-contacts.

`contractType` "sale" | "purchase" | "work" | "service" | "lease" | "loan" | "framework" | "nda" | "other"

`category` string | null

`status` "draft" | "active" | "ended" | "terminated"

`signedOn` string | null

Date as YYYY-MM-DD.

`validFrom` string | null

Date as YYYY-MM-DD.

`validTo` string | null

Date as YYYY-MM-DD.

`noticeDays` integer | null

`remindDays` integer | null

Show in K vyřízení this many days before the contract ends. Default 30.

`valueHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`externalNumber` string | null

`note` string | null

### Odpověď · 200

`id` string povinné

`number` null | string povinné

`title` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`contractType` string povinné

`category` string | null povinné

`status` string povinné

`signedOn` null | string povinné date

`validFrom` null | string povinné date

`validTo` null | string povinné date

`effectiveValidTo` null | string povinné date

`noticeDays` integer | null povinné

`remindDays` integer | null povinné

`valueHaler` integer | null povinné

`effectiveValueHaler` integer | null povinné

`currency` null | string povinné

`externalNumber` string | null povinné

`note` string | null povinné

`amendmentCount` integer povinné

`amendments` object\[\] povinné

`object` "contract\_amendment" povinné

`id` string povinné

`contractId` string povinné

`position` integer povinné

`title` string povinné

`signedOn` string | null povinné

`effectiveFrom` string | null povinné

`newValidTo` null | string povinné date

`valueChangeHaler` integer | null povinné

`note` string | null povinné

`createdAt` string povinné date-time

`createdAt` string povinné date-time

```bash
curl -X PATCH https://api.damedoklad.cz/v1/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "string",
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "contractType": "sale"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "title": "string",
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "contractType": "sale"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "title": "string",
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "contractType": "sale"
    },
)
data = response.json()
```

## Delete a contract recorded by mistake, with its amendments. An ended contract is kept by setting its status

DELETE `/v1/contracts/{id}`

Delete a contract recorded by mistake, with its amendments. An ended contract is kept by setting its status

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-contract`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Add an amendment (dodatek) to a contract. It can move the end date and change the value

POST `/v1/contracts/{id}/amendments`

Add an amendment (dodatek) to a contract. It can move the end date and change the value

Nástroj MCP: `create-contract-amendment`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`title` string povinné max 200 chars

`signedOn` string | null

Date as YYYY-MM-DD.

`effectiveFrom` string | null

Date as YYYY-MM-DD.

`newValidTo` string | null

The contract now runs to this day.

`valueChangeHaler` integer | null

How much this amendment adds to the value of the contract; negative lowers it.

`note` string | null

### Odpověď · 201

`id` string povinné

`contractId` string povinné

`position` integer povinné

`title` string povinné

`signedOn` string | null povinné

`effectiveFrom` string | null povinné

`newValidTo` null | string povinné date

`valueChangeHaler` integer | null povinné

`note` string | null povinné

`createdAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendments \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendments', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "title": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendments",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "title": "string"
    },
)
data = response.json()
```

## List the custom fields a company defined, optionally for one kind of record. Most companies have none

GET `/v1/custom-fields`

List the custom fields a company defined, optionally for one kind of record. Most companies have none

Nástroj MCP: `list-custom-fields`

### Parametry dotazu

`entity` "contact" | "item" | "invoice" | "received\_invoice" | "proforma" | "credit\_note" | "delivery\_note" | "sales\_document" | "supplier\_advance" | "stock\_document" | "complaint" | "service\_job"

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "custom\_field" povinné

`id` string povinné

`entity` string povinné

`key` string povinné

`label` null | string povinné

`kind` string povinné

`options` string\[\] povinné

`position` integer | null povinné

`isActive` boolean povinné

`searchable` boolean povinné

`printed` boolean povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/custom-fields \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/custom-fields', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/custom-fields",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Define a custom field: text, number, date, or a choice from options, on contacts, items, or one kind of document

POST `/v1/custom-fields`

Define a custom field: text, number, date, or a choice from options, on contacts, items, or one kind of document

Nástroj MCP: `create-custom-field`

### Tělo požadavku

`entity` "contact" | "item" | "invoice" | "received\_invoice" | "proforma" | "credit\_note" | "delivery\_note" | "sales\_document" | "supplier\_advance" | "stock\_document" | "complaint" | "service\_job" povinné

`key` string

`label` string povinné max 80 chars

`kind` "text" | "number" | "date" | "choice" povinné

`options` string\[\]

`position` integer min 0 max 1000

`searchable` boolean

The search finds a record by this field.

`printed` boolean

The value prints on documents. Only for fields on a document.

### Odpověď · 201

`id` string povinné

`entity` string povinné

`key` string povinné

`label` null | string povinné

`kind` string povinné

`options` string\[\] povinné

`position` integer | null povinné

`isActive` boolean povinné

`searchable` boolean povinné

`printed` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/custom-fields \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "entity": "contact",
  "label": "string",
  "kind": "text"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/custom-fields', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "entity": "contact",
    "label": "string",
    "kind": "text"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/custom-fields",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "entity": "contact",
        "label": "string",
        "kind": "text"
    },
)
data = response.json()
```

## Rename a custom field, change its options, or switch it off. Stored values stay

PATCH `/v1/custom-fields/{id}`

Rename a custom field, change its options, or switch it off. Stored values stay

Nástroj MCP: `update-custom-field`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`searchable` boolean

`printed` boolean

`label` string max 80 chars

`options` string\[\]

`position` integer min 0 max 1000

`isActive` boolean

### Odpověď · 200

`id` string povinné

`entity` string povinné

`key` string povinné

`label` null | string povinné

`kind` string povinné

`options` string\[\] povinné

`position` integer | null povinné

`isActive` boolean povinné

`searchable` boolean povinné

`printed` boolean povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/custom-fields/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "searchable": false,
  "printed": false,
  "label": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/custom-fields/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "searchable": false,
    "printed": false,
    "label": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/custom-fields/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "searchable": False,
        "printed": False,
        "label": "string"
    },
)
data = response.json()
```

## Delete a custom field definition. Values already stored stay on the records and in exports, and are no longer shown

DELETE `/v1/custom-fields/{id}`

Delete a custom field definition. Values already stored stay on the records and in exports, and are no longer shown

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-custom-field`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/custom-fields/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/custom-fields/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/custom-fields/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Set custom field values on one record. Pass only the fields to change, null clears one. Works on issued documents too: it changes nothing they say

PUT `/v1/custom-fields/values/{entity}/{id}`

Set custom field values on one record. Pass only the fields to change, null clears one. Works on issued documents too: it changes nothing they say

Nástroj MCP: `set-custom-field-values`

### Parametry v cestě

`entity` string povinné

`id` string povinné

### Tělo požadavku

`values` object povinné

### Odpověď · 200

`entity` string povinné

`id` string povinné

`values` object povinné

`region` null | string

`sleva` integer

`smlouva_od` string date

`poznamka_obchodu` string

`vyrobce` string

`zakazka_zakaznika` string

`cislo_zakaznika` string

`tajne` string

`akce` string

`regal` string

`stavba` string

`cislo_stavby` string

`interni` string

`termin` string date

`oblast` string

`stavba_zalohy` string

`tistene_pole` string

```bash
curl -X PUT https://api.damedoklad.cz/v1/custom-fields/values/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "values": {}
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/custom-fields/values/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "values": {}
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/custom-fields/values/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "values": {}
    },
)
data = response.json()
```

## Seznam: přílohy, doklad

GET `/v1/documents`

Search the document archive by title, file name, note, or the words inside PDF, Office, text and XML files; filter by what it is attached to, date, or retention

Nástroj MCP: `list-document-attachments`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`entityKind` "archive" | "employee" | "payroll\_run" | "asset" | "cash\_document" | "contact" | "contract" | "invoice" | "received\_invoice" | "proforma" | "supplier\_advance" | "credit\_note" | "delivery\_note" | "sales\_document" | "stock\_document" | "job\_order" | "complaint" | "service\_job"

`entityId` string

ID of the entity.

`retention` "expired" | "kept" | "held"

### Odpověď · 200

`data` object\[\] povinné

`object` "document\_attachment" povinné

`id` string povinné

`entityKind` string povinné

`entityId` null | string povinné

`title` string povinné

`filename` string povinné

`note` string | null povinné

`documentDate` string povinné date

`contentType` string povinné

`byteSize` integer | null povinné

`retentionRule` string povinné

`retentionCitation` null | string povinné

`retentionYears` integer | null povinné

`retentionUntil` null | string povinné date

`retentionExpired` boolean povinné

`createdAt` string povinné date-time

`scanStatus` null | string

`contentState` null | string

`retentionHold` null | object

`id` string povinné

`reason` null | string povinné

`citation` string povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/documents', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/documents",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Upload a file to the archive, optionally attached to a document or contact. Its retention date follows from the type and date

POST `/v1/documents`

Upload a file to the archive, optionally attached to a document or contact. Its retention date follows from the type and date. fileBase64 up to 25 MB. Without retentionRule the type follows from what it is attached to. The custom rule takes retentionUntil.

Nástroj MCP: `upload-document-attachment`

### Tělo požadavku

`entityKind` "archive" | "employee" | "payroll\_run" | "asset" | "cash\_document" | "contact" | "contract" | "invoice" | "received\_invoice" | "proforma" | "supplier\_advance" | "credit\_note" | "delivery\_note" | "sales\_document" | "stock\_document" | "job\_order" | "complaint" | "service\_job"

`entityId` string | null

ID of the entity.

`filename` string povinné max 255 chars

`contentType` string povinné max 120 chars

`fileBase64` string povinné

File content encoded as base64.

`title` string | null

`note` string | null

`retentionRule` "accounting\_statement" | "accounting\_document" | "accounting\_method" | "vat\_document" | "insurance\_record" | "payroll\_record" | "custom"

`documentDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`retentionUntil` string | null

### Odpověď · 201

`id` string povinné

`entityKind` string povinné

`entityId` null | string povinné

`title` string povinné

`filename` string povinné

`note` string | null povinné

`documentDate` string povinné date

`contentType` string povinné

`byteSize` integer | null povinné

`retentionRule` string povinné

`retentionCitation` null | string povinné

`retentionYears` integer | null povinné

`retentionUntil` null | string povinné date

`retentionExpired` boolean povinné

`createdAt` string povinné date-time

`scanStatus` null | string

`contentState` null | string

`retentionHold` null | object

`id` string povinné

`reason` null | string povinné

`citation` string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "filename": "Pekárna U Lípy s.r.o.",
  "contentType": "string",
  "fileBase64": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/documents', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "filename": "Pekárna U Lípy s.r.o.",
    "contentType": "string",
    "fileBase64": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/documents",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "filename": "Pekárna U Lípy s.r.o.",
        "contentType": "string",
        "fileBase64": "string"
    },
)
data = response.json()
```

## Detail: příloha, doklad

GET `/v1/documents/{id}`

Get a document

Nástroj MCP: `get-document-attachment`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`entityKind` string povinné

`entityId` null | string povinné

`title` string povinné

`filename` string povinné

`note` string | null povinné

`documentDate` string povinné date

`contentType` string povinné

`byteSize` integer | null povinné

`retentionRule` string povinné

`retentionCitation` null | string povinné

`retentionYears` integer | null povinné

`retentionUntil` null | string povinné date

`retentionExpired` boolean povinné

`createdAt` string povinné date-time

`scanStatus` null | string

`contentState` null | string

`retentionHold` null | object

`id` string povinné

`reason` null | string povinné

`citation` string povinné

```bash
curl https://api.damedoklad.cz/v1/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Úprava: příloha, doklad

PATCH `/v1/documents/{id}`

Change the title, note, date, or retention type of a document

Nástroj MCP: `update-document-attachment`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`title` string | null

`note` string | null

`retentionRule` "accounting\_statement" | "accounting\_document" | "accounting\_method" | "vat\_document" | "insurance\_record" | "payroll\_record" | "custom"

`documentDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`retentionUntil` string | null

### Odpověď · 200

`id` string povinné

`entityKind` string povinné

`entityId` null | string povinné

`title` string povinné

`filename` string povinné

`note` string | null povinné

`documentDate` string povinné date

`contentType` string povinné

`byteSize` integer | null povinné

`retentionRule` string povinné

`retentionCitation` null | string povinné

`retentionYears` integer | null povinné

`retentionUntil` null | string povinné date

`retentionExpired` boolean povinné

`createdAt` string povinné date-time

`scanStatus` null | string

`contentState` null | string

`retentionHold` null | object

`id` string povinné

`reason` null | string povinné

`citation` string povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "string",
  "note": "string",
  "retentionRule": "accounting_statement"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "title": "string",
    "note": "string",
    "retentionRule": "accounting_statement"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "title": "string",
        "note": "string",
        "retentionRule": "accounting_statement"
    },
)
data = response.json()
```

## Smazání: příloha, doklad

DELETE `/v1/documents/{id}`

Shred a document, removing the file. Refused while the statutory retention period runs, or while an inspection or dispute holds it

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-document-attachment`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Stažení: příloha, doklad

GET `/v1/documents/{id}/download`

Download a document

Nástroj MCP: `download-document-attachment`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor application/octet-stream.

```bash
curl https://api.damedoklad.cz/v1/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/download \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/download', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/download",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## List what keeps documents past their period: an inspection, a dispute, a complaint, an unpaid debt

GET `/v1/documents/retention-holds`

List what keeps documents past their period: an inspection, a dispute, a complaint, an unpaid debt

Nástroj MCP: `list-retention-holds`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "retention\_hold" povinné

`id` string povinné

`reason` string povinné

`coversFrom` null | string povinné date

`coversTo` null | string povinné date

`until` null | string povinné date

`note` null | string povinné

`citation` null | string povinné

`active` boolean povinné

`releasedAt` null | string povinné date-time

`createdAt` string povinné date-time

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/documents/retention-holds \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/documents/retention-holds', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/documents/retention-holds",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Keep documents of a period past their retention, for an inspection or a dispute. Until it ends, none of them can be shredded, whatever its type

POST `/v1/documents/retention-holds`

Keep documents of a period past their retention, for an inspection or a dispute. Until it ends, none of them can be shredded, whatever its type. No dates means every document. It covers documents by their date, so what is uploaded later falls under it too. The law names no end date for these, so it holds until \`until\` or until it is released. Citation: § 32 of zákon 563/1991 Sb., § 148 of zákon 280/2009 Sb.

Nástroj MCP: `create-retention-hold`

### Tělo požadavku

`reason` "inspection" | "dispute" | "complaint" | "unpaid" | "other" povinné

`coversFrom` string | null

Date as YYYY-MM-DD.

`coversTo` string | null

Date as YYYY-MM-DD.

`until` string | null

`note` string | null

### Odpověď · 201

`id` string povinné

`reason` string povinné

`coversFrom` null | string povinné date

`coversTo` null | string povinné date

`until` null | string povinné date

`note` null | string povinné

`citation` null | string povinné

`active` boolean povinné

`releasedAt` null | string povinné date-time

`createdAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/documents/retention-holds \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "reason": "inspection"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/documents/retention-holds', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "reason": "inspection"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/documents/retention-holds",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "reason": "inspection"
    },
)
data = response.json()
```

## End an extended retention once the inspection or dispute is over. Ordinary periods apply again

POST `/v1/documents/retention-holds/{id}/release`

End an extended retention once the inspection or dispute is over. Ordinary periods apply again

Nástroj MCP: `release-retention-hold`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`reason` string povinné

`coversFrom` null | string povinné date

`coversTo` null | string povinné date

`until` null | string povinné date

`note` null | string povinné

`citation` null | string povinné

`active` boolean povinné

`releasedAt` null | string povinné date-time

`createdAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/documents/retention-holds/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/release \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/documents/retention-holds/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/release', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/documents/retention-holds/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/release",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Statutory retention periods (skartační lhůty) with their legal citation

GET `/v1/documents/retention-rules`

Statutory retention periods (skartační lhůty) with their legal citation

Nástroj MCP: `list-retention-rules`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "retention\_rule" povinné

`key` string povinné

`years` integer | null povinné

`citation` null | string povinné

`cs` string povinné

`en` string povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/documents/retention-rules \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/documents/retention-rules', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/documents/retention-rules",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List contacts by the state of their GDPR reasons (none, valid, expiring, expired, future, or restricted), on a given day, or by POHODA's searches over chosen reasons

GET `/v1/gdpr/contacts`

List contacts by the state of their GDPR reasons (none, valid, expiring, expired, future, or restricted), on a given day, or by POHODA's searches over chosen reasons

Nástroj MCP: `list-contacts-gdpr`

### Parametry dotazu

`state` "none" | "valid" | "expiring" | "expired" | "future" | "restricted"

`asOf` string YYYY-MM-DD

The state on this day. Defaults to today.

`reasonId` string

Only contacts holding this reason from the list.

`match` "all\_valid" | "any\_valid" | "any\_of" | "all\_of" | "expired" | "no\_reason"

POHODA's searches. all\_valid: has a reason and all of them hold. any\_valid: at least one holds. any\_of and all\_of: of the reasons in reasonIds, one or all are on the contact and hold. expired: a reason has run out. no\_reason: none on the contact.

`reasonIds` string max 2000 chars

Reasons from the list, separated by commas, for match=any\_of or all\_of.

`includeNoReason` "true" | "false"

With match=expired, a contact with no reason counts as expired too.

`includeDocuments` "true" | "false"

Count an issued document as a reason holding from its date, for any\_valid, all\_valid, and no\_reason. Our reading: POHODA offers this but does not say how it derives such a reason.

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "contact\_gdpr\_row" povinné

`id` string povinné

`name` null | string povinné

`state` string povinné

`reasonCount` integer povinné

`marketingOptOut` boolean povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/gdpr/contacts \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/gdpr/contacts', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/gdpr/contacts",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List the company list of reasons for processing that a reason on a contact is picked from. A company without any gets four to start from

GET `/v1/gdpr/reasons`

List the company list of reasons for processing that a reason on a contact is picked from. A company without any gets four to start from

Nástroj MCP: `list-gdpr-reason-codes`

### Parametry dotazu

`active` "true" | "false"

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "gdpr\_reason\_code" povinné

`id` string povinné

`name` string povinné

`legalBasis` string povinné

`description` null | string povinné

`validityMonths` integer | null povinné

`isActive` boolean povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/gdpr/reasons \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/gdpr/reasons', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/gdpr/reasons",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Add a reason for processing to the company list: its name, legal basis, description, and how long it lasts

POST `/v1/gdpr/reasons`

Add a reason for processing to the company list: its name, legal basis, description, and how long it lasts

Nástroj MCP: `create-gdpr-reason-code`

### Tělo požadavku

`name` string povinné max 200 chars

`legalBasis` "consent" | "contract" | "legal\_obligation" | "vital\_interest" | "public\_task" | "legitimate\_interest" povinné

`description` string | null

`validityMonths` integer | null

How long a reason lasts from its start. Empty: until someone ends it.

`isActive` boolean

### Odpověď · 201

`id` string povinné

`name` string povinné

`legalBasis` string povinné

`description` null | string povinné

`validityMonths` integer | null povinné

`isActive` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/gdpr/reasons \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "legalBasis": "consent"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/gdpr/reasons', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o.",
    "legalBasis": "consent"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/gdpr/reasons",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "legalBasis": "consent"
    },
)
data = response.json()
```

## Change a reason on the company list or stop offering it. Reasons already on contacts keep what they said

PATCH `/v1/gdpr/reasons/{id}`

Change a reason on the company list or stop offering it. Reasons already on contacts keep what they said

Nástroj MCP: `update-gdpr-reason-code`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`name` string max 200 chars

`legalBasis` "consent" | "contract" | "legal\_obligation" | "vital\_interest" | "public\_task" | "legitimate\_interest"

`description` string | null

`validityMonths` integer | null

How long a reason lasts from its start. Empty: until someone ends it.

`isActive` boolean

### Odpověď · 200

`id` string povinné

`name` string povinné

`legalBasis` string povinné

`description` null | string povinné

`validityMonths` integer | null povinné

`isActive` boolean povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/gdpr/reasons/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "legalBasis": "consent",
  "description": "Pečivo, říjen"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/gdpr/reasons/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o.",
    "legalBasis": "consent",
    "description": "Pečivo, říjen"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/gdpr/reasons/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "legalBasis": "consent",
        "description": "Pečivo, říjen"
    },
)
data = response.json()
```

## Remove a reason from the company list. One already used on a contact stays and can only be stopped being offered

DELETE `/v1/gdpr/reasons/{id}`

Remove a reason from the company list. One already used on a contact stays and can only be stopped being offered

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-gdpr-reason-code`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/gdpr/reasons/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/gdpr/reasons/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/gdpr/reasons/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Send a document still in the inbox for approval, before any invoice is made from it. Until it is approved it cannot become a document; once approved, the document made from it is approved too

POST `/v1/inbox/documents/{id}/approval`

Send a document still in the inbox for approval, before any invoice is made from it. Until it is approved it cannot become a document; once approved, the document made from it is approved too

Nástroj MCP: `request-inbox-document-approval`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`approverId` string | null

ID of the approver.

`scenarioId` string | null

ID of the scenario.

`comment` string | null

### Odpověď · 201

`id` string povinné

`documentKind` null | string povinné

`receivedInvoiceId` null | string povinné

`supplierAdvanceId` null | string povinné

`status` string povinné

`approverId` null | string povinné

`approverName` null | string povinné

`comment` null | string povinné

`decidedById` null | string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`createdAt` string povinné date-time

`invoice` null | object povinné

`id` string povinné

`number` null | string povinné

`supplierDocumentNumber` null | string povinné

`contactName` null | string povinné

`issueDate` null | string povinné date

`dueDate` null | string povinné date

`totalHaler` integer | null povinné

`currency` null | string povinné

`status` string povinné

`scenarioId` null | string

`currentStep` integer | null

`stepCount` integer | null

`salesDocumentId` null | string

`inboxDocumentId` null | string

`waitingOn` object\[\]

`id` string povinné

`name` null | string povinné

`kind` string povinné

`history` object\[\]

`action` string povinné

`actorName` null | string povinné

`comment` null | string povinné

`at` string povinné date-time

`steps` object\[\]

`position` integer | null povinné

`approverId` null | string povinné

`approverName` string povinné

`status` string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`comment` null | string povinné

`stage` integer

`mode` string

`kind` string

`decidedForName` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approval \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "approverId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "scenarioId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "comment": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approval', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "approverId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "scenarioId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "comment": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/inbox/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approval",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "approverId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "scenarioId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "comment": "string"
    },
)
data = response.json()
```

## The credit notes of a month: which brought goods back (reported with code 21), and which only changed a price, with whether the original declaration must be corrected (over 5 %, or the whole price)

GET `/v1/intrastat/credits`

The credit notes of a month: which brought goods back (reported with code 21), and which only changed a price, with whether the original declaration must be corrected (over 5 %, or the whole price)

Nástroj MCP: `list-intrastat-credits`

### Parametry dotazu

`year` integer povinné min 2020 max 2100

`month` integer povinné min 1 max 12

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`kind` string povinné

`documentId` null | string povinné

`number` null | string povinné

`contactName` null | string povinné

`taxPointDate` null | string povinné date

`creditKind` null | string povinné

`direction` string povinné

`valueHaler` integer | null povinné

`correctsDirection` string

`correctsYear` integer

`correctsMonth` integer

`originalNumber` null | string

`percent` integer | null

`full` boolean

`mustCorrect` boolean

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/intrastat/credits \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/credits', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/intrastat/credits",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List Intrastat declarations

GET `/v1/intrastat/declarations`

List Intrastat declarations

Nástroj MCP: `list-intrastat-declarations`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`year` integer min -9007199254740991 max 9007199254740991

`direction` "dispatch" | "arrival"

### Odpověď · 200

`data` object\[\] povinné

`object` "intrastat\_declaration" povinné

`id` string povinné

`year` integer povinné

`month` integer povinné

`direction` string povinné

`kind` string povinné

`status` string povinné

`deadline` string povinné date

`filedAt` null | string povinné date-time

`lines` object\[\] povinné

`object` "intrastat\_line" povinné

`id` string povinné

`source` string povinné

`commodityCode` null | string povinné

`statisticalSign` string | null povinné

`countryCode` null | string povinné

`originCountry` null | string povinné

`transaction` string povinné

`transport` null | string povinné

`deliveryTerms` null | string povinné

`recordType` string povinné

`partnerVat` null | string povinné

`description` null | string povinné

`massGrams` integer povinné

`supplementaryMilli` integer povinné

`valueHaler` integer povinné

`documentNumbers` string\[\] povinné

`problems` string\[\] povinné

`totalValueHaler` integer povinné

`problemCount` integer povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/intrastat/declarations \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/declarations', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/intrastat/declarations",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Prepare the declaration for a month and direction from EU goods invoices. Kind negative or simplified carries no goods lines

POST `/v1/intrastat/declarations`

Prepare the declaration for a month and direction from EU goods invoices. Kind negative or simplified carries no goods lines

Nástroj MCP: `create-intrastat-declaration`

### Tělo požadavku

`year` integer povinné min 2020 max 2100

`month` integer povinné min 1 max 12

`direction` "dispatch" | "arrival" povinné

`kind` "standard" | "negative" | "simplified"

### Odpověď · 201

`id` string povinné

`year` integer povinné

`month` integer povinné

`direction` string povinné

`kind` string povinné

`status` string povinné

`deadline` string povinné date

`filedAt` null | string povinné date-time

`lines` object\[\] povinné

`object` "intrastat\_line" povinné

`id` string povinné

`source` string povinné

`commodityCode` null | string povinné

`statisticalSign` string | null povinné

`countryCode` null | string povinné

`originCountry` null | string povinné

`transaction` string povinné

`transport` null | string povinné

`deliveryTerms` null | string povinné

`recordType` string povinné

`partnerVat` null | string povinné

`description` null | string povinné

`massGrams` integer povinné

`supplementaryMilli` integer povinné

`valueHaler` integer povinné

`documentNumbers` string\[\] povinné

`problems` string\[\] povinné

`totalValueHaler` integer povinné

`problemCount` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/intrastat/declarations \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "year": 2026,
  "month": 1,
  "direction": "dispatch"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/declarations', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "year": 2026,
    "month": 1,
    "direction": "dispatch"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/intrastat/declarations",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "year": 2026,
        "month": 1,
        "direction": "dispatch"
    },
)
data = response.json()
```

## Get a declaration with its lines and what stops each line from being filed

GET `/v1/intrastat/declarations/{id}`

Get a declaration with its lines and what stops each line from being filed

Nástroj MCP: `get-intrastat-declaration`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`year` integer povinné

`month` integer povinné

`direction` string povinné

`kind` string povinné

`status` string povinné

`deadline` string povinné date

`filedAt` null | string povinné date-time

`lines` object\[\] povinné

`object` "intrastat\_line" povinné

`id` string povinné

`source` string povinné

`commodityCode` null | string povinné

`statisticalSign` string | null povinné

`countryCode` null | string povinné

`originCountry` null | string povinné

`transaction` string povinné

`transport` null | string povinné

`deliveryTerms` null | string povinné

`recordType` string povinné

`partnerVat` null | string povinné

`description` null | string povinné

`massGrams` integer povinné

`supplementaryMilli` integer povinné

`valueHaler` integer povinné

`documentNumbers` string\[\] povinné

`problems` string\[\] povinné

`totalValueHaler` integer povinné

`problemCount` integer povinné

```bash
curl https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Delete a declaration that has not been filed

DELETE `/v1/intrastat/declarations/{id}`

Delete a declaration that has not been filed

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-intrastat-declaration`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Download the declaration as the CSV file that InstatEvo imports (structure valid from 1 January 2026)

GET `/v1/intrastat/declarations/{id}/csv`

Download the declaration as the CSV file that InstatEvo imports (structure valid from 1 January 2026)

Nástroj MCP: `download-intrastat-csv`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor text/csv.

```bash
curl https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/csv \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/csv', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/csv",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Mark a declaration as filed in InstatEvo and lock it. Filing itself happens in the customs application; this API cannot submit

POST `/v1/intrastat/declarations/{id}/file`

Mark a declaration as filed in InstatEvo and lock it. Filing itself happens in the customs application; this API cannot submit

Nástroj MCP: `mark-intrastat-filed`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`year` integer povinné

`month` integer povinné

`direction` string povinné

`kind` string povinné

`status` string povinné

`deadline` string povinné date

`filedAt` null | string povinné date-time

`lines` object\[\] povinné

`object` "intrastat\_line" povinné

`id` string povinné

`source` string povinné

`commodityCode` null | string povinné

`statisticalSign` string | null povinné

`countryCode` null | string povinné

`originCountry` null | string povinné

`transaction` string povinné

`transport` null | string povinné

`deliveryTerms` null | string povinné

`recordType` string povinné

`partnerVat` null | string povinné

`description` null | string povinné

`massGrams` integer povinné

`supplementaryMilli` integer povinné

`valueHaler` integer povinné

`documentNumbers` string\[\] povinné

`problems` string\[\] povinné

`totalValueHaler` integer povinné

`problemCount` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/file \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/file', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/file",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Add a line by hand: a return (21), a free replacement (22, 23), or goods without an invoice

POST `/v1/intrastat/declarations/{id}/lines`

Add a line by hand: a return (21), a free replacement (22, 23), or goods without an invoice

Nástroj MCP: `add-intrastat-line`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`commodityCode` string | null

`statisticalSign` string | null

`countryCode` string | null

`originCountry` string | null

`transaction` "11" | "12" | "21" | "22" | "23" | "31" | "32" | "33" | "34" | "41" | "42" | "51" | "52" | "71" | "72" | "80" | "91" | "99" | null

`transport` "2" | "3" | "4" | "5" | "7" | "8" | "9" | null

`deliveryTerms` "K" | "L" | "M" | "N" | null

`recordType` "ST" | "MZ" | "ZI" | "ZR" | "ZL" | "ZP" | "ZZ" | "ZT" | "ZM" | "ZK" | "ZO"

`partnerVat` string | null

`description` string | null

`massGrams` integer min 0 max 9007199254740991

`supplementaryMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`valueHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

### Odpověď · 201

`id` string povinné

`year` integer povinné

`month` integer povinné

`direction` string povinné

`kind` string povinné

`status` string povinné

`deadline` string povinné date

`filedAt` null | string povinné date-time

`lines` object\[\] povinné

`object` "intrastat\_line" povinné

`id` string povinné

`source` string povinné

`commodityCode` null | string povinné

`statisticalSign` string | null povinné

`countryCode` null | string povinné

`originCountry` null | string povinné

`transaction` string povinné

`transport` null | string povinné

`deliveryTerms` null | string povinné

`recordType` string povinné

`partnerVat` null | string povinné

`description` null | string povinné

`massGrams` integer povinné

`supplementaryMilli` integer povinné

`valueHaler` integer povinné

`documentNumbers` string\[\] povinné

`problems` string\[\] povinné

`totalValueHaler` integer povinné

`problemCount` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/lines \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "commodityCode": "string",
  "statisticalSign": "string",
  "countryCode": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/lines', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "commodityCode": "string",
    "statisticalSign": "string",
    "countryCode": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/lines",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "commodityCode": "string",
        "statisticalSign": "string",
        "countryCode": "string"
    },
)
data = response.json()
```

## Correct a line of a draft declaration. Reading the documents again replaces corrections to generated lines: fix the item or document data to keep them

PATCH `/v1/intrastat/declarations/{id}/lines/{lineId}`

Correct a line of a draft declaration. Reading the documents again replaces corrections to generated lines: fix the item or document data to keep them

Nástroj MCP: `update-intrastat-line`

### Parametry v cestě

`id` string povinné

`lineId` string povinné

ID of the line.

### Tělo požadavku

`commodityCode` string | null

`statisticalSign` string | null

`countryCode` string | null

`originCountry` string | null

`transaction` "11" | "12" | "21" | "22" | "23" | "31" | "32" | "33" | "34" | "41" | "42" | "51" | "52" | "71" | "72" | "80" | "91" | "99" | null

`transport` "2" | "3" | "4" | "5" | "7" | "8" | "9" | null

`deliveryTerms` "K" | "L" | "M" | "N" | null

`recordType` "ST" | "MZ" | "ZI" | "ZR" | "ZL" | "ZP" | "ZZ" | "ZT" | "ZM" | "ZK" | "ZO"

`partnerVat` string | null

`description` string | null

`massGrams` integer min 0 max 9007199254740991

`supplementaryMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`valueHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

### Odpověď · 200

`id` string povinné

`year` integer povinné

`month` integer povinné

`direction` string povinné

`kind` string povinné

`status` string povinné

`deadline` string povinné date

`filedAt` null | string povinné date-time

`lines` object\[\] povinné

`object` "intrastat\_line" povinné

`id` string povinné

`source` string povinné

`commodityCode` null | string povinné

`statisticalSign` string | null povinné

`countryCode` null | string povinné

`originCountry` null | string povinné

`transaction` string povinné

`transport` null | string povinné

`deliveryTerms` null | string povinné

`recordType` string povinné

`partnerVat` null | string povinné

`description` null | string povinné

`massGrams` integer povinné

`supplementaryMilli` integer povinné

`valueHaler` integer povinné

`documentNumbers` string\[\] povinné

`problems` string\[\] povinné

`totalValueHaler` integer povinné

`problemCount` integer povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/lines/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "commodityCode": "string",
  "statisticalSign": "string",
  "countryCode": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/lines/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "commodityCode": "string",
    "statisticalSign": "string",
    "countryCode": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/lines/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "commodityCode": "string",
        "statisticalSign": "string",
        "countryCode": "string"
    },
)
data = response.json()
```

## Remove a line of a draft declaration

DELETE `/v1/intrastat/declarations/{id}/lines/{lineId}`

Remove a line of a draft declaration

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `remove-intrastat-line`

### Parametry v cestě

`id` string povinné

`lineId` string povinné

ID of the line.

### Odpověď · 200

`id` string povinné

`year` integer povinné

`month` integer povinné

`direction` string povinné

`kind` string povinné

`status` string povinné

`deadline` string povinné date

`filedAt` null | string povinné date-time

`lines` object\[\] povinné

`object` "intrastat\_line" povinné

`id` string povinné

`source` string povinné

`commodityCode` null | string povinné

`statisticalSign` string | null povinné

`countryCode` null | string povinné

`originCountry` null | string povinné

`transaction` string povinné

`transport` null | string povinné

`deliveryTerms` null | string povinné

`recordType` string povinné

`partnerVat` null | string povinné

`description` null | string povinné

`massGrams` integer povinné

`supplementaryMilli` integer povinné

`valueHaler` integer povinné

`documentNumbers` string\[\] povinné

`problems` string\[\] povinné

`totalValueHaler` integer povinné

`problemCount` integer povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/lines/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/lines/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/lines/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Read the documents again after changing item or document data. Manual lines stay

POST `/v1/intrastat/declarations/{id}/regenerate`

Read the documents again after changing item or document data. Manual lines stay

Nástroj MCP: `regenerate-intrastat-declaration`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`year` integer povinné

`month` integer povinné

`direction` string povinné

`kind` string povinné

`status` string povinné

`deadline` string povinné date

`filedAt` null | string povinné date-time

`lines` object\[\] povinné

`object` "intrastat\_line" povinné

`id` string povinné

`source` string povinné

`commodityCode` null | string povinné

`statisticalSign` string | null povinné

`countryCode` null | string povinné

`originCountry` null | string povinné

`transaction` string povinné

`transport` null | string povinné

`deliveryTerms` null | string povinné

`recordType` string povinné

`partnerVat` null | string povinné

`description` null | string povinné

`massGrams` integer povinné

`supplementaryMilli` integer povinné

`valueHaler` integer povinné

`documentNumbers` string\[\] povinné

`problems` string\[\] povinné

`totalValueHaler` integer povinné

`problemCount` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/regenerate \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/regenerate', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/regenerate",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Unlock a filed declaration to correct it. A correction must also be sent in InstatEvo

POST `/v1/intrastat/declarations/{id}/reopen`

Unlock a filed declaration to correct it. A correction must also be sent in InstatEvo

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `reopen-intrastat-declaration`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`year` integer povinné

`month` integer povinné

`direction` string povinné

`kind` string povinné

`status` string povinné

`deadline` string povinné date

`filedAt` null | string povinné date-time

`lines` object\[\] povinné

`object` "intrastat\_line" povinné

`id` string povinné

`source` string povinné

`commodityCode` null | string povinné

`statisticalSign` string | null povinné

`countryCode` null | string povinné

`originCountry` null | string povinné

`transaction` string povinné

`transport` null | string povinné

`deliveryTerms` null | string povinné

`recordType` string povinné

`partnerVat` null | string povinné

`description` null | string povinné

`massGrams` integer povinné

`supplementaryMilli` integer povinné

`valueHaler` integer povinné

`documentNumbers` string\[\] povinné

`problems` string\[\] povinné

`totalValueHaler` integer povinné

`problemCount` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reopen \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reopen', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/intrastat/declarations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reopen",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Set the default transaction nature, transport, and delivery terms used for documents without their own

PUT `/v1/intrastat/defaults`

Set the default transaction nature, transport, and delivery terms used for documents without their own

Nástroj MCP: `update-intrastat-defaults`

### Tělo požadavku

`transaction` "11" | "12" | "21" | "22" | "23" | "31" | "32" | "33" | "34" | "41" | "42" | "51" | "52" | "71" | "72" | "80" | "91" | "99" povinné

`transport` "2" | "3" | "4" | "5" | "7" | "8" | "9" povinné

`deliveryTerms` "K" | "L" | "M" | "N" povinné

### Odpověď · 200

`transaction` string povinné

`transport` null | string povinné

`deliveryTerms` null | string povinné

```bash
curl -X PUT https://api.damedoklad.cz/v1/intrastat/defaults \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "transaction": "11",
  "transport": "2",
  "deliveryTerms": "K"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/defaults', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "transaction": "11",
    "transport": "2",
    "deliveryTerms": "K"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/intrastat/defaults",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "transaction": "11",
        "transport": "2",
        "deliveryTerms": "K"
    },
)
data = response.json()
```

## Get the Intrastat data of a document: transaction nature, transport, delivery terms, or that it is excluded

GET `/v1/intrastat/documents/{kind}/{id}`

Get the Intrastat data of a document: transaction nature, transport, delivery terms, or that it is excluded

Nástroj MCP: `get-intrastat-document`

### Parametry v cestě

`kind` string povinné

`id` string povinné

### Odpověď · 200

`kind` string povinné

`documentId` null | string povinné

`transaction` string

`transport` null | string

`deliveryTerms` null | string

`countryCode` null | string

`excluded` boolean povinné

`creditKind` null | string

```bash
curl https://api.damedoklad.cz/v1/intrastat/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/intrastat/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Set the Intrastat data of a document, overriding the defaults, or exclude it from declarations

PUT `/v1/intrastat/documents/{kind}/{id}`

Set the Intrastat data of a document, overriding the defaults, or exclude it from declarations

Nástroj MCP: `update-intrastat-document`

### Parametry v cestě

`kind` string povinné

`id` string povinné

### Tělo požadavku

`transaction` "11" | "12" | "21" | "22" | "23" | "31" | "32" | "33" | "34" | "41" | "42" | "51" | "52" | "71" | "72" | "80" | "91" | "99" | null

`transport` "2" | "3" | "4" | "5" | "7" | "8" | "9" | null

`deliveryTerms` "K" | "L" | "M" | "N" | null

`countryCode` string | null

`excluded` boolean

`creditKind` "return" | "price" | null

### Odpověď · 200

`kind` string povinné

`documentId` null | string povinné

`transaction` string

`transport` null | string

`deliveryTerms` null | string

`countryCode` null | string

`excluded` boolean povinné

`creditKind` null | string

```bash
curl -X PUT https://api.damedoklad.cz/v1/intrastat/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "transaction": "11",
  "transport": "2",
  "deliveryTerms": "K"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "transaction": "11",
    "transport": "2",
    "deliveryTerms": "K"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/intrastat/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "transaction": "11",
        "transport": "2",
        "deliveryTerms": "K"
    },
)
data = response.json()
```

## Get the Intrastat data of a stock item: commodity code, mass per unit, country of origin

GET `/v1/intrastat/items/{itemId}`

Get the Intrastat data of a stock item: commodity code, mass per unit, country of origin

Nástroj MCP: `get-intrastat-item`

### Parametry v cestě

`itemId` string povinné

ID of the item. Find it with list-items.

### Odpověď · 200

`itemId` null | string povinné

`sku` string povinné

`name` null | string povinné

`commodityCode` null | string povinné

`statisticalSign` string | null povinné

`originCountry` null | string povinné

`massGrams` integer | null povinné

`supplementaryMilli` integer | null povinné

```bash
curl https://api.damedoklad.cz/v1/intrastat/items/itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/items/itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/intrastat/items/itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Set the Intrastat data of a stock item

PUT `/v1/intrastat/items/{itemId}`

Set the Intrastat data of a stock item

Nástroj MCP: `update-intrastat-item`

### Parametry v cestě

`itemId` string povinné

ID of the item. Find it with list-items.

### Tělo požadavku

`commodityCode` string | null

`statisticalSign` string | null

`originCountry` string | null

`massGrams` integer | null

`supplementaryMilli` integer | null

Integer thousandths: 1500 means 1.5.

### Odpověď · 200

`itemId` null | string povinné

`sku` string povinné

`name` null | string povinné

`commodityCode` null | string povinné

`statisticalSign` string | null povinné

`originCountry` null | string povinné

`massGrams` integer | null povinné

`supplementaryMilli` integer | null povinné

```bash
curl -X PUT https://api.damedoklad.cz/v1/intrastat/items/itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "commodityCode": "string",
  "statisticalSign": "string",
  "originCountry": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/items/itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "commodityCode": "string",
    "statisticalSign": "string",
    "originCountry": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/intrastat/items/itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "commodityCode": "string",
        "statisticalSign": "string",
        "originCountry": "string"
    },
)
data = response.json()
```

## Whether Intrastat is due this month in each direction: running total against the 15 million CZK threshold, duty carried from last year, deadline

GET `/v1/intrastat/status`

Whether Intrastat is due this month in each direction: running total against the 15 million CZK threshold, duty carried from last year, deadline

Nástroj MCP: `get-intrastat-status`

### Parametry dotazu

`year` integer min 2020 max 2100

`month` integer min 1 max 12

### Odpověď · 200

`year` integer povinné

`month` integer | null povinné

`thresholdHaler` integer povinné

`simplifiedLimitHaler` integer povinné

`deadline` string povinné date

`vatRegistered` boolean povinné

`defaults` object povinné

`transaction` string povinné

`transport` null | string povinné

`deliveryTerms` null | string povinné

`dispatch` object povinné

`direction` string povinné

`months` object povinné

`previousYearHaler` integer povinné

`year` integer povinné

`month` integer | null povinné

`required` boolean povinné

`carriedOver` boolean povinné

`reachedInMonth` integer | null povinné

`firstMonth` integer | null povinné

`runningHaler` integer povinné

`yearTotalHaler` integer povinné

`thresholdHaler` integer povinné

`remainingHaler` integer | null povinné

`simplifiedPossible` boolean povinné

`requiredUntilYear` integer | null povinné

`deadline` string povinné date

`simplifiedBlockers` string\[\]

`coveredBySimplified` boolean

`arrival` object povinné

`direction` string povinné

`months` object povinné

`previousYearHaler` integer povinné

`year` integer povinné

`month` integer | null povinné

`required` boolean povinné

`carriedOver` boolean povinné

`reachedInMonth` any povinné

Null in every recorded response.

`firstMonth` any povinné

Null in every recorded response.

`runningHaler` integer povinné

`yearTotalHaler` integer povinné

`thresholdHaler` integer povinné

`remainingHaler` integer | null povinné

`simplifiedPossible` boolean povinné

`requiredUntilYear` any povinné

Null in every recorded response.

`deadline` string povinné date

`simplifiedBlockers` any\[\]

`coveredBySimplified` boolean

```bash
curl https://api.damedoklad.cz/v1/intrastat/status \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/intrastat/status', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/intrastat/status",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List received invoices and advances to suppliers in approval, with their status and approver

GET `/v1/invoice-approvals`

List received invoices and advances to suppliers in approval, with their status and approver

Nástroj MCP: `list-invoice-approvals`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`status` "pending" | "approved" | "rejected" | "cancelled"

### Odpověď · 200

`data` object\[\] povinné

`object` "invoice\_approval" povinné

`id` string povinné

`documentKind` null | string povinné

`receivedInvoiceId` null | string povinné

`supplierAdvanceId` null | string povinné

`status` string povinné

`approverId` null | string povinné

`approverName` null | string povinné

`comment` null | string povinné

`decidedById` null | string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`createdAt` string povinné date-time

`invoice` null | object povinné

`id` string povinné

`number` null | string povinné

`supplierDocumentNumber` null | string povinné

`contactName` null | string povinné

`issueDate` null | string povinné date

`dueDate` null | string povinné date

`totalHaler` integer | null povinné

`currency` null | string povinné

`status` string povinné

`scenarioId` null | string

`currentStep` integer | null

`stepCount` integer | null

`salesDocumentId` null | string

`inboxDocumentId` null | string

`waitingOn` object\[\]

`id` string povinné

`name` null | string povinné

`kind` string povinné

`history` object\[\]

`action` string povinné

`actorName` null | string povinné

`comment` null | string povinné

`at` string povinné date-time

`steps` object\[\]

`position` integer | null povinné

`approverId` null | string povinné

`approverName` string povinné

`status` string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`comment` null | string povinné

`stage` integer

`mode` string

`kind` string

`decidedForName` null | string

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/invoice-approvals \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invoice-approvals', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/invoice-approvals",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Get one approval with its history

GET `/v1/invoice-approvals/{id}`

Get one approval with its history

Nástroj MCP: `get-invoice-approval`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`documentKind` null | string povinné

`receivedInvoiceId` null | string povinné

`supplierAdvanceId` null | string povinné

`status` string povinné

`approverId` null | string povinné

`approverName` null | string povinné

`comment` null | string povinné

`decidedById` null | string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`createdAt` string povinné date-time

`invoice` null | object povinné

`id` string povinné

`number` null | string povinné

`supplierDocumentNumber` null | string povinné

`contactName` null | string povinné

`issueDate` null | string povinné date

`dueDate` null | string povinné date

`totalHaler` integer | null povinné

`currency` null | string povinné

`status` string povinné

`scenarioId` null | string

`currentStep` integer | null

`stepCount` integer | null

`salesDocumentId` null | string

`inboxDocumentId` null | string

`waitingOn` object\[\]

`id` string povinné

`name` null | string povinné

`kind` string povinné

`history` object\[\]

`action` string povinné

`actorName` null | string povinné

`comment` null | string povinné

`at` string povinné date-time

`steps` object\[\]

`position` integer | null povinné

`approverId` null | string povinné

`approverName` string povinné

`status` string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`comment` null | string povinné

`stage` integer

`mode` string

`kind` string

`decidedForName` null | string

```bash
curl https://api.damedoklad.cz/v1/invoice-approvals/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invoice-approvals/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/invoice-approvals/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Approve a received invoice or an advance to a supplier for payment, or one step of its scenario. Only the named approver, an owner, or an accountant can, and one person decides one step

POST `/v1/invoice-approvals/{id}/approve`

Approve a received invoice or an advance to a supplier for payment, or one step of its scenario. Only the named approver, an owner, or an accountant can, and one person decides one step

Nástroj MCP: `approve-invoice`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`comment` string | null

### Odpověď · 200

`id` string povinné

`documentKind` null | string povinné

`receivedInvoiceId` null | string povinné

`supplierAdvanceId` null | string povinné

`status` string povinné

`approverId` null | string povinné

`approverName` null | string povinné

`comment` null | string povinné

`decidedById` null | string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`createdAt` string povinné date-time

`invoice` null | object povinné

`id` string povinné

`number` null | string povinné

`supplierDocumentNumber` null | string povinné

`contactName` null | string povinné

`issueDate` null | string povinné date

`dueDate` null | string povinné date

`totalHaler` integer | null povinné

`currency` null | string povinné

`status` string povinné

`scenarioId` null | string

`currentStep` integer | null

`stepCount` integer | null

`salesDocumentId` null | string

`inboxDocumentId` null | string

`waitingOn` object\[\]

`id` string povinné

`name` null | string povinné

`kind` string povinné

`history` object\[\]

`action` string povinné

`actorName` null | string povinné

`comment` null | string povinné

`at` string povinné date-time

`steps` object\[\]

`position` integer | null povinné

`approverId` null | string povinné

`approverName` string povinné

`status` string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`comment` null | string povinné

`stage` integer

`mode` string

`kind` string

`decidedForName` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/invoice-approvals/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approve \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "comment": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invoice-approvals/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approve', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "comment": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/invoice-approvals/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approve",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "comment": "string"
    },
)
data = response.json()
```

## Reject a received invoice or an advance to a supplier with a comment. It stays out of payment orders until sent for approval again

POST `/v1/invoice-approvals/{id}/reject`

Reject a received invoice or an advance to a supplier with a comment. It stays out of payment orders until sent for approval again

Nástroj MCP: `reject-invoice`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`comment` string povinné max 2000 chars

### Odpověď · 200

`id` string povinné

`documentKind` null | string povinné

`receivedInvoiceId` null | string povinné

`supplierAdvanceId` null | string povinné

`status` string povinné

`approverId` null | string povinné

`approverName` null | string povinné

`comment` null | string povinné

`decidedById` null | string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`createdAt` string povinné date-time

`invoice` null | object povinné

`id` string povinné

`number` null | string povinné

`supplierDocumentNumber` null | string povinné

`contactName` null | string povinné

`issueDate` null | string povinné date

`dueDate` null | string povinné date

`totalHaler` integer | null povinné

`currency` null | string povinné

`status` string povinné

`scenarioId` null | string

`currentStep` integer | null

`stepCount` integer | null

`salesDocumentId` null | string

`inboxDocumentId` null | string

`waitingOn` object\[\]

`id` string povinné

`name` null | string povinné

`kind` string povinné

`history` object\[\]

`action` string povinné

`actorName` null | string povinné

`comment` null | string povinné

`at` string povinné date-time

`steps` object\[\]

`position` integer | null povinné

`approverId` null | string povinné

`approverName` string povinné

`status` string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`comment` null | string povinné

`stage` integer

`mode` string

`kind` string

`decidedForName` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/invoice-approvals/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reject \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "comment": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invoice-approvals/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reject', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "comment": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/invoice-approvals/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reject",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "comment": "string"
    },
)
data = response.json()
```

## Members of the company who can be named as approvers

GET `/v1/invoice-approvals/approvers`

Members of the company who can be named as approvers

Nástroj MCP: `list-invoice-approvers`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "invoice\_approver" povinné

`id` string povinné

`name` null | string povinné

`email` null | string povinné

`role` string povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/invoice-approvals/approvers \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invoice-approvals/approvers', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/invoice-approvals/approvers",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List who stands in for whom in approvals, and when

GET `/v1/invoice-approvals/delegations`

List who stands in for whom in approvals, and when

Nástroj MCP: `list-approval-delegations`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` any\[\] povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/invoice-approvals/delegations \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invoice-approvals/delegations', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/invoice-approvals/delegations",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Name who stands in during an absence: between the dates they may decide what waits on the person away. One person still decides one step

POST `/v1/invoice-approvals/delegations`

Name who stands in during an absence: between the dates they may decide what waits on the person away. One person still decides one step

Nástroj MCP: `create-approval-delegation`

### Tělo požadavku

`delegatorId` string

Who is away. Left out: the person asking. Only an owner or accountant can name someone else.

`delegateId` string povinné

ID of the delegate.

`startsOn` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`endsOn` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`note` string | null

### Odpověď · 201

`id` string povinné

`delegatorId` string povinné

`delegatorName` string povinné

`delegateId` string povinné

`delegateName` string povinné

`startsOn` string povinné date

`endsOn` string povinné date

`note` null | string povinné

`createdAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/invoice-approvals/delegations \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "delegateId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "startsOn": "2026-10-30",
  "endsOn": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invoice-approvals/delegations', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "delegateId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "startsOn": "2026-10-30",
    "endsOn": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/invoice-approvals/delegations",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "delegateId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "startsOn": "2026-10-30",
        "endsOn": "2026-10-30"
    },
)
data = response.json()
```

## End a stand-in

DELETE `/v1/invoice-approvals/delegations/{id}`

End a stand-in

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-approval-delegation`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/invoice-approvals/delegations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invoice-approvals/delegations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/invoice-approvals/delegations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List approval scenarios: several approvers in order, optionally applied on their own from an amount

GET `/v1/invoice-approvals/scenarios`

List approval scenarios: several approvers in order, optionally applied on their own from an amount

Nástroj MCP: `list-approval-scenarios`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "approval\_scenario" povinné

`id` string povinné

`name` string povinné

`minTotalHaler` integer | null povinné

`active` boolean povinné

`approvers` object\[\] povinné

`id` string povinné

`name` string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`stages` array | null

`mode` string povinné

`approvers` object\[\] povinné

`id` string povinné

`name` string povinné

`processor` null | object

`id` string povinné

`name` string povinné

`documentKinds` string\[\]

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/invoice-approvals/scenarios \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invoice-approvals/scenarios', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/invoice-approvals/scenarios",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Create an approval scenario: at least two members in the order they approve, and optionally the amount in haléře from which it applies on its own

POST `/v1/invoice-approvals/scenarios`

Create an approval scenario: at least two members in the order they approve, and optionally the amount in haléře from which it applies on its own. A document already in approval stays on its route. With no scenario a document goes to one approver, as before.

Nástroj MCP: `create-approval-scenario`

### Tělo požadavku

`name` string povinné max 120 chars

`approverIds` string\[\]

Approvers one after another. For parallel steps use stages instead.

`stages` object\[\]

Steps in order; the people of one step decide at the same time.

`approverIds` string\[\] povinné

`mode` "all" | "any"

all: each of them must approve. any: one is enough.

`processorId` string | null

Who prepares the document before the first step.

`documentKinds` "received\_invoice" | "supplier\_advance" | "inbox\_document" | "quote" | "rfq" | "order\_received" | "order\_issued" | "debit\_note" | "other\_receivable" | "other\_payable"\[\]

What the scenario applies to. Default: received invoices and advances to suppliers.

`minTotalHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`active` boolean

### Odpověď · 201

`id` string povinné

`name` string povinné

`minTotalHaler` integer | null povinné

`active` boolean povinné

`approvers` object\[\] povinné

`id` string povinné

`name` string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`stages` array | null

`mode` string povinné

`approvers` object\[\] povinné

`id` string povinné

`name` string povinné

`processor` null | object

`id` string povinné

`name` string povinné

`documentKinds` string\[\]

```bash
curl -X POST https://api.damedoklad.cz/v1/invoice-approvals/scenarios \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o."
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invoice-approvals/scenarios', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o."
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/invoice-approvals/scenarios",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o."
    },
)
data = response.json()
```

## Change an approval scenario. A document already in approval stays on the steps it started with

PATCH `/v1/invoice-approvals/scenarios/{id}`

Change an approval scenario. A document already in approval stays on the steps it started with

Nástroj MCP: `update-approval-scenario`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`name` string max 120 chars

`approverIds` string\[\]

Approvers one after another. For parallel steps use stages instead.

`stages` object\[\]

Steps in order; the people of one step decide at the same time.

`approverIds` string\[\] povinné

`mode` "all" | "any"

all: each of them must approve. any: one is enough.

`processorId` string | null

Who prepares the document before the first step.

`documentKinds` "received\_invoice" | "supplier\_advance" | "inbox\_document" | "quote" | "rfq" | "order\_received" | "order\_issued" | "debit\_note" | "other\_receivable" | "other\_payable"\[\]

What the scenario applies to. Default: received invoices and advances to suppliers.

`minTotalHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`active` boolean

### Odpověď · 200

`id` string povinné

`name` string povinné

`minTotalHaler` integer | null povinné

`active` boolean povinné

`approvers` object\[\] povinné

`id` string povinné

`name` string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`stages` array | null

`mode` string povinné

`approvers` object\[\] povinné

`id` string povinné

`name` string povinné

`processor` null | object

`id` string povinné

`name` string povinné

`documentKinds` string\[\]

```bash
curl -X PATCH https://api.damedoklad.cz/v1/invoice-approvals/scenarios/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "approverIds": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ],
  "stages": [
    {
      "approverIds": [
        "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
      ]
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invoice-approvals/scenarios/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o.",
    "approverIds": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ],
    "stages": [
      {
        "approverIds": [
          "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/invoice-approvals/scenarios/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "approverIds": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ],
        "stages": [
            {
                "approverIds": [
                    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
                ]
            }
        ]
    },
)
data = response.json()
```

## Delete an approval scenario. Documents under way keep their steps

DELETE `/v1/invoice-approvals/scenarios/{id}`

Delete an approval scenario. Documents under way keep their steps

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-approval-scenario`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/invoice-approvals/scenarios/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invoice-approvals/scenarios/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/invoice-approvals/scenarios/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Whether received invoices must be approved before a payment order, and who approves by default

GET `/v1/invoice-approvals/settings`

Whether received invoices must be approved before a payment order, and who approves by default

Nástroj MCP: `get-invoice-approval-settings`

### Odpověď · 200

`required` boolean povinné

`defaultApproverId` null | string povinné

`defaultProcessorId` null | string

`salesKinds` string\[\]

```bash
curl https://api.damedoklad.cz/v1/invoice-approvals/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invoice-approvals/settings', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/invoice-approvals/settings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Turn approval on or off. Turning it on sends every unpaid recorded invoice and advance to a supplier for approval

PUT `/v1/invoice-approvals/settings`

Turn approval on or off. Turning it on sends every unpaid recorded invoice and advance to a supplier for approval

Nástroj MCP: `update-invoice-approval-settings`

### Tělo požadavku

`required` boolean povinné

`defaultApproverId` string | null

ID of the default approver.

`defaultProcessorId` string | null

Who prepares a document first and hands it on to the approvers.

`salesKinds` "quote" | "rfq" | "order\_received" | "order\_issued" | "debit\_note" | "other\_receivable" | "other\_payable"\[\]

Kinds of sales document that cannot be issued until approved, such as issued orders.

### Odpověď · 200

`required` boolean povinné

`defaultApproverId` null | string povinné

`defaultProcessorId` null | string

`salesKinds` string\[\]

```bash
curl -X PUT https://api.damedoklad.cz/v1/invoice-approvals/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "required": false
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/invoice-approvals/settings', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "required": false
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/invoice-approvals/settings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "required": False
    },
)
data = response.json()
```

## List job orders (zakázky) with revenue, cost, and margin from the books

GET `/v1/job-orders`

List job orders (zakázky) with revenue, cost, and margin from the books

Nástroj MCP: `list-job-orders`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`status` "planned" | "active" | "finished" | "cancelled"

`contactId` string

ID of the contact. Find it with list-contacts.

### Odpověď · 200

`data` object\[\] povinné

`object` "job\_order" povinné

`id` string povinné

`number` string povinné

`name` string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`dimensionId` string povinné

`status` string povinné

`startsOn` null | string povinné date

`endsOn` string | null povinné

`budgetRevenueHaler` integer povinné

`budgetCostHaler` integer povinné

`note` string | null povinné

`profitability` object povinné

`revenueHaler` integer povinné

`costHaler` integer povinné

`marginHaler` integer povinné

`marginPercent` integer | null povinné

`budgetRevenueHaler` integer povinné

`budgetCostHaler` integer povinné

`budgetMarginHaler` integer povinné

`revenueBudgetUsedPercent` integer | null povinné

`costBudgetUsedPercent` integer | null povinné

`costBudgetLeftHaler` integer | null povinné

`overBudget` boolean povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`months` object\[\]

`month` null | string povinné

`revenueHaler` integer povinné

`costHaler` integer povinné

`documents` object\[\]

`kind` string povinné

`tab` null | string povinné

`id` string povinné

`number` string povinné

`status` string povinné

`contactName` null | string povinné

`date` string povinné date

`totalHaler` integer | null povinné

`currency` null | string povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/job-orders \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/job-orders', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/job-orders",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Create a job order. It gets its own project dimension to choose on documents, so their postings count toward it

POST `/v1/job-orders`

Create a job order. It gets its own project dimension to choose on documents, so their postings count toward it

Nástroj MCP: `create-job-order`

### Tělo požadavku

`name` string povinné max 200 chars

`contactId` string | null

ID of the contact. Find it with list-contacts.

`status` "planned" | "active" | "finished" | "cancelled"

`startsOn` string | null

Date as YYYY-MM-DD.

`endsOn` string | null

Date as YYYY-MM-DD.

`budgetRevenueHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`budgetCostHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`note` string | null

### Odpověď · 201

`id` string povinné

`number` string povinné

`name` string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`dimensionId` string povinné

`status` string povinné

`startsOn` null | string povinné date

`endsOn` string | null povinné

`budgetRevenueHaler` integer povinné

`budgetCostHaler` integer povinné

`note` string | null povinné

`profitability` object povinné

`revenueHaler` integer povinné

`costHaler` integer povinné

`marginHaler` integer povinné

`marginPercent` integer | null povinné

`budgetRevenueHaler` integer povinné

`budgetCostHaler` integer povinné

`budgetMarginHaler` integer povinné

`revenueBudgetUsedPercent` integer | null povinné

`costBudgetUsedPercent` integer | null povinné

`costBudgetLeftHaler` integer | null povinné

`overBudget` boolean povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`months` object\[\]

`month` null | string povinné

`revenueHaler` integer povinné

`costHaler` integer povinné

`documents` object\[\]

`kind` string povinné

`tab` null | string povinné

`id` string povinné

`number` string povinné

`status` string povinné

`contactName` null | string povinné

`date` string povinné date

`totalHaler` integer | null povinné

`currency` null | string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/job-orders \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "name": "Pekárna U Lípy s.r.o."
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/job-orders', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "name": "Pekárna U Lípy s.r.o."
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/job-orders",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "name": "Pekárna U Lípy s.r.o."
    },
)
data = response.json()
```

## Get a job order with its documents, monthly revenue and cost, and profitability

GET `/v1/job-orders/{id}`

Get a job order with its documents, monthly revenue and cost, and profitability

Nástroj MCP: `get-job-order`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`number` string povinné

`name` string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`dimensionId` string povinné

`status` string povinné

`startsOn` null | string povinné date

`endsOn` string | null povinné

`budgetRevenueHaler` integer povinné

`budgetCostHaler` integer povinné

`note` string | null povinné

`profitability` object povinné

`revenueHaler` integer povinné

`costHaler` integer povinné

`marginHaler` integer povinné

`marginPercent` integer | null povinné

`budgetRevenueHaler` integer povinné

`budgetCostHaler` integer povinné

`budgetMarginHaler` integer povinné

`revenueBudgetUsedPercent` integer | null povinné

`costBudgetUsedPercent` integer | null povinné

`costBudgetLeftHaler` integer | null povinné

`overBudget` boolean povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`months` object\[\]

`month` null | string povinné

`revenueHaler` integer povinné

`costHaler` integer povinné

`documents` object\[\]

`kind` string povinné

`tab` null | string povinné

`id` string povinné

`number` string povinné

`status` string povinné

`contactName` null | string povinné

`date` string povinné date

`totalHaler` integer | null povinné

`currency` null | string povinné

```bash
curl https://api.damedoklad.cz/v1/job-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/job-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/job-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Update a job order. Cancelling it hides its dimension from new documents

PATCH `/v1/job-orders/{id}`

Update a job order. Cancelling it hides its dimension from new documents

Nástroj MCP: `update-job-order`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`name` string max 200 chars

`contactId` string | null

ID of the contact. Find it with list-contacts.

`status` "planned" | "active" | "finished" | "cancelled"

`startsOn` string | null

Date as YYYY-MM-DD.

`endsOn` string | null

Date as YYYY-MM-DD.

`budgetRevenueHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`budgetCostHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`note` string | null

### Odpověď · 200

`id` string povinné

`number` string povinné

`name` string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`dimensionId` string povinné

`status` string povinné

`startsOn` null | string povinné date

`endsOn` string | null povinné

`budgetRevenueHaler` integer povinné

`budgetCostHaler` integer povinné

`note` string | null povinné

`profitability` object povinné

`revenueHaler` integer povinné

`costHaler` integer povinné

`marginHaler` integer povinné

`marginPercent` integer | null povinné

`budgetRevenueHaler` integer povinné

`budgetCostHaler` integer povinné

`budgetMarginHaler` integer povinné

`revenueBudgetUsedPercent` integer | null povinné

`costBudgetUsedPercent` integer | null povinné

`costBudgetLeftHaler` integer | null povinné

`overBudget` boolean povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`months` object\[\]

`month` null | string povinné

`revenueHaler` integer povinné

`costHaler` integer povinné

`documents` object\[\]

`kind` string povinné

`tab` null | string povinné

`id` string povinné

`number` string povinné

`status` string povinné

`contactName` null | string povinné

`date` string povinné date

`totalHaler` integer | null povinné

`currency` null | string povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/job-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "status": "planned"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/job-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o.",
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "status": "planned"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/job-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "status": "planned"
    },
)
data = response.json()
```

## Delete a job order nothing was posted or linked to. Otherwise cancel it

DELETE `/v1/job-orders/{id}`

Delete a job order nothing was posted or linked to. Otherwise cancel it

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-job-order`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/job-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/job-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/job-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Assign a draft document to a job order. A posted document cannot move: its journal entry already carries the dimension

POST `/v1/job-orders/{id}/documents`

Assign a draft document to a job order. A posted document cannot move: its journal entry already carries the dimension

Nástroj MCP: `link-job-order-document`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`kind` "invoice" | "received\_invoice" | "credit\_note" | "proforma" povinné

`documentId` string povinné

ID of the document.

### Odpověď · 200

`jobOrderId` null | string povinné

`kind` string povinné

`documentId` null | string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/job-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "invoice",
  "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/job-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/documents', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "invoice",
    "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/job-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/documents",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "invoice",
        "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    },
)
data = response.json()
```

## Profitability report across job orders: revenue, cost, margin, and budget use, with totals

GET `/v1/job-orders/report`

Profitability report across job orders: revenue, cost, margin, and budget use, with totals

Nástroj MCP: `get-job-order-report`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`status` "planned" | "active" | "finished" | "cancelled"

`contactId` string

ID of the contact. Find it with list-contacts.

### Odpověď · 200

`data` object\[\] povinné

`object` "job\_order" povinné

`id` string povinné

`number` string povinné

`name` string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`dimensionId` string povinné

`status` string povinné

`startsOn` null | string povinné date

`endsOn` string | null povinné

`budgetRevenueHaler` integer povinné

`budgetCostHaler` integer povinné

`note` string | null povinné

`profitability` object povinné

`revenueHaler` integer povinné

`costHaler` integer povinné

`marginHaler` integer povinné

`marginPercent` integer | null povinné

`budgetRevenueHaler` integer povinné

`budgetCostHaler` integer povinné

`budgetMarginHaler` integer povinné

`revenueBudgetUsedPercent` integer | null povinné

`costBudgetUsedPercent` integer | null povinné

`costBudgetLeftHaler` integer | null povinné

`overBudget` boolean povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`months` object\[\]

`month` null | string povinné

`revenueHaler` integer povinné

`costHaler` integer povinné

`documents` object\[\]

`kind` string povinné

`tab` null | string povinné

`id` string povinné

`number` string povinné

`status` string povinné

`contactName` null | string povinné

`date` string povinné date

`totalHaler` integer | null povinné

`currency` null | string povinné

`totals` object povinné

`revenueHaler` integer povinné

`costHaler` integer povinné

`marginHaler` integer povinné

`marginPercent` integer | null povinné

`budgetRevenueHaler` integer povinné

`budgetCostHaler` integer povinné

`budgetMarginHaler` integer povinné

`revenueBudgetUsedPercent` integer | null povinné

`costBudgetUsedPercent` integer | null povinné

`costBudgetLeftHaler` integer | null povinné

`overBudget` boolean povinné

```bash
curl https://api.damedoklad.cz/v1/job-orders/report \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/job-orders/report', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/job-orders/report",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Get the document print options: logo position, accent colour, footer, and what shows

GET `/v1/print-template`

Get the document print options: logo position, accent colour, footer, and what shows

Nástroj MCP: `get-print-template`

### Odpověď · 200

`logoPosition` string povinné

`accentColor` null | string povinné

`footerText` null | string povinné

`showLogo` boolean povinné

`showQrCode` boolean povinné

`showBankDetails` boolean povinné

`showNotes` boolean povinné

`showSellerContact` boolean povinné

`showSignature` boolean povinné

`hasLogo` boolean povinné

`hasStamp` boolean

```bash
curl https://api.damedoklad.cz/v1/print-template \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/print-template",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Set the document print options. New PDFs use them; an issued document keeps the PDF it was issued with

PUT `/v1/print-template`

Set the document print options. New PDFs use them; an issued document keeps the PDF it was issued with. What the law requires on a tax document, such as seller and buyer, VAT breakdown, and tax wording, cannot be switched off.

Nástroj MCP: `update-print-template`

### Tělo požadavku

`logoPosition` "left" | "center" | "right"

`accentColor` string | null

`footerText` string | null

`showLogo` boolean

`showQrCode` boolean

`showBankDetails` boolean

`showNotes` boolean

`showSellerContact` boolean

`showSignature` boolean

### Odpověď · 200

`logoPosition` string povinné

`accentColor` null | string povinné

`footerText` null | string povinné

`showLogo` boolean povinné

`showQrCode` boolean povinné

`showBankDetails` boolean povinné

`showNotes` boolean povinné

`showSellerContact` boolean povinné

`showSignature` boolean povinné

`hasLogo` boolean povinné

`hasStamp` boolean

```bash
curl -X PUT https://api.damedoklad.cz/v1/print-template \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "logoPosition": "left",
  "accentColor": "string",
  "footerText": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "logoPosition": "left",
    "accentColor": "string",
    "footerText": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/print-template",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "logoPosition": "left",
        "accentColor": "string",
        "footerText": "string"
    },
)
data = response.json()
```

## List the document types with a print layout: their blocks and columns, which of them the law keeps on the document, and the languages each prints in

GET `/v1/print-template/catalog`

List the document types with a print layout: their blocks and columns, which of them the law keeps on the document, and the languages each prints in

Nástroj MCP: `get-print-catalog`

### Odpověď · 200

`types` object\[\] povinné

`type` string povinné

`languages` string\[\] povinné

`blocks` object\[\] povinné

`key` string povinné

`required` boolean povinné

`columns` object\[\] povinné

`key` string povinné

`width` integer povinné

`required` boolean povinné

`flexible` boolean povinné

`freeOnly` boolean

`design` object

`type` string povinné

`freeOnly` boolean povinné

`pages` string\[\] povinné

`customPage` boolean povinné

`sheet` boolean povinné

`blocks` object\[\] povinné

`key` string povinné

`required` boolean povinné

`reason` null | string povinné

`minWidth` integer povinné

`fields` object\[\] povinné

`key` string povinné

`kind` string povinné

`list` boolean povinné

`linkKinds` string\[\] povinné

`requiredFields` string\[\] povinné

`options` object

`elements` string\[\] povinné

`formats` string\[\] povinné

`aligns` string\[\] povinné

`symbologies` string\[\] povinné

`contentKinds` string\[\] povinné

`imageSources` string\[\] povinné

`charts` string\[\] povinné

`shapes` string\[\] povinné

`functions` string\[\] povinné

`pages` object povinné

`a4` object povinné

`width` integer povinné

`height` integer povinné

`a4_landscape` object povinné

`width` integer povinné

`height` integer povinné

`a5` object povinné

`width` integer povinné

`height` integer povinné

`receipt80` object povinné

`width` integer povinné

`height` any povinné

Null in every recorded response.

```bash
curl https://api.damedoklad.cz/v1/print-template/catalog \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/catalog', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/print-template/catalog",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Check a layout without saving it, and say by name what stops it being used: anything the law requires that is missing or covered, a formula that cannot be read, a field the document does not have

POST `/v1/print-template/check`

Check a layout without saving it, and say by name what stops it being used: anything the law requires that is missing or covered, a formula that cannot be read, a field the document does not have

Nástroj MCP: `check-print-layout`

### Tělo požadavku

`documentType` "invoice" | "proforma" | "credit\_note" | "delivery\_note" | "sales\_document" | "reminder" | "stock\_document" | "protocol" | "receipt" | "item\_label" | "contact\_label" | "postal\_order" povinné

`layout` object povinné

`mode` "free" povinné

`page` object povinné

`elements` object\[\] povinné

`columns` object\[\]

`key` string povinné max 40 chars

`visible` boolean

`width` number min 0 max 200

### Odpověď · 200

`ok` boolean povinné

`problems` object\[\] povinné

`code` null | string povinné

`message` null | string povinné

`block` string

```bash
curl -X POST https://api.damedoklad.cz/v1/print-template/check \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "documentType": "invoice",
  "layout": {
    "mode": "free",
    "page": {},
    "elements": [
      {}
    ]
  }
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/check', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "documentType": "invoice",
    "layout": {
      "mode": "free",
      "page": {},
      "elements": [
        {}
      ]
    }
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/print-template/check",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "documentType": "invoice",
        "layout": {
            "mode": "free",
            "page": {},
            "elements": [
                {}
            ]
        }
    },
)
data = response.json()
```

## Get the pictures a layout can use: PNG and JPEG images from the document archive, and pictures of stock items

GET `/v1/print-template/images`

Get the pictures a layout can use: PNG and JPEG images from the document archive, and pictures of stock items

Nástroj MCP: `get-print-images`

### Odpověď · 200

`archive` object\[\] povinné

`fileId` null | string povinné

`title` null | string povinné

`items` object\[\] povinné

`fileId` null | string povinné

`itemId` null | string povinné

`title` null | string povinné

```bash
curl https://api.damedoklad.cz/v1/print-template/images \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/images', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/print-template/images",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Download a picture from the archive or a stock item, to show it in the layout editor

GET `/v1/print-template/images/{id}`

Download a picture from the archive or a stock item, to show it in the layout editor

Nástroj MCP: `get-print-image`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor image/png.

```bash
curl https://api.damedoklad.cz/v1/print-template/images/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/images/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/print-template/images/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Print labels on a sheet: stock items or the addresses of contacts, in the default variant or the one asked for. A part-used sheet can go through again with \`skip\`

POST `/v1/print-template/labels`

Print labels on a sheet: stock items or the addresses of contacts, in the default variant or the one asked for. A part-used sheet can go through again with \`skip\`

Nástroj MCP: `print-labels`

### Tělo požadavku

`documentType` "item\_label" | "contact\_label" povinné

`ids` string\[\] povinné

`copies` integer min 1 max 100

`skip` integer min 0 max 479

`variantId` string

ID of the variant.

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl -X POST https://api.damedoklad.cz/v1/print-template/labels \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "documentType": "item_label",
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/labels', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "documentType": "item_label",
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/print-template/labels",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "documentType": "item_label",
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
content = response.content
```

## Get the print layout of a document type: which blocks appear in what order, the line table columns and their widths, added text. Language optional; without it, the layout all languages share

GET `/v1/print-template/layouts/{documentType}`

Get the print layout of a document type: which blocks appear in what order, the line table columns and their widths, added text. Language optional; without it, the layout all languages share

Nástroj MCP: `get-print-layout`

### Parametry v cestě

`documentType` string povinné

### Parametry dotazu

`language` "cs" | "en" | "de" | "fr"

### Odpověď · 200

`documentType` null | string povinné

`language` null | string povinné

`customized` boolean povinné

`blocks` object\[\] povinné

`key` string povinné

`visible` boolean povinné

`text` string

`columns` object\[\] povinné

`key` string povinné

`visible` boolean povinné

`width` integer povinné

```bash
curl https://api.damedoklad.cz/v1/print-template/layouts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/layouts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/print-template/layouts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Set the print layout of a document type, for one language or for all. New PDFs use it; an issued document keeps the PDF it was issued with

PUT `/v1/print-template/layouts/{documentType}`

Set the print layout of a document type, for one language or for all. New PDFs use it; an issued document keeps the PDF it was issued with. Blocks and columns the law requires are refused when hidden, so a tax document stays a tax document. To place things freely on the page, save a free layout as a print variant.

Nástroj MCP: `update-print-layout`

### Parametry v cestě

`documentType` string povinné

### Tělo požadavku

`language` "cs" | "en" | "de" | "fr" | null

`blocks` object\[\] povinné

`key` string povinné max 60 chars

`visible` boolean

`text` string max 1000 chars

`columns` object\[\]

`key` string povinné max 40 chars

`visible` boolean

`width` number min 0 max 200

### Odpověď · 200

`documentType` null | string povinné

`language` null | string povinné

`customized` boolean povinné

`blocks` object\[\] povinné

`key` string povinné

`visible` boolean povinné

`text` string

`columns` object\[\] povinné

`key` string povinné

`visible` boolean povinné

`width` integer povinné

```bash
curl -X PUT https://api.damedoklad.cz/v1/print-template/layouts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "blocks": [
    {
      "key": "string"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/layouts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "blocks": [
      {
        "key": "string"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/print-template/layouts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "blocks": [
            {
                "key": "string"
            }
        ]
    },
)
data = response.json()
```

## Forget the print layout of a document type and go back to the built-in one

DELETE `/v1/print-template/layouts/{documentType}`

Forget the print layout of a document type and go back to the built-in one

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `reset-print-layout`

### Parametry v cestě

`documentType` string povinné

### Parametry dotazu

`language` "cs" | "en" | "de" | "fr"

### Odpověď · 200

`documentType` null | string povinné

`language` null | string povinné

`customized` boolean povinné

`blocks` object\[\] povinné

`key` string povinné

`visible` boolean povinné

`text` string

`columns` object\[\] povinné

`key` string povinné

`visible` boolean povinné

`width` integer povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/print-template/layouts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/layouts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/print-template/layouts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Fill in Poštovní poukázka A for what a document asks to be paid, to print over a form from Česká pošta

POST `/v1/print-template/postal-order`

Fill in Poštovní poukázka A for what a document asks to be paid, to print over a form from Česká pošta. Values follow the Česká pošta notice for account holders: whole crowns, equals signs in empty places, the account checked by modulo 11, codes 110 and 116. Field positions of the starting layout come from the dimensioned drawing in its Technická specifikace Pk A of 1. 6. 2019, read from a web archive's copy, with OCR-B type in the boxes and reading zone. A saved layout keeps its own positions. The notice requires machine-printed forms to be approved by Česká pošta from 20 samples, and the file number it assigns to be on each. Nothing has been printed on paper, and approval is the post's decision.

Nástroj MCP: `print-postal-order`

### Tělo požadavku

`documentType` "invoice" | "proforma" | "reminder" povinné

`documentId` string povinné

ID of the document.

`kind` "standard" | "cash\_on\_delivery"

`variantId` string

ID of the variant.

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl -X POST https://api.damedoklad.cz/v1/print-template/postal-order \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "documentType": "invoice",
  "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/postal-order', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "documentType": "invoice",
    "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/print-template/postal-order",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "documentType": "invoice",
        "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    },
)
content = response.content
```

## Render a sample PDF of a document type with these options and this layout, without saving them. Refreshing it after each change is a live preview

POST `/v1/print-template/preview`

Render a sample PDF of a document type with these options and this layout, without saving them. Refreshing it after each change is a live preview

Nástroj MCP: `preview-print-template`

### Parametry dotazu

`language` "cs" | "en" | "de" | "fr"

### Tělo požadavku

`logoPosition` "left" | "center" | "right"

`accentColor` string | null

`footerText` string | null

`showLogo` boolean

`showQrCode` boolean

`showBankDetails` boolean

`showNotes` boolean

`showSellerContact` boolean

`showSignature` boolean

`documentType` "invoice" | "proforma" | "credit\_note" | "delivery\_note" | "sales\_document" | "reminder" | "stock\_document" | "protocol" | "receipt" | "item\_label" | "contact\_label" | "postal\_order"

`language` "cs" | "en" | "de" | "fr"

`layout` object

`mode` "free" povinné

`page` object povinné

`elements` object\[\] povinné

`columns` object\[\]

`key` string povinné max 40 chars

`visible` boolean

`width` number min 0 max 200

`variantId` string

ID of the variant.

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl -X POST https://api.damedoklad.cz/v1/print-template/preview \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "logoPosition": "left",
  "accentColor": "string",
  "footerText": "string"
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/preview', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "logoPosition": "left",
    "accentColor": "string",
    "footerText": "string"
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/print-template/preview",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "logoPosition": "left",
        "accentColor": "string",
        "footerText": "string"
    },
)
content = response.content
```

## Print a document in a variant, together with what is linked to that variant, as one PDF. The PDF stored when it was issued stays its original

POST `/v1/print-template/print`

Print a document in a variant, together with what is linked to that variant, as one PDF. The PDF stored when it was issued stays its original. Without a variant it uses the default for the document. \`alone\` leaves linked reports out.

Nástroj MCP: `print-document-variant`

### Tělo požadavku

`documentType` "invoice" | "proforma" | "credit\_note" | "delivery\_note" | "sales\_document" | "reminder" | "stock\_document" | "protocol" | "receipt" | "item\_label" | "contact\_label" | "postal\_order" povinné

`documentId` string povinné

ID of the document.

`variantId` string

ID of the variant.

`language` "cs" | "en" | "de" | "fr"

`alone` boolean

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl -X POST https://api.damedoklad.cz/v1/print-template/print \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "documentType": "invoice",
  "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/print', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "documentType": "invoice",
    "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/print-template/print",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "documentType": "invoice",
        "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    },
)
content = response.content
```

## List the saved variants of the reports, for one document type or all, with which is the default

GET `/v1/print-template/variants`

List the saved variants of the reports, for one document type or all, with which is the default

Nástroj MCP: `list-print-variants`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`documentType` "invoice" | "proforma" | "credit\_note" | "delivery\_note" | "sales\_document" | "reminder" | "stock\_document" | "protocol" | "receipt" | "item\_label" | "contact\_label" | "postal\_order"

### Odpověď · 200

`data` object\[\] povinné

`object` "print\_variant" povinné

`id` string povinné

`documentType` string povinné

`language` null | string povinné

`name` string povinné

`isDefault` boolean povinné

`mode` string povinné

`layout` object povinné

`mode` string povinné

`page` object

`preset` string povinné

`sheet` object

`elements` object\[\]

`h` integer povinné

`w` integer povinné

`x` integer povinné

`y` integer povinné

`id` string povinné

`key` string

`type` string povinné

`text` string

`bold` boolean

`color` string

`field` null | string

`expression` string

`content` object

`symbology` string

`chart` string

`labels` string

`values` string

`fileId` null | string

`source` string

`itemImages` boolean

`line` integer

`itemId` null | string

`blocks` object\[\]

`key` string povinné

`visible` boolean povinné

`text` string

`columns` object\[\]

`key` string povinné

`width` integer povinné

`visible` boolean povinné

`linked` object\[\] povinné

`kind` string povinné

`variantId` string

`problems` object\[\] povinné

`code` null | string povinné

`block` string povinné

`message` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/print-template/variants \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/variants', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/print-template/variants",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Save a named variant of a report. Without a layout it starts from a free layout that holds everything the document requires

POST `/v1/print-template/variants`

Save a named variant of a report. Without a layout it starts from a free layout that holds everything the document requires. A free layout places elements anywhere on the page in millimetres. A layout that leaves out or covers something the law requires is refused with the reason by name in \`problems\`. Marking it as the default makes new PDFs use it; an issued document keeps the PDF it was issued with.

Nástroj MCP: `create-print-variant`

### Tělo požadavku

`documentType` "invoice" | "proforma" | "credit\_note" | "delivery\_note" | "sales\_document" | "reminder" | "stock\_document" | "protocol" | "receipt" | "item\_label" | "contact\_label" | "postal\_order" povinné

`name` string povinné max 80 chars

`language` "cs" | "en" | "de" | "fr" | null

`isDefault` boolean

`layout` object

`mode` "free" povinné

`page` object povinné

`elements` object\[\] povinné

`columns` object\[\]

`key` string povinné max 40 chars

`visible` boolean

`width` number min 0 max 200

`linked` object\[\]

`kind` string povinné max 40 chars

`variantId` string

ID of the variant.

### Odpověď · 201

`id` string povinné

`documentType` string povinné

`language` null | string povinné

`name` string povinné

`isDefault` boolean povinné

`mode` string povinné

`layout` object povinné

`mode` string povinné

`page` object

`preset` string povinné

`sheet` object

`gapX` integer povinné

`gapY` integer povinné

`rows` integer povinné

`columns` integer povinné

`offsetX` integer povinné

`offsetY` integer povinné

`labelWidth` integer povinné

`labelHeight` integer povinné

`elements` object\[\]

`h` integer povinné

`w` integer povinné

`x` integer povinné

`y` integer povinné

`id` string povinné

`key` string

`type` string povinné

`text` string

`bold` boolean

`color` string

`field` null | string

`expression` string

`content` object

`kind` string povinné

`value` string

`symbology` string

`chart` string

`labels` string

`values` string

`fileId` null | string

`source` string

`itemImages` boolean

`line` integer

`itemId` null | string

`blocks` object\[\]

`key` string povinné

`visible` boolean povinné

`text` string

`columns` object\[\]

`key` string povinné

`width` integer povinné

`visible` boolean povinné

`linked` object\[\] povinné

`kind` string povinné

`variantId` string

`problems` object\[\] povinné

`code` null | string povinné

`block` string povinné

`message` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/print-template/variants \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "documentType": "invoice",
  "name": "Pekárna U Lípy s.r.o."
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/variants', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "documentType": "invoice",
    "name": "Pekárna U Lípy s.r.o."
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/print-template/variants",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "documentType": "invoice",
        "name": "Pekárna U Lípy s.r.o."
    },
)
data = response.json()
```

## Get one saved variant of a report with its layout, what prints with it, and anything that stops it printing

GET `/v1/print-template/variants/{id}`

Get one saved variant of a report with its layout, what prints with it, and anything that stops it printing

Nástroj MCP: `get-print-variant`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`documentType` string povinné

`language` null | string povinné

`name` string povinné

`isDefault` boolean povinné

`mode` string povinné

`layout` object povinné

`mode` string povinné

`page` object

`preset` string povinné

`sheet` object

`gapX` integer povinné

`gapY` integer povinné

`rows` integer povinné

`columns` integer povinné

`offsetX` integer povinné

`offsetY` integer povinné

`labelWidth` integer povinné

`labelHeight` integer povinné

`elements` object\[\]

`h` integer povinné

`w` integer povinné

`x` integer povinné

`y` integer povinné

`id` string povinné

`key` string

`type` string povinné

`text` string

`bold` boolean

`color` string

`field` null | string

`expression` string

`content` object

`kind` string povinné

`value` string

`symbology` string

`chart` string

`labels` string

`values` string

`fileId` null | string

`source` string

`itemImages` boolean

`line` integer

`itemId` null | string

`blocks` object\[\]

`key` string povinné

`visible` boolean povinné

`text` string

`columns` object\[\]

`key` string povinné

`width` integer povinné

`visible` boolean povinné

`linked` object\[\] povinné

`kind` string povinné

`variantId` string

`problems` object\[\] povinné

`code` null | string povinné

`block` string povinné

`message` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

```bash
curl https://api.damedoklad.cz/v1/print-template/variants/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/variants/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/print-template/variants/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Change a saved variant: its name, layout, what prints with it, or whether it is the default

PUT `/v1/print-template/variants/{id}`

Change a saved variant: its name, layout, what prints with it, or whether it is the default. A layout that leaves out or covers something the law requires is refused with the reason by name in \`problems\`.

Nástroj MCP: `update-print-variant`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`name` string max 80 chars

`language` "cs" | "en" | "de" | "fr" | null

`isDefault` boolean

`layout` object

`mode` "free" povinné

`page` object povinné

`elements` object\[\] povinné

`columns` object\[\]

`key` string povinné max 40 chars

`visible` boolean

`width` number min 0 max 200

`linked` object\[\]

`kind` string povinné max 40 chars

`variantId` string

ID of the variant.

### Odpověď · 200

`id` string povinné

`documentType` string povinné

`language` null | string povinné

`name` string povinné

`isDefault` boolean povinné

`mode` string povinné

`layout` object povinné

`mode` string povinné

`page` object

`preset` string povinné

`sheet` object

`gapX` integer povinné

`gapY` integer povinné

`rows` integer povinné

`columns` integer povinné

`offsetX` integer povinné

`offsetY` integer povinné

`labelWidth` integer povinné

`labelHeight` integer povinné

`elements` object\[\]

`h` integer povinné

`w` integer povinné

`x` integer povinné

`y` integer povinné

`id` string povinné

`key` string

`type` string povinné

`text` string

`bold` boolean

`color` string

`field` null | string

`expression` string

`content` object

`kind` string povinné

`value` string

`symbology` string

`chart` string

`labels` string

`values` string

`fileId` null | string

`source` string

`itemImages` boolean

`line` integer

`itemId` null | string

`blocks` object\[\]

`key` string povinné

`visible` boolean povinné

`text` string

`columns` object\[\]

`key` string povinné

`width` integer povinné

`visible` boolean povinné

`linked` object\[\] povinné

`kind` string povinné

`variantId` string

`problems` object\[\] povinné

`code` null | string povinné

`block` string povinné

`message` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

```bash
curl -X PUT https://api.damedoklad.cz/v1/print-template/variants/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "language": "cs",
  "isDefault": false
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/variants/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o.",
    "language": "cs",
    "isDefault": false
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/print-template/variants/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "language": "cs",
        "isDefault": False
    },
)
data = response.json()
```

## Delete a saved variant. If it was the default, the section layout prints again. Other variants linked to it stop printing it

DELETE `/v1/print-template/variants/{id}`

Delete a saved variant. If it was the default, the section layout prints again. Other variants linked to it stop printing it

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-print-variant`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/print-template/variants/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/print-template/variants/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/print-template/variants/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Send a received invoice for approval, or again after a rejection: to one approver (one click, the default) or through a scenario of several in order

POST `/v1/received-invoices/{id}/approval`

Send a received invoice for approval, or again after a rejection: to one approver (one click, the default) or through a scenario of several in order

Nástroj MCP: `request-invoice-approval`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`approverId` string | null

ID of the approver.

`scenarioId` string | null

ID of the scenario.

`comment` string | null

### Odpověď · 201

`id` string povinné

`documentKind` null | string povinné

`receivedInvoiceId` null | string povinné

`supplierAdvanceId` null | string povinné

`status` string povinné

`approverId` null | string povinné

`approverName` null | string povinné

`comment` null | string povinné

`decidedById` null | string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`createdAt` string povinné date-time

`invoice` null | object povinné

`id` string povinné

`number` null | string povinné

`supplierDocumentNumber` null | string povinné

`contactName` null | string povinné

`issueDate` null | string povinné date

`dueDate` null | string povinné date

`totalHaler` integer | null povinné

`currency` null | string povinné

`status` string povinné

`scenarioId` null | string

`currentStep` integer | null

`stepCount` integer | null

`salesDocumentId` null | string

`inboxDocumentId` null | string

`waitingOn` object\[\]

`id` string povinné

`name` null | string povinné

`kind` string povinné

`history` object\[\]

`action` string povinné

`actorName` null | string povinné

`comment` null | string povinné

`at` string povinné date-time

`steps` object\[\]

`position` integer | null povinné

`approverId` null | string povinné

`approverName` string povinné

`status` string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`comment` null | string povinné

`stage` integer

`mode` string

`kind` string

`decidedForName` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/received-invoices/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approval \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "approverId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "scenarioId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "comment": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/received-invoices/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approval', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "approverId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "scenarioId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "comment": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/received-invoices/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approval",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "approverId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "scenarioId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "comment": "string"
    },
)
data = response.json()
```

## Send a draft sales document, such as an issued order, for approval before it is issued: to one approver or through a scenario

POST `/v1/sales/documents/{id}/approval`

Send a draft sales document, such as an issued order, for approval before it is issued: to one approver or through a scenario. Which kinds must be approved before issue is a company setting (salesKinds). Changing the lines, partner or currency of an approved draft cancels the approval.

Nástroj MCP: `request-sales-document-approval`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`approverId` string | null

ID of the approver.

`scenarioId` string | null

ID of the scenario.

`comment` string | null

### Odpověď · 201

`id` string povinné

`documentKind` null | string povinné

`receivedInvoiceId` null | string povinné

`supplierAdvanceId` null | string povinné

`status` string povinné

`approverId` null | string povinné

`approverName` null | string povinné

`comment` null | string povinné

`decidedById` null | string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`createdAt` string povinné date-time

`invoice` null | object povinné

`id` string povinné

`number` null | string povinné

`supplierDocumentNumber` null | string povinné

`contactName` null | string povinné

`issueDate` null | string povinné date

`dueDate` null | string povinné date

`totalHaler` integer | null povinné

`currency` null | string povinné

`status` string povinné

`scenarioId` null | string

`currentStep` integer | null

`stepCount` integer | null

`salesDocumentId` null | string

`inboxDocumentId` null | string

`waitingOn` object\[\]

`id` string povinné

`name` null | string povinné

`kind` string povinné

`history` object\[\]

`action` string povinné

`actorName` null | string povinné

`comment` null | string povinné

`at` string povinné date-time

`steps` object\[\]

`position` integer | null povinné

`approverId` null | string povinné

`approverName` string povinné

`status` string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`comment` null | string povinné

`stage` integer

`mode` string

`kind` string

`decidedForName` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/sales/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approval \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "approverId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "scenarioId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "comment": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/sales/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approval', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "approverId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "scenarioId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "comment": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/sales/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approval",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "approverId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "scenarioId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "comment": "string"
    },
)
data = response.json()
```

## List saved custom reports

GET `/v1/saved-reports`

List saved custom reports

Nástroj MCP: `list-saved-reports`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "saved\_report" povinné

`id` string povinné

`name` string povinné

`agenda` string povinné

`sortBy` any povinné

Null in every recorded response.

`totals` string\[\] povinné

`columns` string\[\] povinné

`filters` object\[\] povinné

`value` string povinné

`column` string povinné

`operator` string povinné

`groupBy` any povinné

Null in every recorded response.

`sortDirection` string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/saved-reports \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/saved-reports', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/saved-reports",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Save a custom report

POST `/v1/saved-reports`

Save a custom report

Nástroj MCP: `create-saved-report`

### Tělo požadavku

`name` string povinné max 200 chars

`agenda` string povinné max 60 chars

`columns` string\[\] povinné

`filters` object\[\]

`column` string povinné max 60 chars

`operator` "eq" | "ne" | "contains" | "gte" | "lte" | "empty" | "not\_empty" povinné

`value` string | number | null

`totals` string\[\]

`sortBy` string | null

`sortDirection` "asc" | "desc"

`groupBy` string | null

### Odpověď · 201

`id` string povinné

`name` string povinné

`agenda` string povinné

`sortBy` any povinné

Null in every recorded response.

`totals` string\[\] povinné

`columns` string\[\] povinné

`filters` object\[\] povinné

`value` string povinné

`column` string povinné

`operator` string povinné

`groupBy` any povinné

Null in every recorded response.

`sortDirection` string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/saved-reports \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "agenda": "string",
  "columns": [
    "string"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/saved-reports', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o.",
    "agenda": "string",
    "columns": [
      "string"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/saved-reports",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "agenda": "string",
        "columns": [
            "string"
        ]
    },
)
data = response.json()
```

## Get a saved report

GET `/v1/saved-reports/{id}`

Get a saved report

Nástroj MCP: `get-saved-report`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`name` string povinné

`agenda` string povinné

`sortBy` any povinné

Null in every recorded response.

`totals` string\[\] povinné

`columns` string\[\] povinné

`filters` object\[\] povinné

`value` string povinné

`column` string povinné

`operator` string povinné

`groupBy` any povinné

Null in every recorded response.

`sortDirection` string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

```bash
curl https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Change a saved report

PATCH `/v1/saved-reports/{id}`

Change a saved report

Nástroj MCP: `update-saved-report`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`name` string max 200 chars

`agenda` string max 60 chars

`columns` string\[\]

`filters` object\[\]

`column` string povinné max 60 chars

`operator` "eq" | "ne" | "contains" | "gte" | "lte" | "empty" | "not\_empty" povinné

`value` string | number | null

`totals` string\[\]

`sortBy` string | null

`sortDirection` "asc" | "desc"

`groupBy` string | null

### Odpověď · 200

`id` string povinné

`name` string povinné

`agenda` string povinné

`sortBy` any povinné

Null in every recorded response.

`totals` string\[\] povinné

`columns` string\[\] povinné

`filters` object\[\] povinné

`value` string povinné

`column` string povinné

`operator` string povinné

`groupBy` any povinné

Null in every recorded response.

`sortDirection` string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

```bash
curl -X PATCH https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "agenda": "string",
  "columns": [
    "string"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o.",
    "agenda": "string",
    "columns": [
      "string"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "agenda": "string",
        "columns": [
            "string"
        ]
    },
)
data = response.json()
```

## Delete a saved report

DELETE `/v1/saved-reports/{id}`

Delete a saved report

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-saved-report`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Export a saved report as format=xlsx, csv, or pdf

GET `/v1/saved-reports/{id}/export`

Export a saved report as format=xlsx, csv, or pdf

Nástroj MCP: `export-saved-report`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`format` "csv" | "xlsx" | "pdf"

`language` "cs" | "en"

### Odpověď · 200

Vrací soubor application/octet-stream.

```bash
curl https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/export \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/export', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/export",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Run a saved report

GET `/v1/saved-reports/{id}/run`

Run a saved report

Nástroj MCP: `run-saved-report`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`format` "csv" | "xlsx" | "pdf"

`language` "cs" | "en"

### Odpověď · 200

`agenda` string povinné

`columns` object\[\] povinné

`key` string povinné

`type` string povinné

`label` null | string povinné

`rows` object\[\] povinné

`accountNumber` null | string

`debitHaler` integer

`pairingSymbol` null | string

`documentType` null | string

`number` null | string

`totalHaler` integer | null

`contactName` null | string

`status` string

`netHaler` integer

`name` null | string

`ico` string | null

`dic` string | null

`email` null | string

`phone` string | null

`roles` string

`totals` object povinné

`overall` object povinné

`debitHaler` integer

`netHaler` integer

`totalHaler` integer | null

`groups` object\[\] povinné

`value` string povinné

`count` integer povinné

`totals` object povinné

`netHaler` integer povinné

`totalHaler` integer | null povinné

`truncated` boolean povinné

`mixedCurrencies` boolean povinné

`name` null | string

```bash
curl https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/run \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/run', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/saved-reports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/run",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## What a custom report can show: agendas, their columns, and the conditions each column allows

GET `/v1/saved-reports/catalog`

What a custom report can show: agendas, their columns, and the conditions each column allows

Nástroj MCP: `get-report-catalog`

### Odpověď · 200

`agendas` object\[\] povinné

`key` string povinné

`cs` string povinné

`en` string povinné

`defaultColumns` string\[\] povinné

`columns` object\[\] povinné

`key` string povinné

`type` string povinné

`cs` string povinné

`en` string povinné

`operators` string\[\] povinné

```bash
curl https://api.damedoklad.cz/v1/saved-reports/catalog \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/saved-reports/catalog', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/saved-reports/catalog",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Export a custom report as format=xlsx, csv, or pdf without saving it

POST `/v1/saved-reports/export`

Export a custom report as format=xlsx, csv, or pdf without saving it

Nástroj MCP: `export-custom-report`

### Parametry dotazu

`format` "csv" | "xlsx" | "pdf"

`language` "cs" | "en"

### Tělo požadavku

`agenda` string povinné max 60 chars

`columns` string\[\] povinné

`filters` object\[\]

`column` string povinné max 60 chars

`operator` "eq" | "ne" | "contains" | "gte" | "lte" | "empty" | "not\_empty" povinné

`value` string | number | null

`totals` string\[\]

`sortBy` string | null

`sortDirection` "asc" | "desc"

`groupBy` string | null

### Odpověď · 200

Vrací soubor application/octet-stream.

```bash
curl -X POST https://api.damedoklad.cz/v1/saved-reports/export \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "agenda": "string",
  "columns": [
    "string"
  ]
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/saved-reports/export', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "agenda": "string",
    "columns": [
      "string"
    ]
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/saved-reports/export",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "agenda": "string",
        "columns": [
            "string"
        ]
    },
)
content = response.content
```

## Run a custom report without saving it. Returns rows and totals, up to 5000 rows

POST `/v1/saved-reports/run`

Run a custom report without saving it. Returns rows and totals, up to 5000 rows

Nástroj MCP: `run-report`

### Parametry dotazu

`format` "csv" | "xlsx" | "pdf"

`language` "cs" | "en"

### Tělo požadavku

`agenda` string povinné max 60 chars

`columns` string\[\] povinné

`filters` object\[\]

`column` string povinné max 60 chars

`operator` "eq" | "ne" | "contains" | "gte" | "lte" | "empty" | "not\_empty" povinné

`value` string | number | null

`totals` string\[\]

`sortBy` string | null

`sortDirection` "asc" | "desc"

`groupBy` string | null

### Odpověď · 200

`agenda` string povinné

`columns` object\[\] povinné

`key` string povinné

`type` string povinné

`label` null | string povinné

`rows` object\[\] povinné

`accountNumber` null | string

`debitHaler` integer

`pairingSymbol` null | string

`documentType` null | string

`number` null | string

`totalHaler` integer | null

`contactName` null | string

`status` string

`netHaler` integer

`name` null | string

`ico` string | null

`dic` string | null

`email` null | string

`phone` string | null

`roles` string

`totals` object povinné

`overall` object povinné

`debitHaler` integer

`netHaler` integer

`totalHaler` integer | null

`groups` object\[\] povinné

`value` string povinné

`count` integer povinné

`totals` object povinné

`netHaler` integer povinné

`totalHaler` integer | null povinné

`truncated` boolean povinné

`mixedCurrencies` boolean povinné

`name` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/saved-reports/run \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "agenda": "string",
  "columns": [
    "string"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/saved-reports/run', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "agenda": "string",
    "columns": [
      "string"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/saved-reports/run",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "agenda": "string",
        "columns": [
            "string"
        ]
    },
)
data = response.json()
```

## List service jobs

GET `/v1/service-jobs`

List service jobs

Nástroj MCP: `list-service-jobs`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`status` "received" | "in\_progress" | "ready" | "invoiced" | "closed" | "cancelled"

`contactId` string

ID of the contact. Find it with list-contacts.

`customFieldKey` string

Only records with this custom field. Alone: it has any value. With customFieldValue: exactly that value, ignoring case.

`customFieldValue` string max 2000 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "service\_job" povinné

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`deviceName` string povinné

`serialNumber` null | string povinné

`problem` string povinné

`accessories` string | null povinné

`diagnosis` string | null povinné

`receivedOn` string povinné date

`promisedOn` string | null povinné

`finishedOn` null | string povinné date

`warranty` boolean povinné

`status` string povinné

`invoiceId` null | string povinné

`jobOrderId` null | string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`seriesId` null | string

`customFields` object

`tistene_pole` string

`invoiceNumber` null | string

`work` object\[\]

`object` "service\_job\_work" povinné

`id` string povinné

`workedOn` string povinné date

`description` string povinné

`workerName` string | null povinné

`minutes` integer povinné

`hourlyRateHaler` integer povinné

`vatRate` integer povinné

`netHaler` integer povinné

`parts` object\[\]

`object` "service\_job\_part" povinné

`id` string povinné

`itemId` string povinné

`warehouseId` string povinné

`description` string povinné

`unit` string povinné

`quantity` integer povinné

`unitPriceHaler` integer povinné

`vatRate` integer povinné

`usedOn` string povinné date

`netHaler` integer povinné

`workNetHaler` integer

`partsNetHaler` integer

`totalNetHaler` integer

`invoice` object

`object` "invoice" povinné

`id` string povinné

`number` null | string povinné

`variableSymbol` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`issueDate` string povinné date

`dueDate` null | string povinné date

`currency` string povinné

`totalHaler` integer povinné

`paidHaler` integer povinné

`status` string povinné

`overdue` boolean povinné

`fileId` null | string povinné

`customFields` object

`zakazka_zakaznika` string

`pocet` integer

`kampan` string

`vatMode` string

`exchangeRate` number

`templateId` null | string

`centerId` null | string

`activityId` null | string

`projectId` null | string

`seriesId` null | string

`constantSymbol` null | string

`taxPointDate` string date

`paymentMethod` string

`language` string

`notePublic` null | string

`noteInternal` null | string

`ourAccountNumber` null | string

`ourBankCode` null | string

`ourIban` null | string

`sellerName` null | string

`sellerIco` null | string

`sellerDic` null | string

`reminderOnDue` boolean

`reminderWeekAfter` boolean

`reminder14DaysAfter` boolean

`reminderMonthAfter` boolean

`netHaler` integer

`vatHaler` integer

`roundingHaler` integer

`recurringId` null | string

`stornoOfId` null | string

`contactIco` null | string

`contactDic` null | string

`contactVatPayerType` null | string

`billToStreet` null | string

`billToCity` null | string

`billToPostalCode` null | string

`billToCountry` null | string

`shipToName` string | null

`shipToStreet` null | string

`shipToCity` null | string

`shipToPostalCode` null | string

`shipToCountry` null | string

`contactEmail` null | string

`lines` object\[\]

`object` "invoice\_line" povinné

`id` string povinné

`description` string povinné

`quantity` number povinné

`unit` string povinné

`unitPriceHaler` integer povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`totalHaler` integer povinné

`accountNumber` null | string povinné

`lineKind` string povinné

`sourceId` null | string povinné

`itemId` null | string povinné

`warehouseId` null | string povinné

`lots` object\[\] povinné

`orderLineId` null | string povinné

`recycling` null | object

`vatLines` object\[\]

`object` "invoice\_vat\_line" povinné

`id` string povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`payments` object\[\]

`object` "invoice\_payment" povinné

`id` string povinné

`amountHaler` integer povinné

`paidOn` string povinné date

`method` string povinné

`note` null | string povinné

`links` object\[\]

`object` "document\_link" povinné

`id` string povinné

`fromKind` string povinné

`fromId` string povinné

`toKind` string povinné

`toId` string povinné

`kind` string povinné

`amountHaler` integer | null

`posting` object

`regime` string povinné

`event` string povinné

`journalLines` object\[\]

`balanced` boolean

`cashJournal` object\[\]

`receivablesBook` object\[\]

`payablesBook` any\[\]

`asset` any\[\]

`retentions` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`dueDate` null | string povinné date

`note` string | null povinné

`longTerm` boolean povinné

`carrierId` null | string

`creditWarning` object

`level` string povinné

`exposureHaler` integer povinné

`afterHaler` integer povinné

`warnHaler` integer | null povinné

`blockHaler` integer povinné

`availableHaler` integer povinné

`original` any

`bankMovement` object

`id` string povinné

`bankAccountId` string povinné

`cashDocument` object

`id` string povinné

`number` null | string povinné

`warnings` any\[\] povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/service-jobs \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/service-jobs', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/service-jobs",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Take in a device for service

POST `/v1/service-jobs`

Take in a device for service

Nástroj MCP: `create-service-job`

### Tělo požadavku

`contactId` string povinné

ID of the contact. Find it with list-contacts.

`deviceName` string povinné max 200 chars

`serialNumber` string | null

`problem` string povinné max 4000 chars

`accessories` string | null

`diagnosis` string | null

`receivedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`promisedOn` string | null

Date as YYYY-MM-DD.

`warranty` boolean

`jobOrderId` string | null

ID of the job order. Find it with list-job-orders.

`note` string | null

`seriesId` string

Number series of service jobs. Without it, the default one.

### Odpověď · 201

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`deviceName` string povinné

`serialNumber` null | string povinné

`problem` string povinné

`accessories` string | null povinné

`diagnosis` string | null povinné

`receivedOn` string povinné date

`promisedOn` string | null povinné

`finishedOn` null | string povinné date

`warranty` boolean povinné

`status` string povinné

`invoiceId` null | string povinné

`jobOrderId` null | string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`seriesId` null | string

`customFields` object

`tistene_pole` string

`invoiceNumber` null | string

`work` object\[\]

`object` "service\_job\_work" povinné

`id` string povinné

`workedOn` string povinné date

`description` string povinné

`workerName` string | null povinné

`minutes` integer povinné

`hourlyRateHaler` integer povinné

`vatRate` integer povinné

`netHaler` integer povinné

`parts` object\[\]

`object` "service\_job\_part" povinné

`id` string povinné

`itemId` string povinné

`warehouseId` string povinné

`description` string povinné

`unit` string povinné

`quantity` integer povinné

`unitPriceHaler` integer povinné

`vatRate` integer povinné

`usedOn` string povinné date

`netHaler` integer povinné

`workNetHaler` integer

`partsNetHaler` integer

`totalNetHaler` integer

`invoice` object

`object` "invoice" povinné

`id` string povinné

`number` null | string povinné

`variableSymbol` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`issueDate` string povinné date

`dueDate` null | string povinné date

`currency` string povinné

`totalHaler` integer povinné

`paidHaler` integer povinné

`status` string povinné

`overdue` boolean povinné

`fileId` null | string povinné

`customFields` object

`zakazka_zakaznika` string

`pocet` integer

`kampan` string

`vatMode` string

`exchangeRate` number

`templateId` null | string

`centerId` null | string

`activityId` null | string

`projectId` null | string

`seriesId` null | string

`constantSymbol` null | string

`taxPointDate` string date

`paymentMethod` string

`language` string

`notePublic` null | string

`noteInternal` null | string

`ourAccountNumber` null | string

`ourBankCode` null | string

`ourIban` null | string

`sellerName` null | string

`sellerIco` null | string

`sellerDic` null | string

`reminderOnDue` boolean

`reminderWeekAfter` boolean

`reminder14DaysAfter` boolean

`reminderMonthAfter` boolean

`netHaler` integer

`vatHaler` integer

`roundingHaler` integer

`recurringId` null | string

`stornoOfId` null | string

`contactIco` null | string

`contactDic` null | string

`contactVatPayerType` null | string

`billToStreet` null | string

`billToCity` null | string

`billToPostalCode` null | string

`billToCountry` null | string

`shipToName` string | null

`shipToStreet` null | string

`shipToCity` null | string

`shipToPostalCode` null | string

`shipToCountry` null | string

`contactEmail` null | string

`lines` object\[\]

`object` "invoice\_line" povinné

`id` string povinné

`description` string povinné

`quantity` number povinné

`unit` string povinné

`unitPriceHaler` integer povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`totalHaler` integer povinné

`accountNumber` null | string povinné

`lineKind` string povinné

`sourceId` null | string povinné

`itemId` null | string povinné

`warehouseId` null | string povinné

`lots` object\[\] povinné

`itemId` null | string

`lotId` string | null povinné

`code` null | string povinné

`quantity` integer povinné

`expiryDate` string | null povinné

`orderLineId` null | string povinné

`recycling` null | object

`text` string povinné

`unit` string povinné

`feeId` null | string povinné

`rateHaler` integer povinné

`totalHaler` integer povinné

`weightMilli` integer

`perUnitHaler` integer povinné

`coefficientMilli` integer povinné

`typed` boolean

`vatLines` object\[\]

`object` "invoice\_vat\_line" povinné

`id` string povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`payments` object\[\]

`object` "invoice\_payment" povinné

`id` string povinné

`amountHaler` integer povinné

`paidOn` string povinné date

`method` string povinné

`note` null | string povinné

`links` object\[\]

`object` "document\_link" povinné

`id` string povinné

`fromKind` string povinné

`fromId` string povinné

`toKind` string povinné

`toId` string povinné

`kind` string povinné

`amountHaler` integer | null

`posting` object

`regime` string povinné

`event` string povinné

`journalLines` object\[\]

`account` null | string povinné

`side` string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`balanced` boolean

`cashJournal` object\[\]

`account` null | string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`receivablesBook` object\[\]

`documentId` null | string povinné

`amountHaler` integer | null povinné

`status` string povinné

`payablesBook` any\[\]

`asset` any\[\]

`retentions` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`dueDate` null | string povinné date

`note` string | null povinné

`longTerm` boolean povinné

`carrierId` null | string

`creditWarning` object

`level` string povinné

`exposureHaler` integer povinné

`afterHaler` integer povinné

`warnHaler` integer | null povinné

`blockHaler` integer povinné

`availableHaler` integer povinné

`original` any

`bankMovement` object

`id` string povinné

`bankAccountId` string povinné

`cashDocument` object

`id` string povinné

`number` null | string povinné

`warnings` any\[\] povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/service-jobs \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "deviceName": "Pekárna U Lípy s.r.o.",
  "problem": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/service-jobs', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "deviceName": "Pekárna U Lípy s.r.o.",
    "problem": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/service-jobs",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "deviceName": "Pekárna U Lípy s.r.o.",
        "problem": "string"
    },
)
data = response.json()
```

## Get a service job with its work log, parts, and totals

GET `/v1/service-jobs/{id}`

Get a service job with its work log, parts, and totals

Nástroj MCP: `get-service-job`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`deviceName` string povinné

`serialNumber` null | string povinné

`problem` string povinné

`accessories` string | null povinné

`diagnosis` string | null povinné

`receivedOn` string povinné date

`promisedOn` string | null povinné

`finishedOn` null | string povinné date

`warranty` boolean povinné

`status` string povinné

`invoiceId` null | string povinné

`jobOrderId` null | string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`seriesId` null | string

`customFields` object

`tistene_pole` string

`invoiceNumber` null | string

`work` object\[\]

`object` "service\_job\_work" povinné

`id` string povinné

`workedOn` string povinné date

`description` string povinné

`workerName` string | null povinné

`minutes` integer povinné

`hourlyRateHaler` integer povinné

`vatRate` integer povinné

`netHaler` integer povinné

`parts` object\[\]

`object` "service\_job\_part" povinné

`id` string povinné

`itemId` string povinné

`warehouseId` string povinné

`description` string povinné

`unit` string povinné

`quantity` integer povinné

`unitPriceHaler` integer povinné

`vatRate` integer povinné

`usedOn` string povinné date

`netHaler` integer povinné

`workNetHaler` integer

`partsNetHaler` integer

`totalNetHaler` integer

`invoice` object

`object` "invoice" povinné

`id` string povinné

`number` null | string povinné

`variableSymbol` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`issueDate` string povinné date

`dueDate` null | string povinné date

`currency` string povinné

`totalHaler` integer povinné

`paidHaler` integer povinné

`status` string povinné

`overdue` boolean povinné

`fileId` null | string povinné

`customFields` object

`zakazka_zakaznika` string

`pocet` integer

`kampan` string

`vatMode` string

`exchangeRate` number

`templateId` null | string

`centerId` null | string

`activityId` null | string

`projectId` null | string

`seriesId` null | string

`constantSymbol` null | string

`taxPointDate` string date

`paymentMethod` string

`language` string

`notePublic` null | string

`noteInternal` null | string

`ourAccountNumber` null | string

`ourBankCode` null | string

`ourIban` null | string

`sellerName` null | string

`sellerIco` null | string

`sellerDic` null | string

`reminderOnDue` boolean

`reminderWeekAfter` boolean

`reminder14DaysAfter` boolean

`reminderMonthAfter` boolean

`netHaler` integer

`vatHaler` integer

`roundingHaler` integer

`recurringId` null | string

`stornoOfId` null | string

`contactIco` null | string

`contactDic` null | string

`contactVatPayerType` null | string

`billToStreet` null | string

`billToCity` null | string

`billToPostalCode` null | string

`billToCountry` null | string

`shipToName` string | null

`shipToStreet` null | string

`shipToCity` null | string

`shipToPostalCode` null | string

`shipToCountry` null | string

`contactEmail` null | string

`lines` object\[\]

`object` "invoice\_line" povinné

`id` string povinné

`description` string povinné

`quantity` number povinné

`unit` string povinné

`unitPriceHaler` integer povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`totalHaler` integer povinné

`accountNumber` null | string povinné

`lineKind` string povinné

`sourceId` null | string povinné

`itemId` null | string povinné

`warehouseId` null | string povinné

`lots` object\[\] povinné

`itemId` null | string

`lotId` string | null povinné

`code` null | string povinné

`quantity` integer povinné

`expiryDate` string | null povinné

`orderLineId` null | string povinné

`recycling` null | object

`text` string povinné

`unit` string povinné

`feeId` null | string povinné

`rateHaler` integer povinné

`totalHaler` integer povinné

`weightMilli` integer

`perUnitHaler` integer povinné

`coefficientMilli` integer povinné

`typed` boolean

`vatLines` object\[\]

`object` "invoice\_vat\_line" povinné

`id` string povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`payments` object\[\]

`object` "invoice\_payment" povinné

`id` string povinné

`amountHaler` integer povinné

`paidOn` string povinné date

`method` string povinné

`note` null | string povinné

`links` object\[\]

`object` "document\_link" povinné

`id` string povinné

`fromKind` string povinné

`fromId` string povinné

`toKind` string povinné

`toId` string povinné

`kind` string povinné

`amountHaler` integer | null

`posting` object

`regime` string povinné

`event` string povinné

`journalLines` object\[\]

`account` null | string povinné

`side` string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`balanced` boolean

`cashJournal` object\[\]

`account` null | string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`receivablesBook` object\[\]

`documentId` null | string povinné

`amountHaler` integer | null povinné

`status` string povinné

`payablesBook` any\[\]

`asset` any\[\]

`retentions` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`dueDate` null | string povinné date

`note` string | null povinné

`longTerm` boolean povinné

`carrierId` null | string

`creditWarning` object

`level` string povinné

`exposureHaler` integer povinné

`afterHaler` integer povinné

`warnHaler` integer | null povinné

`blockHaler` integer povinné

`availableHaler` integer povinné

`original` any

`bankMovement` object

`id` string povinné

`bankAccountId` string povinné

`cashDocument` object

`id` string povinné

`number` null | string povinné

`warnings` any\[\] povinné

```bash
curl https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Edit an open service job

PATCH `/v1/service-jobs/{id}`

Edit an open service job

Nástroj MCP: `update-service-job`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`contactId` string

ID of the contact. Find it with list-contacts.

`deviceName` string max 200 chars

`serialNumber` string | null

`problem` string max 4000 chars

`accessories` string | null

`diagnosis` string | null

`receivedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`promisedOn` string | null

Date as YYYY-MM-DD.

`warranty` boolean

`jobOrderId` string | null

ID of the job order. Find it with list-job-orders.

`note` string | null

### Odpověď · 200

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`deviceName` string povinné

`serialNumber` null | string povinné

`problem` string povinné

`accessories` string | null povinné

`diagnosis` string | null povinné

`receivedOn` string povinné date

`promisedOn` string | null povinné

`finishedOn` null | string povinné date

`warranty` boolean povinné

`status` string povinné

`invoiceId` null | string povinné

`jobOrderId` null | string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`seriesId` null | string

`customFields` object

`tistene_pole` string

`invoiceNumber` null | string

`work` object\[\]

`object` "service\_job\_work" povinné

`id` string povinné

`workedOn` string povinné date

`description` string povinné

`workerName` string | null povinné

`minutes` integer povinné

`hourlyRateHaler` integer povinné

`vatRate` integer povinné

`netHaler` integer povinné

`parts` object\[\]

`object` "service\_job\_part" povinné

`id` string povinné

`itemId` string povinné

`warehouseId` string povinné

`description` string povinné

`unit` string povinné

`quantity` integer povinné

`unitPriceHaler` integer povinné

`vatRate` integer povinné

`usedOn` string povinné date

`netHaler` integer povinné

`workNetHaler` integer

`partsNetHaler` integer

`totalNetHaler` integer

`invoice` object

`object` "invoice" povinné

`id` string povinné

`number` null | string povinné

`variableSymbol` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`issueDate` string povinné date

`dueDate` null | string povinné date

`currency` string povinné

`totalHaler` integer povinné

`paidHaler` integer povinné

`status` string povinné

`overdue` boolean povinné

`fileId` null | string povinné

`customFields` object

`zakazka_zakaznika` string

`pocet` integer

`kampan` string

`vatMode` string

`exchangeRate` number

`templateId` null | string

`centerId` null | string

`activityId` null | string

`projectId` null | string

`seriesId` null | string

`constantSymbol` null | string

`taxPointDate` string date

`paymentMethod` string

`language` string

`notePublic` null | string

`noteInternal` null | string

`ourAccountNumber` null | string

`ourBankCode` null | string

`ourIban` null | string

`sellerName` null | string

`sellerIco` null | string

`sellerDic` null | string

`reminderOnDue` boolean

`reminderWeekAfter` boolean

`reminder14DaysAfter` boolean

`reminderMonthAfter` boolean

`netHaler` integer

`vatHaler` integer

`roundingHaler` integer

`recurringId` null | string

`stornoOfId` null | string

`contactIco` null | string

`contactDic` null | string

`contactVatPayerType` null | string

`billToStreet` null | string

`billToCity` null | string

`billToPostalCode` null | string

`billToCountry` null | string

`shipToName` string | null

`shipToStreet` null | string

`shipToCity` null | string

`shipToPostalCode` null | string

`shipToCountry` null | string

`contactEmail` null | string

`lines` object\[\]

`object` "invoice\_line" povinné

`id` string povinné

`description` string povinné

`quantity` number povinné

`unit` string povinné

`unitPriceHaler` integer povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`totalHaler` integer povinné

`accountNumber` null | string povinné

`lineKind` string povinné

`sourceId` null | string povinné

`itemId` null | string povinné

`warehouseId` null | string povinné

`lots` object\[\] povinné

`itemId` null | string

`lotId` string | null povinné

`code` null | string povinné

`quantity` integer povinné

`expiryDate` string | null povinné

`orderLineId` null | string povinné

`recycling` null | object

`text` string povinné

`unit` string povinné

`feeId` null | string povinné

`rateHaler` integer povinné

`totalHaler` integer povinné

`weightMilli` integer

`perUnitHaler` integer povinné

`coefficientMilli` integer povinné

`typed` boolean

`vatLines` object\[\]

`object` "invoice\_vat\_line" povinné

`id` string povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`payments` object\[\]

`object` "invoice\_payment" povinné

`id` string povinné

`amountHaler` integer povinné

`paidOn` string povinné date

`method` string povinné

`note` null | string povinné

`links` object\[\]

`object` "document\_link" povinné

`id` string povinné

`fromKind` string povinné

`fromId` string povinné

`toKind` string povinné

`toId` string povinné

`kind` string povinné

`amountHaler` integer | null

`posting` object

`regime` string povinné

`event` string povinné

`journalLines` object\[\]

`account` null | string povinné

`side` string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`balanced` boolean

`cashJournal` object\[\]

`account` null | string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`receivablesBook` object\[\]

`documentId` null | string povinné

`amountHaler` integer | null povinné

`status` string povinné

`payablesBook` any\[\]

`asset` any\[\]

`retentions` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`dueDate` null | string povinné date

`note` string | null povinné

`longTerm` boolean povinné

`carrierId` null | string

`creditWarning` object

`level` string povinné

`exposureHaler` integer povinné

`afterHaler` integer povinné

`warnHaler` integer | null povinné

`blockHaler` integer povinné

`availableHaler` integer povinné

`original` any

`bankMovement` object

`id` string povinné

`bankAccountId` string povinné

`cashDocument` object

`id` string povinné

`number` null | string povinné

`warnings` any\[\] povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "deviceName": "Pekárna U Lípy s.r.o.",
  "serialNumber": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "deviceName": "Pekárna U Lípy s.r.o.",
    "serialNumber": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "deviceName": "Pekárna U Lípy s.r.o.",
        "serialNumber": "string"
    },
)
data = response.json()
```

## Delete a service job that has no parts yet. Otherwise cancel it

DELETE `/v1/service-jobs/{id}`

Delete a service job that has no parts yet. Otherwise cancel it

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-service-job`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Close a service job without an invoice, such as a warranty repair

POST `/v1/service-jobs/{id}/close`

Close a service job without an invoice, such as a warranty repair

Nástroj MCP: `close-service-job`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`deviceName` string povinné

`serialNumber` null | string povinné

`problem` string povinné

`accessories` string | null povinné

`diagnosis` string | null povinné

`receivedOn` string povinné date

`promisedOn` string | null povinné

`finishedOn` null | string povinné date

`warranty` boolean povinné

`status` string povinné

`invoiceId` null | string povinné

`jobOrderId` null | string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`seriesId` null | string

`customFields` object

`tistene_pole` string

`invoiceNumber` null | string

`work` object\[\]

`object` "service\_job\_work" povinné

`id` string povinné

`workedOn` string povinné date

`description` string povinné

`workerName` string | null povinné

`minutes` integer povinné

`hourlyRateHaler` integer povinné

`vatRate` integer povinné

`netHaler` integer povinné

`parts` object\[\]

`object` "service\_job\_part" povinné

`id` string povinné

`itemId` string povinné

`warehouseId` string povinné

`description` string povinné

`unit` string povinné

`quantity` integer povinné

`unitPriceHaler` integer povinné

`vatRate` integer povinné

`usedOn` string povinné date

`netHaler` integer povinné

`workNetHaler` integer

`partsNetHaler` integer

`totalNetHaler` integer

`invoice` object

`object` "invoice" povinné

`id` string povinné

`number` null | string povinné

`variableSymbol` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`issueDate` string povinné date

`dueDate` null | string povinné date

`currency` string povinné

`totalHaler` integer povinné

`paidHaler` integer povinné

`status` string povinné

`overdue` boolean povinné

`fileId` null | string povinné

`customFields` object

`zakazka_zakaznika` string

`pocet` integer

`kampan` string

`vatMode` string

`exchangeRate` number

`templateId` null | string

`centerId` null | string

`activityId` null | string

`projectId` null | string

`seriesId` null | string

`constantSymbol` null | string

`taxPointDate` string date

`paymentMethod` string

`language` string

`notePublic` null | string

`noteInternal` null | string

`ourAccountNumber` null | string

`ourBankCode` null | string

`ourIban` null | string

`sellerName` null | string

`sellerIco` null | string

`sellerDic` null | string

`reminderOnDue` boolean

`reminderWeekAfter` boolean

`reminder14DaysAfter` boolean

`reminderMonthAfter` boolean

`netHaler` integer

`vatHaler` integer

`roundingHaler` integer

`recurringId` null | string

`stornoOfId` null | string

`contactIco` null | string

`contactDic` null | string

`contactVatPayerType` null | string

`billToStreet` null | string

`billToCity` null | string

`billToPostalCode` null | string

`billToCountry` null | string

`shipToName` string | null

`shipToStreet` null | string

`shipToCity` null | string

`shipToPostalCode` null | string

`shipToCountry` null | string

`contactEmail` null | string

`lines` object\[\]

`object` "invoice\_line" povinné

`id` string povinné

`description` string povinné

`quantity` number povinné

`unit` string povinné

`unitPriceHaler` integer povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`totalHaler` integer povinné

`accountNumber` null | string povinné

`lineKind` string povinné

`sourceId` null | string povinné

`itemId` null | string povinné

`warehouseId` null | string povinné

`lots` object\[\] povinné

`itemId` null | string

`lotId` string | null povinné

`code` null | string povinné

`quantity` integer povinné

`expiryDate` string | null povinné

`orderLineId` null | string povinné

`recycling` null | object

`text` string povinné

`unit` string povinné

`feeId` null | string povinné

`rateHaler` integer povinné

`totalHaler` integer povinné

`weightMilli` integer

`perUnitHaler` integer povinné

`coefficientMilli` integer povinné

`typed` boolean

`vatLines` object\[\]

`object` "invoice\_vat\_line" povinné

`id` string povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`payments` object\[\]

`object` "invoice\_payment" povinné

`id` string povinné

`amountHaler` integer povinné

`paidOn` string povinné date

`method` string povinné

`note` null | string povinné

`links` object\[\]

`object` "document\_link" povinné

`id` string povinné

`fromKind` string povinné

`fromId` string povinné

`toKind` string povinné

`toId` string povinné

`kind` string povinné

`amountHaler` integer | null

`posting` object

`regime` string povinné

`event` string povinné

`journalLines` object\[\]

`account` null | string povinné

`side` string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`balanced` boolean

`cashJournal` object\[\]

`account` null | string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`receivablesBook` object\[\]

`documentId` null | string povinné

`amountHaler` integer | null povinné

`status` string povinné

`payablesBook` any\[\]

`asset` any\[\]

`retentions` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`dueDate` null | string povinné date

`note` string | null povinné

`longTerm` boolean povinné

`carrierId` null | string

`creditWarning` object

`level` string povinné

`exposureHaler` integer povinné

`afterHaler` integer povinné

`warnHaler` integer | null povinné

`blockHaler` integer povinné

`availableHaler` integer povinné

`original` any

`bankMovement` object

`id` string povinné

`bankAccountId` string povinné

`cashDocument` object

`id` string povinné

`number` null | string povinné

`warnings` any\[\] povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/close \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/close', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/close",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Turn a service job into an invoice from its work log and parts, as a draft unless issue is set

POST `/v1/service-jobs/{id}/invoice`

Turn a service job into an invoice from its work log and parts, as a draft unless issue is set

Nástroj MCP: `invoice-service-job`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`issueDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`taxPointDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`dueDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`issue` boolean

### Odpověď · 201

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`deviceName` string povinné

`serialNumber` null | string povinné

`problem` string povinné

`accessories` string | null povinné

`diagnosis` string | null povinné

`receivedOn` string povinné date

`promisedOn` string | null povinné

`finishedOn` null | string povinné date

`warranty` boolean povinné

`status` string povinné

`invoiceId` null | string povinné

`jobOrderId` null | string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`seriesId` null | string

`customFields` object

`tistene_pole` string

`invoiceNumber` null | string

`work` object\[\]

`object` "service\_job\_work" povinné

`id` string povinné

`workedOn` string povinné date

`description` string povinné

`workerName` string | null povinné

`minutes` integer povinné

`hourlyRateHaler` integer povinné

`vatRate` integer povinné

`netHaler` integer povinné

`parts` object\[\]

`object` "service\_job\_part" povinné

`id` string povinné

`itemId` string povinné

`warehouseId` string povinné

`description` string povinné

`unit` string povinné

`quantity` integer povinné

`unitPriceHaler` integer povinné

`vatRate` integer povinné

`usedOn` string povinné date

`netHaler` integer povinné

`workNetHaler` integer

`partsNetHaler` integer

`totalNetHaler` integer

`invoice` object

`object` "invoice" povinné

`id` string povinné

`number` null | string povinné

`variableSymbol` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`issueDate` string povinné date

`dueDate` null | string povinné date

`currency` string povinné

`totalHaler` integer povinné

`paidHaler` integer povinné

`status` string povinné

`overdue` boolean povinné

`fileId` null | string povinné

`customFields` object

`zakazka_zakaznika` string

`pocet` integer

`kampan` string

`vatMode` string

`exchangeRate` number

`templateId` null | string

`centerId` null | string

`activityId` null | string

`projectId` null | string

`seriesId` null | string

`constantSymbol` null | string

`taxPointDate` string date

`paymentMethod` string

`language` string

`notePublic` null | string

`noteInternal` null | string

`ourAccountNumber` null | string

`ourBankCode` null | string

`ourIban` null | string

`sellerName` null | string

`sellerIco` null | string

`sellerDic` null | string

`reminderOnDue` boolean

`reminderWeekAfter` boolean

`reminder14DaysAfter` boolean

`reminderMonthAfter` boolean

`netHaler` integer

`vatHaler` integer

`roundingHaler` integer

`recurringId` null | string

`stornoOfId` null | string

`contactIco` null | string

`contactDic` null | string

`contactVatPayerType` null | string

`billToStreet` null | string

`billToCity` null | string

`billToPostalCode` null | string

`billToCountry` null | string

`shipToName` string | null

`shipToStreet` null | string

`shipToCity` null | string

`shipToPostalCode` null | string

`shipToCountry` null | string

`contactEmail` null | string

`lines` object\[\]

`object` "invoice\_line" povinné

`id` string povinné

`description` string povinné

`quantity` number povinné

`unit` string povinné

`unitPriceHaler` integer povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`totalHaler` integer povinné

`accountNumber` null | string povinné

`lineKind` string povinné

`sourceId` null | string povinné

`itemId` null | string povinné

`warehouseId` null | string povinné

`lots` object\[\] povinné

`itemId` null | string

`lotId` string | null povinné

`code` null | string povinné

`quantity` integer povinné

`expiryDate` string | null povinné

`orderLineId` null | string povinné

`recycling` null | object

`text` string povinné

`unit` string povinné

`feeId` null | string povinné

`rateHaler` integer povinné

`totalHaler` integer povinné

`weightMilli` integer

`perUnitHaler` integer povinné

`coefficientMilli` integer povinné

`typed` boolean

`vatLines` object\[\]

`object` "invoice\_vat\_line" povinné

`id` string povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`payments` object\[\]

`object` "invoice\_payment" povinné

`id` string povinné

`amountHaler` integer povinné

`paidOn` string povinné date

`method` string povinné

`note` null | string povinné

`links` object\[\]

`object` "document\_link" povinné

`id` string povinné

`fromKind` string povinné

`fromId` string povinné

`toKind` string povinné

`toId` string povinné

`kind` string povinné

`amountHaler` integer | null

`posting` object

`regime` string povinné

`event` string povinné

`journalLines` object\[\]

`account` null | string povinné

`side` string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`balanced` boolean

`cashJournal` object\[\]

`account` null | string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`receivablesBook` object\[\]

`documentId` null | string povinné

`amountHaler` integer | null povinné

`status` string povinné

`payablesBook` any\[\]

`asset` any\[\]

`retentions` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`dueDate` null | string povinné date

`note` string | null povinné

`longTerm` boolean povinné

`carrierId` null | string

`creditWarning` object

`level` string povinné

`exposureHaler` integer povinné

`afterHaler` integer povinné

`warnHaler` integer | null povinné

`blockHaler` integer povinné

`availableHaler` integer povinné

`original` any

`bankMovement` object

`id` string povinné

`bankAccountId` string povinné

`cashDocument` object

`id` string povinné

`number` null | string povinné

`warnings` any\[\] povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/invoice \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "issueDate": "2026-10-30",
  "taxPointDate": "2026-10-30",
  "dueDate": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/invoice', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "issueDate": "2026-10-30",
    "taxPointDate": "2026-10-30",
    "dueDate": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/invoice",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "issueDate": "2026-10-30",
        "taxPointDate": "2026-10-30",
        "dueDate": "2026-10-30"
    },
)
data = response.json()
```

## Use a part from stock on a service job. The stock issue posts at once; there must be enough in the warehouse. On a warranty repair it posts as a cost (548), not as a sale

POST `/v1/service-jobs/{id}/parts`

Use a part from stock on a service job. The stock issue posts at once; there must be enough in the warehouse. On a warranty repair it posts as a cost (548), not as a sale

Nástroj MCP: `add-service-job-part`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`itemId` string povinné

ID of the item. Find it with list-items.

`warehouseId` string povinné

ID of the warehouse. Find it with list-warehouses.

`quantity` number povinné max 1000000000

`unitPriceHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`vatRate` 0 | 10 | 12 | 15 | 21

`usedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 201

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`deviceName` string povinné

`serialNumber` null | string povinné

`problem` string povinné

`accessories` string | null povinné

`diagnosis` string | null povinné

`receivedOn` string povinné date

`promisedOn` string | null povinné

`finishedOn` null | string povinné date

`warranty` boolean povinné

`status` string povinné

`invoiceId` null | string povinné

`jobOrderId` null | string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`seriesId` null | string

`customFields` object

`tistene_pole` string

`invoiceNumber` null | string

`work` object\[\]

`object` "service\_job\_work" povinné

`id` string povinné

`workedOn` string povinné date

`description` string povinné

`workerName` string | null povinné

`minutes` integer povinné

`hourlyRateHaler` integer povinné

`vatRate` integer povinné

`netHaler` integer povinné

`parts` object\[\]

`object` "service\_job\_part" povinné

`id` string povinné

`itemId` string povinné

`warehouseId` string povinné

`description` string povinné

`unit` string povinné

`quantity` integer povinné

`unitPriceHaler` integer povinné

`vatRate` integer povinné

`usedOn` string povinné date

`netHaler` integer povinné

`workNetHaler` integer

`partsNetHaler` integer

`totalNetHaler` integer

`invoice` object

`object` "invoice" povinné

`id` string povinné

`number` null | string povinné

`variableSymbol` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`issueDate` string povinné date

`dueDate` null | string povinné date

`currency` string povinné

`totalHaler` integer povinné

`paidHaler` integer povinné

`status` string povinné

`overdue` boolean povinné

`fileId` null | string povinné

`customFields` object

`zakazka_zakaznika` string

`pocet` integer

`kampan` string

`vatMode` string

`exchangeRate` number

`templateId` null | string

`centerId` null | string

`activityId` null | string

`projectId` null | string

`seriesId` null | string

`constantSymbol` null | string

`taxPointDate` string date

`paymentMethod` string

`language` string

`notePublic` null | string

`noteInternal` null | string

`ourAccountNumber` null | string

`ourBankCode` null | string

`ourIban` null | string

`sellerName` null | string

`sellerIco` null | string

`sellerDic` null | string

`reminderOnDue` boolean

`reminderWeekAfter` boolean

`reminder14DaysAfter` boolean

`reminderMonthAfter` boolean

`netHaler` integer

`vatHaler` integer

`roundingHaler` integer

`recurringId` null | string

`stornoOfId` null | string

`contactIco` null | string

`contactDic` null | string

`contactVatPayerType` null | string

`billToStreet` null | string

`billToCity` null | string

`billToPostalCode` null | string

`billToCountry` null | string

`shipToName` string | null

`shipToStreet` null | string

`shipToCity` null | string

`shipToPostalCode` null | string

`shipToCountry` null | string

`contactEmail` null | string

`lines` object\[\]

`object` "invoice\_line" povinné

`id` string povinné

`description` string povinné

`quantity` number povinné

`unit` string povinné

`unitPriceHaler` integer povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`totalHaler` integer povinné

`accountNumber` null | string povinné

`lineKind` string povinné

`sourceId` null | string povinné

`itemId` null | string povinné

`warehouseId` null | string povinné

`lots` object\[\] povinné

`itemId` null | string

`lotId` string | null povinné

`code` null | string povinné

`quantity` integer povinné

`expiryDate` string | null povinné

`orderLineId` null | string povinné

`recycling` null | object

`text` string povinné

`unit` string povinné

`feeId` null | string povinné

`rateHaler` integer povinné

`totalHaler` integer povinné

`weightMilli` integer

`perUnitHaler` integer povinné

`coefficientMilli` integer povinné

`typed` boolean

`vatLines` object\[\]

`object` "invoice\_vat\_line" povinné

`id` string povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`payments` object\[\]

`object` "invoice\_payment" povinné

`id` string povinné

`amountHaler` integer povinné

`paidOn` string povinné date

`method` string povinné

`note` null | string povinné

`links` object\[\]

`object` "document\_link" povinné

`id` string povinné

`fromKind` string povinné

`fromId` string povinné

`toKind` string povinné

`toId` string povinné

`kind` string povinné

`amountHaler` integer | null

`posting` object

`regime` string povinné

`event` string povinné

`journalLines` object\[\]

`account` null | string povinné

`side` string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`balanced` boolean

`cashJournal` object\[\]

`account` null | string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`receivablesBook` object\[\]

`documentId` null | string povinné

`amountHaler` integer | null povinné

`status` string povinné

`payablesBook` any\[\]

`asset` any\[\]

`retentions` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`dueDate` null | string povinné date

`note` string | null povinné

`longTerm` boolean povinné

`carrierId` null | string

`creditWarning` object

`level` string povinné

`exposureHaler` integer povinné

`afterHaler` integer povinné

`warnHaler` integer | null povinné

`blockHaler` integer povinné

`availableHaler` integer povinné

`original` any

`bankMovement` object

`id` string povinné

`bankAccountId` string povinné

`cashDocument` object

`id` string povinné

`number` null | string povinné

`warnings` any\[\] povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/parts \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "itemId": "itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "warehouseId": "whs_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "quantity": 1
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/parts', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "itemId": "itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "warehouseId": "whs_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "quantity": 1
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/parts",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "itemId": "itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "warehouseId": "whs_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "quantity": 1
    },
)
data = response.json()
```

## Remove a part from a service job and return it to stock by reversing the issue

DELETE `/v1/service-jobs/{id}/parts/{childId}`

Remove a part from a service job and return it to stock by reversing the issue

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `remove-service-job-part`

### Parametry v cestě

`id` string povinné

`childId` string povinné

ID of the child.

### Odpověď · 200

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`deviceName` string povinné

`serialNumber` null | string povinné

`problem` string povinné

`accessories` string | null povinné

`diagnosis` string | null povinné

`receivedOn` string povinné date

`promisedOn` string | null povinné

`finishedOn` null | string povinné date

`warranty` boolean povinné

`status` string povinné

`invoiceId` null | string povinné

`jobOrderId` null | string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`seriesId` null | string

`customFields` object

`tistene_pole` string

`invoiceNumber` null | string

`work` object\[\]

`object` "service\_job\_work" povinné

`id` string povinné

`workedOn` string povinné date

`description` string povinné

`workerName` string | null povinné

`minutes` integer povinné

`hourlyRateHaler` integer povinné

`vatRate` integer povinné

`netHaler` integer povinné

`parts` object\[\]

`object` "service\_job\_part" povinné

`id` string povinné

`itemId` string povinné

`warehouseId` string povinné

`description` string povinné

`unit` string povinné

`quantity` integer povinné

`unitPriceHaler` integer povinné

`vatRate` integer povinné

`usedOn` string povinné date

`netHaler` integer povinné

`workNetHaler` integer

`partsNetHaler` integer

`totalNetHaler` integer

`invoice` object

`object` "invoice" povinné

`id` string povinné

`number` null | string povinné

`variableSymbol` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`issueDate` string povinné date

`dueDate` null | string povinné date

`currency` string povinné

`totalHaler` integer povinné

`paidHaler` integer povinné

`status` string povinné

`overdue` boolean povinné

`fileId` null | string povinné

`customFields` object

`zakazka_zakaznika` string

`pocet` integer

`kampan` string

`vatMode` string

`exchangeRate` number

`templateId` null | string

`centerId` null | string

`activityId` null | string

`projectId` null | string

`seriesId` null | string

`constantSymbol` null | string

`taxPointDate` string date

`paymentMethod` string

`language` string

`notePublic` null | string

`noteInternal` null | string

`ourAccountNumber` null | string

`ourBankCode` null | string

`ourIban` null | string

`sellerName` null | string

`sellerIco` null | string

`sellerDic` null | string

`reminderOnDue` boolean

`reminderWeekAfter` boolean

`reminder14DaysAfter` boolean

`reminderMonthAfter` boolean

`netHaler` integer

`vatHaler` integer

`roundingHaler` integer

`recurringId` null | string

`stornoOfId` null | string

`contactIco` null | string

`contactDic` null | string

`contactVatPayerType` null | string

`billToStreet` null | string

`billToCity` null | string

`billToPostalCode` null | string

`billToCountry` null | string

`shipToName` string | null

`shipToStreet` null | string

`shipToCity` null | string

`shipToPostalCode` null | string

`shipToCountry` null | string

`contactEmail` null | string

`lines` object\[\]

`object` "invoice\_line" povinné

`id` string povinné

`description` string povinné

`quantity` number povinné

`unit` string povinné

`unitPriceHaler` integer povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`totalHaler` integer povinné

`accountNumber` null | string povinné

`lineKind` string povinné

`sourceId` null | string povinné

`itemId` null | string povinné

`warehouseId` null | string povinné

`lots` object\[\] povinné

`itemId` null | string

`lotId` string | null povinné

`code` null | string povinné

`quantity` integer povinné

`expiryDate` string | null povinné

`orderLineId` null | string povinné

`recycling` null | object

`text` string povinné

`unit` string povinné

`feeId` null | string povinné

`rateHaler` integer povinné

`totalHaler` integer povinné

`weightMilli` integer

`perUnitHaler` integer povinné

`coefficientMilli` integer povinné

`typed` boolean

`vatLines` object\[\]

`object` "invoice\_vat\_line" povinné

`id` string povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`payments` object\[\]

`object` "invoice\_payment" povinné

`id` string povinné

`amountHaler` integer povinné

`paidOn` string povinné date

`method` string povinné

`note` null | string povinné

`links` object\[\]

`object` "document\_link" povinné

`id` string povinné

`fromKind` string povinné

`fromId` string povinné

`toKind` string povinné

`toId` string povinné

`kind` string povinné

`amountHaler` integer | null

`posting` object

`regime` string povinné

`event` string povinné

`journalLines` object\[\]

`account` null | string povinné

`side` string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`balanced` boolean

`cashJournal` object\[\]

`account` null | string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`receivablesBook` object\[\]

`documentId` null | string povinné

`amountHaler` integer | null povinné

`status` string povinné

`payablesBook` any\[\]

`asset` any\[\]

`retentions` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`dueDate` null | string povinné date

`note` string | null povinné

`longTerm` boolean povinné

`carrierId` null | string

`creditWarning` object

`level` string povinné

`exposureHaler` integer povinné

`afterHaler` integer povinné

`warnHaler` integer | null povinné

`blockHaler` integer povinné

`availableHaler` integer povinné

`original` any

`bankMovement` object

`id` string povinné

`bankAccountId` string povinné

`cashDocument` object

`id` string povinné

`number` null | string povinné

`warnings` any\[\] povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/parts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/parts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/parts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Service protocol PDF with device, problem, work, and parts, in Czech, English, German or French

GET `/v1/service-jobs/{id}/pdf`

Service protocol PDF with device, problem, work, and parts, in Czech, English, German or French

Nástroj MCP: `download-service-job-protocol`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`language` "cs" | "en" | "de" | "fr"

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Move a service job between received, in progress, ready, and cancelled. Cancelling needs its parts removed first

POST `/v1/service-jobs/{id}/status`

Move a service job between received, in progress, ready, and cancelled. Cancelling needs its parts removed first

Nástroj MCP: `set-service-job-status`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`status` "received" | "in\_progress" | "ready" | "cancelled" povinné

### Odpověď · 200

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`deviceName` string povinné

`serialNumber` null | string povinné

`problem` string povinné

`accessories` string | null povinné

`diagnosis` string | null povinné

`receivedOn` string povinné date

`promisedOn` string | null povinné

`finishedOn` null | string povinné date

`warranty` boolean povinné

`status` string povinné

`invoiceId` null | string povinné

`jobOrderId` null | string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`seriesId` null | string

`customFields` object

`tistene_pole` string

`invoiceNumber` null | string

`work` object\[\]

`object` "service\_job\_work" povinné

`id` string povinné

`workedOn` string povinné date

`description` string povinné

`workerName` string | null povinné

`minutes` integer povinné

`hourlyRateHaler` integer povinné

`vatRate` integer povinné

`netHaler` integer povinné

`parts` object\[\]

`object` "service\_job\_part" povinné

`id` string povinné

`itemId` string povinné

`warehouseId` string povinné

`description` string povinné

`unit` string povinné

`quantity` integer povinné

`unitPriceHaler` integer povinné

`vatRate` integer povinné

`usedOn` string povinné date

`netHaler` integer povinné

`workNetHaler` integer

`partsNetHaler` integer

`totalNetHaler` integer

`invoice` object

`object` "invoice" povinné

`id` string povinné

`number` null | string povinné

`variableSymbol` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`issueDate` string povinné date

`dueDate` null | string povinné date

`currency` string povinné

`totalHaler` integer povinné

`paidHaler` integer povinné

`status` string povinné

`overdue` boolean povinné

`fileId` null | string povinné

`customFields` object

`zakazka_zakaznika` string

`pocet` integer

`kampan` string

`vatMode` string

`exchangeRate` number

`templateId` null | string

`centerId` null | string

`activityId` null | string

`projectId` null | string

`seriesId` null | string

`constantSymbol` null | string

`taxPointDate` string date

`paymentMethod` string

`language` string

`notePublic` null | string

`noteInternal` null | string

`ourAccountNumber` null | string

`ourBankCode` null | string

`ourIban` null | string

`sellerName` null | string

`sellerIco` null | string

`sellerDic` null | string

`reminderOnDue` boolean

`reminderWeekAfter` boolean

`reminder14DaysAfter` boolean

`reminderMonthAfter` boolean

`netHaler` integer

`vatHaler` integer

`roundingHaler` integer

`recurringId` null | string

`stornoOfId` null | string

`contactIco` null | string

`contactDic` null | string

`contactVatPayerType` null | string

`billToStreet` null | string

`billToCity` null | string

`billToPostalCode` null | string

`billToCountry` null | string

`shipToName` string | null

`shipToStreet` null | string

`shipToCity` null | string

`shipToPostalCode` null | string

`shipToCountry` null | string

`contactEmail` null | string

`lines` object\[\]

`object` "invoice\_line" povinné

`id` string povinné

`description` string povinné

`quantity` number povinné

`unit` string povinné

`unitPriceHaler` integer povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`totalHaler` integer povinné

`accountNumber` null | string povinné

`lineKind` string povinné

`sourceId` null | string povinné

`itemId` null | string povinné

`warehouseId` null | string povinné

`lots` object\[\] povinné

`itemId` null | string

`lotId` string | null povinné

`code` null | string povinné

`quantity` integer povinné

`expiryDate` string | null povinné

`orderLineId` null | string povinné

`recycling` null | object

`text` string povinné

`unit` string povinné

`feeId` null | string povinné

`rateHaler` integer povinné

`totalHaler` integer povinné

`weightMilli` integer

`perUnitHaler` integer povinné

`coefficientMilli` integer povinné

`typed` boolean

`vatLines` object\[\]

`object` "invoice\_vat\_line" povinné

`id` string povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`payments` object\[\]

`object` "invoice\_payment" povinné

`id` string povinné

`amountHaler` integer povinné

`paidOn` string povinné date

`method` string povinné

`note` null | string povinné

`links` object\[\]

`object` "document\_link" povinné

`id` string povinné

`fromKind` string povinné

`fromId` string povinné

`toKind` string povinné

`toId` string povinné

`kind` string povinné

`amountHaler` integer | null

`posting` object

`regime` string povinné

`event` string povinné

`journalLines` object\[\]

`account` null | string povinné

`side` string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`balanced` boolean

`cashJournal` object\[\]

`account` null | string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`receivablesBook` object\[\]

`documentId` null | string povinné

`amountHaler` integer | null povinné

`status` string povinné

`payablesBook` any\[\]

`asset` any\[\]

`retentions` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`dueDate` null | string povinné date

`note` string | null povinné

`longTerm` boolean povinné

`carrierId` null | string

`creditWarning` object

`level` string povinné

`exposureHaler` integer povinné

`afterHaler` integer povinné

`warnHaler` integer | null povinné

`blockHaler` integer povinné

`availableHaler` integer povinné

`original` any

`bankMovement` object

`id` string povinné

`bankAccountId` string povinné

`cashDocument` object

`id` string povinné

`number` null | string povinné

`warnings` any\[\] povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/status \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "received"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/status', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "status": "received"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/status",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "status": "received"
    },
)
data = response.json()
```

## Log work on a service job

POST `/v1/service-jobs/{id}/work`

Log work on a service job

Nástroj MCP: `add-service-job-work`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`workedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`description` string povinné max 400 chars

`workerName` string | null

`minutes` integer povinné max 100000

`hourlyRateHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`vatRate` 0 | 10 | 12 | 15 | 21

### Odpověď · 201

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`deviceName` string povinné

`serialNumber` null | string povinné

`problem` string povinné

`accessories` string | null povinné

`diagnosis` string | null povinné

`receivedOn` string povinné date

`promisedOn` string | null povinné

`finishedOn` null | string povinné date

`warranty` boolean povinné

`status` string povinné

`invoiceId` null | string povinné

`jobOrderId` null | string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`seriesId` null | string

`customFields` object

`tistene_pole` string

`invoiceNumber` null | string

`work` object\[\]

`object` "service\_job\_work" povinné

`id` string povinné

`workedOn` string povinné date

`description` string povinné

`workerName` string | null povinné

`minutes` integer povinné

`hourlyRateHaler` integer povinné

`vatRate` integer povinné

`netHaler` integer povinné

`parts` object\[\]

`object` "service\_job\_part" povinné

`id` string povinné

`itemId` string povinné

`warehouseId` string povinné

`description` string povinné

`unit` string povinné

`quantity` integer povinné

`unitPriceHaler` integer povinné

`vatRate` integer povinné

`usedOn` string povinné date

`netHaler` integer povinné

`workNetHaler` integer

`partsNetHaler` integer

`totalNetHaler` integer

`invoice` object

`object` "invoice" povinné

`id` string povinné

`number` null | string povinné

`variableSymbol` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`issueDate` string povinné date

`dueDate` null | string povinné date

`currency` string povinné

`totalHaler` integer povinné

`paidHaler` integer povinné

`status` string povinné

`overdue` boolean povinné

`fileId` null | string povinné

`customFields` object

`zakazka_zakaznika` string

`pocet` integer

`kampan` string

`vatMode` string

`exchangeRate` number

`templateId` null | string

`centerId` null | string

`activityId` null | string

`projectId` null | string

`seriesId` null | string

`constantSymbol` null | string

`taxPointDate` string date

`paymentMethod` string

`language` string

`notePublic` null | string

`noteInternal` null | string

`ourAccountNumber` null | string

`ourBankCode` null | string

`ourIban` null | string

`sellerName` null | string

`sellerIco` null | string

`sellerDic` null | string

`reminderOnDue` boolean

`reminderWeekAfter` boolean

`reminder14DaysAfter` boolean

`reminderMonthAfter` boolean

`netHaler` integer

`vatHaler` integer

`roundingHaler` integer

`recurringId` null | string

`stornoOfId` null | string

`contactIco` null | string

`contactDic` null | string

`contactVatPayerType` null | string

`billToStreet` null | string

`billToCity` null | string

`billToPostalCode` null | string

`billToCountry` null | string

`shipToName` string | null

`shipToStreet` null | string

`shipToCity` null | string

`shipToPostalCode` null | string

`shipToCountry` null | string

`contactEmail` null | string

`lines` object\[\]

`object` "invoice\_line" povinné

`id` string povinné

`description` string povinné

`quantity` number povinné

`unit` string povinné

`unitPriceHaler` integer povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`totalHaler` integer povinné

`accountNumber` null | string povinné

`lineKind` string povinné

`sourceId` null | string povinné

`itemId` null | string povinné

`warehouseId` null | string povinné

`lots` object\[\] povinné

`itemId` null | string

`lotId` string | null povinné

`code` null | string povinné

`quantity` integer povinné

`expiryDate` string | null povinné

`orderLineId` null | string povinné

`recycling` null | object

`text` string povinné

`unit` string povinné

`feeId` null | string povinné

`rateHaler` integer povinné

`totalHaler` integer povinné

`weightMilli` integer

`perUnitHaler` integer povinné

`coefficientMilli` integer povinné

`typed` boolean

`vatLines` object\[\]

`object` "invoice\_vat\_line" povinné

`id` string povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`payments` object\[\]

`object` "invoice\_payment" povinné

`id` string povinné

`amountHaler` integer povinné

`paidOn` string povinné date

`method` string povinné

`note` null | string povinné

`links` object\[\]

`object` "document\_link" povinné

`id` string povinné

`fromKind` string povinné

`fromId` string povinné

`toKind` string povinné

`toId` string povinné

`kind` string povinné

`amountHaler` integer | null

`posting` object

`regime` string povinné

`event` string povinné

`journalLines` object\[\]

`account` null | string povinné

`side` string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`balanced` boolean

`cashJournal` object\[\]

`account` null | string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`receivablesBook` object\[\]

`documentId` null | string povinné

`amountHaler` integer | null povinné

`status` string povinné

`payablesBook` any\[\]

`asset` any\[\]

`retentions` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`dueDate` null | string povinné date

`note` string | null povinné

`longTerm` boolean povinné

`carrierId` null | string

`creditWarning` object

`level` string povinné

`exposureHaler` integer povinné

`afterHaler` integer povinné

`warnHaler` integer | null povinné

`blockHaler` integer povinné

`availableHaler` integer povinné

`original` any

`bankMovement` object

`id` string povinné

`bankAccountId` string povinné

`cashDocument` object

`id` string povinné

`number` null | string povinné

`warnings` any\[\] povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/work \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "description": "Pečivo, říjen",
  "minutes": 1
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/work', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "description": "Pečivo, říjen",
    "minutes": 1
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/work",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "description": "Pečivo, říjen",
        "minutes": 1
    },
)
data = response.json()
```

## Remove a work log entry

DELETE `/v1/service-jobs/{id}/work/{childId}`

Remove a work log entry

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `remove-service-job-work`

### Parametry v cestě

`id` string povinné

`childId` string povinné

ID of the child.

### Odpověď · 200

`id` string povinné

`number` string povinné

`contactId` string povinné

`contactName` null | string povinné

`deviceName` string povinné

`serialNumber` null | string povinné

`problem` string povinné

`accessories` string | null povinné

`diagnosis` string | null povinné

`receivedOn` string povinné date

`promisedOn` string | null povinné

`finishedOn` null | string povinné date

`warranty` boolean povinné

`status` string povinné

`invoiceId` null | string povinné

`jobOrderId` null | string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

`seriesId` null | string

`customFields` object

`tistene_pole` string

`invoiceNumber` null | string

`work` object\[\]

`object` "service\_job\_work" povinné

`id` string povinné

`workedOn` string povinné date

`description` string povinné

`workerName` string | null povinné

`minutes` integer povinné

`hourlyRateHaler` integer povinné

`vatRate` integer povinné

`netHaler` integer povinné

`parts` object\[\]

`object` "service\_job\_part" povinné

`id` string povinné

`itemId` string povinné

`warehouseId` string povinné

`description` string povinné

`unit` string povinné

`quantity` integer povinné

`unitPriceHaler` integer povinné

`vatRate` integer povinné

`usedOn` string povinné date

`netHaler` integer povinné

`workNetHaler` integer

`partsNetHaler` integer

`totalNetHaler` integer

`invoice` object

`object` "invoice" povinné

`id` string povinné

`number` null | string povinné

`variableSymbol` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`issueDate` string povinné date

`dueDate` null | string povinné date

`currency` string povinné

`totalHaler` integer povinné

`paidHaler` integer povinné

`status` string povinné

`overdue` boolean povinné

`fileId` null | string povinné

`customFields` object

`zakazka_zakaznika` string

`pocet` integer

`kampan` string

`vatMode` string

`exchangeRate` number

`templateId` null | string

`centerId` null | string

`activityId` null | string

`projectId` null | string

`seriesId` null | string

`constantSymbol` null | string

`taxPointDate` string date

`paymentMethod` string

`language` string

`notePublic` null | string

`noteInternal` null | string

`ourAccountNumber` null | string

`ourBankCode` null | string

`ourIban` null | string

`sellerName` null | string

`sellerIco` null | string

`sellerDic` null | string

`reminderOnDue` boolean

`reminderWeekAfter` boolean

`reminder14DaysAfter` boolean

`reminderMonthAfter` boolean

`netHaler` integer

`vatHaler` integer

`roundingHaler` integer

`recurringId` null | string

`stornoOfId` null | string

`contactIco` null | string

`contactDic` null | string

`contactVatPayerType` null | string

`billToStreet` null | string

`billToCity` null | string

`billToPostalCode` null | string

`billToCountry` null | string

`shipToName` string | null

`shipToStreet` null | string

`shipToCity` null | string

`shipToPostalCode` null | string

`shipToCountry` null | string

`contactEmail` null | string

`lines` object\[\]

`object` "invoice\_line" povinné

`id` string povinné

`description` string povinné

`quantity` number povinné

`unit` string povinné

`unitPriceHaler` integer povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`totalHaler` integer povinné

`accountNumber` null | string povinné

`lineKind` string povinné

`sourceId` null | string povinné

`itemId` null | string povinné

`warehouseId` null | string povinné

`lots` object\[\] povinné

`itemId` null | string

`lotId` string | null povinné

`code` null | string povinné

`quantity` integer povinné

`expiryDate` string | null povinné

`orderLineId` null | string povinné

`recycling` null | object

`text` string povinné

`unit` string povinné

`feeId` null | string povinné

`rateHaler` integer povinné

`totalHaler` integer povinné

`weightMilli` integer

`perUnitHaler` integer povinné

`coefficientMilli` integer povinné

`typed` boolean

`vatLines` object\[\]

`object` "invoice\_vat\_line" povinné

`id` string povinné

`vatRate` number povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`payments` object\[\]

`object` "invoice\_payment" povinné

`id` string povinné

`amountHaler` integer povinné

`paidOn` string povinné date

`method` string povinné

`note` null | string povinné

`links` object\[\]

`object` "document\_link" povinné

`id` string povinné

`fromKind` string povinné

`fromId` string povinné

`toKind` string povinné

`toId` string povinné

`kind` string povinné

`amountHaler` integer | null

`posting` object

`regime` string povinné

`event` string povinné

`journalLines` object\[\]

`account` null | string povinné

`side` string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`balanced` boolean

`cashJournal` object\[\]

`account` null | string povinné

`amountHaler` integer | null povinné

`documentId` null | string povinné

`receivablesBook` object\[\]

`documentId` null | string povinné

`amountHaler` integer | null povinné

`status` string povinné

`payablesBook` any\[\]

`asset` any\[\]

`retentions` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`dueDate` null | string povinné date

`note` string | null povinné

`longTerm` boolean povinné

`carrierId` null | string

`creditWarning` object

`level` string povinné

`exposureHaler` integer povinné

`afterHaler` integer povinné

`warnHaler` integer | null povinné

`blockHaler` integer povinné

`availableHaler` integer povinné

`original` any

`bankMovement` object

`id` string povinné

`bankAccountId` string povinné

`cashDocument` object

`id` string povinné

`number` null | string povinné

`warnings` any\[\] povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/work/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/work/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/service-jobs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/work/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Seznam: zásilky

GET `/v1/shipments`

List shipments (zásilky), by carrier, status, document, or contact

Nástroj MCP: `list-shipments`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`carrierId` string

ID of the carrier. Find it with list-carriers.

`status` "to\_process" | "exported" | "in\_transit" | "delivered" | "returned" | "cancelled"

`sourceId` string

ID of the source.

`contactId` string

ID of the contact. Find it with list-contacts.

### Odpověď · 200

`data` object\[\] povinné

`object` "shipment" povinné

`id` string povinné

`number` string povinné

`carrierId` string povinné

`carrierName` string povinné

`sourceKind` null | string povinné

`sourceId` null | string povinné

`sourceNumber` null | string povinné

`contactId` null | string povinné

`recipientName` string povinné

`recipientStreet` null | string povinné

`recipientCity` null | string povinné

`recipientPostalCode` null | string povinné

`recipientCountry` string povinné

`recipientPhone` null | string povinné

`recipientEmail` null | string povinné

`weightGrams` integer | null povinné

`parcelCount` integer povinné

`codHaler` integer | null povinné

`valueHaler` integer | null povinné

`currency` string povinné

`variableSymbol` null | string povinné

`trackingNumber` null | string povinné

`pickupPointId` null | string povinné

`status` string povinné

`statusDetail` null | string povinné

`statusAt` null | string povinné date-time

`exportedAt` null | string povinné date-time

`shippedOn` string povinné date

`note` null | string povinné

`createdAt` string povinné date-time

`externalId` null | string

`preferredDeliveryOn` null | string date

`preferredDeliveryFrom` null | string

`preferredDeliveryTo` null | string

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/shipments \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/shipments', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/shipments",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Vytvoření: zásilka

POST `/v1/shipments`

Create a shipment for a carrier. Named from a document, it takes the delivery address and cash on delivery from it; from a contact, its address

Nástroj MCP: `create-shipment`

### Tělo požadavku

`carrierId` string povinné

ID of the carrier. Find it with list-carriers.

`sourceKind` "invoice" | "delivery\_note" | "proforma" | "order\_received"

`sourceId` string

ID of the source.

`contactId` string

ID of the contact. Find it with list-contacts.

`recipientName` string max 160 chars

`recipientStreet` string | null

`recipientCity` string | null

`recipientPostalCode` string | null

`recipientCountry` string 2 chars

`recipientPhone` string | null

`recipientEmail` string | null

`weightGrams` integer | null

`parcelCount` integer max 99

`codHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`valueHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`variableSymbol` string | null

`trackingNumber` string | null

`pickupPointId` string | null

ID of the pickup point.

`preferredDeliveryOn` string | null

The day the recipient asks for. PPL only.

`preferredDeliveryFrom` string | null

From this time on that day, HH:MM. PPL only.

`preferredDeliveryTo` string | null

Until this time on that day, HH:MM. PPL only.

`shippedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`note` string | null

### Odpověď · 201

`id` string povinné

`number` string povinné

`carrierId` string povinné

`carrierName` string povinné

`sourceKind` null | string povinné

`sourceId` null | string povinné

`sourceNumber` null | string povinné

`contactId` null | string povinné

`recipientName` string povinné

`recipientStreet` null | string povinné

`recipientCity` null | string povinné

`recipientPostalCode` null | string povinné

`recipientCountry` string povinné

`recipientPhone` null | string povinné

`recipientEmail` null | string povinné

`weightGrams` integer | null povinné

`parcelCount` integer povinné

`codHaler` integer | null povinné

`valueHaler` integer | null povinné

`currency` string povinné

`variableSymbol` null | string povinné

`trackingNumber` null | string povinné

`pickupPointId` null | string povinné

`status` string povinné

`statusDetail` null | string povinné

`statusAt` null | string povinné date-time

`exportedAt` null | string povinné date-time

`shippedOn` string povinné date

`note` null | string povinné

`createdAt` string povinné date-time

`externalId` null | string

`preferredDeliveryOn` null | string date

`preferredDeliveryFrom` null | string

`preferredDeliveryTo` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/shipments \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "carrierId": "gcr_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/shipments', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "carrierId": "gcr_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/shipments",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "carrierId": "gcr_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    },
)
data = response.json()
```

## Detail: zásilka

GET `/v1/shipments/{id}`

Get a shipment

Nástroj MCP: `get-shipment`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`number` string povinné

`carrierId` string povinné

`carrierName` string povinné

`sourceKind` null | string povinné

`sourceId` null | string povinné

`sourceNumber` null | string povinné

`contactId` null | string povinné

`recipientName` string povinné

`recipientStreet` null | string povinné

`recipientCity` null | string povinné

`recipientPostalCode` null | string povinné

`recipientCountry` string povinné

`recipientPhone` null | string povinné

`recipientEmail` null | string povinné

`weightGrams` integer | null povinné

`parcelCount` integer povinné

`codHaler` integer | null povinné

`valueHaler` integer | null povinné

`currency` string povinné

`variableSymbol` null | string povinné

`trackingNumber` null | string povinné

`pickupPointId` null | string povinné

`status` string povinné

`statusDetail` null | string povinné

`statusAt` null | string povinné date-time

`exportedAt` null | string povinné date-time

`shippedOn` string povinné date

`note` null | string povinné

`createdAt` string povinné date-time

`externalId` null | string

`preferredDeliveryOn` null | string date

`preferredDeliveryFrom` null | string

`preferredDeliveryTo` null | string

```bash
curl https://api.damedoklad.cz/v1/shipments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/shipments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/shipments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Úprava: zásilka

PATCH `/v1/shipments/{id}`

Change a shipment or its status. Once exported, only its tracking number, status, and note can change, as the carrier already holds the rest

Nástroj MCP: `update-shipment`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`carrierId` string

ID of the carrier. Find it with list-carriers.

`sourceKind` "invoice" | "delivery\_note" | "proforma" | "order\_received"

`sourceId` string

ID of the source.

`contactId` string

ID of the contact. Find it with list-contacts.

`recipientName` string max 160 chars

`recipientStreet` string | null

`recipientCity` string | null

`recipientPostalCode` string | null

`recipientCountry` string 2 chars

`recipientPhone` string | null

`recipientEmail` string | null

`weightGrams` integer | null

`parcelCount` integer max 99

`codHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`valueHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`variableSymbol` string | null

`trackingNumber` string | null

`pickupPointId` string | null

ID of the pickup point.

`preferredDeliveryOn` string | null

The day the recipient asks for. PPL only.

`preferredDeliveryFrom` string | null

From this time on that day, HH:MM. PPL only.

`preferredDeliveryTo` string | null

Until this time on that day, HH:MM. PPL only.

`shippedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`note` string | null

`status` "to\_process" | "exported" | "in\_transit" | "delivered" | "returned" | "cancelled"

`statusDetail` string | null

### Odpověď · 200

`id` string povinné

`number` string povinné

`carrierId` string povinné

`carrierName` string povinné

`sourceKind` null | string povinné

`sourceId` null | string povinné

`sourceNumber` null | string povinné

`contactId` null | string povinné

`recipientName` string povinné

`recipientStreet` null | string povinné

`recipientCity` null | string povinné

`recipientPostalCode` null | string povinné

`recipientCountry` string povinné

`recipientPhone` null | string povinné

`recipientEmail` null | string povinné

`weightGrams` integer | null povinné

`parcelCount` integer povinné

`codHaler` integer | null povinné

`valueHaler` integer | null povinné

`currency` string povinné

`variableSymbol` null | string povinné

`trackingNumber` null | string povinné

`pickupPointId` null | string povinné

`status` string povinné

`statusDetail` null | string povinné

`statusAt` null | string povinné date-time

`exportedAt` null | string povinné date-time

`shippedOn` string povinné date

`note` null | string povinné

`createdAt` string povinné date-time

`externalId` null | string

`preferredDeliveryOn` null | string date

`preferredDeliveryFrom` null | string

`preferredDeliveryTo` null | string

```bash
curl -X PATCH https://api.damedoklad.cz/v1/shipments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "carrierId": "gcr_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "sourceKind": "invoice",
  "sourceId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/shipments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "carrierId": "gcr_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "sourceKind": "invoice",
    "sourceId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/shipments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "carrierId": "gcr_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "sourceKind": "invoice",
        "sourceId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    },
)
data = response.json()
```

## Smazání: zásilka

DELETE `/v1/shipments/{id}`

Delete a shipment not yet handed to the carrier

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-shipment`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/shipments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/shipments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/shipments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Download the carrier's own labels through its API (Packeta, PPL, DPD, GLS). Only for shipments it already holds, and only where the operator allows live calls

POST `/v1/shipments/carrier/labels`

Download the carrier's own labels through its API (Packeta, PPL, DPD, GLS). Only for shipments it already holds, and only where the operator allows live calls

Nástroj MCP: `download-carrier-labels`

### Tělo požadavku

`ids` string\[\] povinné

`format` "A6 on A6" | "A7 on A7" | "A6 on A4" | "A7 on A4" | "105x35mm on A4" | "A8 on A8"

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl -X POST https://api.damedoklad.cz/v1/shipments/carrier/labels \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/shipments/carrier/labels', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/shipments/carrier/labels",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
content = response.content
```

## Ask the carrier for the status of shipments it holds (Packeta, PPL, DPD, GLS). Only where the operator allows live calls. A sweep also does this by itself

POST `/v1/shipments/carrier/status`

Ask the carrier for the status of shipments it holds (Packeta, PPL, DPD, GLS). Only where the operator allows live calls. A sweep also does this by itself

Nástroj MCP: `sync-carrier-status`

### Tělo požadavku

`ids` string\[\] povinné

### Odpověď · 200

`results` object\[\] povinné

`id` string

`ok` boolean povinné

`error` null | string

`code` null | string

`number` null | string

`stockDocumentId` null | string

`documentId` null | string

`status` string

`contactName` null | string

`name` null | string

`to` string

`amountHaler` integer | null

`movementId` null | string

`row` integer

`recognised` boolean

`shipmentId` string

`trackingNumber` null | string

`total` integer povinné

`succeeded` integer povinné

`failed` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/shipments/carrier/status \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/shipments/carrier/status', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/shipments/carrier/status",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
data = response.json()
```

## Hand shipments to the carrier through its own API (Packeta, PPL, DPD, GLS). Only where the operator allows live calls. Each answers on its own

POST `/v1/shipments/carrier/submit`

Hand shipments to the carrier through its own API (Packeta, PPL, DPD, GLS). Only where the operator allows live calls. Each answers on its own. The carrier assigns the tracking number: Packeta and DPD straight away, PPL when it has processed the batch, GLS with the first label.

Nástroj MCP: `submit-shipments-to-carrier`

### Tělo požadavku

`ids` string\[\] povinné

### Odpověď · 200

`results` object\[\] povinné

`id` string

`ok` boolean povinné

`error` null | string

`code` null | string

`number` null | string

`stockDocumentId` null | string

`documentId` null | string

`status` string

`contactName` null | string

`name` null | string

`to` string

`amountHaler` integer | null

`movementId` null | string

`row` integer

`recognised` boolean

`shipmentId` string

`trackingNumber` null | string

`total` integer povinné

`succeeded` integer povinné

`failed` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/shipments/carrier/submit \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/shipments/carrier/submit', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/shipments/carrier/submit",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
data = response.json()
```

## Print addressed envelopes, DL by default or C6 or C5, for shipments or for contacts, one per page at envelope size

POST `/v1/shipments/envelopes`

Print addressed envelopes, DL by default or C6 or C5, for shipments or for contacts, one per page at envelope size

Nástroj MCP: `print-envelopes`

### Tělo požadavku

`ids` string\[\]

`contactIds` string\[\]

`size` "DL" | "C6" | "C5"

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl -X POST https://api.damedoklad.cz/v1/shipments/envelopes \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ],
  "contactIds": [
    "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ],
  "size": "DL"
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/shipments/envelopes', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ],
    "contactIds": [
      "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ],
    "size": "DL"
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/shipments/envelopes",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ],
        "contactIds": [
            "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ],
        "size": "DL"
    },
)
content = response.content
```

## Export: zásilka

POST `/v1/shipments/export`

Download the carrier file: the Česká pošta posting sheet (ePA), or generic CSV for any other carrier. Exported shipments leave later exports

Nástroj MCP: `export-shipments`

### Tělo požadavku

`carrierId` string povinné

ID of the carrier. Find it with list-carriers.

`ids` string\[\]

Left out: everything of this carrier still to process.

### Odpověď · 200

Vrací soubor text/csv.

```bash
curl -X POST https://api.damedoklad.cz/v1/shipments/export \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "carrierId": "gcr_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/shipments/export', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "carrierId": "gcr_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/shipments/export",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "carrierId": "gcr_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    },
)
content = response.content
```

## Make shipments for documents, as POHODA's Vygenerovat zásilky: one per document that has none yet, each answering on its own

POST `/v1/shipments/generate`

Make shipments for documents, as POHODA's Vygenerovat zásilky: one per document that has none yet, each answering on its own

Nástroj MCP: `generate-shipments`

### Tělo požadavku

`carrierId` string povinné

ID of the carrier. Find it with list-carriers.

`sourceKind` "invoice" | "order\_received" | "delivery\_note" | "proforma" povinné

`ids` string\[\] povinné

### Odpověď · 200

`results` object\[\] povinné

`id` string

`ok` boolean povinné

`error` null | string

`code` null | string

`number` null | string

`stockDocumentId` null | string

`documentId` null | string

`status` string

`contactName` null | string

`name` null | string

`to` string

`amountHaler` integer | null

`movementId` null | string

`row` integer

`recognised` boolean

`shipmentId` string

`trackingNumber` null | string

`total` integer povinné

`succeeded` integer povinné

`failed` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/shipments/generate \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "carrierId": "gcr_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "sourceKind": "invoice",
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/shipments/generate', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "carrierId": "gcr_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "sourceKind": "invoice",
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/shipments/generate",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "carrierId": "gcr_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "sourceKind": "invoice",
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
data = response.json()
```

## Print shipment labels as a PDF, one per parcel, A6 or four on an A4 sheet: our own layout with a Code 128 of the tracking number, not a carrier's label

POST `/v1/shipments/labels`

Print shipment labels as a PDF, one per parcel, A6 or four on an A4 sheet: our own layout with a Code 128 of the tracking number, not a carrier's label. A carrier that scans its own label needs that one: downloadCarrierLabels, where its API is connected.

Nástroj MCP: `print-shipment-labels`

### Tělo požadavku

`ids` string\[\] povinné

`size` "A6" | "A4"

A6: one label a page, for a label printer. A4: four labels on a sheet.

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl -X POST https://api.damedoklad.cz/v1/shipments/labels \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/shipments/labels', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/shipments/labels",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
content = response.content
```

## Print a posting report (podací arch) of shipments: our own layout listing what goes out, not a form of a carrier

POST `/v1/shipments/postal-report`

Print a posting report (podací arch) of shipments: our own layout listing what goes out, not a form of a carrier

Nástroj MCP: `print-postal-report`

### Tělo požadavku

`ids` string\[\] povinné

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl -X POST https://api.damedoklad.cz/v1/shipments/postal-report \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/shipments/postal-report', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "ids": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/shipments/postal-report",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "ids": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
content = response.content
```

## Read a CSV of shipment statuses from a carrier. Generic: a header row with a shipment or tracking number column and a status column

POST `/v1/shipments/status-import`

Read a CSV of shipment statuses from a carrier. Generic: a header row with a shipment or tracking number column and a status column. Each row answers on its own. A status worded in a way we do not know is kept as text and changes nothing. No carrier publishes one status file format we could read, so columns go by name, not by carrier.

Nástroj MCP: `import-shipment-status`

### Tělo požadavku

`csv` string povinné max 5000000 chars

CSV with a header row: a shipment number or tracking number column, and a status column.

### Odpověď · 200

`results` object\[\] povinné

`id` string

`ok` boolean povinné

`error` null | string

`code` null | string

`number` null | string

`stockDocumentId` null | string

`documentId` null | string

`status` string

`contactName` null | string

`name` null | string

`to` string

`amountHaler` integer | null

`movementId` null | string

`row` integer

`recognised` boolean

`shipmentId` string

`trackingNumber` null | string

`total` integer povinné

`succeeded` integer povinné

`failed` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/shipments/status-import \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "csv": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/shipments/status-import', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "csv": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/shipments/status-import",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "csv": "string"
    },
)
data = response.json()
```

## Send an advance to a supplier for approval, or again after a rejection: to one approver (one click, the default) or through a scenario of several in order

POST `/v1/supplier-advances/{id}/approval`

Send an advance to a supplier for approval, or again after a rejection: to one approver (one click, the default) or through a scenario of several in order

Nástroj MCP: `request-supplier-advance-approval`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`approverId` string | null

ID of the approver.

`scenarioId` string | null

ID of the scenario.

`comment` string | null

### Odpověď · 201

`id` string povinné

`documentKind` null | string povinné

`receivedInvoiceId` null | string povinné

`supplierAdvanceId` null | string povinné

`status` string povinné

`approverId` null | string povinné

`approverName` null | string povinné

`comment` null | string povinné

`decidedById` null | string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`createdAt` string povinné date-time

`invoice` null | object povinné

`id` string povinné

`number` null | string povinné

`supplierDocumentNumber` null | string povinné

`contactName` null | string povinné

`issueDate` null | string povinné date

`dueDate` null | string povinné date

`totalHaler` integer | null povinné

`currency` null | string povinné

`status` string povinné

`scenarioId` null | string

`currentStep` integer | null

`stepCount` integer | null

`salesDocumentId` null | string

`inboxDocumentId` null | string

`waitingOn` object\[\]

`id` string povinné

`name` null | string povinné

`kind` string povinné

`history` object\[\]

`action` string povinné

`actorName` null | string povinné

`comment` null | string povinné

`at` string povinné date-time

`steps` object\[\]

`position` integer | null povinné

`approverId` null | string povinné

`approverName` string povinné

`status` string povinné

`decidedByName` null | string povinné

`decidedAt` null | string povinné date-time

`comment` null | string povinné

`stage` integer

`mode` string

`kind` string

`decidedForName` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/supplier-advances/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approval \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "approverId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "scenarioId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "comment": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/supplier-advances/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approval', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "approverId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "scenarioId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "comment": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/supplier-advances/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approval",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "approverId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "scenarioId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "comment": "string"
    },
)
data = response.json()
```

## List tasks across all contacts, soonest first: assignedTo=me for my own or a colleague, checker=me and toCheck=true for what waits for my check

GET `/v1/tasks`

List tasks across all contacts, soonest first: assignedTo=me for my own or a colleague, checker=me and toCheck=true for what waits for my check

Nástroj MCP: `list-tasks`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`assignedTo` string max 40 chars

\`me\`, a user ID, or left out for everyone.

`open` "true" | "false"

`checker` string max 40 chars

\`me\` or a user ID: tasks this person checks.

`toCheck` "true" | "false"

true: only finished tasks still waiting for their checker.

### Odpověď · 200

`data` object\[\] povinné

`object` "contact\_activity" povinné

`id` string povinné

`contactId` string povinné

`kind` string povinné

`subject` string povinné

`body` null | string povinné

`occurredOn` string povinné date

`dueOn` null | string povinné date

`done` boolean povinné

`doneAt` null | string povinné date-time

`assignedToId` null | string povinné

`createdAt` string povinné date-time

`parentId` null | string

`checkerId` null | string

`checked` boolean

`checkedAt` null | string date-time

`waitingForCheck` boolean

`recurrence` null | string

`recurrenceUntil` null | string date

`nextTaskId` null | string

`remindDaysBefore` integer | null

`contactName` null | string

`assignedToName` string

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/tasks \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/tasks', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/tasks",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```
