Přeskočit na hlavní obsah
Základní použití REST API

Využití REST API pro základní scénář vytvoření, odeslání a stažení dokončených obálek.

Klára Šleisová avatar
Autor: Klára Šleisová
Aktualizováno před více než měsícem

DigiSign je API-driven aplikace, celkem má přes 150 endpointů. Tento článek se zaměřuje na postup odeslání obálky k podpisu a následné stažení podepsaných dokumentů.

Pomocné odkazy pro práci s API

OpenAPI dokumentace

https://api.digisign.org/api/docs.json (lze využít k importu do Postman kolekce)

API server

https://api.digisign.digital.cz testing (sandbox, pro zřízení test účtu si napište na podpora@digisign.cz)

PHP SDK knihovna pro zjednodušení práce s API

Stav služeb a incidenty

Poznámka: API bere rozdílně, pokud atribut v objektu vynecháte a pokud jej pošlete s hodnotou "null".

Vynechání atributu v objektu znamená že hodnotu nechcete upravovat tzn. zůstane tak jak byla. V případě vytvoření to pak znamená že se hodnoty nastaví podle výchozího nastavení.

Poslání atributu s hodnotou "null" vyjadřuje že hodnotu přímo chcete vynulovat. Pokud atribut není nulovatelný tak API vrátí Bad Request.

tl;dr (ve zkratce)

#

Krok

Endpoint

1

Autentizace

/api/auth-token

2

Vytvoření obálky

/api/envelopes

3

Přidání dokumentů

/api/files

/api/envelopes/{envelope}/documents

4

Přidání příjemců

/api/envelopes/{envelope}/recipients

5

Přidání podpisových značek

/api/envelopes/{envelope}/tags

/api/envelopes/{envelope}/tags/by-placeholder

6

Odeslání obálky

/api/envelopes/{envelope}/send

7

Získání podepsaných dokumentů

/api/envelopes/{envelope}/download

Vytvoření API klíče

Pro práci s DigiSign API je třeba si nejprve vygenerovat API klíč. Toto provedete v selfcare Nastavení> Pro vývojáře> API klíče. Kliknutím na tlačítko Nový API klíč se otevře dialogové oko pro zadání údajů a práv klíče.

U klíče je možné nastavit různá oprávnění, podle toho, jaké akce mu chcete povolit provádět:

Provolávání pod registrovaným API klíčem je také možné omezit na konkrétní IP adresy či rozsahy. Pokud by tedy zkoušel provolat endpoint pod jinou IP, volání by skončilo chybou.

Po kliknutí na Vytvořit API Klíč se zobrazí hodnoty:

  • accessKey

  • secretKey

Tyto hodnoty si uložte, jelikož je nebude možné již znovu zobrazit a slouží pro autentizaci viz následující krok.

Autentizace

DigiSign API používá bearer autentizační schéma (RFC 6750).

Na endpointu /api/auth-token vyměňte accessKey/secretKey za token.

POST /api/auth-token
{
"accessKey": "ETy2b51BU2g7bQLuum",
"secretKey": "2C4lorbh0kw5zUVcPiGdK8EFLBPDYHC0brpzOsba1hNUKnQW93aeAIwzU0"
}

Odpověď:

{
"token": "eyJ0eXAi...Keeq-bJVYmQ",
"exp": 1682572132,
"iat": 1682485732
}

Token poté posílejte ve všech následných voláních v hlavičce Authorization.

Authorization: Bearer eyJ0eXAi...Keeq-bJVYmQ

Vytvoření obálky

Pro vytvoření konceptu obálky nejsou povinná žádná data, nicméně pro její odeslání je potřeba definovat name a emailBody.

POST /api/envelopes
{
"name": "Dokumenty k podpisu",
"emailBody": "Dobrý den,<br>posílám vám dokumenty k podpisu.",
"emailBodyCompleted": "Posílám vám podepsané dokumenty ke stažení."
}

emailBody - text může obsahovat následující HTML tagy a[href|title],br,u,em,ul,ol,li,strong,i,b ...pokud text žádné html tagy neobsahuje převádí se newline (\n) znaky na <br>

V odpovědi získáme ID obálky, které budeme potřebovat v následujících krocích.

{
"id": "3974d252-b027-46df-9fd8-ddae54bc9ab9",
"status": "draft",
"name": "Dokumenty k podpisu",
"emailBody": "Dobrý den,<br>posílám vám dokumenty k podpisu."
// ...
}

Odpověď zároveň obsahuje i klíče _actions a _links (HATEOAS) - tj odkazy a akce, které jsou na daném zdroji možné. Lze je použít k získání URL pro následující kroky.

Přidání dokumentů

Nahrání souborů

Pro přidání dokumentu do obálky je potřeba nejprve nahrát soubor.

