Performs a merge insert (upsert) operation on table id.
This operation updates existing rows
based on a matching column and inserts new rows that don’t match.
It returns the number of rows inserted and updated.
For tables that have been declared but not yet created on storage
(is_only_declared=true), this operation will create the table with
the provided data (since there are no existing rows to merge with).
REST NAMESPACE ONLY
REST namespace uses Arrow IPC stream as the request body.
It passes in the MergeInsertIntoTableRequest information in the following way:
id: pass through path parameter of the same name
on: pass through query parameter of the same name
when_matched_update_all: pass through query parameter of the same name
when_matched_update_all_filt: pass through query parameter of the same name
when_not_matched_insert_all: pass through query parameter of the same name
when_not_matched_by_source_delete: pass through query parameter of the same name
when_not_matched_by_source_delete_filt: pass through query parameter of the same name
string identifier of an object in a namespace, following the Lance Namespace spec.
When the value is equal to the delimiter, it represents the root namespace.
For example, v1/namespace/$/list performs a ListNamespace on the root namespace.
Optional branch to target. When not specified, the main branch is used.
Used by branch-scoped operations that cannot carry a branch field in
their request body (Arrow IPC stream and bodyless operations). Operations
with a JSON request body carry branch as a body field instead.
Lance field path to use for matching rows. Nested fields use dot-separated segments; use backtick-quoted segments for literal dots and double backticks inside quoted segments. Use canonical full paths for display and errors; leaf names alone only identify top-level fields; invalid or unresolved paths should return InvalidInput or TableColumnNotFound.
The row is updated (similar to UpdateAll) only for rows where the SQL expression evaluates to true. Field references must use Lance field path syntax: nested fields use dot-separated segments, literal dots require backtick-quoted segments, and backticks inside quoted segments are doubled.
Delete rows from the target table if there is no match AND the SQL expression evaluates to true. Field references must use Lance field path syntax: nested fields use dot-separated segments, literal dots require backtick-quoted segments, and backticks inside quoted segments are doubled.
Arbitrary context as key-value pairs.
How to use the context is custom to the specific implementation.
On a request, it carries caller-provided context to the implementation.
On a response, it carries implementation-provided context back to the caller.
REST NAMESPACE ONLY
Context entries are mapped to and from HTTP headers using the header. prefix:
On a request, any entry whose key starts with header. is sent as an HTTP
request header with the prefix stripped. For example, the entry
{"header.Authorization": "Bearer abc"} is sent as the request header
Authorization: Bearer abc.
On a response, every HTTP response header is returned as an entry whose key is the
header name prefixed with header.. For example, the response header
x-request-id: abc123 is returned as the entry {"header.x-request-id": "abc123"}.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"LanceDB","colors":{"primary":"#FF6B35","light":"#FF8A5C","dark":"#E55A2B"},"logo":{"light":"https://mintcdn.com/lancedb-bcbb4faf/6L0IRVkfdlgMU1Pw/static/assets/logo/dark-lancedb-logo.svg?fit=max\u0026auto=format\u0026n=6L0IRVkfdlgMU1Pw\u0026q=85\u0026s=d0592e59a29df2477080a857e13e341f","dark":"https://mintcdn.com/lancedb-bcbb4faf/6L0IRVkfdlgMU1Pw/static/assets/logo/light-lancedb-logo.svg?fit=max\u0026auto=format\u0026n=6L0IRVkfdlgMU1Pw\u0026q=85\u0026s=519956514d5529517daa4cb1f3d35392","href":"https://lancedb.com"},"favicon":"https://mintcdn.com/lancedb-bcbb4faf/0sS6vrpmM3KSVyss/static/favicon.ico?fit=max\u0026auto=format\u0026n=0sS6vrpmM3KSVyss\u0026q=85\u0026s=84b9ea3dfc312b7a4dfc99219e229b33","appearance":{"strict":false},"background":{"color":{"light":"#FAF5F0","dark":"#000000"}},"navbar":{"links":[{"href":"https://www.lancedb.com/contact","label":"Support"}]},"footer":{"socials":{"github":"https://github.com/lancedb","linkedin":"https://www.linkedin.com/company/lancedb","x":"https://x.com/lancedb","discord":"https://discord.gg/AUEWnJ7Txb"},"links":[{"items":[{"label":"Cookie settings","href":"#cookie-settings"}]}]},"fonts":{"family":"Inter"},"styling":{"codeblocks":{"theme":{"light":"vitesse-light","dark":"catppuccin-mocha"}},"latex":true},"integrations":{"ga4":{"measurementId":"G-1TMC2PR69E"}},"banner":{"content":"[Why Multimodal Data Needs a Better Lakehouse? — Download the Research Study](https://lancedb.com/download/)","dismissible":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"lancedb-bcbb4faf","hasAudioNarration":false,"actualSubdomain":"lancedb-bcbb4faf","customDomains":["docs.lancedb.com"],"gitSource":{"type":"github","owner":"lancedb","repo":"docs","deployBranch":"deploy-freeze","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad1ba1060c5abd76761bca2","collectionId":"f5c9f0e7-4822-4807-b59f-14a5f6599ae7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad1ba1060c5abd76761bca2"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ad1ba1060c5abd76761bca2","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"API Reference","count":112},{"language":"default","tag":"Documentation","count":97},{"language":"default","tag":"Integrations","count":76},{"language":"default","tag":"REST API","count":55},{"language":"default","tag":"Table","count":44},{"language":"default","tag":"Guides","count":41},{"language":"default","tag":"Feature Engineering (Geneva)","count":34},{"language":"default","tag":"Datasets","count":32},{"language":"default","tag":"Tutorials","count":16},{"language":"default","tag":"Embedding Providers","count":15}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"static/styles/style.css","content":":root{--banner-left:#e4d8f8;--banner-right:#e55a2b}@font-face{font-family:\"LanceDB KaTeX AMS\";src:url(https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/fonts/KaTeX_AMS-Regular.woff2) format(\"woff2\");font-display:swap;font-style:normal;font-weight:400}.katex .mathbb,.katex .textbb{font-family:\"LanceDB KaTeX AMS\",\"KaTeX_AMS\",serif!important}#banner,:where(.banner, [data-banner], [class*=\"Banner_banner\"]){background:linear-gradient(90deg,var(--banner-left) 0%,var(--banner-right) 100%)!important;color:#1b0f09!important;border:0!important}#banner a,:where(.banner, [data-banner], [class*=\"Banner_banner\"]) a{color:#1b0f09!important;font-size:.9rem;font-weight:500;text-decoration-color:rgba(27,15,9,.35)}#banner button,:where(.banner, [data-banner], [class*=\"Banner_banner\"]) button{color:#1b0f09!important}"}],"page":{"pagePath":"api-reference/rest/table/merge-insert-upsert-records-into-a-table","slug":"/api-reference/rest/table/merge-insert-upsert-records-into-a-table","pageMetadata":{"title":"Merge insert (upsert) records into a table","description":"Performs a merge insert (upsert) operation on table `id`.\nThis operation updates existing rows\nbased on a matching column and inserts new rows that don't match.\nIt returns the number of rows inserted and updated.\n\nFor tables that have been declared but not yet created on storage\n(is_only_declared=true), this operation will create the table with\nthe provided data (since there are no existing rows to merge with).\n\nREST NAMESPACE ONLY\nREST namespace uses Arrow IPC stream as the request body.\nIt passes in the `MergeInsertIntoTableRequest` information in the following way:\n- `id`: pass through path parameter of the same name\n- `on`: pass through query parameter of the same name\n- `when_matched_update_all`: pass through query parameter of the same name\n- `when_matched_update_all_filt`: pass through query parameter of the same name\n- `when_not_matched_insert_all`: pass through query parameter of the same name\n- `when_not_matched_by_source_delete`: pass through query parameter of the same name\n- `when_not_matched_by_source_delete_filt`: pass through query parameter of the same name\n","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/merge_insert","href":"/api-reference/rest/table/merge-insert-upsert-records-into-a-table","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Performs a merge insert (upsert) operation on table \", _jsx(_components.code, {\n children: \"id\"\n }), \".\\nThis operation updates existing rows\\nbased on a matching column and inserts new rows that don’t match.\\nIt returns the number of rows inserted and updated.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"For tables that have been declared but not yet created on storage\\n(is_only_declared=true), this operation will create the table with\\nthe provided data (since there are no existing rows to merge with).\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"REST NAMESPACE ONLY\\nREST namespace uses Arrow IPC stream as the request body.\\nIt passes in the \", _jsx(_components.code, {\n children: \"MergeInsertIntoTableRequest\"\n }), \" information in the following way:\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"id\"\n }), \": pass through path parameter of the same name\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"on\"\n }), \": pass through query parameter of the same name\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"when_matched_update_all\"\n }), \": pass through query parameter of the same name\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"when_matched_update_all_filt\"\n }), \": pass through query parameter of the same name\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"when_not_matched_insert_all\"\n }), \": pass through query parameter of the same name\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"when_not_matched_by_source_delete\"\n }), \": pass through query parameter of the same name\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"when_not_matched_by_source_delete_filt\"\n }), \": pass through query parameter of the same name\"]\n }), \"\\n\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"vitesse-light","dark":"catppuccin-mocha"}},"config":{},"pageMetadata":{"title":"Merge insert (upsert) records into a table","description":"Performs a merge insert (upsert) operation on table `id`.\nThis operation updates existing rows\nbased on a matching column and inserts new rows that don't match.\nIt returns the number of rows inserted and updated.\n\nFor tables that have been declared but not yet created on storage\n(is_only_declared=true), this operation will create the table with\nthe provided data (since there are no existing rows to merge with).\n\nREST NAMESPACE ONLY\nREST namespace uses Arrow IPC stream as the request body.\nIt passes in the `MergeInsertIntoTableRequest` information in the following way:\n- `id`: pass through path parameter of the same name\n- `on`: pass through query parameter of the same name\n- `when_matched_update_all`: pass through query parameter of the same name\n- `when_matched_update_all_filt`: pass through query parameter of the same name\n- `when_not_matched_insert_all`: pass through query parameter of the same name\n- `when_not_matched_by_source_delete`: pass through query parameter of the same name\n- `when_not_matched_by_source_delete_filt`: pass through query parameter of the same name\n","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/merge_insert","href":"/api-reference/rest/table/merge-insert-upsert-records-into-a-table","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/lancedb-bcbb4faf/71b64c20a8f631b3/static/scripts/cookie-consent.js"],"openApiReferenceData":{"operation":{"tags":["Table","Data"],"summary":"Merge insert (upsert) records into a table","operationId":"MergeInsertIntoTable","description":"Performs a merge insert (upsert) operation on table `id`.\nThis operation updates existing rows\nbased on a matching column and inserts new rows that don't match.\nIt returns the number of rows inserted and updated.\n\nFor tables that have been declared but not yet created on storage\n(is_only_declared=true), this operation will create the table with\nthe provided data (since there are no existing rows to merge with).\n\nREST NAMESPACE ONLY\nREST namespace uses Arrow IPC stream as the request body.\nIt passes in the `MergeInsertIntoTableRequest` information in the following way:\n- `id`: pass through path parameter of the same name\n- `on`: pass through query parameter of the same name\n- `when_matched_update_all`: pass through query parameter of the same name\n- `when_matched_update_all_filt`: pass through query parameter of the same name\n- `when_not_matched_insert_all`: pass through query parameter of the same name\n- `when_not_matched_by_source_delete`: pass through query parameter of the same name\n- `when_not_matched_by_source_delete_filt`: pass through query parameter of the same name\n","requestBody":"d19764a2-218c-4e56-888b-923a6bdf26d5","responses":{"200":"e5f2c082-ae51-457e-b499-3d14b6a12f4f","400":"0faa8a0c-3948-464a-91c4-7ff7f6bd0758","401":"6bda393f-caba-4a36-8fbf-bb701b9b548d","403":"8ce2b570-0571-40d2-9c75-38fc832bdb0b","404":"3fe9b03c-b32c-4ff8-968c-abf5dcdc579b","503":"fb1a39e5-82da-42ed-86d1-7409c99b60d2","5XX":"049cbaf5-ad4f-430a-8187-0c8ded4f85d0"},"method":"post","type":"path","servers":["7915ea6a-e9ac-4cfb-85be-77bce01fb46e","199978a6-1e23-4816-a518-1dcceee67d26"],"security":["4598f3db-3cf4-4fd1-8bde-0471c4b845fd","bcee556b-5fb6-4d24-899f-ef3360b8d99d","3919de5e-51b3-4c2c-afc0-4e23724c83ca"],"path":"/v1/table/{id}/merge_insert","baseUrlOptions":["{scheme}://{host}:{port}/{basePath}","{scheme}://{host}/{basePath}"],"title":"Merge insert (upsert) records into a table","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"aa7ec1a6-8a4b-4afa-9c98-a84115e140b9":{"name":"id","description":"`string identifier` of an object in a namespace, following the Lance Namespace spec.\nWhen the value is equal to the delimiter, it represents the root namespace.\nFor example, `v1/namespace/$/list` performs a `ListNamespace` on the root namespace.\n","in":"path","required":true,"schema":{"type":"string","isRequired":true,"description":"`string identifier` of an object in a namespace, following the Lance Namespace spec.\nWhen the value is equal to the delimiter, it represents the root namespace.\nFor example, `v1/namespace/$/list` performs a `ListNamespace` on the root namespace.\n","uniqueKey":"","typeLabel":"string"}},"ae490e3a-c15e-4db1-8395-2e46054b37f3":{"name":"delimiter","description":"An optional delimiter of the `string identifier`, following the Lance Namespace spec.\nWhen not specified, the `$` delimiter must be used.\n","in":"query","required":false,"schema":{"type":"string","isRequired":false,"description":"An optional delimiter of the `string identifier`, following the Lance Namespace spec.\nWhen not specified, the `$` delimiter must be used.\n","uniqueKey":"","typeLabel":"string"}},"9d948fb2-796a-41df-9ade-4aafd8a3ece9":{"name":"branch","description":"Optional branch to target. When not specified, the main branch is used.\nUsed by branch-scoped operations that cannot carry a `branch` field in\ntheir request body (Arrow IPC stream and bodyless operations). Operations\nwith a JSON request body carry `branch` as a body field instead.\n","in":"query","required":false,"schema":{"type":"string","isRequired":false,"description":"Optional branch to target. When not specified, the main branch is used.\nUsed by branch-scoped operations that cannot carry a `branch` field in\ntheir request body (Arrow IPC stream and bodyless operations). Operations\nwith a JSON request body carry `branch` as a body field instead.\n","uniqueKey":"","typeLabel":"string"}},"98087b04-8ec7-42c8-a9a9-f1614f20cc74":{"name":"on","in":"query","description":"Lance field path to use for matching rows. Nested fields use dot-separated segments; use backtick-quoted segments for literal dots and double backticks inside quoted segments. Use canonical full paths for display and errors; leaf names alone only identify top-level fields; invalid or unresolved paths should return InvalidInput or TableColumnNotFound.","required":true,"schema":{"type":"string","minLength":1,"isRequired":true,"description":"Lance field path to use for matching rows. Nested fields use dot-separated segments; use backtick-quoted segments for literal dots and double backticks inside quoted segments. Use canonical full paths for display and errors; leaf names alone only identify top-level fields; invalid or unresolved paths should return InvalidInput or TableColumnNotFound.","uniqueKey":"","typeLabel":"string"}},"93804864-76c1-4e4b-b530-a889160b0ec8":{"name":"when_matched_update_all","in":"query","description":"Update all columns when rows match","required":false,"schema":{"type":"boolean","default":false,"isRequired":false,"description":"Update all columns when rows match","uniqueKey":"","typeLabel":"boolean"}},"1b2dd35b-c2fb-4759-8203-296a1d9e5157":{"name":"when_matched_update_all_filt","in":"query","description":"The row is updated (similar to UpdateAll) only for rows where the SQL expression evaluates to true. Field references must use Lance field path syntax: nested fields use dot-separated segments, literal dots require backtick-quoted segments, and backticks inside quoted segments are doubled.","required":false,"schema":{"type":"string","isRequired":false,"description":"The row is updated (similar to UpdateAll) only for rows where the SQL expression evaluates to true. Field references must use Lance field path syntax: nested fields use dot-separated segments, literal dots require backtick-quoted segments, and backticks inside quoted segments are doubled.","uniqueKey":"","typeLabel":"string"}},"959836b4-e7a1-448d-a1a1-ef752d34a028":{"name":"when_not_matched_insert_all","in":"query","description":"Insert all columns when rows don't match","required":false,"schema":{"type":"boolean","default":false,"isRequired":false,"description":"Insert all columns when rows don't match","uniqueKey":"","typeLabel":"boolean"}},"c2e1055d-3bdd-40f4-a1b8-fa375fd69810":{"name":"when_not_matched_by_source_delete","in":"query","description":"Delete all rows from target table that don't match a row in the source table","required":false,"schema":{"type":"boolean","default":false,"isRequired":false,"description":"Delete all rows from target table that don't match a row in the source table","uniqueKey":"","typeLabel":"boolean"}},"fc21c5c8-9ade-45f1-aa91-544b9b6fcda5":{"name":"when_not_matched_by_source_delete_filt","in":"query","description":"Delete rows from the target table if there is no match AND the SQL expression evaluates to true. Field references must use Lance field path syntax: nested fields use dot-separated segments, literal dots require backtick-quoted segments, and backticks inside quoted segments are doubled.","schema":{"type":"string","description":"Delete rows from the target table if there is no match AND the SQL expression evaluates to true. Field references must use Lance field path syntax: nested fields use dot-separated segments, literal dots require backtick-quoted segments, and backticks inside quoted segments are doubled.","uniqueKey":"","typeLabel":"string"}},"d1e23c0b-c66e-4316-a475-612a41440631":{"name":"timeout","in":"query","description":"Timeout for the operation (e.g., \"30s\", \"5m\")","required":false,"schema":{"type":"string","isRequired":false,"description":"Timeout for the operation (e.g., \"30s\", \"5m\")","uniqueKey":"","typeLabel":"string"}},"75d06b66-f7bd-4226-8346-9d3bd347ac64":{"name":"use_index","in":"query","description":"Whether to use index for matching rows","required":false,"schema":{"type":"boolean","default":false,"isRequired":false,"description":"Whether to use index for matching rows","uniqueKey":"","typeLabel":"boolean"}}},"requestBody":{"description":"Arrow IPC stream containing the records to merge","content":{"application/vnd.apache.arrow.stream":{"schema":{"type":"string","format":"binary","uniqueKey":"","typeLabel":"file"},"examples":{"Example":{"title":"Example","value":"\u003cstring>"}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"e5f2c082-ae51-457e-b499-3d14b6a12f4f":{"description":"Result of merge insert operation","content":{"application/json":{"schema":{"type":"object","description":"Response from merge insert operation","properties":{"context":{"type":"object","description":"Arbitrary context as key-value pairs.\nHow to use the context is custom to the specific implementation.\n\nOn a request, it carries caller-provided context to the implementation.\nOn a response, it carries implementation-provided context back to the caller.\n\nREST NAMESPACE ONLY\nContext entries are mapped to and from HTTP headers using the `header.` prefix:\n- On a request, any entry whose key starts with `header.` is sent as an HTTP\n request header with the prefix stripped. For example, the entry\n `{\"header.Authorization\": \"Bearer abc\"}` is sent as the request header\n `Authorization: Bearer abc`.\n- On a response, every HTTP response header is returned as an entry whose key is the\n header name prefixed with `header.`. For example, the response header\n `x-request-id: abc123` is returned as the entry `{\"header.x-request-id\": \"abc123\"}`.\n","additionalProperties":{"type":"string","uniqueKey":"context.additionalProperties","typeLabel":"string"},"uniqueKey":"context","typeLabel":"object"},"transaction_id":{"type":"string","description":"Optional transaction identifier","uniqueKey":"transaction_id","typeLabel":"string"},"num_updated_rows":{"type":"integer","format":"int64","description":"Number of rows updated","minimum":0,"uniqueKey":"num_updated_rows","typeLabel":"integer\u003cint64>"},"num_inserted_rows":{"type":"integer","format":"int64","description":"Number of rows inserted","minimum":0,"uniqueKey":"num_inserted_rows","typeLabel":"integer\u003cint64>"},"num_deleted_rows":{"type":"integer","format":"int64","description":"Number of rows deleted (typically 0 for merge insert)","minimum":0,"uniqueKey":"num_deleted_rows","typeLabel":"integer\u003cint64>"},"version":{"type":"integer","format":"int64","description":"The commit version associated with the operation","minimum":0,"uniqueKey":"version","typeLabel":"integer\u003cint64>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"context":{},"transaction_id":"\u003cstring>","num_updated_rows":1,"num_inserted_rows":1,"num_deleted_rows":1,"version":1}}},"exampleType":"generated"}},"exampleType":"generated"},"0faa8a0c-3948-464a-91c4-7ff7f6bd0758":{"description":"Indicates a bad request error. It could be caused by an unexpected request body format or other forms of request validation failure, such as invalid json. Usually serves application/json content, although in some cases simple text/plain content might be returned by the server's middleware.","content":{"application/json":{"schema":{"type":"object","description":"Common JSON error response model","required":["code"],"properties":{"code":{"type":"integer","minimum":0,"description":"Lance Namespace error code identifying the error type.\n\nError codes:\n 0 - Unsupported: Operation not supported by this backend\n 1 - NamespaceNotFound: The specified namespace does not exist\n 2 - NamespaceAlreadyExists: A namespace with this name already exists\n 3 - NamespaceNotEmpty: Namespace contains tables or child namespaces\n 4 - TableNotFound: The specified table does not exist\n 5 - TableAlreadyExists: A table with this name already exists\n 6 - TableIndexNotFound: The specified table index does not exist\n 7 - TableIndexAlreadyExists: A table index with this name already exists\n 8 - TableTagNotFound: The specified table tag does not exist\n 9 - TableTagAlreadyExists: A table tag with this name already exists\n 10 - TransactionNotFound: The specified transaction does not exist\n 11 - TableVersionNotFound: The specified table version does not exist\n 12 - TableColumnNotFound: The specified table field does not exist\n 13 - InvalidInput: Malformed request or invalid parameters\n 14 - ConcurrentModification: Optimistic concurrency conflict\n 15 - PermissionDenied: User lacks permission for this operation\n 16 - Unauthenticated: Authentication credentials are missing or invalid\n 17 - ServiceUnavailable: Service is temporarily unavailable\n 18 - Internal: Unexpected server/implementation error\n 19 - InvalidTableState: Table is in an invalid state for the operation\n 20 - TableSchemaValidationError: Table schema validation failed\n 21 - Throttling: Request rate limit exceeded\n 22 - TableBranchNotFound: The specified table branch does not exist\n 23 - TableBranchAlreadyExists: A table branch with this name already exists\n","example":4,"isRequired":true,"uniqueKey":"code","typeLabel":"integer"},"context":{"type":"object","description":"Arbitrary context as key-value pairs.\nHow to use the context is custom to the specific implementation.\n\nOn a request, it carries caller-provided context to the implementation.\nOn a response, it carries implementation-provided context back to the caller.\n\nREST NAMESPACE ONLY\nContext entries are mapped to and from HTTP headers using the `header.` prefix:\n- On a request, any entry whose key starts with `header.` is sent as an HTTP\n request header with the prefix stripped. For example, the entry\n `{\"header.Authorization\": \"Bearer abc\"}` is sent as the request header\n `Authorization: Bearer abc`.\n- On a response, every HTTP response header is returned as an entry whose key is the\n header name prefixed with `header.`. For example, the response header\n `x-request-id: abc123` is returned as the entry `{\"header.x-request-id\": \"abc123\"}`.\n","additionalProperties":{"type":"string","uniqueKey":"context.additionalProperties","typeLabel":"string"},"uniqueKey":"context","typeLabel":"object"},"error":{"type":"string","description":"A brief, human-readable message about the error.","example":"Table 'users' not found in namespace 'production'","uniqueKey":"error","typeLabel":"string"},"detail":{"type":"string","description":"An optional human-readable explanation of the error.\nThis can be used to record additional information such as stack trace.\n","example":"The table may have been dropped or renamed","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"A string that identifies the specific occurrence of the error.\nThis can be a URI, a request or response ID,\nor anything that the implementation can recognize to trace specific occurrence of the error.\n","example":"/v1/table/production$users/describe","uniqueKey":"instance","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"type":"/errors/bad-request","title":"Malformed request","status":400,"detail":"","instance":"/v1/namespaces"},"examples":{"Example":{"title":"Example","value":{"type":"/errors/bad-request","title":"Malformed request","status":400,"detail":"","instance":"/v1/namespaces"}}},"exampleType":"examples"}},"exampleType":"examples"},"6bda393f-caba-4a36-8fbf-bb701b9b548d":{"description":"Unauthorized. The request lacks valid authentication credentials for the operation.","content":{"application/json":{"schema":{"type":"object","description":"Common JSON error response model","required":["code"],"properties":{"code":{"type":"integer","minimum":0,"description":"Lance Namespace error code identifying the error type.\n\nError codes:\n 0 - Unsupported: Operation not supported by this backend\n 1 - NamespaceNotFound: The specified namespace does not exist\n 2 - NamespaceAlreadyExists: A namespace with this name already exists\n 3 - NamespaceNotEmpty: Namespace contains tables or child namespaces\n 4 - TableNotFound: The specified table does not exist\n 5 - TableAlreadyExists: A table with this name already exists\n 6 - TableIndexNotFound: The specified table index does not exist\n 7 - TableIndexAlreadyExists: A table index with this name already exists\n 8 - TableTagNotFound: The specified table tag does not exist\n 9 - TableTagAlreadyExists: A table tag with this name already exists\n 10 - TransactionNotFound: The specified transaction does not exist\n 11 - TableVersionNotFound: The specified table version does not exist\n 12 - TableColumnNotFound: The specified table field does not exist\n 13 - InvalidInput: Malformed request or invalid parameters\n 14 - ConcurrentModification: Optimistic concurrency conflict\n 15 - PermissionDenied: User lacks permission for this operation\n 16 - Unauthenticated: Authentication credentials are missing or invalid\n 17 - ServiceUnavailable: Service is temporarily unavailable\n 18 - Internal: Unexpected server/implementation error\n 19 - InvalidTableState: Table is in an invalid state for the operation\n 20 - TableSchemaValidationError: Table schema validation failed\n 21 - Throttling: Request rate limit exceeded\n 22 - TableBranchNotFound: The specified table branch does not exist\n 23 - TableBranchAlreadyExists: A table branch with this name already exists\n","example":4,"isRequired":true,"uniqueKey":"code","typeLabel":"integer"},"context":{"type":"object","description":"Arbitrary context as key-value pairs.\nHow to use the context is custom to the specific implementation.\n\nOn a request, it carries caller-provided context to the implementation.\nOn a response, it carries implementation-provided context back to the caller.\n\nREST NAMESPACE ONLY\nContext entries are mapped to and from HTTP headers using the `header.` prefix:\n- On a request, any entry whose key starts with `header.` is sent as an HTTP\n request header with the prefix stripped. For example, the entry\n `{\"header.Authorization\": \"Bearer abc\"}` is sent as the request header\n `Authorization: Bearer abc`.\n- On a response, every HTTP response header is returned as an entry whose key is the\n header name prefixed with `header.`. For example, the response header\n `x-request-id: abc123` is returned as the entry `{\"header.x-request-id\": \"abc123\"}`.\n","additionalProperties":{"type":"string","uniqueKey":"context.additionalProperties","typeLabel":"string"},"uniqueKey":"context","typeLabel":"object"},"error":{"type":"string","description":"A brief, human-readable message about the error.","example":"Table 'users' not found in namespace 'production'","uniqueKey":"error","typeLabel":"string"},"detail":{"type":"string","description":"An optional human-readable explanation of the error.\nThis can be used to record additional information such as stack trace.\n","example":"The table may have been dropped or renamed","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"A string that identifies the specific occurrence of the error.\nThis can be a URI, a request or response ID,\nor anything that the implementation can recognize to trace specific occurrence of the error.\n","example":"/v1/table/production$users/describe","uniqueKey":"instance","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"type":"/errors/unauthorized-request","title":"No valid authentication credentials for the operation","status":401,"detail":"","instance":"/v1/namespaces"},"examples":{"Example":{"title":"Example","value":{"type":"/errors/unauthorized-request","title":"No valid authentication credentials for the operation","status":401,"detail":"","instance":"/v1/namespaces"}}},"exampleType":"examples"}},"exampleType":"examples"},"8ce2b570-0571-40d2-9c75-38fc832bdb0b":{"description":"Forbidden. Authenticated user does not have the necessary permissions.","content":{"application/json":{"schema":{"type":"object","description":"Common JSON error response model","required":["code"],"properties":{"code":{"type":"integer","minimum":0,"description":"Lance Namespace error code identifying the error type.\n\nError codes:\n 0 - Unsupported: Operation not supported by this backend\n 1 - NamespaceNotFound: The specified namespace does not exist\n 2 - NamespaceAlreadyExists: A namespace with this name already exists\n 3 - NamespaceNotEmpty: Namespace contains tables or child namespaces\n 4 - TableNotFound: The specified table does not exist\n 5 - TableAlreadyExists: A table with this name already exists\n 6 - TableIndexNotFound: The specified table index does not exist\n 7 - TableIndexAlreadyExists: A table index with this name already exists\n 8 - TableTagNotFound: The specified table tag does not exist\n 9 - TableTagAlreadyExists: A table tag with this name already exists\n 10 - TransactionNotFound: The specified transaction does not exist\n 11 - TableVersionNotFound: The specified table version does not exist\n 12 - TableColumnNotFound: The specified table field does not exist\n 13 - InvalidInput: Malformed request or invalid parameters\n 14 - ConcurrentModification: Optimistic concurrency conflict\n 15 - PermissionDenied: User lacks permission for this operation\n 16 - Unauthenticated: Authentication credentials are missing or invalid\n 17 - ServiceUnavailable: Service is temporarily unavailable\n 18 - Internal: Unexpected server/implementation error\n 19 - InvalidTableState: Table is in an invalid state for the operation\n 20 - TableSchemaValidationError: Table schema validation failed\n 21 - Throttling: Request rate limit exceeded\n 22 - TableBranchNotFound: The specified table branch does not exist\n 23 - TableBranchAlreadyExists: A table branch with this name already exists\n","example":4,"isRequired":true,"uniqueKey":"code","typeLabel":"integer"},"context":{"type":"object","description":"Arbitrary context as key-value pairs.\nHow to use the context is custom to the specific implementation.\n\nOn a request, it carries caller-provided context to the implementation.\nOn a response, it carries implementation-provided context back to the caller.\n\nREST NAMESPACE ONLY\nContext entries are mapped to and from HTTP headers using the `header.` prefix:\n- On a request, any entry whose key starts with `header.` is sent as an HTTP\n request header with the prefix stripped. For example, the entry\n `{\"header.Authorization\": \"Bearer abc\"}` is sent as the request header\n `Authorization: Bearer abc`.\n- On a response, every HTTP response header is returned as an entry whose key is the\n header name prefixed with `header.`. For example, the response header\n `x-request-id: abc123` is returned as the entry `{\"header.x-request-id\": \"abc123\"}`.\n","additionalProperties":{"type":"string","uniqueKey":"context.additionalProperties","typeLabel":"string"},"uniqueKey":"context","typeLabel":"object"},"error":{"type":"string","description":"A brief, human-readable message about the error.","example":"Table 'users' not found in namespace 'production'","uniqueKey":"error","typeLabel":"string"},"detail":{"type":"string","description":"An optional human-readable explanation of the error.\nThis can be used to record additional information such as stack trace.\n","example":"The table may have been dropped or renamed","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"A string that identifies the specific occurrence of the error.\nThis can be a URI, a request or response ID,\nor anything that the implementation can recognize to trace specific occurrence of the error.\n","example":"/v1/table/production$users/describe","uniqueKey":"instance","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"type":"/errors/forbidden-request","title":"Not authorized to make this request","status":403,"detail":"","instance":"/v1/namespaces"},"examples":{"Example":{"title":"Example","value":{"type":"/errors/forbidden-request","title":"Not authorized to make this request","status":403,"detail":"","instance":"/v1/namespaces"}}},"exampleType":"examples"}},"exampleType":"examples"},"3fe9b03c-b32c-4ff8-968c-abf5dcdc579b":{"description":"A server-side problem that means can not find the specified resource.","content":{"application/json":{"schema":{"type":"object","description":"Common JSON error response model","required":["code"],"properties":{"code":{"type":"integer","minimum":0,"description":"Lance Namespace error code identifying the error type.\n\nError codes:\n 0 - Unsupported: Operation not supported by this backend\n 1 - NamespaceNotFound: The specified namespace does not exist\n 2 - NamespaceAlreadyExists: A namespace with this name already exists\n 3 - NamespaceNotEmpty: Namespace contains tables or child namespaces\n 4 - TableNotFound: The specified table does not exist\n 5 - TableAlreadyExists: A table with this name already exists\n 6 - TableIndexNotFound: The specified table index does not exist\n 7 - TableIndexAlreadyExists: A table index with this name already exists\n 8 - TableTagNotFound: The specified table tag does not exist\n 9 - TableTagAlreadyExists: A table tag with this name already exists\n 10 - TransactionNotFound: The specified transaction does not exist\n 11 - TableVersionNotFound: The specified table version does not exist\n 12 - TableColumnNotFound: The specified table field does not exist\n 13 - InvalidInput: Malformed request or invalid parameters\n 14 - ConcurrentModification: Optimistic concurrency conflict\n 15 - PermissionDenied: User lacks permission for this operation\n 16 - Unauthenticated: Authentication credentials are missing or invalid\n 17 - ServiceUnavailable: Service is temporarily unavailable\n 18 - Internal: Unexpected server/implementation error\n 19 - InvalidTableState: Table is in an invalid state for the operation\n 20 - TableSchemaValidationError: Table schema validation failed\n 21 - Throttling: Request rate limit exceeded\n 22 - TableBranchNotFound: The specified table branch does not exist\n 23 - TableBranchAlreadyExists: A table branch with this name already exists\n","example":4,"isRequired":true,"uniqueKey":"code","typeLabel":"integer"},"context":{"type":"object","description":"Arbitrary context as key-value pairs.\nHow to use the context is custom to the specific implementation.\n\nOn a request, it carries caller-provided context to the implementation.\nOn a response, it carries implementation-provided context back to the caller.\n\nREST NAMESPACE ONLY\nContext entries are mapped to and from HTTP headers using the `header.` prefix:\n- On a request, any entry whose key starts with `header.` is sent as an HTTP\n request header with the prefix stripped. For example, the entry\n `{\"header.Authorization\": \"Bearer abc\"}` is sent as the request header\n `Authorization: Bearer abc`.\n- On a response, every HTTP response header is returned as an entry whose key is the\n header name prefixed with `header.`. For example, the response header\n `x-request-id: abc123` is returned as the entry `{\"header.x-request-id\": \"abc123\"}`.\n","additionalProperties":{"type":"string","uniqueKey":"context.additionalProperties","typeLabel":"string"},"uniqueKey":"context","typeLabel":"object"},"error":{"type":"string","description":"A brief, human-readable message about the error.","example":"Table 'users' not found in namespace 'production'","uniqueKey":"error","typeLabel":"string"},"detail":{"type":"string","description":"An optional human-readable explanation of the error.\nThis can be used to record additional information such as stack trace.\n","example":"The table may have been dropped or renamed","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"A string that identifies the specific occurrence of the error.\nThis can be a URI, a request or response ID,\nor anything that the implementation can recognize to trace specific occurrence of the error.\n","example":"/v1/table/production$users/describe","uniqueKey":"instance","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"type":"/errors/not-found-error","title":"Not found Error","status":404,"detail":"","instance":"/v1/namespaces/{ns}"},"examples":{"Example":{"title":"Example","value":{"type":"/errors/not-found-error","title":"Not found Error","status":404,"detail":"","instance":"/v1/namespaces/{ns}"}}},"exampleType":"examples"}},"exampleType":"examples"},"fb1a39e5-82da-42ed-86d1-7409c99b60d2":{"description":"The service is not ready to handle the request. The client should wait and retry. The service may additionally send a Retry-After header to indicate when to retry.","content":{"application/json":{"schema":{"type":"object","description":"Common JSON error response model","required":["code"],"properties":{"code":{"type":"integer","minimum":0,"description":"Lance Namespace error code identifying the error type.\n\nError codes:\n 0 - Unsupported: Operation not supported by this backend\n 1 - NamespaceNotFound: The specified namespace does not exist\n 2 - NamespaceAlreadyExists: A namespace with this name already exists\n 3 - NamespaceNotEmpty: Namespace contains tables or child namespaces\n 4 - TableNotFound: The specified table does not exist\n 5 - TableAlreadyExists: A table with this name already exists\n 6 - TableIndexNotFound: The specified table index does not exist\n 7 - TableIndexAlreadyExists: A table index with this name already exists\n 8 - TableTagNotFound: The specified table tag does not exist\n 9 - TableTagAlreadyExists: A table tag with this name already exists\n 10 - TransactionNotFound: The specified transaction does not exist\n 11 - TableVersionNotFound: The specified table version does not exist\n 12 - TableColumnNotFound: The specified table field does not exist\n 13 - InvalidInput: Malformed request or invalid parameters\n 14 - ConcurrentModification: Optimistic concurrency conflict\n 15 - PermissionDenied: User lacks permission for this operation\n 16 - Unauthenticated: Authentication credentials are missing or invalid\n 17 - ServiceUnavailable: Service is temporarily unavailable\n 18 - Internal: Unexpected server/implementation error\n 19 - InvalidTableState: Table is in an invalid state for the operation\n 20 - TableSchemaValidationError: Table schema validation failed\n 21 - Throttling: Request rate limit exceeded\n 22 - TableBranchNotFound: The specified table branch does not exist\n 23 - TableBranchAlreadyExists: A table branch with this name already exists\n","example":4,"isRequired":true,"uniqueKey":"code","typeLabel":"integer"},"context":{"type":"object","description":"Arbitrary context as key-value pairs.\nHow to use the context is custom to the specific implementation.\n\nOn a request, it carries caller-provided context to the implementation.\nOn a response, it carries implementation-provided context back to the caller.\n\nREST NAMESPACE ONLY\nContext entries are mapped to and from HTTP headers using the `header.` prefix:\n- On a request, any entry whose key starts with `header.` is sent as an HTTP\n request header with the prefix stripped. For example, the entry\n `{\"header.Authorization\": \"Bearer abc\"}` is sent as the request header\n `Authorization: Bearer abc`.\n- On a response, every HTTP response header is returned as an entry whose key is the\n header name prefixed with `header.`. For example, the response header\n `x-request-id: abc123` is returned as the entry `{\"header.x-request-id\": \"abc123\"}`.\n","additionalProperties":{"type":"string","uniqueKey":"context.additionalProperties","typeLabel":"string"},"uniqueKey":"context","typeLabel":"object"},"error":{"type":"string","description":"A brief, human-readable message about the error.","example":"Table 'users' not found in namespace 'production'","uniqueKey":"error","typeLabel":"string"},"detail":{"type":"string","description":"An optional human-readable explanation of the error.\nThis can be used to record additional information such as stack trace.\n","example":"The table may have been dropped or renamed","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"A string that identifies the specific occurrence of the error.\nThis can be a URI, a request or response ID,\nor anything that the implementation can recognize to trace specific occurrence of the error.\n","example":"/v1/table/production$users/describe","uniqueKey":"instance","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"type":"/errors/service-unavailable","title":"Slow down","status":503,"detail":"","instance":"/v1/namespaces"},"examples":{"Example":{"title":"Example","value":{"type":"/errors/service-unavailable","title":"Slow down","status":503,"detail":"","instance":"/v1/namespaces"}}},"exampleType":"examples"}},"exampleType":"examples"},"049cbaf5-ad4f-430a-8187-0c8ded4f85d0":{"description":"A server-side problem that might not be addressable from the client side. Used for server 5xx errors without more specific documentation in individual routes.","content":{"application/json":{"schema":{"type":"object","description":"Common JSON error response model","required":["code"],"properties":{"code":{"type":"integer","minimum":0,"description":"Lance Namespace error code identifying the error type.\n\nError codes:\n 0 - Unsupported: Operation not supported by this backend\n 1 - NamespaceNotFound: The specified namespace does not exist\n 2 - NamespaceAlreadyExists: A namespace with this name already exists\n 3 - NamespaceNotEmpty: Namespace contains tables or child namespaces\n 4 - TableNotFound: The specified table does not exist\n 5 - TableAlreadyExists: A table with this name already exists\n 6 - TableIndexNotFound: The specified table index does not exist\n 7 - TableIndexAlreadyExists: A table index with this name already exists\n 8 - TableTagNotFound: The specified table tag does not exist\n 9 - TableTagAlreadyExists: A table tag with this name already exists\n 10 - TransactionNotFound: The specified transaction does not exist\n 11 - TableVersionNotFound: The specified table version does not exist\n 12 - TableColumnNotFound: The specified table field does not exist\n 13 - InvalidInput: Malformed request or invalid parameters\n 14 - ConcurrentModification: Optimistic concurrency conflict\n 15 - PermissionDenied: User lacks permission for this operation\n 16 - Unauthenticated: Authentication credentials are missing or invalid\n 17 - ServiceUnavailable: Service is temporarily unavailable\n 18 - Internal: Unexpected server/implementation error\n 19 - InvalidTableState: Table is in an invalid state for the operation\n 20 - TableSchemaValidationError: Table schema validation failed\n 21 - Throttling: Request rate limit exceeded\n 22 - TableBranchNotFound: The specified table branch does not exist\n 23 - TableBranchAlreadyExists: A table branch with this name already exists\n","example":4,"isRequired":true,"uniqueKey":"code","typeLabel":"integer"},"context":{"type":"object","description":"Arbitrary context as key-value pairs.\nHow to use the context is custom to the specific implementation.\n\nOn a request, it carries caller-provided context to the implementation.\nOn a response, it carries implementation-provided context back to the caller.\n\nREST NAMESPACE ONLY\nContext entries are mapped to and from HTTP headers using the `header.` prefix:\n- On a request, any entry whose key starts with `header.` is sent as an HTTP\n request header with the prefix stripped. For example, the entry\n `{\"header.Authorization\": \"Bearer abc\"}` is sent as the request header\n `Authorization: Bearer abc`.\n- On a response, every HTTP response header is returned as an entry whose key is the\n header name prefixed with `header.`. For example, the response header\n `x-request-id: abc123` is returned as the entry `{\"header.x-request-id\": \"abc123\"}`.\n","additionalProperties":{"type":"string","uniqueKey":"context.additionalProperties","typeLabel":"string"},"uniqueKey":"context","typeLabel":"object"},"error":{"type":"string","description":"A brief, human-readable message about the error.","example":"Table 'users' not found in namespace 'production'","uniqueKey":"error","typeLabel":"string"},"detail":{"type":"string","description":"An optional human-readable explanation of the error.\nThis can be used to record additional information such as stack trace.\n","example":"The table may have been dropped or renamed","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"A string that identifies the specific occurrence of the error.\nThis can be a URI, a request or response ID,\nor anything that the implementation can recognize to trace specific occurrence of the error.\n","example":"/v1/table/production$users/describe","uniqueKey":"instance","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"type":"/errors/server-error","title":"Internal Server Error","status":500,"detail":"","instance":"/v1/namespaces"},"examples":{"Example":{"title":"Example","value":{"type":"/errors/server-error","title":"Internal Server Error","status":500,"detail":"","instance":"/v1/namespaces"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"4598f3db-3cf4-4fd1-8bde-0471c4b845fd":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oauth/token","scopes":{}}},"scopes":[]}},"bcee556b-5fb6-4d24-899f-ef3360b8d99d":{"BearerAuth":{"type":"http","scheme":"bearer","scopes":[]}},"3919de5e-51b3-4c2c-afc0-4e23724c83ca":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","scopes":[]}}},"servers":{"7915ea6a-e9ac-4cfb-85be-77bce01fb46e":{"url":"{scheme}://{host}:{port}/{basePath}","description":"Generic server URL with all parts configurable","variables":{"scheme":{"default":"http"},"host":{"default":"localhost"},"port":{"default":"2333"},"basePath":{"default":""}}},"199978a6-1e23-4816-a518-1dcceee67d26":{"url":"{scheme}://{host}/{basePath}","description":"Server URL when the port can be inferred from the scheme","variables":{"scheme":{"default":"http"},"host":{"default":"localhost"},"basePath":{"default":""}}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oauth/token","scopes":{}}},"scopes":[]},"schema":{"title":"OAuth2 Auth","type":"string","isRequired":true,"description":"The access token received from the authorization server in the OAuth 2.0 flow.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"OAuth2","name":"Authorization"}],"title":"OAuth2"},{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","scopes":[]},"schema":{"title":"x-api-key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"x-api-key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"api-reference/rest/openapi.yml"},"subdomain":"lancedb-bcbb4faf","siteName":"LanceDB","title":"Merge insert (upsert) records into a table - LanceDB","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-06T07:33:52.898Z","originalFileLocation":"api-reference/rest/table/merge-insert-upsert-records-into-a-table.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Performs a merge insert (upsert) operation on table id. This operation updates existing rows based on a matching column and inserts new rows that don\u0026#x27;t match. It returns the number of rows inserted and updated. For tables that have been declared but not yet created on storage (is_only_declared=true), this operation will create the table with the provided data (since there are no existing rows to merge with). REST NAMESPACE ONLY REST namespace uses Arrow IPC stream as the request body. It passes in the MergeInsertIntoTableRequest information in the following way: - id: pass through path parameter of the same name - on: pass through query parameter of the same name - when_matched_update_all: pass through query parameter of the same name - when_matched_update_all_filt: pass through query parameter of the same name - when_not_matched_insert_all: pass through query parameter of the same name - when_not_matched_by_source_delete: pass through query parameter of the same name - when_not_matched_by_source_delete_filt: pass through query parameter of the same name\">\u003cmeta data-mint-head name=\"application-name\" content=\"LanceDB\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lancedb-bcbb4faf/AJCI1CXWoYDPZbb4/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/lancedb-bcbb4faf/AJCI1CXWoYDPZbb4/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lancedb-bcbb4faf/AJCI1CXWoYDPZbb4/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/lancedb-bcbb4faf/AJCI1CXWoYDPZbb4/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/lancedb-bcbb4faf/AJCI1CXWoYDPZbb4/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lancedb-bcbb4faf/AJCI1CXWoYDPZbb4/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lancedb-bcbb4faf/AJCI1CXWoYDPZbb4/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/lancedb-bcbb4faf/AJCI1CXWoYDPZbb4/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/lancedb-bcbb4faf/AJCI1CXWoYDPZbb4/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Merge insert (upsert) records into a table - LanceDB\">\u003cmeta data-mint-head property=\"og:description\" content=\"Performs a merge insert (upsert) operation on table id. This operation updates existing rows based on a matching column and inserts new rows that don\u0026#x27;t match. It returns the number of rows inserted and updated. For tables that have been declared but not yet created on storage (is_only_declared=true), this operation will create the table with the provided data (since there are no existing rows to merge with). REST NAMESPACE ONLY REST namespace uses Arrow IPC stream as the request body. It passes in the MergeInsertIntoTableRequest information in the following way: - id: pass through path parameter of the same name - on: pass through query parameter of the same name - when_matched_update_all: pass through query parameter of the same name - when_matched_update_all_filt: pass through query parameter of the same name - when_not_matched_insert_all: pass through query parameter of the same name - when_not_matched_by_source_delete: pass through query parameter of the same name - when_not_matched_by_source_delete_filt: pass through query parameter of the same name\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"LanceDB\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.lancedb.com/api-reference/rest/table/merge-insert-upsert-records-into-a-table\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://lancedb-bcbb4faf.mintlify.app/_mintlify/api/og/v2?division=Table\u0026amp;title=Merge+insert+%28upsert%29+records+into+a+table\u0026amp;description=Performs+a+merge+insert+%28upsert%29+operation+on+table+%60id%60.%0AThis+operation+updates+existing+rows%0Abased+on+a+matching+column+and+inserts+new+rows+that+don%27t+match.\u0026amp;theme=123a95b5dfac0c4bc2a3854c\u0026amp;signature=817927337475f1d7d2d7622b286b28cf047e521c5a15d03da2ac3098ecc60dde\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Merge insert (upsert) records into a table - LanceDB\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Performs a merge insert (upsert) operation on table id. This operation updates existing rows based on a matching column and inserts new rows that don\u0026#x27;t match. It returns the number of rows inserted and updated. For tables that have been declared but not yet created on storage (is_only_declared=true), this operation will create the table with the provided data (since there are no existing rows to merge with). REST NAMESPACE ONLY REST namespace uses Arrow IPC stream as the request body. It passes in the MergeInsertIntoTableRequest information in the following way: - id: pass through path parameter of the same name - on: pass through query parameter of the same name - when_matched_update_all: pass through query parameter of the same name - when_matched_update_all_filt: pass through query parameter of the same name - when_not_matched_insert_all: pass through query parameter of the same name - when_not_matched_by_source_delete: pass through query parameter of the same name - when_not_matched_by_source_delete_filt: pass through query parameter of the same name\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://lancedb-bcbb4faf.mintlify.app/_mintlify/api/og/v2?division=Table\u0026amp;title=Merge+insert+%28upsert%29+records+into+a+table\u0026amp;description=Performs+a+merge+insert+%28upsert%29+operation+on+table+%60id%60.%0AThis+operation+updates+existing+rows%0Abased+on+a+matching+column+and+inserts+new+rows+that+don%27t+match.\u0026amp;theme=123a95b5dfac0c4bc2a3854c\u0026amp;signature=817927337475f1d7d2d7622b286b28cf047e521c5a15d03da2ac3098ecc60dde\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/lancedb-bcbb4faf/AJCI1CXWoYDPZbb4/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"LanceDB\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF6B35\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.lancedb.com/api-reference/rest/table/merge-insert-upsert-records-into-a-table\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/rest/table/merge-insert-upsert-records-into-a-table.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.lancedb.com/#organization\",\"name\":\"LanceDB\",\"url\":\"https://docs.lancedb.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/lancedb-bcbb4faf/6L0IRVkfdlgMU1Pw/static/assets/logo/dark-lancedb-logo.svg?fit=max\u0026auto=format\u0026n=6L0IRVkfdlgMU1Pw\u0026q=85\u0026s=d0592e59a29df2477080a857e13e341f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.lancedb.com#website\",\"name\":\"LanceDB\",\"url\":\"https://docs.lancedb.com\",\"publisher\":{\"@id\":\"https://docs.lancedb.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.lancedb.com/api-reference/rest/table/merge-insert-upsert-records-into-a-table#webpage\",\"url\":\"https://docs.lancedb.com/api-reference/rest/table/merge-insert-upsert-records-into-a-table\",\"name\":\"Merge insert (upsert) records into a table\",\"description\":\"Performs a merge insert (upsert) operation on table id. This operation updates existing rows based on a matching column and inserts new rows that don't match. It returns the number of rows inserted and updated. For tables that have been declared but not yet created on storage (is_only_declared=true), this operation will create the table with the provided data (since there are no existing rows to merge with). REST NAMESPACE ONLY REST namespace uses Arrow IPC stream as the request body. It passes in the MergeInsertIntoTableRequest information in the following way: - id: pass through path parameter of the same name - on: pass through query parameter of the same name - when_matched_update_all: pass through query parameter of the same name - when_matched_update_all_filt: pass through query parameter of the same name - when_not_matched_insert_all: pass through query parameter of the same name - when_not_matched_by_source_delete: pass through query parameter of the same name - when_not_matched_by_source_delete_filt: pass through query parameter of the same name\",\"dateModified\":\"2026-07-06T07:33:52.898Z\",\"isPartOf\":{\"@id\":\"https://docs.lancedb.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.lancedb.com/api-reference/rest/table/merge-insert-upsert-records-into-a-table#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.lancedb.com/api-reference/rest/table/merge-insert-upsert-records-into-a-table#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.lancedb.com/api-reference/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"REST API\",\"item\":\"https://docs.lancedb.com/api-reference/rest/index\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Table\",\"item\":\"https://docs.lancedb.com/api-reference/rest/table/list-all-tables\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Merge insert (upsert) records into a table\",\"item\":\"https://docs.lancedb.com/api-reference/rest/table/merge-insert-upsert-records-into-a-table\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.lancedb.com/api-reference/rest/table/merge-insert-upsert-records-into-a-table#apireference\",\"headline\":\"Merge insert (upsert) records into a table\",\"name\":\"Merge insert (upsert) records into a table\",\"description\":\"Performs a merge insert (upsert) operation on table id. This operation updates existing rows based on a matching column and inserts new rows that don't match. It returns the number of rows inserted and updated. For tables that have been declared but not yet created on storage (is_only_declared=true), this operation will create the table with the provided data (since there are no existing rows to merge with). REST NAMESPACE ONLY REST namespace uses Arrow IPC stream as the request body. It passes in the MergeInsertIntoTableRequest information in the following way: - id: pass through path parameter of the same name - on: pass through query parameter of the same name - when_matched_update_all: pass through query parameter of the same name - when_matched_update_all_filt: pass through query parameter of the same name - when_not_matched_insert_all: pass through query parameter of the same name - when_not_matched_by_source_delete: pass through query parameter of the same name - when_not_matched_by_source_delete_filt: pass through query parameter of the same name\",\"url\":\"https://docs.lancedb.com/api-reference/rest/table/merge-insert-upsert-records-into-a-table\",\"mainEntityOfPage\":{\"@id\":\"https://docs.lancedb.com/api-reference/rest/table/merge-insert-upsert-records-into-a-table#webpage\"},\"dateModified\":\"2026-07-06T07:33:52.898Z\",\"publisher\":{\"@id\":\"https://docs.lancedb.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.lancedb.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"LanceDB\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"LanceDB","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/quickstart"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations"}]},{"tab":"Tutorials","pages":[{"title":"Tutorials","href":"/tutorials"}]},{"tab":"Demos","pages":[{"title":"Demos","href":"/demos"}]},{"tab":"Datasets","pages":[{"title":"Datasets","href":"/datasets"}]},{"tab":"Use Cases","pages":[{"title":"Use Cases","href":"/integrations/lerobotdataset"}]},{"tab":"API Reference","groups":[{"group":"API Reference","pages":[{"title":"SDKs and REST API Reference","sidebarTitle":"SDKs","href":"/api-reference"},{"group":"REST API","expanded":true,"pages":[{"title":"REST API Reference","sidebarTitle":"Overview","href":"/api-reference/rest/index"},{"group":"Namespace","pages":[{"title":"Create a new namespace","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/namespace/{id}/create","href":"/api-reference/rest/namespace/create-a-new-namespace"},{"title":"List namespaces","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml get /v1/namespace/{id}/list","href":"/api-reference/rest/namespace/list-namespaces"},{"title":"Describe a namespace","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/namespace/{id}/describe","href":"/api-reference/rest/namespace/describe-a-namespace"},{"title":"Drop a namespace","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/namespace/{id}/drop","href":"/api-reference/rest/namespace/drop-a-namespace"},{"title":"Check if a namespace exists","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/namespace/{id}/exists","href":"/api-reference/rest/namespace/check-if-a-namespace-exists"},{"title":"List tables in a namespace","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml get /v1/namespace/{id}/table/list","href":"/api-reference/rest/namespace/list-tables-in-a-namespace"}]},{"group":"Table","pages":[{"title":"List all tables","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml get /v1/table","href":"/api-reference/rest/table/list-all-tables"},{"title":"Register a table to a namespace","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/register","href":"/api-reference/rest/table/register-a-table-to-a-namespace"},{"title":"Describe information of a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/describe","href":"/api-reference/rest/table/describe-information-of-a-table"},{"title":"Check if a table exists","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/exists","href":"/api-reference/rest/table/check-if-a-table-exists"},{"title":"Drop a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/drop","href":"/api-reference/rest/table/drop-a-table"},{"title":"Deregister a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/deregister","href":"/api-reference/rest/table/deregister-a-table"},{"title":"Restore table to a specific version","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/restore","href":"/api-reference/rest/table/restore-table-to-a-specific-version"},{"title":"Rename a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/rename","href":"/api-reference/rest/table/rename-a-table"},{"title":"Update table schema metadata","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/schema_metadata/update","href":"/api-reference/rest/table/update-table-schema-metadata"},{"title":"List all versions of a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/version/list","href":"/api-reference/rest/table/list-all-versions-of-a-table"},{"title":"Create a new table version","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/version/create","href":"/api-reference/rest/table/create-a-new-table-version"},{"title":"Describe a specific table version","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/version/describe","href":"/api-reference/rest/table/describe-a-specific-table-version"},{"title":"Delete table version records","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/version/delete","href":"/api-reference/rest/table/delete-table-version-records"},{"title":"Atomically create versions for multiple tables","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/version/batch-create","href":"/api-reference/rest/table/atomically-create-versions-for-multiple-tables"},{"title":"Atomically commit a batch of mixed table operations","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/batch-commit","href":"/api-reference/rest/table/atomically-commit-a-batch-of-mixed-table-operations"},{"title":"Modify existing columns","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/alter_columns","href":"/api-reference/rest/table/modify-existing-columns"},{"title":"Update per-field metadata","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/update_field_metadata","href":"/api-reference/rest/table/update-per-field-metadata"},{"title":"Remove columns from table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/drop_columns","href":"/api-reference/rest/table/remove-columns-from-table"},{"title":"Get table statistics","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/stats","href":"/api-reference/rest/table/get-table-statistics"},{"title":"Insert records into a table","description":"Insert new records into table `id`.\n\nFor tables that have been declared but not yet created on storage\n(is_only_declared=true), this operation will create the table with\nthe provided data.\n\nREST NAMESPACE ONLY\nREST namespace uses Arrow IPC stream as the request body.\nIt passes in the `InsertIntoTableRequest` information in the following way:\n- `id`: pass through path parameter of the same name\n- `mode`: pass through query parameter of the same name\n","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/insert","href":"/api-reference/rest/table/insert-records-into-a-table"},{"title":"Merge insert (upsert) records into a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/merge_insert","href":"/api-reference/rest/table/merge-insert-upsert-records-into-a-table"},{"title":"Update rows in a table","description":"Update existing rows in table `id`.\n","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/update","href":"/api-reference/rest/table/update-rows-in-a-table"},{"title":"Delete rows from a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/delete","href":"/api-reference/rest/table/delete-rows-from-a-table"},{"title":"Query a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/query","href":"/api-reference/rest/table/query-a-table"},{"title":"Count rows in a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/count_rows","href":"/api-reference/rest/table/count-rows-in-a-table"},{"title":"Create a table with the given name","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/create","href":"/api-reference/rest/table/create-a-table-with-the-given-name"},{"title":"Get query execution plan explanation","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/explain_plan","href":"/api-reference/rest/table/get-query-execution-plan-explanation"},{"title":"Analyze query execution plan","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/analyze_plan","href":"/api-reference/rest/table/analyze-query-execution-plan"},{"title":"Add new columns to table schema","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/add_columns","href":"/api-reference/rest/table/add-new-columns-to-table-schema"},{"title":"Trigger an async column backfill job","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/backfill_column","href":"/api-reference/rest/table/trigger-an-async-column-backfill-job"},{"title":"Create an index on a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/create_index","href":"/api-reference/rest/table/create-an-index-on-a-table"},{"title":"Create a scalar index on a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/create_scalar_index","href":"/api-reference/rest/table/create-a-scalar-index-on-a-table"},{"title":"List indexes on a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/index/list","href":"/api-reference/rest/table/list-indexes-on-a-table"},{"title":"Get table index statistics","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/index/{index_name}/stats","href":"/api-reference/rest/table/get-table-index-statistics"},{"title":"Drop a specific index","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/index/{index_name}/drop","href":"/api-reference/rest/table/drop-a-specific-index"},{"title":"List all tags for a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/tags/list","href":"/api-reference/rest/table/list-all-tags-for-a-table"},{"title":"Get version for a specific tag","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/tags/version","href":"/api-reference/rest/table/get-version-for-a-specific-tag"},{"title":"Declare a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/declare","href":"/api-reference/rest/table/declare-a-table"},{"title":"Create a new tag","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/tags/create","href":"/api-reference/rest/table/create-a-new-tag"},{"title":"Delete a tag","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/tags/delete","href":"/api-reference/rest/table/delete-a-tag"},{"title":"Update a tag to point to a different version","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/tags/update","href":"/api-reference/rest/table/update-a-tag-to-point-to-a-different-version"},{"title":"List all branches for a table","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/branches/list","href":"/api-reference/rest/table/list-all-branches-for-a-table"},{"title":"Create a new branch","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/branches/create","href":"/api-reference/rest/table/create-a-new-branch"},{"title":"Delete a branch","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/table/{id}/branches/delete","href":"/api-reference/rest/table/delete-a-branch"}]},{"group":"MaterializedView","pages":[{"title":"Trigger an async materialized view refresh","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/materialized_view/{id}/refresh","href":"/api-reference/rest/materializedview/trigger-an-async-materialized-view-refresh"},{"title":"Create a materialized view","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/materialized_view/{id}/create","href":"/api-reference/rest/materializedview/create-a-materialized-view"}]},{"group":"Transaction","pages":[{"title":"Describe information about a transaction","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/transaction/{id}/describe","href":"/api-reference/rest/transaction/describe-information-about-a-transaction"},{"title":"Alter information of a transaction.","deprecated":null,"version":null,"openapi":"/api-reference/rest/openapi.yml post /v1/transaction/{id}/alter","href":"/api-reference/rest/transaction/alter-information-of-a-transaction"}]}]}]}]}]},"title":"Merge insert (upsert) records into a table - LanceDB","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["10e4515597","c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["BannerMarkdown-CJDb0dYK.js","dist-Cv_O2fky.js","lib--scc4DXi.js","lib-B8HbPgcC.js","clsx-BGBGWFTt.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","Page-R3M_BF4L.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js","Markdown-CCeGv-zI.js","AssistantPageLink-2C5OB2eV.js"]}