Finpilo

External API

Finpilo piedāvā ārējo API, lai integrētu citas sistēmas — grāmatvedības programmatūru, ERP platformas vai pielāgotus iekšējos rīkus — ar jūsu darbvietu.

Šī lapa ir atsauce izstrādātājiem vai integrācijas konsultantiem, kas veido savienojumu starp Finpilo un citu sistēmu. Lai pievienotu sarunvalodas AI asistentu (piemēram, Claude), nevis sistēmu, skatiet AI asistenti. Asistents izmanto tās pašas iespējas ar pierakstīšanos, nevis API atslēgu.

Ko var darīt caur API

  • Sinhronizēt dimensiju vērtības — partnerus, izmaksu centrus, PVN kodus, grāmatvedības kontus — starp Finpilo un jūsu grāmatvedības sistēmu abos virzienos. Partneris ir tāda pati dimensija kā jebkura cita.
  • Lasīt, meklēt un summēt dokumentus. Filtrējiet pēc jebkura lauka un saņemiet summas, skaitus vai vidējos rādītājus pa partneriem, izmaksu centriem vai periodiem, aprēķinātus no jūsu datiem.
  • Augšupielādēt dokumentus un labot to laukus, rindu pozīcijas un dimensiju vērtības.
  • Virzīt dokumentus pa statusiem.
  • Lejupielādēt oriģinālo failu jebkuram dokumentam un aktivizēt nosūtīšanu uz pievienoto grāmatvedības sistēmu.

Ko API atslēga nekad nevar

Dažas lietas pieder cilvēkam ar pieteikšanos, nevis atslēgai, un neviena atļauja tās nepiešķir:

  • Atbildēšana uz apstiprinājumiem. Apstiprinājums ir piešķirts konkrētam cilvēkam.
  • Konfigurācijas labošana — dzīves cikli, darbplūsmas, integrācijas, entītiju lauku iestatījumi.
  • Entītiju izveide vai dzēšana, to lauku iestatījumu maiņa un lietotāju pārvaldība. Atslēga ar pamatdatu rakstīšanas atļauju var atjaunināt esošas entītijas datus.

AI asistents, kas pievienots ar cilvēka pieteikšanos, to var, šī cilvēka lomas robežās — skatiet AI asistenti.

Maršruta izvēle — izlasiet, pirms sagatavojat piedāvājumu

Datus var pārvietot trīs veidos, un šī lapa apraksta tikai pirmo. Nepareizā izvēle maksā dienas darba, ko Finpilo jau dara.

1. Jūsu sistēma izsauc Finpilo (šī lapa). Jūs rakstāt klientu, turat API atslēgu un pēc sava grafika iesūtāt pamatdatus vai izgūstat dokumentus. Piemērots, ja plānotājs ir jūsu sistēmas pusē vai jums jāreaģē uz kaut ko pie sevis.

2. Jūsu sistēma nosūta darbplūsmai. Finpilo iedod jums ienākošo URL un slepeno atslēgu, un jūs nosūtāt saturu — visu partneru reģistru vienā izsaukumā, līdz 10 MB — un darbplūsma to pārveido un ieraksta. Nav jāraksta Finpilo klients. Piemērots, ja jūsu sistēma var izsaukt webhook. Skatiet Darbvietas iestatījumi.

3. Finpilo izsauc jūsu sistēmu pēc grafika. Šo parasti palaiž garām. Darbplūsma ar cron palaidēju izsauc jūsu API, pati iziet cauri jūsu lappusēm (page, offset, cursor vai link-header), prasa tikai ierakstus, kas mainījušies kopš pēdējās veiksmīgās reizes, atrisina jūsu iekšējos ID un ieraksta rindas ar idempotentu upsert. Jums nav jāraksta ne klients, ne plānotājs, ne kursora uzskaite, ne atkārtojumu loģika — jūs atverat lasīšanas galapunktu, un darbvietas administrators konfigurē pārējo.

