Direct naar de inhoud
Sursa Developers

POST/v1/push/sources/{source_id}/documents

Document versturen (aanmaken of vervangen)

push_upsert_document

Maakt een document aan of vervangt het op basis van external_id. Stuur bij JSON de inhoud in content (content_type: html, markdown of text, tot 5 MB). Stuur bij multipart/form-data het bestand in het deel file (tot 100 MB, dezelfde formaten als bij een upload naar de kennisbank) en de metadata in het deel document (JSON met dezelfde vorm zonder content) of als afzonderlijke velden external_id, title, url, path, tags. sync_number is het nummer van de open synchronisatie. Zonder dit nummer wordt het document meteen geschreven (direct schrijven), maar verwijdert de volgende volledige synchronisatie het, tenzij het opnieuw wordt verstuurd. Hetzelfde document opnieuw versturen geeft unchanged (idempotent). Het document wordt een kaart bij de volgende synchronisatie van de bron (binnen een minuut; binnen een open synchronisatie nadat die is gesloten). Sinds 1.62.0: velden van de kaart (metadata, category, verifiers, verify_interval_days), een bestand uit een upload in delen (upload_id) en bijlagen (attachments); de response bevat status en card_id (het resultaat van het document). De documentlimiet van een bron hangt af van het abonnement.

Authenticatie

Stuur een API-sleutel mee in de header Authorization: Authorization: Bearer <sleutel>.

Padparameters

  • source_idintegerverplicht

Queryparameters

  • sync_numberinteger

Headerparameters

  • Idempotency-Keystring

    Sleutel om een schrijfactie veilig opnieuw te proberen: 1 tot 255 afdrukbare ASCII-tekens; een UUID v4 per logische bewerking wordt aanbevolen. Een nieuwe poging met dezelfde sleutel binnen 24 uur voert de bewerking niet opnieuw uit: Sursa geeft de opgeslagen response terug (status, headers en body) met de header Idempotency-Replayed: true. Dezelfde sleutel met een andere methode, een ander pad, een andere Content-Type of een andere body geeft 409 api.idempotency_mismatch; zolang het eerste request nog loopt, 409 api.idempotency_in_progress met Retry-After: 1. Na een 5xx- of 429-response wordt de sleutel vrijgegeven en voert een nieuwe poging de bewerking opnieuw uit. De sleutel geldt per organisatie en per aanroeper (API-sleutel, gebruiker of bronsleutel).

    length ≥ 1, length ≤ 255

Request-body

application/json

Object: PushDocument

  • external_idstringverplicht

    Je stabiele ID van het document. Met dezelfde ID wordt het document vervangen.

    length ≤ 512

  • titlestringverplicht

    length ≤ 500

  • urlstring

    Link naar het document in je systeem (http of https).

  • contentstring

    Inhoud (maximaal 5 MB).

  • content_typestring

    Toegestane waarden: htmlmarkdowntext

    Standaard: "html"

  • patharray of string | string

    Mappen van het document: een array met namen of een string gescheiden door “/” (maximaal 10 niveaus).

  • permissionsPushPermissions
  • tagsarray of string

    items ≤ 50

  • author_emailstring

    Auteur. Wordt eigenaar van de kaart als dit een gebruiker van Sursa is.

  • updated_atstring (date-time)

    Tijdstip van wijziging in je systeem (onderdeel van de documentversie).

  • metadata van de kaart van het document (sinds 1.62.0): het object vervangt de vorige metadata van de kaart, {} verwijdert alle paren; zonder het veld metadata verandert de metadata van de kaart niet.

  • categorystring

    Categorie van de kaart: de sleutel van een categorie van de organisatie (GET /v1/categories), sinds 1.62.0.

    length ≤ 64

  • verifiersPushVerifiers
  • verify_interval_daysinteger

    Verificatie-interval van de kaart in dagen (sinds 1.62.0); zonder dit veld het interval van de bron.

    ≥ 1, ≤ 3650

  • upload_idstring

    Bestand van het document uit een upload in delen (upl_…, sinds 1.62.0) in plaats van content. Een upload wordt één keer gebruikt; hetzelfde document opnieuw sturen met dezelfde upload_id verbruikt hem niet. Zolang uploads in delen niet beschikbaar zijn op de installatie, wordt het document afgewezen met de reden file_rejected.

    length ≤ 64

  • attachmentsarray of string

    Bijlagen van het document als uploads in delen (upl_…, sinds 1.62.0): elke bijlage wordt een eigen kaart van de bron met dezelfde map, rechten en kaartvelden. Een bijlage die in een nieuwe versie van het document ontbreekt, wordt gearchiveerd.

    items ≤ 20

