Complete a version upload from the client's part manifest
Commits the version in a single S3 CompleteMultipartUpload call, using the ETags supplied in the request body. The server does not list the upload’s parts, so the manifest must be complete: it verifies the part numbers cover 1..totalParts before calling S3, because S3 itself assembles exactly the parts it is given and would otherwise silently produce a truncated object.
POST
/
data-assets
/
{username}
/
{namespace}
/
{assetId}
/
versions
/
{versionNo}
/
finish
Complete a version upload from the client's part manifest
The complete part manifest for the upload. The server performs no S3 listing, so this body is the only record of what was uploaded - see parts for where the ETags come from.
Every part of the upload, exactly once. Must cover part numbers 1..totalParts with no gaps, duplicates or extras; otherwise the request is rejected with 422 and nothing is committed. Order does not matter - the server sorts by partNumber.
Optimistic concurrency - fails with 409 if the asset is no longer at this version.
Response
Version committed
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Documentation","colors":{"primary":"#607251","light":"#607251","dark":"#C8D5BB"},"logo":{"light":"https://mintcdn.com/datalinks-d7c3bacc/NbL6ZZ8Yl0rUuPZD/logo/landfall_logo.svg?fit=max\u0026auto=format\u0026n=NbL6ZZ8Yl0rUuPZD\u0026q=85\u0026s=756a61980c1cda2d8c91a195650ccaa9","dark":"https://mintcdn.com/datalinks-d7c3bacc/NbL6ZZ8Yl0rUuPZD/logo/landfall_logo_white.svg?fit=max\u0026auto=format\u0026n=NbL6ZZ8Yl0rUuPZD\u0026q=85\u0026s=0e5cb751d7246fa9ca9d1ea1da985cf7"},"favicon":"https://mintcdn.com/datalinks-d7c3bacc/NbL6ZZ8Yl0rUuPZD/logo/favicon.svg?fit=max\u0026auto=format\u0026n=NbL6ZZ8Yl0rUuPZD\u0026q=85\u0026s=6685ce7fb23b401e4b2248c8220474cd","api":{"openapi":{"source":"api-reference/openapi.yml"},"playground":{"proxy":false}},"navbar":{"links":[{"href":"https://landfall.ai","label":"Website"}]},"footer":{"socials":{"linkedin":"https://linkedin.com/company/datasetlinks","github":"https://github.com/DataSetLinks","website":"https://landfall.ai/"}},"integrations":{"gtm":{"tagId":"GTM-M2TM5387"}},"contextual":{"options":[],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"datalinks-d7c3bacc","hasAudioNarration":false,"actualSubdomain":"datalinks-d7c3bacc","customDomains":["docs.landfall.ai"],"gitSource":{"type":"github","owner":"datasetlinks","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6abf882febb6ec0ddbda9681","collectionId":"0da0e7a5-521c-47d5-8bb3-f054e2e89e2d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6abf882febb6ec0ddbda9681"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae9f41feceed668c026c91c","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"API Reference","count":99},{"language":"default","tag":"Endpoints","count":98},{"language":"default","tag":"Docs","count":28},{"language":"default","tag":"buildspecs","count":22},{"language":"default","tag":"data-assets","count":14},{"language":"default","tag":"How-To Guides","count":12},{"language":"default","tag":"Python SDK","count":7},{"language":"default","tag":"dataset","count":7},{"language":"default","tag":"user","count":7},{"language":"default","tag":"permissions","count":6}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"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":"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":"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":"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":"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":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"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":"turbopuffer-dual-write","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},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"consent-banner.css","content":":root{--color-white:#ffffff;--color-gray-25:#fafafa;--color-gray-50:#f7f7f7;--color-gray-100:#f0f0f1;--color-gray-200:#ececed;--color-gray-300:#cecfd2;--color-gray-400:#94979c;--color-gray-500:#85888e;--color-gray-600:#61656c;--color-gray-700:#373a41;--color-gray-800:#22262f;--color-gray-900:#13161b;--color-gray-950:#0c0e12;--color-blue-50:#b0d8ff;--color-blue-600:#002454;--color-blue-700:#001433;--color-blue-800:#010a17;--color-green-50:#f2ffe5;--color-green-100:#dfeed1;--color-green-200:#c8d5bb;--color-green-300:#859973;--color-green-400:#607251;--color-green-500:#516441;--color-green-700:#213610}.consent-banner-overlay{position:fixed;bottom:1rem;max-width:480px;right:1rem;padding:.75rem;z-index:9999;border-radius:.75rem;font-size:1rem;color:var(--color-gray-600);background:var(--color-white);box-shadow:0 0 0 1px rgba(10,13,18,.18) inset,0 -2px 0 0 rgba(10,13,18,.05) inset,0 1px 2px 0 rgba(10,13,18,.05)}.dark .consent-banner-overlay{color:var(--color-gray-400);border:1px solid var(--color-gray-700);background:var(--color-gray-900);box-shadow:0 12px 16px -4px rgba(10,13,18,.08),0 4px 6px -2px rgba(10,13,18,.03),0 2px 2px -1px rgba(10,13,18,.04)}.consent-banner-grid{display:flex;flex-direction:column;flex-wrap:wrap}.consent-options{margin-top:1rem;margin-bottom:.75rem;display:flex;flex-direction:column;gap:.5rem}.consent-options label{display:flex;gap:.75rem}.consent-options input[type=checkbox]{border-radius:6px;border:1px solid var(--color-gray-700)}.consent-options input[type=checkbox]:checked{background-color:var(--color-green-500);border-color:var(--color-green-500)}.cookie-icon{margin-bottom:1rem;display:inline-flex;justify-content:center;align-items:center;width:48px;height:48px;border-radius:10px;font-size:1.5rem;flex:0 0 48px;background-color:var(--color-gray-50);box-shadow:0 0 0 1px rgba(10,13,18,.18) inset,0 -2px 0 0 rgba(10,13,18,.05) inset,0 1px 2px 0 rgba(10,13,18,.05)}.dark .cookie-icon{background-color:var(--color-gray-800)}.consent-buttons{display:flex;gap:.75rem}.cookie-btn{flex:1;white-space:nowrap;padding:.5rem 1rem;border:0;border-radius:.5rem;cursor:pointer;font-weight:600;font-size:1rem;line-height:1.5;transition:background-color .2s;box-shadow:0 0 0 1px rgba(10,13,18,.12) inset,0 -2px 0 0 rgba(10,13,18,.05) inset,0 1px 2px 0 rgba(10,13,18,.05);border:1px solid rgba(255,255,255,.12);background-color:var(--color-gray-50)}.dark .cookie-btn:not(.cookie-btn-accept):not(.cookie-btn-reject){background-color:var(--color-gray-900);color:var(--color-gray-200);border-color:var(--color-gray-700);box-shadow:none}.cookie-btn-accept{background:var(--color-green-700);color:var(--color-white)}.cookie-btn-accept:hover{background:var(--color-green-400)}.cookie-btn-reject{padding-inline:0;box-shadow:none;border-color:transparent;background:0 0}.cookie-btn-reject:hover{text-decoration:underline}@media (max-width:768px){.consent-buttons{flex-direction:column;gap:1rem;text-align:center}.cookie-btn-reject{padding-block:0}.cookie-btn{font-size:.85rem}}"}],"page":{"pagePath":"api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest","slug":"/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest","pageMetadata":{"title":"Complete a version upload from the client's part manifest","description":"Commits the version in a single S3 CompleteMultipartUpload call, using the ETags supplied in the request body. The server does not list the upload's parts, so the manifest must be complete: it verifies the part numbers cover 1..totalParts before calling S3, because S3 itself assembles exactly the parts it is given and would otherwise silently produce a truncated object.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /data-assets/{username}/{namespace}/{assetId}/versions/{versionNo}/finish","href":"/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Commits the version in a single S3 CompleteMultipartUpload call, using the ETags supplied in the request body. The server does not list the upload’s parts, so the manifest must be complete: it verifies the part numbers cover 1..totalParts before calling S3, because S3 itself assembles exactly the parts it is given and would otherwise silently produce a truncated object.\"\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":{"config":{},"pageMetadata":{"title":"Complete a version upload from the client's part manifest","description":"Commits the version in a single S3 CompleteMultipartUpload call, using the ETags supplied in the request body. The server does not list the upload's parts, so the manifest must be complete: it verifies the part numbers cover 1..totalParts before calling S3, because S3 itself assembles exactly the parts it is given and would otherwise silently produce a truncated object.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /data-assets/{username}/{namespace}/{assetId}/versions/{versionNo}/finish","href":"/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/datalinks-d7c3bacc/c24628b788aa4349/gtm-consent-banner.js"],"openApiReferenceData":{"operation":{"tags":["data-assets"],"summary":"Complete a version upload from the client's part manifest","description":"Commits the version in a single S3 CompleteMultipartUpload call, using the ETags supplied in the request body. The server does not list the upload's parts, so the manifest must be complete: it verifies the part numbers cover 1..totalParts before calling S3, because S3 itself assembles exactly the parts it is given and would otherwise silently produce a truncated object.\n","operationId":"finishDataAssetVersion","parameters":["65f878f9-0202-4e1d-9bb4-873190f27234","7d9ce7e1-bac4-4aa7-bf30-0ffedb4853a6","45db640e-42b4-40fa-94b3-622616af8ab3","001250a4-8b2e-4191-9b28-0aa2158a57cf"],"requestBody":"053ec416-d679-42ae-82cd-468f2ef9133e","responses":{"200":"0251e1b3-9205-4763-a1b7-de3daf7e960b","401":"f5e99fa5-172f-4af8-9a1a-c7cac448f016","403":"2301974a-34e4-4ac4-b762-30c17045ab4c","404":"0242b45a-68a1-4b4a-a5a7-95b82ce1d4e7","409":"53cdd138-2b23-4ae0-bc4a-9e511056d318","422":"5a98acbb-7614-4160-ac43-8f13fb8ceb60"},"method":"post","type":"path","servers":["93870666-6042-444b-8726-0ca7cbede54b"],"security":["3edbce03-f3bb-4661-9e62-d8f7bea0eda9","39cafe1f-7dd3-4ee3-a9e3-36b8ad3d9073"],"path":"/data-assets/{username}/{namespace}/{assetId}/versions/{versionNo}/finish","baseUrlOptions":["https://api.datalinks.com/api/v1"],"title":"Complete a version upload from the client's part manifest","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated","disableProxy":true},"dependencies":{"parameters":{"65f878f9-0202-4e1d-9bb4-873190f27234":{"name":"username","in":"path","description":"The username associated with the request.","required":true,"schema":{"type":"string","isRequired":true,"description":"The username associated with the request.","uniqueKey":"","typeLabel":"string"}},"7d9ce7e1-bac4-4aa7-bf30-0ffedb4853a6":{"name":"namespace","in":"path","description":"Namespace for the dataset.","required":true,"schema":{"type":"string","isRequired":true,"description":"Namespace for the dataset.","uniqueKey":"","typeLabel":"string"},"example":"cinematography"},"45db640e-42b4-40fa-94b3-622616af8ab3":{"name":"assetId","in":"path","description":"The data asset's id.","required":true,"schema":{"type":"string","format":"uuid","isRequired":true,"description":"The data asset's id.","uniqueKey":"","typeLabel":"string\u003cuuid>"}},"001250a4-8b2e-4191-9b28-0aa2158a57cf":{"name":"versionNo","in":"path","description":"The version number.","required":true,"schema":{"type":"integer","isRequired":true,"description":"The version number.","uniqueKey":"","typeLabel":"integer"}}},"requestBody":{"content":{"application/json":{"schema":{"required":["parts"],"type":"object","properties":{"parts":{"type":"array","description":"Every part of the upload, exactly once. Must cover part numbers 1..totalParts with no gaps, duplicates or extras; otherwise the request is rejected with 422 and nothing is committed. Order does not matter - the server sorts by partNumber.\n","items":{"required":["etag","partNumber"],"type":"object","properties":{"partNumber":{"type":"integer","description":"The 1-based part number, exactly as issued in a `next[]` entry.","isRequired":true,"uniqueKey":"parts.items.[INDEX].partNumber","typeLabel":"integer"},"etag":{"type":"string","description":"WHERE THIS COMES FROM: the value of the `ETag` response header of the `PUT` that uploaded this part. There is no other source - the API never sees the part bytes and does not ask S3 what it stored, so a client that loses an ETag cannot finish the version and must abort and re-upload it.\nCapture it from each part `PUT` response and keep it until `finish`. Quotes may be included or stripped; both are accepted. For browser clients the bucket CORS must send `Access-Control-Expose-Headers: ETag`, or the header is unreadable from script and the ETag is silently lost.\nS3 validates every (partNumber, etag) pair when the upload is completed: a wrong ETag, or one for a part that was never uploaded, fails the whole `finish` with 422 and commits nothing. A forged ETag therefore cannot corrupt an asset.\n","example":"d41d8cd98f00b204e9800998ecf8427e","isRequired":true,"uniqueKey":"parts.items.[INDEX].etag","typeLabel":"string"}},"description":"One uploaded part, identified by its number and the ETag S3 returned for it.","uniqueKey":"parts.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"parts","typeLabel":"object[]"},"expectedVersion":{"type":"integer","description":"Optimistic concurrency - fails with 409 if the asset is no longer at this version.","uniqueKey":"expectedVersion","typeLabel":"integer"}},"description":"The complete part manifest for the upload. The server performs no S3 listing, so this body is the only record of what was uploaded - see `parts` for where the ETags come from.\n","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"parts":[{"partNumber":123,"etag":"d41d8cd98f00b204e9800998ecf8427e"}],"expectedVersion":123}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"0251e1b3-9205-4763-a1b7-de3daf7e960b":{"description":"Version committed","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"f5e99fa5-172f-4af8-9a1a-c7cac448f016":{"description":"Unauthorized. This error occurs if the authentication token is missing or invalid.","content":{"application/json":{"schema":{"required":["error_code","message"],"type":"object","properties":{"error_code":{"type":"string","example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","example":"Missing authentication token","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error_message":{"type":"string","example":"","uniqueKey":"error_message","typeLabel":"string"},"sub_errors":{"type":"array","items":{"required":["code","message"],"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"sub_errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"sub_errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"sub_errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"sub_errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error_code":"UNAUTHORIZED","message":"Missing authentication token","error_message":"","sub_errors":[{"code":"\u003cstring>","message":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"2301974a-34e4-4ac4-b762-30c17045ab4c":{"description":"Forbidden. The user does not have access to this resource.","content":{"application/json":{"schema":{"required":["error_code","message"],"type":"object","properties":{"error_code":{"type":"string","example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","example":"Missing authentication token","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error_message":{"type":"string","example":"","uniqueKey":"error_message","typeLabel":"string"},"sub_errors":{"type":"array","items":{"required":["code","message"],"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"sub_errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"sub_errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"sub_errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"sub_errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error_code":"UNAUTHORIZED","message":"Missing authentication token","error_message":"","sub_errors":[{"code":"\u003cstring>","message":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"0242b45a-68a1-4b4a-a5a7-95b82ce1d4e7":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"required":["error_code","message"],"type":"object","properties":{"error_code":{"type":"string","example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","example":"Missing authentication token","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error_message":{"type":"string","example":"","uniqueKey":"error_message","typeLabel":"string"},"sub_errors":{"type":"array","items":{"required":["code","message"],"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"sub_errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"sub_errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"sub_errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"sub_errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error_code":"UNAUTHORIZED","message":"Missing authentication token","error_message":"","sub_errors":[{"code":"\u003cstring>","message":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"53cdd138-2b23-4ae0-bc4a-9e511056d318":{"description":"Conflict. The request could not be completed due to a conflict with the current state of the resource.","content":{"application/json":{"schema":{"required":["error_code","message"],"type":"object","properties":{"error_code":{"type":"string","example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","example":"Missing authentication token","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error_message":{"type":"string","example":"","uniqueKey":"error_message","typeLabel":"string"},"sub_errors":{"type":"array","items":{"required":["code","message"],"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"sub_errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"sub_errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"sub_errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"sub_errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error_code":"UNAUTHORIZED","message":"Missing authentication token","error_message":"","sub_errors":[{"code":"\u003cstring>","message":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"5a98acbb-7614-4160-ac43-8f13fb8ceb60":{"description":"Invalid request (e.g. version out of retention, TTL above max).","content":{"application/json":{"schema":{"required":["error_code","message"],"type":"object","properties":{"error_code":{"type":"string","example":"UNAUTHORIZED","isRequired":true,"uniqueKey":"error_code","typeLabel":"string"},"message":{"type":"string","example":"Missing authentication token","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error_message":{"type":"string","example":"","uniqueKey":"error_message","typeLabel":"string"},"sub_errors":{"type":"array","items":{"required":["code","message"],"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"sub_errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"sub_errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"sub_errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"sub_errors","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error_code":"UNAUTHORIZED","message":"Missing authentication token","error_message":"","sub_errors":[{"code":"\u003cstring>","message":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"3edbce03-f3bb-4661-9e62-d8f7bea0eda9":{"bearerAuth":{"type":"http","description":"Use a Bearer token for authentication. Submit the token using the `Authorization`\nheader: `Authorization: Bearer \u003ctoken>`.\n","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"}},"39cafe1f-7dd3-4ee3-a9e3-36b8ad3d9073":{"openId":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://login.datalinks.com/realms/datalinks-realm/protocol/openid-connect/auth","scopes":{"openid":"openid"}}},"scopes":["implicit"],"schemeName":"openId"}}},"servers":{"93870666-6042-444b-8726-0ca7cbede54b":{"url":"https://api.datalinks.com/api/v1","description":"production server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","description":"Use a Bearer token for authentication. Submit the token using the `Authorization`\nheader: `Authorization: Bearer \u003ctoken>`.\n","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Use a Bearer token for authentication. Submit the token using the `Authorization`\nheader: `Authorization: Bearer \u003ctoken>`.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"},{"schemes":[{"scheme":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://login.datalinks.com/realms/datalinks-realm/protocol/openid-connect/auth","scopes":{"openid":"openid"}}},"scopes":["implicit"],"schemeName":"openId"},"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":"openId","name":"Authorization"}],"title":"openId"}]},"originalFileLocation":"api-reference/openapi.yml"},"subdomain":"datalinks-d7c3bacc","siteName":"Documentation","title":"Complete a version upload from the client's part manifest - Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-03T14:48:07.956Z","originalFileLocation":"api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest.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=\"Commits the version in a single S3 CompleteMultipartUpload call, using the ETags supplied in the request body. The server does not list the upload\u0026#x27;s parts, so the manifest must be complete: it verifies the part numbers cover 1..totalParts before calling S3, because S3 itself assembles exactly the parts it is given and would otherwise silently produce a truncated object.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/datalinks-d7c3bacc/UoVzkwi3FIgLQM3H/_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/datalinks-d7c3bacc/UoVzkwi3FIgLQM3H/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/datalinks-d7c3bacc/UoVzkwi3FIgLQM3H/_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/datalinks-d7c3bacc/UoVzkwi3FIgLQM3H/_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/datalinks-d7c3bacc/UoVzkwi3FIgLQM3H/_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/datalinks-d7c3bacc/UoVzkwi3FIgLQM3H/_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/datalinks-d7c3bacc/UoVzkwi3FIgLQM3H/_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/datalinks-d7c3bacc/UoVzkwi3FIgLQM3H/_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/datalinks-d7c3bacc/UoVzkwi3FIgLQM3H/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Complete a version upload from the client\u0026#x27;s part manifest - Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Commits the version in a single S3 CompleteMultipartUpload call, using the ETags supplied in the request body. The server does not list the upload\u0026#x27;s parts, so the manifest must be complete: it verifies the part numbers cover 1..totalParts before calling S3, because S3 itself assembles exactly the parts it is given and would otherwise silently produce a truncated object.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.landfall.ai/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://datalinks-d7c3bacc.mintlify.app/_mintlify/api/og/v2?division=data-assets\u0026amp;title=Complete+a+version+upload+from+the+client%27s+part+manifest\u0026amp;description=Commits+the+version+in+a+single+S3+CompleteMultipartUpload+call%2C+using+the+ETags+supplied+in+the+request+body.+The+server+does+not+list+the+upload%27s+parts%2C+so+t\u0026amp;theme=a00ac63b1779b80d0dd1c500\u0026amp;signature=191fdf5a24db5b11f0d22e6d74527b6eb2e3e5ef3f3bcc22dcdfbe87e75d75a3\">\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=\"Complete a version upload from the client\u0026#x27;s part manifest - Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Commits the version in a single S3 CompleteMultipartUpload call, using the ETags supplied in the request body. The server does not list the upload\u0026#x27;s parts, so the manifest must be complete: it verifies the part numbers cover 1..totalParts before calling S3, because S3 itself assembles exactly the parts it is given and would otherwise silently produce a truncated object.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://datalinks-d7c3bacc.mintlify.app/_mintlify/api/og/v2?division=data-assets\u0026amp;title=Complete+a+version+upload+from+the+client%27s+part+manifest\u0026amp;description=Commits+the+version+in+a+single+S3+CompleteMultipartUpload+call%2C+using+the+ETags+supplied+in+the+request+body.+The+server+does+not+list+the+upload%27s+parts%2C+so+t\u0026amp;theme=a00ac63b1779b80d0dd1c500\u0026amp;signature=191fdf5a24db5b11f0d22e6d74527b6eb2e3e5ef3f3bcc22dcdfbe87e75d75a3\">\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/datalinks-d7c3bacc/UoVzkwi3FIgLQM3H/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#607251\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.landfall.ai/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.landfall.ai/#organization\",\"name\":\"Documentation\",\"url\":\"https://docs.landfall.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/datalinks-d7c3bacc/NbL6ZZ8Yl0rUuPZD/logo/landfall_logo.svg?fit=max\u0026auto=format\u0026n=NbL6ZZ8Yl0rUuPZD\u0026q=85\u0026s=756a61980c1cda2d8c91a195650ccaa9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.landfall.ai#website\",\"name\":\"Documentation\",\"url\":\"https://docs.landfall.ai\",\"publisher\":{\"@id\":\"https://docs.landfall.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.landfall.ai/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest#webpage\",\"url\":\"https://docs.landfall.ai/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest\",\"name\":\"Complete a version upload from the client's part manifest\",\"description\":\"Commits the version in a single S3 CompleteMultipartUpload call, using the ETags supplied in the request body. The server does not list the upload's parts, so the manifest must be complete: it verifies the part numbers cover 1..totalParts before calling S3, because S3 itself assembles exactly the parts it is given and would otherwise silently produce a truncated object.\",\"dateModified\":\"2026-11-03T14:48:07.956Z\",\"isPartOf\":{\"@id\":\"https://docs.landfall.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.landfall.ai/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.landfall.ai/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.landfall.ai/api-reference/a2a/list-the-agents-exposed-over-a2a\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"data-assets\",\"item\":\"https://docs.landfall.ai/api-reference/data-assets/list-the-committed-non-deleted-data-assets-in-a-namespace\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Complete a version upload from the client's part manifest\",\"item\":\"https://docs.landfall.ai/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.landfall.ai/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest#apireference\",\"headline\":\"Complete a version upload from the client's part manifest\",\"name\":\"Complete a version upload from the client's part manifest\",\"description\":\"Commits the version in a single S3 CompleteMultipartUpload call, using the ETags supplied in the request body. The server does not list the upload's parts, so the manifest must be complete: it verifies the part numbers cover 1..totalParts before calling S3, because S3 itself assembles exactly the parts it is given and would otherwise silently produce a truncated object.\",\"url\":\"https://docs.landfall.ai/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest\",\"mainEntityOfPage\":{\"@id\":\"https://docs.landfall.ai/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest#webpage\"},\"dateModified\":\"2026-11-03T14:48:07.956Z\",\"publisher\":{\"@id\":\"https://docs.landfall.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.landfall.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Documentation","nav":{"global":null,"tabs":[{"tab":"Docs","icon":"file-lines","pages":[{"title":"Docs","href":""}]},{"tab":"API Reference","icon":"code","groups":[{"group":"Overview","pages":[{"title":"API Reference","href":"/api-reference"}]},{"group":"Endpoints","expanded":true,"pages":[{"group":"a2a","pages":[{"title":"List the agents exposed over A2A","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /a2a","href":"/api-reference/a2a/list-the-agents-exposed-over-a2a"},{"title":"Fetch an agent's AgentCard","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /a2a/{agentName}/.well-known/agent-card.json","href":"/api-reference/a2a/fetch-an-agents-agentcard"},{"title":"A2A JSON-RPC endpoint for an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /a2a/{agentName}","href":"/api-reference/a2a/a2a-json-rpc-endpoint-for-an-agent"}]},{"group":"agents","pages":[{"title":"Get code files for a cleaning task","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /agents/cleaning/{cleaningTaskId}/code","href":"/api-reference/agents/get-code-files-for-a-cleaning-task"},{"title":"Request cleaning on a dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /agents/{username}/{namespace}/{datasetName}/requestCleaning","href":"/api-reference/agents/request-cleaning-on-a-dataset"}]},{"group":"datasets","pages":[{"title":"Fetch datasets","deprecated":true,"version":null,"openapi":"/api-reference/openapi.yml get /data","href":"/api-reference/datasets/fetch-datasets"},{"title":"Fetch datasets in namespace","deprecated":true,"version":null,"openapi":"/api-reference/openapi.yml get /data/{namespace}","href":"/api-reference/datasets/fetch-datasets-in-namespace"}]},{"group":"data","pages":[{"title":"List ingestions for a dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /data/{username}/{namespace}/{datasetName}/ingest/attempts","href":"/api-reference/data/list-ingestions-for-a-dataset"}]},{"group":"dataset","pages":[{"title":"Get dataset information","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /data/{username}/{namespace}/{datasetName}","href":"/api-reference/dataset/get-dataset-information"},{"title":"Rename a namespace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /data/{username}/{namespace}/rename","href":"/api-reference/dataset/rename-a-namespace"},{"title":"Rename a dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /data/{username}/{namespace}/{datasetName}/rename","href":"/api-reference/dataset/rename-a-dataset"},{"title":"Update inference definition","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml put /data/{username}/{namespace}/{datasetName}/inferDefinition","href":"/api-reference/dataset/update-inference-definition"},{"title":"Clear all data for a dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /data/{username}/{namespace}/{datasetName}/clear","href":"/api-reference/dataset/clear-all-data-for-a-dataset"},{"title":"Delete all data and metadata for a dataset (balefire)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml delete /data/{username}/{namespace}/{datasetName}/balefire","href":"/api-reference/dataset/delete-all-data-and-metadata-for-a-dataset-balefire"},{"title":"Update dataset sort order","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml put /schema/{username}/{namespace}/{datasetName}/sort-order","href":"/api-reference/dataset/update-dataset-sort-order"}]},{"group":"namespace","pages":[{"title":"Delete all data and metadata for a namespace (balefire)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml delete /data/{username}/{namespace}/balefire","href":"/api-reference/namespace/delete-all-data-and-metadata-for-a-namespace-balefire"}]},{"group":"ingest","pages":[{"title":"Preview","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /infer/preview","href":"/api-reference/ingest/preview"},{"title":"Infer dataset description","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /infer/description","href":"/api-reference/ingest/infer-dataset-description"},{"title":"Schema","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /infer/schema","href":"/api-reference/ingest/schema"},{"title":"Create new dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /ingest/new/{namespace}/{datasetName}","href":"/api-reference/ingest/create-new-dataset"},{"title":"Ingest data","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /ingest/{namespace}/{datasetName}","href":"/api-reference/ingest/ingest-data"}]},{"group":"buildspecs","pages":[{"title":"List the caller's BuildSpecs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /build-specs","href":"/api-reference/buildspecs/list-the-callers-buildspecs"},{"title":"Create a BuildSpec","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /build-specs","href":"/api-reference/buildspecs/create-a-buildspec"},{"title":"Get a BuildSpec","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /build-specs/{buildSpecId}","href":"/api-reference/buildspecs/get-a-buildspec"},{"title":"Edit a BuildSpec","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml put /build-specs/{buildSpecId}","href":"/api-reference/buildspecs/edit-a-buildspec"},{"title":"Delete a BuildSpec","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml delete /build-specs/{buildSpecId}","href":"/api-reference/buildspecs/delete-a-buildspec"},{"title":"Schedule a build (create a BuildRun)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /build-specs/{buildSpecId}/run","href":"/api-reference/buildspecs/schedule-a-build-create-a-buildrun"},{"title":"Preview a build (dry run)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /build-specs/{buildSpecId}/preview","href":"/api-reference/buildspecs/preview-a-build-dry-run"},{"title":"List a BuildSpec's runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /build-specs/{buildSpecId}/runs","href":"/api-reference/buildspecs/list-a-buildspecs-runs"},{"title":"Get a BuildRun","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /build-runs/{buildRunId}","href":"/api-reference/buildspecs/get-a-buildrun"},{"title":"List the ingestions a BuildRun performed","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /build-runs/{buildRunId}/ingestions","href":"/api-reference/buildspecs/list-the-ingestions-a-buildrun-performed"},{"title":"List a preview run's outputs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /build-runs/{buildRunId}/outputs","href":"/api-reference/buildspecs/list-a-preview-runs-outputs"},{"title":"Fetch a preview output's download URL","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /build-runs/{buildRunId}/outputs/{destinationName}","href":"/api-reference/buildspecs/fetch-a-preview-outputs-download-url"},{"title":"List a pipeline's file-input slot bindings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /build-specs/{buildSpecId}/file-inputs","href":"/api-reference/buildspecs/list-a-pipelines-file-input-slot-bindings"},{"title":"Set (replace) the files bound to a file-input slot","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml put /build-specs/{buildSpecId}/file-inputs/{slot}","href":"/api-reference/buildspecs/set-replace-the-files-bound-to-a-file-input-slot"},{"title":"Unbind a file-input slot","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml delete /build-specs/{buildSpecId}/file-inputs/{slot}","href":"/api-reference/buildspecs/unbind-a-file-input-slot"},{"title":"Add a file to a batch file-input slot","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /build-specs/{buildSpecId}/file-inputs/{slot}/members","href":"/api-reference/buildspecs/add-a-file-to-a-batch-file-input-slot"},{"title":"Remove a file from a file-input slot","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml delete /build-specs/{buildSpecId}/file-inputs/{slot}/members/{fileId}","href":"/api-reference/buildspecs/remove-a-file-from-a-file-input-slot"},{"title":"List a pipeline repo's files","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /build-specs/{buildSpecId}/files","href":"/api-reference/buildspecs/list-a-pipeline-repos-files"},{"title":"Save edits to a pipeline repo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml put /build-specs/{buildSpecId}/files","href":"/api-reference/buildspecs/save-edits-to-a-pipeline-repo"},{"title":"Read one file from a pipeline repo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /build-specs/{buildSpecId}/file","href":"/api-reference/buildspecs/read-one-file-from-a-pipeline-repo"},{"title":"Validate a pipeline repo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /build-specs/{buildSpecId}/files/validate","href":"/api-reference/buildspecs/validate-a-pipeline-repo"},{"title":"Sync a pipeline repo's manifest with the spec","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /build-specs/{buildSpecId}/files/sync-manifest","href":"/api-reference/buildspecs/sync-a-pipeline-repos-manifest-with-the-spec"}]},{"group":"ingestionTracking","pages":[{"title":"Retry ingestion","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /ingestionTracking/{ingestionId}/retry","href":"/api-reference/ingestiontracking/retry-ingestion"},{"title":"Mark ingestion as seen","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /ingestionTracking/{ingestionId}/seen","href":"/api-reference/ingestiontracking/mark-ingestion-as-seen"}]},{"group":"links","pages":[{"title":"Load links","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /links/{username}/{namespace}/{datasetName}","href":"/api-reference/links/load-links"},{"title":"Rebuild links","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /links/{username}/{namespace}/{datasetName}","href":"/api-reference/links/rebuild-links"},{"title":"Preview links","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /links/preview/{username}/{namespace}/{datasetName}","href":"/api-reference/links/preview-links"},{"title":"Add a new link","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /links/add","href":"/api-reference/links/add-a-new-link"}]},{"group":"ontology","pages":[{"title":"Get dataset ontology","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /ontology/{username}/{namespace}/{datasetName}","href":"/api-reference/ontology/get-dataset-ontology"},{"title":"Save dataset ontology","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /ontology/{username}/{namespace}/{datasetName}","href":"/api-reference/ontology/save-dataset-ontology"},{"title":"Curate ontology links","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /ontology/curate-links","href":"/api-reference/ontology/curate-ontology-links"}]},{"group":"schema","pages":[{"title":"List all datasets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /schema/datasets/all","href":"/api-reference/schema/list-all-datasets"},{"title":"List user namespaces","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /schema/{user}/namespaces","href":"/api-reference/schema/list-user-namespaces"},{"title":"List datasets within namespace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /schema/{user}/{namespace}/datasets","href":"/api-reference/schema/list-datasets-within-namespace"}]},{"group":"permissions","pages":[{"title":"List users with access to a dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /permissions/datasets/{username}/{namespace}/{datasetName}/shares","href":"/api-reference/permissions/list-users-with-access-to-a-dataset"},{"title":"Share a dataset with a user","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /permissions/datasets/{username}/{namespace}/{datasetName}/shares","href":"/api-reference/permissions/share-a-dataset-with-a-user"},{"title":"Revoke a user's access to a dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml delete /permissions/datasets/{username}/{namespace}/{datasetName}/shares","href":"/api-reference/permissions/revoke-a-users-access-to-a-dataset"},{"title":"List users with access to a namespace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /permissions/namespaces/{username}/{namespace}/shares","href":"/api-reference/permissions/list-users-with-access-to-a-namespace"},{"title":"Share a namespace with a user","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /permissions/namespaces/{username}/{namespace}/shares","href":"/api-reference/permissions/share-a-namespace-with-a-user"},{"title":"Revoke a user's access to a namespace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml delete /permissions/namespaces/{username}/{namespace}/shares","href":"/api-reference/permissions/revoke-a-users-access-to-a-namespace"}]},{"group":"query","pages":[{"title":"Query data","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /query","href":"/api-reference/query/query-data"}]},{"group":"autorag","pages":[{"title":"Run AutoRAG agent over all data","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /query/autorag","href":"/api-reference/autorag/run-autorag-agent-over-all-data"},{"title":"Run AutoRAG agent with streaming response","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /query/ask","href":"/api-reference/autorag/run-autorag-agent-with-streaming-response"}]},{"group":"agentRuns","pages":[{"title":"Get the status of an agent run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /query/runs/{runId}","href":"/api-reference/agentruns/get-the-status-of-an-agent-run"},{"title":"Delete an agent run and any resume cache associated with it","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml delete /query/runs/{runId}","href":"/api-reference/agentruns/delete-an-agent-run-and-any-resume-cache-associated-with-it"},{"title":"Resume a previously paused or crashed agent run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /query/runs/{runId}/resume","href":"/api-reference/agentruns/resume-a-previously-paused-or-crashed-agent-run"},{"title":"Submit thumbs up/down feedback on a completed agent run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /query/runs/{runId}/feedback","href":"/api-reference/agentruns/submit-thumbs-updown-feedback-on-a-completed-agent-run"}]},{"group":"conversations","pages":[{"title":"List the caller's conversations within a namespace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /query/conversations","href":"/api-reference/conversations/list-the-callers-conversations-within-a-namespace"},{"title":"Get a conversation and its turns","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /query/conversations/{conversationId}","href":"/api-reference/conversations/get-a-conversation-and-its-turns"}]},{"group":"user","pages":[{"title":"List user tokens","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /user/tokens","href":"/api-reference/user/list-user-tokens"},{"title":"Add a new user token","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /user/token","href":"/api-reference/user/add-a-new-user-token"},{"title":"Delete user token","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml delete /user/token/{tokenId}","href":"/api-reference/user/delete-user-token"},{"title":"List token permissions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /user/tokens/{tokenId}/permissions","href":"/api-reference/user/list-token-permissions"},{"title":"Get user usage history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /user/usage/history","href":"/api-reference/user/get-user-usage-history"},{"title":"Get user usage aggregated by day","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /user/usage/by-day","href":"/api-reference/user/get-user-usage-aggregated-by-day"},{"title":"Get the current user","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /user/me","href":"/api-reference/user/get-the-current-user"}]},{"group":"multipart-upload","pages":[{"title":"Prepare multipart upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /upload/multipart/{username}/{namespace}/{datasetName}/prepare","href":"/api-reference/multipart-upload/prepare-multipart-upload"},{"title":"Finish multipart upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /upload/multipart/{username}/{namespace}/{datasetName}/finish","href":"/api-reference/multipart-upload/finish-multipart-upload"},{"title":"Abort multipart upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /upload/multipart/{username}/{namespace}/{datasetName}/abort","href":"/api-reference/multipart-upload/abort-multipart-upload"}]},{"group":"fileUpload","pages":[{"title":"Prepare session for file upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /file-upload/prepare","href":"/api-reference/fileupload/prepare-session-for-file-upload"},{"title":"Finish file upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /file-upload/{sessionId}/files/{fileId}/finish","href":"/api-reference/fileupload/finish-file-upload"},{"title":"Abort file upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /file-upload/{sessionId}/abort","href":"/api-reference/fileupload/abort-file-upload"},{"title":"List completed files in an upload session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /file-upload/{sessionId}/files","href":"/api-reference/fileupload/list-completed-files-in-an-upload-session"}]},{"group":"data-assets","pages":[{"title":"List the committed, non-deleted data assets in a namespace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /data-assets/{username}/{namespace}","href":"/api-reference/data-assets/list-the-committed-non-deleted-data-assets-in-a-namespace"},{"title":"Create a data asset and start its first version upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /data-assets/{username}/{namespace}","href":"/api-reference/data-assets/create-a-data-asset-and-start-its-first-version-upload"},{"title":"Get a data asset's latest metadata and a presigned download URL","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /data-assets/{username}/{namespace}/{assetId}","href":"/api-reference/data-assets/get-a-data-assets-latest-metadata-and-a-presigned-download-url"},{"title":"Soft-delete a data asset (retained briefly, then hard-purged)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml delete /data-assets/{username}/{namespace}/{assetId}","href":"/api-reference/data-assets/soft-delete-a-data-asset-retained-briefly-then-hard-purged"},{"title":"Update a data asset's name and/or description","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml patch /data-assets/{username}/{namespace}/{assetId}","href":"/api-reference/data-assets/update-a-data-assets-name-andor-description"},{"title":"List the versions of a data asset, newest first","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /data-assets/{username}/{namespace}/{assetId}/versions","href":"/api-reference/data-assets/list-the-versions-of-a-data-asset-newest-first"},{"title":"Start uploading a new version of a data asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /data-assets/{username}/{namespace}/{assetId}/versions","href":"/api-reference/data-assets/start-uploading-a-new-version-of-a-data-asset"},{"title":"Get a presigned download URL for a specific version","description":null,"deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /data-assets/{username}/{namespace}/{assetId}/versions/{versionNo}","href":"/api-reference/data-assets/get-a-presigned-download-url-for-a-specific-version"},{"title":"Complete a version upload from the client's part manifest","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /data-assets/{username}/{namespace}/{assetId}/versions/{versionNo}/finish","href":"/api-reference/data-assets/complete-a-version-upload-from-the-clients-part-manifest"},{"title":"Acknowledge an uploaded chunk, extending the deadline and getting the next chunk's URL","description":null,"deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /data-assets/{username}/{namespace}/{assetId}/versions/{versionNo}/parts/{partNumber}/done","href":"/api-reference/data-assets/acknowledge-an-uploaded-chunk-extending-the-deadline-and-getting-the-next-chunks-url"},{"title":"Recover a pending upload - what landed, with ETags, and URLs for what did not","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml get /data-assets/{username}/{namespace}/{assetId}/versions/{versionNo}/status","href":"/api-reference/data-assets/recover-a-pending-upload--what-landed-with-etags-and-urls-for-what-did-not"},{"title":"Re-issue upload URLs for specific parts, extending the deadline","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /data-assets/{username}/{namespace}/{assetId}/versions/{versionNo}/parts/presign","href":"/api-reference/data-assets/re-issue-upload-urls-for-specific-parts-extending-the-deadline"},{"title":"Abort a pending version upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /data-assets/{username}/{namespace}/{assetId}/versions/{versionNo}/abort","href":"/api-reference/data-assets/abort-a-pending-version-upload"},{"title":"Roll back to a retained version by copying it as a new version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yml post /data-assets/{username}/{namespace}/{assetId}/rollback","href":"/api-reference/data-assets/roll-back-to-a-retained-version-by-copying-it-as-a-new-version"}]}]}]},{"tab":"Python SDK","icon":"python","pages":[{"title":"Python SDK","href":"/pythonsdk"}]}]},"basePath":"","title":"Complete a version upload from the client's part manifest - Documentation","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","Page-Bevw23-4.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}