Ja uzdevums ir "uzturēt klienta partnerus un izmaksu centrus vienādus", 3. maršruts parasti ir visa atbilde. To konfigurē darbplūsmu redaktorā vai palūdzot AI asistentam to uzbūvēt — skatiet AI asistenti. Sūtīšanas soļa iespējas, kas svarīgas pareizai iegrāmatošanai, ir šīs: lappušu iziešana, izmaiņu kursors, jūsu ID atrisināšana pirms satura veidošanas, idempotences atslēga un noteikums, kā nolasīt noraidījumu no 2xx atbildes.

API piekļuves iespējošana

API darbojas tikai tad, kad darbvietas administrators darbvietai ir ieslēdzis API & AI access (Workspace SettingsAPI & AI Access). Kamēr tas ir izslēgts, katrs pieprasījums atbild ar 403. Katras lomas atļaujas pār API tiek iestatītas tajā pašā cilnē un vēl vairāk sašaurina to, ko atslēga drīkst. Skatiet Workspace Settings.

Bāzes URL

Visi pieprasījumi tiek sūtīti uz:

https://api.finpilo.com

Katrs zemāk norādītais ceļš ir relatīvs pret to, piemēram, GET https://api.finpilo.com/api/v1/companies/ENT-00001/documents.

Autentifikācija

Visiem API pieprasījumiem jāiekļauj galvene X-API-Key ar API atslēgu.

X-API-Key: fp_jusu_api_atslega

Atslēgas ir katram savienojumam, nevis darbvietai: dažādas sistēmas nekad nedala pieejas datus, un katru var atslēgt atsevišķi. Izveidojiet to sadaļā Workspace SettingsIntegrationsAPI Keys. Skatiet Integrācijas par visu procedūru, tostarp atslēgas nomaiņu ar pārejas periodu un atsaukšanu.

Katrai atslēgai ir savas atļaujas, kas izvēlētas tās izveides brīdī un vēlāk labojamas:

Atļauja Ko atver
Lasīt dokumentus saraksti, lasīšana, meklēšana, failu lejupielāde
Izveidot un labot dokumentus augšupielāde, lauku un rindu labošana
Virzīt dokumentus pa statusiem pārejas, nosūtīšana
Lasīt partnerus un dimensijas pamatdatu saraksti un lasīšana
Izveidot, labot un dzēst partnerus un dimensijas pamatdatu ierakstīšana un dzēšana
Lasīt izmaiņu vēsturi audita pieraksti
Lasīt lietojuma rādītājus kredītu patēriņš

Atslēga bez atzīmētām atļaujām nevar neko — tā autentificējas un pēc tam tiek noraidīta katrā izsaukumā. Ja saņemat 403 izsaukumā, kam vajadzētu strādāt, vispirms pārbaudiet atslēgas atļaujas.

Atslēga sniedz piekļuvi tikai tām entītijām, kuras tās savienojums aptver. Pieprasījumi par jebkuru citu entītiju atgriež 404, tieši tā, it kā tā nepastāvētu. Ja savienojums aptver visas entītijas, tā atslēga darbojas visā darbvietā, bet nekad ārpus tās.

Pieprasījumu ierobežojums

300 pieprasījumi 60 sekundēs, skaitot uz katru savienojumu (tāpēc 24 stundu atslēgas nomaiņas laikā vecā un jaunā atslēga dala vienu limitu). Pārsniedzot, pieprasījumi tiek noraidīti ar 429, nevis ielikti rindā. Sadaliet lielus darbus laikā un izmantojiet paku galapunktus — viens 10 000 partneru upsert maksā vienu pieprasījumu.

Reference ID

Lielākā daļa galapunktu izmanto jūsu pašu reference ID (virknes identifikatorus, ko iestatāt, veidojot entītijas vai dimensiju vērtības Finpilo), nevis iekšējos UUID. Tas vienkāršo integrāciju — izmantojiet tos pašus ID, ko izmanto jūsu grāmatvedības sistēma.

  • companyReferenceId — entītijas reference ID (piem., ENT-00001).
  • referenceId dimensiju vērtībām — jūsu izvēlētais identifikators.

Izņēmums ir dokumenti — tos adresē pēc iekšējā UUID, ko atgriež saraksta galapunkts.

