POST/v1/push/sources/{source_id}/documents
Send et dokument (opprett eller erstatt)
push_upsert_document
Oppretter eller erstatter et dokument etter external_id. Med JSON sender du innholdet i content (content_type: html, markdown eller text, opptil 5 MB). Med multipart/form-data sender du filen i delen file (opptil 100 MB, de samme formatene som ved opplasting til kunnskapsbasen) og metadataene i delen document (JSON med samme form uten content) eller som separate felt external_id, title, url, path, tags. sync_number er nummeret på den åpne synkroniseringen. Uten det skrives dokumentet med en gang (direkte opprettelse eller erstatning), men neste fulle synkronisering sletter det med mindre det sendes på nytt. Hvis det samme dokumentet sendes på nytt, returneres unchanged (idempotent). Dokumentet blir et kort ved neste synkronisering av kilden (innen ett minutt; i en åpen synkronisering etter at den er lukket). Fra og med 1.62.0: kortfelt (metadata, category, verifiers, verify_interval_days), en fil fra en flerdelt opplasting (upload_id) og vedlegg (attachments); svaret inneholder status og card_id (resultatet for dokumentet). Grensen for antall dokumenter i en kilde avhenger av prisplanen.
Autentisering
Send en API-nøkkel i headeren Authorization: Authorization: Bearer <nøkkel>.
Baneparametere
source_idintegerobligatorisk
Spørringsparametere
sync_numberinteger
Headerparametere
Idempotency-KeystringNøkkel for et trygt nytt forsøk på en skriveoperasjon: 1 til 255 utskrivbare ASCII-tegn; en UUID v4 per logisk operasjon anbefales. Et nytt forsøk med samme nøkkel innen 24 timer kjører ikke operasjonen på nytt: det returnerer det lagrede svaret (status, headere og brødtekst) med headeren
Idempotency-Replayed: true. Samme nøkkel med en annen metode, bane,Content-Typeeller brødtekst returnerer409 api.idempotency_mismatch; mens den første forespørselen fortsatt kjører,409 api.idempotency_in_progressmedRetry-After: 1. Etter et 5xx- eller 429-svar frigjøres nøkkelen, og et nytt forsøk kjører operasjonen på nytt. Nøkkelen gjelder per organisasjon og per kaller (API-nøkkel, bruker eller nøkkel for en egendefinert kilde).length ≥ 1, length ≤ 255
Forespørselens brødtekst
application/json
external_idstringobligatoriskDen stabile ID-en din for dokumentet. Sendes den samme ID-en, erstattes dokumentet.
length ≤ 512
titlestringobligatorisklength ≤ 500
urlstringLenke til dokumentet i systemet ditt (http eller https).
contentstringInnhold (opptil 5 MB).
content_typestringTillatte verdier:
htmlmarkdowntextStandard: "html"
patharray of string | stringDokumentets mapper: et array med navn eller en streng adskilt med «/» (opptil 10 nivåer).
permissionsPushPermissionstagsarray of stringitems ≤ 50
author_emailstringForfatter. Blir ansvarlig for kortet hvis dette er en Sursa-bruker.
updated_atstring (date-time)Endringstidspunktet i systemet ditt (del av dokumentversjonen).
metadataMetadataPatchmetadatafor dokumentets kort (fra 1.62.0): objektet erstatter kortets tidligere objekt,{}fjerner alle par; uten feltetmetadataendres ikke kortets metadata.categorystringKortets kategori: nøkkelen til en kategori i organisasjonen (
GET /v1/categories), fra 1.62.0.length ≤ 64
verifiersPushVerifiersverify_interval_daysintegerKortets verifiseringsintervall i dager (fra 1.62.0); uten feltet gjelder kildens intervall.
≥ 1, ≤ 3650
upload_idstringDokumentets fil fra en flerdelt opplasting (
upl_…, fra 1.62.0) i stedet forcontent. En opplasting brukes én gang; sendes det samme dokumentet med den sammeupload_idpå nytt, brukes den ikke opp. Så lenge flerdelte opplastinger ikke er tilgjengelige i installasjonen, avvises dokumentet med årsakenfile_rejected.length ≤ 64
attachmentsarray of stringDokumentets vedlegg som flerdelte opplastinger (
upl_…, fra 1.62.0): hvert vedlegg blir et eget kort i kilden med den samme mappen, de samme tillatelsene og de samme kortfeltene. Et vedlegg som mangler i en ny versjon av dokumentet, arkiveres.items ≤ 20
multipart/form-data
filestring (binary)obligatoriskdocumentstringJSON-metadata for dokumentet (feltene i
PushDocumentutencontent).external_idstringtitlestringurlstringpathstringtagsstring
Svar
200Skrevet
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
Idempotency-Replayedtruebetyr at svaret ble gjentatt fra det lagrede svaret for denneIdempotency-Key: operasjonen ble ikke kjørt på nytt.
application/json
external_idstringobligatoriskresultstringobligatoriskskipped: et dokument i enatomicbatch ble ikke tatt i bruk fordi et annet dokument ble avvist (fra 1.62.0).Tillatte verdier:
createdupdatedunchangeddeletednot_founderrorskippedversionstringDokumentversjon (SHA-256 for innholdet og metadataene).
errorstringÅrsak (når
result=error).statusPushDocumentStatusValuecard_idstring | nullDokumentets kort, hvis det allerede er skrevet (fra 1.62.0).
reasonPushDocumentReason
400Forespørselen er ugyldig: en parameterverdi eller objektets tilstand tillater ikke handlingen (`detail` er en melding).
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
401Ingen påloggingsinformasjon ble sendt (verken øktinformasjonskapsel eller API-nøkkel), eller nøkkelen ble ikke funnet.
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
403Handlingen er ikke tillatt: rollen er utilstrekkelig, det finnes ingen tilgang til samlingen eller kortet, forespørselen kjører i modusen «View as», eller organisasjonen er suspendert eller slettet (`detail` er et objekt med `code: org_suspended | org_deleted`).
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
404Objektet finnes ikke eller er ikke tilgjengelig for deg. API-et bekrefter ikke at et objekt med begrenset tilgang finnes.
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
409Objektets tilstand tillater ikke handlingen, for eksempel et duplikat, en indeksering som pågår, eller en jobb som allerede er behandlet.
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
413Forespørselens brødtekst overskrider tillatt størrelse.
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
415Filformatet støttes ikke.
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
422Valideringsfeil: brødteksten eller parameterne samsvarer ikke med skjemaet (`detail` er en liste over valideringsfeil), eller en parameterverdi er utenfor tillatt område (`detail` er en melding).
Headere i svaret
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
429For mange forespørsler (`api.rate_limited`), organisasjonens kvote for minuttet, døgnet eller måneden er brukt opp (`api.quota_exceeded`; `error.details` inneholder `quota`, `limit` og `reset_at`), organisasjonens grense er nådd, eller svartjenesten er opptatt (`answers.engine_busy`). Vent så lenge som headeren `Retry-After` angir.
Headere i svaret
Retry-AfterAntall sekunder du skal vente før du prøver forespørselen på nytt.
RateLimit-PolicyGjeldende grenser i formatet fra IETF-utkastet
draft-ietf-httpapi-ratelimit-headers: kommaseparerte elementer"<name>";q=<quota>;w=<window in seconds>.keyer forespørselsraten til API-nøkkelen (kvoten er burst, tidsvinduet er tiden det tar å fylle den helt opp igjen; for en økt er detuser, uten påloggingsinformasjonip);minute,dayogmonther organisasjonens kvoter for kalenderminuttet, kalenderdøgnet og kalendermåneden i UTC.RateLimitHva som gjenstår av hver grense i
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitGrensen for den strengeste oppføringen i
RateLimit-Policy(den med færrest gjenværende forespørsler).X-RateLimit-RemainingGjenværende forespørsler under den strengeste grensen.
X-RateLimit-ResetSekunder til den strengeste grensen nullstilles.
application/json
Feilkoder
Kodene denne operasjonen kan returnere i error.code, i tillegg til de generelle kodene for alle forespørsler.
- 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
Trygge nye forsøk
Send en Idempotency-Key-header (for eksempel en UUID) med hver POST og PATCH. Et nytt forsøk med samme nøkkel innen 24 timer returnerer det lagrede svaret i stedet for å kjøre forespørselen på nytt.
Hastighetsgrenser
Svarene har headerne RateLimit og RateLimit-Policy og de eldre X-RateLimit-Limit, X-RateLimit-Remaining og X-RateLimit-Reset. Et 429-svar har Retry-After i sekunder: Vent, og prøv på nytt.