POST/v1/push/sources/{source_id}/documents
Skicka ett dokument (skapa eller ersätt)
push_upsert_document
Skapar eller ersätter ett dokument efter external_id. Med JSON skickar du innehållet i content (content_type: html, markdown eller text, upp till 5 MB). Med multipart/form-data skickar du filen i delen file (upp till 100 MB, samma format som vid uppladdning till kunskapsbasen) och metadata i delen document (JSON med samma form utan content) eller som separata fält external_id, title, url, path, tags. sync_number är numret på den öppna synkningen. Utan det skrivs dokumentet direkt (direktskrivning), men nästa fullständiga synkning tar bort det om det inte skickas igen. Om samma dokument skickas igen returneras unchanged (idempotent). Dokumentet blir ett kort vid källans nästa synkning (inom en minut; inom en öppen synkning efter att den har stängts). Från och med 1.62.0: kortfält (metadata, category, verifiers, verify_interval_days), en fil från en uppladdning i delar (upload_id) och bilagor (attachments); svaret innehåller status och card_id (dokumentets resultat). En källas gräns för antal dokument beror på prisplanen.
Autentisering
Skicka en API-nyckel i huvudet Authorization: Authorization: Bearer <nyckel>.
Sökvägsparametrar
source_idintegerobligatorisk
Frågeparametrar
sync_numberinteger
Parametrar i huvuden
Idempotency-KeystringNyckel för ett säkert nytt försök med en skrivning: 1–255 utskrivbara ASCII-tecken; ett UUID v4 per logisk åtgärd rekommenderas. Ett nytt försök med samma nyckel inom 24 timmar kör inte åtgärden igen, utan returnerar det sparade svaret (status, huvuden och brödtext) med huvudet
Idempotency-Replayed: true. Samma nyckel med en annan metod, sökväg,Content-Typeeller brödtext returnerar409 api.idempotency_mismatch; medan det första anropet fortfarande pågår returneras409 api.idempotency_in_progressmedRetry-After: 1. Efter ett 5xx- eller 429-svar frigörs nyckeln, och ett nytt försök kör åtgärden igen. Nyckeln gäller inom organisationen och för anroparen (API-nyckel, användare eller källnyckel för en egen källa).length ≥ 1, length ≤ 255
Anropets brödtext
application/json
external_idstringobligatoriskDitt stabila id för dokumentet. Om du skickar samma id ersätts dokumentet.
length ≤ 512
titlestringobligatorisklength ≤ 500
urlstringLänk till dokumentet i ditt system (http eller https).
contentstringInnehåll (högst 5 MB).
content_typestringTillåtna värden:
htmlmarkdowntextStandard: "html"
patharray of string | stringDokumentets mappar: en array med namn eller en sträng åtskild med ”/” (högst 10 nivåer).
permissionsPushPermissionstagsarray of stringitems ≤ 50
author_emailstringFörfattare. Blir ansvarig för kortet om det är en användare i Sursa.
updated_atstring (date-time)Ändringstid i ditt system (en del av dokumentets version).
metadataMetadataPatchmetadataför dokumentets kort (sedan 1.62.0): objektet ersätter kortets tidigare objekt,{}tar bort alla par; utan fältetmetadataändras inte kortets metadata.categorystringKortets kategori: nyckeln för en kategori i organisationen (
GET /v1/categories), sedan 1.62.0.length ≤ 64
verifiersPushVerifiersverify_interval_daysintegerKortets verifieringsintervall i dagar (sedan 1.62.0); utan det gäller källans intervall.
≥ 1, ≤ 3650
upload_idstringDokumentets fil från en uppladdning i delar (
upl_…, sedan 1.62.0) i stället förcontent. En uppladdning används en gång; om samma dokument skickas igen med sammaupload_idförbrukas den inte. Så länge uppladdning i delar inte är tillgänglig i installationen avvisas dokumentet med orsakenfile_rejected.length ≤ 64
attachmentsarray of stringDokumentets bilagor som uppladdningar i delar (
upl_…, sedan 1.62.0): var och en blir ett eget kort i källan med samma mapp, behörigheter och kortfält. En bilaga som saknas i en ny version av dokumentet arkiveras.items ≤ 20
multipart/form-data
filestring (binary)obligatoriskdocumentstringDokumentets metadata i JSON (fälten i
PushDocumentutancontent).external_idstringtitlestringurlstringpathstringtagsstring
Svar
200Dokumentet har skrivits
Svarshuvuden
RateLimit-PolicyGällande gränser i formatet från IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster"<name>";q=<quota>;w=<window in seconds>.keyär API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är detuser, utan autentiseringsuppgifterip);minute,dayochmonthär organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.RateLimitVad som återstår av varje gräns i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGränsen för den striktaste posten i
RateLimit-Policy(den med minst antal återstående anrop).X-RateLimit-RemainingÅterstående anrop inom den striktaste gränsen.
X-RateLimit-ResetSekunder tills den striktaste gränsen nollställs.
Idempotency-Replayedtruebetyder att svaret spelades upp från det sparade svaret för dennaIdempotency-Key: åtgärden kördes inte igen.
application/json
external_idstringobligatoriskresultstringobligatoriskskipped: ett dokument i en batch medatomictillämpades inte eftersom ett annat dokument avvisades (sedan 1.62.0).Tillåtna värden:
createdupdatedunchangeddeletednot_founderrorskippedversionstringDokumentets version (SHA-256 för innehållet och metadata).
errorstringOrsak (när
result=error).statusPushDocumentStatusValuecard_idstring | nullDokumentets kort, om det redan är skrivet (sedan 1.62.0).
reasonPushDocumentReason
400Anropet är ogiltigt: ett parametervärde eller objektets tillstånd tillåter inte åtgärden (`detail` är ett meddelande).
Svarshuvuden
RateLimit-PolicyGällande gränser i formatet från IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster"<name>";q=<quota>;w=<window in seconds>.keyär API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är detuser, utan autentiseringsuppgifterip);minute,dayochmonthär organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.RateLimitVad som återstår av varje gräns i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGränsen för den striktaste posten i
RateLimit-Policy(den med minst antal återstående anrop).X-RateLimit-RemainingÅterstående anrop inom den striktaste gränsen.
X-RateLimit-ResetSekunder tills den striktaste gränsen nollställs.
application/json
401Inga autentiseringsuppgifter skickades (varken en sessionscookie eller en API-nyckel), eller så hittades inte nyckeln.
Svarshuvuden
RateLimit-PolicyGällande gränser i formatet från IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster"<name>";q=<quota>;w=<window in seconds>.keyär API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är detuser, utan autentiseringsuppgifterip);minute,dayochmonthär organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.RateLimitVad som återstår av varje gräns i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGränsen för den striktaste posten i
RateLimit-Policy(den med minst antal återstående anrop).X-RateLimit-RemainingÅterstående anrop inom den striktaste gränsen.
X-RateLimit-ResetSekunder tills den striktaste gränsen nollställs.
application/json
403Åtgärden är inte tillåten: rollen räcker inte, det saknas åtkomst till samlingen eller kortet, anropet körs i läget ”View as” (visa som en annan användare), eller organisationen är avstängd eller borttagen (`detail` är ett objekt med `code: org_suspended | org_deleted`).
Svarshuvuden
RateLimit-PolicyGällande gränser i formatet från IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster"<name>";q=<quota>;w=<window in seconds>.keyär API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är detuser, utan autentiseringsuppgifterip);minute,dayochmonthär organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.RateLimitVad som återstår av varje gräns i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGränsen för den striktaste posten i
RateLimit-Policy(den med minst antal återstående anrop).X-RateLimit-RemainingÅterstående anrop inom den striktaste gränsen.
X-RateLimit-ResetSekunder tills den striktaste gränsen nollställs.
application/json
404Objektet finns inte eller är inte tillgängligt för dig. API:et bekräftar inte att ett begränsat objekt finns.
Svarshuvuden
RateLimit-PolicyGällande gränser i formatet från IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster"<name>";q=<quota>;w=<window in seconds>.keyär API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är detuser, utan autentiseringsuppgifterip);minute,dayochmonthär organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.RateLimitVad som återstår av varje gräns i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGränsen för den striktaste posten i
RateLimit-Policy(den med minst antal återstående anrop).X-RateLimit-RemainingÅterstående anrop inom den striktaste gränsen.
X-RateLimit-ResetSekunder tills den striktaste gränsen nollställs.
application/json
409Objektets tillstånd tillåter inte åtgärden, till exempel en dubblett, en pågående indexering eller ett jobb som redan har bearbetats.
Svarshuvuden
RateLimit-PolicyGällande gränser i formatet från IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster"<name>";q=<quota>;w=<window in seconds>.keyär API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är detuser, utan autentiseringsuppgifterip);minute,dayochmonthär organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.RateLimitVad som återstår av varje gräns i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGränsen för den striktaste posten i
RateLimit-Policy(den med minst antal återstående anrop).X-RateLimit-RemainingÅterstående anrop inom den striktaste gränsen.
X-RateLimit-ResetSekunder tills den striktaste gränsen nollställs.
application/json
413Anropets brödtext överskrider den tillåtna storleken.
Svarshuvuden
RateLimit-PolicyGällande gränser i formatet från IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster"<name>";q=<quota>;w=<window in seconds>.keyär API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är detuser, utan autentiseringsuppgifterip);minute,dayochmonthär organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.RateLimitVad som återstår av varje gräns i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGränsen för den striktaste posten i
RateLimit-Policy(den med minst antal återstående anrop).X-RateLimit-RemainingÅterstående anrop inom den striktaste gränsen.
X-RateLimit-ResetSekunder tills den striktaste gränsen nollställs.
application/json
415Filformatet stöds inte.
Svarshuvuden
RateLimit-PolicyGällande gränser i formatet från IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster"<name>";q=<quota>;w=<window in seconds>.keyär API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är detuser, utan autentiseringsuppgifterip);minute,dayochmonthär organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.RateLimitVad som återstår av varje gräns i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGränsen för den striktaste posten i
RateLimit-Policy(den med minst antal återstående anrop).X-RateLimit-RemainingÅterstående anrop inom den striktaste gränsen.
X-RateLimit-ResetSekunder tills den striktaste gränsen nollställs.
application/json
422Valideringsfel: brödtexten eller parametrarna stämmer inte med schemat (`detail` är en lista med valideringsfel), eller så ligger ett parametervärde utanför det tillåtna intervallet (`detail` är ett meddelande).
Svarshuvuden
RateLimit-PolicyGällande gränser i formatet från IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster"<name>";q=<quota>;w=<window in seconds>.keyär API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är detuser, utan autentiseringsuppgifterip);minute,dayochmonthär organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.RateLimitVad som återstår av varje gräns i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGränsen för den striktaste posten i
RateLimit-Policy(den med minst antal återstående anrop).X-RateLimit-RemainingÅterstående anrop inom den striktaste gränsen.
X-RateLimit-ResetSekunder tills den striktaste gränsen nollställs.
application/json
429För många anrop (`api.rate_limited`), organisationens kvot för minuten, dygnet eller månaden är förbrukad (`api.quota_exceeded`; `error.details` innehåller `quota`, `limit` och `reset_at`), organisationens gräns är nådd eller svarstjänsten är upptagen (`answers.engine_busy`). Vänta den tid som anges i huvudet `Retry-After`.
Svarshuvuden
Retry-AfterAntal sekunder att vänta innan du skickar anropet igen.
RateLimit-PolicyGällande gränser i formatet från IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerade poster"<name>";q=<quota>;w=<window in seconds>.keyär API-nyckelns anropsfrekvens (kvoten är toppen (burst), fönstret är tiden tills den har fyllts på helt; för en session är detuser, utan autentiseringsuppgifterip);minute,dayochmonthär organisationens kvoter för kalenderminuten, kalenderdygnet och kalendermånaden i UTC.RateLimitVad som återstår av varje gräns i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGränsen för den striktaste posten i
RateLimit-Policy(den med minst antal återstående anrop).X-RateLimit-RemainingÅterstående anrop inom den striktaste gränsen.
X-RateLimit-ResetSekunder tills den striktaste gränsen nollställs.
application/json
Felkoder
Koder som den här slutpunkten kan returnera i error.code, utöver de allmänna koderna för alla anrop.
- 409api.idempotency_in_progress
- 400api.idempotency_key_invalid
- 409api.idempotency_mismatch
- 401sources.push_key_invalid
- 403sources.feature_disabled
- 400sources.push_document_invalid
- 404sources.push_sync_not_found
- 409sources.push_sync_closed
- 409sources.push_too_many_documents
- 404sources.not_found
- 403api_keys.scope
- 403org.suspended
- 403org.deleted
- 400api.metadata_invalid
- 413api.payload_too_large
- 429api.rate_limited
Säkra nya försök
Skicka huvudet Idempotency-Key (till exempel ett UUID) med varje POST och PATCH. Ett nytt försök med samma nyckel inom 24 timmar returnerar det sparade svaret i stället för att köra anropet igen.
Hastighetsbegränsningar
Svaren innehåller huvudena RateLimit och RateLimit-Policy samt de tidigare X-RateLimit-Limit, X-RateLimit-Remaining och X-RateLimit-Reset. Ett 429-svar har Retry-After i sekunder: vänta och försök igen.