Connect-API — viitteistö

Jokainen virhe, selitettynä pysyvässä osoitteessa.

Tämä sivu on käyttöviite, ei myyntipuhe. Jokaisella Connect-API:n virheluokalla on täällä pysyvä ankkuri; API:n virhevastaukset osoittavat näihin osoitteisiin. Saat todennäköisen syyn ja korjaavan toimenpiteen — tässä järjestyksessä. Takaisin kehittäjädokumentaatioon.

#authentification 401

Avain puuttuu, on virheellinen tai tuntematon

API todentaa yksinomaan Authorization: Bearer vgk_… -otsakkeella — ei koskaan istuntoevästeellä. Peruttu avain muuttuu tuntemattomaksi perumishetkellä.

Sama 401 sisältää kentän "motif": "fin_option_api", kun avain on pysäytetty, koska API ei enää kuulu toimiston tilaukseen. Pysäytyksen päivämäärä ilmoitettiin toimiston ylläpitäjille tai, jos heitä ei ole, toimiston laskutusosoitteeseen lähetetyssä sähköpostissa ja sen jälkeen jokaisen hyväksyttyyn kutsuun annetun vastauksen Sunset-otsakkeessa (aikataulu: #cle-expiree). Ilman syykenttää se voi johtua myös keskeytetystä tilauksesta: keskeytys katkaisee avaimet heti.

Korjaava toimenpide. Tarkista, että otsake todella lähtee (välityspalvelimet joskus riisuvat sen), että avain alkaa etuliitteellä vgk_ ja ettei sitä ole peruttu toimiston konsolista. Koska salaisuus näytetään vain luontihetkellä, kadonnut avain korvataan, ei palauteta. Kun vastauksessa on "motif": "fin_option_api", vika ei ole otsakkeessa eikä avaimessa: toimiston ylläpitäjä kirjoittaa meille osoitteeseen contact@vigilae.org, jotta API palautetaan tilaukseen, ja sama avain hyväksytään taas heti, kun se on tehty, oman voimassaolonsa päättymiseen asti.

#cle-expiree 401

Vanhentunut avain

Jokainen avain vanhenee vuosi luonnin jälkeen — expire_le-päivämäärä näkyy toimiston konsolissa ensimmäisestä päivästä alkaen. Vanhenemisen 401 on yksiselitteinen: se kertoo, että avain oli olemassa eikä ole enää voimassa.

API-avainta voidaan lakata hyväksymästä myös ennen tätä päivämäärää, kun API ei enää kuulu toimiston tilaukseen. Pysäytys tapahtuu silloin vähintään 30 päivää ensimmäisen sähköpostin jälkeen, päivänä, jonka toinen, vähintään 7 päivää etukäteen lähetetty sähköposti ilmoittaa; molemmat lähetetään toimiston ylläpitäjille tai, jos heitä ei ole, toimiston laskutusosoitteeseen. Kun päivämäärä on asetettu, se näkyy toimiston konsolissa (GET /connect/cles -kenttä coupure_le), ja jokainen hyväksyttyyn kutsuun annettu vastaus ilmoittaa sen Sunset-otsakkeessa, kunnes se koittaa. Sen jälkeen kutsu saa kohdassa #authentification kuvatun 401:n, kentällä "motif": "fin_option_api"; jos API palaa tilaukseen, avain hyväksytään taas, oman voimassaolonsa päättymiseen asti.

Korjaava toimenpide. Luo uusi avain, siirrä kutsusi sille, peru vanha. API-avaimen kohdalla API:n on yhä kuuluttava toimiston tilaukseen: ilman sitä konsoli kieltäytyy luomasta avainta. Suunnittele vaihto osaksi operaatioitasi sen sijaan, että huomaisit sen yllätyksenä.

#scopes 403

Riittämätön scope

Avaimet kantavat luonnissa valitut scopet: yleiset lecture (luku, oletus) ja ecriture (kirjoitus) tai hienojakoiset resurssikohtaiset (clients:lecture, pieces:ecriture, origine-fonds:lecture, journal:lecture…).

Periytyminen seuraa päätettä, vain yhteen suuntaan: lecture kattaa jokaisen *:lecture-scopen ja ecriture jokaisen *:ecriture-scopen — toisin päin ei koskaan; hienojakoinen scope avaa vain itsensä.

Kuusi scopea jää tämän parin ulkopuolelle eikä periydy mistään yleisestä avaimesta: alertes:qualifier, embed:emettre, adversemedia:consulter, conformite:consulter, dispositif:consulter, integrite:consulter. Tapahtuman kvalifiointi, upotustunnisteen myöntäminen, asian kielteisen lehdistöaineiston tai asianhoidon arvosanan lukeminen ei seuraa koskaan yleisestä lukuoikeudesta: jokainen valitaan erikseen.

Korjaava toimenpide. Luo avain, joka kantaa tarvittavan scopen — ja vain sen. Vähimpien oikeuksien periaate on tarkoituksellinen: pelkästään lukevalla integraatiolla ei ole mitään syytä pitää kirjoitusavainta, eikä laaja avain koskaan korvaa scopea, jota ei ole nimenomaisesti delegoitu.

#cloisonnement 404

Ei löydy — tai kuuluu toiselle toimistolle

404 tarkoittaa, että resurssia ei ole olemassa tai että se kuuluu toiselle toimistolle. API ei koskaan erottele näitä kahta tapausta: erottelu paljastaisi, mitä muualla on. Eristys pakotetaan tietokantatasolla, ei vain sovelluskoodissa.

Korjaava toimenpide. Tarkista seq sen toimiston lokista, jolle avain kuuluu (GET /api/v1/evenements). Jos integroit useita toimistoja, jokaisella on omat avaimensa: seq ei siirry toimistosta toiseen.

#unicite 409

Tämä tili on jo olemassa

POST /scim/v2/Users tälle toimistolle jo luodulle userName-tunnukselle vastaa 409 ja scimType: uniqueness. Ainutkertaisuutta pitää yllä tietokantarajoite, ei välimuisti: kaksi samanaikaista luontia ei voi tuottaa kahta tiliä.

Korjaava toimenpide. Käsittele 409 idempotenttina onnistumisena, ei virheenä: lue tili takaisin haulla ?filter=userName eq "…" ja jatka palautetulla tunnisteella. Liitin, joka yrittää 409:n jälkeen silmukassa uudelleen, ei koskaan luo mitään lisää.

#compte-hors-portee 403

Tämä tili on hakemiston ulottumattomissa

Hakemisto ei voi alentaa eikä poistaa käytöstä tiliä, jolla on toimiston hallintavaltuudet: pyyntö hylätään koodilla scimType: mutability ja kirjataan lokiin. Ilman tätä rajaa liitin, joka ottaa vastuuhenkilön osoitteen, sulkisi toimiston juuri siltä, joka siitä vastaa.

Korjaava toimenpide. Jätä tämä henkilö pois synkronoitavasta joukosta tai vaihda hänen roolinsa Vigilaessa. Hylkäys koskee vain tätä tiliä: erän loppuosa käsitellään normaalisti.

#debit 429

Kutsuraja ylitetty

60 pyyntöä minuutissa avainta kohti, oletuksena (yliajettavissa avainkohtaisesti). Vastaus kantaa Retry-After-otsakkeen sekä otsakkeet X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Korjaava toimenpide. Kunnioita Retry-After-otsaketta — ei välitöntä uusintayritystä. Rajan osuminen pollatessa on lähes aina merkki täydestä uudelleenluvusta: depuisSeq-kursori ei koskaan lue uudelleen jo luettua.

#signature webhook

Allekirjoitus ei todennu sinun puolellasi

Vastaanottimesi on laskettava v1 = HMAC-SHA256(secret, t + "." + body) uudelleen vastaanotetusta raa'asta rungosta ja hylättävä jokainen yli 5 min vanha t. Klassiset kompastuskivet: runko sarjallistettu uudelleen ennen todennusta (uudelleenmuotoiltu JSON ei enää ole tavulleen sama), toleranssin yli ryöminyt kello ja huomiotta jätetty kierrätys — 24 h ajan otsake kantaa yhden v1-arvon kutakin yhä voimassa olevaa salaisuutta kohti, ja sinun on hyväksyttävä, jos yksikin täsmää.

Korjaava toimenpide. Todenna raakoja tavuja vasten, synkronoi kellosi (NTP), testaa todennuksesi kierrätyksen aikana. Dokumentaation Node- ja Python-esimerkit tekevät täsmälleen tämän — kopioi ne sen sijaan, että kirjoittaisit ne uudelleen.

#idempotence webhook

Tapahtuma saapuu kahdesti

Toimitus on at-least-once, enintään 100 tapahtuman erissä, lokin järjestyksessä; kursori etenee vain 2xx-vastauksestasi, erä kerrallaan. Virhe vastaanoton jälkeen mutta ennen kursorin etenemistä aiheuttaa uusintatoimituksen — se on sopimus, ei vika.

Korjaava toimenpide. seq on idempotenssiavaimesi: käsittele jokainen järjestysnumero täsmälleen kerran ja vastaa 2xx vasta talletuksen jälkeen. Ennenaikainen 2xx ja sitä seuraava kaatuminen on ainoa tapa menettää tapahtuma.

#validation 400

Parametri skeeman ulkopuolella

Tuntematon tila, listan ulkopuolinen käsittelytapa (planifie, traite, ecarte), ei-kokonaislukuinen limite: vastaus nimeää virheellisen kentän, eikä mitään muuta — virheilmoitukset eivät koskaan kanna aineistojen sisältöä.

Korjaava toimenpide. OpenAPI-määrittely on lähde: sen ilmoittamat luetteloarvot ja rajat ovat samat, jotka palvelin valvoo, koska palvelin itse tarjoilee määrittelyn.

#nationalite-trop-longue 400

Kentän arvo on liian pitkä: Kansalaisuus

Vastaus nimeää virheellisen kentän, eikä mitään muuta — virheilmoitukset eivät koskaan kanna aineistojen sisältöä.

Korjaava toimenpide. OpenAPI-määrittely on lähde: sen ilmoittamat luetteloarvot ja rajat ovat samat, jotka palvelin valvoo, koska palvelin itse tarjoilee määrittelyn.

#scope-manquant 403

Riittämätön scope (resurssi-API)

Resurssipäätepisteet (/clients, /dossiers, asiakirjat, seulonta, hälytykset) vaativat hienojakoisen scopen: clients:*, dossiers:*, pieces:*, criblage:* tai erillisen alertes:qualifier-scopen. Vanha lecture-avain myöntää kaikki *:lecture-scopet ja ecriture kaikki *:ecriture-scopet — mutta alertes:qualifier ei koskaan periydy: hälytyksen kvalifiointi on vastuuhenkilön toimi, joka delegoidaan rastittamalla kyseinen scope avainta luotaessa.

Korjaava toimenpide. Luo avain, joka kantaa täsmälleen integraatiosi tarvitsemat scopet — ja vain ne. Vastauksen detail-kenttä nimeää puuttuvan scopen.

#ressource-introuvable 404

Resurssia ei löydy — tai se kuuluu toiselle toimistolle

Sama sääntö kuin #cloisonnement, sovellettuna resursseihin: asiakas, aineisto, asiakirja tai hälytys, jota ei ole olemassa tai joka kuuluu toiselle toimistolle, saa saman 404-vastauksen. API ei koskaan erottele näitä kahta tapausta.

Korjaava toimenpide. Tarkista tunniste sen toimiston listauksista, jolle avain kuuluu. Tunniste ei koskaan siirry toimistosta toiseen.

#idempotency-key-requis 400

Idempotency-Key-otsake puuttuu

Jokainen luova tai käynnistävä POST (asiakas, aineisto, asiakirja, seulonta, tosiasialliset edunsaajat) vaatii Idempotency-Key-otsakkeen: vakaa, enintään 200 merkin merkkijono, yksi operaatiota kohti. Saman avaimen toistaminen samalla rungolla palauttaa saman vastauksen ilman vaikutusta — suojasi kaksoiskappaleita vastaan verkkohäiriössä.

Korjaava toimenpide. Generoi avain ennen ensimmäistä yritystä (yksi UUID liiketoimintaoperaatiota kohti) ja käytä sitä muuttumattomana saman operaation jokaisessa uusintayrityksessä.

#idempotency-key-reutilisee 422

Idempotenssiavain käytetty uudelleen eri rungolla

Tämä Idempotency-Key on jo käytetty eri rungolle viimeisten 24 tunnin aikana. Avain toistaa vastauksen, se ei koskaan korvaa sitä: avaimen uusiokäyttö uuteen operaatioon on lähes aina merkki laskurista tai katkaistusta päivämäärästä johdetusta avaimesta.

Korjaava toimenpide. Uusi avain jokaiselle uudelle operaatiolle. Älä koskaan johda avainta tiedoista, jotka toistuvat operaatiosta toiseen.

#idempotency-key-en-cours 409

Toinen yritys samalla avaimella on vielä kesken

Kaksi pyyntöä samalla Idempotency-Key-avaimella saapui yhtä aikaa: ensimmäinen suoritetaan, toinen hylätään ennen mitään vaikutusta. Juuri tämä hylkäys estää kaksoiskappaleen. Tavallinen tapaus: välityspalvelin palauttaa 502 tai 504 palvelimen vielä työskennellessä, ja asiakasohjelmasi toistaa pyynnön. Otsake Retry-After kertoo, kuinka monen sekunnin kuluttua se toistetaan.

Korjaava toimenpide. Toista sama pyyntö sellaisenaan, samalla avaimella, ilmoitetun odotuksen jälkeen: saat ensimmäisen yrityksen vastauksen. Älä koskaan luo uutta avainta ”vapauttaaksesi” — se loisi juuri sen kaksoiskappaleen, jonka avain estää.

#quota-essai-atteint 409

Testiympäristö: kiintiö on täynnä

Testiympäristöllä on kiinteät rajat: 200 asiakasta, 50 aineistoa ja 40 asiakirjaa aineistoa kohden. Luonti tai asiakirjan tallennus, joka ylittäisi jonkin niistä, hylätään ennen kuin mitään kirjoitetaan, ja hylkäys kertoo, mistä rajasta on kyse: kentät ressource, quota ja courant sisältävät resurssin, ylärajan ja määrän hylkäyshetkellä. Jos kaksi samanaikaista luontia kilpailee viimeisestä paikasta, vain toinen menee läpi. Olemassa olevan asiakkaan tai aineiston muokkaaminen ei kuluta kiintiötä.

Korjaava toimenpide. Näistä kiintiöistä ei neuvotella, ja pyynnön toistaminen palauttaa saman hylkäyksen. Nollaa testiympäristö toimistotilastasi — se palaa alkuperäisiin demotietoihin — tai tilaa palvelu: nämä kiintiöt koskevat vain testiympäristöjä.

#dossier-scelle 409

Sinetöity aineisto: rekisteri on jäädytetty

Sinetöinti jäädyttää aineiston eheysketjun — juuri siinä on sen todistusarvo. Sinetöityä aineistoa ei voi enää muokata, se ei enää vastaanota asiakirjoja eikä sitä enää uudelleenseulota tätä kautta. Vain hälytyksen kvalifiointi on yhä mahdollista: se kirjoitetaan ketjun ulkopuolelle, sinetöity kärki ei koskaan liiku.

Korjaava toimenpide. Ei mitään ”korjattavaa”: tämä on tarkoituksellista muuttumattomuutta. Jos tietojen on muututtava, kyse on uudesta huolellisuustoimesta sovelluksessa, ei sinetöidyn aineiston muuttamisesta.

#dossier-clos 409

Suljettu aineisto: asiakassuhde on päättynyt

Suhde päätettiin sovelluksessa: aineisto ei enää vastaanota kirjoituksia API:n kautta — ei muokkausta, ei asiakirjaa, ei seulontaa eikä tosiasiallisia edunsaajia. Luku pysyy avoimena: suljettua aineistoa voi tarkastella ja viedä koko säilytysajan.

Korjaava toimenpide. Suhteen avaaminen uudelleen on ihmisen tekemä, lokiin kirjattu toimi sovelluksessa; API ei tee sitä puolestasi. Jos operaatio on uusi, avaa uusi aineisto sen sijaan että elvytät vanhan.

#dossier-purge 409

Poistettu aineisto: tiedot on pyyhitty

Säilytysaika on kulunut umpeen ja aineiston tiedot on pyyhitty. Jäljelle jää vain auditointijälki, joka todistaa, että aineisto oli olemassa ja että se poistettiin mainittuna päivänä; se ei enää vastaanota mitään kirjoitusta.

Korjaava toimenpide. Ei mitään korjattavaa eikä toistettavaa: poisto on lopullinen ja tarkoituksellinen. Järjestelmiisi jäänyt poistetun aineiston tunniste on historiaa, ei koskaan kirjoituksen kohde.

#format-piece 415

Asiakirjan muotoa ei hyväksytä

Todentavat asiakirjat hyväksyvät muodot PDF, JPG, JPEG, PNG ja WEBP — samat kuin sovelluksessa. Tarkistus kohdistuu pakollisen filename-kentän tiedostopäätteeseen: asiakirja ilman kelvollista tiedostonimeä hylätään sisällöstä riippumatta.

Korjaava toimenpide. Muunna ennen lähetystä (TIFF- tai HEIC-skannaus muuntuu PDF:ksi tai JPEG:ksi) ja lähetä sisältö tavallisena base64:nä contenu-kentässä, type-arvona jokin vakaista a_doc_*-koodeista.

#piece-trop-volumineuse 413

Yli 6 Mt:n asiakirja

Raja koskee dekoodattua tiedostoa (6 Mt), samoin kuin sovelluksessa ja keräysportaalissa. Koska base64 lisää kolmanneksen koodauskuormaa, pyynnön runko hyväksyy enintään 9 Mt.

Korjaava toimenpide. Pakkaa asiakirja (värillinen 300 dpi:n skannattu PDF putoaa harmaasävyisenä lähes aina rajan alle) sen sijaan, että jakaisit sen osiin.

#source-criblage 502

Seulontalähde ei käytettävissä

Yhtäkään aineiston entiteettiä ei voitu tarkistaa listoja vasten: lähde (virallisten listojen indeksi tai palveluntarjoaja) ei vastannut. API kieltäytyy tekemästä johtopäätöstä — ”puhdas” raportti kuolleen lähteen päällä olisi pahin mahdollinen väärä negatiivinen. Häiriö kirjataan aineistoon (erreurSource). Osittainen katko ei tuota tätä 502-vastausta: 200-vastaus säilyttää vastanneiden entiteettien osumat ja nimeää epäonnistuneet erreurSourceEntites-kentässä.

Korjaava toimenpide. Toista sama kutsu myöhemmin samalla Idempotency-Key-otsakkeella: idempotenssi muistaa vain onnistuneet vastaukset — virheen jälkeen toistettu kutsu suorittaa todellisen seulonnan.

#embed-indisponible 501

Upotetut widgetit eivät ole käytössä tässä instanssissa

Myöntö POST /api/v1/embed/jetons nojaa toimiston ilmoittamiin alkuperiin — juuri tämä luettelo ohjaa upotetun shellin frame-ancestors-CSP:tä. Tämä 501 kertoo, ettei kutsumasi instanssi kanna tätä tallennusta: upotuspinta on siellä rakenteellisesti toimimaton, ja se sanoo näin sen sijaan, että myöntäisi tunnisteen, jota mikään alkuperä ei voisi koskaan näyttää. Ei pidä sekoittaa 400-vastaukseen, joka annetaan toimistolle, jonka alkuperiä ei ole vielä ilmoitettu.

Korjaava toimenpide. Tämä 501 koskee instanssia, ei pyyntöäsi. Osoitteessa vigilae.org toimiston pääkäyttäjä ilmoittaa alkuperät itse, näytöllä ”Integraatiot ja tietoturva” (widgetit-osion laatikko kertoo, missä); toista sitten sama kutsu. Koodissasi ei ole mitään korjattavaa: pyyntö oli kunnossa, instanssi ei ollut valmis.

#stockage-indisponible 501

Pinta ei ole käytettävissä tässä asennuksessa

Kaksi perustason lukua — GET /api/v1/dossiers/{id}/origine-fonds ja GET /api/v1/dossiers/{id}/exigences — nojaavat tallennustiloihin, joita jokainen instanssi ei kanna. Kun jokin puuttuu, API sanoo sen sen sijaan että palauttaisi tyhjän listan: ”ei huomautettavaa” ja ”mitään ei luettu” ovat vastakkaisia tosiasioita, ja niiden sekoittaminen saisi asian, jota kukaan ei ole katsonut, näyttämään asialta ilman huomautuksia. Tämä 501 koskee kutsuttua instanssia, ei koskaan pyyntöäsi eikä asiaa.

Korjaava toimenpide. Älä toista kutsua silmukassa: mikään ei muutu ennen kuin instanssi kantaa kyseisen tallennustilan. Käsittele koodia merkityksessä ”tieto ei ole täällä saatavilla” äläkä ennen kaikkea laske sitä nollaksi koosteissasi — juuri niin puuttuvasta mittauksesta tulee väärä luku. Vigilae.org-palvelussa molemmat luvut palvellaan; omassa asennuksessa tallennustilan päivitys kuuluu ylläpitäjällesi.

Tämä sivu kehittyy API:n mukana; olemassa olevat ankkurit eivät kuitenkaan koskaan vaihda osoitetta — voit tallettaa ne operaatiolokeihisi.