Kā atrast reference ID. GET /api/v1/companies uzskaita entītijas, ko atslēga var sasniegt, kopā ar to reference ID. GET /api/v1/companies/{companyReferenceId}/dimensions uzskaita šīs entītijas dimensijas un to reference ID. Sāciet ar tiem, nevis lūdziet kādam nolasīt tos no ekrāna.

Lappuses

Saraksta galapunkti atgriež vienkāršu JSON masīvu bez apvalka — bez kopskaita un bez kursora. Ejiet pa lappusēm, līdz kāda lappuse atgriež mazāk vienumu nekā pageSize.

pageSize ārpus pieļaujamā diapazona tiek ignorēts un aizstāts ar noklusējumu, nevis piesaistīts maksimumam: prasot 5000, saņemsiet 100, nevis 1000.

Divi atklāšanas galapunkti atšķiras: GET /api/v1/companies atgriež { total, items }, bet GET .../dimensions nav sadalīts lappusēs vispār.

Dimensiju vērtības

Galapunkta prefikss: /api/v1/companies/{companyReferenceId}/dimensions/{dimensionReferenceId}/items

dimensionReferenceId ir dimensijas reference ID, kā iestatīts entītijas Dimensions cilnē.

Grupveida dimensiju vērtību pievienošana/atjaunināšana

POST /api/v1/companies/{companyReferenceId}/dimensions/{dimensionReferenceId}/items

Tāda pati daļējas veiksmes semantika kā partneriem.

Limiti: 1 līdz 10 000 ierakstu vienā pieprasījumā.

Pieprasījuma dati:

[
  {
    "referenceId": "DIM-00001",
    "name": "Administration",
    "description": "Accounting, legal, management fees",
    "code": "6100"
  }
]

Obligātie lauki: referenceId, name. description un code ir neobligāti.

code ir pašas vērtības īsais kods, tas, ko lietotāji redz, izvēloties vērtību dokumentā. Tas nav referenceId, pēc kura šis galapunkts saskaņo ierakstus: kods var atkārtoties, būt tukšs un brīvi mainīties. Ja code neiekļaujat, saglabātais kods paliek nemainīgs; nosūtiet "", lai to notīrītu.

Dimensiju vērtību saraksts

GET /api/v1/companies/{companyReferenceId}/dimensions/{dimensionReferenceId}/items

Vaicājuma parametri: page, pageSize (maks. 1000), updatedSince — tādi paši kā partneriem.

Viena dimensijas vērtība

GET /api/v1/companies/{companyReferenceId}/dimensions/{dimensionReferenceId}/items/{referenceId}

Atbilde 200:

{
  "id": "uuid",
  "referenceId": "DIM-00001",
  "name": "Administration",
  "description": "Accounting, legal, management fees",
  "code": "6100",
  "allocationListReferenceId": "DEPT",
  "createdAt": "ISO 8601",
  "updatedAt": "ISO 8601"
}

Dokumenti

Galapunkta prefikss: /api/v1/companies/{companyReferenceId}/documents

Zemāk esošie galapunkti aptver dokumentu lasīšanu, lejupielādi un nosūtīšanu. API atbalsta arī dokumenta augšupielādi, tā lauku un rindu pozīciju labošanu, dokumentu meklēšanu un summēšanu ar strukturētiem filtriem un statusu maiņu. Šīs iespējas ievēro tās pašas Reference ID un autentifikācijas konvencijas. Detalizētām shēmām rakstiet uz help@finpilo.com.

POST /api/v1/companies/{companyReferenceId}/documents/query ir vērts zināt: atšķirībā no saraksta galapunkta tas pieņem strukturētus filtrus un atgriež { total, items }, un tā rindas satur dokumenta statusu, kura zemāk aprakstītajā saturā nav. Tukšs rezultāts satur noMatchReason, kas nosauc nosacījumu, kurš to iztukšoja.

Augšupielāde atgriež citu ID. POST .../documents/upload atbild ar companyFileId, kamēr visi pārējie galapunkti pieņem documentId. Query galapunkts atgriež abus, tāpēc izmantojiet to, lai tos savietotu.

Dokumentu saraksts

GET /api/v1/companies/{companyReferenceId}/documents

Vaicājuma parametri:

