Към съдържанието
Sursa Developers

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

Изпращане на документ (създаване или замяна)

push_upsert_document

Създава или заменя документ по external_id. С JSON изпратете съдържанието в content (content_type: html, markdown или text, до 5 MB). С multipart/form-data изпратете файла в частта file (до 100 MB, същите формати като при качване в базата от знания), а метаданните – в частта document (JSON със същия вид без content) или като отделни полета external_id, title, url, path, tags. sync_number е номерът на отворената синхронизация. Без него документът се записва веднага (директно създаване или замяна), но следващата пълна синхронизация го изтрива, освен ако не бъде изпратен отново. Повторното изпращане на същия документ връща unchanged (идемпотентно). Документът става карта при следващата синхронизация на източника (в рамките на минута; в отворена синхронизация – след затварянето ѝ). От версия 1.62.0: полета на картата (metadata, category, verifiers, verify_interval_days), файл от качване на части (upload_id) и прикачени файлове (attachments); отговорът съдържа status и card_id (резултата за документа). Лимитът на документите на източник зависи от плана.

Удостоверяване

Изпратете API ключ в заглавката Authorization: Authorization: Bearer <ключ>.

Параметри на пътя

  • source_idintegerзадължително

Параметри на заявката (query)

  • sync_numberinteger

Параметри в заглавката

  • Idempotency-Keystring

    Ключ за безопасен повторен опит при запис: от 1 до 255 печатаеми ASCII знака; препоръчва се UUID v4 за всяка логическа операция. Повторен опит със същия ключ в рамките на 24 часа не изпълнява операцията отново: връща записания отговор (статус, заглавки и тяло) със заглавката Idempotency-Replayed: true. Същият ключ с друг метод, път, Content-Type или тяло връща 409 api.idempotency_mismatch, а докато първата заявка още се изпълнява – 409 api.idempotency_in_progress с Retry-After: 1. След отговор 5xx или 429 ключът се освобождава и повторният опит изпълнява операцията отново. Ключът важи в рамките на организацията и извикващия (API ключ, потребител или ключ на собствен източник).

    length ≥ 1, length ≤ 255

Тяло на заявката

application/json

Обект: PushDocument

  • external_idstringзадължително

    Вашият постоянен ID на документа. Изпращането на същия ID заменя документа.

    length ≤ 512

  • titlestringзадължително

    length ≤ 500

  • urlstring

    Връзка към документа във вашата система (http или https).

  • contentstring

    Съдържание (до 5 MB).

  • content_typestring

    Допустими стойности: htmlmarkdowntext

    По подразбиране: "html"

  • patharray of string | string

    Папки на документа: масив от имена или низ, разделен с „/“ (до 10 нива).

  • permissionsPushPermissions
  • tagsarray of string

    items ≤ 50

  • author_emailstring

    Автор. Става отговорник на картата, ако е потребител на Sursa.

  • updated_atstring (date-time)

    Време на промяна във вашата система (част от версията на документа).

  • metadata на картата на документа (от версия 1.62.0): обектът заменя предишния на картата, {} премахва всички двойки; без полето metadata метаданните на картата не се променят.

  • categorystring

    Категория на картата: ключът на категория на организацията (GET /v1/categories), от версия 1.62.0.

    length ≤ 64

  • verifiersPushVerifiers
  • verify_interval_daysinteger

    Интервал на проверка на картата в дни (от версия 1.62.0); без него – интервалът на източника.

    ≥ 1, ≤ 3650

  • upload_idstring

    Файл на документа от качване на части (upl_…, от версия 1.62.0) вместо content. Качването се използва еднократно; повторното изпращане на същия документ със същия upload_id не го изразходва. Докато качването на части не е налично в инсталацията, документът се отхвърля с причина file_rejected.

    length ≤ 64

  • attachmentsarray of string

    Прикачени файлове на документа като качвания на части (upl_…, от версия 1.62.0): всеки става отделна карта на източника със същата папка, права и полета на картата. Прикачен файл, който липсва в нова версия на документа, се архивира.

    items ≤ 20