multipart/form-data

  • filestring (binary)verplicht
  • documentstring

    JSON-metadata van het document (de velden van PushDocument zonder content).

  • external_idstring
  • titlestring
  • urlstring
  • pathstring
  • tagsstring

Responses

200Geschreven

Responseheaders

  • RateLimit-Policy

    Geldende limieten, in het formaat van het IETF-concept draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s, "<name>";q=<quota>;w=<window in seconds>. key is de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is het user, zonder authenticatiegegevens ip); minute, day en month zijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.

  • RateLimit

    Wat er over is van elke limiet in RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limiet van de strengste regel in RateLimit-Policy (die met de minste resterende requests).

  • X-RateLimit-Remaining

    Resterende requests onder de strengste limiet.

  • X-RateLimit-Reset

    Seconden tot de strengste limiet wordt teruggezet.

  • Idempotency-Replayed

    true: de response is opnieuw afgespeeld uit de opgeslagen response voor deze Idempotency-Key; de bewerking is niet opnieuw uitgevoerd.

application/json

Object: PushDocumentResult

  • external_idstringverplicht
  • resultstringverplicht

    skipped: een document van een batch atomic is niet toegepast omdat een ander document is afgewezen (sinds 1.62.0).

    Toegestane waarden: createdupdatedunchangeddeletednot_founderrorskipped

  • versionstring

    Documentversie (SHA-256 van de inhoud en de metadata).

  • errorstring

    Reden (als result = error).

  • card_idstring | null

    Kaart van het document, als die al is geschreven (sinds 1.62.0).

400Het request is ongeldig: een parameterwaarde of de toestand van het object staat de actie niet toe (`detail` is een melding).

Responseheaders

  • RateLimit-Policy

    Geldende limieten, in het formaat van het IETF-concept draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s, "<name>";q=<quota>;w=<window in seconds>. key is de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is het user, zonder authenticatiegegevens ip); minute, day en month zijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.

  • RateLimit

    Wat er over is van elke limiet in RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limiet van de strengste regel in RateLimit-Policy (die met de minste resterende requests).

  • X-RateLimit-Remaining

    Resterende requests onder de strengste limiet.

  • X-RateLimit-Reset

    Seconden tot de strengste limiet wordt teruggezet.

application/json

Object: Error

401Er zijn geen authenticatiegegevens meegestuurd (geen sessiecookie en geen API-sleutel), of de sleutel is niet gevonden.

Responseheaders

  • RateLimit-Policy

    Geldende limieten, in het formaat van het IETF-concept draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s, "<name>";q=<quota>;w=<window in seconds>. key is de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is het user, zonder authenticatiegegevens ip); minute, day en month zijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.

  • RateLimit

    Wat er over is van elke limiet in RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limiet van de strengste regel in RateLimit-Policy (die met de minste resterende requests).

  • X-RateLimit-Remaining

    Resterende requests onder de strengste limiet.

  • X-RateLimit-Reset

    Seconden tot de strengste limiet wordt teruggezet.

application/json

Object: Error

403De actie is niet toegestaan: de rol volstaat niet, er is geen toegang tot de collectie of kaart, het request draait in de modus “View as”, of de organisatie is opgeschort of verwijderd (`detail` is een object met `code: org_suspended | org_deleted`).

Responseheaders

  • RateLimit-Policy

    Geldende limieten, in het formaat van het IETF-concept draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s, "<name>";q=<quota>;w=<window in seconds>. key is de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is het user, zonder authenticatiegegevens ip); minute, day en month zijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.

  • RateLimit

    Wat er over is van elke limiet in RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limiet van de strengste regel in RateLimit-Policy (die met de minste resterende requests).

  • X-RateLimit-Remaining

    Resterende requests onder de strengste limiet.

  • X-RateLimit-Reset

    Seconden tot de strengste limiet wordt teruggezet.

application/json

Object: Error

404Het object bestaat niet of is niet voor jou beschikbaar. De API bevestigt niet dat een afgeschermd object bestaat.

Responseheaders

  • RateLimit-Policy

    Geldende limieten, in het formaat van het IETF-concept draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s, "<name>";q=<quota>;w=<window in seconds>. key is de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is het user, zonder authenticatiegegevens ip); minute, day en month zijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.

  • RateLimit

    Wat er over is van elke limiet in RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limiet van de strengste regel in RateLimit-Policy (die met de minste resterende requests).

  • X-RateLimit-Remaining

    Resterende requests onder de strengste limiet.

  • X-RateLimit-Reset

    Seconden tot de strengste limiet wordt teruggezet.

application/json

Object: Error

409De toestand van het object staat de actie niet toe, bijvoorbeeld een duplicaat, een lopende indexering of een job die al is verwerkt.