Parametrs Tips Noklusējuma Apraksts
page int 1 Lapas numurs
pageSize int 50 Ieraksti vienā lapā, maksimums 500
status string Filtrēt pēc statusa atslēgas, precīzi sakrītot
documentType string Filtrēt pēc dokumenta veida nosaukuma
issuedFrom ISO 8601 Izsniegšanas datumu diapazona sākums
issuedTo ISO 8601 Izsniegšanas datumu diapazona beigas
sentOnly bool Ja true, tikai dokumenti, kuru statusa atslēga ir Sent

status ir reģistrjutīgs un atkarīgs no darbvietas. Statusus nosaka darbvietas pašas dzīves cikls, tāpēc fiksēta saraksta nav — Validated un Sent ir parastās atslēgas, bet validated neatbilst nekam un atgriež tukšu masīvu ar 200, nevis kļūdu. Nolasiet atslēgas no GET .../documents/{documentId}/status-options vai pajautājiet darbvietas administratoram. Tas pats attiecas uz sentOnly, kas meklē tieši atslēgu Sent. Ja jūsu darbvietas dzīves cikls piegādāto stāvokli sauc citādi, izmantojiet status= ar šo atslēgu.

Atbilde 200: dokumentu datu objektu masīvs (skatiet shēmu zemāk).

Viens dokuments

GET /api/v1/companies/{companyReferenceId}/documents/{documentId}

Atgriež pilnu dokumentu, ieskaitot visas rindas pozīcijas un dimensiju piešķīrumus.

Oriģinālā faila lejupielāde

GET /api/v1/companies/{companyReferenceId}/documents/{documentId}/file

Atgriež oriģinālo augšupielādēto failu kā bināru straumi. Content-Type atbilst oriģinālajai augšupielādei (PDF, JPEG, PNG).

Finpilo nepārveido un nepārkodē failus — jūs saņemat tieši to, kas tika augšupielādēts.

Dokumenta nosūtīšana

POST /api/v1/companies/{companyReferenceId}/documents/{documentId}/send

Aktivizē nosūtīšanas plūsmu — Finpilo palaiž darbplūsmu Send to Accounting, kas nosūta dokumentu uz entītijas savienojumu (vai darbvietas noklusējuma savienojumu, ja entītija savu nav izvēlējusies). Skatiet Savienojumi.

Vaicājuma parametri:

Parametrs Tips Noklusējuma Apraksts
resend bool false Ja true, atļauj atkārtoti nosūtīt dokumentu, kas jau ir nosūtīts

Atbilde 200:

{
  "success": true,
  "accountingReferenceId": "INV-2026-0042"
}

accountingReferenceId ir vērtība, ko atgriezusi saņemošā sistēma (ja tāda ir).

Atbilde 400 — nosūtīšanu nevarēja izpildīt, piemēram, ja entītijai nav konfigurēts galamērķis, dokumentu nevar nosūtīt no tā pašreizējā statusa vai tas jau bija nosūtīts un resend nebija iestatīts:

{ "error": "kļūdas apraksts" }

400 ne vienmēr nozīmē, ka nekas netika nosūtīts. Finpilo gaida līdz 45 sekundēm, līdz sūtījums beidzas. Ja tas vēl darbojas, kad laiks beidzas, saņemat 400 ar tekstu "The send is still running. The document's status will show the result." Šo neatkārtojiet — dokuments var arī nonākt. Tā vietā pārbaudiet dokumenta statusu. resend=true ir vienīgais drošais veids, kā nosūtīt otrreiz.

Dokumenta datu shēma

Šī ir struktūra, ko atgriež dokumentu galapunkti. Tie ir arī noklusējuma dati, ko darbplūsma Send to Accounting nosūta uz jūsu sistēmu, kad dokuments tiek nosūtīts — administratori šos datus var pielāgot darbplūsmā (skatiet Savienojumi).

