Validates typed JSON values against the source property configuration and accepts the entries for asynchronous processing.
Values retain their JSON types at the API boundary. They are serialized to the source’s string-at-rest representation before queueing. Properties without a configured type are inferred from JSON; list delimiters default to , only when no delimiter is already configured.
Set delete: true on an entry to delete it; deleted entries carry no properties. Upserts and deletes can be mixed in one request, but each entry id may appear only once.
A successful 202 response returns the ingest batch correlation id, accepted source and entry count, UTC acceptance time, and any previously absent properties inferred from this request. Acceptance means the batch was queued; downstream entry processing and worker-owned property registration may still be running.
You need the customer-facing source ID and a tenant-level Application bearer token with the write:sources scope. The Application must be granted access to the target source or to all sources. See Application access tokens to request a token for the tenant audience.
A token created by the legacy data-provider credential exchange has the import-datasource permission. This endpoint requires write:sources, so use a tenant-level Application token.
Each entry is an upsert unless it sets delete: true. A deleted entry must omit properties or send an empty array; a delete that also sends properties is rejected with 400. Upserts and deletes can be mixed in one request, but each entry id may appear only once. Values keep their native JSON types at the API boundary and are serialized before they enter the asynchronous ingest pipeline.
Source property type
Accepted JSON value
Text
String
LocalizedText
String with language
List
Array of strings
LocalizedList
Array of strings with language
Boolean
Boolean
Timestamp
ISO 8601 string
Integer
Whole JSON number within the 64-bit integer range
Decimal
Finite JSON number
Localized properties require language. Non-localized properties reject it. A null value clears a configured property by storing an empty value.
A timestamp string is treated as a timestamp only when the source property is already configured as Timestamp. An unconfigured string is inferred as Text or LocalizedText.
When a property has no configured type, Occtoo infers it from all values for that property in the request. Strings become Text or LocalizedText; string arrays become List or LocalizedList; booleans become Boolean; whole numbers become Integer; and fractional numbers become Decimal. Integer and decimal values in one request are promoted to Decimal. Other incompatible shapes reject the complete request. Occtoo cannot infer a property from only null values.New list properties use , as their delimiter. Existing list properties keep their configured delimiter, and list elements cannot contain it. Property IDs are matched case-insensitively and stored in lowercase. newPropertiesFound reports inferred properties, but the ingestion worker registers them asynchronously, so they may not appear in Configuration immediately.
Validation is all-or-nothing. A 400 response returns validation messages keyed by request path. A 202 response means the complete batch passed validation and was queued; downstream entry processing and property registration may still be running. Keep correlationId for diagnostics, and do not retry a successful request because data is not visible immediately. Retry 429 and transient 5xx responses with bounded exponential backoff, respecting Retry-After when present.
Properties absent from the loaded source configuration and inferred by this request. The ingestion worker registers them asynchronously; they may not be visible in Configuration immediately. Empty when no new properties were found.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Occtoo Documentation","colors":{"primary":"#E36103","light":"#FA9A17","dark":"#EB8F38"},"logo":{"light":"https://mintcdn.com/occtoo/-gNJJgSF3T9V_IbQ/logo/occtoo-light.svg?fit=max\u0026auto=format\u0026n=-gNJJgSF3T9V_IbQ\u0026q=85\u0026s=21e485640a50820820a663446d883d87","dark":"https://mintcdn.com/occtoo/-gNJJgSF3T9V_IbQ/logo/occtoo-dark.svg?fit=max\u0026auto=format\u0026n=-gNJJgSF3T9V_IbQ\u0026q=85\u0026s=d127d743e86586f660c4432069ac6e7f"},"favicon":"https://mintcdn.com/occtoo/wBeHKCIOR2NPRpYE/favicon.ico?fit=max\u0026auto=format\u0026n=wBeHKCIOR2NPRpYE\u0026q=85\u0026s=2ef86d93e26a6f82f9947f1881a0e8e8","navbar":{"links":[{"href":"https://www.occtoo.com","label":"occtoo.com"}]},"footer":{"socials":{"github":"https://github.com/Occtoo","linkedin":"https://www.linkedin.com/company/occtoo"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"occtoo","hasAudioNarration":false,"actualSubdomain":"occtoo","customDomains":["docs.occtoo.com"],"gitSource":{"type":"github","owner":"occtoo","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6adb5f3cb256aa4200f8bb43","collectionId":"9fb5ceeb-bec7-4a13-8fd7-bd3f632e547b","liveDeploymentHistoryId":"6adb5f3cb256aa4200f8bb43","schemaVersion":"v3"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6adb5f3cb256aa4200f8bb43","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"Documentation","count":131},{"language":"default","tag":"Guides","count":112},{"language":"default","tag":"Occtoo Studio","count":99},{"language":"default","tag":"API Reference","count":44},{"language":"default","tag":"Sources","count":33},{"language":"default","tag":"Configuration API","count":26},{"language":"default","tag":"Destinations","count":18},{"language":"default","tag":"Partner Zone","count":13},{"language":"default","tag":"Cards","count":13},{"language":"default","tag":"Get started","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"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":"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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"table td:first-child>code:only-child{white-space:nowrap}.occ-hero h1,.occ-home{margin:0 auto;color:var(--occ-ink)}.occ-home{--occ-accent:rgb(var(--primary));--occ-accent-text:color-mix(in srgb, rgb(var(--primary)) 82%, #1d1916);--occ-ink:#1d1916;--occ-strong:#2c2825;--occ-muted:#565250;--occ-border:rgb(3 7 18 / 0.1);--occ-card:#ffffff;--occ-tile:rgb(var(--primary) / 0.09);--occ-panel:rgb(var(--primary) / 0.06);--occ-hover-border:rgb(var(--primary) / 0.45);--occ-on-accent:#ffffff;--occ-shadow:rgba(29, 25, 22, 0.22);max-width:72rem;padding:0 1.5rem 5rem;font-size:15px;line-height:1.55}.dark .occ-home{--occ-accent:rgb(var(--primary-light));--occ-accent-text:rgb(var(--primary-light));--occ-ink:#e5e1de;--occ-strong:#ffffff;--occ-muted:#a39d97;--occ-border:rgb(255 255 255 / 0.1);--occ-card:rgb(var(--background-dark));--occ-tile:rgb(var(--primary-light) / 0.14);--occ-panel:rgb(var(--primary-light) / 0.07);--occ-hover-border:rgb(var(--primary-light) / 0.45);--occ-on-accent:rgb(var(--background-dark));--occ-shadow:rgba(0, 0, 0, 0.55)}.occ-home a{text-decoration:none}.occ-arrow{flex:none;width:15px;height:15px}.occ-hero{text-align:center;padding:3.75rem 0 2.5rem}.occ-eyebrow{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--occ-accent-text);margin:0 0 1.25rem}.occ-hero h1{max-width:18ch;font-size:clamp(2.25rem,5.2vw,3.4rem);font-weight:800;letter-spacing:-.03em;line-height:1.07}.occ-dot,.occ-pill svg{color:var(--occ-accent)}.occ-hl{color:var(--occ-accent-text)}.occ-lede{max-width:44ch;margin:1.15rem auto 0;color:var(--occ-muted)}.occ-popular{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem;margin-top:1.65rem}.occ-pill,.occ-popular-label{font-size:12px;font-weight:600}.occ-popular-label{margin-right:.25rem;color:var(--occ-muted)}.occ-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .8rem;border:1px solid var(--occ-border);border-radius:999px;background:var(--occ-card);color:var(--occ-ink);transition:border-color .15s ease,transform .15s ease}.occ-pill:hover{border-color:var(--occ-accent);transform:translateY(-1px)}.occ-pill svg{flex:none}.occ-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin:1.1rem 0}.occ-card h3,.occ-panel-head h2,.occ-section-head h2{font-weight:700;letter-spacing:-.02em;color:var(--occ-ink)}.occ-section-head h2{margin:0;font-size:1.35rem}.occ-section-link{display:inline-flex;align-items:center;gap:.35rem;font-size:13px;font-weight:600;white-space:nowrap;color:var(--occ-accent);transition:opacity .15s ease}.occ-section-link:hover{opacity:.75}.occ-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.occ-card{display:flex;flex-direction:column;padding:1.5rem;border:1px solid var(--occ-border);border-radius:14px;background:var(--occ-card);transition:border-color .15s ease,box-shadow .15s ease}.occ-card:hover{border-color:var(--occ-hover-border);box-shadow:0 8px 22px -14px var(--occ-shadow)}.occ-tile{--occ-tile-size:34px;display:inline-flex;align-items:center;justify-content:center;flex:none;width:var(--occ-tile-size);height:var(--occ-tile-size);border-radius:10px;background:var(--occ-tile);color:var(--occ-accent)}.occ-card .occ-tile{--occ-tile-size:44px;border-radius:12px;margin-bottom:1.25rem}.occ-card .occ-tile svg{width:22px;height:22px}.occ-card h3{margin:0 0 .5rem;font-size:17px;letter-spacing:-.01em;color:var(--occ-strong)}.occ-card p{margin:0 0 1.35rem;font-size:13.5px;line-height:1.55;color:var(--occ-muted)}.occ-card-links{margin-top:auto}.occ-sub{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.6rem 0;border-top:1px solid var(--occ-border);font-size:13px;font-weight:500;color:var(--occ-accent-text);transition:color .15s ease}.occ-sub .occ-arrow{opacity:.55}.occ-sub:hover{color:var(--occ-accent)}.occ-sub:hover .occ-arrow{opacity:1}.occ-panel{margin-top:1.75rem;padding:1.5rem;border:1px solid var(--occ-border);border-radius:16px;background:var(--occ-panel)}.occ-panel-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.occ-panel-head h2{margin:.35rem 0 0;font-size:1.3rem}.occ-button{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;border-radius:8px;background:var(--occ-accent);color:var(--occ-on-accent);font-size:12.5px;font-weight:700;white-space:nowrap;transition:filter .15s ease,transform .15s ease}.occ-button:hover{filter:brightness(1.07);transform:translateY(-1px)}.occ-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.85rem}.occ-step{padding:.9rem;border:1px solid var(--occ-border);border-radius:12px;background:var(--occ-card)}.occ-step-num{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;margin-bottom:.85rem;border-radius:999px;background:var(--occ-accent);color:var(--occ-on-accent);font-size:11px;font-weight:700}.occ-footer-card h3,.occ-step h4{margin:0 0 .25rem;font-size:12.5px;font-weight:700;color:var(--occ-strong)}.occ-footer-card p,.occ-step p{margin:0;font-size:11.5px;line-height:1.45;color:var(--occ-muted)}.occ-footer-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1.75rem}.occ-footer-card{display:flex;align-items:flex-start;gap:.75rem;padding:1rem 1.1rem;border:1px solid var(--occ-border);border-radius:14px;background:var(--occ-card);transition:border-color .15s ease}.occ-footer-card:hover{border-color:var(--occ-hover-border)}.occ-footer-card h3{margin:0 0 .15rem;font-size:13.5px}.occ-footer-card p{font-size:12px}.occ-footer-arrow{margin-left:auto;color:var(--occ-muted)}@media (max-width:900px){.occ-grid,.occ-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:620px){.occ-footer-grid,.occ-grid,.occ-steps{grid-template-columns:minmax(0,1fr)}.occ-hero{padding-top:2.5rem}}"}],"page":{"pagePath":"api-reference/ingest/typed-source-entries","slug":"/api-reference/ingest/typed-source-entries","pageMetadata":{"title":"Ingest typed JSON into a source","description":"Validates typed JSON values against the source property configuration and accepts the entries for asynchronous processing.\n\nValues retain their JSON types at the API boundary. They are serialized to the source's string-at-rest representation before queueing. Properties without a configured type are inferred from JSON; list delimiters default to `,` only when no delimiter is already configured.\n\nSet `delete: true` on an entry to delete it; deleted entries carry no properties. Upserts and deletes can be mixed in one request, but each entry id may appear only once.\n\nA successful `202` response returns the ingest batch correlation id, accepted source and entry count, UTC acceptance time, and any previously absent properties inferred from this request. Acceptance means the batch was queued; downstream entry processing and worker-owned property registration may still be running.","deprecated":null,"version":null,"sidebarTitle":"Typed source entries","tag":"NEW","openapi":"/api-reference/openapi/ingest.json post /v1/sources/{sourceId}","href":"/api-reference/ingest/typed-source-entries","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 p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Validates typed JSON values against the source property configuration and accepts the entries for asynchronous processing.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Values retain their JSON types at the API boundary. They are serialized to the source’s string-at-rest representation before queueing. Properties without a configured type are inferred from JSON; list delimiters default to \", _jsx(_components.code, {\n children: \",\"\n }), \" only when no delimiter is already configured.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Set \", _jsx(_components.code, {\n children: \"delete: true\"\n }), \" on an entry to delete it; deleted entries carry no properties. Upserts and deletes can be mixed in one request, but each entry id may appear only once.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A successful \", _jsx(_components.code, {\n children: \"202\"\n }), \" response returns the ingest batch correlation id, accepted source and entry count, UTC acceptance time, and any previously absent properties inferred from this request. Acceptance means the batch was queued; downstream entry processing and worker-owned property registration may still be running.\"]\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Note,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`before-you-begin`,children:`Before you begin`}),`\n`,_jsxs(_components.p,{children:[`You need the customer-facing source ID and a tenant-level Application bearer token with the `,_jsx(_components.code,{children:`write:sources`}),` scope. The Application must be granted access to the target source or to all sources. See `,_jsx(_components.a,{href:`/api-reference/authentication/application-token`,children:`Application access tokens`}),` to request a token for the tenant audience.`]}),`\n`,_jsxs(Warning,{children:[`A token created by the legacy data-provider credential exchange has the `,_jsx(_components.code,{children:`import-datasource`}),` permission. This endpoint requires `,_jsx(_components.code,{children:`write:sources`}),`, so use a tenant-level Application token.`]}),`\n`,_jsx(Heading,{level:`2`,id:`typed-ingest-behavior`,children:`Typed ingest behavior`}),`\n`,_jsxs(_components.p,{children:[`Each entry is an upsert unless it sets `,_jsx(_components.code,{children:`delete: true`}),`. A deleted entry must omit `,_jsx(_components.code,{children:`properties`}),` or send an empty array; a delete that also sends properties is rejected with `,_jsx(_components.code,{children:`400`}),`. Upserts and deletes can be mixed in one request, but each entry id may appear only once. Values keep their native JSON types at the API boundary and are serialized before they enter the asynchronous ingest pipeline.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Source property type`}),_jsx(_components.th,{children:`Accepted JSON value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Text`})}),_jsx(_components.td,{children:`String`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`LocalizedText`})}),_jsxs(_components.td,{children:[`String with `,_jsx(_components.code,{children:`language`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`List`})}),_jsx(_components.td,{children:`Array of strings`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`LocalizedList`})}),_jsxs(_components.td,{children:[`Array of strings with `,_jsx(_components.code,{children:`language`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Boolean`})}),_jsx(_components.td,{children:`Boolean`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Timestamp`})}),_jsx(_components.td,{children:`ISO 8601 string`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Integer`})}),_jsx(_components.td,{children:`Whole JSON number within the 64-bit integer range`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Decimal`})}),_jsx(_components.td,{children:`Finite JSON number`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Localized properties require `,_jsx(_components.code,{children:`language`}),`. Non-localized properties reject it. A `,_jsx(_components.code,{children:`null`}),` value clears a configured property by storing an empty value.`]}),`\n`,_jsxs(Note,{children:[`A timestamp string is treated as a timestamp only when the source property is already configured as `,_jsx(_components.code,{children:`Timestamp`}),`. An unconfigured string is inferred as `,_jsx(_components.code,{children:`Text`}),` or `,_jsx(_components.code,{children:`LocalizedText`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`type-inference-for-new-properties`,children:`Type inference for new properties`}),`\n`,_jsxs(_components.p,{children:[`When a property has no configured type, Occtoo infers it from all values for that property in the request. Strings become `,_jsx(_components.code,{children:`Text`}),` or `,_jsx(_components.code,{children:`LocalizedText`}),`; string arrays become `,_jsx(_components.code,{children:`List`}),` or `,_jsx(_components.code,{children:`LocalizedList`}),`; booleans become `,_jsx(_components.code,{children:`Boolean`}),`; whole numbers become `,_jsx(_components.code,{children:`Integer`}),`; and fractional numbers become `,_jsx(_components.code,{children:`Decimal`}),`. Integer and decimal values in one request are promoted to `,_jsx(_components.code,{children:`Decimal`}),`. Other incompatible shapes reject the complete request. Occtoo cannot infer a property from only `,_jsx(_components.code,{children:`null`}),` values.`]}),`\n`,_jsxs(_components.p,{children:[`New list properties use `,_jsx(_components.code,{children:`,`}),` as their delimiter. Existing list properties keep their configured delimiter, and list elements cannot contain it. Property IDs are matched case-insensitively and stored in lowercase. `,_jsx(_components.code,{children:`newPropertiesFound`}),` reports inferred properties, but the ingestion worker registers them asynchronously, so they may not appear in Configuration immediately.`]}),`\n`,_jsx(Heading,{level:`2`,id:`processing-and-errors`,children:`Processing and errors`}),`\n`,_jsxs(_components.p,{children:[`Validation is all-or-nothing. A `,_jsx(_components.code,{children:`400`}),` response returns validation messages keyed by request path. A `,_jsx(_components.code,{children:`202`}),` response means the complete batch passed validation and was queued; downstream entry processing and property registration may still be running. Keep `,_jsx(_components.code,{children:`correlationId`}),` for diagnostics, and do not retry a successful request because data is not visible immediately. Retry `,_jsx(_components.code,{children:`429`}),` and transient `,_jsx(_components.code,{children:`5xx`}),` responses with bounded exponential backoff, respecting `,_jsx(_components.code,{children:`Retry-After`}),` when present.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Ingest typed JSON into a source","description":"Validates typed JSON values against the source property configuration and accepts the entries for asynchronous processing.\n\nValues retain their JSON types at the API boundary. They are serialized to the source's string-at-rest representation before queueing. Properties without a configured type are inferred from JSON; list delimiters default to `,` only when no delimiter is already configured.\n\nSet `delete: true` on an entry to delete it; deleted entries carry no properties. Upserts and deletes can be mixed in one request, but each entry id may appear only once.\n\nA successful `202` response returns the ingest batch correlation id, accepted source and entry count, UTC acceptance time, and any previously absent properties inferred from this request. Acceptance means the batch was queued; downstream entry processing and worker-owned property registration may still be running.","deprecated":null,"version":null,"sidebarTitle":"Typed source entries","tag":"NEW","openapi":"/api-reference/openapi/ingest.json post /v1/sources/{sourceId}","href":"/api-reference/ingest/typed-source-entries","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Before you begin","slug":"before-you-begin","depth":2,"children":[]},{"title":"Typed ingest behavior","slug":"typed-ingest-behavior","depth":2,"children":[]},{"title":"Type inference for new properties","slug":"type-inference-for-new-properties","depth":2,"children":[]},{"title":"Processing and errors","slug":"processing-and-errors","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Sources"],"summary":"Ingest typed JSON into a source","description":"Validates typed JSON values against the source property configuration and accepts the entries for asynchronous processing.\n\nValues retain their JSON types at the API boundary. They are serialized to the source's string-at-rest representation before queueing. Properties without a configured type are inferred from JSON; list delimiters default to `,` only when no delimiter is already configured.\n\nSet `delete: true` on an entry to delete it; deleted entries carry no properties. Upserts and deletes can be mixed in one request, but each entry id may appear only once.\n\nA successful `202` response returns the ingest batch correlation id, accepted source and entry count, UTC acceptance time, and any previously absent properties inferred from this request. Acceptance means the batch was queued; downstream entry processing and worker-owned property registration may still be running.","x-mint":{"href":"/api-reference/ingest/typed-source-entries","metadata":{"tag":"NEW"},"content":"## Before you begin\n\nYou need the customer-facing source ID and a tenant-level Application bearer token with the `write:sources` scope. The Application must be granted access to the target source or to all sources. See [Application access tokens](/api-reference/authentication/application-token) to request a token for the tenant audience.\n\n\u003cWarning>A token created by the legacy data-provider credential exchange has the `import-datasource` permission. This endpoint requires `write:sources`, so use a tenant-level Application token.\u003c/Warning>\n\n## Typed ingest behavior\n\nEach entry is an upsert unless it sets `delete: true`. A deleted entry must omit `properties` or send an empty array; a delete that also sends properties is rejected with `400`. Upserts and deletes can be mixed in one request, but each entry id may appear only once. Values keep their native JSON types at the API boundary and are serialized before they enter the asynchronous ingest pipeline.\n\n| Source property type | Accepted JSON value |\n| --- | --- |\n| `Text` | String |\n| `LocalizedText` | String with `language` |\n| `List` | Array of strings |\n| `LocalizedList` | Array of strings with `language` |\n| `Boolean` | Boolean |\n| `Timestamp` | ISO 8601 string |\n| `Integer` | Whole JSON number within the 64-bit integer range |\n| `Decimal` | Finite JSON number |\n\nLocalized properties require `language`. Non-localized properties reject it. A `null` value clears a configured property by storing an empty value.\n\n\u003cNote>A timestamp string is treated as a timestamp only when the source property is already configured as `Timestamp`. An unconfigured string is inferred as `Text` or `LocalizedText`.\u003c/Note>\n\n## Type inference for new properties\n\nWhen a property has no configured type, Occtoo infers it from all values for that property in the request. Strings become `Text` or `LocalizedText`; string arrays become `List` or `LocalizedList`; booleans become `Boolean`; whole numbers become `Integer`; and fractional numbers become `Decimal`. Integer and decimal values in one request are promoted to `Decimal`. Other incompatible shapes reject the complete request. Occtoo cannot infer a property from only `null` values.\n\nNew list properties use `,` as their delimiter. Existing list properties keep their configured delimiter, and list elements cannot contain it. Property IDs are matched case-insensitively and stored in lowercase. `newPropertiesFound` reports inferred properties, but the ingestion worker registers them asynchronously, so they may not appear in Configuration immediately.\n\n## Processing and errors\n\nValidation is all-or-nothing. A `400` response returns validation messages keyed by request path. A `202` response means the complete batch passed validation and was queued; downstream entry processing and property registration may still be running. Keep `correlationId` for diagnostics, and do not retry a successful request because data is not visible immediately. Retry `429` and transient `5xx` responses with bounded exponential backoff, respecting `Retry-After` when present."},"operationId":"ingestTypedSourceEntries","parameters":["651add91-0cb8-4607-a7f4-e42ced904add"],"requestBody":"d742f2e1-16c8-4818-9154-749bf41647ff","responses":{"202":"6d1d158f-911a-433f-859d-eceacf4c8699","400":"08291036-5ac8-4dc4-bdbd-f82fa67aed75","401":"e2327c6b-57b0-4d13-9d82-9b6fbcecee2f","403":"a693ebb1-6bf6-4231-b39b-617853c8ff28","404":"211ccd5b-7f51-4889-92ec-ab2392760b19","409":"feccc1b4-9820-4081-84f9-d75b29754f1f","429":"24693571-beed-4239-821f-5b7867663940","500":"46f2fed1-9432-481c-9115-690907619bda"},"security":["7406498c-7b06-455c-b490-88ffbc0372c1","2f15e1aa-71d4-4787-a3cf-369b34268140","cd2216b3-4c9c-4a39-adfa-13f7a614c072"],"x-required-permissions":["write:sources"],"x-permission-match":"all","method":"post","type":"path","servers":["786a0413-aa9a-44da-9f75-9b6901ab3075"],"path":"/v1/sources/{sourceId}","baseUrlOptions":["https://api.occtoo.com"],"title":"Ingest typed JSON into a source","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"651add91-0cb8-4607-a7f4-e42ced904add":{"name":"sourceId","in":"path","description":"Stable customer-facing source id within the authenticated tenant.","required":true,"schema":{"minLength":1,"type":"string","example":"products","isRequired":true,"description":"Stable customer-facing source id within the authenticated tenant.","uniqueKey":"","typeLabel":"string"},"example":"products"}},"requestBody":{"content":{"application/json":{"schema":{"required":["entries"],"type":"object","properties":{"entries":{"minItems":1,"type":"array","items":{"required":["id"],"type":"object","properties":{"id":{"maxLength":256,"minLength":1,"type":"string","description":"Source entry id.","example":"sku-123","isRequired":true,"uniqueKey":"entries.items.[INDEX].id","typeLabel":"string"},"delete":{"type":"boolean","description":"When true, delete the entry. Deleted entries must omit properties or send an empty array.","default":false,"example":false,"uniqueKey":"entries.items.[INDEX].delete","typeLabel":"boolean"},"properties":{"type":"array","items":{"required":["id","value"],"type":"object","properties":{"id":{"maxLength":256,"minLength":1,"type":"string","description":"Source property id, matched case-insensitively against source configuration.","example":"price","isRequired":true,"uniqueKey":"entries.items.[INDEX].properties.items.[INDEX].id","typeLabel":"string"},"value":{"oneOf":[{"type":"string","description":"A JSON string, number, boolean, null, or array of strings. Its shape must match the source property's configured type.","isRequired":true,"uniqueKey":"entries.items.[INDEX].properties.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"type":"number","description":"A JSON string, number, boolean, null, or array of strings. Its shape must match the source property's configured type.","isRequired":true,"uniqueKey":"entries.items.[INDEX].properties.items.[INDEX].value.oneOf.1","typeLabel":"number"},{"type":"boolean","description":"A JSON string, number, boolean, null, or array of strings. Its shape must match the source property's configured type.","isRequired":true,"uniqueKey":"entries.items.[INDEX].properties.items.[INDEX].value.oneOf.2","typeLabel":"boolean"},{"type":"array","items":{"type":"string","uniqueKey":"entries.items.[INDEX].properties.items.[INDEX].value.oneOf.3.items.[INDEX]","typeLabel":"string"},"description":"A JSON string, number, boolean, null, or array of strings. Its shape must match the source property's configured type.","isRequired":true,"uniqueKey":"entries.items.[INDEX].properties.items.[INDEX].value.oneOf.3","typeLabel":"string[]"},{"type":"null","description":"A JSON string, number, boolean, null, or array of strings. Its shape must match the source property's configured type.","isRequired":true,"uniqueKey":"entries.items.[INDEX].properties.items.[INDEX].value.oneOf.4","typeLabel":"null"}],"isRequired":true,"uniqueKey":"entries.items.[INDEX].properties.items.[INDEX].value","typeLabel":"string | number | boolean | string[] | null"},"language":{"oneOf":[{"maxLength":10,"minLength":2,"type":"null","description":"Required for LocalizedText and LocalizedList properties; omitted or null for other types.","example":"en","uniqueKey":"entries.items.[INDEX].properties.items.[INDEX].language.oneOf.0","typeLabel":"null"},{"maxLength":10,"minLength":2,"type":"string","description":"Required for LocalizedText and LocalizedList properties; omitted or null for other types.","example":"en","uniqueKey":"entries.items.[INDEX].properties.items.[INDEX].language.oneOf.1","typeLabel":"string"}],"uniqueKey":"entries.items.[INDEX].properties.items.[INDEX].language","typeLabel":"null | string"}},"additionalProperties":false,"uniqueKey":"entries.items.[INDEX].properties.items.[INDEX]","typeLabel":"object"},"description":"Typed values to upsert on the entry.","uniqueKey":"entries.items.[INDEX].properties","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"entries.items.[INDEX]","typeLabel":"object"},"description":"Non-empty collection of source entries.","isRequired":true,"uniqueKey":"entries","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"example":{"title":"example","value":{"entries":[{"id":"sku-123","properties":[{"id":"tags","value":["summer","sale"]},{"id":"price","value":100.111},{"id":"publishedAt","value":"2026-01-01T00:00:00Z"},{"id":"inStock","value":true},{"id":"name","value":"Blue chair","language":"en"}]},{"id":"sku-obsolete","delete":true}]}}},"exampleType":"examples"}},"required":true,"exampleType":"examples"},"responses":{"6d1d158f-911a-433f-859d-eceacf4c8699":{"description":"The typed entries were validated, serialized, and queued for asynchronous processing.","content":{"application/json":{"schema":{"required":["correlationId","sourceId","acceptedAt","acceptedEntryCount","newPropertiesFound"],"type":"object","properties":{"correlationId":{"type":"string","description":"Correlation id assigned to this asynchronous ingest batch. This is distinct from the HTTP trace id.","format":"uuid","example":"83b538a7-df7c-4cf4-b988-cd3b71c4cd90","isRequired":true,"uniqueKey":"correlationId","typeLabel":"string\u003cuuid>"},"sourceId":{"type":"string","description":"Customer-facing id of the source that accepted the entries.","example":"products","isRequired":true,"uniqueKey":"sourceId","typeLabel":"string"},"acceptedAt":{"type":"string","description":"UTC time at which the ingest batch was accepted and queued.","format":"date-time","example":"2026-08-13T10:15:30Z","isRequired":true,"uniqueKey":"acceptedAt","typeLabel":"string\u003cdate-time>"},"acceptedEntryCount":{"minimum":1,"type":"integer","description":"Number of entries accepted in this all-or-nothing request.","format":"int32","example":1,"isRequired":true,"uniqueKey":"acceptedEntryCount","typeLabel":"integer\u003cint32>"},"newPropertiesFound":{"type":"array","items":{"required":["id","type"],"type":"object","properties":{"id":{"type":"string","description":"Property id that was absent from the source configuration snapshot.","example":"tags","isRequired":true,"uniqueKey":"newPropertiesFound.items.[INDEX].id","typeLabel":"string"},"type":{"enum":["Text","LocalizedText","List","LocalizedList","Boolean","Timestamp","Integer","Decimal"],"type":"string","description":"Property type inferred from the submitted JSON value.","example":"List","isRequired":true,"uniqueKey":"newPropertiesFound.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"delimiter":{"oneOf":[{"type":"null","description":"Configured delimiter for inferred list properties; null for scalar properties.","example":",","uniqueKey":"newPropertiesFound.items.[INDEX].delimiter.oneOf.0","typeLabel":"null"},{"type":"string","description":"Configured delimiter for inferred list properties; null for scalar properties.","example":",","uniqueKey":"newPropertiesFound.items.[INDEX].delimiter.oneOf.1","typeLabel":"string"}],"uniqueKey":"newPropertiesFound.items.[INDEX].delimiter","typeLabel":"null | string"}},"additionalProperties":false,"uniqueKey":"newPropertiesFound.items.[INDEX]","typeLabel":"object"},"description":"Properties absent from the loaded source configuration and inferred by this request. The ingestion worker registers them asynchronously; they may not be visible in Configuration immediately. Empty when no new properties were found.","isRequired":true,"uniqueKey":"newPropertiesFound","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"example":{"title":"example","value":{"correlationId":"83b538a7-df7c-4cf4-b988-cd3b71c4cd90","sourceId":"products","acceptedAt":"2026-08-13T10:15:30Z","acceptedEntryCount":1,"newPropertiesFound":[{"id":"tags","type":"List","delimiter":","}]}}},"exampleType":"examples"}},"exampleType":"examples"},"08291036-5ac8-4dc4-bdbd-f82fa67aed75":{"description":"The payload is malformed or one or more values do not match the configured source property types.","content":{"application/problem+json":{"schema":{"required":["errors"],"type":"object","properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"errors.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"errors.additionalProperties","typeLabel":"string[]"},"description":"Validation messages keyed by request path.","isRequired":true,"uniqueKey":"errors","typeLabel":"object"},"type":{"type":"string","description":"A URI reference identifying the problem type.","uniqueKey":"type","typeLabel":"string"},"title":{"type":"string","description":"A short summary of the validation problem.","uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"A human-readable explanation of this occurrence.","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"A URI reference identifying this occurrence.","uniqueKey":"instance","typeLabel":"string"},"traceId":{"type":"string","description":"W3C OpenTelemetry trace id for diagnostics.","uniqueKey":"traceId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":{},"type":"\u003cstring>","title":"\u003cstring>","status":123,"detail":"\u003cstring>","instance":"\u003cstring>","traceId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"e2327c6b-57b0-4d13-9d82-9b6fbcecee2f":{"description":"Authentication is missing or invalid.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"A URI reference identifying the problem type.","uniqueKey":"type","typeLabel":"string"},"title":{"type":"string","description":"A short summary of the problem.","uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"A human-readable explanation of this occurrence.","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"A URI reference identifying this occurrence.","uniqueKey":"instance","typeLabel":"string"},"traceId":{"type":"string","description":"W3C OpenTelemetry trace id for diagnostics.","uniqueKey":"traceId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":123,"detail":"\u003cstring>","instance":"\u003cstring>","traceId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"a693ebb1-6bf6-4231-b39b-617853c8ff28":{"description":"The caller lacks `write:sources` or is not granted this source.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"A URI reference identifying the problem type.","uniqueKey":"type","typeLabel":"string"},"title":{"type":"string","description":"A short summary of the problem.","uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"A human-readable explanation of this occurrence.","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"A URI reference identifying this occurrence.","uniqueKey":"instance","typeLabel":"string"},"traceId":{"type":"string","description":"W3C OpenTelemetry trace id for diagnostics.","uniqueKey":"traceId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":123,"detail":"\u003cstring>","instance":"\u003cstring>","traceId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"211ccd5b-7f51-4889-92ec-ab2392760b19":{"description":"The requested source cannot be resolved.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"A URI reference identifying the problem type.","uniqueKey":"type","typeLabel":"string"},"title":{"type":"string","description":"A short summary of the problem.","uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"A human-readable explanation of this occurrence.","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"A URI reference identifying this occurrence.","uniqueKey":"instance","typeLabel":"string"},"traceId":{"type":"string","description":"W3C OpenTelemetry trace id for diagnostics.","uniqueKey":"traceId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":123,"detail":"\u003cstring>","instance":"\u003cstring>","traceId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"feccc1b4-9820-4081-84f9-d75b29754f1f":{"description":"The source is being purged or is in another conflicting state.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"A URI reference identifying the problem type.","uniqueKey":"type","typeLabel":"string"},"title":{"type":"string","description":"A short summary of the problem.","uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"A human-readable explanation of this occurrence.","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"A URI reference identifying this occurrence.","uniqueKey":"instance","typeLabel":"string"},"traceId":{"type":"string","description":"W3C OpenTelemetry trace id for diagnostics.","uniqueKey":"traceId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":123,"detail":"\u003cstring>","instance":"\u003cstring>","traceId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"24693571-beed-4239-821f-5b7867663940":{"description":"The tenant request-rate budget is exhausted. Retry after the indicated delay.","headers":{"Retry-After":{"description":"Optional number of seconds to wait before retrying.","schema":{"minimum":1,"type":"integer"}}},"content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"A URI reference identifying the problem type.","uniqueKey":"type","typeLabel":"string"},"title":{"type":"string","description":"A short summary of the problem.","uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"A human-readable explanation of this occurrence.","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"A URI reference identifying this occurrence.","uniqueKey":"instance","typeLabel":"string"},"traceId":{"type":"string","description":"W3C OpenTelemetry trace id for diagnostics.","uniqueKey":"traceId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":123,"detail":"\u003cstring>","instance":"\u003cstring>","traceId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"46f2fed1-9432-481c-9115-690907619bda":{"description":"The ingest operation failed unexpectedly.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"A URI reference identifying the problem type.","uniqueKey":"type","typeLabel":"string"},"title":{"type":"string","description":"A short summary of the problem.","uniqueKey":"title","typeLabel":"string"},"status":{"type":"integer","uniqueKey":"status","typeLabel":"integer"},"detail":{"type":"string","description":"A human-readable explanation of this occurrence.","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","description":"A URI reference identifying this occurrence.","uniqueKey":"instance","typeLabel":"string"},"traceId":{"type":"string","description":"W3C OpenTelemetry trace id for diagnostics.","uniqueKey":"traceId","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>","status":123,"detail":"\u003cstring>","instance":"\u003cstring>","traceId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"7406498c-7b06-455c-b490-88ffbc0372c1":{"kindeOAuth":{"type":"oauth2","description":"Sign in with the existing Occtoo Studio identity and selected organization.","flows":{"authorizationCode":{"authorizationUrl":"https://auth.occtoo.com/oauth2/auth?audience=https%3A%2F%2Fapi-weu.occtoo.com","tokenUrl":"https://auth.occtoo.com/oauth2/token","scopes":{"openid":"Authenticate the user with OpenID Connect.","profile":"Read the user's basic profile.","email":"Read the user's email address.","offline":"Refresh the access token without another interactive sign-in."},"x-usePkce":"SHA-256","x-scalar-redirect-uri":"https://api.occtoo.com/docs/"}},"scopes":[],"schemeName":"kindeOAuth"}},"2f15e1aa-71d4-4787-a3cf-369b34268140":{"bearerAuth":{"type":"http","description":"Tenant-scoped Occtoo access token, including Kinde machine-to-machine application tokens.","scheme":"bearer","bearerFormat":"JWT","scopes":[],"schemeName":"bearerAuth"}},"cd2216b3-4c9c-4a39-adfa-13f7a614c072":{"apiKey":{"type":"apiKey","description":"Occtoo organization API key.","name":"x-api-key","in":"header","scopes":[],"schemeName":"apiKey"}}},"servers":{"786a0413-aa9a-44da-9f75-9b6901ab3075":{"url":"https://api.occtoo.com","description":"Occtoo public API"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"oauth2","description":"Sign in with the existing Occtoo Studio identity and selected organization.","flows":{"authorizationCode":{"authorizationUrl":"https://auth.occtoo.com/oauth2/auth?audience=https%3A%2F%2Fapi-weu.occtoo.com","tokenUrl":"https://auth.occtoo.com/oauth2/token","scopes":{"openid":"Authenticate the user with OpenID Connect.","profile":"Read the user's basic profile.","email":"Read the user's email address.","offline":"Refresh the access token without another interactive sign-in."},"x-usePkce":"SHA-256","x-scalar-redirect-uri":"https://api.occtoo.com/docs/"}},"scopes":[],"schemeName":"kindeOAuth"},"schema":{"title":"OAuth2 Auth","type":"string","isRequired":true,"description":"Sign in with the existing Occtoo Studio identity and selected organization.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"kindeOAuth","name":"Authorization"}],"title":"kindeOAuth"},{"schemes":[{"scheme":{"type":"http","description":"Tenant-scoped Occtoo access token, including Kinde machine-to-machine application tokens.","scheme":"bearer","bearerFormat":"JWT","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Tenant-scoped Occtoo access token, including Kinde machine-to-machine application tokens.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"},{"schemes":[{"scheme":{"type":"apiKey","description":"Occtoo organization API key.","name":"x-api-key","in":"header","scopes":[],"schemeName":"apiKey"},"schema":{"title":"x-api-key","type":"string","description":"Occtoo organization API key.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKey","name":"x-api-key"}],"title":"apiKey"}]},"originalFileLocation":"api-reference/openapi/ingest.json"},"subdomain":"occtoo","siteName":"Occtoo Documentation","title":"Ingest typed JSON into a source - Occtoo Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-21T18:20:01.259Z","originalFileLocation":"api-reference/ingest/typed-source-entries.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=\"Validates typed JSON values against the source property configuration and accepts the entries for asynchronous processing. Values retain their JSON types at the API boundary. They are serialized to the source\u0026#x27;s string-at-rest representation before queueing. Properties without a configured type are inferred from JSON; list delimiters default to , only when no delimiter is already configured. Set delete: true on an entry to delete it; deleted entries carry no properties. Upserts and deletes can be mixed in one request, but each entry id may appear only once. A successful 202 response returns the ingest batch correlation id, accepted source and entry count, UTC acceptance time, and any previously absent properties inferred from this request. Acceptance means the batch was queued; downstream entry processing and worker-owned property registration may still be running.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Occtoo 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/occtoo/7xHmPomztRvrPxPl/_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/occtoo/7xHmPomztRvrPxPl/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/occtoo/7xHmPomztRvrPxPl/_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/occtoo/7xHmPomztRvrPxPl/_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/occtoo/7xHmPomztRvrPxPl/_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/occtoo/7xHmPomztRvrPxPl/_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/occtoo/7xHmPomztRvrPxPl/_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/occtoo/7xHmPomztRvrPxPl/_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/occtoo/7xHmPomztRvrPxPl/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Ingest typed JSON into a source - Occtoo Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Validates typed JSON values against the source property configuration and accepts the entries for asynchronous processing. Values retain their JSON types at the API boundary. They are serialized to the source\u0026#x27;s string-at-rest representation before queueing. Properties without a configured type are inferred from JSON; list delimiters default to , only when no delimiter is already configured. Set delete: true on an entry to delete it; deleted entries carry no properties. Upserts and deletes can be mixed in one request, but each entry id may appear only once. A successful 202 response returns the ingest batch correlation id, accepted source and entry count, UTC acceptance time, and any previously absent properties inferred from this request. Acceptance means the batch was queued; downstream entry processing and worker-owned property registration may still be running.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Occtoo Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.occtoo.com/api-reference/ingest/typed-source-entries\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://occtoo.mintlify.app/_mintlify/api/og/v2?division=Ingest+API\u0026amp;title=Ingest+typed+JSON+into+a+source\u0026amp;description=Validates+typed+JSON+values+against+the+source+property+configuration+and+accepts+the+entries+for+asynchronous+processing.%0A%0AValues+retain+their+JSON+types+at+th\u0026amp;theme=088d609b25a5d30f2fe21826\u0026amp;signature=492aac7672ed9a3efad95fbf293b86ba78e93f88cfa9cba130bf45dcbd3c8120\">\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=\"Ingest typed JSON into a source - Occtoo Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Validates typed JSON values against the source property configuration and accepts the entries for asynchronous processing. Values retain their JSON types at the API boundary. They are serialized to the source\u0026#x27;s string-at-rest representation before queueing. Properties without a configured type are inferred from JSON; list delimiters default to , only when no delimiter is already configured. Set delete: true on an entry to delete it; deleted entries carry no properties. Upserts and deletes can be mixed in one request, but each entry id may appear only once. A successful 202 response returns the ingest batch correlation id, accepted source and entry count, UTC acceptance time, and any previously absent properties inferred from this request. Acceptance means the batch was queued; downstream entry processing and worker-owned property registration may still be running.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://occtoo.mintlify.app/_mintlify/api/og/v2?division=Ingest+API\u0026amp;title=Ingest+typed+JSON+into+a+source\u0026amp;description=Validates+typed+JSON+values+against+the+source+property+configuration+and+accepts+the+entries+for+asynchronous+processing.%0A%0AValues+retain+their+JSON+types+at+th\u0026amp;theme=088d609b25a5d30f2fe21826\u0026amp;signature=492aac7672ed9a3efad95fbf293b86ba78e93f88cfa9cba130bf45dcbd3c8120\">\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/occtoo/7xHmPomztRvrPxPl/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Occtoo Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#E36103\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.occtoo.com/api-reference/ingest/typed-source-entries\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/ingest/typed-source-entries.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.occtoo.com/#organization\",\"name\":\"Occtoo Documentation\",\"url\":\"https://docs.occtoo.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/occtoo/-gNJJgSF3T9V_IbQ/logo/occtoo-light.svg?fit=max\u0026auto=format\u0026n=-gNJJgSF3T9V_IbQ\u0026q=85\u0026s=21e485640a50820820a663446d883d87\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.occtoo.com#website\",\"name\":\"Occtoo Documentation\",\"url\":\"https://docs.occtoo.com\",\"publisher\":{\"@id\":\"https://docs.occtoo.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.occtoo.com/api-reference/ingest/typed-source-entries#webpage\",\"url\":\"https://docs.occtoo.com/api-reference/ingest/typed-source-entries\",\"name\":\"Ingest typed JSON into a source\",\"description\":\"Validates typed JSON values against the source property configuration and accepts the entries for asynchronous processing. Values retain their JSON types at the API boundary. They are serialized to the source's string-at-rest representation before queueing. Properties without a configured type are inferred from JSON; list delimiters default to , only when no delimiter is already configured. Set delete: true on an entry to delete it; deleted entries carry no properties. Upserts and deletes can be mixed in one request, but each entry id may appear only once. A successful 202 response returns the ingest batch correlation id, accepted source and entry count, UTC acceptance time, and any previously absent properties inferred from this request. Acceptance means the batch was queued; downstream entry processing and worker-owned property registration may still be running.\",\"dateModified\":\"2026-10-21T18:20:01.259Z\",\"isPartOf\":{\"@id\":\"https://docs.occtoo.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.occtoo.com/api-reference/ingest/typed-source-entries#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.occtoo.com/api-reference/ingest/typed-source-entries#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ingest API\",\"item\":\"https://docs.occtoo.com/api-reference/ingest/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ingest typed JSON into a source\",\"item\":\"https://docs.occtoo.com/api-reference/ingest/typed-source-entries\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.occtoo.com/api-reference/ingest/typed-source-entries#apireference\",\"headline\":\"Ingest typed JSON into a source\",\"name\":\"Ingest typed JSON into a source\",\"description\":\"Validates typed JSON values against the source property configuration and accepts the entries for asynchronous processing. Values retain their JSON types at the API boundary. They are serialized to the source's string-at-rest representation before queueing. Properties without a configured type are inferred from JSON; list delimiters default to , only when no delimiter is already configured. Set delete: true on an entry to delete it; deleted entries carry no properties. Upserts and deletes can be mixed in one request, but each entry id may appear only once. A successful 202 response returns the ingest batch correlation id, accepted source and entry count, UTC acceptance time, and any previously absent properties inferred from this request. Acceptance means the batch was queued; downstream entry processing and worker-owned property registration may still be running.\",\"url\":\"https://docs.occtoo.com/api-reference/ingest/typed-source-entries\",\"mainEntityOfPage\":{\"@id\":\"https://docs.occtoo.com/api-reference/ingest/typed-source-entries#webpage\"},\"dateModified\":\"2026-10-21T18:20:01.259Z\",\"publisher\":{\"@id\":\"https://docs.occtoo.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.occtoo.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Occtoo Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Occtoo Documentation","nav":{"global":null,"tabs":[{"tab":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":"/get-started/introduction"}]},{"tab":"API Reference","icon":"square-terminal","groups":[{"group":"Getting started","pages":[{"title":"API overview","href":"/api-reference/overview"}]},{"group":"Application authentication","pages":[{"title":"Request an Application access token","sidebarTitle":"Application access token","openapi":"api-reference/openapi/applications.json POST /oauth2/token","playground":"interactive","href":"/api-reference/authentication/application-token"}]},{"group":"Ingest API","pages":[{"title":"Ingest","description":null,"href":"/api-reference/ingest/overview"},{"title":"Ingest typed JSON into a source","deprecated":null,"version":null,"sidebarTitle":"Typed source entries","tag":"NEW","openapi":"/api-reference/openapi/ingest.json post /v1/sources/{sourceId}","href":"/api-reference/ingest/typed-source-entries"},{"title":"Read source entries by ID","description":"Returns persisted entry values using current source-property types and delimiters. Localized values have one property item per language. lastUpdated timestamps are UTC; all translations of a property share its stored timestamp. Cleared scalars return null, cleared lists return an empty array. Unconfigured properties return raw strings with type null. Incompatible stored values return 409. Reads reflect completed ingestion, which may lag a successful ingest request. Supply 1–100 IDs as repeated id query parameters. Results follow the requested order, duplicates are collapsed, and missing or deleted entries are omitted. An absent id filter returns 400; this endpoint does not list the whole source.","deprecated":null,"version":null,"sidebarTitle":"Read source entries","openapi":"/api-reference/openapi/ingest.json get /v1/sources/{sourceId}/entries","href":"/api-reference/ingest/read-source-entries"},{"title":"Read a typed source entry","deprecated":null,"version":null,"sidebarTitle":"Read source entry","openapi":"/api-reference/openapi/ingest.json get /v1/sources/{sourceId}/entries/{entryId}","href":"/api-reference/ingest/read-source-entry"},{"title":"Start an asynchronous ingest","deprecated":true,"version":null,"openapi":"/api-reference/openapi/ingest.json post /datasources/{dataSource}/import","href":"/api-reference/ingest/start-an-asynchronous-ingest"}]},{"group":"Events API","pages":[{"title":"Events","href":"/api-reference/events/overview"},{"title":"List public event types and schema versions","deprecated":null,"version":null,"openapi":"/api-reference/openapi/events.json get /v1/event-types","href":"/api-reference/event-discovery/list-public-event-types-and-schema-versions"},{"title":"Pull public events","deprecated":null,"version":null,"openapi":"/api-reference/openapi/events.json get /v1/events","href":"/api-reference/event-delivery/pull-public-events"},{"title":"Get public event stream metadata","deprecated":null,"version":null,"openapi":"/api-reference/openapi/events.json get /v1/events/metadata","href":"/api-reference/event-delivery/get-public-event-stream-metadata"},{"title":"Stream public events using SSE","deprecated":null,"version":null,"openapi":"/api-reference/openapi/events.json get /v1/events/stream","href":"/api-reference/event-delivery/stream-public-events-using-sse"},{"title":"Get a versioned event data schema","deprecated":null,"version":null,"openapi":"/api-reference/openapi/events.json get /v1/events/schemas/{type}/{version}","href":"/api-reference/event-schemas/get-a-versioned-event-data-schema"},{"title":"Event stream (SSE)","href":"/api-reference/events/streaming"},{"title":"Durable consumers","href":"/api-reference/events/durable-consumers"},{"title":"Pull the next leased batch of events","deprecated":null,"version":null,"openapi":"/api-reference/openapi/events.json post /v1/event-destinations/{id}/pull","href":"/api-reference/event-delivery/pull-the-next-leased-batch-of-events"},{"title":"Acknowledge a leased batch","deprecated":null,"version":null,"openapi":"/api-reference/openapi/events.json post /v1/event-destinations/{id}/acknowledge","href":"/api-reference/event-delivery/acknowledge-a-leased-batch"}]},{"group":"Configuration API","pages":[{"title":"Configuration","href":"/api-reference/configuration/overview"},{"group":"Sources","pages":[{"title":"List sources","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json get /v1/sources","href":"/api-reference/sources/list-sources"},{"title":"Create a source","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json post /v1/sources","href":"/api-reference/sources/create-a-source"},{"title":"Get a source","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json get /v1/sources/{sourceId}","href":"/api-reference/sources/get-a-source"},{"title":"Update source metadata","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json patch /v1/sources/{sourceId}","href":"/api-reference/sources/update-source-metadata"},{"title":"Delete a source","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json delete /v1/sources/{sourceId}","href":"/api-reference/sources/delete-a-source"},{"title":"List source properties","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json get /v1/sources/{sourceId}/properties","href":"/api-reference/sources/list-source-properties"},{"title":"Get a source property","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json get /v1/sources/{sourceId}/properties/{propertyId}","href":"/api-reference/sources/get-a-source-property"},{"title":"Create or update a source property","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json put /v1/sources/{sourceId}/properties/{propertyId}","href":"/api-reference/sources/create-or-update-a-source-property"},{"title":"Delete a source property","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json delete /v1/sources/{sourceId}/properties/{propertyId}","href":"/api-reference/sources/delete-a-source-property"}]},{"group":"Applications","pages":[{"title":"List applications","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json get /v1/applications","href":"/api-reference/applications/list-applications"},{"title":"Create an application","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json post /v1/applications","href":"/api-reference/applications/create-an-application"},{"title":"Discover application access options","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json get /v1/applications/access-catalog","href":"/api-reference/applications/discover-application-access-options"},{"title":"Get an application","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json get /v1/applications/{applicationId}","href":"/api-reference/applications/get-an-application"},{"title":"Replace application settings and access","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json put /v1/applications/{applicationId}","href":"/api-reference/applications/replace-application-settings-and-access"},{"title":"Delete an application and revoke its credentials","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json delete /v1/applications/{applicationId}","href":"/api-reference/applications/delete-an-application-and-revoke-its-credentials"}]},{"group":"Managed tags","pages":[{"title":"List managed tags","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json get /v1/managed-tags","href":"/api-reference/managed-tags/list-managed-tags"},{"title":"Create a managed tag","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json post /v1/managed-tags","href":"/api-reference/managed-tags/create-a-managed-tag"},{"title":"Get a managed tag","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json get /v1/managed-tags/{managedTagId}","href":"/api-reference/managed-tags/get-a-managed-tag"},{"title":"Replace managed tag settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json put /v1/managed-tags/{managedTagId}","href":"/api-reference/managed-tags/replace-managed-tag-settings"},{"title":"Delete a managed tag and its values","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json delete /v1/managed-tags/{managedTagId}","href":"/api-reference/managed-tags/delete-a-managed-tag-and-its-values"},{"title":"List managed tag values","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json get /v1/managed-tags/{managedTagId}/values","href":"/api-reference/managed-tag-values/list-managed-tag-values"},{"title":"Create a managed tag value","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json post /v1/managed-tags/{managedTagId}/values","href":"/api-reference/managed-tag-values/create-a-managed-tag-value"},{"title":"Get a managed tag value","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json get /v1/managed-tags/{managedTagId}/values/{key}","href":"/api-reference/managed-tag-values/get-a-managed-tag-value"},{"title":"Replace a managed tag value","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json put /v1/managed-tags/{managedTagId}/values/{key}","href":"/api-reference/managed-tag-values/replace-a-managed-tag-value"},{"title":"Delete a managed tag value","deprecated":null,"version":null,"openapi":"/api-reference/openapi/configuration.json delete /v1/managed-tags/{managedTagId}/values/{key}","href":"/api-reference/managed-tag-values/delete-a-managed-tag-value"}]}]},{"group":"Data consumption","pages":[{"title":"Destination","href":"/api-reference/consumption/overview"}]}]},{"tab":"Integrations","icon":"plug","hidden":true,"pages":[{"title":"Integrations","href":"/integrations/providers/overview"}]},{"tab":"Changelog","icon":"list-check","pages":[{"title":"Changelog","href":"/changelog"}]},{"tab":"Announcements","icon":"bullhorn","pages":[{"title":"Announcements","href":"/announcements/overview"}]}]},"title":"Ingest typed JSON into a source - Occtoo Documentation","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Bbp7I60D.js","utils-C3RIvJha.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DqD-vLt8.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B31Loprg.js","snippetPresets-DKpk-b8t.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Cj65AhOR.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BXtn5gcC.js","shallow-RY2b03Cp.js","getApiPlaygroundDisplay-B0jeiPk3.js","CodeSnippet-CYgBjjwn.js","CodeSnippets-DOngDrYB.js","Page-n7I5XbKb.js","getPastedJson-DRQbJx-T.js","icon-CQiQCicY.js","MethodPill-BKTLdNtu.js","DuplicateIcon-B9jpAdat.js","createIcon-DCddRrXv.js","DynamicMarkdown-a8hUKrw6.js","SectionHeading-eECVV2eH.js","axios-vUo_bRtp.js","Markdown--GF7ZIpf.js","clsx-DZLdJUrt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-2LoAhjKH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Zwc0ZncM.js"]}