Responseheaders

  • RateLimit-Policy

    Geldende limieten, in het formaat van het IETF-concept draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s, "<name>";q=<quota>;w=<window in seconds>. key is de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is het user, zonder authenticatiegegevens ip); minute, day en month zijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.

  • RateLimit

    Wat er over is van elke limiet in RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limiet van de strengste regel in RateLimit-Policy (die met de minste resterende requests).

  • X-RateLimit-Remaining

    Resterende requests onder de strengste limiet.

  • X-RateLimit-Reset

    Seconden tot de strengste limiet wordt teruggezet.

application/json

Object: Error

413De request-body overschrijdt de toegestane grootte.

Responseheaders

  • RateLimit-Policy

    Geldende limieten, in het formaat van het IETF-concept draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s, "<name>";q=<quota>;w=<window in seconds>. key is de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is het user, zonder authenticatiegegevens ip); minute, day en month zijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.

  • RateLimit

    Wat er over is van elke limiet in RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limiet van de strengste regel in RateLimit-Policy (die met de minste resterende requests).

  • X-RateLimit-Remaining

    Resterende requests onder de strengste limiet.

  • X-RateLimit-Reset

    Seconden tot de strengste limiet wordt teruggezet.

application/json

Object: Error

415Het bestandsformaat wordt niet ondersteund.

Responseheaders

  • RateLimit-Policy

    Geldende limieten, in het formaat van het IETF-concept draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s, "<name>";q=<quota>;w=<window in seconds>. key is de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is het user, zonder authenticatiegegevens ip); minute, day en month zijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.

  • RateLimit

    Wat er over is van elke limiet in RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limiet van de strengste regel in RateLimit-Policy (die met de minste resterende requests).

  • X-RateLimit-Remaining

    Resterende requests onder de strengste limiet.

  • X-RateLimit-Reset

    Seconden tot de strengste limiet wordt teruggezet.

application/json

Object: Error

422Validatiefout: de body of de parameters komen niet overeen met het schema (`detail` is een lijst met validatiefouten), of een parameterwaarde valt buiten het bereik (`detail` is een melding).

Responseheaders

  • RateLimit-Policy

    Geldende limieten, in het formaat van het IETF-concept draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s, "<name>";q=<quota>;w=<window in seconds>. key is de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is het user, zonder authenticatiegegevens ip); minute, day en month zijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.

  • RateLimit

    Wat er over is van elke limiet in RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limiet van de strengste regel in RateLimit-Policy (die met de minste resterende requests).

  • X-RateLimit-Remaining

    Resterende requests onder de strengste limiet.

  • X-RateLimit-Reset

    Seconden tot de strengste limiet wordt teruggezet.

application/json

Object: Error

429Te veel requests (`api.rate_limited`), het quotum van de organisatie voor de minuut, dag of maand is op (`api.quota_exceeded`; `error.details` bevat `quota`, `limit` en `reset_at`), de limiet van de organisatie is bereikt, of de antwoorddienst is bezet (`answers.engine_busy`). Wacht de tijd af die in de header `Retry-After` staat.

Responseheaders

  • Retry-After

    Aantal seconden dat je moet wachten voordat je het request opnieuw probeert.

  • RateLimit-Policy

    Geldende limieten, in het formaat van het IETF-concept draft-ietf-httpapi-ratelimit-headers: items gescheiden door komma’s, "<name>";q=<quota>;w=<window in seconds>. key is de requestsnelheid van de API-sleutel (het quotum is de piek, het venster de tijd om die volledig aan te vullen; voor een sessie is het user, zonder authenticatiegegevens ip); minute, day en month zijn de quota van de organisatie voor de kalenderminuut, -dag en -maand in UTC.

  • RateLimit

    Wat er over is van elke limiet in RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Limiet van de strengste regel in RateLimit-Policy (die met de minste resterende requests).

  • X-RateLimit-Remaining

    Resterende requests onder de strengste limiet.

  • X-RateLimit-Reset

    Seconden tot de strengste limiet wordt teruggezet.

application/json

Object: Error

Foutcodes

Codes die dit endpoint in error.code kan teruggeven, naast de algemene codes van elk request.

Veilig opnieuw proberen

Stuur bij elke POST en PATCH een header Idempotency-Key mee (bijvoorbeeld een UUID). Een nieuwe poging met dezelfde sleutel binnen 24 uur geeft de opgeslagen response terug, zonder het request opnieuw uit te voeren.

Snelheidslimieten

Responses bevatten de headers RateLimit en RateLimit-Policy en de eerdere X-RateLimit-Limit, X-RateLimit-Remaining en X-RateLimit-Reset. Een response met status 429 bevat Retry-After in seconden: wacht en probeer het daarna opnieuw.

← sources · API-referentie