{
  "documentId": "3fa0b1c2-d3e4-5f67-8901-abcdef123456",
  "documentType": "Invoice",
  "direction": "Incoming",
  "documentNumber": "INV-2025-0042",
  "issueDate": "2025-01-15T00:00:00Z",
  "dueDate": "2025-02-15T00:00:00Z",
  "servicePeriodStartDate": "2025-01-01T00:00:00Z",
  "servicePeriodEndDate": "2025-01-31T00:00:00Z",
  "currency": "EUR",

  "supplierName": "Acme Supplies OÜ",
  "supplierRegNumber": "12345678",
  "supplierVatNumber": "EE123456789",
  "supplierAddress": "Tallinn, Estonia",
  "supplierBankAccounts": ["EE382200221020145685"],

  "recipientName": "My Company SIA",
  "recipientRegNumber": "40003012345",
  "recipientVatNumber": "LV40003012345",
  "recipientAddress": "Riga, Latvia",
  "recipientBankAccounts": null,
  "recipientReferenceId": "ENT-00001",

  "lineItemsSubtotalExcludingTax": 1000.00,
  "allowancesAmountExcludingTax": 0,
  "chargesAmountExcludingTax": 0,
  "retentionAmountExcludingTax": 0,
  "totalExcludingTax": 1000.00,
  "taxAmount": 200.00,
  "totalIncludingTax": 1200.00,
  "prepaidAmountIncludingTax": null,
  "payableAmountIncludingTax": 1200.00,

  "comment": null,
  "validatedAt": "2025-01-20T09:15:00Z",
  "entityName": "My Company SIA",
  "fileUrl": "https://docmanager-api.../api/v1/companies/ENT-00001/documents/3fa0b1c2-.../file",

  "lineItems": [
    {
      "id": "8c1f0a2b-4d5e-6f70-8192-a3b4c5d6e7f8",
      "position": 1,
      "title": "Consulting services",
      "description": "January 2025",
      "supplierCode": "CONS-001",
      "unit": "h",
      "quantity": 10.0,
      "unitPriceExcludingTax": 100.00,
      "totalExcludingTax": 1000.00,
      "taxRate": 20.0,
      "taxAmount": 200.00,
      "totalIncludingTax": 1200.00,
      "allocations": [
        {
          "allocationListReferenceId": "DEPT",
          "dimensionName": "Department",
          "code": "IT",
          "name": "IT Department",
          "description": null
        }
      ]
    }
  ],
  "allocations": []
}

Lauki bez datiem ir null (nekad netiek izlaisti). lineItems un allocations vienmēr ir masīvi (tukši [], ja nav nekā). Katras rindas id ir tas, ko nosūtāt atpakaļ dokumenta labošanā, lai atjauninātu šo rindu, nevis izveidotu dublikātu.

Divi lauki šeit apzināti nav: status un accountingReferenceId. Lai nolasītu kādu no tiem, izmantojiet POST .../documents/query, kura rindas satur statusu.

Piešķīruma code ir dimensijas vērtības referenceId — tas pats identifikators, pēc kura ierakstāt dimensiju vērtības, tikai ar citu nosaukumu.

Nosūtīto dokumentu saņemšana

Kad Finpilo nosūta dokumentu uz jūsu sistēmu, ievērojiet šo tipisko plūsmu:

  1. Saņemiet HTTP POST pieprasījumu. Saturs ir application/json, atbilstošs augstāk aprakstītajai shēmai.
  2. Pieprasījums satur savienojumā konfigurēto autentifikāciju — Bearer token, Basic akreditācijas datus vai pielāgotu galveni (skatiet Savienojumi). Pārbaudiet to pirms apstrādes.
  3. Izveidojiet ierakstu savā sistēmā, izmantojot strukturētos datus.
  4. Iegūstiet oriģinālo failu, ja tas jums vajadzīgs. Izveidojiet URL pats no satura: GET /api/v1/companies/{recipientReferenceId}/documents/{documentId}/file, ar savu API atslēgu. Saturā ir arī fileUrl, bet tas tiek aizpildīts tikai tad, ja sūtījums tika aktivizēts caur POST /api/v1/…/documents/{documentId}/send. Sūtījums, ko cilvēks sāk lietotnē, satur fileUrl: null, tāpēc integrācija, kas uz to paļaujas, klusi pazaudē pielikumu.
  5. Pievienojiet failu savam ierakstam.
  6. Atgrieziet JSON atbildi ar accountingReferenceId, kas iestatīts kā jūsu iekšējā ieraksta ID. Finpilo to saglabā dokumenta laukā Accounting Reference. Tukšs 200 OK atbildes ziņojums arī ir derīgs, ja neizsekojat atsaucei.

