Når dokumenter begynder i et andet system
Det offentlige API og webhooks. Et token til dit system, en adresse, vi skriver til, når et dokument er klar, og en leveringslog, der viser præcis, hvad din server svarede.
Spørgsmålet, der dukker op ved det andet møde: »integrerer I med vores system?«. Indtil nu var det ærlige svar nej. Nu er svaret dette: du har en portal, et CRM eller et regnskabssystem, hvor handlen allerede findes, og DocuTract kan fungere som en del af det.
Den sjette funktion i bølgen er vejen ud. Et token, dit system kalder os med, en adresse, vi selv skriver til, og en åben beskrivelse af alt derimellem.

Et token, vi ikke kan vise dig to gange
Et token oprettes på skærmen Integrationer: et navn, du kan genkende senere, så du ved, hvilket system der bruger det, og en liste over, hvad det må. Derefter vises det én gang.
Det er ikke glemsomhed, det er sådan, et produkt, der opbevarer en andens nøgle, skal fungere. Vi gemmer kun et hash: at vise tokenet en gang til er noget, selv vi ikke kan, hvilket betyder, at det ikke kan stjæles fra os. Listen gemmer de første tegn, rettighederne og datoen for seneste brug, så det kan ses, hvilket token der er aktivt, og om nogen stadig bruger det.
Tilbagekald slår det fra med det samme. Registreringen af det bliver: at det fandtes, og hvornår det holdt op med at virke, er en del af arbejdsområdets historik, ikke affald.
Rettigheder tjekkes for hver adresse for sig. Et token, der kun må læse skabeloner, får et klart »the documents:write scope is missing«, når det forsøger at oprette et dokument, ikke et tomt »not found«. Vi går ud fra, at det er et levende menneske, der sætter integrationen op, og et svar, der intet forklarer, koster dem en aften.
Hvad API'et kan
Lige så meget, som du kan på skærmen, bare uden skærmen: åbne en sag og uploade scanninger til den, oprette et dokument ud fra en skabelon med værdierne allerede udfyldt, spørge, hvilket stadie det er nået til, hente hver værdi sammen med den scanning, den blev læst fra, og få et kortlivet link til den færdige fil.
Den sidste del er det, der gør denne integration anderledes end de andre. Dit system modtager ikke bare en udfyldt fil, men hver værdi med dens oprindelse: scanningen, feltet, hvor sikker læsningen var. Den samme kilde, som et menneske ser på gennemgangsskærmen, er tilgængelig for kode.
Beskrivelsen af hver adresse og hvert felt genereres ud fra selve koden og offentliggøres åbent, uden token: /api/v1/openapi.json. Dokumentation, du først skal bede om, er dokumentation, som ingen læser.
Webhooks og en ærlig log
Du behøver ikke spørge os, om et dokument er klar. Giv os en adresse, og sæt flueben ved hændelserne: dokument klar, dokument mislykket, sag klar, en uoverensstemmelse fundet, en klient har sendt en fil.
Hver anmodning signeres, og den hemmelighed, der bekræfter signaturen, vises én gang, ligesom tokenet. Hvis din server svarede noget andet eller slet ikke svarede, prøver vi igen: efter et minut, efter fem, efter en halv time, efter to timer og efter ti. Så stopper vi, fordi en integration, som ingen vedligeholder, ikke skal bruge andres ressourcer for evigt.

Og så den del, som alt dette blev skrevet for. Når den anden side siger »vores system har intet modtaget«, står svaret på skærmen: hændelsen, tidspunktet, hvor mange forsøg, hvilken svarkode der kom tilbage, og begyndelsen af svarets indhold. Det kan ses, at det svarede 500 fem gange. Det er ikke et fejlfindingsværktøj for os, det er et svar til din udvikler.
Ved siden af to knapper til den time, hvor en integration stadig er ved at blive sat op. Send test sender en prøveanmodning med det samme uden at vente på en rigtig hændelse, så en modtager kan tjekkes, før der kører rigtigt arbejde igennem den. Prøv igen, ved siden af en mislykket levering, laver ét forsøg mere med det samme og nulstiller ikke historikken: de fire mislykkede forsøg bliver i registreringen, fordi det er sandheden om, hvad denne notifikation kostede.
De grænser, vi sætter for os selv
En webhook sendes kun til https og kun til en offentlig adresse: en adresse inde i et privat netværk afvises både, når den gemmes, og før hvert forsøg, fordi et værtsnavn, der pegede udad i går, kan pege indad i dag. Hastighedsbegrænsningen tæller pr. token i stedet for pr. adresse, så en nabo på den samme server ikke bruger din kvote, og den, der går over den, får et ærligt »kom tilbage om så og så mange sekunder«.
API og webhooks er en del af Team-abonnementet. Hvis et arbejdsområde skifter til et andet abonnement, forbliver det, der allerede er oprettet, synligt og kan tilbagekaldes: nøgler, som ingen kan nå, er værre end en betalt funktion.
Hvad der ikke er med i denne version
Oplægget til denne fase beskrev to dele mere: eksport af et færdigt dokument til Google Drive, OneDrive eller Dropbox og afsendelse til underskrift via DocuSign eller Dropbox Sign. Begge kræver adgangsoplysninger fra de udbydere, som vi ikke har lige nu, og at skrive en integration, der ikke kan testes nogen steder, betyder at udgive uskrevet kode for at være færdig. De bliver i planen som selvstændige versioner.
Hvad der kommer nu
Den syvende og sidste funktion i bølgen er batchgenerering: en liste med halvtreds rækker eller et arkiv med scanninger i stedet for halvtreds ens udfyldninger i hånden, med synligt fremskridt og mulighed for kun at gentage dem, der ikke virkede.
Hele listen står i hvad vi bygger nu, og trin-for-trin-vejledningen til integrationer står i hjælpecentret.
Læs videre
En skabelon ud fra det dokument, du allerede har
Du behøver ikke markere en kontrakt op i hånden for at gøre den til en skabelon. Upload et færdigt dokument, så foreslår DocuTract, hvilke dele der skifter fra klient til klient.
En adgangskode er ikke længere nok
Totrinslogin er live. Tilføj en godkendelsesapp til din konto, så holder en stjålet adgangskode op med at være en vej ind til dine dokumenter. Ejere af arbejdsområder kan kræve det af hele teamet.