Skub dokumenter fra dine egne systemer
Opret en datakilde, skub dokumenter ind i den med en indekserings-API-nøgle, vælg hvem der kan læse dem, og sæt den på pause eller slet den, når kilden ændrer sig.
Push-API'et indekserer dokumenter fra systemer, som Nordvec ikke har en connector til: en eksport fra en intern wiki, et billetarkiv, en database med noter. Du sender teksten og angiver, hvem der må læse den; Nordvec gemmer den i EU, indekserer den og gør den søgbar og citerbar som ethvert andet dokument. Hvert push'et dokument lander i en datakilde, en navngiven beholder i dit arbejdsområde, som en arbejdsområde-administrator opretter først. Et push, der navngiver en datakilde, som ikke findes, eller en, der er sat på pause, afvises.
Åbn Arbejdsområde-indstillinger > Datakilder og vælg Opret datakilde. Administratorer og ejere af arbejdsområdet kan gøre dette; i et personligt arbejdsområde er det dig.
| Felt | Bemærkninger |
|---|---|
| Navn | Hvad folk ser i indstillingslisten. Op til 200 tegn. |
| Slug | Hvad hvert push navngiver. Små bogstaver, cifre, - og _, starter med et bogstav eller ciffer, op til 200 tegn. Det kan ikke ændres senere. |
Sluggen confluence-export bruges i eksemplerne nedenfor.
Pushes autentificerer med en API-nøgle af klassen Indexing, som har index:write-scopet; tilføj index:status for at spore indtagelse og index:delete for at fjerne dokumenter eller erstatte en hel datakilde. Opret en under Arbejdsområde-indstillinger > API-nøgler; den rå nøgle starter med nv_eu_idx_ og vises kun én gang. Se Authentication. Hver anmodning navngiver også dit arbejdsområde-id som tenantId, det id, der står i dit arbejdsområdes adresse i appen (/w/<workspace id>/...), og det skal være det arbejdsområde, som nøglen tilhører.
/documents/push opretter dokumentet eller opdaterer det, hvis et dokument med samme id allerede findes i datakilden.
curl https://nordvec.com/api/v1/documents/push \
-H "Authorization: Bearer $NORDVEC_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: page-4711-2026-09-28" \
-d '{
"tenantId": "YOUR_WORKSPACE_ID",
"document": {
"id": "page-4711",
"title": "Travel expense policy",
"datasource": "confluence-export",
"body": { "mimeType": "text/markdown", "content": "# Travel expenses\n..." },
"permissions": {},
"sourceUrl": "https://wiki.example.com/pages/4711",
"type": "policy"
}
}'{ "documentId": "page-4711", "status": "queued", "updated": false }ider dit stabile id for dokumentet inden for datakilden. Hvis du pusher den sammeidigen, opdateres det; uændret indhold genkendes på dets hash og indekseres ikke to gange.body.mimeTypeer en aftext/plain,text/markdown,text/html,application/pdfeller Word-, Excel- og PowerPoint-typerne (.docx,.xlsx,.pptx). Binært indhold sendes base64-kodet.sourceUrlbliver "spring til kilde"-linket på hver citation af dokumentet. Spring det over ved et genpush for at beholde det gemte, eller sendnullfor at rydde det.typeangiver dokumentetscontent_type, som søgning og lister filtrerer på.
Hele anmodningsbodyn er begrænset til 1 MB, så en stor fil eller et stort batch svarer 413; del det op.
permissions er påkrævet ved hvert push, så en delingsbeslutning aldrig træffes ved at udelade et felt. I en datakilde, der er synlig for arbejdsområdet:
permissions | Hvem der kan læse dokumentet |
|---|---|
{} | Alle medlemmer af arbejdsområdet |
{ "allowedUsers": ["ana@example.com"] } | Kun de personer, der er angivet |
{ "allowedGroups": ["GROUP_ID"] } | Medlemmer af de pågældende arbejdsområde-grupper, herunder indlejrede grupper |
{ "allowAllTenantMembers": false } | Afvist: et dokument, som ingen kan læse, er en sletning |
Hvis du vil ændre, hvem der kan læse et dokument uden at sende dets indhold igen, skal du bruge POST /documents/push/permissions. Hvis du gør et allerede-begrænset dokument synligt for hele arbejdsområdet, kræver det desuden index:acl-widen-scopet, så en rutinesynkronisering ikke stille og roligt ophæver en begrænsning, som nogen har indstillet manuelt.
/documents/push/bulk tager op til 100 dokumenter for én datakilde pr. kald. Svaret tæller accepted og rejected og giver et resultat pr. dokument, så ét dårligt dokument ikke får hele batchen til at fejle. Grænsen på 1 MB for kroppen gælder pr. kald, så del store uploads op i flere kald under samme uploadId.
curl https://nordvec.com/api/v1/documents/push/bulk \
-H "Authorization: Bearer $NORDVEC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tenantId": "YOUR_WORKSPACE_ID",
"uploadId": "nightly-2026-09-28",
"datasource": "confluence-export",
"documents": [
{ "id": "page-4711", "title": "Travel expense policy", "datasource": "confluence-export",
"body": { "mimeType": "text/plain", "content": "..." }, "permissions": {} }
]
}'Når dit system kan liste alt, hvad en datakilde skal indeholde, kan du sende den fulde liste som én upload-session. Dokumenterne, som ikke længere er i listen, flyttes til papirkurven, når sessionen lukker. Sessioner kræver en indexing-API-nøgle med både index:delete og index:write, fordi lukningen fjerner dokumenter. Den nøgle, der åbner en session, er den eneste, der kan fortsætte den.
- Send den første side med
"isFirstPage": true. Det er side0. - Send hver yderligere side med dens
pageIndex(1,2, ...), i vilkårlig rækkefølge. En side, der sendes to gange, tæller én gang, så et genforsøg er altid sikkert. - Send den sidste side med
"isLastPage": trueog denspageIndex. En liste, der passer på én side, senderisFirstPageogisLastPagesammen. Den sidste side må ikke indeholde dokumenter.
Hver side bruger den samme uploadId, og hvert svar indeholder sessionens fremskridt under upload. Sessionen lukker først, når alle sider fra 0 til den sidste er modtaget. Når den lukker, flyttes hvert dokument i datakilden, som ingen side i sessionen nævnte og som eksisterede, før sessionen blev åbnet, til papirkurven. Ethvert andet push til datakilden, mens sessionen kører, bevarer det dokument, det nævner, det gælder et enkelt push, en batch uden sessionfelter, en opdatering af rettigheder og en genindsendelse af uændret indhold. Papirkurven gemmer, hvad lukningen flyttede dertil, i 30 dage. Hvis du pusher et dokument igen, kommer det tilbage, og det samme gør en gendannelse af hele sessionen (se nedenfor).
En session, der ikke modtager nogen side i 24 timer, udløber og lukker uden at fjerne noget. Et afvist side besvares med 409 Conflict, skriver ikke noget, og dens data.reason forklarer hvorfor:
reason | Hvad du skal gøre |
|---|---|
upload_incomplete | Send de sider, der er angivet i missingPageIndexes, og derefter den sidste side igen |
deletion_confirmation_required | Lukningen ville slette mere end 20 % af datakilden. Hvis det er korrekt, skal du sende den sidste side igen med "confirmDeletions" sat til wouldTombstone |
deletion_confirmation_too_large | confirmDeletions er større end antallet af dokumenter, datakilden indeholdt, da sessionen blev åbnet. Send det antal, du forventer at fjerne |
upload_in_progress | Der er en session åben på denne datakilde. Hvis det er din nøgles session, skal du afslutte den, vente på, at den udløber, eller starte forfra med "forceRestartUpload": true på din første side. Hvis en anden nøgle har åbnet den, erstatter forceRestartUpload den først, når den ikke har modtaget en side i en time, fra tidspunktet i restartableAt |
upload_expired, upload_missing, upload_restarted | Sessionen er væk. Start en ny med et nyt uploadId |
upload_closed, upload_id_reused | uploadId er opbrugt. Brug en ny |
page_index_required | Din nøgle har en session åben på denne datakilde. Send pageIndex med siden |
For at genoptage efter et nedbrud skal du læse sessionen med GET /documents/push/upload?tenantId=...&datasource=...&uploadId=... (scope index:status). Dens missingPageIndexes lister de sider, der stadig skal sendes.
Fortryd en sessions lukning
Hvis en session har fjernet dokumenter, den ikke skulle have, f.eks. fordi den liste, den sendte, blev afkortet, kan du gendanne dem med ét kald:
curl https://nordvec.com/api/v1/documents/push/upload/restore \
-H "Authorization: Bearer $NORDVEC_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "tenantId": "YOUR_WORKSPACE_ID", "datasource": "confluence-export", "uploadId": "nightly-2026-09-28" }'Den nøgle, der åbnede sessionen, kan gendanne den, og det samme kan en arbejdsområde-administrator, der er logget ind på Nordvec, for en session åbnet med en hvilken som helst nøgle. Hvert dokument, som lukningen flyttede til papirkurven, kommer tilbage med det indhold, det havde, og svaret tæller dem: restored er aktive igen, purged var allerede blevet slettet for altid af papirkurven, og skipped havde ændret sig siden lukningen (blevet push'et igen eller fjernet igen) og blev efterladt, som de er. At gendanne en session to gange svarer med det første gendannelses antal og "replayed": true og sætter alle gendannede dokumenter, der stadig venter på at blive indekseret, i kø, så det er sikkert at gentage en gendannelse, der ikke svarede. En session kan gendannes i op til 35 dage efter, at den blev lukket, og så længe papirkurven stadig indeholder et dokument, den fjernede. Et afvist gendannelsesforsøg besvares med 409 Conflict og dets data.reason:
reason | Hvad det betyder |
|---|---|
upload_not_closed | Sessionen blev aldrig lukket, så den fjernede ikke noget |
upload_in_progress | Der er en session åben på datakilden. Gendan, når den er lukket eller udløbet |
restore_purged | Der er gået mere end 30 dage, og papirkurven har slettet alle dokumenterne. Push dem igen |
workspace_not_entitled | Arbejdsområdets abonnement tillader ikke gendannelse fra papirkurven i øjeblikket |
corpus_cap_exceeded | At bringe dokumenterne tilbage ville overskride arbejdsområdets dokumentgrænse, så ingen kom tilbage. data.wouldRestore er, hvor mange der mangler, og data.headroom hvor mange der er plads til. Gør plads, og gendan igen |
Et push svarer, så snart dokumentet er sat i kø. Spørg om dets fremskridt med GET /documents/push/status (scope index:status), filtreret efter datakilde eller dokument-id. Et dokument går fra queued gennem processing til completed eller til failed med en error.
Et push, der navngiver en ukendt eller pauseret datakilde, besvares med 422 Unprocessable Content. Beskeden navngiver sluggen og linker til Arbejdsområde-indstillinger > Datakilder i dit arbejdsområde, og fejlens data forklarer hvorfor og hvad du skal gøre:
{
"defined": true,
"code": "UNPROCESSABLE_CONTENT",
"status": 422,
"message": "Datasource \"confluence-export\" is paused and accepts no documents. A workspace admin resumes it under Workspace settings > Datasources: https://nordvec.com/w/YOUR_WORKSPACE_ID/workspace/settings?tab=datasources",
"data": {
"why": "The datasource \"confluence-export\" is paused",
"fix": "Resume it at https://nordvec.com/w/YOUR_WORKSPACE_ID/workspace/settings?tab=datasources, then retry the push",
"link": "https://nordvec.com/docs/guides/how-to/push-documents"
}
}Genprøv ikke disse automatisk: de lykkes kun, når en administrator opretter eller genoptager datakilden.
POST /documents/push/delete (scope index:delete) fjerner et push'et dokument efter dets datasource og id. Dokumenter, du holder op med at pushe, fjernes ikke af sig selv: slet hvert enkelt, du tager ud af drift, eller send datakildens fulde liste som en upload-session, som beskrevet ovenfor.
- Sæt på pause afviser ethvert yderligere push til datakilden. Dens dokumenter forbliver søgbare. Et push, der allerede er i gang, når du sætter på pause, fuldføres.
- Genoptag accepterer pushes igen.
- Slet fjerner datakilden og alle dokumenter, der er push'et til den, inklusive deres søgeindeks. Dit eget system beholder sin kopi, så hvis du pusher igen, efter at du har genoprettet datakilden, gendannes de. En sletning kan ikke fortrydes.
Hvis en anden administrator har ændret datakilden, efter at din liste blev indlæst, afvises handlingen, og listen genindlæses, så du kan tage stilling til, hvad der nu er tilgængeligt. Hver oprettelse, pause, genoptagelse og sletning registreres i arbejdsområdets revisionslog.
Indstillingslisten viser, hvem hver datakilde er synlig for. Hvem der kan læse et push'et dokument, afgøres af den permissions, der sendes med det; at oprette, sætte på pause eller slette en datakilde udvider aldrig adgangen til noget.
Push-skrivninger er idempotente: gentag den samme Idempotency-Key ved hvert genforsøg på én skrivning, og et duplikat besvares fra det første forsøg i stedet for at blive anvendt to gange. Se Fejl og ratelimits.