Mixpeek API key, sent as Authorization: Bearer mxp_sk_.... Create one in Studio under Settings → API Keys, or with an admin key via POST /v1/organizations/users/{user_email}/api-keys. A missing, malformed, unknown, revoked, inactive or expired key returns 401; a key without the permission, scope or plan an operation needs returns 403.
OPTIONAL. Filter connections by provider type. Supported: google_drive, s3, snowflake, sharepoint, tigris. If not provided, returns connections of all types.
OPTIONAL. Filter by active flag. True: Returns only active connections (status=ACTIVE). False: Returns only inactive connections (SUSPENDED/FAILED/ARCHIVED). If not provided, returns connections of all active states.
Response
Successful Response
Response envelope for listing storage connections.
Contains paginated results and metadata about the listing operation.
List of storage connections matching the request filters. Results are paginated according to the pagination parameters. SECURITY: credential fields are not returned; only the credential type is.
Total number of connections matching the filters (before pagination). Use this to calculate total pages and display pagination controls.
Required range: x >= 0
Examples:
0
5
42
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Mixpeek","colors":{"primary":"#FC5185","light":"#FFA0BD","dark":"#364F6B"},"logo":{"light":"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/logo/light.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=ac5ab550180057404fe833886513775f","dark":"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/logo/dark.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=e18979c495dbd68be4fc44473098773e"},"favicon":"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/favicon.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=8be5d2f6dc7e4cb44127a0493d57cde1","api":{"openapi":"api-reference/openapi.json","mdx":{"auth":{"method":"bearer","name":"Authorization"},"server":["https://api.mixpeek.com"]}},"background":{"image":"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/images/background.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=a68d0aa9f5eba448bcf67f5f410a6c90","color":{"dark":"#121212"}},"navbar":{"links":[{"href":"https://mixpeek.com/contact","label":"Talk to Engineers"}],"primary":{"type":"button","label":"Use Mixpeek","href":"https://studio.mixpeek.com/?utm_source=docs\u0026utm_medium=docs_navbar\u0026utm_campaign=mvs_onramp"}},"footer":{"socials":{"website":"https://mixpeek.com/","github":"https://github.com/mixpeek"}},"integrations":{"posthog":{"apiKey":"phc_x1G3IrW97qXoodTPWbyBK8dbZ3H7x5k5aZPCXmRvuWw","apiHost":"https://us.i.posthog.com"}},"contextual":{"options":["view","claude","chatgpt","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Homepage","icon":"house","href":"https://mixpeek.com"},{"anchor":"Engineering Blog","icon":"newspaper","href":"https://mixpeek.com/blog"},{"anchor":"API Swagger","icon":"file-code","href":"https://api.mixpeek.com/docs"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"mixpeek","hasAudioNarration":false,"actualSubdomain":"mixpeek","customDomains":["docs.mixpeek.com"],"gitSource":{"type":"github","owner":"mixpeek","repo":"mixpeek","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":false,"issues":false},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aeff52f552e9ea17aa8eeb5","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"API Reference","count":536},{"language":"default","tag":"Documentation","count":195},{"language":"default","tag":"Advanced","count":140},{"language":"default","tag":"Administer","count":77},{"language":"default","tag":"Buckets","count":70},{"language":"default","tag":"Organization","count":62},{"language":"default","tag":"Retrievers","count":61},{"language":"default","tag":"Integrate \u0026 operate","count":59},{"language":"default","tag":"Build retrievers","count":55},{"language":"default","tag":"Apps","count":53}]},"assistantConfig":{"deflection":{"enabled":true,"email":"ethan@mixpeek.com"}},"basePath":"/docs","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":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","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":"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":"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":"editor-metadata","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},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/organization-connections/list-storage-connections","slug":"/api-reference/organization-connections/list-storage-connections","pageMetadata":{"openapi":"post /v1/organizations/connections/list","title":"List Storage Connections","description":"List storage connections for the authenticated organization.\n\nReturns paginated results with optional filters for provider type, status,\nand active flag. Results are sorted by creation date (newest first).\n\n**Use Cases:**\n- List all active Google Drive connections\n- Find failed connections that need attention\n- Filter by provider type for sync configuration\n\n**Example:**\n```bash\ncurl -X POST \"http://localhost:8000/v1/organizations/connections/list\" \\\n -H \"Authorization: Bearer YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"provider_type\": \"google_drive\",\n \"is_active\": true\n }'\n```","href":"/api-reference/organization-connections/list-storage-connections"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n pre: \"pre\",\n span: \"span\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n }, {CodeBlock} = _components;\n if (!CodeBlock) _missingMdxReference(\"CodeBlock\", true);\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"List storage connections for the authenticated organization.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Returns paginated results with optional filters for provider type, status,\\nand active flag. Results are sorted by creation date (newest first).\"\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Use Cases:\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"List all active Google Drive connections\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Find failed connections that need attention\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Filter by provider type for sync configuration\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Example:\"\n })\n }), \"\\n\", _jsx(CodeBlock, {\n numberOfLines: \"7\",\n language: \"shellscript\",\n children: _jsx(_components.pre, {\n className: \"shiki shiki-themes github-light-default dark-plus\",\n style: {\n backgroundColor: \"#ffffff\",\n \"--shiki-dark-bg\": \"#0B0C0E\",\n color: \"#1f2328\",\n \"--shiki-dark\": \"#D4D4D4\"\n },\n language: \"shellscript\",\n children: _jsxs(_components.code, {\n language: \"shellscript\",\n numberOfLines: \"7\",\n children: [_jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#953800\",\n \"--shiki-dark\": \"#DCDCAA\"\n },\n children: \"curl\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \" -X\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" POST\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"http://localhost:8000/v1/organizations/connections/list\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#CF222E\",\n \"--shiki-dark\": \"#D7BA7D\"\n },\n children: \" \\\\\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \" -H\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"Authorization: Bearer YOUR_API_KEY\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#CF222E\",\n \"--shiki-dark\": \"#D7BA7D\"\n },\n children: \" \\\\\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \" -H\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"Content-Type: application/json\\\"\"\n }), _jsx(_components.span, {\n style: {\n color: \"#CF222E\",\n \"--shiki-dark\": \"#D7BA7D\"\n },\n children: \" \\\\\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"line\",\n children: [_jsx(_components.span, {\n style: {\n color: \"#0550AE\",\n \"--shiki-dark\": \"#569CD6\"\n },\n children: \" -d\"\n }), _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" '{\"\n })]\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"provider_type\\\": \\\"google_drive\\\",\"\n })\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" \\\"is_active\\\": true\"\n })\n }), \"\\n\", _jsx(_components.span, {\n className: \"line\",\n children: _jsx(_components.span, {\n style: {\n color: \"#0A3069\",\n \"--shiki-dark\": \"#CE9178\"\n },\n children: \" }'\"\n })\n }), \"\\n\"]\n })\n })\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\nfunction _missingMdxReference(id, component) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\");\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":{"openapi":"post /v1/organizations/connections/list","title":"List Storage Connections","description":"List storage connections for the authenticated organization.\n\nReturns paginated results with optional filters for provider type, status,\nand active flag. Results are sorted by creation date (newest first).\n\n**Use Cases:**\n- List all active Google Drive connections\n- Find failed connections that need attention\n- Filter by provider type for sync configuration\n\n**Example:**\n```bash\ncurl -X POST \"http://localhost:8000/v1/organizations/connections/list\" \\\n -H \"Authorization: Bearer YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"provider_type\": \"google_drive\",\n \"is_active\": true\n }'\n```","href":"/api-reference/organization-connections/list-storage-connections"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/mixpeek/fd427c04b3bf84bb/custom.js","/docs/_mintlify/custom/mixpeek/e878da59c725dc0d/scripts/test_first_touch.js"],"openApiReferenceData":{"operation":{"tags":["Organization Connections"],"summary":"List Storage Connections","description":"List storage connections for the authenticated organization.\n\nReturns paginated results with optional filters for provider type, status,\nand active flag. Results are sorted by creation date (newest first).\n\n**Use Cases:**\n- List all active Google Drive connections\n- Find failed connections that need attention\n- Filter by provider type for sync configuration\n\n**Example:**\n```bash\ncurl -X POST \"http://localhost:8000/v1/organizations/connections/list\" \\\n -H \"Authorization: Bearer YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"provider_type\": \"google_drive\",\n \"is_active\": true\n }'\n```","operationId":"list_storage_connections_v1_organizations_connections_list_post","parameters":["e45679af-9cb7-4288-a727-f744cf650d99","dd0932c8-f610-49ec-9d88-48bb6a76230e","adfae519-fe59-4d41-bc84-0078198d89a6","716e1cf6-a8e7-497f-9ae0-f14ad25885a5","562af025-5d32-4e20-869e-82573a71f59b","c776b58b-32f9-4df6-aee1-5e66c796b19d","c07ad7b0-1b90-41ea-bac8-7983a98a2032","293b446f-3fa7-444e-963a-c32d9a361eb5"],"requestBody":"0e584624-648c-485d-9b5f-4e6d35491b72","responses":{"200":"8fa39d62-f37c-4690-a172-305f2b40a1bf","400":"cfb2abca-dd98-456c-a9fe-aac2f5ce05d3","401":"3de47877-495e-481c-9280-6f763c46e4c5","403":"f1296d42-531b-489d-a88b-776b577394e7","404":"2eda1734-aaf6-43d7-8a44-ca6a7bcd81e0","422":"c365d18d-dfd3-4995-9ba4-93fa81bb03ee","429":"9769c49a-e3ab-434a-8147-5fa536ad0727","500":"9ad84d24-e799-4143-9288-a82bd9b0bb29","503":"a9ca69f9-73c5-4719-bc00-d9b846a5a34f"},"x-mixpeek-plan":{"minimum_tier":null,"requires_selected_plan":false,"permissions":["read"]},"security":["b9440c0f-929c-4264-8075-bdbcd565838e"],"method":"post","type":"path","servers":["a3ca4d02-9041-4306-8eae-afdf7d554be4"],"path":"/v1/organizations/connections/list","baseUrlOptions":["https://api.mixpeek.com"],"title":"List Storage Connections","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"e45679af-9cb7-4288-a727-f744cf650d99":{"name":"limit","in":"query","required":false,"schema":{"oneOf":[{"type":"integer","title":"Limit","maximum":1000,"minimum":1,"uniqueKey":"oneOf.0","typeLabel":"integer"},{"type":"null","title":"Limit","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"integer | null"}},"dd0932c8-f610-49ec-9d88-48bb6a76230e":{"name":"page_size","in":"query","required":false,"schema":{"oneOf":[{"type":"integer","title":"Page Size","maximum":1000,"minimum":1,"uniqueKey":"oneOf.0","typeLabel":"integer"},{"type":"null","title":"Page Size","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"integer | null"}},"adfae519-fe59-4d41-bc84-0078198d89a6":{"name":"offset","in":"query","required":false,"schema":{"oneOf":[{"type":"integer","title":"Offset","maximum":10000,"minimum":0,"uniqueKey":"oneOf.0","typeLabel":"integer"},{"type":"null","title":"Offset","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"integer | null"}},"716e1cf6-a8e7-497f-9ae0-f14ad25885a5":{"name":"page","in":"query","required":false,"schema":{"oneOf":[{"type":"integer","title":"Page","minimum":1,"uniqueKey":"oneOf.0","typeLabel":"integer"},{"type":"null","title":"Page","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"integer | null"}},"562af025-5d32-4e20-869e-82573a71f59b":{"name":"cursor","in":"query","required":false,"schema":{"oneOf":[{"type":"string","title":"Cursor","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"Cursor","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"}},"c776b58b-32f9-4df6-aee1-5e66c796b19d":{"name":"next_cursor","in":"query","required":false,"schema":{"oneOf":[{"type":"string","title":"Next Cursor","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"Next Cursor","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"}},"c07ad7b0-1b90-41ea-bac8-7983a98a2032":{"name":"after","in":"query","required":false,"schema":{"oneOf":[{"type":"string","title":"After","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"After","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"}},"293b446f-3fa7-444e-963a-c32d9a361eb5":{"name":"include_total","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Total","isRequired":false,"uniqueKey":"","typeLabel":"boolean"}}},"requestBody":{"content":{"application/json":{"schema":{"properties":{"provider_type":{"oneOf":[{"type":"string","title":"StorageProvider","description":"OPTIONAL. Filter connections by provider type. Supported: google_drive, s3, snowflake, sharepoint, tigris. If not provided, returns connections of all types.","enum":["google_drive","s3","snowflake","sharepoint","tigris","postgresql","instagram","tiktok","rss","http_api","box","brightdata","backblaze","mux","email","supabase","iconik","gcs","azure_blob","rtsp"],"example":"google_drive","uniqueKey":"provider_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"OPTIONAL. Filter connections by provider type. Supported: google_drive, s3, snowflake, sharepoint, tigris. If not provided, returns connections of all types.","example":"google_drive","uniqueKey":"provider_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"provider_type","typeLabel":"enum\u003cstring> | null"},"status":{"oneOf":[{"type":"string","title":"TaskStatusEnum","description":"OPTIONAL. Filter connections by operational status. ACTIVE: Healthy and ready for use. SUSPENDED: Temporarily disabled. FAILED: Health checks failing. ARCHIVED: Permanently retired.","enum":["PENDING","QUEUED","IN_PROGRESS","PROCESSING","COMPLETED","COMPLETED_WITH_ERRORS","FAILED","CANCELED","INTERRUPTED","UNKNOWN","SKIPPED","DRAFT","ACTIVE","ARCHIVED","SUSPENDED","DEACTIVATED"],"uniqueKey":"status.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"OPTIONAL. Filter connections by operational status. ACTIVE: Healthy and ready for use. SUSPENDED: Temporarily disabled. FAILED: Health checks failing. ARCHIVED: Permanently retired.","uniqueKey":"status.oneOf.1","typeLabel":"null"}],"uniqueKey":"status","typeLabel":"enum\u003cstring> | null"},"is_active":{"oneOf":[{"type":"boolean","title":"Is Active","description":"OPTIONAL. Filter by active flag. True: Returns only active connections (status=ACTIVE). False: Returns only inactive connections (SUSPENDED/FAILED/ARCHIVED). If not provided, returns connections of all active states.","uniqueKey":"is_active.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Is Active","description":"OPTIONAL. Filter by active flag. True: Returns only active connections (status=ACTIVE). False: Returns only inactive connections (SUSPENDED/FAILED/ARCHIVED). If not provided, returns connections of all active states.","uniqueKey":"is_active.oneOf.1","typeLabel":"null"}],"uniqueKey":"is_active","typeLabel":"boolean | null"}},"type":"object","title":"ListStorageConnectionsRequest","description":"Request payload for listing storage connections with filters.\n\nUse this to filter connections by provider type, status, or active flag.\nResults are paginated automatically.\n\n**Use Cases:**\n- List all active Google Drive connections\n- Find failed connections that need attention\n- Filter by provider type for sync configuration\n\n**Examples:**\n```python\n# List all active Google Drive connections\n{\n \"provider_type\": \"google_drive\",\n \"is_active\": True\n}\n\n# Find failed connections\n{\n \"status\": \"FAILED\"\n}\n```","examples":[{"description":"List active Google Drive connections","is_active":true,"provider_type":"google_drive"},{"description":"Find failed connections","status":"FAILED"},{"description":"List all connections (no filters)"}],"uniqueKey":"","typeLabel":"ListStorageConnectionsRequest · object"},"examples":{"Example":{"title":"Example","value":{"description":"List active Google Drive connections","is_active":true,"provider_type":"google_drive"}}},"exampleType":"generated"}},"description":"Keys this body does not declare are refused with 422 extra_forbidden naming the accepted keys (since 2026-11-02).","x-unknown-keys":{"until":"2026-11-02","then":"422 extra_forbidden"},"exampleType":"generated"},"responses":{"8fa39d62-f37c-4690-a172-305f2b40a1bf":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"results":{"items":{"properties":{"internal_id":{"type":"string","title":"Internal Id","description":"REQUIRED. Organization internal identifier for multi-tenancy scoping. All connection operations are scoped to this organization. Format: int_{24-character secure token}.","examples":["int_org123abc456def789xyz012"],"isRequired":true,"uniqueKey":"results.items.[INDEX].internal_id","typeLabel":"string"},"provider_type":{"type":"string","enum":["google_drive","s3","snowflake","sharepoint","tigris","postgresql","instagram","tiktok","rss","http_api","box","brightdata","backblaze","mux","email","supabase","iconik","gcs","azure_blob","rtsp"],"title":"StorageProvider","description":"REQUIRED. Storage provider implementation to use. Determines which client adapter is loaded for sync operations. Supported: google_drive, s3, snowflake, sharepoint, tigris.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_type","typeLabel":"enum\u003cstring>"},"provider_config":{"oneOf":[{"type":"object","title":"GoogleDriveConfig","description":"Google Drive and Google Workspace shared drive configuration.\n\nThis configuration enables Mixpeek to connect to Google Drive for automated\nfile ingestion and synchronization. Supports both personal Drive and Google\nWorkspace shared drives (formerly Team Drives).\n\nAuthentication Options:\n - Service Account: Recommended for production. No user interaction required.\n - OAuth2: Suitable for personal Drive access or development.\n\nRequirements:\n - Google Drive API enabled in Google Cloud Console\n - Appropriate authentication credentials configured\n - Files/folders shared with the service account or OAuth user\n - Network connectivity to drive.googleapis.com\n\nUse Cases:\n - Sync marketing materials from shared drives\n - Ingest documents from team collaboration folders\n - Monitor and process uploaded media files\n - Archive and search historical documents","required":["credentials"],"example":{"credentials":{"client_email":"sync@mixpeek-prod-456.iam.gserviceaccount.com","client_id":"123456789012345678901","private_key":"-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n","private_key_id":"a1b2c3d4e5f6...","project_id":"mixpeek-prod-456","type":"service_account"},"provider_type":"google_drive","shared_drive_id":"0AH-Xabc123def456"},"properties":{"credentials":{"oneOf":[{"type":"object","title":"GoogleDriveServiceAccountCredentials","description":"Credentials for Google Drive service account authentication.\n\nService accounts provide server-to-server authentication for Google Drive\nwithout requiring user interaction. They are ideal for automated sync operations.\n\nPrerequisites:\n - Create a service account in Google Cloud Console\n - Enable Google Drive API for the project\n - Download the JSON key file\n - Share target Drive files/folders with the service account email\n\nSecurity:\n - private_key is a secret credential, redacted on read\n - Credentials never appear in logs or API responses\n - Use domain-wide delegation for G Suite environments\n\nUse Cases:\n - Automated ingestion pipelines from shared drives\n - Scheduled sync operations without user interaction\n - Service-to-service integration for enterprise deployments","required":["project_id","private_key_id","private_key","client_email","client_id"],"properties":{"project_id":{"type":"string","title":"Project Id","description":"REQUIRED. Google Cloud project ID where the service account was created. Found in the JSON key file as 'project_id'. Format: lowercase alphanumeric with hyphens (e.g., 'my-project-123').","examples":["mixpeek-prod-456","customer-ingestion"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.credentials.oneOf.0.project_id","typeLabel":"string"},"private_key_id":{"type":"string","title":"Private Key Id","description":"REQUIRED. Unique identifier for the private key. Found in the JSON key file as 'private_key_id'. Format: 40-character hexadecimal string.","examples":["a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.credentials.oneOf.0.private_key_id","typeLabel":"string"},"private_key":{"type":"string","title":"Private Key","description":"REQUIRED. PEM-encoded RSA private key for authentication. Found in the JSON key file as 'private_key'. SECURITY: This is a secret credential, redacted on read. Never log or expose this value. Format: Must include BEGIN/END PRIVATE KEY markers.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.credentials.oneOf.0.private_key","typeLabel":"string"},"client_email":{"type":"string","title":"Client Email","description":"REQUIRED. Service account email address. Found in the JSON key file as 'client_email'. Share Drive files/folders with this email to grant access. Format: {account-name}@{project-id}.iam.gserviceaccount.com","examples":["mixpeek-sync@my-project-123.iam.gserviceaccount.com","ingestion@customer-project.iam.gserviceaccount.com"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.credentials.oneOf.0.client_email","typeLabel":"string"},"client_id":{"type":"string","title":"Client Id","description":"REQUIRED. Numeric service account identifier. Found in the JSON key file as 'client_id'. Format: 21-digit numeric string.","examples":["123456789012345678901"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.credentials.oneOf.0.client_id","typeLabel":"string"},"type":{"type":"string","const":"service_account","title":"Type","default":"service_account","uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.credentials.oneOf.0.type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.credentials.oneOf.0","typeLabel":"GoogleDriveServiceAccountCredentials · object"},{"type":"object","title":"GoogleDriveOAuthCredentials","description":"Credentials for Google Drive OAuth2 user authentication.\n\nOAuth2 credentials provide access to Google Drive on behalf of a specific user.\nThis authentication method is suitable when accessing personal Drive files or\nwhen service account delegation is not available.\n\nPrerequisites:\n - Create OAuth 2.0 credentials in Google Cloud Console\n - Configure authorized redirect URIs\n - Complete OAuth consent flow to obtain refresh token\n - Ensure appropriate OAuth scopes are granted (drive.readonly or drive)\n\nSecurity:\n - client_secret and refresh_token are secret credentials, redacted on read\n - Access tokens are automatically refreshed and cached temporarily\n - Credentials are scoped to the user who granted consent\n\nUse Cases:\n - Personal Drive file access for individual users\n - Prototyping and development without service account setup\n - Environments where service account delegation is not feasible\n\nLimitations:\n - Requires user interaction during initial setup\n - Access is limited to files the consenting user can access\n - Refresh tokens can be revoked by the user","required":["client_id","client_secret","refresh_token"],"properties":{"client_id":{"type":"string","title":"Client Id","description":"REQUIRED. OAuth 2.0 client ID from Google Cloud Console. Found in the API credentials section. Format: {id}.apps.googleusercontent.com","examples":["123456789012-abcdefghijklmnop.apps.googleusercontent.com"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.credentials.oneOf.1.client_id","typeLabel":"string"},"client_secret":{"type":"string","title":"Client Secret","description":"REQUIRED. OAuth 2.0 client secret from Google Cloud Console. SECURITY: This is a secret credential, redacted on read. Never log or expose this value. Format: Alphanumeric string from Google Cloud Console.","examples":["GOCSPX-abc123def456ghi789jkl012"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.credentials.oneOf.1.client_secret","typeLabel":"string"},"refresh_token":{"type":"string","title":"Refresh Token","description":"REQUIRED. Long-lived refresh token obtained during OAuth consent flow. Used to automatically obtain new access tokens without user interaction. SECURITY: Encrypted at rest. Can be revoked by user at any time. Obtain via: Complete OAuth flow with drive.readonly or drive scope.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.credentials.oneOf.1.refresh_token","typeLabel":"string"},"type":{"type":"string","const":"oauth","title":"Type","default":"oauth","uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.credentials.oneOf.1.type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.credentials.oneOf.1","typeLabel":"GoogleDriveOAuthCredentials · object"}],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.credentials","typeLabel":"GoogleDriveServiceAccountCredentials · object | GoogleDriveOAuthCredentials · object"},"provider_type":{"type":"string","const":"google_drive","title":"Provider Type","default":"google_drive","uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.provider_type","typeLabel":"string"},"shared_drive_id":{"oneOf":[{"type":"string","title":"Shared Drive Id","description":"NOT REQUIRED. Google Workspace shared drive (Team Drive) identifier. When provided, sync operations are scoped to this shared drive only. When omitted, syncs from 'My Drive' of the authenticated account. Find ID: Open shared drive in browser, copy ID from URL. Format: 0A{alphanumeric-string}","example":"0AH-Xabc123def456","uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.shared_drive_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Shared Drive Id","description":"NOT REQUIRED. Google Workspace shared drive (Team Drive) identifier. When provided, sync operations are scoped to this shared drive only. When omitted, syncs from 'My Drive' of the authenticated account. Find ID: Open shared drive in browser, copy ID from URL. Format: 0A{alphanumeric-string}","example":"0AH-Xabc123def456","uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.shared_drive_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.shared_drive_id","typeLabel":"string | null"},"impersonate_user":{"oneOf":[{"type":"string","title":"Impersonate User","description":"NOT REQUIRED. Email address to impersonate when using service account credentials. Requires domain-wide delegation to be enabled for the service account. Used in G Suite environments to access files as a specific user. When omitted, uses the service account's own access. Format: Valid email address in the G Suite domain.","example":"user@example.com","uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.impersonate_user.oneOf.0","typeLabel":"string"},{"type":"null","title":"Impersonate User","description":"NOT REQUIRED. Email address to impersonate when using service account credentials. Requires domain-wide delegation to be enabled for the service account. Used in G Suite environments to access files as a specific user. When omitted, uses the service account's own access. Format: Valid email address in the G Suite domain.","example":"user@example.com","uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.impersonate_user.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.0.impersonate_user","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.0","typeLabel":"GoogleDriveConfig · object"},{"type":"object","title":"S3Config","description":"Amazon S3 and S3-compatible storage provider configuration.\n\nThis configuration enables Mixpeek to connect to Amazon S3 or S3-compatible\nstorage services (MinIO, DigitalOcean Spaces, Wasabi, Backblaze B2, etc.)\nfor automated object ingestion and synchronization.\n\nAuthentication Methods:\n 1. IAM Role Assumption (RECOMMENDED for production):\n - Most secure option with automatic credential rotation\n - No long-lived credentials shared\n - Ideal for customer-owned S3 buckets\n\n 2. Access Keys:\n - Simpler setup for development and testing\n - Works with S3-compatible services\n - Requires manual credential rotation\n\nRequirements:\n - Valid AWS credentials or IAM role configuration\n - S3 bucket with appropriate permissions (s3:GetObject, s3:ListBucket)\n - Network connectivity to S3 endpoint\n - Correct region configuration\n\nSupported Services:\n - Amazon S3 (all regions)\n - MinIO (self-hosted or cloud)\n - DigitalOcean Spaces\n - Wasabi Cloud Storage\n - Backblaze B2\n - Any S3-compatible storage with compatible API\n\nUse Cases:\n - Ingest videos from data lakes\n - Sync images from marketing asset buckets\n - Process documents from archive storage\n - Monitor and index uploaded files\n - Backup and disaster recovery workflows","required":["credentials"],"example":{"credentials":{"external_id":"mixpeek-org_abc123","role_arn":"arn:aws:iam::123456789012:role/mixpeek-storage-sync-role","type":"iam_role"},"provider_type":"s3","region":"us-east-1","use_ssl":true,"verify_ssl":true},"properties":{"credentials":{"oneOf":[{"type":"object","title":"S3AccessKeyCredentials","description":"AWS S3 access key and secret credentials.\n\nAccess keys provide programmatic access to S3 buckets using long-lived credentials.\nThis authentication method is straightforward but less secure than IAM role assumption.\n\nPrerequisites:\n - IAM user or role with S3 access permissions\n - Access key and secret key generated in AWS Console\n - Appropriate bucket policies or IAM policies configured\n\nSecurity Considerations:\n - Access keys are long-lived and don't automatically expire\n - secret_access_key is a secret credential (redacted on read) and should be rotated regularly\n - Consider using IAM role assumption (S3RoleCredentials) for production\n - Never commit access keys to version control\n\nUse Cases:\n - Quick prototyping and development\n - Testing S3 integrations\n - Temporary credentials with session_token for enhanced security\n - Accessing S3-compatible services (MinIO, DigitalOcean Spaces)\n\nRecommended Alternative:\n For production deployments, use S3RoleCredentials with IAM role assumption\n instead of access keys for better security and credential management.","required":["access_key_id","secret_access_key"],"properties":{"access_key_id":{"type":"string","maxLength":128,"minLength":1,"title":"Access Key Id","description":"REQUIRED. AWS access key ID for authentication. Format: 20-character alphanumeric string starting with 'AKIA' (long-term) or 'ASIA' (temporary). Obtain from: AWS Console > IAM > Users > Security Credentials","examples":["AKIAIOSFODNN7EXAMPLE","ASIAIOSFODNN7EXAMPLE"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.credentials.oneOf.0.access_key_id","typeLabel":"string"},"secret_access_key":{"type":"string","minLength":1,"title":"Secret Access Key","description":"REQUIRED. AWS secret access key for authentication. SECURITY: This is a secret credential, redacted on read. Never log or expose this value. Format: 40-character base64-encoded string. Obtain from: AWS Console when creating/viewing access key (shown only once). An S3-compatible store (endpoint_url set) issues its own format.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.credentials.oneOf.0.secret_access_key","typeLabel":"string"},"type":{"type":"string","const":"access_key","title":"Type","default":"access_key","uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.credentials.oneOf.0.type","typeLabel":"string"},"session_token":{"oneOf":[{"type":"string","title":"Session Token","description":"NOT REQUIRED. Temporary session token for AWS STS credentials. REQUIRED when using temporary security credentials from AWS STS. NOT REQUIRED for long-term IAM user access keys. SECURITY: Encrypted at rest. Automatically expires after session duration. Format: Base64-encoded string, typically several hundred characters. Use case: Enhanced security with automatic credential rotation","uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.credentials.oneOf.0.session_token.oneOf.0","typeLabel":"string"},{"type":"null","title":"Session Token","description":"NOT REQUIRED. Temporary session token for AWS STS credentials. REQUIRED when using temporary security credentials from AWS STS. NOT REQUIRED for long-term IAM user access keys. SECURITY: Encrypted at rest. Automatically expires after session duration. Format: Base64-encoded string, typically several hundred characters. Use case: Enhanced security with automatic credential rotation","uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.credentials.oneOf.0.session_token.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.credentials.oneOf.0.session_token","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.credentials.oneOf.0","typeLabel":"S3AccessKeyCredentials · object"},{"type":"object","title":"S3RoleCredentials","description":"AWS S3 IAM role assumption credentials (RECOMMENDED for production).\n\nIAM role assumption provides secure, temporary credentials for accessing customer\nS3 buckets without sharing long-lived access keys. This is the recommended\nauthentication method for production deployments.\n\nHow It Works:\n 1. Customer creates an IAM role in their AWS account\n 2. Role trust policy allows Mixpeek AWS account to assume the role\n 3. External ID provides additional security against confused deputy attacks\n 4. Mixpeek assumes the role and receives temporary credentials (auto-renewed)\n 5. Temporary credentials are used to access the customer's S3 bucket\n\nPrerequisites:\n 1. Create IAM role in customer AWS account\n 2. Attach policy granting s3:GetObject, s3:ListBucket permissions\n 3. Configure trust relationship to allow Mixpeek account\n 4. Use organization-specific external_id for security\n 5. Share role ARN with Mixpeek\n\nSecurity Advantages:\n - No long-lived credentials shared with third parties\n - Temporary credentials automatically rotate (1-hour sessions by default)\n - Customer retains full control and can revoke access anytime\n - External ID prevents confused deputy attacks\n - Audit trail in CloudTrail for all access\n\nUse Cases:\n - Production deployments accessing customer S3 buckets\n - Enterprise integrations requiring strong security\n - Multi-tenant environments with customer-owned storage\n - Compliance-sensitive workloads (HIPAA, SOC 2, etc.)","required":["role_arn","external_id"],"example":{"external_id":"mixpeek-org_abc123def456ghi","role_arn":"arn:aws:iam::123456789012:role/mixpeek-storage-sync-role","type":"iam_role"},"properties":{"role_arn":{"type":"string","pattern":"^arn:aws:iam::\\d{12}:role/[\\w+=,.@-]+$","title":"Role Arn","description":"REQUIRED. Amazon Resource Name (ARN) of the IAM role to assume. This role must exist in the customer's AWS account and have a trust relationship configured to allow Mixpeek to assume it. Format: arn:aws:iam::{account-id}:role/{role-name} Example trust policy should allow principal: arn:aws:iam::{mixpeek-account}:root Recommended role name: mixpeek-storage-sync-role","examples":["arn:aws:iam::123456789012:role/mixpeek-storage-sync-role","arn:aws:iam::999888777666:role/external-ingestion-access"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.credentials.oneOf.1.role_arn","typeLabel":"string"},"external_id":{"type":"string","maxLength":128,"minLength":8,"title":"External Id","description":"REQUIRED. External ID for secure role assumption (prevents confused deputy attacks). This value should be unique to your organization and kept confidential. Mixpeek provides this value during connection setup. Must match the ExternalId condition in the role's trust policy. Format: Recommended pattern is mixpeek-{organization_id} Security: Include this in the trust policy Condition statement","examples":["mixpeek-org_abc123def456ghi","mixpeek-customer-enterprise-xyz"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.credentials.oneOf.1.external_id","typeLabel":"string"},"type":{"type":"string","const":"iam_role","title":"Type","default":"iam_role","uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.credentials.oneOf.1.type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.credentials.oneOf.1","typeLabel":"S3RoleCredentials · object"}],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.credentials","typeLabel":"S3AccessKeyCredentials · object | S3RoleCredentials · object"},"provider_type":{"type":"string","const":"s3","title":"Provider Type","default":"s3","uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.provider_type","typeLabel":"string"},"region":{"type":"string","title":"Region","description":"Defaults to us-east-1, as the sync does. AWS region where the S3 bucket is located. Must match the bucket's actual region to avoid routing errors. For S3-compatible services, use their documented region value or 'us-east-1' as a default if regions are not applicable. Format: AWS region code (e.g., us-east-1, eu-west-1)","default":"us-east-1","examples":["us-east-1","us-west-2","eu-west-1","ap-southeast-1","ca-central-1"],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.region","typeLabel":"string"},"endpoint_url":{"oneOf":[{"type":"string","title":"Endpoint Url","description":"NOT REQUIRED for AWS S3 (uses default AWS endpoints). REQUIRED for S3-compatible services to specify custom endpoint URL. Must be a valid HTTPS or HTTP URL without trailing slash. Examples: - MinIO: https://minio.example.com - DigitalOcean Spaces: https://nyc3.digitaloceanspaces.com - Wasabi: https://s3.wasabisys.com","example":"https://s3.wasabisys.com","uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.endpoint_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Endpoint Url","description":"NOT REQUIRED for AWS S3 (uses default AWS endpoints). REQUIRED for S3-compatible services to specify custom endpoint URL. Must be a valid HTTPS or HTTP URL without trailing slash. Examples: - MinIO: https://minio.example.com - DigitalOcean Spaces: https://nyc3.digitaloceanspaces.com - Wasabi: https://s3.wasabisys.com","example":"https://s3.wasabisys.com","uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.endpoint_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.endpoint_url","typeLabel":"string | null"},"use_ssl":{"type":"boolean","title":"Use Ssl","description":"Whether to use TLS/SSL encryption for connections to S3. RECOMMENDED: Always True for production environments. Set to False only for local development with unencrypted endpoints. Default: True","default":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.use_ssl","typeLabel":"boolean"},"verify_ssl":{"type":"boolean","title":"Verify Ssl","description":"Whether to verify TLS/SSL certificates when connecting. RECOMMENDED: Always True for production to prevent MITM attacks. Set to False only for development with self-signed certificates. Requires use_ssl=True to have any effect. Default: True","default":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.1.verify_ssl","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.1","typeLabel":"S3Config · object"},{"type":"object","title":"SnowflakeConfig","description":"Snowflake data warehouse configuration for table-based sync.\n\nEnables syncing Snowflake table rows as JSON objects in Mixpeek buckets.\nEach row becomes one object, with incremental sync via watermark columns.\n\nAuthentication Options:\n - Key Pair: Recommended for production (secure, password-less)\n - Username/Password: Fallback option (simpler setup)\n\nRequirements:\n - Snowflake account with read access to target tables\n - Warehouse with compute resources\n - SELECT permissions on target tables/schemas\n - USAGE permissions on database, schema, warehouse\n\nUse Cases:\n - Sync customer data tables for AI/ML pipelines\n - Ingest product catalog for search/recommendations\n - Process transaction logs for analytics\n - Mirror metadata tables for vector search\n\nExample:\n Production setup with key pair auth:\n ```python\n config = {\n \"provider_type\": \"snowflake\",\n \"credentials\": {\n \"type\": \"key_pair\",\n \"username\": \"MIXPEEK_SYNC\",\n \"private_key\": \"-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\\n\",\n },\n \"account\": \"xy12345.us-east-1\",\n \"warehouse\": \"MIXPEEK_SYNC_WH\",\n \"database\": \"PRODUCTION\",\n \"schema\": \"PUBLIC\",\n \"role\": \"SYNC_ROLE\",\n \"incremental_column\": \"updated_at\",\n \"primary_key_columns\": [\"id\"],\n }\n ```","required":["credentials","account","warehouse"],"example":{"account":"xy12345.us-east-1","credentials":{"private_key":"-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n","type":"key_pair","username":"MIXPEEK_SYNC"},"database":"PRODUCTION","incremental_column":"updated_at","primary_key_columns":["id"],"provider_type":"snowflake","role":"MIXPEEK_SYNC_ROLE","schema":"PUBLIC","warehouse":"MIXPEEK_SYNC_WH"},"properties":{"credentials":{"oneOf":[{"type":"object","title":"SnowflakeKeyPairCredentials","description":"Snowflake key pair authentication (RECOMMENDED for production).\n\nKey pair authentication provides secure, password-less access to Snowflake.\n\nPrerequisites:\n 1. Generate RSA key pair (2048-bit minimum)\n 2. Extract public key and assign to Snowflake user\n 3. Store private key securely (encrypted)\n\nSecurity:\n - Private key is a secret credential, redacted on read\n - No password exposure\n - Key rotation supported\n - Recommended for production\n\nExample:\n Generate key pair:\n ```bash\n openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt\n openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub\n ```\n\n Assign public key to Snowflake user:\n ```sql\n ALTER USER mixpeek_sync SET RSA_PUBLIC_KEY='MIIBIjANBg...';\n ```","required":["username","private_key"],"properties":{"username":{"type":"string","title":"Username","description":"Snowflake username for authentication","examples":["MIXPEEK_SYNC_USER","data_ingestion"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.credentials.oneOf.0.username","typeLabel":"string"},"private_key":{"type":"string","title":"Private Key","description":"REQUIRED. PEM-encoded RSA private key for authentication. SECURITY: This is a secret credential, redacted on read. Never log or expose. Format: -----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY----- ","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.credentials.oneOf.0.private_key","typeLabel":"string"},"type":{"type":"string","const":"key_pair","title":"Type","default":"key_pair","uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.credentials.oneOf.0.type","typeLabel":"string"},"private_key_passphrase":{"oneOf":[{"type":"string","title":"Private Key Passphrase","description":"NOT REQUIRED. Passphrase for encrypted private key. SECURITY: Encrypted at rest if provided. Use only if private key is passphrase-protected.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.credentials.oneOf.0.private_key_passphrase.oneOf.0","typeLabel":"string"},{"type":"null","title":"Private Key Passphrase","description":"NOT REQUIRED. Passphrase for encrypted private key. SECURITY: Encrypted at rest if provided. Use only if private key is passphrase-protected.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.credentials.oneOf.0.private_key_passphrase.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.credentials.oneOf.0.private_key_passphrase","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.credentials.oneOf.0","typeLabel":"SnowflakeKeyPairCredentials · object"},{"type":"object","title":"SnowflakeUsernamePasswordCredentials","description":"Snowflake username/password authentication (FALLBACK option).\n\nTraditional username/password authentication for Snowflake.\nLess secure than key pair authentication but simpler to set up.\n\nSecurity:\n - Password is a secret credential, redacted on read\n - Consider using key pair auth for production\n - Enable MFA on Snowflake user account","required":["username","password"],"properties":{"username":{"type":"string","title":"Username","description":"REQUIRED. Snowflake username (case-insensitive).","examples":["MIXPEEK_SYNC_USER","data_ingestion"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.credentials.oneOf.1.username","typeLabel":"string"},"password":{"type":"string","title":"Password","description":"REQUIRED. Snowflake password for authentication. SECURITY: This is a secret credential, redacted on read. Never log or expose.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.credentials.oneOf.1.password","typeLabel":"string"},"type":{"type":"string","const":"username_password","title":"Type","default":"username_password","uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.credentials.oneOf.1.type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.credentials.oneOf.1","typeLabel":"SnowflakeUsernamePasswordCredentials · object"}],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.credentials","typeLabel":"SnowflakeKeyPairCredentials · object | SnowflakeUsernamePasswordCredentials · object"},"account":{"type":"string","title":"Account","description":"REQUIRED. Snowflake account identifier. Format: {account_locator}.{cloud_region} or {org_name}-{account_name} Find in: Snowflake UI > Account dropdown > Account URL","examples":["xy12345.us-east-1","myorg-prod","acme-analytics"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.account","typeLabel":"string"},"warehouse":{"type":"string","title":"Warehouse","description":"REQUIRED. Warehouse name for compute resources. Must have USAGE privilege on this warehouse. Warehouse will be used for all sync queries. Consider: Use dedicated warehouse for sync operations to isolate costs.","examples":["COMPUTE_WH","MIXPEEK_SYNC_WH","ETL_SMALL"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.warehouse","typeLabel":"string"},"provider_type":{"type":"string","const":"snowflake","title":"Provider Type","default":"snowflake","uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.provider_type","typeLabel":"string"},"database":{"oneOf":[{"type":"string","title":"Database","description":"NOT REQUIRED if fully qualified table name used in source_path. Database name for default context. Can be omitted if source_path uses {DATABASE}.{SCHEMA}.{TABLE} format. Must have USAGE privilege if specified.","example":"PRODUCTION","uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.database.oneOf.0","typeLabel":"string"},{"type":"null","title":"Database","description":"NOT REQUIRED if fully qualified table name used in source_path. Database name for default context. Can be omitted if source_path uses {DATABASE}.{SCHEMA}.{TABLE} format. Must have USAGE privilege if specified.","example":"PRODUCTION","uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.database.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.database","typeLabel":"string | null"},"schema":{"oneOf":[{"type":"string","title":"Schema","description":"NOT REQUIRED if fully qualified table name used in source_path. Schema name for default context. Can be omitted if source_path uses {SCHEMA}.{TABLE} or {DATABASE}.{SCHEMA}.{TABLE}. Must have USAGE privilege if specified.","example":"PUBLIC","uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.schema.oneOf.0","typeLabel":"string"},{"type":"null","title":"Schema","description":"NOT REQUIRED if fully qualified table name used in source_path. Schema name for default context. Can be omitted if source_path uses {SCHEMA}.{TABLE} or {DATABASE}.{SCHEMA}.{TABLE}. Must have USAGE privilege if specified.","example":"PUBLIC","uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.schema.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.schema","typeLabel":"string | null"},"role":{"oneOf":[{"type":"string","title":"Role","description":"NOT REQUIRED. Snowflake role to use for operations. If omitted, uses user's default role. Role must have SELECT on target tables and USAGE on database/schema/warehouse. Best practice: Create dedicated read-only role for sync operations.","example":"MIXPEEK_SYNC_ROLE","uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.role.oneOf.0","typeLabel":"string"},{"type":"null","title":"Role","description":"NOT REQUIRED. Snowflake role to use for operations. If omitted, uses user's default role. Role must have SELECT on target tables and USAGE on database/schema/warehouse. Best practice: Create dedicated read-only role for sync operations.","example":"MIXPEEK_SYNC_ROLE","uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.role.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.role","typeLabel":"string | null"},"incremental_column":{"oneOf":[{"type":"string","title":"Incremental Column","description":"NOT REQUIRED. Column name for incremental sync watermark. Should be a TIMESTAMP, TIMESTAMP_NTZ, or DATE column that tracks row modifications. When set, only rows with {incremental_column} > last_sync_watermark are synced. Common values: updated_at, modified_at, last_updated, ingestion_timestamp. If omitted, full table scan on every sync (not recommended for large tables).","example":"updated_at","uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.incremental_column.oneOf.0","typeLabel":"string"},{"type":"null","title":"Incremental Column","description":"NOT REQUIRED. Column name for incremental sync watermark. Should be a TIMESTAMP, TIMESTAMP_NTZ, or DATE column that tracks row modifications. When set, only rows with {incremental_column} > last_sync_watermark are synced. Common values: updated_at, modified_at, last_updated, ingestion_timestamp. If omitted, full table scan on every sync (not recommended for large tables).","example":"updated_at","uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.incremental_column.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.incremental_column","typeLabel":"string | null"},"primary_key_columns":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.primary_key_columns.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Primary Key Columns","description":"NOT REQUIRED. Column names forming the primary key for stable object IDs. Used to generate deterministic file_id for deduplication. If omitted, uses hash of entire row content (less stable). Recommendation: Always specify for production to ensure idempotent syncs.","example":["id"],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.primary_key_columns.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Primary Key Columns","description":"NOT REQUIRED. Column names forming the primary key for stable object IDs. Used to generate deterministic file_id for deduplication. If omitted, uses hash of entire row content (less stable). Recommendation: Always specify for production to ensure idempotent syncs.","example":["id"],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.primary_key_columns.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.primary_key_columns","typeLabel":"string[] | null"},"query_timeout_seconds":{"type":"integer","maximum":3600,"minimum":30,"title":"Query Timeout Seconds","description":"Query timeout in seconds. Prevents long-running queries from blocking sync operations. Default: 300 seconds (5 minutes). Increase for large tables or complex queries.","default":300,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.query_timeout_seconds","typeLabel":"integer"},"fetch_size":{"type":"integer","maximum":10000,"minimum":100,"title":"Fetch Size","description":"Number of rows to fetch per network round-trip. Higher values reduce network overhead but increase memory usage. Default: 1000 rows. Tune based on row size and available memory.","default":1000,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2.fetch_size","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.2","typeLabel":"SnowflakeConfig · object"},{"type":"object","title":"SharePointConfig","description":"Microsoft SharePoint and OneDrive for Business configuration.\n\nEnables Mixpeek to connect to SharePoint sites, document libraries, and\nOneDrive for Business for automated file ingestion and synchronization.\n\nArchitecture:\n SharePoint hierarchy: Tenant → Sites → Drives (Document Libraries) → Items\n - site_id: Identifies the SharePoint site\n - drive_id: Identifies a specific document library within the site\n - folder_path: Path within the document library\n\nAuthentication Methods:\n 1. Client Credentials (RECOMMENDED for production):\n - App-only access without user interaction\n - Requires admin consent for Graph API permissions\n - Access level determined by app permissions\n\n 2. Delegated:\n - User-level access via OAuth consent\n - Access limited to user's permissions\n - Requires refresh token management\n\nRequirements:\n - Azure AD application registration\n - Microsoft Graph API permissions (Sites.Read.All, Files.Read.All)\n - Network connectivity to graph.microsoft.com\n\nUse Cases:\n - Sync SharePoint document libraries\n - Ingest enterprise collaboration files\n - Monitor and process uploaded documents\n - Archive compliance-sensitive materials\n\nExample:\n ```python\n config = {\n \"provider_type\": \"sharepoint\",\n \"credentials\": {\n \"type\": \"client_credentials\",\n \"tenant_id\": \"12345678-...\",\n \"client_id\": \"87654321-...\",\n \"client_secret\": \"your-secret\",\n },\n \"site_id\": \"contoso.sharepoint.com,guid1,guid2\",\n \"drive_id\": \"b!abc123...\",\n \"folder_path\": \"/Shared Documents/Marketing\",\n }\n ```","required":["credentials"],"example":{"credentials":{"client_id":"87654321-4321-4321-4321-cba987654321","client_secret":"your-client-secret-here","tenant_id":"12345678-1234-1234-1234-123456789abc","type":"client_credentials"},"drive_id":"b!abc123def456ghi789","folder_path":"/Shared Documents/Marketing","provider_type":"sharepoint","site_id":"contoso.sharepoint.com,12345678-1234-1234-1234-123456789abc,87654321-4321-4321-4321-cba987654321"},"properties":{"credentials":{"oneOf":[{"type":"object","title":"SharePointClientCredentials","description":"SharePoint/OneDrive client credentials (app-only) authentication.\n\nClient credentials flow provides application-level access without user interaction.\nRecommended for automated sync operations in enterprise environments.\n\nPrerequisites:\n 1. Register an application in Azure AD (portal.azure.com)\n 2. Grant Microsoft Graph API permissions:\n - Sites.Read.All (Application) - for SharePoint site access\n - Files.Read.All (Application) - for file access\n 3. Admin consent granted for the permissions\n 4. Generate client secret\n\nSecurity:\n - client_secret is a secret credential, redacted on read\n - Provides application-level access to all sites (based on permissions)\n - No user context - accesses files as the application itself\n - Consider using certificate-based auth for production\n\nUse Cases:\n - Automated enterprise-wide document ingestion\n - Background sync without user interaction\n - Multi-tenant applications with admin consent","required":["tenant_id","client_id","client_secret"],"properties":{"tenant_id":{"type":"string","title":"Tenant Id","description":"REQUIRED. Azure AD tenant ID (directory ID). Find in: Azure Portal > Azure Active Directory > Overview. Format: UUID (e.g., '12345678-1234-1234-1234-123456789abc')","examples":["12345678-1234-1234-1234-123456789abc"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.credentials.oneOf.0.tenant_id","typeLabel":"string"},"client_id":{"type":"string","title":"Client Id","description":"REQUIRED. Azure AD application (client) ID. Find in: Azure Portal > App Registrations > Your App > Overview. Format: UUID","examples":["87654321-4321-4321-4321-cba987654321"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.credentials.oneOf.0.client_id","typeLabel":"string"},"client_secret":{"type":"string","title":"Client Secret","description":"REQUIRED. Azure AD client secret for authentication. SECURITY: This is a secret credential, redacted on read. Never log or expose. Generate in: Azure Portal > App Registrations > Your App > Certificates \u0026 secrets. Note: Secrets expire; consider using certificates for production.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.credentials.oneOf.0.client_secret","typeLabel":"string"},"type":{"type":"string","const":"client_credentials","title":"Type","default":"client_credentials","uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.credentials.oneOf.0.type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.credentials.oneOf.0","typeLabel":"SharePointClientCredentials · object"},{"type":"object","title":"SharePointDelegatedCredentials","description":"SharePoint/OneDrive delegated (user) authentication via OAuth2.\n\nDelegated flow provides access on behalf of a specific user.\nUseful when you need to access files with user-level permissions.\n\nPrerequisites:\n 1. Register an application in Azure AD\n 2. Grant Microsoft Graph API permissions:\n - Sites.Read.All (Delegated) or Sites.Selected\n - Files.Read.All (Delegated) or Files.Read\n 3. Configure redirect URI for OAuth flow\n 4. Complete OAuth consent to obtain refresh token\n\nSecurity:\n - client_secret and refresh_token are secret credentials, redacted on read\n - Access scoped to what the consenting user can access\n - Refresh tokens can be revoked by user or admin\n\nUse Cases:\n - Personal OneDrive access\n - User-specific SharePoint sites\n - Respecting per-user permissions","required":["tenant_id","client_id","client_secret","refresh_token"],"properties":{"tenant_id":{"type":"string","title":"Tenant Id","description":"REQUIRED. Azure AD tenant ID. Use 'common' for multi-tenant apps, or specific tenant ID for single-tenant.","examples":["12345678-1234-1234-1234-123456789abc","common"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.credentials.oneOf.1.tenant_id","typeLabel":"string"},"client_id":{"type":"string","title":"Client Id","description":"REQUIRED. Azure AD application (client) ID.","examples":["87654321-4321-4321-4321-cba987654321"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.credentials.oneOf.1.client_id","typeLabel":"string"},"client_secret":{"type":"string","title":"Client Secret","description":"REQUIRED. Azure AD client secret. SECURITY: Secret credential, redacted on read. Never log or expose.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.credentials.oneOf.1.client_secret","typeLabel":"string"},"refresh_token":{"type":"string","title":"Refresh Token","description":"REQUIRED. OAuth2 refresh token obtained from consent flow. SECURITY: Encrypted at rest. Can be revoked by user. Obtain via: Complete OAuth flow with Files.Read.All scope.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.credentials.oneOf.1.refresh_token","typeLabel":"string"},"type":{"type":"string","const":"delegated","title":"Type","default":"delegated","uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.credentials.oneOf.1.type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.credentials.oneOf.1","typeLabel":"SharePointDelegatedCredentials · object"}],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.credentials","typeLabel":"SharePointClientCredentials · object | SharePointDelegatedCredentials · object"},"provider_type":{"type":"string","const":"sharepoint","title":"Provider Type","default":"sharepoint","uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.provider_type","typeLabel":"string"},"site_id":{"oneOf":[{"type":"string","title":"Site Id","description":"NOT REQUIRED if using personal OneDrive. SharePoint site identifier for targeting a specific site. Format: '{hostname},{site-collection-id},{web-id}' or site URL. Find via: Microsoft Graph API GET /sites?search={keyword} Example: 'contoso.sharepoint.com,12345678-...,87654321-...'","example":"contoso.sharepoint.com,12345678-1234-1234-1234-123456789abc,87654321-4321-4321-4321-cba987654321","uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.site_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Site Id","description":"NOT REQUIRED if using personal OneDrive. SharePoint site identifier for targeting a specific site. Format: '{hostname},{site-collection-id},{web-id}' or site URL. Find via: Microsoft Graph API GET /sites?search={keyword} Example: 'contoso.sharepoint.com,12345678-...,87654321-...'","example":"contoso.sharepoint.com,12345678-1234-1234-1234-123456789abc,87654321-4321-4321-4321-cba987654321","uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.site_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.site_id","typeLabel":"string | null"},"drive_id":{"oneOf":[{"type":"string","title":"Drive Id","description":"NOT REQUIRED if you want to use the default document library. Specific drive (document library) ID within the site. Find via: GET /sites/{site-id}/drives Format: Base64-encoded ID starting with 'b!'","example":"b!abc123def456...","uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.drive_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Drive Id","description":"NOT REQUIRED if you want to use the default document library. Specific drive (document library) ID within the site. Find via: GET /sites/{site-id}/drives Format: Base64-encoded ID starting with 'b!'","example":"b!abc123def456...","uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.drive_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.drive_id","typeLabel":"string | null"},"folder_path":{"oneOf":[{"type":"string","title":"Folder Path","description":"NOT REQUIRED. Path within the drive to sync from. If omitted, syncs from the root of the drive. Format: Forward-slash separated path (e.g., '/Documents/Marketing'). Note: Leading slash is optional.","example":"/Shared Documents/Marketing","uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.folder_path.oneOf.0","typeLabel":"string"},{"type":"null","title":"Folder Path","description":"NOT REQUIRED. Path within the drive to sync from. If omitted, syncs from the root of the drive. Format: Forward-slash separated path (e.g., '/Documents/Marketing'). Note: Leading slash is optional.","example":"/Shared Documents/Marketing","uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.folder_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.3.folder_path","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.3","typeLabel":"SharePointConfig · object"},{"type":"object","title":"TigrisConfig","description":"Tigris Data globally distributed object storage configuration.\n\nTigris is an S3-compatible object storage service with automatic global\ndistribution, zero egress fees, and built-in CDN capabilities. It uses\nthe AWS S3 API, making integration straightforward.\n\nKey Features:\n - S3-compatible API (drop-in replacement)\n - Automatic global data distribution\n - Zero egress fees\n - Built-in CDN and caching\n - Strong consistency guarantees\n\nAuthentication:\n - Access keys only (similar to S3 access keys)\n - No IAM role assumption (Tigris is not AWS)\n\nRequirements:\n - Tigris account with access keys\n - Bucket created in Tigris console\n - Network connectivity to fly.storage.tigris.dev\n\nUse Cases:\n - Globally distributed media assets\n - Low-latency content delivery worldwide\n - Cost-effective storage with no egress fees\n - S3-compatible workflows outside AWS","required":["credentials"],"example":{"credentials":{"access_key_id":"tid_your_access_key","secret_access_key":"tsec_your_secret_key","type":"access_key"},"endpoint_url":"https://fly.storage.tigris.dev","provider_type":"tigris","region":"auto"},"properties":{"credentials":{"properties":{"access_key_id":{"type":"string","minLength":1,"title":"Access Key Id","description":"REQUIRED. Tigris access key ID for authentication. Obtain from: Tigris Console > Access Keys","examples":["tid_AzureDiamond"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.4.credentials.access_key_id","typeLabel":"string"},"secret_access_key":{"type":"string","minLength":1,"title":"Secret Access Key","description":"REQUIRED. Tigris secret access key for authentication. SECURITY: This is a secret credential, redacted on read. Never log or expose this value. Obtain from: Tigris Console when creating access key (shown only once)","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.4.credentials.secret_access_key","typeLabel":"string"},"type":{"type":"string","const":"access_key","title":"Type","default":"access_key","uniqueKey":"results.items.[INDEX].provider_config.oneOf.4.credentials.type","typeLabel":"string"}},"type":"object","required":["access_key_id","secret_access_key"],"title":"TigrisAccessKeyCredentials","description":"REQUIRED. Tigris access key credentials. Obtain from Tigris Console at https://console.tigris.dev","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.4.credentials","typeLabel":"TigrisAccessKeyCredentials · object"},"provider_type":{"type":"string","const":"tigris","title":"Provider Type","default":"tigris","uniqueKey":"results.items.[INDEX].provider_config.oneOf.4.provider_type","typeLabel":"string"},"region":{"type":"string","title":"Region","description":"Region for Tigris. Typically 'auto' for automatic global distribution. Tigris automatically distributes data globally, so region is usually 'auto'. Default: auto","default":"auto","examples":["auto"],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.4.region","typeLabel":"string"},"endpoint_url":{"type":"string","title":"Endpoint Url","description":"Tigris S3-compatible endpoint URL. Default: https://fly.storage.tigris.dev This is the standard Tigris endpoint and usually doesn't need to be changed.","default":"https://fly.storage.tigris.dev","examples":["https://fly.storage.tigris.dev"],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.4.endpoint_url","typeLabel":"string"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.4","typeLabel":"TigrisConfig · object"},{"type":"object","title":"PostgreSQLConfig","description":"PostgreSQL database configuration for table-based sync and SQL queries.\n\nEnables syncing PostgreSQL table rows as JSON objects and running SQL queries\nvia the SQL Lookup retriever stage. Each row becomes one object, with\nincremental sync via watermark columns.\n\nAuthentication:\n - Username/Password: Standard PostgreSQL authentication\n\nRequirements:\n - PostgreSQL 12+ recommended\n - Read access to target tables\n - Network connectivity to PostgreSQL server\n\nUse Cases:\n - Sync customer data tables for AI/ML pipelines\n - Run SQL lookups to enrich documents in retriever pipelines\n - Ingest product catalog for search/recommendations\n - Process transaction logs for analytics\n\nExample:\n ```python\n config = {\n \"provider_type\": \"postgresql\",\n \"credentials\": {\n \"type\": \"username_password\",\n \"username\": \"mixpeek_sync\",\n \"password\": \"secure_password\",\n },\n \"host\": \"db.example.com\",\n \"port\": 5432,\n \"database\": \"production\",\n \"schema\": \"public\",\n \"ssl_mode\": \"require\",\n }\n ```","required":["credentials","host","database"],"example":{"credentials":{"password":"dev_password","type":"username_password","username":"mixpeek_user"},"database":"mixpeek_test","host":"localhost","port":5432,"provider_type":"postgresql","schema":"public","ssl_mode":"disable"},"properties":{"credentials":{"properties":{"username":{"type":"string","title":"Username","description":"REQUIRED. PostgreSQL username for authentication.","examples":["mixpeek_sync","readonly_user"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.credentials.username","typeLabel":"string"},"password":{"type":"string","title":"Password","description":"REQUIRED. PostgreSQL password for authentication. SECURITY: This is a secret credential, redacted on read. Never log or expose.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.credentials.password","typeLabel":"string"},"type":{"type":"string","const":"username_password","title":"Type","default":"username_password","uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.credentials.type","typeLabel":"string"}},"type":"object","required":["username","password"],"title":"PostgreSQLCredentials","description":"REQUIRED. PostgreSQL authentication credentials. Currently supports username/password authentication.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.credentials","typeLabel":"PostgreSQLCredentials · object"},"host":{"type":"string","title":"Host","description":"REQUIRED. PostgreSQL server hostname or IP address. Examples: 'localhost', 'db.example.com', '192.168.1.100'","examples":["localhost","db.example.com","192.168.1.100"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.host","typeLabel":"string"},"database":{"type":"string","title":"Database","description":"REQUIRED. Database name to connect to. User must have CONNECT privilege on this database.","examples":["production","analytics","customer_data"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.database","typeLabel":"string"},"provider_type":{"type":"string","const":"postgresql","title":"Provider Type","default":"postgresql","uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.provider_type","typeLabel":"string"},"port":{"type":"integer","maximum":65535,"minimum":1,"title":"Port","description":"PostgreSQL server port. Default: 5432 (standard PostgreSQL port)","default":5432,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.port","typeLabel":"integer"},"schema":{"oneOf":[{"type":"string","title":"Schema","description":"Schema name for default context. Default: 'public'. User must have USAGE privilege on this schema.","default":"public","example":"public","uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.schema.oneOf.0","typeLabel":"string"},{"type":"null","title":"Schema","description":"Schema name for default context. Default: 'public'. User must have USAGE privilege on this schema.","default":"public","example":"public","uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.schema.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.schema","typeLabel":"string | null"},"ssl_mode":{"type":"string","title":"Ssl Mode","description":"SSL/TLS connection mode. Options: 'disable', 'allow', 'prefer', 'require', 'verify-ca', 'verify-full'. Default: 'prefer'. RECOMMENDED: Use 'require' or stricter for production environments.","default":"prefer","examples":["disable","prefer","require","verify-full"],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.ssl_mode","typeLabel":"string"},"incremental_column":{"oneOf":[{"type":"string","title":"Incremental Column","description":"NOT REQUIRED. Column name for incremental sync watermark. Should be a TIMESTAMP or DATE column that tracks row modifications. Common values: updated_at, modified_at, last_updated. If omitted, full table scan on every sync.","example":"updated_at","uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.incremental_column.oneOf.0","typeLabel":"string"},{"type":"null","title":"Incremental Column","description":"NOT REQUIRED. Column name for incremental sync watermark. Should be a TIMESTAMP or DATE column that tracks row modifications. Common values: updated_at, modified_at, last_updated. If omitted, full table scan on every sync.","example":"updated_at","uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.incremental_column.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.incremental_column","typeLabel":"string | null"},"primary_key_columns":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.primary_key_columns.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Primary Key Columns","description":"NOT REQUIRED. Column names forming the primary key for stable object IDs. Used to generate deterministic file_id for deduplication. If omitted, uses hash of entire row content.","example":["id"],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.primary_key_columns.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Primary Key Columns","description":"NOT REQUIRED. Column names forming the primary key for stable object IDs. Used to generate deterministic file_id for deduplication. If omitted, uses hash of entire row content.","example":["id"],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.primary_key_columns.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.primary_key_columns","typeLabel":"string[] | null"},"query_timeout_seconds":{"type":"integer","maximum":3600,"minimum":1,"title":"Query Timeout Seconds","description":"Query timeout in seconds. Default: 300 seconds (5 minutes). Increase for large tables or complex queries.","default":300,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.query_timeout_seconds","typeLabel":"integer"},"fetch_size":{"type":"integer","maximum":10000,"minimum":100,"title":"Fetch Size","description":"Number of rows to fetch per batch. Higher values reduce network overhead but increase memory usage. Default: 1000 rows.","default":1000,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5.fetch_size","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.5","typeLabel":"PostgreSQLConfig · object"},{"type":"object","title":"InstagramConfig","description":"Instagram Business/Creator account configuration via Meta Graph API.\n\nEnables Mixpeek to sync media (posts, reels, carousels) from Instagram\naccounts using the official Instagram Graph API. Each media item becomes\na bucket object with metadata (caption, likes, comments, permalink).\n\nAuthentication:\n - OAuth 2.0 via Meta Developer Console\n - Long-lived tokens (60 days) with automatic refresh\n\nRequirements:\n - Instagram Business or Creator account\n - Facebook Page linked to the Instagram account\n - Meta app with instagram_basic permission\n\nUse Cases:\n - Sync creator content for talent analysis\n - Monitor competitor ad creatives\n - Build social media content libraries for multimodal search","required":["credentials"],"example":{"credentials":{"access_token":"IGQ...","client_id":"123456789","client_secret":"app_secret_here","instagram_user_id":"17841400000000000","instagram_username":"mybrand","token_expires_at":"2025-04-01T00:00:00Z","type":"oauth"},"provider_type":"instagram","scopes":["instagram_basic","instagram_manage_insights"]},"properties":{"credentials":{"properties":{"client_id":{"type":"string","title":"Client Id","description":"Instagram App ID from Meta Developer Console.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.credentials.client_id","typeLabel":"string"},"access_token":{"type":"string","title":"Access Token","description":"SECURITY: Encrypted at rest. Long-lived Instagram access token (60-day validity).","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.credentials.access_token","typeLabel":"string"},"instagram_user_id":{"type":"string","title":"Instagram User Id","description":"Instagram User ID of the account that authorized access.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.credentials.instagram_user_id","typeLabel":"string"},"type":{"type":"string","const":"oauth","title":"Type","default":"oauth","uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.credentials.type","typeLabel":"string"},"client_secret":{"oneOf":[{"type":"string","title":"Client Secret","description":"SECURITY: Secret credential, redacted on read. Never log or expose. Instagram App Secret from Meta Developer Console. Optional: the token refresh sends an empty secret when it is absent.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.credentials.client_secret.oneOf.0","typeLabel":"string"},{"type":"null","title":"Client Secret","description":"SECURITY: Secret credential, redacted on read. Never log or expose. Instagram App Secret from Meta Developer Console. Optional: the token refresh sends an empty secret when it is absent.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.credentials.client_secret.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.credentials.client_secret","typeLabel":"string | null"},"token_expires_at":{"oneOf":[{"type":"string","title":"Token Expires At","description":"Token expiration timestamp. Used to trigger proactive refresh.","format":"date-time","uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.credentials.token_expires_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Token Expires At","description":"Token expiration timestamp. Used to trigger proactive refresh.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.credentials.token_expires_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.credentials.token_expires_at","typeLabel":"string\u003cdate-time> | null"},"instagram_username":{"oneOf":[{"type":"string","title":"Instagram Username","description":"Instagram username for display purposes.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.credentials.instagram_username.oneOf.0","typeLabel":"string"},{"type":"null","title":"Instagram Username","description":"Instagram username for display purposes.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.credentials.instagram_username.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.credentials.instagram_username","typeLabel":"string | null"}},"type":"object","required":["client_id","access_token","instagram_user_id"],"title":"InstagramOAuthCredentials","description":"OAuth credentials for Instagram Graph API access.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.credentials","typeLabel":"InstagramOAuthCredentials · object"},"provider_type":{"type":"string","const":"instagram","title":"Provider Type","default":"instagram","uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.provider_type","typeLabel":"string"},"scopes":{"items":{"type":"string","uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.scopes.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Scopes","description":"OAuth scopes granted during authorization.","default":["instagram_basic","instagram_manage_insights","pages_show_list"],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.scopes","typeLabel":"string[]"},"business_account_id":{"oneOf":[{"type":"string","title":"Business Account Id","description":"Instagram Business Account ID if different from the user ID. Auto-populated from OAuth flow.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.business_account_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Business Account Id","description":"Instagram Business Account ID if different from the user ID. Auto-populated from OAuth flow.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.business_account_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.6.business_account_id","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.6","typeLabel":"InstagramConfig · object"},{"type":"object","title":"TikTokConfig","description":"TikTok account configuration via TikTok Content API.\n\nEnables Mixpeek to sync videos from TikTok accounts using the official\nTikTok API. Each video becomes a bucket object with metadata (description,\nlikes, views, shares, comments).\n\nAuthentication:\n - OAuth 2.0 via TikTok Login Kit\n - Access tokens expire in 24h (refresh_token flow)\n\nRequirements:\n - TikTok Developer account with approved app\n - user.info.basic and video.list scopes\n\nUse Cases:\n - Sync creator video content for talent analysis\n - Monitor trending content and competitors\n - Build video content libraries for multimodal search","required":["credentials"],"example":{"credentials":{"access_token":"act.xxx","client_key":"your_client_key","client_secret":"your_client_secret","open_id":"user_open_id","refresh_token":"rft.xxx","token_expires_at":"2025-03-02T00:00:00Z","type":"oauth"},"provider_type":"tiktok","scopes":["user.info.basic","video.list"]},"properties":{"credentials":{"properties":{"client_key":{"type":"string","title":"Client Key","description":"TikTok App Client Key from Developer Portal.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.credentials.client_key","typeLabel":"string"},"client_secret":{"type":"string","title":"Client Secret","description":"SECURITY: Secret credential, redacted on read. Never log or expose. TikTok App Client Secret from Developer Portal.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.credentials.client_secret","typeLabel":"string"},"access_token":{"type":"string","title":"Access Token","description":"SECURITY: Encrypted at rest. TikTok access token (24h validity).","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.credentials.access_token","typeLabel":"string"},"open_id":{"type":"string","title":"Open Id","description":"TikTok user's open_id from the authorization response.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.credentials.open_id","typeLabel":"string"},"type":{"type":"string","const":"oauth","title":"Type","default":"oauth","uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.credentials.type","typeLabel":"string"},"refresh_token":{"oneOf":[{"type":"string","title":"Refresh Token","description":"SECURITY: Encrypted at rest. Used to obtain new access tokens. Optional: without one the sync skips refreshing and uses access_token.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.credentials.refresh_token.oneOf.0","typeLabel":"string"},{"type":"null","title":"Refresh Token","description":"SECURITY: Encrypted at rest. Used to obtain new access tokens. Optional: without one the sync skips refreshing and uses access_token.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.credentials.refresh_token.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.credentials.refresh_token","typeLabel":"string | null"},"token_expires_at":{"oneOf":[{"type":"string","title":"Token Expires At","description":"Access token expiration timestamp.","format":"date-time","uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.credentials.token_expires_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Token Expires At","description":"Access token expiration timestamp.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.credentials.token_expires_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.credentials.token_expires_at","typeLabel":"string\u003cdate-time> | null"}},"type":"object","required":["client_key","client_secret","access_token","open_id"],"title":"TikTokOAuthCredentials","description":"OAuth credentials for TikTok Content API access.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.credentials","typeLabel":"TikTokOAuthCredentials · object"},"provider_type":{"type":"string","const":"tiktok","title":"Provider Type","default":"tiktok","uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.provider_type","typeLabel":"string"},"scopes":{"items":{"type":"string","uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.scopes.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Scopes","description":"OAuth scopes granted during authorization.","default":["user.info.basic","video.list"],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.7.scopes","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.7","typeLabel":"TikTokConfig · object"},{"type":"object","title":"RSSConfig","description":"RSS/Atom feed configuration. source_path = feed URL.","example":{"provider_type":"rss","request_timeout":30,"user_agent":"Mixpeek RSS Sync/1.0"},"properties":{"provider_type":{"type":"string","const":"rss","title":"Provider Type","default":"rss","uniqueKey":"results.items.[INDEX].provider_config.oneOf.8.provider_type","typeLabel":"string"},"credentials":{"oneOf":[{"type":"object","title":"RSSHttpHeaderCredentials","description":"Optional HTTP headers for private feeds.","properties":{"type":{"type":"string","const":"http_headers","title":"Type","default":"http_headers","uniqueKey":"results.items.[INDEX].provider_config.oneOf.8.credentials.oneOf.0.type","typeLabel":"string"},"headers":{"additionalProperties":{"type":"string","uniqueKey":"results.items.[INDEX].provider_config.oneOf.8.credentials.oneOf.0.headers.additionalProperties","typeLabel":"string"},"type":"object","title":"Headers","description":"HTTP headers for feed requests (e.g., Authorization).","uniqueKey":"results.items.[INDEX].provider_config.oneOf.8.credentials.oneOf.0.headers","typeLabel":"Headers · object"}},"uniqueKey":"results.items.[INDEX].provider_config.oneOf.8.credentials.oneOf.0","typeLabel":"RSSHttpHeaderCredentials · object"},{"type":"null","description":"Optional HTTP headers for private feeds.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.8.credentials.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.8.credentials","typeLabel":"RSSHttpHeaderCredentials · object | null"},"user_agent":{"type":"string","title":"User Agent","description":"User-Agent header for feed requests.","default":"Mixpeek RSS Sync/1.0","uniqueKey":"results.items.[INDEX].provider_config.oneOf.8.user_agent","typeLabel":"string"},"request_timeout":{"type":"integer","maximum":120,"minimum":5,"title":"Request Timeout","description":"HTTP request timeout in seconds.","default":30,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.8.request_timeout","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.8","typeLabel":"RSSConfig · object"},{"type":"object","title":"HTTPAPIConfig","description":"REST/HTTP JSON API configuration. source_path = API URL.\n\nEnables Mixpeek to sync items from any JSON REST API endpoint.\nEach item in the API response becomes a bucket object with its\nJSON body stored as the blob.\n\nAuthentication:\n - Optional HTTP headers (API keys, Bearer tokens, etc.)\n\nRequirements:\n - API must return JSON (or JSONL) response\n - Response must contain an array of items (at root or nested path)\n - Each item must have a unique ID field for deduplication\n\nUse Cases:\n - Sync data from public APIs (Hacker News, GitHub, etc.)\n - Ingest records from internal REST services\n - Poll third-party APIs (Stripe, Shopify, etc.)\n - Monitor any JSON endpoint for new items","example":{"item_id_field":"objectID","item_modified_field":"created_at_i","items_path":"hits","provider_type":"http_api","request_timeout":30},"properties":{"provider_type":{"type":"string","const":"http_api","title":"Provider Type","default":"http_api","uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.provider_type","typeLabel":"string"},"credentials":{"oneOf":[{"type":"object","title":"HTTPAPIHeaderCredentials","description":"Optional HTTP headers for authenticated API endpoints.","properties":{"type":{"type":"string","const":"http_headers","title":"Type","default":"http_headers","uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.credentials.oneOf.0.type","typeLabel":"string"},"headers":{"additionalProperties":{"type":"string","uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.credentials.oneOf.0.headers.additionalProperties","typeLabel":"string"},"type":"object","title":"Headers","description":"HTTP headers for API requests (e.g., Authorization, X-API-Key).","uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.credentials.oneOf.0.headers","typeLabel":"Headers · object"}},"uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.credentials.oneOf.0","typeLabel":"HTTPAPIHeaderCredentials · object"},{"type":"null","description":"Optional HTTP headers for authenticated API endpoints.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.credentials.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.credentials","typeLabel":"HTTPAPIHeaderCredentials · object | null"},"http_method":{"type":"string","enum":["GET","POST"],"title":"Http Method","description":"HTTP method to use when calling the API.","default":"GET","uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.http_method","typeLabel":"enum\u003cstring>"},"request_body":{"oneOf":[{"type":"object","title":"Request Body","description":"Optional JSON body for POST requests.","additionalProperties":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.request_body.oneOf.0","typeLabel":"Request Body · object"},{"type":"null","title":"Request Body","description":"Optional JSON body for POST requests.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.request_body.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.request_body","typeLabel":"Request Body · object | null"},"items_path":{"type":"string","title":"Items Path","description":"Dot-notation path to the array of items in the JSON response. Examples: 'hits' for {hits: [...]}, 'data.items' for {data: {items: [...]}}. Leave empty if the response is a top-level array.","default":"","uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.items_path","typeLabel":"string"},"item_id_field":{"type":"string","title":"Item Id Field","description":"Defaults to 'id', as the sync does. Field name in each item used as a unique ID for deduplication. Examples: 'id', 'objectID', 'uuid'.","default":"id","uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.item_id_field","typeLabel":"string"},"item_modified_field":{"oneOf":[{"type":"string","title":"Item Modified Field","description":"Optional field name for a timestamp used for incremental sync. Supports ISO 8601 strings and Unix timestamps. Examples: 'updated_at', 'created_at', 'modified'.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.item_modified_field.oneOf.0","typeLabel":"string"},{"type":"null","title":"Item Modified Field","description":"Optional field name for a timestamp used for incremental sync. Supports ISO 8601 strings and Unix timestamps. Examples: 'updated_at', 'created_at', 'modified'.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.item_modified_field.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.item_modified_field","typeLabel":"string | null"},"response_content_type":{"type":"string","enum":["json","jsonl"],"title":"Response Content Type","description":"Response format: 'json' (default) or 'jsonl' (newline-delimited JSON).","default":"json","uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.response_content_type","typeLabel":"enum\u003cstring>"},"user_agent":{"type":"string","title":"User Agent","description":"User-Agent header for API requests.","default":"Mixpeek HTTP API Sync/1.0","uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.user_agent","typeLabel":"string"},"request_timeout":{"type":"integer","maximum":120,"minimum":5,"title":"Request Timeout","description":"HTTP request timeout in seconds.","default":30,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.9.request_timeout","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.9","typeLabel":"HTTPAPIConfig · object"},{"type":"object","title":"BoxConfig","description":"Box cloud content management and file sharing configuration.\n\nEnables Mixpeek to connect to Box for automated file ingestion and\nsynchronization. Supports enterprise-grade content management features\nincluding folder sync, metadata, versioning, and retention policies.\n\nAuthentication Methods:\n 1. OAuth 2.0 (for user-level access):\n - Standard OAuth flow with access/refresh tokens\n - Access scoped to the authorizing user's content\n\n 2. Client Credentials Grant (CCG) (RECOMMENDED for production):\n - Server-to-server without user interaction\n - Acts as service account or specific user\n - Requires admin authorization in Box Admin Console\n\n 3. JWT (for high-security enterprise):\n - RSA key pair for signing JWT assertions\n - No user interaction required\n - Highest security option\n\nRequirements:\n - Box Developer account with an application\n - Application authorized in Box Admin Console (for CCG/JWT)\n - Network connectivity to api.box.com\n\nUse Cases:\n - Sync enterprise document libraries\n - Ingest compliance and legal documents\n - Monitor collaboration folders for new content\n - Archive and search enterprise content","required":["credentials"],"example":{"credentials":{"client_id":"abc123def456","client_secret":"your-client-secret","enterprise_id":"12345678","type":"ccg"},"folder_id":"0","provider_type":"box"},"properties":{"credentials":{"oneOf":[{"type":"object","title":"BoxOAuthCredentials","description":"Credentials for Box OAuth 2.0 authentication.\n\nBox supports OAuth 2.0 with access and refresh tokens. The refresh token\nis used to automatically obtain new access tokens without user interaction.\n\nPrerequisites:\n - Create a Box application at https://developer.box.com\n - Configure OAuth 2.0 with the appropriate scopes\n - Complete the OAuth consent flow to obtain tokens\n\nSecurity:\n - client_secret, access_token, and refresh_token are secret credentials, redacted on read\n - Access tokens expire in ~60 minutes; refresh tokens used for renewal\n - Token refresh happens automatically during sync execution","required":["client_id","client_secret","access_token"],"properties":{"client_id":{"type":"string","title":"Client Id","description":"REQUIRED. Box application client ID. Found in: Box Developer Console > Your App > Configuration > OAuth 2.0 Credentials.","examples":["abc123def456ghi789"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.0.client_id","typeLabel":"string"},"client_secret":{"type":"string","title":"Client Secret","description":"REQUIRED. Box application client secret. SECURITY: Secret credential, redacted on read. Never log or expose. Found in: Box Developer Console > Your App > Configuration.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.0.client_secret","typeLabel":"string"},"access_token":{"type":"string","title":"Access Token","description":"REQUIRED. Box OAuth 2.0 access token. SECURITY: Encrypted at rest. Expires in ~60 minutes.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.0.access_token","typeLabel":"string"},"type":{"type":"string","const":"oauth","title":"Type","default":"oauth","uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.0.type","typeLabel":"string"},"refresh_token":{"oneOf":[{"type":"string","title":"Refresh Token","description":"Box OAuth 2.0 refresh token for automatic token renewal. Optional: the sync uses access_token directly, and Studio's Box form sends none. SECURITY: Encrypted at rest. Single-use; new one issued on each refresh.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.0.refresh_token.oneOf.0","typeLabel":"string"},{"type":"null","title":"Refresh Token","description":"Box OAuth 2.0 refresh token for automatic token renewal. Optional: the sync uses access_token directly, and Studio's Box form sends none. SECURITY: Encrypted at rest. Single-use; new one issued on each refresh.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.0.refresh_token.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.0.refresh_token","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.0","typeLabel":"BoxOAuthCredentials · object"},{"type":"object","title":"BoxCCGCredentials","description":"Credentials for Box Client Credentials Grant (CCG) authentication.\n\nCCG provides server-to-server authentication without user interaction.\nRecommended for enterprise and automated sync operations.\n\nPrerequisites:\n - Create a Box application with Server Authentication (Client Credentials Grant)\n - Authorize the application in the Box Admin Console\n - Optionally configure an enterprise or user ID to act as\n\nSecurity:\n - client_secret is a secret credential, redacted on read\n - No user tokens involved; app authenticates as itself or as a user/enterprise","required":["client_id","client_secret"],"properties":{"client_id":{"type":"string","title":"Client Id","description":"REQUIRED. Box application client ID from Developer Console.","examples":["abc123def456ghi789"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.1.client_id","typeLabel":"string"},"client_secret":{"type":"string","title":"Client Secret","description":"REQUIRED. Box application client secret. SECURITY: Secret credential, redacted on read. Never log or expose.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.1.client_secret","typeLabel":"string"},"type":{"type":"string","const":"ccg","title":"Type","default":"ccg","uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.1.type","typeLabel":"string"},"enterprise_id":{"oneOf":[{"type":"string","title":"Enterprise Id","description":"Enterprise ID to authenticate as. Required when using CCG to act as the enterprise (service account). Find in: Box Admin Console > Enterprise Settings.","example":"12345678","uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.1.enterprise_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Enterprise Id","description":"Enterprise ID to authenticate as. Required when using CCG to act as the enterprise (service account). Find in: Box Admin Console > Enterprise Settings.","example":"12345678","uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.1.enterprise_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.1.enterprise_id","typeLabel":"string | null"},"user_id":{"oneOf":[{"type":"string","title":"User Id","description":"User ID to authenticate as. Used when the app needs to act as a specific managed user. Mutually exclusive with enterprise_id for token acquisition.","example":"87654321","uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.1.user_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"User Id","description":"User ID to authenticate as. Used when the app needs to act as a specific managed user. Mutually exclusive with enterprise_id for token acquisition.","example":"87654321","uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.1.user_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.1.user_id","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.1","typeLabel":"BoxCCGCredentials · object"},{"type":"object","title":"BoxJWTCredentials","description":"Credentials for Box JWT (JSON Web Token) authentication.\n\nJWT provides server-to-server authentication using a public/private key pair.\nRecommended for enterprise integrations requiring high security.\n\nPrerequisites:\n - Create a Box application with Server Authentication (with JWT)\n - Generate a public/private key pair in the Developer Console\n - Authorize the application in the Box Admin Console\n - Download the JSON configuration file\n\nSecurity:\n - private_key is a secret credential, redacted on read\n - RSA key pair used for signing JWT assertions\n - No user interaction required","required":["client_id","client_secret","enterprise_id","jwt_key_id","private_key"],"properties":{"client_id":{"type":"string","title":"Client Id","description":"REQUIRED. Box application client ID.","examples":["abc123def456ghi789"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.2.client_id","typeLabel":"string"},"client_secret":{"type":"string","title":"Client Secret","description":"REQUIRED. Box application client secret. SECURITY: Secret credential, redacted on read. Never log or expose.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.2.client_secret","typeLabel":"string"},"enterprise_id":{"type":"string","title":"Enterprise Id","description":"REQUIRED. Box enterprise ID for JWT authentication. Find in: Box Admin Console > Enterprise Settings.","examples":["12345678"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.2.enterprise_id","typeLabel":"string"},"jwt_key_id":{"type":"string","title":"Jwt Key Id","description":"REQUIRED. Public key ID registered with Box. Found in the JSON config file as 'publicKeyID'.","examples":["abcdef12"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.2.jwt_key_id","typeLabel":"string"},"private_key":{"type":"string","title":"Private Key","description":"REQUIRED. PEM-encoded RSA private key for JWT signing. SECURITY: Secret credential, redacted on read. Never log or expose. Found in the JSON config file as 'privateKey'.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.2.private_key","typeLabel":"string"},"type":{"type":"string","const":"jwt","title":"Type","default":"jwt","uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.2.type","typeLabel":"string"},"private_key_passphrase":{"oneOf":[{"type":"string","title":"Private Key Passphrase","description":"Passphrase for the private key if it is encrypted. SECURITY: Secret credential, redacted on read. Never log or expose.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.2.private_key_passphrase.oneOf.0","typeLabel":"string"},{"type":"null","title":"Private Key Passphrase","description":"Passphrase for the private key if it is encrypted. SECURITY: Secret credential, redacted on read. Never log or expose.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.2.private_key_passphrase.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.2.private_key_passphrase","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials.oneOf.2","typeLabel":"BoxJWTCredentials · object"}],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.credentials","typeLabel":"BoxOAuthCredentials · object | BoxCCGCredentials · object | BoxJWTCredentials · object"},"provider_type":{"type":"string","const":"box","title":"Provider Type","default":"box","uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.provider_type","typeLabel":"string"},"folder_id":{"type":"string","title":"Folder Id","description":"Box folder ID to sync from. Default '0' is the root folder. Find folder ID: Open folder in Box web UI, copy the numeric ID from the URL. Example URL: https://app.box.com/folder/123456789 → folder_id='123456789'","default":"0","examples":["0","123456789","987654321"],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10.folder_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.10","typeLabel":"BoxConfig · object"},{"type":"object","title":"BrightDataConfig","description":"BrightData web data platform configuration for dataset and scraper syncs.\n\nEnables Mixpeek to collect data from BrightData's pre-built datasets\n(LinkedIn, Amazon, Google Maps, etc.) or custom web scrapers. Each sync\ntriggers a new dataset snapshot, polls until ready, then downloads and\ningests each row as a bucket object.\n\nAuthentication:\n - API token from BrightData dashboard\n\nRequirements:\n - Active BrightData subscription with Datasets or Web Scraper access\n - API token with appropriate dataset permissions\n - Network connectivity to api.brightdata.com\n\nUse Cases:\n - Ingest LinkedIn company/people datasets for lead generation\n - Monitor e-commerce pricing via Amazon product datasets\n - Collect Google Maps business data for location intelligence\n - Run custom web scrapers and process results as documents\n - Aggregate public social media data for trend analysis","required":["credentials"],"example":{"credentials":{"api_token":"your-brightdata-api-token","type":"api_token"},"default_output_format":"jsonl","provider_type":"brightdata"},"properties":{"credentials":{"properties":{"api_token":{"type":"string","title":"Api Token","description":"REQUIRED. BrightData API token. SECURITY: Encrypted at rest. Never log or expose. Find in: BrightData Dashboard > Account > API Token.","examples":["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.credentials.api_token","typeLabel":"string"},"type":{"type":"string","const":"api_token","title":"Type","default":"api_token","uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.credentials.type","typeLabel":"string"}},"type":"object","required":["api_token"],"title":"BrightDataCredentials","description":"REQUIRED. BrightData API token credentials.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.credentials","typeLabel":"BrightDataCredentials · object"},"provider_type":{"type":"string","const":"brightdata","title":"Provider Type","default":"brightdata","uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.provider_type","typeLabel":"string"},"customer_id":{"oneOf":[{"type":"string","title":"Customer Id","description":"NOT REQUIRED. BrightData customer ID (zone-level auth). Required when using zone-specific API access. Find in: BrightData Dashboard > your zone settings.","example":"hl_abc12345","uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.customer_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Customer Id","description":"NOT REQUIRED. BrightData customer ID (zone-level auth). Required when using zone-specific API access. Find in: BrightData Dashboard > your zone settings.","example":"hl_abc12345","uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.customer_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.customer_id","typeLabel":"string | null"},"default_output_format":{"type":"string","enum":["jsonl","json","csv","ndjson"],"title":"Default Output Format","description":"Output format for downloaded dataset results. 'jsonl' (default) streams one JSON object per line. 'json' returns a full JSON array. 'csv' returns comma-separated values. 'ndjson' is equivalent to jsonl.","default":"jsonl","uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.default_output_format","typeLabel":"enum\u003cstring>"},"country":{"oneOf":[{"type":"string","title":"Country","description":"NOT REQUIRED. ISO 3166-1 alpha-2 country code for geo-targeted data collection. When set, the dataset snapshot targets data from this country. Examples: 'us', 'gb', 'de', 'jp'.","example":"us","uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.country.oneOf.0","typeLabel":"string"},{"type":"null","title":"Country","description":"NOT REQUIRED. ISO 3166-1 alpha-2 country code for geo-targeted data collection. When set, the dataset snapshot targets data from this country. Examples: 'us', 'gb', 'de', 'jp'.","example":"us","uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.country.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.country","typeLabel":"string | null"},"inputs":{"oneOf":[{"type":"array","items":{"additionalProperties":true,"type":"object","uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.inputs.oneOf.0.items.[INDEX]","typeLabel":"object"},"title":"Inputs","description":"NOT REQUIRED. Default seed inputs for datasets that require input URLs or records (e.g. LinkedIn company profiles). Each item is a JSON object passed to the BrightData trigger API. Overridden per-call when inputs are supplied at sync time.","example":[{"url":"https://www.linkedin.com/company/google"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.inputs.oneOf.0","typeLabel":"Inputs · object[]"},{"type":"null","title":"Inputs","description":"NOT REQUIRED. Default seed inputs for datasets that require input URLs or records (e.g. LinkedIn company profiles). Each item is a JSON object passed to the BrightData trigger API. Overridden per-call when inputs are supplied at sync time.","example":[{"url":"https://www.linkedin.com/company/google"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.inputs.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.11.inputs","typeLabel":"Inputs · object[] | null"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.11","typeLabel":"BrightDataConfig · object"},{"type":"object","title":"BackblazeConfig","description":"Backblaze B2 Cloud Storage configuration.\n\nBackblaze B2 is an S3-compatible object storage service. This provider\nauto-discovers the regional S3 endpoint via the B2 authorization API,\nso users only need to provide their key ID and application key.\n\nAuthentication:\n - Application key ID + application key from Backblaze console\n\nRequirements:\n - Active Backblaze account with B2 Cloud Storage enabled\n - Application key with listBuckets, listFiles, and readFiles capabilities\n - (Optional) Restrict key to specific bucket for scoped access\n\nUse Cases:\n - Cold storage archive ingestion\n - Media file sync from Backblaze-hosted assets\n - Backup data processing\n - Cost-effective large-file storage sync","required":["credentials"],"example":{"credentials":{"application_key":"K005xxxxxxxxxxxxxxxxxxxxxxxxxxxx","key_id":"005870eff85b6c60000000001","type":"application_key"},"provider_type":"backblaze"},"properties":{"credentials":{"properties":{"key_id":{"type":"string","title":"Key Id","description":"REQUIRED. Backblaze B2 application key ID. Found in: Backblaze Console > App Keys > keyID column.","examples":["005870eff85b6c60000000001"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.12.credentials.key_id","typeLabel":"string"},"application_key":{"type":"string","title":"Application Key","description":"REQUIRED. Backblaze B2 application key (secret). SECURITY: Encrypted at rest. Shown only once when key is created. Found in: Backblaze Console > App Keys — copy immediately on creation.","examples":["K005xxxxxxxxxxxxxxxxxxxxxxxxxxxx"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.12.credentials.application_key","typeLabel":"string"},"type":{"type":"string","const":"application_key","title":"Type","default":"application_key","uniqueKey":"results.items.[INDEX].provider_config.oneOf.12.credentials.type","typeLabel":"string"}},"type":"object","required":["key_id","application_key"],"title":"BackblazeCredentials","description":"REQUIRED. Backblaze B2 application key credentials.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.12.credentials","typeLabel":"BackblazeCredentials · object"},"provider_type":{"type":"string","const":"backblaze","title":"Provider Type","default":"backblaze","uniqueKey":"results.items.[INDEX].provider_config.oneOf.12.provider_type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.12","typeLabel":"BackblazeConfig · object"},{"type":"object","title":"MuxConfig","description":"Mux video infrastructure platform configuration.\n\nMux is a video API platform that provides video hosting, encoding,\nand streaming. This provider syncs video assets from a Mux account\ninto Mixpeek for processing and analysis.\n\nAuthentication:\n - Access token ID + secret from Mux dashboard (HTTP Basic Auth)\n\nRequirements:\n - Active Mux account with video assets\n - Access token with Mux Video read permissions\n - Assets must have playback IDs for download\n\nUse Cases:\n - Video library ingestion and analysis\n - Media asset processing pipelines\n - Content moderation and classification\n - Video search and discovery","required":["credentials"],"example":{"credentials":{"access_token_id":"abc123def456","access_token_secret":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","type":"access_token"},"provider_type":"mux"},"properties":{"credentials":{"properties":{"access_token_id":{"type":"string","title":"Access Token Id","description":"REQUIRED. Mux access token ID. Found in: Mux Dashboard > Settings > Access Tokens.","examples":["abc123def456"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.13.credentials.access_token_id","typeLabel":"string"},"access_token_secret":{"type":"string","title":"Access Token Secret","description":"REQUIRED. Mux access token secret. SECURITY: Encrypted at rest. Shown only once when created. Found in: Mux Dashboard > Settings > Access Tokens — copy immediately on creation.","examples":["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.13.credentials.access_token_secret","typeLabel":"string"},"type":{"type":"string","const":"access_token","title":"Type","default":"access_token","uniqueKey":"results.items.[INDEX].provider_config.oneOf.13.credentials.type","typeLabel":"string"},"webhook_secret":{"oneOf":[{"type":"string","title":"Webhook Secret","description":"NOT REQUIRED. Mux webhook signing secret for verifying inbound webhook events (e.g. video.asset.deleted, which cascades deletes to Mixpeek bucket objects synced from this connection). Set this to enable cascade deletion when assets are removed from Mux. SECURITY: Encrypted at rest. Find in: Mux Dashboard > Settings > Webhooks > {webhook} > Signing Secret. After saving, register the URL https://api.mixpeek.com/v1/webhooks/mux/{connection_id} in your Mux dashboard.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.13.credentials.webhook_secret.oneOf.0","typeLabel":"string"},{"type":"null","title":"Webhook Secret","description":"NOT REQUIRED. Mux webhook signing secret for verifying inbound webhook events (e.g. video.asset.deleted, which cascades deletes to Mixpeek bucket objects synced from this connection). Set this to enable cascade deletion when assets are removed from Mux. SECURITY: Encrypted at rest. Find in: Mux Dashboard > Settings > Webhooks > {webhook} > Signing Secret. After saving, register the URL https://api.mixpeek.com/v1/webhooks/mux/{connection_id} in your Mux dashboard.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.13.credentials.webhook_secret.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.13.credentials.webhook_secret","typeLabel":"string | null"}},"type":"object","required":["access_token_id","access_token_secret"],"title":"MuxCredentials","description":"REQUIRED. Mux access token credentials.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.13.credentials","typeLabel":"MuxCredentials · object"},"provider_type":{"type":"string","const":"mux","title":"Provider Type","default":"mux","uniqueKey":"results.items.[INDEX].provider_config.oneOf.13.provider_type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.13","typeLabel":"MuxConfig · object"},{"type":"object","title":"IconikConfig","description":"Iconik DAM platform configuration.\n\nIconik is a cloud-native DAM (Digital Asset Management) platform.\nThis provider syncs video/image/audio assets from an Iconik account\ninto Mixpeek for processing and analysis.\n\nAuthentication:\n - App-ID + Auth-Token (HTTP headers)\n\nRequirements:\n - Active Iconik account with API application configured\n - Auth token with asset read permissions\n\nUse Cases:\n - Video ad library ingestion and analysis\n - Creative asset search and discovery\n - Talent/cast identification across ad library","required":["credentials"],"example":{"credentials":{"app_id":"e0f0ec84-...","auth_token":"eyJhbGciOi...","type":"app_token"},"provider_type":"iconik"},"properties":{"credentials":{"properties":{"app_id":{"type":"string","title":"App Id","description":"REQUIRED. Iconik application ID. Found in: Iconik Admin > Settings > API Applications.","examples":["e0f0ec84-4d63-11f1-99fa-b221c0ff30c8"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.credentials.app_id","typeLabel":"string"},"auth_token":{"type":"string","title":"Auth Token","description":"REQUIRED. Iconik auth token (JWT or API token). SECURITY: Encrypted at rest. Found in: Iconik Admin > Settings > API Applications > Token.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.credentials.auth_token","typeLabel":"string"},"type":{"type":"string","const":"app_token","title":"Type","default":"app_token","uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.credentials.type","typeLabel":"string"},"webhook_secret":{"oneOf":[{"type":"string","title":"Webhook Secret","description":"NOT REQUIRED. Webhook secret for verifying inbound Iconik webhook events. Set this to enable webhook-driven sync (asset create/update/delete). SECURITY: Encrypted at rest.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.credentials.webhook_secret.oneOf.0","typeLabel":"string"},{"type":"null","title":"Webhook Secret","description":"NOT REQUIRED. Webhook secret for verifying inbound Iconik webhook events. Set this to enable webhook-driven sync (asset create/update/delete). SECURITY: Encrypted at rest.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.credentials.webhook_secret.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.credentials.webhook_secret","typeLabel":"string | null"}},"type":"object","required":["app_id","auth_token"],"title":"IconikCredentials","description":"REQUIRED. Iconik App-ID + Auth-Token credentials.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.credentials","typeLabel":"IconikCredentials · object"},"provider_type":{"type":"string","const":"iconik","title":"Provider Type","default":"iconik","uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.provider_type","typeLabel":"string"},"base_url":{"oneOf":[{"type":"string","title":"Base Url","description":"Iconik API base URL, https://app.iconik.io by default. Override for on-premise Iconik installations.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.base_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Base Url","description":"Iconik API base URL, https://app.iconik.io by default. Override for on-premise Iconik installations.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.base_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.base_url","typeLabel":"string | null"},"metadata_view_id":{"oneOf":[{"type":"string","title":"Metadata View Id","description":"Iconik metadata view ID for fetching custom metadata fields. Found in: Iconik Admin > Metadata > Views. Set to 'none' to skip metadata view fetches entirely.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.metadata_view_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Metadata View Id","description":"Iconik metadata view ID for fetching custom metadata fields. Found in: Iconik Admin > Metadata > Views. Set to 'none' to skip metadata view fetches entirely.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.metadata_view_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.metadata_view_id","typeLabel":"string | null"},"rate_limit_rps":{"oneOf":[{"type":"number","title":"Rate Limit Rps","description":"Max requests per second to the Iconik API (shared across all sync shards).","uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.rate_limit_rps.oneOf.0","typeLabel":"number"},{"type":"null","title":"Rate Limit Rps","description":"Max requests per second to the Iconik API (shared across all sync shards).","uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.rate_limit_rps.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.rate_limit_rps","typeLabel":"number | null"},"rate_limit_redis_url":{"oneOf":[{"type":"string","title":"Rate Limit Redis Url","description":"Redis URL for distributed rate limiting across workers.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.rate_limit_redis_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Rate Limit Redis Url","description":"Redis URL for distributed rate limiting across workers.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.rate_limit_redis_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.14.rate_limit_redis_url","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.14","typeLabel":"IconikConfig · object"},{"type":"object","title":"EmailConfig","description":"Inbound email connector configuration (push-based).\n\nCustomers receive a dedicated inbound email address per connection.\nEmails forwarded to that address are parsed (MIME), attachments are\nextracted as blobs, and the whole message becomes a bucket object.\n\nAuthentication:\n - Inbound webhook verified via HMAC-SHA256 signing secret\n\nRequirements:\n - External inbound email service (SES Inbound / Postmark / CloudMailin)\n configured to POST parsed emails to the webhook URL\n\nUse Cases:\n - Compliance document intake (legal, healthcare)\n - Customer support email ingestion\n - Secure document forwarding pipelines\n - Media collection via email attachments","example":{"allowed_senders":["*@lawfirm.com","paralegal@partner.com"],"credentials":{"type":"webhook_secret","webhook_secret":""},"provider_type":"email","store_raw_eml":true},"properties":{"provider_type":{"type":"string","const":"email","title":"Provider Type","default":"email","uniqueKey":"results.items.[INDEX].provider_config.oneOf.15.provider_type","typeLabel":"string"},"credentials":{"properties":{"type":{"type":"string","const":"webhook_secret","title":"Type","default":"webhook_secret","uniqueKey":"results.items.[INDEX].provider_config.oneOf.15.credentials.type","typeLabel":"string"},"webhook_secret":{"type":"string","title":"Webhook Secret","description":"Shared secret for verifying inbound email webhook signatures. Auto-generated on connection creation if left empty. SECURITY: Secret credential, redacted on read. Never log or expose.","default":"","uniqueKey":"results.items.[INDEX].provider_config.oneOf.15.credentials.webhook_secret","typeLabel":"string"}},"type":"object","title":"EmailCredentials","description":"Webhook signing credentials (auto-generated if omitted).","uniqueKey":"results.items.[INDEX].provider_config.oneOf.15.credentials","typeLabel":"EmailCredentials · object"},"inbound_address":{"oneOf":[{"type":"string","title":"Inbound Address","description":"System-assigned inbound email address. Auto-provisioned on connection creation. Read-only.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.15.inbound_address.oneOf.0","typeLabel":"string"},{"type":"null","title":"Inbound Address","description":"System-assigned inbound email address. Auto-provisioned on connection creation. Read-only.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.15.inbound_address.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.15.inbound_address","typeLabel":"string | null"},"allowed_senders":{"items":{"type":"string","uniqueKey":"results.items.[INDEX].provider_config.oneOf.15.allowed_senders.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Allowed Senders","description":"Sender allowlist. Emails from senders not matching this list are rejected. Supports exact addresses (user@company.com) and domain wildcards (*@company.com). Empty list = accept all senders.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.15.allowed_senders","typeLabel":"string[]"},"store_raw_eml":{"type":"boolean","title":"Store Raw Eml","description":"Store the raw .eml file as an additional blob for chain of custody.","default":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.15.store_raw_eml","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.15","typeLabel":"EmailConfig · object"},{"type":"object","title":"GCSConfig","description":"Google Cloud Storage (native SDK) storage provider configuration.\n\nReads objects from a GCS bucket using the native ``google-cloud-storage``\nSDK authenticated with a service-account JSON key. This is the documented,\ndiscoverable path (Storage Object Viewer + a JSON key) and does not require\nminting GCS HMAC interop keys or routing through the S3-compatible XML API.\n\nAuthentication:\n - Service account JSON key (from ``storage.Client.from_service_account_info``)\n\nRequirements:\n - Active GCP project with a bucket to read\n - Service account granted read access (Storage Object Viewer) on the bucket\n - A JSON key downloaded for that service account\n\nUse Cases:\n - Ingest media/data-lake objects from GCS buckets\n - Sync marketing/creative assets stored in Google Cloud\n - Unified search across GCS + other sources","required":["credentials","bucket"],"example":{"bucket":"my-media-bucket","credentials":{"service_account_json":{"client_email":"mixpeek-sync@my-project.iam.gserviceaccount.com","client_id":"123456789012345678901","private_key":"-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n","private_key_id":"abc123","project_id":"my-project","token_uri":"https://oauth2.googleapis.com/token","type":"service_account"},"type":"service_account"},"prefix":"marketing/videos/","provider_type":"gcs"},"properties":{"credentials":{"properties":{"service_account_json":{"additionalProperties":true,"type":"object","title":"Service Account Json","description":"REQUIRED. The full service-account JSON key object (the contents of the downloaded key file). Must include at least 'client_email', 'private_key', and 'project_id'. SECURITY: This is a secret credential, redacted on read. Never log or expose it.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.16.credentials.service_account_json","typeLabel":"Service Account Json · object"},"type":{"type":"string","const":"service_account","title":"Type","default":"service_account","uniqueKey":"results.items.[INDEX].provider_config.oneOf.16.credentials.type","typeLabel":"string"}},"type":"object","required":["service_account_json"],"title":"GCSServiceAccountKeyCredentials","description":"REQUIRED. GCS service-account JSON key credentials.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.16.credentials","typeLabel":"GCSServiceAccountKeyCredentials · object"},"bucket":{"type":"string","title":"Bucket","description":"REQUIRED. Name of the GCS bucket to sync from (no 'gs://' prefix). The service account must have read access to this bucket.","examples":["my-media-bucket","company-data-lake"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.16.bucket","typeLabel":"string"},"provider_type":{"type":"string","const":"gcs","title":"Provider Type","default":"gcs","uniqueKey":"results.items.[INDEX].provider_config.oneOf.16.provider_type","typeLabel":"string"},"prefix":{"oneOf":[{"type":"string","title":"Prefix","description":"NOT REQUIRED. Object key prefix to scope the sync to a folder within the bucket (e.g. 'marketing/videos/'). When set, it is prepended to any requested list path.","example":"marketing/videos/","uniqueKey":"results.items.[INDEX].provider_config.oneOf.16.prefix.oneOf.0","typeLabel":"string"},{"type":"null","title":"Prefix","description":"NOT REQUIRED. Object key prefix to scope the sync to a folder within the bucket (e.g. 'marketing/videos/'). When set, it is prepended to any requested list path.","example":"marketing/videos/","uniqueKey":"results.items.[INDEX].provider_config.oneOf.16.prefix.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.16.prefix","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.16","typeLabel":"GCSConfig · object"},{"type":"object","title":"AzureBlobConfig","description":"Azure Blob Storage (native SDK) storage provider configuration.\n\nReads objects from an Azure Blob container using the native\n``azure-storage-blob`` SDK. Azure Blob has no S3-compatible surface, so this\nnative connector is the only supported path (there is no HMAC/S3 interim like\nGCS has).\n\nAuthentication:\n - Storage account key (``account_key``), or\n - Azure managed identity (``managed_identity``) via DefaultAzureCredential\n\nRequirements:\n - An Azure Storage account with a blob container to read\n - Read access on the container (account key, or the 'Storage Blob Data\n Reader' role for managed identity)\n\nUse Cases:\n - Ingest media/data-lake objects from Azure Blob containers\n - Sync marketing/creative assets stored in Azure\n - Unified search across Azure + other sources","required":["credentials","container"],"example":{"container":"media","credentials":{"account_key":"base64accountkey==","account_name":"mycompanymedia","type":"account_key"},"prefix":"marketing/videos/","provider_type":"azure_blob"},"properties":{"credentials":{"oneOf":[{"type":"object","title":"AzureStorageAccountKeyCredentials","description":"Azure Blob Storage account-key credentials.\n\nThe classic shared-key auth: the storage account name plus one of its two\naccount keys. The provider builds the client via\n``BlobServiceClient(account_url=\"https://{account_name}.blob.core.windows.net\",\ncredential=account_key)``.\n\nPrerequisites:\n - An Azure Storage account with the target container\n - One of the account's access keys (Portal > Storage account >\n Security + networking > Access keys)\n\nSecurity:\n - ``account_key`` is in the connection client's SENSITIVE_KEYS redaction\n set, so it is masked on read.\n - Prefer managed identity in production; rotate account keys regularly.","required":["account_name","account_key"],"properties":{"account_name":{"type":"string","minLength":1,"title":"Account Name","description":"REQUIRED. Azure Storage account name (the '{account_name}' in https://{account_name}.blob.core.windows.net). Lowercase alphanumeric, 3-24 chars.","examples":["mycompanymedia","prodassets"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.credentials.oneOf.0.account_name","typeLabel":"string"},"account_key":{"type":"string","minLength":1,"title":"Account Key","description":"REQUIRED. One of the storage account's access keys. SECURITY: This is a secret credential, redacted on read. Never log or expose this value. Obtain from: Azure Portal > Storage account > Access keys (base64 string).","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.credentials.oneOf.0.account_key","typeLabel":"string"},"type":{"type":"string","const":"account_key","title":"Type","default":"account_key","uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.credentials.oneOf.0.type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.credentials.oneOf.0","typeLabel":"AzureStorageAccountKeyCredentials · object"},{"type":"object","title":"AzureManagedIdentityCredentials","description":"Azure managed-identity credentials (RECOMMENDED for production).\n\nUses ``azure.identity.DefaultAzureCredential`` so the connector authenticates\nas the workload's Azure identity (system- or user-assigned managed identity,\nworkload identity, or the ambient environment credential chain). No secret is\nstored on the connection.\n\nPrerequisites:\n - The Mixpeek workload runs with an Azure identity\n - That identity is granted the 'Storage Blob Data Reader' role on the\n target container or storage account\n\nSecurity:\n - No long-lived secret is stored; access is controlled by Azure RBAC and\n can be revoked centrally.\n - ``client_id`` is only needed to disambiguate a specific user-assigned\n managed identity when several are available.","properties":{"type":{"type":"string","const":"managed_identity","title":"Type","default":"managed_identity","uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.credentials.oneOf.1.type","typeLabel":"string"},"client_id":{"oneOf":[{"type":"string","title":"Client Id","description":"NOT REQUIRED. Client ID of a specific user-assigned managed identity. Provide this only when the workload has more than one user-assigned identity and you must select one. When omitted, DefaultAzureCredential resolves the ambient identity via its normal chain. Format: UUID.","example":"87654321-4321-4321-4321-cba987654321","uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.credentials.oneOf.1.client_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Client Id","description":"NOT REQUIRED. Client ID of a specific user-assigned managed identity. Provide this only when the workload has more than one user-assigned identity and you must select one. When omitted, DefaultAzureCredential resolves the ambient identity via its normal chain. Format: UUID.","example":"87654321-4321-4321-4321-cba987654321","uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.credentials.oneOf.1.client_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.credentials.oneOf.1.client_id","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.credentials.oneOf.1","typeLabel":"AzureManagedIdentityCredentials · object"}],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.credentials","typeLabel":"AzureStorageAccountKeyCredentials · object | AzureManagedIdentityCredentials · object"},"container":{"type":"string","title":"Container","description":"REQUIRED. Name of the Azure Blob container to sync from. The identity or key must have read access to this container.","examples":["media","data-lake"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.container","typeLabel":"string"},"provider_type":{"type":"string","const":"azure_blob","title":"Provider Type","default":"azure_blob","uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.provider_type","typeLabel":"string"},"account_name":{"oneOf":[{"type":"string","title":"Account Name","description":"Storage account name (the '{account_name}' in https://{account_name}.blob.core.windows.net). REQUIRED for 'managed_identity' credentials, which carry no account name of their own. For 'account_key' credentials it is taken from the credentials and this field may be omitted.","example":"mycompanymedia","uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.account_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Account Name","description":"Storage account name (the '{account_name}' in https://{account_name}.blob.core.windows.net). REQUIRED for 'managed_identity' credentials, which carry no account name of their own. For 'account_key' credentials it is taken from the credentials and this field may be omitted.","example":"mycompanymedia","uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.account_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.account_name","typeLabel":"string | null"},"prefix":{"oneOf":[{"type":"string","title":"Prefix","description":"NOT REQUIRED. Blob name prefix to scope the sync to a folder within the container (e.g. 'marketing/videos/'). When set, it is prepended to any requested list path.","example":"marketing/videos/","uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.prefix.oneOf.0","typeLabel":"string"},{"type":"null","title":"Prefix","description":"NOT REQUIRED. Blob name prefix to scope the sync to a folder within the container (e.g. 'marketing/videos/'). When set, it is prepended to any requested list path.","example":"marketing/videos/","uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.prefix.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.17.prefix","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.17","typeLabel":"AzureBlobConfig · object"},{"type":"object","title":"RTSPConfig","description":"Live RTSP stream configuration. source_path = the stream path.\n\nOne connection is one camera or encoder endpoint. The stream is cut into\nfixed-length segments and each completed segment becomes one object.\n\nWHAT LANDS IN THE BUCKET. A saved retriever, selected on the bucket sync\nrather than here, runs per segment and its outputs are what get persisted.\nRetrievers are namespace-scoped and a connection is organization-scoped, so\nthe retriever cannot live on this model without pinning one org-level\nconnection to a single namespace.\n\nCAPTURE IS WINDOWED. Each sync run opens the stream, captures\n`segment_seconds * segments_per_run` seconds, and closes it. Whatever the\ncamera shows between runs is not captured. That makes this a sampler, and\na config that samples 60 seconds out of every 300 should say so to whoever\nreads it back.","required":["url"],"example":{"provider_type":"rtsp","segment_seconds":30,"transport":"tcp","url":"rtsp://camera.example.com:554/stream1"},"properties":{"url":{"type":"string","title":"Url","description":"REQUIRED. RTSP endpoint, for example rtsp://camera.example.com:554/stream1. Must use the rtsp:// or rtsps:// scheme. Must NOT embed credentials; supply those in `credentials` so the URL stays safe to log and display.","examples":["rtsp://camera.example.com:554/stream1","rtsps://nvr.example.com:322/cam/2"],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.url","typeLabel":"string"},"provider_type":{"type":"string","const":"rtsp","title":"Provider Type","default":"rtsp","uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.provider_type","typeLabel":"string"},"credentials":{"oneOf":[{"type":"object","title":"RTSPBasicCredentials","description":"NOT REQUIRED. Basic-auth credentials for a protected stream. Omit for an open endpoint.","required":["username","password"],"properties":{"username":{"type":"string","minLength":1,"title":"Username","description":"REQUIRED. RTSP username.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.credentials.oneOf.0.username","typeLabel":"string"},"password":{"type":"string","minLength":1,"title":"Password","description":"REQUIRED. RTSP password. Secret credential, redacted on read. Never log or expose.","isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.credentials.oneOf.0.password","typeLabel":"string"},"type":{"type":"string","const":"basic","title":"Type","default":"basic","uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.credentials.oneOf.0.type","typeLabel":"string"}},"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.credentials.oneOf.0","typeLabel":"RTSPBasicCredentials · object"},{"type":"null","description":"NOT REQUIRED. Basic-auth credentials for a protected stream. Omit for an open endpoint.","uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.credentials.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.credentials","typeLabel":"RTSPBasicCredentials · object | null"},"transport":{"type":"string","enum":["tcp","udp"],"title":"Transport","description":"RTP transport. Defaults to tcp, which is interleaved over the RTSP control connection and survives NAT and packet loss without dropping frames. Choose udp only when the camera does not implement interleaved mode; udp trades reliability for a little latency.","default":"tcp","uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.transport","typeLabel":"enum\u003cstring>"},"segment_seconds":{"type":"integer","maximum":300,"minimum":5,"title":"Segment Seconds","description":"Length of each captured segment in seconds. One segment is one object and one retriever invocation, so this sets the granularity of what lands in the bucket and how often the per-segment pipeline runs. Default 30. APPROXIMATE, NOT EXACT: cuts land on keyframes, so a camera sending a keyframe every 10 seconds cannot produce 5 second segments. Measured against a live camera, a request for 6 gave 6.0/6.0/6.0/5.2 and a request for 8 gave 8.8/9.0/6.2. Size downstream limits against the request plus the camera's keyframe interval. WHAT IT COSTS: shorter is not cheaper. Capture overhead was measured at 9.4 seconds fixed per run and effectively zero per segment, and capture uses stream copy so more segments does not mean more keyframes or more bytes. What shortening buys is latency, roughly segment_seconds plus 10 seconds to the first result. What it costs is downstream: each segment is one more object write and one more retriever invocation, so halving the length doubles the invocation count for the same footage.","default":30,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.segment_seconds","typeLabel":"integer"},"segments_per_run":{"type":"integer","maximum":20,"minimum":1,"title":"Segments Per Run","description":"How many consecutive segments to capture per sync run. Total capture per run is segment_seconds * segments_per_run and a run holds the stream open for that whole window, so keep the product below the sync's polling interval or runs overlap. COVERAGE is (segment_seconds * segments_per_run) / polling_interval, so this field and segment_seconds raise it EQUALLY: 30s x 1 on a 300s interval and 15s x 2 on the same interval are both 10 percent. Only the product matters for how much of the stream you keep. WHICH ONE TO RAISE is decided downstream, not here. Each segment is one more object write and one more gate invocation, so 270s x 1 and 30s x 9 give the same 90 percent coverage for one invocation instead of nine. Prefer longer segments when the per-segment pipeline costs anything, and raise this instead when you need finer granularity, because dedup and gating decide per segment.","default":1,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.segments_per_run","typeLabel":"integer"},"connect_timeout_seconds":{"type":"integer","maximum":120,"minimum":5,"title":"Connect Timeout Seconds","description":"How long to wait for the stream to start delivering before treating the endpoint as unreachable. Applies to connection tests and to the start of each capture.","default":15,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.connect_timeout_seconds","typeLabel":"integer"},"scene_change_threshold":{"oneOf":[{"type":"integer","title":"Scene Change Threshold","description":"NOT REQUIRED. Drop a segment whose scene has not changed from the previous one. Omit it and every captured segment is published. The value is a Hamming distance over a 64-bit perceptual hash of each segment's first frame: a segment is DROPPED when its distance from the previous KEPT segment is at or below this number. 0 means drop only pixel-identical scenes; 5 is the platform's existing default elsewhere for 'the same frame modulo compression noise'; higher collapses more aggressively. WHY IT IS SEPARATE FROM gate_inference_name: this needs no model and no GPU. It is a few milliseconds of CPU per segment, so it runs FIRST and a segment it drops never reaches the gate at all. On an overnight camera that is the difference between paying inference on every segment and paying it on the ones where something happened.","maximum":64,"minimum":0,"example":5,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.scene_change_threshold.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Scene Change Threshold","description":"NOT REQUIRED. Drop a segment whose scene has not changed from the previous one. Omit it and every captured segment is published. The value is a Hamming distance over a 64-bit perceptual hash of each segment's first frame: a segment is DROPPED when its distance from the previous KEPT segment is at or below this number. 0 means drop only pixel-identical scenes; 5 is the platform's existing default elsewhere for 'the same frame modulo compression noise'; higher collapses more aggressively. WHY IT IS SEPARATE FROM gate_inference_name: this needs no model and no GPU. It is a few milliseconds of CPU per segment, so it runs FIRST and a segment it drops never reaches the gate at all. On an overnight camera that is the difference between paying inference on every segment and paying it on the ones where something happened.","example":5,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.scene_change_threshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.scene_change_threshold","typeLabel":"integer | null"},"gate_inference_name":{"oneOf":[{"type":"string","title":"Gate Inference Name","description":"NOT REQUIRED. Name of a real-time inference plugin to run on each captured segment before it is published. The plugin decides whether the segment is worth keeping, so an unchanging camera does not pay full extraction on footage that did not change. Omit it and every captured segment is published. The plugin is a pure function: segment in, verdict out. It returns `keep` (bool) and may return any additional fields, which are attached to the object for schema mapping. PLUGIN VS RETRIEVER: use `gate_retriever_id` instead when the decision is 'does this segment resemble what I care about', because that is a saved retriever you can read and edit per camera rather than a plugin you must deploy. Use a plugin when the decision is a pure computation over the pixels, like motion or a frame diff. The one thing a retriever still cannot do is run with NO collections: its document stream starts empty, so it returns success over zero documents and never runs its stages. See research/streaming-ingest/RTSP-INGEST-DESIGN.md.","example":"scene_change_gate_v1","uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_inference_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Gate Inference Name","description":"NOT REQUIRED. Name of a real-time inference plugin to run on each captured segment before it is published. The plugin decides whether the segment is worth keeping, so an unchanging camera does not pay full extraction on footage that did not change. Omit it and every captured segment is published. The plugin is a pure function: segment in, verdict out. It returns `keep` (bool) and may return any additional fields, which are attached to the object for schema mapping. PLUGIN VS RETRIEVER: use `gate_retriever_id` instead when the decision is 'does this segment resemble what I care about', because that is a saved retriever you can read and edit per camera rather than a plugin you must deploy. Use a plugin when the decision is a pure computation over the pixels, like motion or a frame diff. The one thing a retriever still cannot do is run with NO collections: its document stream starts empty, so it returns success over zero documents and never runs its stages. See research/streaming-ingest/RTSP-INGEST-DESIGN.md.","example":"scene_change_gate_v1","uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_inference_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_inference_name","typeLabel":"string | null"},"gate_retriever_id":{"oneOf":[{"type":"string","title":"Gate Retriever Id","description":"NOT REQUIRED, and mutually exclusive with `gate_inference_name`. Id of a SAVED RETRIEVER to run on each captured segment before it is published. The segment is passed as the retriever's query content, so the question it answers is 'does this segment resemble anything in the collections this retriever searches'. Keep the ones that match; drop the rest. WHY THIS RATHER THAN A PLUGIN: the policy becomes an object the customer can read, edit and version per camera, instead of a plugin that needs a deploy to change. A loading dock and a server room want different collections and different thresholds. COST: a retriever query is an embedding plus a vector search PER SEGMENT, against a few milliseconds of CPU for `scene_change_threshold`. Set that first so a segment it drops never reaches this.","example":"ret_31bd0a81720dd9","uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_retriever_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Gate Retriever Id","description":"NOT REQUIRED, and mutually exclusive with `gate_inference_name`. Id of a SAVED RETRIEVER to run on each captured segment before it is published. The segment is passed as the retriever's query content, so the question it answers is 'does this segment resemble anything in the collections this retriever searches'. Keep the ones that match; drop the rest. WHY THIS RATHER THAN A PLUGIN: the policy becomes an object the customer can read, edit and version per camera, instead of a plugin that needs a deploy to change. A loading dock and a server room want different collections and different thresholds. COST: a retriever query is an embedding plus a vector search PER SEGMENT, against a few milliseconds of CPU for `scene_change_threshold`. Set that first so a segment it drops never reaches this.","example":"ret_31bd0a81720dd9","uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_retriever_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_retriever_id","typeLabel":"string | null"},"gate_retriever_min_score":{"oneOf":[{"type":"number","title":"Gate Retriever Min Score","description":"Only meaningful with `gate_retriever_id`. Keep the segment when the retriever's top result scores at or above this. Leave it unset to keep the segment whenever the retriever returns ANY result, which is the right default for a retriever whose stages already filter. A threshold here is a second filter on top of whatever the retriever itself does, not a replacement for it.","maximum":1,"minimum":0,"example":0.35,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_retriever_min_score.oneOf.0","typeLabel":"number"},{"type":"null","title":"Gate Retriever Min Score","description":"Only meaningful with `gate_retriever_id`. Keep the segment when the retriever's top result scores at or above this. Leave it unset to keep the segment whenever the retriever returns ANY result, which is the right default for a retriever whose stages already filter. A threshold here is a second filter on top of whatever the retriever itself does, not a replacement for it.","example":0.35,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_retriever_min_score.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_retriever_min_score","typeLabel":"number | null"},"gate_output_stage":{"oneOf":[{"type":"string","title":"Gate Output Stage","description":"Gate on a NAMED STAGE OUTPUT instead of the search result set, so a YOLO or dedup retriever can gate. Names the stage whose output carries the verdict (a count, a hash distance, a boolean). Requires gate_retriever_id (the stage belongs to that retriever) plus gate_output_field and gate_output_threshold. Mutually exclusive with gate_retriever_min_score, which reads the result set instead. An absent stage or field is a gate FAILURE (gate_on_error), never a drop.","example":"count_faces","uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_output_stage.oneOf.0","typeLabel":"string"},{"type":"null","title":"Gate Output Stage","description":"Gate on a NAMED STAGE OUTPUT instead of the search result set, so a YOLO or dedup retriever can gate. Names the stage whose output carries the verdict (a count, a hash distance, a boolean). Requires gate_retriever_id (the stage belongs to that retriever) plus gate_output_field and gate_output_threshold. Mutually exclusive with gate_retriever_min_score, which reads the result set instead. An absent stage or field is a gate FAILURE (gate_on_error), never a drop.","example":"count_faces","uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_output_stage.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_output_stage","typeLabel":"string | null"},"gate_output_field":{"oneOf":[{"type":"string","title":"Gate Output Field","description":"The key in the named stage's output holding the verdict value (for example face_count, hash_distance). Required when gate_output_stage is set.","example":"face_count","uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_output_field.oneOf.0","typeLabel":"string"},{"type":"null","title":"Gate Output Field","description":"The key in the named stage's output holding the verdict value (for example face_count, hash_distance). Required when gate_output_stage is set.","example":"face_count","uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_output_field.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_output_field","typeLabel":"string | null"},"gate_output_op":{"type":"string","enum":["gte","lte","gt","lt","eq"],"title":"Gate Output Op","description":"How to compare the stage output against gate_output_threshold; the result IS keep/drop. gte for a count (keep when face_count >= N). gt for a dedup distance (keep when the scene changed, i.e. distance > N; a near-duplicate with a small distance is dropped). The direction is explicit so dedup versus detection is a config choice, not baked in.","default":"gte","uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_output_op","typeLabel":"enum\u003cstring>"},"gate_output_threshold":{"oneOf":[{"type":"number","title":"Gate Output Threshold","description":"The value the stage output is compared against. Required when gate_output_stage is set.","example":2,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_output_threshold.oneOf.0","typeLabel":"number"},{"type":"null","title":"Gate Output Threshold","description":"The value the stage output is compared against. Required when gate_output_stage is set.","example":2,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_output_threshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_output_threshold","typeLabel":"number | null"},"gate_on_error":{"type":"string","enum":["publish","drop"],"title":"Gate On Error","description":"What to do with a segment when the gate itself fails: the plugin is down, times out, or returns something unreadable. Defaults to publish, so a broken gate costs extraction rather than footage. Choose drop only when storing an unjudged segment is worse than losing it, which is unusual: a dropped segment of a live stream is gone, and the moment it covered cannot be recaptured.","default":"publish","uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_on_error","typeLabel":"enum\u003cstring>"},"gate_timeout_seconds":{"type":"integer","maximum":300,"minimum":1,"title":"Gate Timeout Seconds","description":"How long to wait for the gate's verdict on one segment. On timeout the segment takes the gate_on_error path. Keep it well below segment_seconds * segments_per_run or the gate becomes the bottleneck and runs start overlapping.","default":30,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18.gate_timeout_seconds","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.18","typeLabel":"RTSPConfig · object"},{"type":"object","title":"Provider Config","description":"REQUIRED. Provider-specific configuration payload including credentials. Type depends on provider_type (GoogleDriveConfig, S3Config, etc.). SECURITY: Credentials never appear in API responses or logs; a read returns credentials with only its type. See provider_configs.py for detailed schemas.","additionalProperties":true,"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config.oneOf.19","typeLabel":"Provider Config · object"}],"isRequired":true,"uniqueKey":"results.items.[INDEX].provider_config","typeLabel":"GoogleDriveConfig · object | S3Config · object | SnowflakeConfig · object | SharePointConfig · object | TigrisConfig · object | PostgreSQLConfig · object | InstagramConfig · object | TikTokConfig · object | RSSConfig · object | HTTPAPIConfig · object | BoxConfig · object | BrightDataConfig · object | BackblazeConfig · object | MuxConfig · object | IconikConfig · object | EmailConfig · object | GCSConfig · object | AzureBlobConfig · object | RTSPConfig · object | Provider Config · object"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"REQUIRED. Human-readable connection name for identification. Displayed in dashboards, sync logs, and API responses. Must be unique within the organization for clarity. Format: 1-100 characters, descriptive of the connection's purpose.","examples":["Marketing Google Drive","Production S3 Bucket","Customer Assets Archive"],"isRequired":true,"uniqueKey":"results.items.[INDEX].name","typeLabel":"string"},"created_by_user_id":{"type":"string","title":"Created By User Id","description":"REQUIRED. User identifier of the user who created this connection. Used for audit trails and permission checks. Format: usr_{15-character alphanumeric}. Immutable after creation.","examples":["usr_34bbf6ded1b749"],"isRequired":true,"uniqueKey":"results.items.[INDEX].created_by_user_id","typeLabel":"string"},"connection_id":{"type":"string","title":"Connection Id","description":"Unique identifier for the storage connection. Auto-generated with 'conn_' prefix followed by secure random token. Format: conn_{15-character alphanumeric}. Used for API operations and audit trails.","examples":["conn_abc123def456ghi","conn_xyz789uvw012qrs"],"uniqueKey":"results.items.[INDEX].connection_id","typeLabel":"string"},"write_enabled":{"type":"boolean","title":"Write Enabled","description":"Explicitly permit exports to write to this connection. Defaults to false; enabling requires the provider credentials to grant destination write access.","default":false,"uniqueKey":"results.items.[INDEX].write_enabled","typeLabel":"boolean"},"description":{"oneOf":[{"type":"string","title":"Description","description":"NOT REQUIRED. Optional description explaining the connection's purpose and scope. Helpful for team collaboration and documentation. Format: Up to 500 characters.","maxLength":500,"example":"Shared drive for marketing team assets and campaign materials","uniqueKey":"results.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"NOT REQUIRED. Optional description explaining the connection's purpose and scope. Helpful for team collaboration and documentation. Format: Up to 500 characters.","example":"Shared drive for marketing team assets and campaign materials","uniqueKey":"results.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].description","typeLabel":"string | null"},"status":{"type":"string","enum":["PENDING","QUEUED","IN_PROGRESS","PROCESSING","COMPLETED","COMPLETED_WITH_ERRORS","FAILED","CANCELED","INTERRUPTED","UNKNOWN","SKIPPED","DRAFT","ACTIVE","ARCHIVED","SUSPENDED","DEACTIVATED"],"title":"TaskStatusEnum","description":"Operational status of the connection. ACTIVE: Connection is healthy and ready for use in sync operations. SUSPENDED: Temporarily disabled by user, credentials preserved but sync paused. FAILED: Health checks failing, credentials may be invalid or expired. ARCHIVED: Permanently retired, cannot be reactivated. Status transitions automatically based on health checks and user actions.","default":"ACTIVE","uniqueKey":"results.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"is_active":{"type":"boolean","title":"Is Active","description":"Quick boolean flag for filtering active connections in queries. True when status is ACTIVE, False for SUSPENDED/FAILED/ARCHIVED. Maintained automatically when status changes. Use for efficient filtering: db.connections.find({'is_active': True})","default":true,"uniqueKey":"results.items.[INDEX].is_active","typeLabel":"boolean"},"last_used_at":{"oneOf":[{"type":"string","title":"Last Used At","description":"NOT REQUIRED. UTC timestamp of the most recent successful sync operation. Updated automatically after each successful file sync/list operation. None if connection has never been used. Useful for identifying stale connections and usage analytics.","format":"date-time","uniqueKey":"results.items.[INDEX].last_used_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Last Used At","description":"NOT REQUIRED. UTC timestamp of the most recent successful sync operation. Updated automatically after each successful file sync/list operation. None if connection has never been used. Useful for identifying stale connections and usage analytics.","uniqueKey":"results.items.[INDEX].last_used_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].last_used_at","typeLabel":"string\u003cdate-time> | null"},"last_error":{"oneOf":[{"type":"string","title":"Last Error","description":"NOT REQUIRED. Most recent error message from failed health check or sync. Populated when authentication fails, network errors occur, or permissions denied. None when connection is healthy. Format: Error message truncated to 1000 characters. Used for diagnostics and troubleshooting.","maxLength":1000,"example":"Authentication failed: Invalid credentials","uniqueKey":"results.items.[INDEX].last_error.oneOf.0","typeLabel":"string"},{"type":"null","title":"Last Error","description":"NOT REQUIRED. Most recent error message from failed health check or sync. Populated when authentication fails, network errors occur, or permissions denied. None when connection is healthy. Format: Error message truncated to 1000 characters. Used for diagnostics and troubleshooting.","example":"Authentication failed: Invalid credentials","uniqueKey":"results.items.[INDEX].last_error.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.items.[INDEX].last_error","typeLabel":"string | null"},"consecutive_failures":{"type":"integer","minimum":0,"title":"Consecutive Failures","description":"Counter tracking consecutive failed health checks or sync attempts. Incremented on each failure, reset to 0 on success. Used to implement automatic connection suspension. Auto-suspend after 5 consecutive failures to prevent account lockout. Range: 0 to infinity (typically 0-10).","default":0,"uniqueKey":"results.items.[INDEX].consecutive_failures","typeLabel":"integer"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"UTC timestamp when the connection was created. Auto-generated using shared.utilities.helpers.current_time(). Immutable after creation. Format: ISO 8601 datetime.","uniqueKey":"results.items.[INDEX].created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"UTC timestamp of the most recent update to the connection. Updated automatically on any field modification. Tracks configuration changes, status updates, and credential refreshes. Format: ISO 8601 datetime.","uniqueKey":"results.items.[INDEX].updated_at","typeLabel":"string\u003cdate-time>"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Arbitrary key-value metadata provided by the user. Useful for tagging, categorization, and custom annotations. NOT REQUIRED - defaults to empty dictionary. Common uses: team tags, cost center codes, project identifiers.","examples":[{"cost_center":"CC-1234","team":"marketing"},{"environment":"production","project":"q4-campaign"},{"tags":["customer-facing","high-priority"]}],"uniqueKey":"results.items.[INDEX].metadata","typeLabel":"Metadata · object"}},"type":"object","required":["internal_id","provider_type","provider_config","name","created_by_user_id"],"title":"StorageConnectionModel","description":"Canonical representation of an external storage provider connection.\n\nStorage connections enable Mixpeek to access external cloud storage providers\n(Google Drive, S3, etc.) for automated file ingestion and synchronization.\nEach connection represents a configured integration with credentials, health\nmonitoring, and usage tracking.\n\nLifecycle States:\n - ACTIVE: Connection is healthy and ready for sync operations\n - SUSPENDED: Temporarily disabled by user (credentials preserved)\n - FAILED: Health checks failing (may need credential refresh)\n - ARCHIVED: Permanently retired (cannot be reactivated)\n\nSecurity:\n - Credentials never appear in API responses or logs; a read returns only\n the credential type\n - Failed authentication attempts are logged in last_error\n - Consecutive failures trigger automatic suspension\n\nUse Cases:\n - Connect to team Google Drive for document ingestion\n - Sync files from customer S3 buckets\n - Monitor and process uploaded media files\n - Schedule periodic sync operations\n\nHealth Monitoring:\n - Automatic health checks validate connectivity and credentials\n - consecutive_failures tracks authentication/network issues\n - Auto-disable after 5 consecutive failures to prevent lockout\n - last_error stores diagnostic information for debugging","examples":[{"connection_id":"conn_abc123def456ghi","created_by_user_id":"usr_admin123abc456","description":"Team drive for marketing assets","internal_id":"int_org123","is_active":true,"metadata":{"team":"marketing"},"name":"Marketing Google Drive","provider_config":{"credentials":{"client_email":"sync@project.iam.gserviceaccount.com","type":"service_account"},"provider_type":"google_drive","shared_drive_id":"0AH-Xabc123"},"provider_type":"google_drive","status":"active"},{"connection_id":"conn_xyz789uvw012qrs","created_by_user_id":"usr_admin123abc456","internal_id":"int_org123","is_active":true,"name":"Production S3 Bucket","provider_config":{"credentials":{"access_key_id":"AKIA..."},"provider_type":"s3","region":"us-east-1"},"provider_type":"s3","status":"active"}],"uniqueKey":"results.items.[INDEX]","typeLabel":"StorageConnectionModel · object"},"type":"array","title":"Results","description":"List of storage connections matching the request filters. Results are paginated according to the pagination parameters. SECURITY: credential fields are not returned; only the credential type is.","isRequired":true,"uniqueKey":"results","typeLabel":"StorageConnectionModel · object[]"},"pagination":{"properties":{"total":{"oneOf":[{"type":"integer","title":"Total","description":"Number of items matching the request across all pages, filters included. null unless the request set include_total=true (in the body or as ?include_total=true). A counted request that matches nothing returns 0.","uniqueKey":"pagination.total.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Total","description":"Number of items matching the request across all pages, filters included. null unless the request set include_total=true (in the body or as ?include_total=true). A counted request that matches nothing returns 0.","uniqueKey":"pagination.total.oneOf.1","typeLabel":"null"}],"uniqueKey":"pagination.total","typeLabel":"integer | null"},"page":{"oneOf":[{"type":"integer","title":"Page","uniqueKey":"pagination.page.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Page","uniqueKey":"pagination.page.oneOf.1","typeLabel":"null"}],"uniqueKey":"pagination.page","typeLabel":"integer | null"},"page_size":{"oneOf":[{"type":"integer","title":"Page Size","uniqueKey":"pagination.page_size.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Page Size","uniqueKey":"pagination.page_size.oneOf.1","typeLabel":"null"}],"uniqueKey":"pagination.page_size","typeLabel":"integer | null"},"total_pages":{"oneOf":[{"type":"integer","title":"Total Pages","description":"Number of pages at page_size. null unless include_total=true.","uniqueKey":"pagination.total_pages.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Total Pages","description":"Number of pages at page_size. null unless include_total=true.","uniqueKey":"pagination.total_pages.oneOf.1","typeLabel":"null"}],"uniqueKey":"pagination.total_pages","typeLabel":"integer | null"},"next_page":{"oneOf":[{"type":"string","title":"Next Page","uniqueKey":"pagination.next_page.oneOf.0","typeLabel":"string"},{"type":"null","title":"Next Page","uniqueKey":"pagination.next_page.oneOf.1","typeLabel":"null"}],"uniqueKey":"pagination.next_page","typeLabel":"string | null"},"previous_page":{"oneOf":[{"type":"string","title":"Previous Page","uniqueKey":"pagination.previous_page.oneOf.0","typeLabel":"string"},{"type":"null","title":"Previous Page","uniqueKey":"pagination.previous_page.oneOf.1","typeLabel":"null"}],"uniqueKey":"pagination.previous_page","typeLabel":"string | null"},"next_cursor":{"oneOf":[{"type":"string","title":"Next Cursor","uniqueKey":"pagination.next_cursor.oneOf.0","typeLabel":"string"},{"type":"null","title":"Next Cursor","uniqueKey":"pagination.next_cursor.oneOf.1","typeLabel":"null"}],"uniqueKey":"pagination.next_cursor","typeLabel":"string | null"}},"type":"object","title":"PaginationResponse","description":"Pagination metadata including total count, page number, page size, and navigation links for next/previous pages.","isRequired":true,"uniqueKey":"pagination","typeLabel":"PaginationResponse · object"},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of connections matching the filters (before pagination). Use this to calculate total pages and display pagination controls.","examples":[0,5,42],"isRequired":true,"uniqueKey":"total","typeLabel":"integer"}},"type":"object","required":["results","pagination","total"],"title":"StorageConnectionListResponse","description":"Response envelope for listing storage connections.\n\nContains paginated results and metadata about the listing operation.","examples":[{"description":"Paginated list response","pagination":{"page":1,"page_size":10,"total":10,"total_pages":1},"results":[{"connection_id":"conn_abc123","is_active":true,"name":"Marketing Drive","provider_type":"google_drive","status":"active"}],"total":10}],"uniqueKey":"","typeLabel":"StorageConnectionListResponse · object"},"examples":{"Example":{"title":"Example","value":{"description":"Paginated list response","pagination":{"page":1,"page_size":10,"total":10,"total_pages":1},"results":[{"connection_id":"conn_abc123","is_active":true,"name":"Marketing Drive","provider_type":"google_drive","status":"active"}],"total":10}}},"exampleType":"generated"}},"exampleType":"generated"},"cfb2abca-dd98-456c-a9fe-aac2f5ce05d3":{"description":"Bad Request","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"},"3de47877-495e-481c-9280-6f763c46e4c5":{"description":"Unauthorized","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"},"f1296d42-531b-489d-a88b-776b577394e7":{"description":"Forbidden","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"},"2eda1734-aaf6-43d7-8a44-ca6a7bcd81e0":{"description":"Not Found","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"},"c365d18d-dfd3-4995-9ba4-93fa81bb03ee":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"},"9769c49a-e3ab-434a-8147-5fa536ad0727":{"description":"Too Many Requests","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"},"9ad84d24-e799-4143-9288-a82bd9b0bb29":{"description":"Internal Server Error","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"},"a9ca69f9-73c5-4719-bc00-d9b846a5a34f":{"description":"Service Unavailable","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"b9440c0f-929c-4264-8075-bdbcd565838e":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Mixpeek API key, sent as `Authorization: Bearer mxp_sk_...`. Create one in Studio under Settings → API Keys, or with an admin key via `POST /v1/organizations/users/{user_email}/api-keys`. A missing, malformed, unknown, revoked, inactive or expired key returns 401; a key without the permission, scope or plan an operation needs returns 403.","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"a3ca4d02-9041-4306-8eae-afdf7d554be4":{"url":"https://api.mixpeek.com","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Mixpeek API key, sent as `Authorization: Bearer mxp_sk_...`. Create one in Studio under Settings → API Keys, or with an admin key via `POST /v1/organizations/users/{user_email}/api-keys`. A missing, malformed, unknown, revoked, inactive or expired key returns 401; a key without the permission, scope or plan an operation needs returns 403.","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Mixpeek API key, sent as `Authorization: Bearer mxp_sk_...`. Create one in Studio under Settings → API Keys, or with an admin key via `POST /v1/organizations/users/{user_email}/api-keys`. A missing, malformed, unknown, revoked, inactive or expired key returns 401; a key without the permission, scope or plan an operation needs returns 403.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"mixpeek","siteName":"Mixpeek","title":"List Storage Connections - Mixpeek","navMaps":{"firstHrefInVersion":{"v1":{"href":"/api-reference/organization-connections/list-storage-connections","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-01-23T23:19:11.467Z","originalFileLocation":"api-reference/organization-connections/list-storage-connections.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=\"List storage connections for the authenticated organization. Returns paginated results with optional filters for provider type, status, and active flag. Results are sorted by creation date (newest first). Use Cases: - List all active Google Drive connections - Find failed connections that need attention - Filter by provider type for sync configuration Example: bash curl -X POST \u0026quot;http://localhost:8000/v1/organizations/connections/list\u0026quot; \\ -H \u0026quot;Authorization: Bearer YOUR_API_KEY\u0026quot; \\ -H \u0026quot;Content-Type: application/json\u0026quot; \\ -d \u0026#x27;{ \u0026quot;provider_type\u0026quot;: \u0026quot;google_drive\u0026quot;, \u0026quot;is_active\u0026quot;: true }\u0026#x27;\">\u003cmeta data-mint-head name=\"application-name\" content=\"Mixpeek\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_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=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"List Storage Connections - Mixpeek\">\u003cmeta data-mint-head property=\"og:description\" content=\"List storage connections for the authenticated organization. Returns paginated results with optional filters for provider type, status, and active flag. Results are sorted by creation date (newest first). Use Cases: - List all active Google Drive connections - Find failed connections that need attention - Filter by provider type for sync configuration Example: bash curl -X POST \u0026quot;http://localhost:8000/v1/organizations/connections/list\u0026quot; \\ -H \u0026quot;Authorization: Bearer YOUR_API_KEY\u0026quot; \\ -H \u0026quot;Content-Type: application/json\u0026quot; \\ -d \u0026#x27;{ \u0026quot;provider_type\u0026quot;: \u0026quot;google_drive\u0026quot;, \u0026quot;is_active\u0026quot;: true }\u0026#x27;\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Mixpeek\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.mixpeek.com/docs/api-reference/organization-connections/list-storage-connections\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://mixpeek.mintlify.site/docs/_mintlify/api/og/v2?division=Storage+Connections\u0026amp;title=List+Storage+Connections\u0026amp;description=List+storage+connections+for+the+authenticated+organization.%0A%0AReturns+paginated+results+with+optional+filters+for+provider+type%2C+status%2C%0Aand+active+flag.+Result\u0026amp;theme=c63607064cbc270563da1421\u0026amp;signature=897634f9524138dd53edea38f154912224d91de3681d330aaa07399a6cbd83f1\">\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=\"List Storage Connections - Mixpeek\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"List storage connections for the authenticated organization. Returns paginated results with optional filters for provider type, status, and active flag. Results are sorted by creation date (newest first). Use Cases: - List all active Google Drive connections - Find failed connections that need attention - Filter by provider type for sync configuration Example: bash curl -X POST \u0026quot;http://localhost:8000/v1/organizations/connections/list\u0026quot; \\ -H \u0026quot;Authorization: Bearer YOUR_API_KEY\u0026quot; \\ -H \u0026quot;Content-Type: application/json\u0026quot; \\ -d \u0026#x27;{ \u0026quot;provider_type\u0026quot;: \u0026quot;google_drive\u0026quot;, \u0026quot;is_active\u0026quot;: true }\u0026#x27;\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mixpeek.mintlify.site/docs/_mintlify/api/og/v2?division=Storage+Connections\u0026amp;title=List+Storage+Connections\u0026amp;description=List+storage+connections+for+the+authenticated+organization.%0A%0AReturns+paginated+results+with+optional+filters+for+provider+type%2C+status%2C%0Aand+active+flag.+Result\u0026amp;theme=c63607064cbc270563da1421\u0026amp;signature=897634f9524138dd53edea38f154912224d91de3681d330aaa07399a6cbd83f1\">\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=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Mixpeek\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FC5185\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.mixpeek.com/docs/api-reference/organization-connections/list-storage-connections\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/organization-connections/list-storage-connections.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.mixpeek.com/#organization\",\"name\":\"Mixpeek\",\"url\":\"https://docs.mixpeek.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/logo/light.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=ac5ab550180057404fe833886513775f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.mixpeek.com/docs#website\",\"name\":\"Mixpeek\",\"url\":\"https://docs.mixpeek.com/docs\",\"publisher\":{\"@id\":\"https://docs.mixpeek.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.mixpeek.com/docs/api-reference/organization-connections/list-storage-connections#webpage\",\"url\":\"https://docs.mixpeek.com/docs/api-reference/organization-connections/list-storage-connections\",\"name\":\"List Storage Connections\",\"description\":\"List storage connections for the authenticated organization. Returns paginated results with optional filters for provider type, status, and active flag. Results are sorted by creation date (newest first). Use Cases: - List all active Google Drive connections - Find failed connections that need attention - Filter by provider type for sync configuration Example: bash curl -X POST \\\"http://localhost:8000/v1/organizations/connections/list\\\" \\\\ -H \\\"Authorization: Bearer YOUR_API_KEY\\\" \\\\ -H \\\"Content-Type: application/json\\\" \\\\ -d '{ \\\"provider_type\\\": \\\"google_drive\\\", \\\"is_active\\\": true }'\",\"dateModified\":\"2026-01-23T23:19:11.467Z\",\"isPartOf\":{\"@id\":\"https://docs.mixpeek.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mixpeek.com/docs/api-reference/organization-connections/list-storage-connections#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mixpeek.com/docs/api-reference/organization-connections/list-storage-connections#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Administer\",\"item\":\"https://docs.mixpeek.com/docs/api-reference/account/whoami\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Organization\",\"item\":\"https://docs.mixpeek.com/docs/api-reference/account/whoami\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"List Storage Connections\",\"item\":\"https://docs.mixpeek.com/docs/api-reference/organization-connections/list-storage-connections\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.mixpeek.com/docs/api-reference/organization-connections/list-storage-connections#apireference\",\"headline\":\"List Storage Connections\",\"name\":\"List Storage Connections\",\"description\":\"List storage connections for the authenticated organization. Returns paginated results with optional filters for provider type, status, and active flag. Results are sorted by creation date (newest first). Use Cases: - List all active Google Drive connections - Find failed connections that need attention - Filter by provider type for sync configuration Example: bash curl -X POST \\\"http://localhost:8000/v1/organizations/connections/list\\\" \\\\ -H \\\"Authorization: Bearer YOUR_API_KEY\\\" \\\\ -H \\\"Content-Type: application/json\\\" \\\\ -d '{ \\\"provider_type\\\": \\\"google_drive\\\", \\\"is_active\\\": true }'\",\"url\":\"https://docs.mixpeek.com/docs/api-reference/organization-connections/list-storage-connections\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mixpeek.com/docs/api-reference/organization-connections/list-storage-connections#webpage\"},\"dateModified\":\"2026-01-23T23:19:11.467Z\",\"publisher\":{\"@id\":\"https://docs.mixpeek.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.mixpeek.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Mixpeek\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Mixpeek","nav":{"global":{"anchors":[{"anchor":"Homepage","icon":"house","href":"https://mixpeek.com"},{"anchor":"Engineering Blog","icon":"newspaper","href":"https://mixpeek.com/blog"},{"anchor":"API Swagger","icon":"file-code","href":"https://api.mixpeek.com/docs"}]},"versions":[{"version":"v1","default":true,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/overview/introduction"}]},{"tab":"Vector Store","pages":[{"title":"Vector Store","href":"/vector-store/overview"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/tutorials/semantic-search"}]},{"tab":"API Reference","groups":[{"group":"Namespaces","pages":[{"openapi":"post /v1/namespaces","title":"Create Namespace","href":"/api-reference/namespaces/create-namespace"},{"openapi":"get /v1/namespaces/{namespace_identifier}","title":"Get Namespace","href":"/api-reference/namespaces/get-namespace"},{"openapi":"put /v1/namespaces/{namespace_identifier}","title":"Update Namespace","href":"/api-reference/namespaces/update-namespace"},{"openapi":"patch /v1/namespaces/{namespace_identifier}","title":"Partially Update Namespace","href":"/api-reference/namespaces/partially-update-namespace"},{"openapi":"post /v1/namespaces/list","title":"List Namespaces","href":"/api-reference/namespaces/list-namespaces"},{"openapi":"get /v1/namespaces/{namespace_identifier}/stats","title":"Get Namespace Stats","href":"/api-reference/namespaces/get-namespace-stats"},{"openapi":"delete /v1/namespaces/{namespace_identifier}","title":"Delete Namespace","href":"/api-reference/namespaces/delete-namespace"},{"group":"Clone","pages":[{"openapi":"post /v1/namespaces/{namespace_identifier}/clone","title":"Clone Namespace","href":"/api-reference/namespace-clone/clone-namespace"}]},{"group":"Migrations","pages":[{"openapi":"post /v1/namespaces/migrations/","title":"Create Migration","href":"/api-reference/namespace-migrations/create-migration"},{"openapi":"get /v1/namespaces/migrations/{migration_id}","title":"Get Migration","href":"/api-reference/namespace-migrations/get-migration"},{"openapi":"post /v1/namespaces/migrations/list","title":"List Migrations","href":"/api-reference/namespace-migrations/list-migrations"},{"openapi":"post /v1/namespaces/migrations/{migration_id}/start","title":"Start Migration","href":"/api-reference/namespace-migrations/start-migration"},{"openapi":"post /v1/namespaces/migrations/validate","title":"Validate Migration","href":"/api-reference/namespace-migrations/validate-migration"},{"openapi":"post /v1/namespaces/migrations/{migration_id}/cancel","title":"Cancel Migration","href":"/api-reference/namespace-migrations/cancel-migration"},{"openapi":"delete /v1/namespaces/migrations/{migration_id}","title":"Delete Migration","href":"/api-reference/namespace-migrations/delete-migration"}]},{"group":"Extractors","pages":[{"openapi":"get /v1/namespaces/{namespace_id}/extractors","title":"List all extractors available to namespace","href":"/api-reference/namespace-extractors/list-all-extractors-available-to-namespace"},{"openapi":"get /v1/namespaces/{namespace_id}/extractors/{extractor_id}","title":"Get extractor details","href":"/api-reference/namespace-extractors/get-extractor-details"}]},{"group":"Models","pages":[{"openapi":"get /v1/namespaces/{namespace_id}/models","title":"List models in namespace","href":"/api-reference/custom-models/list-models-in-namespace"},{"openapi":"post /v1/namespaces/{namespace_id}/models","title":"Upload a custom model","href":"/api-reference/custom-models/upload-a-custom-model"},{"openapi":"get /v1/namespaces/{namespace_id}/models/{model_id}","title":"Get model details","href":"/api-reference/custom-models/get-model-details"},{"openapi":"post /v1/namespaces/{namespace_id}/models/{model_id}/deploy","title":"Deploy model to Ray object store","href":"/api-reference/custom-models/deploy-model-to-ray-object-store"},{"openapi":"post /v1/namespaces/{namespace_id}/models/org/{model_id}/enable","title":"Enable org model for namespace","href":"/api-reference/custom-models/enable-org-model-for-namespace"},{"openapi":"post /v1/namespaces/{namespace_id}/models/org/{model_id}/disable","title":"Disable org model for namespace","href":"/api-reference/custom-models/disable-org-model-for-namespace"},{"openapi":"get /v1/namespaces/{namespace_id}/models/available","title":"List available org models","href":"/api-reference/custom-models/list-available-org-models"},{"openapi":"delete /v1/namespaces/{namespace_id}/models/{model_id}","title":"Delete a model","href":"/api-reference/custom-models/delete-a-model"}]},{"group":"Snapshots","pages":[{"openapi":"post /v1/namespaces/{namespace_identifier}/snapshots","title":"Create Namespace Snapshot","href":"/api-reference/namespace-snapshots/create-namespace-snapshot"},{"openapi":"post /v1/namespaces/{namespace_identifier}/snapshots/list","title":"List Namespace Snapshots","href":"/api-reference/namespace-snapshots/list-namespace-snapshots"},{"openapi":"get /v1/namespaces/{namespace_identifier}/snapshots/{snapshot_id}","title":"Get Snapshot","href":"/api-reference/namespace-snapshots/get-snapshot"},{"openapi":"delete /v1/namespaces/{namespace_identifier}/snapshots/{snapshot_id}","title":"Delete Snapshot","href":"/api-reference/namespace-snapshots/delete-snapshot"},{"openapi":"get /v1/namespaces/{namespace_identifier}/snapshots/{snapshot_id}/verify","title":"Verify Snapshot Restore-Readiness","href":"/api-reference/namespace-snapshots/verify-snapshot-restore-readiness"},{"openapi":"post /v1/namespaces/{namespace_identifier}/snapshots/{snapshot_id}/restore","title":"Restore From Snapshot","href":"/api-reference/namespace-snapshots/restore-from-snapshot"}]},{"openapi":"get /v1/namespaces","title":"List Namespaces","href":"/api-reference/namespaces/list-namespaces-get"},{"openapi":"post /v1/namespaces/stats/batch","title":"Get Namespace Stats (Batch)","href":"/api-reference/namespaces/get-namespace-stats-batch"},{"openapi":"post /v1/namespaces/{namespace_identifier}/ensure-indexes","title":"Ensure Namespace Payload Indexes","href":"/api-reference/namespaces/ensure-namespace-payload-indexes"},{"group":"BYO vectors","pages":[{"openapi":"post /v1/namespaces/{namespace_id}/documents/upsert","title":"Upsert documents with BYO vectors","href":"/api-reference/byo-documents/upsert-documents-byo-vectors"},{"openapi":"get /v1/namespaces/{namespace_id}/documents/{document_id}","title":"Get a document by ID (path-scoped namespace)","href":"/api-reference/byo-documents/get-document-id"},{"openapi":"post /v1/namespaces/standalone","title":"Create standalone namespace (BYO vectors)","href":"/api-reference/byo-documents/create-standalone-namespace"},{"openapi":"post /v1/namespaces/{namespace_id}/promote","title":"Promote standalone namespace to managed mode","href":"/api-reference/byo-documents/promote-standalone-namespace-managed-mode"},{"openapi":"post /v1/namespaces/{namespace_id}/promote/validate","title":"Dry-run validate a standalone → managed promotion","href":"/api-reference/byo-documents/dry-run-validate-standalone-managed-promotion"}]}]},{"group":"Buckets","pages":[{"openapi":"post /v1/buckets","title":"Create Bucket","href":"/api-reference/buckets/create-bucket"},{"openapi":"get /v1/buckets/{bucket_identifier}","title":"Get Bucket","href":"/api-reference/buckets/get-bucket"},{"openapi":"put /v1/buckets/{bucket_identifier}","title":"Update Bucket","href":"/api-reference/buckets/update-bucket"},{"openapi":"patch /v1/buckets/{bucket_identifier}","title":"Partially Update Bucket","href":"/api-reference/buckets/partially-update-bucket"},{"openapi":"post /v1/buckets/list","title":"List Buckets","href":"/api-reference/buckets/list-buckets"},{"openapi":"delete /v1/buckets/{bucket_identifier}","title":"Delete Bucket","href":"/api-reference/buckets/delete-bucket"},{"group":"Syncs","pages":[{"openapi":"post /v1/buckets/{bucket_id}/syncs/list","title":"List Sync Configurations","href":"/api-reference/bucket-syncs/list-sync-configurations"},{"openapi":"post /v1/buckets/{bucket_id}/syncs","title":"Create Sync Configuration","href":"/api-reference/bucket-syncs/create-sync-configuration"},{"openapi":"get /v1/buckets/{bucket_id}/syncs/{sync_config_id}","title":"Get Sync Configuration","href":"/api-reference/bucket-syncs/get-sync-configuration"},{"openapi":"patch /v1/buckets/{bucket_id}/syncs/{sync_config_id}","title":"Update Sync Configuration","href":"/api-reference/bucket-syncs/update-sync-configuration"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/pause","title":"Pause Sync Configuration","href":"/api-reference/bucket-syncs/pause-sync-configuration"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/resume","title":"Resume Sync Configuration","href":"/api-reference/bucket-syncs/resume-sync-configuration"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/trigger","title":"Trigger Sync Configuration","href":"/api-reference/bucket-syncs/trigger-sync-configuration"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/unlock","title":"Force Unlock Sync Configuration","href":"/api-reference/bucket-syncs/force-unlock-sync-configuration"},{"openapi":"delete /v1/buckets/{bucket_id}/syncs/{sync_config_id}","title":"Delete Sync Configuration","href":"/api-reference/bucket-syncs/delete-sync-configuration"},{"openapi":"get /v1/buckets/{bucket_id}/syncs/{sync_config_id}/metrics","title":"Get Sync Metrics","href":"/api-reference/bucket-syncs/get-sync-metrics"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/jobs","title":"List Sync Jobs","href":"/api-reference/bucket-syncs/list-sync-jobs"},{"openapi":"get /v1/buckets/{bucket_id}/syncs/{sync_config_id}/jobs/{sync_job_id}","title":"Get Sync Job","href":"/api-reference/bucket-syncs/get-sync-job"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/dlq","title":"List Dlq Entries","href":"/api-reference/bucket-syncs/list-dlq-entries"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/dlq/requeue","title":"Requeue Dlq Entries","href":"/api-reference/bucket-syncs/requeue-dlq-entries"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/dlq/bulk-mark-failed","title":"Bulk Mark Dlq Permanently Failed","href":"/api-reference/bucket-syncs/bulk-mark-dlq-permanently-failed"}]},{"group":"Source adapter","pages":[{"openapi":"get /v1/buckets/{bucket_id}/source-adapter/status","title":"Get Adapter Status","href":"/api-reference/bucket-source-adapter/get-source-adapter-status"},{"openapi":"post /v1/buckets/{bucket_id}/source-adapter/refresh","title":"Refresh Source Adapter","href":"/api-reference/bucket-source-adapter/refresh-source-adapter"}]},{"group":"Objects","pages":[{"openapi":"post /v1/buckets/{bucket_identifier}/objects","title":"Create Object","href":"/api-reference/bucket-objects/create-object"},{"openapi":"post /v1/buckets/{bucket_identifier}/objects/batch","title":"Create Objects in Batch","href":"/api-reference/bucket-objects/create-objects-in-batch"},{"openapi":"get /v1/buckets/{bucket_identifier}/objects/{object_identifier}","title":"Get Object","href":"/api-reference/bucket-objects/get-object"},{"openapi":"put /v1/buckets/{bucket_identifier}/objects/{object_identifier}","title":"Update Object","href":"/api-reference/bucket-objects/update-object"},{"openapi":"patch /v1/buckets/{bucket_identifier}/objects/{object_identifier}","title":"Partially Update Object","href":"/api-reference/bucket-objects/partially-update-object"},{"openapi":"post /v1/buckets/{bucket_identifier}/objects/list","title":"List Objects","href":"/api-reference/bucket-objects/list-objects"},{"openapi":"post /v1/buckets/{bucket_identifier}/objects/aggregate","title":"Aggregate Objects","href":"/api-reference/bucket-objects/aggregate-objects"},{"openapi":"delete /v1/buckets/{bucket_identifier}/objects/{object_identifier}","title":"Delete Object","href":"/api-reference/bucket-objects/delete-object"},{"openapi":"get /v1/buckets/{bucket_identifier}/objects","title":"List Objects (GET)","href":"/api-reference/bucket-objects/list-objects-get"},{"openapi":"post /v1/buckets/{bucket_identifier}/objects/bulk-soft-delete","title":"Bulk Soft-Delete Objects","href":"/api-reference/bucket-objects/bulk-soft-delete-objects"}]},{"group":"Uploads","pages":[{"openapi":"post /v1/buckets/{bucket_identifier}/uploads","title":"Create Upload","href":"/api-reference/bucket-uploads/create-upload"},{"openapi":"post /v1/buckets/{bucket_identifier}/uploads/batch","title":"Batch Create Uploads","href":"/api-reference/bucket-uploads/batch-create-uploads"},{"openapi":"get /v1/buckets/{bucket_identifier}/uploads/{upload_id}","title":"Get Upload","href":"/api-reference/bucket-uploads/get-upload"},{"openapi":"post /v1/buckets/{bucket_identifier}/uploads/{upload_id}/confirm","title":"Confirm Upload","href":"/api-reference/bucket-uploads/confirm-upload"},{"openapi":"post /v1/buckets/{bucket_identifier}/uploads/confirm/batch","title":"Batch Confirm Uploads","href":"/api-reference/bucket-uploads/batch-confirm-uploads"},{"openapi":"post /v1/buckets/{bucket_identifier}/uploads/list","title":"List Uploads","href":"/api-reference/bucket-uploads/list-uploads"},{"openapi":"delete /v1/buckets/{bucket_identifier}/uploads/{upload_id}","title":"Delete Upload","href":"/api-reference/bucket-uploads/delete-upload"}]},{"group":"Batches","pages":[{"openapi":"post /v1/buckets/{bucket_identifier}/batches","title":"Create Batch","href":"/api-reference/bucket-batches/create-batch"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/objects","title":"Add Objects to Batch","href":"/api-reference/bucket-batches/add-objects-to-batch"},{"openapi":"get /v1/buckets/{bucket_identifier}/batches/{batch_id}","title":"Get Batch Configuration","href":"/api-reference/bucket-batches/get-batch-configuration"},{"openapi":"patch /v1/buckets/{bucket_identifier}/batches/{batch_id}","title":"Partially Update Batch","href":"/api-reference/bucket-batches/partially-update-batch"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/submit","title":"Submit Batch for Processing","href":"/api-reference/bucket-batches/submit-batch-for-processing"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/submit-all","title":"Submit All Draft Batches","href":"/api-reference/bucket-batches/submit-all-draft-batches"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/list","title":"List Batches","href":"/api-reference/bucket-batches/list-batches"},{"openapi":"get /v1/buckets/{bucket_identifier}/batches/{batch_id}/logs","title":"Get Ray Job Logs for Batch","href":"/api-reference/bucket-batches/get-ray-job-logs-for-batch"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/cancel","title":"Cancel Batch","href":"/api-reference/bucket-batches/cancel-batch"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/tiers/{tier_num}/cancel","title":"Cancel Tier","href":"/api-reference/bucket-batches/cancel-tier"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/tiers/{tier_num}/jobs/{ray_job_id}/cancel","title":"Cancel Job","href":"/api-reference/bucket-batches/cancel-job"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/tiers/{tier_num}/retry","title":"Retry Tier with Resource Overrides","href":"/api-reference/bucket-batches/retry-tier"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/retry","title":"Retry Failed Documents","href":"/api-reference/bucket-batches/retry-failed-documents"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/resubmit","title":"Resubmit Failed Batch","href":"/api-reference/bucket-batches/resubmit-failed-batch"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/tiers/{tier_num}/heal","title":"Manual Self-Healing","href":"/api-reference/bucket-batches/heal-tier"},{"openapi":"get /v1/buckets/{bucket_identifier}/batches/{batch_id}/diagnose","title":"Diagnose Batch","href":"/api-reference/bucket-batches/diagnose-batch"},{"openapi":"get /v1/buckets/{bucket_identifier}/batches/{batch_id}/failed-documents","title":"Get Failed Documents for Batch","href":"/api-reference/bucket-batches/get-failed-documents-for-batch"},{"openapi":"delete /v1/buckets/{bucket_identifier}/batches/{batch_id}/documents","title":"Delete Documents Produced by Batch","href":"/api-reference/bucket-batches/delete-documents-produced-by-batch"},{"openapi":"delete /v1/buckets/{bucket_identifier}/batches/{batch_id}","title":"Delete Batch","href":"/api-reference/bucket-batches/delete-batch"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/estimate-cost","title":"Estimate Batch Cost (pre-flight, dry-run)","href":"/api-reference/bucket-batches/estimate-batch-cost"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/bulk-submit","title":"Bulk-submit a whole bucket as N auto-chunked, auto-queued batches","href":"/api-reference/bucket-batches/bulk-submit-whole-bucket-n-auto"},{"openapi":"get /v1/buckets/{bucket_identifier}/batches/{batch_id}/audit","title":"Tier-completion invariant audit","href":"/api-reference/bucket-batches/tier-completion-invariant-audit"}]},{"openapi":"get /v1/buckets","title":"List Buckets","href":"/api-reference/buckets/list-buckets-get"}]},{"group":"Collections","pages":[{"openapi":"post /v1/collections","title":"Create Collection","href":"/api-reference/collections/create-collection"},{"openapi":"post /v1/collections/{collection_identifier}/clone","title":"Clone Collection","href":"/api-reference/collections/clone-collection"},{"openapi":"get /v1/collections/{collection_identifier}","title":"Get Collection","href":"/api-reference/collections/get-collection"},{"openapi":"patch /v1/collections/{collection_identifier}","title":"Update Collection","href":"/api-reference/collections/update-collection"},{"openapi":"get /v1/collections/{collection_identifier}/features","title":"Describe collection features","href":"/api-reference/collections/describe-collection-features"},{"openapi":"post /v1/collections/list","title":"List Collections","href":"/api-reference/collections/list-collections"},{"openapi":"post /v1/collections/{collection_identifier}/export","title":"Export Collection","href":"/api-reference/collections/export-collection"},{"openapi":"post /v1/collections/{collection_identifier}/trigger","title":"Trigger Collection Processing","href":"/api-reference/collections/trigger-collection-processing"},{"openapi":"delete /v1/collections/{collection_identifier}","title":"Delete Collection","href":"/api-reference/collections/delete-collection"},{"openapi":"get /v1/collections/{collection_identifier}/reconciliation","title":"Reconcile objects vs documents","href":"/api-reference/collections/reconcile-collection"},{"openapi":"get /v1/collections/{collection_identifier}/documents/{document_id}/diagnostics","title":"Per-document support diagnostics (visibility, failures, history).","href":"/api-reference/collections/document-diagnostics"},{"group":"Schema","pages":[{"openapi":"post /v1/collections/{collection_id}/sync-schema","title":"Sync Collection Schema","href":"/api-reference/collection-schema/sync-collection-schema"}]},{"group":"Documents","pages":[{"openapi":"post /v1/collections/{collection_identifier}/documents","title":"Create a document.","href":"/api-reference/collection-documents/create-a-document"},{"openapi":"get /v1/collections/{collection_identifier}/documents/{document_id}","title":"Get a document by ID.","href":"/api-reference/collection-documents/get-a-document-by-id"},{"openapi":"get /v1/collections/{collection_identifier}/documents/{document_id}/download","title":"Download frame-accurate scene media for this document.","href":"/api-reference/collection-documents/download-document-media"},{"openapi":"put /v1/collections/{collection_identifier}/documents/{document_id}","title":"Update Document","href":"/api-reference/collection-documents/update-document"},{"openapi":"patch /v1/collections/{collection_identifier}/documents/{document_id}","title":"Patch Document","href":"/api-reference/collection-documents/patch-document"},{"openapi":"patch /v1/collections/{collection_identifier}/documents/{document_id}/acl","title":"Update a document's access control list (ACL).","href":"/api-reference/collection-documents/update-a-documents-access-control-list-acl"},{"openapi":"post /v1/collections/{collection_identifier}/documents/list","title":"List documents.","href":"/api-reference/collection-documents/list-documents"},{"openapi":"post /v1/collections/{collection_identifier}/documents/aggregate","title":"Aggregate Documents","href":"/api-reference/collection-documents/aggregate-documents"},{"openapi":"post /v1/collections/{collection_identifier}/documents/distinct","title":"Return distinct values for a single field.","href":"/api-reference/collection-documents/return-distinct-values-for-a-single-field"},{"openapi":"patch /v1/collections/{collection_identifier}/documents/bulk","title":"Bulk Update Documents","href":"/api-reference/collection-documents/bulk-update-documents"},{"openapi":"post /v1/collections/{collection_identifier}/documents/batch","title":"Batch Update Documents","href":"/api-reference/collection-documents/batch-update-documents"},{"openapi":"delete /v1/collections/{collection_identifier}/documents/batch","title":"Batch Delete Documents","href":"/api-reference/collection-documents/batch-delete-documents"},{"openapi":"delete /v1/collections/{collection_identifier}/documents/{document_id}","title":"Delete a document by ID.","href":"/api-reference/collection-documents/delete-a-document-by-id"},{"openapi":"post /v1/collections/{collection_identifier}/documents/schema/validate","title":"Validate document against collection schema","href":"/api-reference/collection-documents/validate-document-schema"},{"openapi":"get /v1/collections/{collection_identifier}/documents/count","title":"Count documents in a collection.","href":"/api-reference/collection-documents/count-documents-collection"},{"openapi":"get /v1/collections/{collection_identifier}/documents/{document_id}/ancestors","title":"Get document ancestors (lineage chain root → parent).","href":"/api-reference/collection-documents/get-document-ancestors"},{"openapi":"get /v1/collections/{collection_identifier}/documents/{document_id}/descendants","title":"Get direct downstream documents (depth=1 children).","href":"/api-reference/collection-documents/get-direct-downstream-documents"},{"openapi":"get /v1/collections/{collection_identifier}/documents","title":"List documents.","href":"/api-reference/collection-documents/list-documents-get"}]},{"group":"Lineage","pages":[{"openapi":"get /v1/collections/{collection_id}/documents/{document_id}/lineage","title":"Get document lineage","href":"/api-reference/document-lineage/get-document-lineage"},{"openapi":"get /v1/objects/{object_id}/documents","title":"Get all documents derived from an object","href":"/api-reference/document-lineage/get-all-documents-derived-from-an-object"},{"openapi":"get /v1/objects/{object_id}/decomposition-tree","title":"Get decomposition tree visualization","href":"/api-reference/document-lineage/get-decomposition-tree-visualization"}]},{"group":"Lifecycle","pages":[{"openapi":"get /v1/collections/{collection_identifier}/lifecycle","title":"Get Lifecycle Status","href":"/api-reference/collection-lifecycle/get-lifecycle-status"},{"openapi":"patch /v1/collections/{collection_identifier}/lifecycle","title":"Transition Lifecycle","href":"/api-reference/collection-lifecycle/transition-lifecycle"}]},{"group":"Taxonomies","pages":[{"openapi":"post /v1/collections/{collection_identifier}/apply-taxonomy","title":"Apply Taxonomy to Existing Documents","href":"/api-reference/collection-taxonomies/apply-taxonomy-to-existing-documents"}]},{"group":"Import","pages":[{"openapi":"post /v1/collections/import/infer","title":"Infer import schema","href":"/api-reference/collections/infer-import-schema"},{"openapi":"post /v1/collections/import/validate-mapping","title":"Validate an import mapping","href":"/api-reference/collections/validate-import-mapping"},{"openapi":"post /v1/collections/{collection_identifier}/import","title":"Import external documents into a collection","href":"/api-reference/collections/import-collection-documents"}]},{"openapi":"get /v1/collections/features","title":"Discover Features","href":"/api-reference/features/discover-features"}]},{"group":"Feature Extractors","pages":[{"openapi":"get /v1/collections/features/extractors","title":"List Feature Extractors","href":"/api-reference/feature-extractors/list-feature-extractors"},{"openapi":"get /v1/collections/features/extractors/{feature_extractor_id}","title":"Get Feature Extractor by Name","href":"/api-reference/feature-extractors/get-feature-extractor-by-name"},{"group":"Marketplace","pages":[{"openapi":"get /v1/public/extractors/","title":"List Public Extractors","href":"/api-reference/public-extractor-marketplace/list-public-extractors"},{"openapi":"get /v1/public/extractors/{public_name}","title":"Get Public Extractor","href":"/api-reference/public-extractor-marketplace/get-public-extractor"}]},{"group":"Publishing","pages":[{"openapi":"post /v1/extractors/{extractor_id}/publish","title":"Publish an extractor to the marketplace","href":"/api-reference/extractor-publishing/publish-extractor-marketplace"},{"openapi":"get /v1/extractors/{extractor_id}/publish","title":"Get published extractor status","href":"/api-reference/extractor-publishing/get-published-extractor-status"},{"openapi":"patch /v1/extractors/{extractor_id}/publish","title":"Update published extractor","href":"/api-reference/extractor-publishing/update-published-extractor"},{"openapi":"delete /v1/extractors/{extractor_id}/publish","title":"Unpublish an extractor","href":"/api-reference/extractor-publishing/unpublish-extractor"},{"openapi":"post /v1/extractors/install","title":"Install a public extractor","href":"/api-reference/extractor-publishing/install-public-extractor"}]},{"group":"Submissions","pages":[{"openapi":"get /v1/extractors","title":"List all extractors available to organization","href":"/api-reference/extractor-submissions/list-all-extractors-available-organization"},{"openapi":"post /v1/extractors/submissions/uploads","title":"Get presigned URL for extractor submission","href":"/api-reference/extractor-submissions/get-presigned-url-extractor-submission"},{"openapi":"post /v1/extractors/submissions/uploads/{submission_id}/confirm","title":"Confirm extractor submission upload","href":"/api-reference/extractor-submissions/confirm-extractor-submission-upload"},{"openapi":"get /v1/extractors/submissions","title":"List extractor submissions","href":"/api-reference/extractor-submissions/list-extractor-submissions"},{"openapi":"get /v1/extractors/submissions/{submission_id}","title":"Get submission details","href":"/api-reference/extractor-submissions/get-submission-details"}]}]},{"group":"Documents","pages":[{"openapi":"get /v1/documents/{document_id}","title":"Get a document by ID (namespace-scoped).","href":"/api-reference/documents/get-a-document-by-id-namespace-scoped"},{"openapi":"put /v1/documents/{document_id}","title":"Update a document by ID (namespace-scoped).","href":"/api-reference/documents/update-a-document-by-id-namespace-scoped"},{"openapi":"patch /v1/documents/{document_id}","title":"Partially update a document by ID (namespace-scoped).","href":"/api-reference/documents/partially-update-a-document-by-id-namespace-scoped"},{"openapi":"post /v1/documents/list","title":"List documents across all collections (namespace-scoped).","href":"/api-reference/documents/list-documents-across-all-collections-namespace-scoped"},{"openapi":"post /v1/documents/batch-get","title":"Batch get documents by IDs","href":"/api-reference/documents/batch-get-documents-by-ids"},{"openapi":"post /v1/documents/list/batch","title":"Run multiple list-documents queries concurrently.","href":"/api-reference/documents/run-multiple-list-documents-queries-concurrently"}]},{"group":"Retrievers","pages":[{"openapi":"post /v1/retrievers","title":"Create Retriever","href":"/api-reference/retrievers/create-retriever"},{"openapi":"post /v1/retrievers/list","title":"List Retrievers","href":"/api-reference/retrievers/list-retrievers"},{"openapi":"get /v1/retrievers/{retriever_id}","title":"Get Retriever","href":"/api-reference/retrievers/get-retriever"},{"openapi":"patch /v1/retrievers/{retriever_id}","title":"Patch Retriever","href":"/api-reference/retrievers/patch-retriever"},{"openapi":"post /v1/retrievers/{retriever_id}/clone","title":"Clone Retriever","href":"/api-reference/retrievers/clone-retriever"},{"openapi":"delete /v1/retrievers/{retriever_id}","title":"Delete Retriever","href":"/api-reference/retrievers/delete-retriever"},{"openapi":"post /v1/retrievers/{retriever_id}/execute","title":"Execute Retriever (Auto-Optimized)","href":"/api-reference/retrievers/execute-retriever-auto-optimized"},{"openapi":"post /v1/retrievers/{retriever_id}/execute/batch","title":"Batch Execute Retriever","href":"/api-reference/retrievers/batch-execute-retriever"},{"openapi":"post /v1/retrievers/{retriever_id}/executions/list","title":"List Executions","href":"/api-reference/retrievers/list-executions"},{"openapi":"get /v1/retrievers/{retriever_id}/executions/{execution_id}","title":"Get Execution","href":"/api-reference/retrievers/get-execution"},{"openapi":"get /v1/retrievers/{retriever_id}/executions/{execution_id}/status","title":"Get Live Execution Status","href":"/api-reference/retrievers/get-live-execution-status"},{"openapi":"post /v1/retrievers/{retriever_id}/execute/explain","title":"Explain Retriever Execution Plan","href":"/api-reference/retrievers/explain-retriever-execution-plan"},{"openapi":"get /v1/retrievers/{retriever_id}/executions/{execution_id}/profile","title":"Get Execution Query Profile (explain-on-execute read path)","href":"/api-reference/retrievers/get-execution-profile"},{"openapi":"get /v1/retrievers/typeahead","title":"Typeahead","href":"/api-reference/retrievers/typeahead"},{"group":"Stages","pages":[{"openapi":"get /v1/retrievers/stages","title":"List Available Retriever Stages","href":"/api-reference/retriever-stages/list-available-retriever-stages"}]},{"group":"Interactions","pages":[{"openapi":"post /v1/retrievers/interactions","title":"Create Interaction","href":"/api-reference/retriever-interactions/create-interaction"},{"openapi":"post /v1/retrievers/interactions/list","title":"List Interactions","href":"/api-reference/retriever-interactions/list-interactions"},{"openapi":"get /v1/retrievers/interactions/{interaction_id}","title":"Get Interaction","href":"/api-reference/retriever-interactions/get-interaction"},{"openapi":"delete /v1/retrievers/interactions/{interaction_id}","title":"Delete Interaction","href":"/api-reference/retriever-interactions/delete-interaction"},{"openapi":"post /v1/retrievers/interactions/batch","title":"Create Interactions Bulk","href":"/api-reference/retriever-interactions/create-interactions-bulk"}]},{"group":"Evaluations","pages":[{"openapi":"get /v1/retrievers/evaluations/datasets","title":"List evaluation datasets","href":"/api-reference/retriever-evaluations/list-evaluation-datasets"},{"openapi":"post /v1/retrievers/evaluations/datasets","title":"Create evaluation dataset","href":"/api-reference/retriever-evaluations/create-evaluation-dataset"},{"openapi":"get /v1/retrievers/evaluations/datasets/{dataset_identifier}","title":"Get evaluation dataset","href":"/api-reference/retriever-evaluations/get-evaluation-dataset"},{"openapi":"get /v1/retrievers/{retriever_id}/evaluations","title":"List evaluations","href":"/api-reference/retriever-evaluations/list-evaluations"},{"openapi":"post /v1/retrievers/{retriever_id}/evaluations","title":"Run evaluation","href":"/api-reference/retriever-evaluations/run-evaluation"},{"openapi":"get /v1/retrievers/{retriever_id}/evaluations/{evaluation_id}","title":"Get evaluation results","href":"/api-reference/retriever-evaluations/get-evaluation-results"},{"openapi":"post /v1/evaluations/score","title":"Score predictions vs ground truth (stateless)","href":"/api-reference/retriever-evaluations/score-predictions"},{"openapi":"get /v1/evaluations","title":"Discover evaluation endpoints","href":"/api-reference/retriever-evaluations/discover-evaluation-endpoints"},{"openapi":"post /v1/retrievers/{retriever_id}/evaluations/generate-from-interactions","title":"Generate evaluation dataset from interactions","href":"/api-reference/retriever-evaluations/generate-from-interactions"}]},{"group":"Benchmarks","pages":[{"openapi":"get /v1/retrievers/benchmarks","title":"List benchmarks","href":"/api-reference/retriever-benchmarks/list-benchmarks"},{"openapi":"post /v1/retrievers/benchmarks","title":"Create benchmark","href":"/api-reference/retriever-benchmarks/create-benchmark"},{"openapi":"get /v1/retrievers/benchmarks/{benchmark_id}","title":"Get benchmark","href":"/api-reference/retriever-benchmarks/get-benchmark"},{"openapi":"delete /v1/retrievers/benchmarks/{benchmark_id}","title":"Delete benchmark","href":"/api-reference/retriever-benchmarks/delete-benchmark"}]},{"group":"API Keys","pages":[{"openapi":"post /v1/retrievers/{retriever_id}/api-keys","title":"Create Retriever API Key","href":"/api-reference/retriever-api-keys/create-retriever-api-key"},{"openapi":"get /v1/retrievers/{retriever_id}/api-keys","title":"List Retriever API Keys","href":"/api-reference/retriever-api-keys/list-retriever-api-keys"},{"openapi":"delete /v1/retrievers/{retriever_id}/api-keys/{key_id}","title":"Revoke Retriever API Key","href":"/api-reference/retriever-api-keys/revoke-retriever-api-key"}]},{"group":"Adhoc","pages":[{"openapi":"post /v1/retrievers/execute","title":"Execute Adhoc Retriever","href":"/api-reference/adhoc-retrievers/execute-adhoc-retriever"},{"openapi":"post /v1/retrievers/executions/list","title":"List Adhoc Executions","href":"/api-reference/adhoc-retrievers/list-adhoc-executions"},{"openapi":"get /v1/retrievers/executions/{execution_id}","title":"Get Adhoc Execution","href":"/api-reference/adhoc-retrievers/get-adhoc-execution"}]},{"group":"Publishing","pages":[{"openapi":"post /v1/retrievers/{retriever_id}/publish","title":"Publish Retriever","href":"/api-reference/published-retrievers/publish-retriever"},{"openapi":"get /v1/retrievers/published","title":"List Published Retrievers","href":"/api-reference/published-retrievers/list-published-retrievers"},{"openapi":"get /v1/retrievers/{retriever_id}/publish","title":"Get Published Retriever","href":"/api-reference/published-retrievers/get-published-retriever"},{"openapi":"patch /v1/retrievers/{retriever_id}/publish","title":"Update Published Retriever","href":"/api-reference/published-retrievers/update-published-retriever"},{"openapi":"delete /v1/retrievers/{retriever_id}/publish","title":"Unpublish Retriever","href":"/api-reference/published-retrievers/unpublish-retriever"},{"openapi":"get /v1/retrievers/{retriever_id}/publish/availability","title":"Check Name Availability","href":"/api-reference/published-retrievers/check-name-availability"},{"openapi":"get /v1/retrievers/publish/stats","title":"Get Organization Publish Stats","href":"/api-reference/published-retrievers/get-organization-publish-stats"},{"openapi":"post /v1/retrievers/{retriever_id}/publish/reconcile","title":"Reconcile Publish State","href":"/api-reference/published-retrievers/reconcile-publish-state"}]},{"group":"Public Retriever API","pages":[{"openapi":"get /v1/public/retrievers/","title":"List Public Retrievers","href":"/api-reference/public-retriever-api/list-public-retrievers"},{"openapi":"get /v1/public/retrievers/{public_name}/config","title":"Get Public Retriever Config","href":"/api-reference/public-retriever-api/get-public-retriever-config"},{"openapi":"get /v1/public/retrievers/{public_name}/template","title":"Get Public Retriever Template","href":"/api-reference/public-retriever-api/get-public-retriever-template"},{"openapi":"post /v1/public/retrievers/{public_name}/execute","title":"Execute Public Retriever","href":"/api-reference/public-retriever-api/execute-public-retriever"},{"openapi":"post /v1/public/retrievers/{public_name}/verify","title":"Verify Password","href":"/api-reference/public-retriever-api/verify-password"},{"openapi":"post /v1/public/retrievers/{public_name}/interactions","title":"Track Interaction","href":"/api-reference/public-retriever-api/track-interaction"},{"openapi":"post /v1/public/retrievers/{public_name}/interactions/batch","title":"Track Interaction Batch","href":"/api-reference/public-retriever-api/track-interaction-batch"}]},{"group":"Feature search","pages":[{"openapi":"post /v1/features/search","title":"Feature Search","href":"/api-reference/feature-search/feature-search"}]}]},{"group":"Enrich \u0026 Improve","pages":[{"group":"Taxonomies","pages":[{"openapi":"post /v1/taxonomies","title":"Create Taxonomy","href":"/api-reference/taxonomies/create-taxonomy"},{"openapi":"get /v1/taxonomies/{taxonomy_identifier}","title":"Get Taxonomy","href":"/api-reference/taxonomies/get-taxonomy"},{"openapi":"patch /v1/taxonomies/{taxonomy_identifier}","title":"Partially Update Taxonomy","href":"/api-reference/taxonomies/partially-update-taxonomy"},{"openapi":"post /v1/taxonomies/list","title":"List Taxonomies","href":"/api-reference/taxonomies/list-taxonomies"},{"openapi":"post /v1/taxonomies/execute/{taxonomy_identifier}","title":"Test taxonomy configuration (validation only) — DEPRECATED path","href":"/api-reference/taxonomies/test-taxonomy-configuration-validation-only"},{"openapi":"get /v1/taxonomies/{taxonomy_id}/versions","title":"List Taxonomy Versions","href":"/api-reference/taxonomies/list-taxonomy-versions"},{"openapi":"post /v1/taxonomies/{taxonomy_id}/versions","title":"Create Taxonomy Version","href":"/api-reference/taxonomies/create-taxonomy-version"},{"openapi":"post /v1/taxonomies/{taxonomy_identifier}/clone","title":"Clone Taxonomy","href":"/api-reference/taxonomies/clone-taxonomy"},{"openapi":"delete /v1/taxonomies/{taxonomy_identifier}","title":"Delete Taxonomy","href":"/api-reference/taxonomies/delete-taxonomy"},{"group":"Analytics","pages":[{"openapi":"get /v1/taxonomies/{taxonomy_id}/analytics/available-steps","title":"Get Available Steps","href":"/api-reference/taxonomy-analytics/get-available-steps"},{"openapi":"post /v1/taxonomies/{taxonomy_id}/analytics/transitions","title":"Compute step transition analytics","href":"/api-reference/taxonomy-analytics/compute-step-transition-analytics"},{"openapi":"post /v1/taxonomies/{taxonomy_id}/analytics/paths","title":"Analyze multi-step transition paths","href":"/api-reference/taxonomy-analytics/analyze-multi-step-transition-paths"},{"openapi":"get /v1/taxonomies/{taxonomy_id}/analytics/runs","title":"List taxonomy analytics run history","href":"/api-reference/taxonomy-analytics/list-taxonomy-analytics-run-history"},{"openapi":"get /v1/taxonomies/{taxonomy_id}/analytics/runs/{run_id}","title":"Get a taxonomy analytics run","href":"/api-reference/taxonomy-analytics/get-taxonomy-analytics-run"},{"openapi":"post /v1/taxonomies/{taxonomy_id}/analytics/runs/{run_id}/rerun","title":"Re-run a stored taxonomy analytics run","href":"/api-reference/taxonomy-analytics/re-run-stored-taxonomy-analytics-run"}]},{"openapi":"get /v1/taxonomies","title":"List taxonomies (GET alias for POST /list).","href":"/api-reference/taxonomies/list-taxonomies-get"},{"openapi":"post /v1/taxonomies/from-documents","title":"Create a taxonomy from a document selection or a cluster run (one gesture)","href":"/api-reference/taxonomies/create-taxonomy-from-document-selection"},{"openapi":"post /v1/taxonomies/{taxonomy_identifier}/nodes/from-documents","title":"Add a taxonomy node derived from a document selection","href":"/api-reference/taxonomies/add-taxonomy-node-derived-from-document"},{"openapi":"post /v1/taxonomies/{taxonomy_identifier}/execute","title":"Test taxonomy configuration (validation only)","href":"/api-reference/taxonomies/test-taxonomy-configuration"}]},{"group":"Clusters","pages":[{"openapi":"post /v1/clusters","title":"Create Cluster","href":"/api-reference/clusters/create-cluster"},{"openapi":"get /v1/clusters/{cluster_identifier}","title":"Get Cluster","href":"/api-reference/clusters/get-cluster"},{"openapi":"patch /v1/clusters/{cluster_identifier}","title":"Partially Update Cluster","href":"/api-reference/clusters/partially-update-cluster"},{"openapi":"post /v1/clusters/list","title":"List Clusters","href":"/api-reference/clusters/list-clusters"},{"openapi":"post /v1/clusters/{cluster_id}/execute","title":"Execute Clustering","href":"/api-reference/clusters/execute-clustering"},{"openapi":"get /v1/clusters/{cluster_id}/groups","title":"List Cluster Groups","href":"/api-reference/clusters/list-cluster-groups"},{"openapi":"delete /v1/clusters/{cluster_id}","title":"Delete Cluster","href":"/api-reference/clusters/delete-cluster"},{"group":"Triggers","pages":[{"openapi":"post /v1/clusters/triggers","title":"Create Cluster Trigger","href":"/api-reference/cluster-triggers/create-cluster-trigger"},{"openapi":"post /v1/clusters/triggers/list","title":"List Cluster Triggers","href":"/api-reference/cluster-triggers/list-cluster-triggers"},{"openapi":"get /v1/clusters/triggers/{trigger_id}","title":"Get Cluster Trigger","href":"/api-reference/cluster-triggers/get-cluster-trigger"},{"openapi":"patch /v1/clusters/triggers/{trigger_id}","title":"Update Cluster Trigger","href":"/api-reference/cluster-triggers/update-cluster-trigger"},{"openapi":"post /v1/clusters/triggers/{trigger_id}/pause","title":"Pause Cluster Trigger","href":"/api-reference/cluster-triggers/pause-cluster-trigger"},{"openapi":"post /v1/clusters/triggers/{trigger_id}/resume","title":"Resume Cluster Trigger","href":"/api-reference/cluster-triggers/resume-cluster-trigger"},{"openapi":"post /v1/clusters/triggers/{trigger_id}/history","title":"Get Trigger Execution History","href":"/api-reference/cluster-triggers/get-trigger-execution-history"},{"openapi":"delete /v1/clusters/triggers/{trigger_id}","title":"Delete Cluster Trigger","href":"/api-reference/cluster-triggers/delete-cluster-trigger"}]},{"group":"Executions","pages":[{"openapi":"get /v1/clusters/{cluster_id}/executions","title":"Get Latest Cluster Execution","href":"/api-reference/cluster-executions/get-latest-cluster-execution"},{"openapi":"get /v1/clusters/{cluster_id}/executions/{run_id}","title":"Get Specific Cluster Execution","href":"/api-reference/cluster-executions/get-specific-cluster-execution"},{"openapi":"post /v1/clusters/{cluster_id}/executions/list","title":"List Cluster Execution History","href":"/api-reference/cluster-executions/list-cluster-execution-history"},{"openapi":"post /v1/clusters/{cluster_id}/executions/{run_id}/cancel","title":"Cancel Execution","href":"/api-reference/cluster-executions/cancel-execution"},{"openapi":"get /v1/clusters/{cluster_id}/executions/{run_id}/export","title":"Export Cluster Run Data (CSV / Parquet)","href":"/api-reference/cluster-executions/export-cluster-run-data"},{"openapi":"patch /v1/clusters/{cluster_id}/executions/{run_id}/labels","title":"Rename Cluster Labels (Per-Execution)","href":"/api-reference/cluster-executions/rename-cluster-labels"},{"openapi":"patch /v1/clusters/{cluster_id}/executions/{run_id}/name","title":"Name an Execution Run","href":"/api-reference/cluster-executions/name-execution-run"}]},{"openapi":"get /v1/clusters","title":"List Clusters (GET)","href":"/api-reference/clusters/list-clusters-get"},{"openapi":"get /v1/clusters/{cluster_id}/visualization","title":"Cluster Visualization Data","href":"/api-reference/clusters/cluster-visualization-data"}]},{"group":"Annotations","pages":[{"openapi":"post /v1/annotations","title":"Create Annotation","href":"/api-reference/annotations/create-annotation"},{"openapi":"get /v1/annotations/{annotation_id}","title":"Get Annotation","href":"/api-reference/annotations/get-annotation"},{"openapi":"get /v1/annotations/{annotation_id}/versions","title":"Get Annotation Versions","href":"/api-reference/annotations/get-annotation-versions"},{"openapi":"get /v1/annotations/{annotation_id}/versions/{version}","title":"Get Annotation At Version","href":"/api-reference/annotations/get-annotation-at-version"},{"openapi":"post /v1/annotations/list","title":"List Annotations","href":"/api-reference/annotations/list-annotations"},{"openapi":"get /v1/annotations/stats","title":"Annotation Stats","href":"/api-reference/annotations/annotation-stats"},{"openapi":"patch /v1/annotations/{annotation_id}","title":"Patch Annotation","href":"/api-reference/annotations/update-annotation"},{"openapi":"delete /v1/annotations/{annotation_id}","title":"Delete Annotation","href":"/api-reference/annotations/delete-annotation"},{"openapi":"post /v1/annotations/bulk","title":"Bulk Annotations","href":"/api-reference/annotations/bulk-annotations"}]}]},{"group":"Automate","pages":[{"group":"Triggers","pages":[{"openapi":"post /v1/triggers","title":"Create Trigger","href":"/api-reference/create-trigger"},{"openapi":"post /v1/triggers/list","title":"List Triggers","href":"/api-reference/list-triggers"},{"openapi":"get /v1/triggers/{trigger_id}","title":"Get Trigger","href":"/api-reference/get-trigger"},{"openapi":"patch /v1/triggers/{trigger_id}","title":"Update Trigger","href":"/api-reference/update-trigger"},{"openapi":"delete /v1/triggers/{trigger_id}","title":"Delete Trigger","href":"/api-reference/delete-trigger"},{"openapi":"post /v1/triggers/{trigger_id}/execute","title":"Execute Trigger Now","href":"/api-reference/execute-trigger-now"},{"openapi":"post /v1/triggers/{trigger_id}/pause","title":"Pause Trigger","href":"/api-reference/pause-trigger"},{"openapi":"post /v1/triggers/{trigger_id}/resume","title":"Resume Trigger","href":"/api-reference/resume-trigger"},{"openapi":"get /v1/triggers/{trigger_id}/history","title":"Get Trigger Execution History","href":"/api-reference/get-trigger-execution-history"},{"openapi":"get /v1/triggers","title":"List Triggers (GET alias for POST /list).","href":"/api-reference/triggers/list-triggers"}]},{"group":"Webhooks","pages":[{"openapi":"post /v1/organizations/webhooks","title":"Create Webhook","href":"/api-reference/webhooks/create-webhook"},{"openapi":"post /v1/organizations/webhooks/list","title":"List Webhooks","href":"/api-reference/webhooks/list-webhooks"},{"openapi":"get /v1/organizations/webhooks/{identifier}","title":"Get Webhook","href":"/api-reference/webhooks/get-webhook"},{"openapi":"put /v1/organizations/webhooks/{identifier}","title":"Update Webhook","href":"/api-reference/webhooks/update-webhook"},{"openapi":"delete /v1/organizations/webhooks/{identifier}","title":"Delete Webhook","href":"/api-reference/webhooks/delete-webhook"}]},{"group":"Alerts","pages":[{"openapi":"post /v1/alerts","title":"Create Alert","href":"/api-reference/alerts/create-alert"},{"openapi":"get /v1/alerts/{alert_identifier}","title":"Get Alert","href":"/api-reference/alerts/get-alert"},{"openapi":"patch /v1/alerts/{alert_identifier}","title":"Update Alert","href":"/api-reference/alerts/update-alert"},{"openapi":"post /v1/alerts/list","title":"List Alerts","href":"/api-reference/alerts/list-alerts"},{"openapi":"delete /v1/alerts/{alert_identifier}","title":"Delete Alert","href":"/api-reference/alerts/delete-alert"},{"openapi":"get /v1/alerts/{alert_identifier}/executions","title":"List Alert Executions","href":"/api-reference/alerts/list-alert-executions"},{"openapi":"get /v1/alerts/executions/{execution_id}","title":"Get Alert Execution","href":"/api-reference/alerts/get-alert-execution"},{"openapi":"get /v1/alerts/{alert_identifier}/results","title":"Get Latest Alert Result","href":"/api-reference/alerts/get-latest-alert-result"},{"openapi":"get /v1/alerts/executions","title":"List All Executions","href":"/api-reference/alerts/list-all-executions"},{"openapi":"get /v1/alerts","title":"List Alerts (GET alias for POST /list).","href":"/api-reference/alerts/list-alerts-get"},{"openapi":"post /v1/organizations/alerts","title":"Create Org-Scoped Alert","href":"/api-reference/alerts/create-org-scoped-alert"},{"openapi":"get /v1/organizations/alerts","title":"List Org-Scoped Alerts (GET alias for POST /list).","href":"/api-reference/alerts/list-org-scoped-alerts"},{"openapi":"post /v1/organizations/alerts/list","title":"List Org-Scoped Alerts","href":"/api-reference/alerts/list-org-scoped-alerts-list"},{"openapi":"get /v1/organizations/alerts/{alert_identifier}","title":"Get Org-Scoped Alert","href":"/api-reference/alerts/get-org-scoped-alert"},{"openapi":"patch /v1/organizations/alerts/{alert_identifier}","title":"Update Org-Scoped Alert","href":"/api-reference/alerts/update-org-scoped-alert"},{"openapi":"delete /v1/organizations/alerts/{alert_identifier}","title":"Delete Org-Scoped Alert","href":"/api-reference/alerts/delete-org-scoped-alert"}]},{"group":"Notifications","pages":[{"openapi":"post /v1/notifications/list","title":"List Notifications","href":"/api-reference/notifications/list-notifications"},{"openapi":"get /v1/notifications/{notification_id}","title":"Get Notification","href":"/api-reference/notifications/get-notification"},{"openapi":"post /v1/notifications/{notification_id}/read","title":"Mark As Read","href":"/api-reference/notifications/mark-as-read"},{"openapi":"post /v1/notifications/read/all","title":"Mark All As Read","href":"/api-reference/notifications/mark-all-as-read"},{"openapi":"get /v1/notifications/unread/count","title":"Get Unread Count","href":"/api-reference/notifications/get-unread-count"},{"openapi":"delete /v1/notifications/{notification_id}","title":"Delete Notification","href":"/api-reference/notifications/delete-notification"},{"openapi":"get /v1/notifications/preferences","title":"Get Preferences","href":"/api-reference/notifications/get-preferences"},{"openapi":"put /v1/notifications/preferences","title":"Update Preferences","href":"/api-reference/notifications/update-preferences"},{"openapi":"get /v1/notifications/preferences/reminders","title":"Get Reminder Preferences","href":"/api-reference/notifications/get-reminder-preferences"},{"openapi":"put /v1/notifications/preferences/reminders","title":"Update Reminder Preferences","href":"/api-reference/notifications/update-reminder-preferences"},{"openapi":"get /v1/notifications/funnel/state","title":"Get Funnel State","href":"/api-reference/notifications/get-funnel-state"},{"openapi":"post /v1/notifications/funnel/advance","title":"Advance Funnel Stage","href":"/api-reference/notifications/advance-funnel-stage"}]},{"group":"Tasks","pages":[{"openapi":"post /v1/tasks/list","title":"List Tasks","href":"/api-reference/tasks/list-tasks"},{"openapi":"get /v1/tasks/{task_id}","title":"Get Task Information","href":"/api-reference/tasks/get-task-information"},{"openapi":"delete /v1/tasks/{task_id}","title":"Kill Task","href":"/api-reference/tasks/kill-task"}]},{"group":"Batch Queue","pages":[{"openapi":"post /v1/batches/list","title":"List All Batches","href":"/api-reference/batches/list-all-batches"},{"openapi":"get /v1/batches/{batch_id}","title":"Get Batch by ID","href":"/api-reference/batches/get-batch-by-id"},{"openapi":"post /v1/batches/{batch_id}/cancel","title":"Cancel Batch","href":"/api-reference/batches/cancel-batch"},{"openapi":"get /v1/batches/queue","title":"Batch Queue Status","href":"/api-reference/batches/batch-queue-status"}]}]},{"group":"Administer","pages":[{"group":"Organization","pages":[{"openapi":"get /v1/me","title":"Whoami","href":"/api-reference/account/whoami"},{"openapi":"get /v1/organizations","title":"Get Organization","href":"/api-reference/organizations/get-organization"},{"openapi":"patch /v1/organizations","title":"Update Organization","href":"/api-reference/organizations/update-organization"},{"openapi":"get /v1/organizations/targets","title":"Get Organization Targets","href":"/api-reference/organizations/get-organization-targets"},{"group":"Users","pages":[{"openapi":"get /v1/organizations/users","title":"List Users","href":"/api-reference/organization-users/list-users"},{"openapi":"post /v1/organizations/users","title":"Create User","href":"/api-reference/organization-users/create-user"},{"openapi":"get /v1/organizations/users/{user_email}","title":"Get User","href":"/api-reference/organization-users/get-user"},{"openapi":"patch /v1/organizations/users/{user_email}","title":"Update User","href":"/api-reference/organization-users/update-user"},{"openapi":"delete /v1/organizations/users/{user_email}","title":"Delete User","href":"/api-reference/organization-users/delete-user"}]},{"group":"API Keys","pages":[{"openapi":"get /v1/organizations/users/{user_email}/api-keys","title":"List Api Keys","href":"/api-reference/organization-api-keys/list-api-keys"},{"openapi":"post /v1/organizations/users/{user_email}/api-keys","title":"Create Api Key","href":"/api-reference/organization-api-keys/create-api-key"},{"openapi":"patch /v1/organizations/users/{user_email}/api-keys/{key_name}","title":"Update Api Key","href":"/api-reference/organization-api-keys/update-api-key"},{"openapi":"post /v1/organizations/users/{user_email}/api-keys/{key_name}/rotate","title":"Rotate Api Key","href":"/api-reference/organization-api-keys/rotate-api-key"},{"openapi":"delete /v1/organizations/users/{user_email}/api-keys/{key_name}","title":"Delete Api Key","href":"/api-reference/organization-api-keys/delete-api-key"},{"openapi":"post /v1/auth/token-exchange","title":"Exchange a workload OIDC token for a short-lived API key","description":"Trade the OIDC token a workload's platform issued for a Mixpeek API key.\n\nConfigure a workload identity provider on the organization first (``PATCH\n/v1/organizations`` with ``workload_identity_providers``, or Studio >\nSettings > Organization > Workload identity). The workload then sends its\ntoken here with the provider's ``provider_id`` and uses the returned\n``access_token`` as ``Authorization: Bearer \u003caccess_token>`` until\n``expires_at``. No API key is needed to call this route.\n\nOn Vercel, the token is ``getVercelOidcToken()`` from ``@vercel/oidc``; on\nGitHub Actions it is ``core.getIDToken(audience)`` with ``permissions:\nid-token: write``.","href":"/api-reference/organization-api-keys/exchange-oidc-token"}]},{"group":"Storage Connections","pages":[{"openapi":"post /v1/organizations/connections/list","title":"List Storage Connections","href":"/api-reference/organization-connections/list-storage-connections"},{"openapi":"post /v1/organizations/connections","title":"Create Storage Connection","description":"Create a new storage provider connection.\n\nEstablishes a connection to an external storage provider (Google Drive, S3, etc.)\nfor use in sync operations. Credentials are validated before saving unless\ntest_before_save is False.\n\n**Use Cases:**\n- Connect to team Google Drive for automated file ingestion\n- Link customer S3 buckets for batch processing\n- Set up storage connections for sync operations\n\n**Security:**\n- Requires ADMIN permission\n- Credentials never appear in read responses; only the credential type is returned\n- Connection is tested before saving (unless test_before_save=False)\n- Audit log entry created for compliance\n\n**Example:**\n```bash\ncurl -X POST \"http://localhost:8000/v1/organizations/connections\" \\\n -H \"Authorization: Bearer YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"Marketing Drive\",\n \"provider_type\": \"google_drive\",\n \"provider_config\": {\n \"credentials\": {...},\n \"shared_drive_id\": \"0AH-Xabc123\"\n }\n }'\n```","href":"/api-reference/organization-connections/create-storage-connection"},{"openapi":"get /v1/organizations/connections/{connection_identifier}","title":"Get Storage Connection","href":"/api-reference/organization-connections/get-storage-connection"},{"openapi":"patch /v1/organizations/connections/{connection_identifier}","title":"Update Storage Connection","href":"/api-reference/organization-connections/update-storage-connection"},{"openapi":"post /v1/organizations/connections/{connection_identifier}/test","title":"Test Storage Connection","href":"/api-reference/organization-connections/test-storage-connection"},{"openapi":"delete /v1/organizations/connections/{connection_identifier}","title":"Delete Storage Connection","href":"/api-reference/organization-connections/delete-storage-connection"},{"openapi":"get /v1/organizations/connections/{connection_identifier}/files","title":"List Google Drive Files","href":"/api-reference/organization-connections/list-google-drive-files"},{"openapi":"get /v1/organizations/connections/{connection_identifier}/folders","title":"List Google Drive Folders","href":"/api-reference/organization-connections/list-google-drive-folders"}]},{"group":"Secrets","pages":[{"openapi":"get /v1/organizations/secrets","title":"List Secrets","href":"/api-reference/organization-secrets/list-secrets"},{"openapi":"post /v1/organizations/secrets","title":"Create Secret","href":"/api-reference/organization-secrets/create-secret"},{"openapi":"put /v1/organizations/secrets/{secret_name}","title":"Update Secret","href":"/api-reference/organization-secrets/update-secret"},{"openapi":"delete /v1/organizations/secrets/{secret_name}","title":"Delete Secret","href":"/api-reference/organization-secrets/delete-secret"}]},{"group":"Billing","pages":[{"openapi":"get /v1/organizations/billing/balance","title":"Get Credit Balance","href":"/api-reference/organization-billing/get-credit-balance"},{"openapi":"get /v1/organizations/billing/usage/current","title":"Get Current Usage","href":"/api-reference/organization-billing/get-current-usage"},{"openapi":"get /v1/organizations/billing/usage/vector-backend","title":"Get Vector Backend Usage","href":"/api-reference/organization-billing/get-vector-backend-usage"},{"openapi":"get /v1/organizations/billing/usage/breakdown","title":"Get Usage Breakdown","href":"/api-reference/organization-billing/get-usage-breakdown"},{"openapi":"get /v1/organizations/billing/spending-caps","title":"Get Spending Caps","href":"/api-reference/organization-billing/get-spending-caps"},{"openapi":"post /v1/organizations/billing/spending-caps","title":"Update Spending Caps","href":"/api-reference/organization-billing/update-spending-caps"},{"openapi":"post /v1/organizations/billing/setup-payment-method","title":"Setup Payment Method","href":"/api-reference/organization-billing/setup-payment-method"},{"openapi":"post /v1/organizations/billing/confirm-payment-method","title":"Confirm Payment Method","href":"/api-reference/organization-billing/confirm-payment-method"},{"openapi":"get /v1/organizations/billing/payment-method","title":"Get Payment Method","href":"/api-reference/organization-billing/get-payment-method"},{"openapi":"get /v1/organizations/billing/invoices","title":"List Invoices","href":"/api-reference/organization-billing/list-invoices"},{"openapi":"post /v1/organizations/billing/generate-invoice","title":"Generate Invoice Now","href":"/api-reference/organization-billing/generate-invoice-now"},{"openapi":"post /v1/organizations/billing/enable-auto-billing","title":"Enable Auto Billing","href":"/api-reference/organization-billing/enable-auto-billing"},{"openapi":"post /v1/organizations/billing/disable-auto-billing","title":"Disable Auto Billing","href":"/api-reference/organization-billing/disable-auto-billing"},{"openapi":"post /v1/organizations/billing/estimate","title":"Estimate Cost","href":"/api-reference/organization-billing/estimate-cost"},{"openapi":"get /v1/organizations/billing/transactions","title":"List Transactions","href":"/api-reference/organization-billing/list-transactions"},{"openapi":"post /v1/organizations/billing/checkout","title":"Create Checkout","href":"/api-reference/organization-billing/create-checkout"},{"openapi":"post /v1/organizations/billing/subscribe","title":"Subscribe To Plan","href":"/api-reference/organization-billing/subscribe-plan"},{"openapi":"post /v1/organizations/billing/portal","title":"Open Billing Portal","href":"/api-reference/organization-billing/open-billing-portal"},{"openapi":"get /v1/organizations/billing/subscription","title":"Get Subscription Status","href":"/api-reference/organization-billing/get-subscription-status"},{"openapi":"post /v1/organizations/billing/subscription/cancel","title":"Cancel Subscription","href":"/api-reference/organization-billing/cancel-subscription"},{"openapi":"post /v1/organizations/billing/apply-promo","title":"Apply Promo","href":"/api-reference/organization-billing/apply-promo"},{"openapi":"post /v1/organizations/billing/redeem-promo","title":"Redeem Promo","href":"/api-reference/organization-billing/redeem-promo"}]},{"group":"Usage","pages":[{"openapi":"get /v1/organizations/usage","title":"Get Org Usage","href":"/api-reference/organization-usage/get-org-usage"},{"openapi":"get /v1/organizations/api-keys/{key_id}/usage","title":"Get Api Key Usage","href":"/api-reference/organization-usage/get-api-key-usage"},{"openapi":"get /v1/organizations/api-keys/{key_id}/usage/endpoints","title":"Get Api Key Endpoint Breakdown","href":"/api-reference/organization-usage/get-api-key-endpoint-breakdown"}]},{"group":"Audit Logs","pages":[{"openapi":"get /v1/organizations/audit/logs","title":"List Audit Logs","href":"/api-reference/organization-audit/list-audit-logs"},{"openapi":"get /v1/organizations/audit/logs/export","title":"Export Audit Logs","href":"/api-reference/organization-audit/export-audit-logs"},{"openapi":"get /v1/organizations/audit/logs/{audit_id}","title":"Get Audit Log","href":"/api-reference/organization-audit/get-audit-log"},{"openapi":"get /v1/organizations/audit/settings","title":"Get Audit Settings","href":"/api-reference/organization-audit/get-audit-settings"},{"openapi":"patch /v1/organizations/audit/settings","title":"Update Audit Settings","href":"/api-reference/organization-audit/update-audit-settings"}]},{"group":"Privacy (DSAR)","pages":[{"openapi":"post /v1/organizations/dsar/export","title":"Request Data Export","href":"/api-reference/data-subject-access-requests/request-data-export"},{"openapi":"post /v1/organizations/dsar/delete","title":"Request Data Deletion","href":"/api-reference/data-subject-access-requests/request-data-deletion"},{"openapi":"get /v1/organizations/dsar/status","title":"List Dsar Requests","href":"/api-reference/data-subject-access-requests/list-dsar-requests"}]},{"openapi":"get /v1/organizations/credits","title":"Get Credits","href":"/api-reference/organizations/get-credits"},{"group":"Infrastructure","pages":[{"openapi":"get /v1/organizations/infrastructure/summary","title":"Get Infrastructure","href":"/api-reference/organization-infrastructure/get-infrastructure"}]}]},{"group":"Pricing","pages":[{"openapi":"get /v1/billing/pricing","title":"Get Pricing Configuration","href":"/api-reference/pricing/get-pricing-configuration"}]},{"group":"Support","pages":[{"openapi":"post /v1/support/tickets","title":"Create Support Ticket","href":"/api-reference/support/create-support-ticket"},{"openapi":"get /v1/support/tickets","title":"List Support Tickets","href":"/api-reference/support/list-support-tickets"},{"openapi":"post /v1/support/tickets/list","title":"List Support Tickets (org + global).","href":"/api-reference/support/list-support-tickets-list"},{"openapi":"get /v1/support/tickets/{ticket_identifier}","title":"Get Support Ticket (with message thread).","href":"/api-reference/support/get-support-ticket"},{"openapi":"patch /v1/support/tickets/{ticket_identifier}","title":"Update a support ticket (status/priority).","href":"/api-reference/support/update-support-ticket"},{"openapi":"post /v1/support/tickets/{ticket_identifier}/messages","title":"Reply to a support ticket.","href":"/api-reference/support/reply-support-ticket"},{"openapi":"post /v1/support/comms/list","title":"List correspondence (ticket messages + broadcasts, org + global).","href":"/api-reference/support/list-correspondence"},{"openapi":"get /v1/support/comms","title":"List Correspondence","href":"/api-reference/support/list-correspondence-get"},{"openapi":"post /v1/support/comms/broadcast","title":"Create a broadcast communication (Mixpeek admin only).","href":"/api-reference/support/create-broadcast-communication"},{"openapi":"post /v1/support/videos/upload-url","title":"Presigned PUT to upload a support video to cold storage (admin only).","href":"/api-reference/support/presigned-put-upload-support-video-cold"},{"openapi":"post /v1/support/videos","title":"Register a support video (admin only); triggers Gemini review for uploads.","href":"/api-reference/support/register-support-video-triggers-gemini-review"},{"openapi":"get /v1/support/videos","title":"List Support Videos","href":"/api-reference/support/list-support-videos"},{"openapi":"post /v1/support/videos/list","title":"List curated support videos (org + global).","href":"/api-reference/support/list-curated-support-videos"},{"openapi":"get /v1/support/videos/{video_identifier}","title":"Get a support video (with presigned playback URL + chapters).","href":"/api-reference/support/get-support-video"}]}]},{"group":"Advanced","pages":[{"group":"Apps","pages":[{"openapi":"post /v1/apps","title":"Create an App","href":"/api-reference/apps/create-app"},{"openapi":"get /v1/apps","title":"List Apps","href":"/api-reference/apps/list-apps"},{"openapi":"get /v1/apps/{app_id}","title":"Get an App","href":"/api-reference/apps/get-app"},{"openapi":"patch /v1/apps/{app_id}","title":"Update an App","href":"/api-reference/apps/update-app"},{"openapi":"delete /v1/apps/{app_id}","title":"Delete an App","href":"/api-reference/apps/delete-app"},{"openapi":"post /v1/apps/{app_id}/publish","title":"Publish an App","href":"/api-reference/apps/publish-app"},{"openapi":"post /v1/apps/{app_id}/rollback","title":"Rollback an App","href":"/api-reference/apps/rollback-app"},{"group":"Deploy","pages":[{"openapi":"post /v1/apps/{app_id}/deploy","title":"Deploy an App","href":"/api-reference/apps/deploy-app"},{"openapi":"post /v1/apps/{app_id}/deploy/upload-url","title":"Get presigned upload URL","href":"/api-reference/apps/get-deploy-upload-url"},{"title":"Get Deploy Status","openapi":"GET /v1/apps/{app_id}/deploys/{deploy_id}","href":"/api-reference/apps/get-deploy-status"},{"openapi":"get /v1/apps/{app_id}/deploys/{deploy_id}/logs/stream","title":"Stream deploy logs (SSE)","href":"/api-reference/apps/stream-deploy-logs-sse"},{"openapi":"post /v1/apps/{app_id}/deploy/verify-upload","title":"Verify a presigned-URL upload landed in S3","href":"/api-reference/apps/verify-a-presigned-url-upload-landed-in-s3"},{"openapi":"post /v1/apps/{app_id}/promote","title":"Promote staging to production","href":"/api-reference/apps/promote-staging-to-production"}]},{"group":"GitHub","pages":[{"openapi":"post /v1/apps/{app_id}/connect-repo","title":"Connect a GitHub repository","href":"/api-reference/apps/connect-a-github-repository"},{"openapi":"delete /v1/apps/{app_id}/connect-repo","title":"Disconnect GitHub repository","href":"/api-reference/apps/disconnect-github-repository"}]},{"group":"Users","pages":[{"openapi":"get /v1/apps/{app_id}/users","title":"List app users","href":"/api-reference/apps/list-app-users"},{"openapi":"post /v1/apps/{app_id}/users/invite","title":"Invite a user","href":"/api-reference/apps/invite-a-user"},{"openapi":"get /v1/apps/{app_id}/users/invitations","title":"List pending invitations","href":"/api-reference/apps/list-pending-invitations"},{"openapi":"patch /v1/apps/{app_id}/users/{user_id}/role","title":"Update user role","href":"/api-reference/apps/update-user-role"},{"openapi":"delete /v1/apps/{app_id}/users/{user_id}","title":"Remove a user","href":"/api-reference/apps/remove-a-user"},{"openapi":"delete /v1/apps/{app_id}/users/invitations/{invitation_id}","title":"Revoke an invitation","href":"/api-reference/apps/revoke-an-invitation"}]},{"group":"Versions","pages":[{"openapi":"get /v1/apps/{app_id}/versions","title":"List version history","href":"/api-reference/apps/list-versions"},{"title":"Get Version Details","openapi":"GET /v1/apps/{app_id}/versions/{version}","href":"/api-reference/apps/get-version"},{"title":"Diff Two Versions","openapi":"GET /v1/apps/{app_id}/versions/{from_version}/diff/{to_version}","href":"/api-reference/apps/diff-versions"},{"title":"Download Version Bundle","openapi":"GET /v1/apps/{app_id}/versions/{version}/download","href":"/api-reference/apps/download-version"},{"title":"Restore a Version","openapi":"POST /v1/apps/{app_id}/versions/{version}/restore","href":"/api-reference/apps/restore-version"}]},{"group":"Domains","pages":[{"openapi":"post /v1/apps/{app_id}/domains","title":"Add a custom domain","href":"/api-reference/apps/add-domain"},{"openapi":"get /v1/apps/{app_id}/domains","title":"List custom domains","href":"/api-reference/apps/list-domains"},{"openapi":"delete /v1/apps/{app_id}/domains/{domain}","title":"Remove a domain","href":"/api-reference/apps/delete-domain"},{"openapi":"post /v1/apps/{app_id}/domains/{domain}/verify","title":"Trigger DNS verification","href":"/api-reference/apps/verify-domain"}]},{"group":"Analytics","pages":[{"openapi":"get /v1/apps/{app_id}/analytics","title":"Get app analytics overview","href":"/api-reference/apps/get-app-analytics-overview"},{"openapi":"get /v1/apps/{app_id}/error-rate","title":"Get recent error rate","href":"/api-reference/apps/get-recent-error-rate"},{"openapi":"get /v1/apps/{app_id}/logs","title":"Get runtime or request logs","href":"/api-reference/apps/get-runtime-or-request-logs"}]},{"group":"Public","pages":[{"openapi":"get /v1/public/apps/{slug}/config","title":"Get public App config","href":"/api-reference/public-apps-api/get-app-config"},{"openapi":"post /v1/public/apps/{slug}/search","title":"Execute an App tab search","href":"/api-reference/public-apps-api/search-app"},{"openapi":"get /v1/public/apps/{slug}/gallery","title":"Get App featured gallery","href":"/api-reference/public-apps-api/get-app-gallery"},{"openapi":"get /v1/public/apps/{slug}/taxonomies/{taxonomy_id}/tree","title":"Get taxonomy node tree for an App","href":"/api-reference/public-apps-api/get-app-taxonomies"},{"openapi":"post /v1/public/apps/{slug}/interactions","title":"Track an App interaction event","href":"/api-reference/public-apps-api/track-app-interaction"}]},{"openapi":"get /v1/apps/{app_id}/github/install-url","title":"Get the GitHub App install URL for this app","href":"/api-reference/apps/get-github-app-install-url-app"}]},{"group":"Agent Sessions","pages":[{"openapi":"post /v1/agents/sessions","title":"Create Session","href":"/api-reference/agent-sessions/create-session"},{"openapi":"post /v1/agents/sessions/list","title":"List Sessions","href":"/api-reference/agent-sessions/list-sessions"},{"openapi":"get /v1/agents/sessions/{session_id}","title":"Get Session","href":"/api-reference/agent-sessions/get-session"},{"openapi":"patch /v1/agents/sessions/{session_id}","title":"Patch Session","href":"/api-reference/agent-sessions/patch-session"},{"openapi":"post /v1/agents/sessions/{session_id}/messages","title":"Send Message","href":"/api-reference/agent-sessions/send-message"},{"openapi":"get /v1/agents/sessions/{session_id}/history","title":"Get History","href":"/api-reference/agent-sessions/get-history"},{"openapi":"get /v1/agents/sessions/tools","title":"List Tools","href":"/api-reference/agent-sessions/list-tools"},{"openapi":"post /v1/agents/sessions/intent/detect","title":"Detect Intent","href":"/api-reference/agent-sessions/detect-intent"},{"openapi":"post /v1/agents/sessions/{session_id}/confirmations/{confirmation_id}","title":"Respond To Confirmation","href":"/api-reference/agent-sessions/respond-to-confirmation"},{"openapi":"post /v1/agents/sessions/{session_id}/feedback","title":"Submit Feedback","href":"/api-reference/agent-sessions/submit-feedback"},{"openapi":"delete /v1/agents/sessions/{session_id}","title":"Terminate Session","href":"/api-reference/agent-sessions/terminate-session"}]},{"group":"Templates","pages":[{"group":"Namespace","pages":[{"openapi":"get /v1/templates/namespaces","title":"List Namespace Templates","href":"/api-reference/templates/list-namespace-templates"},{"openapi":"get /v1/templates/namespaces/{template_id}","title":"Get Namespace Template","href":"/api-reference/templates/get-namespace-template"},{"openapi":"post /v1/templates/namespaces/from-namespace/{namespace_id}","title":"Create Namespace Template","href":"/api-reference/templates/create-namespace-template"}]},{"group":"Retriever","pages":[{"openapi":"post /v1/templates/retrievers","title":"List Retriever Templates","href":"/api-reference/templates/list-retriever-templates"},{"openapi":"get /v1/templates/retrievers/{template_id}","title":"Get Retriever Template","href":"/api-reference/templates/get-retriever-template"},{"openapi":"post /v1/templates/retrievers/from-retriever/{retriever_id}","title":"Create Retriever Template","href":"/api-reference/templates/create-retriever-template"},{"openapi":"post /v1/templates/retrievers/{template_id}/instantiate","title":"Instantiate Retriever Template","href":"/api-reference/templates/instantiate-retriever-template"}]},{"group":"Collection","pages":[{"openapi":"post /v1/templates/collections","title":"List Collection Templates","href":"/api-reference/templates/list-collection-templates"},{"openapi":"get /v1/templates/collections/{template_id}","title":"Get Collection Template","href":"/api-reference/templates/get-collection-template"},{"openapi":"post /v1/templates/collections/from-collection/{collection_id}","title":"Create Collection Template","href":"/api-reference/templates/create-collection-template"},{"openapi":"post /v1/templates/collections/{template_id}/instantiate","title":"Instantiate Collection Template","href":"/api-reference/templates/instantiate-collection-template"}]},{"group":"Bucket","pages":[{"openapi":"post /v1/templates/buckets","title":"List Bucket Templates","href":"/api-reference/templates/list-bucket-templates"},{"openapi":"get /v1/templates/buckets/{template_id}","title":"Get Bucket Template","href":"/api-reference/templates/get-bucket-template"},{"openapi":"post /v1/templates/buckets/from-bucket/{bucket_id}","title":"Create Bucket Template","href":"/api-reference/templates/create-bucket-template"},{"openapi":"post /v1/templates/buckets/{template_id}/instantiate","title":"Instantiate Bucket Template","href":"/api-reference/templates/instantiate-bucket-template"}]},{"group":"Cluster","pages":[{"openapi":"post /v1/templates/clusters","title":"List Cluster Templates","href":"/api-reference/templates/list-cluster-templates"},{"openapi":"get /v1/templates/clusters/{template_id}","title":"Get Cluster Template","href":"/api-reference/templates/get-cluster-template"},{"openapi":"post /v1/templates/clusters/from-cluster/{cluster_id}","title":"Create Cluster Template","href":"/api-reference/templates/create-cluster-template"},{"openapi":"post /v1/templates/clusters/{template_id}/instantiate","title":"Instantiate Cluster Template","href":"/api-reference/templates/instantiate-cluster-template"}]},{"group":"Taxonomy","pages":[{"openapi":"post /v1/templates/taxonomies","title":"List Taxonomy Templates","href":"/api-reference/templates/list-taxonomy-templates"},{"openapi":"get /v1/templates/taxonomies/{template_id}","title":"Get Taxonomy Template","href":"/api-reference/templates/get-taxonomy-template"},{"openapi":"post /v1/templates/taxonomies/from-taxonomy/{taxonomy_id}","title":"Create Taxonomy Template","href":"/api-reference/templates/create-taxonomy-template"},{"openapi":"post /v1/templates/taxonomies/{template_id}/instantiate","title":"Instantiate Taxonomy Template","href":"/api-reference/templates/instantiate-taxonomy-template"}]},{"group":"Public Templates","pages":[{"openapi":"get /v1/public/templates/namespaces","title":"List Public Namespace Templates","href":"/api-reference/public-templates-api/list-public-namespace-templates"},{"openapi":"get /v1/public/templates/namespaces/{template_id}","title":"Get Public Namespace Template","href":"/api-reference/public-templates-api/get-public-namespace-template"},{"openapi":"get /v1/public/templates/retrievers","title":"List Public Retriever Templates","href":"/api-reference/public-templates-api/list-public-retriever-templates"},{"openapi":"get /v1/public/templates/retrievers/{template_id}","title":"Get Public Retriever Template","href":"/api-reference/public-templates-api/get-public-retriever-template"},{"openapi":"get /v1/public/templates/scaffolds","title":"List Scaffolds","href":"/api-reference/public-templates-api/list-scaffolds"},{"openapi":"get /v1/public/templates/scaffolds/{template_id}","title":"Get Scaffold","href":"/api-reference/public-templates-api/get-scaffold"},{"openapi":"get /v1/public/templates/scaffolds/{template_id}/sample-data","title":"Get Scaffold Sample Data","href":"/api-reference/public-templates-api/get-scaffold-sample-data"},{"openapi":"get /v1/public/templates/scaffolds/{template_id}/manifest","title":"Get Scaffold Manifest","href":"/api-reference/public-templates-api/get-scaffold-manifest"}]},{"group":"Scaffold Templates","pages":[{"openapi":"post /v1/templates/scaffolds/default","title":"Get Or Create Default Namespace","href":"/api-reference/scaffold-templates/get-or-create-default-namespace"},{"openapi":"get /v1/templates/scaffolds/{template_id}/manifest","title":"Get Scaffold Template Manifest","href":"/api-reference/scaffold-templates/get-scaffold-template-manifest"}]}]},{"group":"Manifest","pages":[{"openapi":"post /v1/manifest/apply","title":"Apply Manifest","href":"/api-reference/manifest/apply-manifest"},{"openapi":"post /v1/manifest/validate","title":"Validate Manifest","href":"/api-reference/manifest/validate-manifest"},{"openapi":"get /v1/manifest/export","title":"Export Manifest Get","href":"/api-reference/manifest/export-manifest"},{"openapi":"post /v1/manifest/diff","title":"Diff Manifest","href":"/api-reference/manifest/diff-manifest"},{"openapi":"post /v1/manifest/generate","title":"Generate Manifest","href":"/api-reference/manifest/generate-manifest"},{"openapi":"post /v1/manifest/lint","title":"Lint Manifest","href":"/api-reference/manifest/lint-manifest"}]},{"group":"Analytics","pages":[{"group":"Namespace","pages":[{"openapi":"get /v1/analytics/namespaces/summary","title":"Get Namespace Summary","href":"/api-reference/analytics/get-namespace-summary"},{"openapi":"get /v1/analytics/indexes/usage","title":"Get Field Usage","href":"/api-reference/analytics/get-field-usage"},{"openapi":"get /v1/analytics/namespaces/fields/performance","title":"Get Field Performance","href":"/api-reference/analytics/get-field-performance"},{"openapi":"get /v1/analytics/namespaces/fields/most-queried","title":"Get Most Queried Fields","href":"/api-reference/analytics/get-most-queried-fields"},{"openapi":"get /v1/analytics/namespaces/indexes/compound-patterns","title":"Get Compound Index Patterns","href":"/api-reference/analytics/get-compound-index-patterns"},{"openapi":"get /v1/analytics/namespaces/indexes/recommendations","title":"Get Index Recommendations","href":"/api-reference/analytics/get-index-recommendations"},{"openapi":"get /v1/analytics/indexes/suggestions","title":"Get Index Suggestions","href":"/api-reference/analytics/get-index-suggestions"},{"openapi":"get /v1/analytics/namespaces/errors","title":"Get Namespace Errors","href":"/api-reference/analytics/get-namespace-errors"}]},{"group":"Buckets","pages":[{"openapi":"get /v1/analytics/buckets/{bucket_id}/health","title":"Get Bucket Health","href":"/api-reference/analytics/get-bucket-health"},{"openapi":"get /v1/analytics/buckets/health","title":"Get Namespace Buckets Health","href":"/api-reference/analytics/get-namespace-buckets-health"},{"openapi":"get /v1/analytics/buckets/{bucket_id}/storage","title":"Get Bucket Storage","href":"/api-reference/analytics/get-bucket-storage"},{"openapi":"get /v1/analytics/buckets/{bucket_id}/usage","title":"Get Bucket Usage","href":"/api-reference/analytics/get-bucket-usage"},{"openapi":"get /v1/analytics/buckets/{bucket_id}/sync-performance","title":"Get Sync Performance","href":"/api-reference/analytics/get-sync-performance"},{"openapi":"get /v1/analytics/buckets/{bucket_id}/sync-comparison","title":"Get Sync Comparison","href":"/api-reference/analytics/get-sync-comparison"},{"openapi":"get /v1/analytics/buckets/{bucket_id}/upload-performance","title":"Get Upload Performance","href":"/api-reference/analytics/get-upload-performance"}]},{"group":"Collections","pages":[{"openapi":"get /v1/analytics/collections/{collection_id}/overview","title":"Get Collection Overview","href":"/api-reference/analytics/get-collection-overview"},{"openapi":"get /v1/analytics/collections/{collection_id}/growth","title":"Get Document Growth","href":"/api-reference/analytics/get-document-growth"},{"openapi":"get /v1/analytics/collections/{collection_id}/latency","title":"Get Latency Metrics","href":"/api-reference/analytics/get-latency-metrics"},{"openapi":"get /v1/analytics/collections/{collection_id}/failures","title":"Get Failure Analysis","href":"/api-reference/analytics/get-failure-analysis"},{"openapi":"get /v1/analytics/extractors/performance","title":"Get Extractor Performance","href":"/api-reference/analytics/get-extractor-performance"}]},{"group":"Retrievers","pages":[{"openapi":"get /v1/analytics/retrievers/{retriever_id}/performance","title":"Get Retriever Performance","href":"/api-reference/analytics/get-retriever-performance"},{"openapi":"get /v1/analytics/retrievers/{retriever_id}/signals","title":"Get Retriever Signals","href":"/api-reference/analytics/get-retriever-signals"},{"openapi":"get /v1/analytics/namespaces/queries/slow","title":"Get Slow Queries","href":"/api-reference/analytics/get-slow-queries"},{"openapi":"get /v1/analytics/retrievers/{retriever_id}/stages","title":"Get Stage Breakdown","href":"/api-reference/analytics/get-stage-breakdown"},{"openapi":"get /v1/analytics/retrievers/{retriever_id}/cache-performance","title":"Get Cache Performance","href":"/api-reference/analytics/get-cache-performance"},{"openapi":"post /v1/analytics/retrievers/{retriever_id}/analyze-tuning","title":"Analyze For Tuning","href":"/api-reference/analytics/analyze-for-tuning"}]},{"group":"Engine","pages":[{"openapi":"get /v1/analytics/performance/engine","title":"Get Engine Performance","href":"/api-reference/analytics/get-engine-performance"},{"openapi":"get /v1/analytics/performance/engine/bottlenecks","title":"Analyze Bottlenecks","href":"/api-reference/analytics/analyze-bottlenecks"},{"openapi":"get /v1/analytics/performance/engine/extractors","title":"Get Extractor Breakdown","href":"/api-reference/analytics/get-extractor-breakdown"},{"openapi":"get /v1/analytics/performance/engine/stages","title":"Get Engine Stage Breakdown","href":"/api-reference/analytics/get-engine-stage-breakdown"},{"openapi":"get /v1/analytics/performance/engine/slow-operations","title":"Get Slowest Operations","href":"/api-reference/analytics/get-slowest-operations"}]},{"group":"Taxonomies","pages":[{"openapi":"get /v1/analytics/taxonomies/{taxonomy_id}/assignments","title":"Get Assignment Metrics","href":"/api-reference/analytics/get-assignment-metrics"},{"openapi":"get /v1/analytics/taxonomies/{taxonomy_id}/confidence","title":"Get Confidence Distribution","href":"/api-reference/analytics/get-confidence-distribution"},{"openapi":"get /v1/analytics/taxonomies/{taxonomy_id}/labels","title":"Get Label Distribution","href":"/api-reference/analytics/get-label-distribution"},{"openapi":"get /v1/analytics/taxonomies/{taxonomy_id}/enrichments","title":"Get Enrichment History","href":"/api-reference/analytics/get-enrichment-history"}]},{"group":"Clusters","pages":[{"openapi":"get /v1/analytics/clusters/{cluster_id}/execution-history","title":"Get Execution History","href":"/api-reference/analytics/get-execution-history"},{"openapi":"get /v1/analytics/clusters/{cluster_id}/failures","title":"Get Failure Analysis","href":"/api-reference/analytics/get-failure-analysis-1"}]},{"group":"Inference \u0026 Extractors","pages":[{"openapi":"get /v1/analytics/collections/{collection_id}/extractors","title":"Get Extractor Performance","href":"/api-reference/analytics/get-extractor-performance-1"}]},{"group":"Diagnostics","pages":[{"openapi":"get /v1/analytics/performance/batches/{batch_id}/diagnostics","title":"Get Batch Diagnostics","href":"/api-reference/analytics/get-batch-diagnostics"},{"openapi":"get /v1/analytics/usage/summary","title":"Get Usage Summary","href":"/api-reference/analytics/get-usage-summary"},{"openapi":"get /v1/analytics/retrievers/{retriever_id}/slow-queries","title":"Get Slowest Queries","href":"/api-reference/analytics/get-slowest-queries"}]}]},{"group":"Discovery","pages":[{"openapi":"get /v1/discovery","title":"Get All Discovery Information","href":"/api-reference/discovery/get-all-discovery-information"},{"openapi":"get /v1/discovery/extractors","title":"List Available Feature Extractors","href":"/api-reference/discovery/list-available-feature-extractors"},{"openapi":"get /v1/discovery/stages","title":"List Available Retriever Stages with Examples","href":"/api-reference/discovery/list-available-retriever-stages-with-examples"},{"openapi":"get /v1/discovery/schema","title":"Get Manifest Schema for Agent Configuration","href":"/api-reference/discovery/get-manifest-schema-for-agent-configuration"}]},{"group":"Inference","pages":[{"openapi":"post /v1/inference","title":"Execute Raw Inference","href":"/api-reference/inference/execute-raw-inference"}]},{"group":"Events","pages":[{"openapi":"get /v1/events","title":"List change feed events","href":"/api-reference/events/list-events"}]},{"group":"Resource Search","pages":[{"openapi":"post /v1/resources/search","title":"Search Resources","href":"/api-reference/resource-search/search-resources"}]},{"group":"Onboarding","pages":[{"openapi":"post /v1/onboarding/infer-config","title":"Infer onboarding configuration","href":"/api-reference/onboarding/infer-onboarding-configuration"},{"openapi":"get /v1/onboarding/suggested-config","title":"Get the org's signup-time suggested namespace","href":"/api-reference/onboarding/get-suggested-config"},{"openapi":"post /v1/signup/agent","title":"Sign up as an agent","href":"/api-reference/onboarding/agent-signup"}]}]}]}]}]},"basePath":"","title":"List Storage Connections - Mixpeek","buildId":"dpl_BSPUBxEoKhhK7HzXVDPxdPvWx4xc","deploymentId":"dpl_BSPUBxEoKhhK7HzXVDPxdPvWx4xc","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Do6EtGSl.js","utils-id4tQ6My.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-Byrixac4.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-nakYa3Zl.js","snippetPresets-Bq-pUS7h.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-CujTC_9K.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-FneVUsVu.js","shallow-DY9WpUCz.js","getApiPlaygroundDisplay-Bz8WpPfA.js","CodeSnippet-DgCuJg4G.js","CodeSnippets-Dub9c4T0.js","Page-CePXnjd1.js","getPastedJson-xdI8y2XB.js","icon--yVw5vkr.js","MethodPill-C47t7MdS.js","DuplicateIcon-BzwJ2LeC.js","createIcon-BzggGy84.js","DynamicMarkdown-AlxJK8VR.js","SectionHeading-CMlwFxdK.js","axios-vUo_bRtp.js","Markdown-BNgNrPsi.js","clsx-apD-Q0Oo.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-qmLwQyWY.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Dc4qTkWx.js"]}