Hændelser med en konkret betydning
Arbejdsrum, medlemsændringer, apprevisioner, reviewbeslutninger, credentialudstedelse og kundegrants har forskellige hændelser. En samlet “opdateret”-tekst er ikke nok til at forstå, hvad der ændrede sig.
Partner-API'et gemmer revisions- og reviewhistorik og registrerer relevante kontrol- og gatewayhandlinger. Der er serverbaserede begrænsninger på ændring af historikken.
Operation og request
En request er et transportforsøg. En operation er den tilsigtede handling, som kan have flere idempotente transportforsøg. Begge identiteter er nyttige, men de må ikke tælles som samme slags succes.
Kvitteringen forbinder operationen med dens registrerede udfald. Ved et timeout kan udfaldet afklares uden at læse hele kundens hovedbog eller gætte på beløb og beskrivelser.
Proveniens og læsning
Læseoperationerne viser organisationens bogførte posteringer på tildelte konti, produkter og salgsfakturaer. Svarene er eksplicitte projektioner uden bank-, betalings-, afsender-bankkonto- eller Stripe-felter. De er ikke en generel klassifikation af alle Hours-data som bankfri.
En læsning er et øjebliksbillede og kan ændre sig efter senere brugerændringer. Integrationen bør ikke fremstille sin egen indsendelseshistorik som en fuld, live regnskabssandhed.
Hvad der ikke skal logges
Tokens, client secrets, webhookkrypteringsnøgler og komplette følsomme payloads skal ikke være standardlogindhold. Et større logudsnit er ikke automatisk bedre evidens. Det kan skabe en ekstra, mindre kontrolleret kopi af de data, API’et ellers begrænser.
Gem de identiteter, statusser, tidspunkter og beslutningsreferencer, der er nødvendige for at forklare hændelsen. Adgang til interne logs har sin egen rollemodel; en partner ser ikke andre kunders debugoplysninger.
Hvad et bevis kan sige
Et bevis gælder kun den egenskab, det er ført for. En gennemgået kilde viser, hvad der er skrevet. En lokal test viser den navngivne prøve. Først databaseadfærd viser, hvad databasen faktisk gør, og først en prøve på den aktive installation viser, hvad der gælder i produktion.
Disse niveauer kan ikke erstatte hinanden. En mock, der returnerer en succes, beviser ikke en transaktion, og en RLS-linje i SQL beviser ikke, at en fremmed klient bliver nægtet.
Versioner og ændringer
Ændringer i Partner-API'et følger Hours’ arbejdsproces og versionering. Se versionering. Transparens er også at gøre det synligt, når en funktion ikke er tilgængelig.