Endpoint /api/files je obecný pro jakýkoliv typ souboru a předpokládá mulitipart/form-data request s částí file.

POST /api/files
Content-Type: multipart/form-data; boundary=----foobar
Content-Length: 834
----foobar
Content-Disposition: form-data; name="file" filename="doc.pdf"
Content-Type: application/pdf
61 CF 89 62 // file binary data
----foobar

V odpovědi získáme ID souboru nebo přímo IRI (identifikátor zdroje) který je v objektu _links pod klíčem self.

{
"originalName": "doc.pdf",
"id": "fc5ecf5a-2d91-463a-91cc-c9bc4b11b371",
"_links": {
"self": "/api/files/fc5ecf5a-2d91-463a-91cc-c9bc4b11b371"
}
}

Přidání dokumentů

Nově nahraný soubor poté přidáme do obálky jako Dokument společně s názvem, který se bude zobrazovat uživateli.

POST /api/envelopes/3974d252-b027-46df-9fd8-ddae54bc9ab9/documents

{
"file": "/api/files/fc5ecf5a-2d91-463a-91cc-c9bc4b11b371",
"name": "Smlouva o smlouvě minulé"
}

Z odpovědi budeme potřebovat IRI dokumentu pro další kroky.

Přidání příjemců

Příjemce může mít jednu z rolí:

role

úloha

popis

signer

Podepisující

Dostane email s žádostí o podpis, podepisuje na svém vlastním zařízení.

in_person

Podepisující osobně

Provede podepisující relaci osobně s uživatelem DigiSign účtu (zprostředkovatelem) například přes naši mobilní aplikaci.

cc

V kopii pro čtení

Po dokončení mu přijde kopie hotové obálky.

approver

Schvalovatel

Dostane email s žádostí o schválení. Obálku následně může schválit, či zamítnout.

autosign

Automatický podpis

Příjemce je automaticky podepsán, ihned jakmile je na řadě. Podmíněno vlastní firemní pečetí, typem podpisu simple a žádným ověřením.

semi_autosign

Poloautomatický podpis

Totožné jako autosign s rozdílem, že k provedení podpisu dojde na základě provolání endpointu /api/envelopes/{envelope}/recipients/{recipient}/autosign

Pro odeslání obálky je nutné přidat alespoň jednoho podepisujícího příjemce.

POST /api/envelopes/3974d252-b027-46df-9fd8-ddae54bc9ab9/recipients
{
"role": "signer",
"name": "John Doe",
"email": "john.doe@example.com",
"mobile": "+420111222333"
}

Z odpovědi nás zase bude zajímat IRI příjemce pro další krok.

Podpisové/schvalovací značky

Podpisová značka definuje místo na dokumentu, kam se má podepisující podepsat.

Lze ji přidat pouze pro podepisujícího příjemce na podepisovatelný dokument.

Podepisující příjemce: příjemce s rolí signer, in_person, autosign, semi_autosign

Podepisovatelný dokument: soubor dokumentu je PDF

Schvalovací značka definuje místo na dokumentu, kam bude vloženo schvalovací razítko.

Lze ji přidat pouze pro schvalovatele na podepisovatelný dokument.

Schvalovatel: příjemce s rolí approver

Podepisovatelný dokument: soubor dokumentu je PDF

Pozici značky lze definovat dvěma způsoby:

Umístění zástupným slovem (placeholder)

Pro určení umístění značky se použije slovo (dále placeholder), které DigiSign v celém PDF vyhledá a určí si podle něj stránku a souřadnice. Hodí se pro případy, kdy je dokument generovaný a není předem jasné přesné umístění značky.

