---
# System prepended metadata

title: '**DOG Signer API** `v1.11.0`'
tags: [DOG]

---

---
tags: DOG
---
# **DOG Signer API** `v1.11.0`
> API slouží pro vytvoření odkazů na dokument pro získání elektronického podpisu zákazníkem a jejich následné uložení do DMS. Pracuje s dokumenty ve formátu PDF. Využívá služby podpisového serveru SignoSoft.





---
## **Změny ve verzích**
### **v1.11.0**
#### **Přidáno**
* Přidaný endpoint `dog://sign/signature/image` pro stažení PNG obrázku podpisu z dokumentu.

### **v1.10.0**
#### **Přidáno**
* Při vytváření dokumentu k podpisu pomocí `dog://sign/document` je přidaný parametr `signer[].inperson` pro možnost podpisu na místě bez emailové adresy.

### **v1.9.0**
#### **Přidáno**
* Upraveno chování `dog://sign/document` u typu podpisu `signer[].type = "token"`. Popsáno níže.

### **v1.8.2**
#### **Přidáno**
* `DOG.dog.debug` aktivuje deep log, který detailně zaznamená kompletní komunikaci do a z DOG. Dále zaznamená i veškerou komunikaci DOGa s externími nástroji. Data jsou párována s klíčem z `intID`. **Upozornění: generuje velké množství diskových dat.**

### **v1.8.1**
#### **Přidáno**
* `dog://sign/document/status` přidání detailu stavu podpisů na dokumentu
* Přidány diagramy do dokumentace

### **v1.8.0**
#### **Přidáno**
* `dog://sign/document` přidání více typů dokumentů `signer[].type` ("bio", "system", "token")
#### **Odebráno**
* `dog://sign/document` odebrání `signer[].system`, nahrazeno `signer[].type = "system"`





---
### **Postup podpisu dokumentu pomocí dotazování**
1. Nahrání dokumentu s metadaty (definice podpisu, PDF soubor) (sign/document)
1. Opakované volání na stav dokumentu (sign/document/status)
1. Stažení dokumentu (sign/document/download)

### **Postup podpisu dokumentu pomocí callback**
1. Nahrání dokumentu s metadaty (definice podpisu, PDF soubor, endpoint pro callback)
1. Pokud dojde k podpisu dokumentu, je na callback endpoint zasláno potvrzení s odkazem na soubor

### **Umístění API**
#### **TEST** prostředí
* Lokální síť: https://dog.test.ux.bee.corp/api/v1
* Externí zóna: https://apitest.bohemiaenergy.cz/dog
#### **PROD** prostředí
* Lokální síť: https://dog.bee.corp/api/v1
* Externí zóna: https://api.bohemiaenergy.cz/dog

### **Ověření přístupu k API**
Ověření je řešeno pomocí `API-KEY` vloženého do hlavičky
* `Authorization: Bearer <API-KEY>`

V případě použití přístupu z externí zóny, je nutné ještě navíc přístupový `PROXY-KEY` pro `Proxy` umístěný do hlavičky
* `X-APP-KEY: <PROXY-KEY>`