Finpilo gaida līdz 30 sekundēm uz jūsu atbildi. Pieprasījumi, kas pārsniedz šo laiku, tiek atzīmēti kā neizdevušies.

Atbildiet ar kļūdas statusu, kad noraidāt dokumentu. Pēc noklusējuma Finpilo uzskata jebkuru 2xx par veiksmīgu sūtījumu, tāpēc 200 ar {"ok": false} atzīmē dokumentu kā piegādātu. Ja jūsu API arī noraidījumam atbild ar 2xx un citādi nevar, darbvietas administrators var konfigurēt sūtīšanas soli lasīt atbildes saturu. Pasakiet, kurš lauks to norāda.

Neizdevies POST netiek automātiski atkārtots, ja vien darbvietas administrators to neieslēdz, tieši tāpēc, ka atkārtots POST var nosūtīt divreiz. Ja varat droši pieņemt atkārtojumu, pasakiet to un palūdziet to ieslēgt. Ja atbalstāt idempotences atslēgu, pasakiet, kurā galvenē to vēlaties.

Aprēķinātas vērtības saturā

Sūtīšanas soļa saturs ir JSON veidne. Lielākā daļa vērtību tiek kopētas no dokumenta ar {{path}}{{subject.documentNumber}}, {{subject.totalExcludingTax}}. Ja jūsu sistēmai vajag kaut ko, kā dokumentā nav, vērtību var arī aprēķināt, tāpēc starp Finpilo un jums nekam nav jāatrodas.

Jebkurā vietā, kur iet vērtība, ir pieejamas trīs formas:

  • "{{path}}" kopē vērtību. "{{path?}}" pieļauj, ka tās nav.
  • {"$map": {"from": "subject.lineItems", "as": { ... }}} pārveido sarakstu, katra rinda ir item.
  • {"$value": <operands>} aprēķina vienu.

Operands ir literālis, {"var": "path"}, agregāts vai kāda no šīm operācijām:

Operācija Forma
add, sub, mul {"add": [a, b]}
div {"div": [a, b, places, mode]}
round {"round": [n, places, mode]}
concat, coalesce {"concat": [a, b, ...]} — vismaz divas vērtības
pad {"pad": [text, width, fillChar]} vai ceturtais arguments "left" vai "right" (pēc noklusējuma left)
upper, lower {"upper": [text]}
dateFormat {"dateFormat": [date, "dd.MM.yyyy"]}
dateAdd {"dateAdd": [date, days]} — atbild ar pilnu laikspiedolu, tāpēc datumam ietiniet to dateFormat
if {"if": [<nosacījums>, then, else]}
lookup {"lookup": [key, {"mūsu": "viņu"}, default]}
aggregate {"aggregate": {"op": "sum|avg|min|max|count", "over": <operands>, "field": "name", "where": <nosacījums>}}

Nosacījumi izmanto eq, ne, gt, gte, lt, lte, in, contains, empty, on (on = viena un tā pati kalendārā diena), apvienojot ar and, or, not, any, all.

Piemēram, tikai viena izmaksu centra rindu kopsumma:

{ "ccTotal": { "$value": { "aggregate": {
    "op": "sum", "over": { "var": "subject.lineItems" }, "field": "totalExcludingTax",
    "where": { "eq": [ { "var": "dimensions.Cost centre.code" }, "CC-100" ] } } } } }

Pieejamie ceļi ir paša dokumenta lauki (subject.supplierName, subject.lineItems[].totalExcludingTax, subject.dimensions.<nosaukums>.code), iepriekšēja soļa atbilde outputs.<soļa id>.body un saņemts webhook saturs input.webhook.