multipart/form-data

  • filestring (binary)задължително
  • documentstring

    JSON метаданни на документа (полетата на PushDocument без content).

  • external_idstring
  • titlestring
  • urlstring
  • pathstring
  • tagsstring

Отговори

200Записан

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

  • Idempotency-Replayed

    true означава, че отговорът е възпроизведен от записания за този Idempotency-Key: операцията не е изпълнена отново.

application/json

Обект: PushDocumentResult

  • external_idstringзадължително
  • resultstringзадължително

    skipped: документ от пакет atomic не е приложен, защото друг документ е отхвърлен (от версия 1.62.0).

    Допустими стойности: createdupdatedunchangeddeletednot_founderrorskipped

  • versionstring

    Версия на документа (SHA-256 на съдържанието и метаданните).

  • errorstring

    Причина (когато result = error).

  • card_idstring | null

    Карта на документа, ако вече е записана (от версия 1.62.0).

400Заявката е невалидна: стойност на параметър или състоянието на обекта не позволява действието (`detail` е съобщение).

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

401Не са изпратени идентификационни данни (нито бисквитка на сесията, нито API ключ) или ключът не е намерен.

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

403Действието не е разрешено: ролята е недостатъчна, няма достъп до колекцията или картата, заявката се изпълнява в режим „View as“ или организацията е спряна или изтрита (`detail` е обект с `code: org_suspended | org_deleted`).

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

404Обектът не съществува или не е достъпен за вас. API не потвърждава, че съществува обект с ограничен достъп.

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

409Състоянието на обекта не позволява действието, например дубликат, индексиране в ход или задание, което вече е обработено.

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

413Тялото на заявката надвишава допустимия размер.

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

415Форматът на файла не се поддържа.

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

422Грешка при валидиране: тялото или параметрите не съответстват на схемата (`detail` е списък с грешки при валидиране) или стойност на параметър е извън допустимия диапазон (`detail` е съобщение).

Заглавки на отговора

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

429Твърде много заявки (`api.rate_limited`), квотата на организацията за минутата, деня или месеца е изчерпана (`api.quota_exceeded`; `error.details` съдържа `quota`, `limit` и `reset_at`), достигнат е лимит на организацията или услугата за отговори е заета (`answers.engine_busy`). Изчакайте времето от заглавката `Retry-After`.

Заглавки на отговора

  • Retry-After

    Брой секунди, които да изчакате, преди да повторите заявката.

  • RateLimit-Policy

    Действащите лимити във формата на черновата на IETF draft-ietf-httpapi-ratelimit-headers: разделени със запетая елементи "<name>";q=<quota>;w=<window in seconds>. key е честотата на заявките на API ключа (квотата е пиковото натоварване, прозорецът е времето за пълното ѝ възстановяване; за сесия е user, без идентификационни данни – ip); minute, day и month са квотите на организацията за календарната минута, ден и месец по UTC.

  • RateLimit

    Какво остава от всеки лимит в RateLimit-Policy: "<name>";r=<remaining>;t=<seconds until reset>.

  • X-RateLimit-Limit

    Лимитът на най-строгия запис в RateLimit-Policy (този с най-малко оставащи заявки).

  • X-RateLimit-Remaining

    Оставащи заявки по най-строгия лимит.

  • X-RateLimit-Reset

    Секунди до нулирането на най-строгия лимит.

application/json

Обект: Error

Кодове на грешки

Кодове, които тази операция може да върне в error.code, освен общите кодове на всяка заявка.

Безопасни повторни опити

Изпращайте заглавката Idempotency-Key (например UUID) с всяка заявка POST и PATCH. Повторен опит със същия ключ в рамките на 24 часа връща запазения отговор, вместо да изпълни заявката отново.

Лимити на честотата

Отговорите съдържат заглавките RateLimit и RateLimit-Policy, както и по-ранните X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset. Отговорът 429 съдържа Retry-After в секунди: изчакайте и опитайте отново.

← sources · Справочник на API