POST/v1/push/sources/{source_id}/documents
ドキュメントを送信する(作成または置換)
push_upsert_document
external_idでドキュメントを作成または置換します。JSONの場合は、内容をcontentで送信します(content_type:html、markdown、text。最大5MB)。multipart/form-dataの場合は、ファイルをfileパートで送信し(最大100MB、形式はナレッジベースへのアップロードと同じ)、メタデータをdocumentパート(contentを除いた同じ形式のJSON)または個別のフィールドexternal_id、title、url、path、tagsで送信します。sync_numberは開いている同期の番号です。指定しない場合、ドキュメントはすぐに書き込まれます(直接書き込み)が、再送信しない限り、次の完全同期で削除されます。同じドキュメントをもう一度送信するとunchangedを返します(冪等)。ドキュメントは、ソースの次の同期でカードになります(1分以内。開いている同期の中では、その同期の終了後)。1.62.0以降:カードのフィールド(metadata、category、verifiers、verify_interval_days)、マルチパートアップロードのファイル(upload_id)、添付ファイル(attachments)を指定でき、レスポンスにはstatusとcard_id(ドキュメントの結果)が含まれます。ソースのドキュメント数の上限はプランによって異なります。
認証
AuthorizationヘッダーでAPIキーを送信します:Authorization: Bearer <キー>。
パスパラメーター
source_idinteger必須
クエリパラメーター
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
external_idstring必須ドキュメントの安定したID。同じIDを送ると、ドキュメントが置き換えられます。
length ≤ 512
titlestring必須length ≤ 500
urlstring自社のシステムでのドキュメントへのリンク(httpまたはhttps)。
contentstring内容(最大5MB)。
content_typestring指定できる値:
htmlmarkdowntextデフォルト:"html"
patharray of string | stringドキュメントのフォルダー:名前の配列、または「/」で区切った文字列(最大10階層)。
permissionsPushPermissionstagsarray of stringitems ≤ 50
author_emailstring作成者。Sursaのユーザーであれば、カードの担当者になります。
updated_atstring (date-time)自社のシステムでの更新日時(ドキュメントのバージョンの一部)。
metadataMetadataPatchドキュメントのカードの
metadata(1.62.0以降):このオブジェクトはカードの以前のメタデータを置き換え、{}はすべてのペアを削除します。metadataフィールドがない場合、カードのメタデータは変わりません。categorystringカードのカテゴリ:組織のカテゴリのキー(
GET /v1/categories)。1.62.0以降。length ≤ 64
verifiersPushVerifiersverify_interval_daysintegerカードの検証の間隔(日数、1.62.0以降)。ない場合はソースの間隔。
≥ 1, ≤ 3650
upload_idstringcontentの代わりに、マルチパートアップロードによるドキュメントのファイル(upl_…、1.62.0以降)。アップロードは一度だけ使用されます。同じドキュメントを同じupload_idで再送しても、アップロードは消費されません。インストール環境でマルチパートアップロードが利用できない間は、ドキュメントは理由file_rejectedで拒否されます。length ≤ 64
attachmentsarray of stringマルチパートアップロードとして渡すドキュメントの添付ファイル(
upl_…、1.62.0以降):それぞれが、同じフォルダー、権限、カードのフィールドを持つ、ソースの個別のカードになります。新しいバージョンのドキュメントに含まれなくなった添付ファイルは、アーカイブされます。items ≤ 20
multipart/form-data
filestring (binary)必須documentstringドキュメントのJSONのメタデータ(
contentを除いたPushDocumentのフィールド)。external_idstringtitlestringurlstringpathstringtagsstring
レスポンス
200書き込みました
レスポンスヘッダー
RateLimit-Policy適用中の制限。IETFのドラフト
draft-ietf-httpapi-ratelimit-headersの形式で、"<name>";q=<quota>;w=<window in seconds>の項目をカンマで区切って並べます。keyはAPIキーのリクエストレートです(クォータはバースト、ウィンドウはバーストが完全に回復するまでの時間。セッションではuser、認証情報がない場合はip)。minute、day、monthは、UTCの暦の上での1分・1日・1か月ごとの組織のクォータです。RateLimitRateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。X-RateLimit-Remaining最も厳しい制限での残りのリクエスト数。
X-RateLimit-Reset最も厳しい制限がリセットされるまでの秒数。
Idempotency-Replayedtrueは、このIdempotency-Keyの保存済みのレスポンスが再送されたことを示します:操作は再実行されていません。
application/json
external_idstring必須resultstring必須skipped:別のドキュメントが拒否されたため、atomicバッチのドキュメントが適用されませんでした(1.62.0以降)。指定できる値:
createdupdatedunchangeddeletednot_founderrorskippedversionstringドキュメントのバージョン(内容とメタデータのSHA-256)。
errorstring理由(
result=errorの場合)。statusPushDocumentStatusValuecard_idstring | nullドキュメントのカード(すでに書き込まれている場合、1.62.0以降)。
reasonPushDocumentReason
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の暦の上での1分・1日・1か月ごとの組織のクォータです。RateLimitRateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。X-RateLimit-Remaining最も厳しい制限での残りのリクエスト数。
X-RateLimit-Reset最も厳しい制限がリセットされるまでの秒数。
application/json
401認証情報が送信されていない(セッションCookieもAPIキーもない)か、キーが見つかりません。
レスポンスヘッダー
RateLimit-Policy適用中の制限。IETFのドラフト
draft-ietf-httpapi-ratelimit-headersの形式で、"<name>";q=<quota>;w=<window in seconds>の項目をカンマで区切って並べます。keyはAPIキーのリクエストレートです(クォータはバースト、ウィンドウはバーストが完全に回復するまでの時間。セッションではuser、認証情報がない場合はip)。minute、day、monthは、UTCの暦の上での1分・1日・1か月ごとの組織のクォータです。RateLimitRateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。X-RateLimit-Remaining最も厳しい制限での残りのリクエスト数。
X-RateLimit-Reset最も厳しい制限がリセットされるまでの秒数。
application/json
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の暦の上での1分・1日・1か月ごとの組織のクォータです。RateLimitRateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。X-RateLimit-Remaining最も厳しい制限での残りのリクエスト数。
X-RateLimit-Reset最も厳しい制限がリセットされるまでの秒数。
application/json
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の暦の上での1分・1日・1か月ごとの組織のクォータです。RateLimitRateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。X-RateLimit-Remaining最も厳しい制限での残りのリクエスト数。
X-RateLimit-Reset最も厳しい制限がリセットされるまでの秒数。
application/json
409オブジェクトの状態により、この操作を実行できません。たとえば、重複している、インデックス作成中である、ジョブがすでに処理済みである場合です。
レスポンスヘッダー
RateLimit-Policy適用中の制限。IETFのドラフト
draft-ietf-httpapi-ratelimit-headersの形式で、"<name>";q=<quota>;w=<window in seconds>の項目をカンマで区切って並べます。keyはAPIキーのリクエストレートです(クォータはバースト、ウィンドウはバーストが完全に回復するまでの時間。セッションではuser、認証情報がない場合はip)。minute、day、monthは、UTCの暦の上での1分・1日・1か月ごとの組織のクォータです。RateLimitRateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。X-RateLimit-Remaining最も厳しい制限での残りのリクエスト数。
X-RateLimit-Reset最も厳しい制限がリセットされるまでの秒数。
application/json
413リクエストボディが許容サイズを超えています。
レスポンスヘッダー
RateLimit-Policy適用中の制限。IETFのドラフト
draft-ietf-httpapi-ratelimit-headersの形式で、"<name>";q=<quota>;w=<window in seconds>の項目をカンマで区切って並べます。keyはAPIキーのリクエストレートです(クォータはバースト、ウィンドウはバーストが完全に回復するまでの時間。セッションではuser、認証情報がない場合はip)。minute、day、monthは、UTCの暦の上での1分・1日・1か月ごとの組織のクォータです。RateLimitRateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。X-RateLimit-Remaining最も厳しい制限での残りのリクエスト数。
X-RateLimit-Reset最も厳しい制限がリセットされるまでの秒数。
application/json
415このファイル形式はサポートされていません。
レスポンスヘッダー
RateLimit-Policy適用中の制限。IETFのドラフト
draft-ietf-httpapi-ratelimit-headersの形式で、"<name>";q=<quota>;w=<window in seconds>の項目をカンマで区切って並べます。keyはAPIキーのリクエストレートです(クォータはバースト、ウィンドウはバーストが完全に回復するまでの時間。セッションではuser、認証情報がない場合はip)。minute、day、monthは、UTCの暦の上での1分・1日・1か月ごとの組織のクォータです。RateLimitRateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。X-RateLimit-Remaining最も厳しい制限での残りのリクエスト数。
X-RateLimit-Reset最も厳しい制限がリセットされるまでの秒数。
application/json
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の暦の上での1分・1日・1か月ごとの組織のクォータです。RateLimitRateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。X-RateLimit-Remaining最も厳しい制限での残りのリクエスト数。
X-RateLimit-Reset最も厳しい制限がリセットされるまでの秒数。
application/json
429リクエストが多すぎる(`api.rate_limited`)、組織の1分・1日・1か月のクォータを使い切った(`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の暦の上での1分・1日・1か月ごとの組織のクォータです。RateLimitRateLimit-Policyの各制限の残り:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policyのうち最も厳しい項目(残りのリクエスト数が最も少ない項目)の上限。X-RateLimit-Remaining最も厳しい制限での残りのリクエスト数。
X-RateLimit-Reset最も厳しい制限がリセットされるまでの秒数。
application/json
エラーコード
すべてのリクエストに共通のコードに加えて、このエンドポイントがerror.codeで返すことのあるコード。
- 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
安全な再試行
POSTとPATCHのたびにIdempotency-Keyヘッダー(UUIDなど)を送信してください。24時間以内に同じキーで再試行すると、リクエストをもう一度実行せずに、保存済みのレスポンスが返ります。
レート制限
レスポンスには、RateLimitヘッダーとRateLimit-Policyヘッダー、以前のX-RateLimit-Limit、X-RateLimit-Remaining、X-RateLimit-Resetが含まれます。429レスポンスにはRetry-After(秒)が含まれます。その時間だけ待ってから再試行してください。