Vietas, kur kartējums parasti aiziet greizi:

  • mode ir obligāts visam, kas dala vai noapaļohalf-up, half-even, up (uz augšu) vai down (uz leju). places ir 0–28. Finpilo neizvēlas noapaļošanas noteikumu jūsu vietā.
  • format ir .NET datuma šablonsyyyy-MM-dd, nevis YYYY-DD. Neatpazīts burts tiek nodots tālāk kā teksts.
  • {{token}} neatrisinās operanda iekšienē. Tur izmantojiet {"var": "path"}.
  • coalesce izlaiž null, bet ne tukšu virkni.
  • Ceļš, kura nav, aptur soli, nevis sūta tukšumu — tāpat kā dalīšana ar nulli, nenolasāms datums vai lookup bez atbilstības un bez noklusējuma.
  • sum vai count, kura where neatbilst nekam, atbild ar nulli un to nosūta. (avg, min un max pār tukšumu atbildes nav, tāpēc tie aptur soli.) Nepareizi uzrakstīts ceļš where iekšienē izskatās tieši tāpat kā patiesi tukša kopa. Ceļi ir reģistrjutīgi, un dimensijas nosaukums zaudē punktu (Dept. code nolasās kā dimensions.Dept code.code). Pārbaudiet to pret īstu dokumentu un nolasiet skaitli.

AI asistents, kas pievienots darbvietai, var tos uzbūvēt un pārbaudīt jūsu vietā — skatiet AI asistenti.

Finpilo sūtītās galvenes

Katrs nosūtīšanas pieprasījums ietver:

Content-Type: application/json

kā arī autentifikācijas galveni no galamērķa: Authorization: Bearer <token> Bearer autentifikācijai, Authorization: Basic <akreditācijas dati> Basic autentifikācijai, OAuth piekļuves pilnvaru ar jūsu norādīto shēmu vai jūsu nosaukto pielāgoto galveni. Galamērķis ar No auth nesūta autentifikācijas galveni.

Divas uzvedības, ko vērts ņemt vērā. Pāradresācijas netiek sekotas, tāpēc 301 vai 302 no jums tiek uzskatīts par kļūmi — norādiet galīgo adresi. Un Finpilo izsauc tikai adreses, kas sasniedzamas publiskajā internetā. Privāta, iekšēja vai loopback adrese tiek noraidīta pirms pieprasījuma.

Kļūdu atbildes

Statuss Nozīme
400 Bad Request Validācijas kļūme (tukšs ieraksts, ieraksts > 10 000, nosūtīšanas kļūdas) — vai nosūtīta gan X-API-Key, gan Authorization galvene
401 Unauthorized Trūkstoša vai nederīga X-API-Key
403 Forbidden Drīkst jautāt, bet nedrīkst darīt — skatiet zemāk
404 Not Found Reference ID nav atrasts vai ir entītijā, ko šī atslēga neaptver
409 Conflict Ieraksti mainījušies kopš priekšskatījuma, uz kura balstīta grupveida labošana. Nolasiet vēlreiz un mēģiniet vēlreiz
429 Too Many Requests Pārsniegts pieprasījumu ierobežojums. Palēniniet un mēģiniet vēlreiz

403 ir četri dažādi iemesli un četri dažādi risinājumi, tāpēc lasiet ziņojumu, nevis kodu:

  • API & AI piekļuve darbvietai ir izslēgta. To ieslēdz administrators.
  • Darbvietas pakalpojums ir apturēts — neapmaksāts vai beidzies abonements. Katrs izsaukums tiek noraidīts, līdz tas ir nokārtots. Ja sinhronizācija vakar strādāja, bet šodien visur atbild ar 403, parasti iemesls ir šis.
  • Atslēgai trūkst atļaujas. Izveidojiet vai izlabojiet atslēgu ar to, kas vajadzīgs.
  • Lomu matrica to ir sašaurinājusi. To maina administrators darbvietas iestatījumos.
  • Galapunktam vajadzīga cilvēka pieteikšanās — apstiprinājumi, konfigurācija, entītijas, lietotāji. To nevar neviena atslēga.

Lielākā daļa kļūdu izmanto formu { "error": "apraksts" }. Kļūdas, kas rodas dziļāk servisa slānī, tostarp katrs 409, izmanto formu { "status", "code", "message", "errors" }, tāpēc lasiet abas. 401 satura nav vispār, jo neviens vēl nav sevi identificējis.