Značka se umístí na první výskyt tohoto placeholderu. Je proto v případě více podpisů nutné myslet na unikátnost. Placeholder může obsahovat pouze malé a velké znaky bez diakritiky, čísla, pomlčku, podtržítko a závorky. (regex ^[\w\-\{\}\[\]\(\)=\,`]*$)

Příklady validních placeholderů:

  • podpis-123456

  • {signature897}

  • [sign_tag_654654]

  • {sign.tag=`2312}

Lze použít text libovolné velikosti a barvy, takže placeholder může být klidně bílý na bílém pozadí - pro podepisujícího tedy neviditelný.

Placeholder je poté potřeba poslat při vytváření pole do dokumentu, stránka a x,y souřadnice v takovém případě musí být null, ty si API doplní samo. Pokud se placeholder nepodaří v dokumentu najít API vrátí validační chybu.

POST /api/envelopes/3974d252-b027-46df-9fd8-ddae54bc9ab9/tags
{
"document": "/api/envelopes/3974...9ab9/documents/91e7...6de7",
"recipient": "/api/envelopes/3974...9ab9/recipients/9ab9...3974",
"type": "signature",
"placeholder": "podpis-123456",
"positioning": "top_left"
}

Umístění na více výskytů zástupných slov

Pokud potřebujeme vložit podpisové značky na všechny výskyty placeholderu, využíváme následující endpoint:

POST /api/envelopes/3974d252-b027-46df-9fd8-ddae54bc9ab9/tags/by-placeholder
{
"document": "/api/envelopes/3974...9ab9/documents/91e7...6de7",
"recipient": "/api/envelopes/3974...9ab9/recipients/9ab9...3974",
"type": "signature",
"placeholder": "podpis-123456",
"positioning": "top_left"
}

Pozicování značky

Klíčem positioning lze při vytváření značky určit jakým způsobem se značka umístí vůči placeholderu. Může nabývat devíti hodnot. Příklad:

top_left

Levý horní roh značky bude umístěn na levý horní roh slova.

center

Střed značky bude umístěn na střed slova.

bottom_center

Střed spodní strany značky bude umístěn na střed spodní strany slova.

Obdobně pro všechny ostatní hodnoty:

top_left, bottom_left, middle_left, top_right, bottom_right, middle_right, top_center, bottom_center, center

Umístění souřadnicemi

Pro určení pozice souřadnicemi se používají tyto atributy:

page

Stránka dokumentu (začíná od 1)

xPosition

Horizontální odsazení od levého horního rohu stránky

yPosition

Vertikální odsazení od levého horního rohu stránky

Souřadnice jsou definovány v jednotkách “points” v přepočtu 72 points/inch.

Narozdíl od výchozího souřadnicového systému PDF je pozice počítána od levého horního rohu.

Na definované pozici bude ve výsledném dokumentu levý horní roh podpisové značky, která má velikost 55x21mm

type určuje typ značky. U podepisujících je povinná podpisová značka:

POST /api/envelopes/3974d252-b027-46df-9fd8-ddae54bc9ab9/tags
{
"document": "/api/envelopes/3974...9ab9/documents/91e7...6de7",
"recipient": "/api/envelopes/3974...9ab9/recipients/9ab9...3974",
"type": "signature",
"page": 2,
"xPosition": 250,
"yPosition": 375
}

signature

podpisová značka

approval

schvalovací značka

text

input pro text

document

značka pro vložení fotek dokladu

attachment

značka pro vložení přílohy

checkbox

zaškrtávací pole

radio_button

přepínač

date_of_signature

datum podpisu

Odeslání obálky

Pro odeslání obálky musí být splněna následující kritéria:

  • stav obálky musí být koncept (draft)

  • musí mít alespoň jeden podepisovatelný dokument

  • musí mít alespoň jednoho podepisujícího nebo schvalujícího příjemce

  • musí být definovaný předmět a tělo emailu (name, emailBody)

  • všichni podepisující příjemci musí mít definovanou podpisovou značku na nějakém dokumentu

  • expirace musí být v budoucnosti (pro případ, že byla manuálně nastavena)

Pokud je vše v pořádku, tak odeslání rozešle všem podepisujícím email s žádostí o podepsání

POST /api/envelopes/3974d252-b027-46df-9fd8-ddae54bc9ab9/send

Získání podepsaných dokumentů

Ve chvíli kdy poslední podepisující v obálce dokončí podpisovou relaci se obálka dokončí a tím se všem příjemcům rozesílá kopie podepsaných dokumentů ke stažení.

Pro získání podepsaných dokumentů přes API lze použít endpoint

GET /api/envelopes/3974d252-b027-46df-9fd8-ddae54bc9ab9/download?output=separate

Výstup je konfigurovatelný pomocí query parametrů:

parametr

hodnota

popis

output

separate

vrátí ZIP se všemi soubory

combined

vrátí všechny PDF soubory spojené do jednoho

only_log

vrátí pouze Auditní log

include_log

true

Auditní log bude součástí

false

Auditní log nebude součástí

document_name_id

true

názvy souborů budou dle ID dokumentu

př: fe6603a5-3f85-49af-a961-7617002926cb.pdf

false

názvy souborů podle názvu dokumentu

př: smlouva-o-smlouve-minule.pdf

Dokumenty lze získat i jednotlivě pomocí volání konkrétních endpointů:

GET /api/envelopes/3974...9ab9/documents/91e7...6de7/download

Webhooky

Webhooky umožňují nastavit si vlastní URL, kterou DigiSign provolá ve chvíli, kdy nastane určitá událost. Toto stačí nastavit jednou a URL bude volána pro všechny následné události. Webhooky tedy využijete zejména pro získávání informací o aktualizaci stavů entit.

Více k použití webhooků viz samostatný článek.

Dostali jste odpověď na svou otázku?