### **Vysvětlivky**
* ==*== - povinné položky
* [color=#ff4500] - další informace na konci dokumentu v Příloze





---
## **Scénáře průběhu komunikace**
### **s uložením do DMS a použitím callback**
```sequence
App->DOG Signer: dog://sign/document
DOG Signer->DMS: Uložení dokumentu
DMS->DOG Signer: Vrácení ID 
DOG Signer->SignServer: Registrace dokumentu k podpisu
SignServer->DOG Signer: Vrácení odkazů na podpis
DOG Signer->App: Vrácení Tokenu, odkazů a DMS ID

SignServer->DOG Signer: Callback při podpisu všech podpisů
DOG Signer->SignServer: Kontrola podpisů a žádost o podpis systémových
SignServer->DOG Signer: Potvrzení a předání podepsaného dokumentu
DOG Signer->DMS: Uložení dokumentu
DMS->DOG Signer: Vrácení Verze
DOG Signer->App: dog://sign/callback
```

V `dog://sign/callback` je pak vráceno ID dokumentu v DMS

### **bez uložení do DMS a s použitím callback**
```sequence
App->DOG Signer: dog://sign/document
DOG Signer->SignServer: Registrace dokumentu k podpisu
SignServer->DOG Signer: Vrácení odkazů na podpis
DOG Signer->App: Vrácení Tokenu a odkazů

SignServer->DOG Signer: Callback při podpisu všech podpisů
DOG Signer->SignServer: Kontrola podpisů a žádost o podpis systémových
SignServer->DOG Signer: Potvrzení a předání podepsaného dokumentu
DOG Signer->App: dog://sign/callback
```

V `dog://sign/callback` je vrácen soubor v `BASE64`

### **s uložením do DMS a bez použití callback**
```sequence
App->DOG Signer: dog://sign/document
DOG Signer->DMS: Uložení dokumentu
DMS->DOG Signer: Vrácení ID 
DOG Signer->SignServer: Registrace dokumentu k podpisu
SignServer->DOG Signer: Vrácení odkazů na podpis
DOG Signer->App: Vrácení Tokenu, odkazů a DMS ID

SignServer->DOG Signer: Callback při podpisu všech podpisů
DOG Signer->SignServer: Kontrola podpisů a žádost o podpis systémových
SignServer->DOG Signer: Potvrzení a předání podepsaného dokumentu
DOG Signer->DMS: Uložení dokumentu
DMS->DOG Signer: Vrácení Verze

App->DOG Signer: dog://sign/document/status
DOG Signer->SignServer: Ověření stavu dokumentu
SignServer->DOG Signer: Potvrzení stavu dokumentu
DOG Signer->App: Potvrzení stavu dokumentu
```

Protože volání callback ze SignServeru může být zpožděno a protože proces podpisu systémových podpisů může trvat několik vteřin je nutné aby před stažení dokumentu z DMS proběhlo ověření, že je dokument již podepsán a správně uložen.
Pokud je stav `SIGNED`, tak je nová verze dokumentu pod ID v DMS. V případě `NOT_SIGNED` je nutné počkat a kontrolovat stav v pravidelných intervalech. 

### **bez uložení do DMS a bez použití callback**
```sequence
App->DOG Signer: dog://sign/document
DOG Signer->SignServer: Registrace dokumentu k podpisu
SignServer->DOG Signer: Vrácení odkazů na podpis
DOG Signer->App: Vrácení Tokenu a odkazů

SignServer->DOG Signer: Callback při podpisu všech podpisů
DOG Signer->SignServer: Kontrola podpisů a žádost o podpis systémových
SignServer->DOG Signer: Potvrzení provedení podpisu

App->DOG Signer: dog://sign/document/status
DOG Signer->SignServer: Ověření stavu dokumentu
SignServer->DOG Signer: Potvrzení stavu dokumentu
DOG Signer->App: Potvrzení stavu dokumentu

App->DOG Signer: dog://sign/document/download
DOG Signer->SignServer: Žádost o dokument
SignServer->DOG Signer: Vrácení dokumentu
DOG Signer->App: Vrácení dokumentu
```
Protože volání callback ze SignServeru může být zpožděno a protože proces podpisu systémových podpisů může trvat několik vteřin je nutné aby před stažení dokumentu proběhlo ověření, že je dokument již podepsán a je tedy možné jej stáhnout.


---
## **Způsob zpracování chyb**

#### **V případě jakékoliv chyby je vráceno například:**
```json=
{
    "intID": "b59fb26d-89df-4fea-9560-0dc3379eda82",
    "response": {
        "error": {
            "code": "MISSING_MANDATORY_DATA",
            "message": "Missing mandatory nodes: entity",
            "data": {}
        }
    }
}
```
#### **Popis:**
* **intID** `string` - interní ID DOG, pod kterým je provedeno zalogování požadavku
* **response** `object` - objekt s tělem odpovědi
  * **error** `object` - objekt s tělem chyby
    * **code** `string` - označení chyby, strojově zpracovatelný kód
    * **message** `string` - doplňující popis chyby, většinou předávaná hodnota z dalších systémů nebo lidsky čitelná podoba chyby
    * **data** `object` - další strojově zpracovatelné detaily chyby

### **Seznam kódů**

| Code                        | Message                                | Data | Popis |
| --------------------------- | -------------------------------------- |:----:| ----- |
| `INVALID_INPUT_JSON`        | Chyba z parseru                        | -    | Vstupní data nejsou validní JSON formát |
| `MISSING_MANDATORY_DATA`    | List chybějících polí vstupních dat    | -    | Kontrola vstupních dat, kontrola povinných položek a jejich struktury, případně validita stupních dat |
| `INVALID_INPUT_FILE_FORMAT` |                                        | -    | Chyba MIME TYPE vstupních souborů |
| `SIGNOSOFT_INTERNAL_ERROR`  | Přeposlaná chyba z podpisového serveru | -    | Vnitřní chyba na straně podpisového serveru |
| `DMS_INTERNAL_ERROR`        | Přeposlaná chyba z DMS                 | -    | Vnitřní chyba na strane DMS |
| `DB_INTERNAL_ERROR`         |                                        | -    | Vnitřní chyba databáze, chyba není eskalovaná, je logovaná pouze interně |
| `DOG_SIGNER_INTERNAL_ERROR` |                                        | -    | Vnitřní chyba DOG Signer |


**Způsob reportování chyb je u všech endpointů stejný. Dále nebude popisovaný.**






---
## **dog://sign/document**
> Vytvoření a nahrání dokumentu do podpisového server. Založení podpisových polí a vygenerování odkazů pro provedení podpisu.

**Metoda:** `POST` \
**URL:** `/sign/document` \
**Tělo dotazu:** `application/json` \
**Tělo odpovědi:** `application/json`

#### **Příklad:**
```json=
{
    "signer": [
        {
            "firstname": "Jan",
            "secondname": "Novák",
            "mail": "jannovak1980@seznam.cz",
            "expirein": 86400,
            "position": {
                "page": 1,
                "positionX": 137,
                "positionY": 239,
                "width": 60,
                "height": 15
        },
        {
            "type": "token",
            "token": "Zsm5XScO",
            "firstname": "Anna",
            "secondname": "Nováková",
            "mail": "annanovakova1980@seznam.cz",
            "expirein": 86400,
            "position": {
                "positionX": 137,
                "positionY": 200,
                "width": 60,
                "height": 15
        },
        {
            "firstname": "František",
            "secondname": "Novák",
            "expirein": 86400,
            "inperson": true,
            "position": {
                "page": 1,
                "positionX": 137,
                "positionY": 239,
                "width": 60,
                "height": 15
        },
        {
            "type": "system",
            "mail": "rsima@bohemiaenergy.cz",
            "position": {
                "positionX": 50,
                "positionY": 239,
                "width": 60,
                "height": 15
            }
        }
    ],
    "document": {
        "name": "Souhlas s osobními údaji",
        "entity": "BE",
        "web": "https://www.bohemiaenergy.cz/podekovani-za-podpis"
    },
    "callback": "https://app.bee.corp/callback",
    "file": {
        "dms": {
            "name": "",
            "xml": ""
        },
        "data": "data:application/pdf;base64,JVBERi0xLjcKJeLjz9MKMjIgMCBvYmo..."
    }
}
```
#### **Popis:**
* **signer** ==*== `array of objects`- pole objektů jednotlivých podpisů
  * **type** `string` ["bio"] - určuje typ podpisu. `bio` - biometrický podpis. `system` - systémově doplněný podpis, musí být v `signer[].mail` účet, který má vyplněný digitální podpis v podpisovém serveru. `token` - podpis dokumentu pomocí tokenu zaslaného jinou cestou.
  * **token** `string` - heslo, které bude nastaveno a požadováno při podpisu. Pokud nebude předáno bude vygenerováno automaticky a vráceno v odpovědi. Délka hesla bude dle nastavení `DOG.signosoft.settings.token.length` a skládat se bude ze znaků definovaných v `DOG.signosoft.settings.token.chars`. Pokud je předané heslo kratší než `DOG.signosoft.settings.token.length`, tak je vrácena chyba vstupních dat.
  * **firstname** `string` - jméno signatáře (==*== při `signer[].type=="bio" || signer[].type=="token")
  * **secondname** `string` - příjmení signatáře (==*== při `signer[].type=="bio" || signer[].type=="token")
  * **mail** `string` - emailová adresa signatáře, ID signatáře, je na něj odkazováno v odpovědi a je považován za unikátní v rámci podpisového serveru. Musí to být jedna validní emailová adresa. (==*== při `(signer[].type=="bio" || signer[].type=="token") && signer[].inperson = false`)
  * **inperson** `bool` [*false*] - podpis na místě bez nutnosti mít emailovou adresu
  * **expirein** `int` [*259200*] - expirace odkazu v sekundách (now + expirein)
  * **expireat** `timestamp` - expirace odkazu v definovaném čase (unixtimestamp [seconds])
  * **position** ==*== `object` - objekt popisující pozici podpisu
    * **page** `int` [*1*] - číslo stránky umístění podpisu
    * **positionx** `float` - pozice podpisu v [mm] od levého okraje (==*== při `lookup==""`)
    * **positiony** `float` - pozice podpisu v [mm] od horního okraje (==*== při `lookup==""`)
    * **width** ==*== `float` - šířka pole podpisu v [mm]
    * **height** ==*== `float` - výška pole podpisu v [mm]
    * **lookup** `string` - text od kterého bude určena pozice podpisového pole od levého dolního rohu hledaného textu
    * **offsetx** `float` - posunutí podpisového pole od textu v lookup (==*== při `lookup!=""`)
    * **offsety** `float` - posunutí podpisového pole od textu v lookup (==*== při `lookup!=""`)
  * **document** ==*== `object` - definice objektu popisující dokument
    * **name** ==*== `string` - název dokumentu, je zobrazeno v záhlaví stránky při podpisu
    * **entity** ==*== `string` - účetní okruh, povolené hodnoty na základě konfiguračního číselníku `DOG.dog.entity[]` [color=#ff4500]
    * **web** `string` - odkaz na webovou stránku v případě dokončeného podpisu, je předaný parametr docToken s ID dokumentu
  * **callback** `string` - URL endpoint, kam bude zaslaná notifikace o provedeném podpisu (detailně popsáno v sekci dog://sign/callback). Callback adresa musí být **https** s **validním ověřitelným certifikátem**.
  * **file** ==*== `object` - definice objektu se souborem určeným k podpisu
    * **dms** `object` - objekt popisující soubor pro uložení do DMS
      * **name** `string` - název souboru jak bude uložen do DMS
      * **xml** `string` - XML metadata, obsah elementu \<v3:xmlFileAtts> při SOAP volání DMS
    * **data** `string` - data mimetype s base64 souborem, akceptace pouze `application/pdf`

#### **Poznámky:**
**POZOR** `signer[].mail` musá být email s validní (existující) doménou, jinak podpisový server nedovolí podepsat.

Pokud není vyplněno `signer[].expirein` ani `signer[].expireat`, je čas validity odkazu nastaven na aktuální čas plus konfigurační hodnota `DOG.signosoft.settings.expirein`.

Pokud není vyplněno `document.web`, je automaticky doplněno na konfigurační hodnotu `DOG.signosoft.entity.<document.entity>.web`.

V případě, že `file.dms.name` a `file.dms.xml` není vyplněno, nedojde k uložení do DMS. Pro úspěšné uložení do DMS je nutné zajistit XML data od správce DMS a zajistit práva na daný typ souboru pro DOG.

`signer[].inperson` má omezení v případě použití více podpisů. Každý odkaz na podpis je sice unikátní, ale podpis lze provést na všechny místa podpisu z kteréhokoliv odkazu.

#### **Odpověď:**
```json=
{
    "intID": "9e584f06-1b80-4752-bb55-ab6f0df95ea5",
    "response": {
        "document": {
            "token": "dd04d303-fddb-4e6d-b6dc-7e5f52b52e37_1592341833031"
        },
        "links": [
            {
                "bioId": "f91a27a41a7b76dc2caa1aed1f71bb0ccbc4f87716bb4680177...",
                "signer": "jon.doe@seznam.cz",
                "url": "https://podpis.bohemiaenergy.cz?bioid=f91a27a41a7b76d...",
                "validTo": 1592428233,
                "token": "Zsm5XScO"
            }
        ],
        "file": {
            "dms": {
                "id": 3367441,
                "version": 1
            }
        }
    }
}
```
#### **Popis:**
* **intID** `string` - interní ID DOG, pod kterým je provedeno zalogování požadavku
* **response** `object` - objekt s tělem odpovědi
  * **document** `object` - objekt s vlastnostmi dokumentu
    * **token** `string` - unikátní identifikátor dokumentu v rámci podpisového serveru
  * **links** `array of objects` - pole s vytvořenými odkazy k podpisu pro jednotlivé signatáře
    * **bioId** `string` - identifikátor podpisu, použito pro `dog://sign/link/*`
    * **signer** `string` - email signatáře, shodný s signer[].mail ze vstupních dat
    * **url** `string` - odkaz k podpisu dokumentu
    * **validTo** `timestamp` - platnost odkazu do (unixtimestamp [seconds])
    * **token** `string` - pokud byl podpis definován `signer[].type=="token"`, tak bude vráceno zadané heslo pomocí `signer[].token` nebo automaticky vygenerované
  * **file** `object` - objekt souboru
    * **dms** `object` - objekt souboru v DMS
      * **id** `int` - ID DMS souboru
      * **version** `int` - Verze souboru v DMS





---
## **dog://sign/document/delete**
> Vymazání dokumentu a na něj navázané odkazy pro podpis. Lze smazat pouze dokument, který nebyl podepsaný nebo byl částečně podepsaný.

**Metoda:** `POST` \
**URL:** `/sign/document/delete` \
**Tělo dotazu:** `application/json` \
**Tělo odpovědi:** `application/json`

#### **Příklad:**
```json=
{
    "document": {
        "token": "4c6cb873-c9ab-4c24-ba65-a60ae31db33b_1591898899817"
    }
}
```
#### **Popis:**
* **document** `object` - objekt s vlastnostmi dokumentu
  * **token** `string` - token z volání `dog://sign/document` z `response.document.token`

#### **Odpověď:**
```json=
{
    "intID": "f63924ae-1a4f-4502-ac70-3fe6d9458e7f",
    "response": {
        "status": "DELETED"
    }
}
```
#### **Popis:**
* **intID** `string` - interní ID DOG, pod kterým je provedeno zalogování požadavku
* **response** `object` - objekt s tělem odpovědi
  * **document** `object` - objekt s vlastnostmi dokumentu
    * **status** `string` - stav provedení smazání dokumentu a na něj navázaných vlastností

#### **Poznámky:**
Dochází pouze ke smazanání dokumentu na straně podpisového serveru. Nedojde ke smazání z DMS.





---
## **dog://sign/document/status**
> Zjištění stavu dokumentu. V případě, že došlo k selhání při předání informace pomocí callback je možné pomocí tohoto endpointu zjistit stav dokumentu. Vhodné volat v nejnutnějších případech pro snížení zbytečné zátěže podpisového serveru.

**Metoda:** `POST` \
**URL:** `/sign/document/status` \
**Tělo dotazu:** `application/json` \
**Tělo odpovědi:** `application/json`

#### **Příklad:**
```json=
{
    "document": {
        "token": "4c6cb873-c9ab-4c24-ba65-a60ae31db33b_1591898899817"
    }
}
```
#### **Popis:**
* **document** `object` - objekt s vlastnostmi dokumentu
  * **token** `string` - token z volání `dog://sign/document` z `response.document.token`

#### **Odpověď:**
```json=
{
    "intID": "56b686cd-3133-47b7-b368-e53446604618",
    "response": {
        "status": "NOT_SIGNED",
        "missing": [
            {
                "mail": "jannovak@seznam.cz",
                "type": "bio"
            },
            {
                "mail": "rsima@bohemiaenergy.cz",
                "type": "system"
            }
        ]
    }
}
```
#### **Popis:**
* **intID** `string` - interní ID DOG, pod kterým je provedeno zalogování požadavku
* **response** `object` - objekt s tělem odpovědi
  * **document** `object` - objekt s vlastnostmi dokumentu
    * **status** `string` - stav dokumentu, vrácené hodnoty mohou být **SIGNED** nebo **NOT_SIGNED**
    * **missing** `array of objects` - pole se seznamem chybějících podpisů
      * **mail** `string` - Email signatáře
      * **type** `string` - Typ podpisu, odpovídá typům z `dog://sign/document` z `signer[].type` ("bio", "system", "token")





---
## **dog://sign/document/download**
> Stažení dokumentu po provedeném podpisu. Není nutné používat v případě, že je použit callback a je použito DMS pro práci se soubory.

**Metoda:** `POST` \
**URL:** `/sign/document/download` \
**Tělo dotazu:** `application/json` \
**Tělo odpovědi:** `application/json`

#### **Příklad:**
```json=
{
    "document": {
        "token": "4c6cb873-c9ab-4c24-ba65-a60ae31db33b_1591898899817"
    }
}
```
#### **Popis:**
* **document** `object` - objekt s vlastnostmi dokumentu
  * **token** `string` - token z volání `dog://sign/document` z `response.document.token`

#### **Odpověď:**
```json=
{
"intID": "845414a7-f1f9-4709-8e09-bfe44500cb5a",
    "response": {
        "file": {
            "data": "data:application/pdf;base64,JVBERi0xLjcKJfbk/N8KMSAwIG9ia..."
        }
    }
}
```
#### **Popis:**
* **intID** `string` - interní ID DOG, pod kterým je provedeno zalogování požadavku
* **response** `object` - objekt s tělem odpovědi
  * **document** `object` - objekt s vlastnostmi dokumentu
    * **file** `object` - objekt se souborem
      * **data** `string` - data mimetype base64 soubor





---
## **dog://sign/link/update**
> Aktualizace času expirace odkazu na podpis u dokumentu.

**Metoda:** `POST` \
**URL:** `/sign/link/update` \
**Tělo dotazu:** `application/json` \
**Tělo odpovědi:** `application/json`

#### **Příklad:**
```json=
{
    "link": {
        "bioId": "f91a27a41a7b76dc2caa1aed1f71bb0ccbc4f87716bb4680177b4450b0f...",
        "expireIn": 86400
    }
}
```
#### **Popis:**
* **link** ==*== `object` - objekt s definicí podpisu
  * **bioId** ==*== `string` - token z `response.links[].bioId` z volání `dog://sign/document`
  * **expireIn** ==*== `int` [*259200*] - expirace odkazu v sekundách (now + expirein)
  * **expireAt** ==*== `timestamp` - expirace odkazu v definovaném čase (unixtimestamp [seconds])

#### **Poznámky:**
Je nutné vyplnit expireIn nebo expireAt. V případě obou má prioritu expireIn.

#### **Odpověď:**
```json=
{
    "intID": "a8039fdf-a4e0-4757-befd-09a30b77bf3f",
    "response": {
        "link": {
            "bioId": "f91a27a41a7b76dc2caa1aed1f71bb0ccbc4f87716bb4680177b445...",
            "signer": "jannovak@seznam.cz",
            "validTo": 1592428279
        }
    }
}
```
#### **Popis:**
* **intID** `string` - interní ID DOG, pod kterým je provedeno zalogování požadavku
* **response** `object` - objekt s tělem odpovědi
  * **link** `object` - objekt s vlastnostmi podpisu
    * **bioId** `string` - bioId token podpisu pro potvrzení
    * **signer** `string` - email login signatáře pro potvrzení
    * **validTo** `timestamp` - časové razítko do kdy platí podpis (unixtimestamp [seconds])





---
---
## **dog://sign/signature/image**
> Stažení obrázků podpisů z dokumentu. Stahuje obrázky pouze pokud na dokumentu existuje finalizovaný podpis. Jinak vrací prázdný objekt.

**Metoda:** `POST` \
**URL:** `/sign/signature/image` \
**Tělo dotazu:** `application/json` \
**Tělo odpovědi:** `application/json`

#### **Příklad:**
```json=
{
    "document": {
        "token": "4c6cb873-c9ab-4c24-ba65-a60ae31db33b_1591898899817"
    }
}
```
#### **Popis:**
* **document** `object` - objekt s vlastnostmi dokumentu
  * **token** `string` - token z volání `dog://sign/document` z `response.document.token`

#### **Odpověď:**
```json=
{
    "intID": "56b686cd-3133-47b7-b368-e53446604618",
    "response": {
        "images": [
            {
                "mail": "jannovak1980@seznam.cz",
                "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEU..."
            }
        ]
    }
}
```
#### **Popis:**
* **intID** `string` - interní ID DOG, pod kterým je provedeno zalogování požadavku
* **response** `object` - objekt s tělem odpovědi
  * **images** `array of objects` - pole se seznamem obrázků u finalizovaných podpisů
    * **mail** `string` - Email signatáře
    * **image** `string` - PNG obrázek podpisu
<!--




---
## **dog://sign/link/delete**
> Smazání odkazu 

**Metoda:** `POST` \
**URL:** `/sign/link/delete` \
**Tělo dotazu:** `application/json` \
**Tělo odpovědi:** `application/json`

#### **Příklad:**
```json=
{
    "link": {
        "bioId": "f91a27a41a7b76dc2caa1aed1f71bb0ccbc4f87716bb4680177b4450b0f8..."
    }
}
```
#### **Popis:**
* **link** ==*== `object` - objekt s definicí podpisu
  * **bioId** ==*== `string` - token z `response.links[].bioId` z volání `dog://sign/document`

#### **Odpověď:**
```json=
{
    "intID": "521b043e-55d1-4464-a1ee-4cd9bfae050c",
    "response": {
        "status": "LINK_NOT_EXIST"
    }
}
```
#### **Popis:**
* **intID** `string` - interní ID DOG, pod kterým je provedeno zalogování požadavku
* **response** `object` - objekt s tělem odpovědi
  * **status** `string` - popis výsledku smazání podpisu
-->




---
## **dog://sign/callback**
> V případě, že byl v `dog://sign/document` vyplněn callback a dokument je podepsán, tak bude tento odkaz zavolán a bude předán výsledek z podpisového serveru. Callback adresa musí být **https** s **validním ověřitelným certifikátem**.

**Metoda:** `POST` \
**Tělo odpovědi:** `application/json`

#### **Předaná data bez použití DMS:**
```json=
{
    "intID": "845414a7-f1f9-4709-8e09-bfe44500cb5a",
    "document": {
        "token": "c1227e93-3292-4fd4-be5e-09983e5a836d_1591889611773"
    },
    "file": {
        "data": "data:application/pdf;base64,JVBERi0xLjcKJfbk/N8KMSAwIG9iago8P..."
    }
}
```
#### **Popis:**
* **intID** `string` - interní ID DOG, pod kterým je provedeno zalogování požadavku
* **document** `object` - objekt s definicí dokumentu
  * **token** `string` - token z volání `dog://sign/document` z `response.document.token`
* **file** `object` - objekt se souborem
  * **data** `string` - data mimetype base64 soubor

#### **Předaná data při použití DMS:**
```json=
{
    "intID": "845414a7-f1f9-4709-8e09-bfe44500cb5a",
    "document": {
        "token": "c1227e93-3292-4fd4-be5e-09983e5a836d_1591889611773"
    },
    "file": {
        "dms": {
            "id": 3367441,
            "version": 2
        }
    }
}
```
#### **Popis:**
* **intID** `string` - interní ID DOG, pod kterým je provedeno zalogování požadavku
* **document** `object` - objekt s definicí dokumentu
  * **token** `string` - token z volání `dog://sign/document` z `response.document.token`
* **file** `object` - objekt se souborem
  * **dms** `object` - objekt souboru v DMS
    * **id** `int` - ID souboru v DMS
    * **version** `int` - verze souboru v DMS, v případě, že došlo k úspěšnému podpisu dokumentu, tak by verze měla být vždy 2. Verze 1 je soubor před podpisem.

#### **Poznámky:**
V případě, že je v body na callback odpověď, tak je pouze zalogována. Není na ni jakkoliv reagováno.





---
## Přílohy
### Číselník DOG.dog.entity[]
```json=
}
  "entity": {
    "BE": ["BE", "71", "B", "BEE", "bohemiaenergy.cz"],
    "CE": ["CE", "82", "C", "comfortenergy.cz"],
    "XE": ["XE", "81", "X", "X Energie", "xenergie.cz"],
    "3E": ["3E", "100", "E", "3-e.cz"],
    "BD": ["BD", "63", "Z", "BEZ", "bezdodavatele.cz"],
    "SE": ["SE", "72", "S", "SK", "SKE", "slovakiaenergy.sk"],
    "AM": ["AM", "75", "A", "ampermarket.cz"],
    "BPL": ["BPL", "beplan.cz"],
    "ECS": ["ECS", "77", "P", "energie-cs.cz"]
  }
}
```