[{"data":1,"prerenderedAt":1553},["ShallowReactive",2],{"navigation_docs_en":3,"-en-developer-extensions-data-connectors-data-sources":445,"-en-developer-extensions-data-connectors-data-sources-surround":1548},[4,30,72,132,260,436],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[10,15,20,25],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fen\u002Fgetting-started\u002Fintroduction","en\u002F1.getting-started\u002F2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fen\u002Fgetting-started\u002Finstallation","en\u002F1.getting-started\u002F3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Use Cases","\u002Fen\u002Fgetting-started\u002Fuse-cases","en\u002F1.getting-started\u002F4.use-cases","i-lucide-layers",{"title":26,"path":27,"stem":28,"icon":29},"Concepts","\u002Fen\u002Fgetting-started\u002Fconcepts","en\u002F1.getting-started\u002F5.concepts","i-lucide-book",{"title":26,"path":31,"stem":32,"children":33,"page":6},"\u002Fen\u002Fconcepts","en\u002F2.concepts",[34,38,43,48,53,58,63,68],{"title":35,"path":36,"stem":37,"icon":14},"Organization","\u002Fen\u002Fconcepts\u002Forganization","en\u002F2.concepts\u002F1.organization",{"title":39,"path":40,"stem":41,"icon":42},"Data Model","\u002Fen\u002Fconcepts\u002Fdata-model","en\u002F2.concepts\u002F2.data-model","i-lucide-database",{"title":44,"path":45,"stem":46,"icon":47},"Access Control","\u002Fen\u002Fconcepts\u002Faccess-permissions","en\u002F2.concepts\u002F3.access-permissions","i-lucide-user-key",{"title":49,"path":50,"stem":51,"icon":52},"Audit Logs","\u002Fen\u002Fconcepts\u002Faudit-logs","en\u002F2.concepts\u002F4.audit-logs","i-lucide-scroll-text",{"title":54,"path":55,"stem":56,"icon":57},"Introspection","\u002Fen\u002Fconcepts\u002Fintrospection","en\u002F2.concepts\u002F6.introspection","i-lucide-database-search",{"title":59,"path":60,"stem":61,"icon":62},"Query Engine","\u002Fen\u002Fconcepts\u002Fquery-engine","en\u002F2.concepts\u002F7.query-engine","i-lucide-workflow",{"title":64,"path":65,"stem":66,"icon":67},"AI","\u002Fen\u002Fconcepts\u002Fai","en\u002F2.concepts\u002F8.ai","i-lucide-sparkles",{"title":69,"path":70,"stem":71,"icon":42},"Caching","\u002Fen\u002Fconcepts\u002Fcaching","en\u002F2.concepts\u002F9.caching",{"title":73,"path":74,"stem":75,"children":76,"page":6},"Guides","\u002Fen\u002Fguides","en\u002F4.guides",[77,82,87,92,97,102,107,112],{"title":78,"path":79,"stem":80,"icon":81},"REST API Quickstart","\u002Fen\u002Fguides\u002Frest-api","en\u002F4.guides\u002F1.rest-api","i-lucide-plug",{"title":83,"path":84,"stem":85,"icon":86},"SDK Quickstart","\u002Fen\u002Fguides\u002Fsdk","en\u002F4.guides\u002F2.sdk","i-lucide-terminal",{"title":88,"path":89,"stem":90,"icon":91},"Configure SSO","\u002Fen\u002Fguides\u002Fconfigure-sso","en\u002F4.guides\u002F3.configure-sso","i-lucide-key-round",{"title":93,"path":94,"stem":95,"icon":96},"Configure MCP","\u002Fen\u002Fguides\u002Fmcp","en\u002F4.guides\u002F4.mcp","i-lucide-brain-cog",{"title":98,"path":99,"stem":100,"icon":101},"Customize Content Space","\u002Fen\u002Fguides\u002Fcustomize-content-space","en\u002F4.guides\u002F5.customize-content-space","i-lucide-columns-3-cog",{"title":103,"path":104,"stem":105,"icon":106},"Build an Application with AI Assistance","\u002Fen\u002Fguides\u002Fbuild-an-application","en\u002F4.guides\u002F6.build-an-application","i-lucide-route",{"title":108,"path":109,"stem":110,"icon":111},"Horizontal Scaling","\u002Fen\u002Fguides\u002Fhorizontal-scaling","en\u002F4.guides\u002F7.horizontal-scaling","i-lucide-network",{"title":113,"icon":114,"path":115,"stem":116,"children":117,"page":6},"Data Connectors","i-lucide-cable","\u002Fen\u002Fguides\u002Fdata-connectors","en\u002F4.guides\u002F8.data-connectors",[118,122,127],{"title":16,"path":119,"stem":120,"icon":121},"\u002Fen\u002Fguides\u002Fdata-connectors\u002Fquickstart","en\u002F4.guides\u002F8.data-connectors\u002F1.quickstart","i-lucide-rocket",{"title":123,"path":124,"stem":125,"icon":126},"Build a Stripe Connector","\u002Fen\u002Fguides\u002Fdata-connectors\u002Fstripe","en\u002F4.guides\u002F8.data-connectors\u002F2.stripe","i-lucide-hammer",{"title":128,"path":129,"stem":130,"icon":131},"Build with AI Agents","\u002Fen\u002Fguides\u002Fdata-connectors\u002Fai-agents","en\u002F4.guides\u002F8.data-connectors\u002F3.ai-agents","i-lucide-bot",{"title":133,"path":134,"stem":135,"children":136,"page":6},"Developer","\u002Fen\u002Fdeveloper","en\u002F5.developer",[137,191,215,220],{"title":138,"path":139,"stem":140,"children":141,"page":6},"Data Access","\u002Fen\u002Fdeveloper\u002Fapi","en\u002F5.developer\u002F1.api",[142,147,152,157,162,167,172,177,182,186],{"title":143,"path":144,"stem":145,"icon":146},"Overview","\u002Fen\u002Fdeveloper\u002Fapi\u002Foverview","en\u002F5.developer\u002F1.api\u002F1.overview","i-lucide-globe",{"title":148,"path":149,"stem":150,"icon":151},"Errors","\u002Fen\u002Fdeveloper\u002Fapi\u002Ferrors","en\u002F5.developer\u002F1.api\u002F10.errors","i-lucide-alert-triangle",{"title":153,"path":154,"stem":155,"icon":156},"Authentication","\u002Fen\u002Fdeveloper\u002Fapi\u002Fauthentication","en\u002F5.developer\u002F1.api\u002F2.authentication","i-lucide-lock",{"title":158,"path":159,"stem":160,"icon":161},"Reading Data","\u002Fen\u002Fdeveloper\u002Fapi\u002Freading-data","en\u002F5.developer\u002F1.api\u002F3.reading-data","i-lucide-book-open",{"title":163,"path":164,"stem":165,"icon":166},"Writing Data","\u002Fen\u002Fdeveloper\u002Fapi\u002Fwriting-data","en\u002F5.developer\u002F1.api\u002F4.writing-data","i-lucide-pencil",{"title":168,"path":169,"stem":170,"icon":171},"Filtering","\u002Fen\u002Fdeveloper\u002Fapi\u002Ffiltering","en\u002F5.developer\u002F1.api\u002F5.filtering","i-lucide-filter",{"title":173,"path":174,"stem":175,"icon":176},"Field Selection","\u002Fen\u002Fdeveloper\u002Fapi\u002Ffield-selection","en\u002F5.developer\u002F1.api\u002F6.field-selection","i-lucide-list-checks",{"title":178,"path":179,"stem":180,"icon":181},"Sorting & Pagination","\u002Fen\u002Fdeveloper\u002Fapi\u002Fsorting-pagination","en\u002F5.developer\u002F1.api\u002F7.sorting-pagination","i-lucide-arrow-up-down",{"title":183,"path":184,"stem":185,"icon":111},"Relational Data","\u002Fen\u002Fdeveloper\u002Fapi\u002Frelational-data","en\u002F5.developer\u002F1.api\u002F8.relational-data",{"title":187,"path":188,"stem":189,"icon":190},"Files & Assets","\u002Fen\u002Fdeveloper\u002Fapi\u002Ffiles","en\u002F5.developer\u002F1.api\u002F9.files","i-lucide-file-up",{"title":192,"path":193,"stem":194,"children":195,"page":6},"Client SDK","\u002Fen\u002Fdeveloper\u002Fsdk","en\u002F5.developer\u002F2.sdk",[196,200,205,210],{"title":197,"path":198,"stem":199,"icon":19},"Installation","\u002Fen\u002Fdeveloper\u002Fsdk\u002Finstallation","en\u002F5.developer\u002F2.sdk\u002F1.installation",{"title":201,"path":202,"stem":203,"icon":204},"Client Setup","\u002Fen\u002Fdeveloper\u002Fsdk\u002Fclient-setup","en\u002F5.developer\u002F2.sdk\u002F2.client-setup","i-lucide-settings",{"title":206,"path":207,"stem":208,"icon":209},"Type System","\u002Fen\u002Fdeveloper\u002Fsdk\u002Ftype-system","en\u002F5.developer\u002F2.sdk\u002F3.type-system","i-lucide-braces",{"title":211,"path":212,"stem":213,"icon":214},"Advanced","\u002Fen\u002Fdeveloper\u002Fsdk\u002Fadvanced","en\u002F5.developer\u002F2.sdk\u002F5.advanced","i-lucide-puzzle",{"title":216,"path":217,"stem":218,"icon":219},"Application Users","\u002Fen\u002Fdeveloper\u002Fapplication-users","en\u002F5.developer\u002F3.application-users","i-lucide-users",{"title":221,"path":222,"stem":223,"children":224,"icon":214},"Extensions","\u002Fen\u002Fdeveloper\u002Fextensions","en\u002F5.developer\u002F3.extensions\u002Findex",[225,226,231],{"title":143,"path":222,"stem":223,"icon":214},{"title":227,"path":228,"stem":229,"icon":230},"Install and Manage Extensions","\u002Fen\u002Fdeveloper\u002Fextensions\u002Finstall","en\u002F5.developer\u002F3.extensions\u002F1.install","i-lucide-package-plus",{"title":113,"path":232,"stem":233,"children":234,"icon":114},"\u002Fen\u002Fdeveloper\u002Fextensions\u002Fdata-connectors","en\u002F5.developer\u002F3.extensions\u002F2.data-connectors\u002Findex",[235,236,241,245,250,255],{"title":143,"path":232,"stem":233,"icon":114},{"title":237,"path":238,"stem":239,"icon":240},"How Data Connectors Run","\u002Fen\u002Fdeveloper\u002Fextensions\u002Fdata-connectors\u002Fruntime","en\u002F5.developer\u002F3.extensions\u002F2.data-connectors\u002F2.runtime","i-lucide-cpu",{"title":242,"path":243,"stem":244,"icon":42},"Data Sources","\u002Fen\u002Fdeveloper\u002Fextensions\u002Fdata-connectors\u002Fdata-sources","en\u002F5.developer\u002F3.extensions\u002F2.data-connectors\u002F3.data-sources",{"title":246,"path":247,"stem":248,"icon":249},"Map an External Data Source","\u002Fen\u002Fdeveloper\u002Fextensions\u002Fdata-connectors\u002Fdata-source-mapping","en\u002F5.developer\u002F3.extensions\u002F2.data-connectors\u002F4.data-source-mapping","i-lucide-map",{"title":251,"path":252,"stem":253,"icon":254},"Handle Errors","\u002Fen\u002Fdeveloper\u002Fextensions\u002Fdata-connectors\u002Ferrors","en\u002F5.developer\u002F3.extensions\u002F2.data-connectors\u002F5.errors","i-lucide-shield-alert",{"title":256,"path":257,"stem":258,"icon":259},"Test a Data Connector","\u002Fen\u002Fdeveloper\u002Fextensions\u002Fdata-connectors\u002Ftesting","en\u002F5.developer\u002F3.extensions\u002F2.data-connectors\u002F6.testing","i-lucide-flask-conical",{"title":261,"path":262,"stem":263,"children":264,"page":6},"Reference","\u002Fen\u002Freference","en\u002F6.reference",[265,269,274,279,295,299,304,340,369,374],{"title":266,"path":267,"stem":268,"icon":204},"Configuration","\u002Fen\u002Freference\u002Fenvironment-variables","en\u002F6.reference\u002F1.environment-variables",{"title":270,"path":271,"stem":272,"icon":273},"System Requirements","\u002Fen\u002Freference\u002Fsystem-requirements","en\u002F6.reference\u002F2.system-requirements","i-lucide-server",{"title":275,"path":276,"stem":277,"icon":278},"Licensing","\u002Fen\u002Freference\u002Flicensing","en\u002F6.reference\u002F3.licensing","i-lucide-gem",{"title":280,"path":281,"stem":282,"children":283,"icon":81},"Connectors","\u002Fen\u002Freference\u002Fconnectors","en\u002F6.reference\u002F4.connectors\u002Findex",[284,285,290],{"title":280,"path":281,"stem":282,"icon":81},{"title":286,"path":287,"stem":288,"icon":289},"PostgreSQL and Supabase","\u002Fen\u002Freference\u002Fconnectors\u002Fpostgresql-supabase","en\u002F6.reference\u002F4.connectors\u002F1.postgresql-supabase","i-simple-icons-postgresql",{"title":291,"path":292,"stem":293,"icon":294},"MySQL and MariaDB","\u002Fen\u002Freference\u002Fconnectors\u002Fmysql-mariadb","en\u002F6.reference\u002F4.connectors\u002F2.mysql-mariadb","i-simple-icons-mysql",{"title":296,"path":297,"stem":298,"icon":209},"Data Types Representation","\u002Fen\u002Freference\u002Fdata-types","en\u002F6.reference\u002F5.data-types",{"title":300,"path":301,"stem":302,"icon":303},"Permissions Reference","\u002Fen\u002Freference\u002Fpermissions","en\u002F6.reference\u002F6.permissions","i-lucide-shield",{"title":305,"path":306,"stem":307,"children":308,"page":6},"API Reference","\u002Fen\u002Freference\u002Fapi-reference","en\u002F6.reference\u002F7.api-reference",[309,313,318],{"title":310,"path":311,"stem":312,"icon":273},"System Endpoints","\u002Fen\u002Freference\u002Fapi-reference\u002Fsystem-endpoints","en\u002F6.reference\u002F7.api-reference\u002F1.system-endpoints",{"title":314,"path":315,"stem":316,"icon":317},"OpenAPI Spec","\u002Fen\u002Freference\u002Fapi-reference\u002Fopenapi-spec","en\u002F6.reference\u002F7.api-reference\u002F2.openapi-spec","i-lucide-file-code",{"title":319,"path":320,"stem":321,"children":322,"icon":324},"Schema Migration","\u002Fen\u002Freference\u002Fapi-reference\u002Fschema-migration","en\u002F6.reference\u002F7.api-reference\u002F3.schema-migration\u002Findex",[323,325,330,335],{"title":319,"path":320,"stem":321,"icon":324},"i-lucide-database-zap",{"title":326,"path":327,"stem":328,"icon":329},"Apply Migrations","\u002Fen\u002Freference\u002Fapi-reference\u002Fschema-migration\u002Fapply-migrations","en\u002F6.reference\u002F7.api-reference\u002F3.schema-migration\u002F1.apply-migrations","i-lucide-upload",{"title":331,"path":332,"stem":333,"icon":334},"Import Changes","\u002Fen\u002Freference\u002Fapi-reference\u002Fschema-migration\u002Fimport-changes","en\u002F6.reference\u002F7.api-reference\u002F3.schema-migration\u002F2.import-changes","i-lucide-refresh-cw",{"title":336,"path":337,"stem":338,"icon":339},"Operation Reference","\u002Fen\u002Freference\u002Fapi-reference\u002Fschema-migration\u002Foperation-reference","en\u002F6.reference\u002F7.api-reference\u002F3.schema-migration\u002F3.operation-reference","i-lucide-list-tree",{"title":341,"path":342,"stem":343,"children":344,"page":6},"Design Considerations","\u002Fen\u002Freference\u002Fdesign-considerations","en\u002F6.reference\u002F8.design-considerations",[345,349,354,359,364],{"title":143,"path":346,"stem":347,"icon":348},"\u002Fen\u002Freference\u002Fdesign-considerations\u002Foverview","en\u002F6.reference\u002F8.design-considerations\u002F1.overview","i-lucide-compass",{"title":350,"path":351,"stem":352,"icon":353},"Instance Configuration","\u002Fen\u002Freference\u002Fdesign-considerations\u002Finstance-configuration-related-problems","en\u002F6.reference\u002F8.design-considerations\u002F3.instance-configuration-related-problems","i-lucide-wrench",{"title":355,"path":356,"stem":357,"icon":358},"Overly Permissive Public Access","\u002Fen\u002Freference\u002Fdesign-considerations\u002Foverly-permissive","en\u002F6.reference\u002F8.design-considerations\u002F4.overly-permissive","i-lucide-shield-off",{"title":360,"path":361,"stem":362,"icon":363},"No Aggregates","\u002Fen\u002Freference\u002Fdesign-considerations\u002Fno-aggregates","en\u002F6.reference\u002F8.design-considerations\u002F5.no-aggregates","i-lucide-sigma",{"title":365,"path":366,"stem":367,"icon":368},"Cross-Data-Source Referential Integrity","\u002Fen\u002Freference\u002Fdesign-considerations\u002Fcross-data-source-referential-integrity","en\u002F6.reference\u002F8.design-considerations\u002F6.cross-data-source-referential-integrity","i-lucide-unlink",{"title":370,"path":371,"stem":372,"icon":373},"CLI","\u002Fen\u002Freference\u002Fcli","en\u002F6.reference\u002F9.cli","i-lucide-square-terminal",{"title":221,"path":375,"stem":376,"children":377,"page":6},"\u002Fen\u002Freference\u002Fextensions","en\u002F6.reference\u002F9.extensions",[378,383,386,405],{"title":379,"path":380,"stem":381,"icon":382},"Extension Config and Manifest","\u002Fen\u002Freference\u002Fextensions\u002Fmanifest","en\u002F6.reference\u002F9.extensions\u002F1.manifest","i-lucide-file-json",{"title":370,"path":384,"stem":385,"icon":86},"\u002Fen\u002Freference\u002Fextensions\u002Fcli","en\u002F6.reference\u002F9.extensions\u002F2.cli",{"title":387,"path":388,"stem":389,"children":390,"page":6},"Extension Kit","\u002Fen\u002Freference\u002Fextensions\u002Fextension-kit","en\u002F6.reference\u002F9.extensions\u002F3.extension-kit",[391,395,400],{"title":392,"path":393,"stem":394,"icon":81},"Data Connector","\u002Fen\u002Freference\u002Fextensions\u002Fextension-kit\u002Fdata-connector","en\u002F6.reference\u002F9.extensions\u002F3.extension-kit\u002F1.data-connector",{"title":396,"path":397,"stem":398,"icon":399},"Protocol","\u002Fen\u002Freference\u002Fextensions\u002Fextension-kit\u002Fprotocol","en\u002F6.reference\u002F9.extensions\u002F3.extension-kit\u002F2.protocol","i-lucide-arrow-left-right",{"title":401,"path":402,"stem":403,"icon":404},"Schema Helpers","\u002Fen\u002Freference\u002Fextensions\u002Fextension-kit\u002Fexperimental","en\u002F6.reference\u002F9.extensions\u002F3.extension-kit\u002F3.experimental","i-lucide-blocks",{"title":113,"path":406,"stem":407,"children":408,"page":6},"\u002Fen\u002Freference\u002Fextensions\u002Fdata-connectors","en\u002F6.reference\u002F9.extensions\u002F4.data-connectors",[409,413,417,421,426,431],{"title":410,"path":411,"stem":412,"icon":81},"Data Connector API","\u002Fen\u002Freference\u002Fextensions\u002Fdata-connectors\u002Fapi","en\u002F6.reference\u002F9.extensions\u002F4.data-connectors\u002F1.api",{"title":414,"path":415,"stem":416,"icon":176},"Operations and Operators","\u002Fen\u002Freference\u002Fextensions\u002Fdata-connectors\u002Foperations","en\u002F6.reference\u002F9.extensions\u002F4.data-connectors\u002F2.operations",{"title":148,"path":418,"stem":419,"icon":420},"\u002Fen\u002Freference\u002Fextensions\u002Fdata-connectors\u002Ferrors","en\u002F6.reference\u002F9.extensions\u002F4.data-connectors\u002F3.errors","i-lucide-triangle-alert",{"title":422,"path":423,"stem":424,"icon":425},"Runtime Limits","\u002Fen\u002Freference\u002Fextensions\u002Fdata-connectors\u002Flimits","en\u002F6.reference\u002F9.extensions\u002F4.data-connectors\u002F4.limits","i-lucide-gauge",{"title":427,"path":428,"stem":429,"icon":430},"Limitations","\u002Fen\u002Freference\u002Fextensions\u002Fdata-connectors\u002Flimitations","en\u002F6.reference\u002F9.extensions\u002F4.data-connectors\u002F5.limitations","i-lucide-ban",{"title":432,"path":433,"stem":434,"icon":435},"Network Permissions","\u002Fen\u002Freference\u002Fextensions\u002Fdata-connectors\u002Fpermissions","en\u002F6.reference\u002F9.extensions\u002F4.data-connectors\u002F6.permissions","i-lucide-shield-check",{"title":437,"icon":121,"path":438,"stem":439,"children":440,"page":6},"Release Notes","\u002Fen\u002Frelease-notes","en\u002F7.release-notes",[441],{"title":442,"path":443,"stem":444,"icon":121},"Changelog","\u002Fen\u002Frelease-notes\u002Fchangelog","en\u002F7.release-notes\u002F1.changelog",{"id":446,"title":447,"body":448,"description":1541,"extension":1542,"links":1543,"meta":1544,"navigation":1545,"path":243,"seo":1546,"stem":244,"__hash__":1547},"docs_en\u002Fen\u002F5.developer\u002F3.extensions\u002F2.data-connectors\u002F3.data-sources.md","Manage Data Sources",{"type":449,"value":450,"toc":1529},"minimark",[451,454,458,482,498,502,519,662,681,837,841,853,928,931,938,942,953,1005,1013,1017,1025,1127,1134,1137,1141,1144,1159,1311,1322,1425,1431,1440,1444,1471,1475,1480,1487,1490,1494,1525],[452,453],"preview",{},[455,456,143],"h2",{"id":457},"overview",[459,460,461,462,467,468,472,473,476,477,481],"p",{},"A data connector extension does nothing in a ",[463,464,466],"a",{"href":465},"\u002Fconcepts\u002Forganization#glossary","workspace"," until someone creates a ",[469,470,471],"strong",{},"data source"," from it. A data source is a data connector configured in one workspace, with its own configuration and granted network permissions. It points at the ",[469,474,475],{},"external data source",", the API, service, or database the connector reads and writes, and contributes its ",[463,478,480],{"href":479},"\u002Fconcepts\u002Fdata-model#collections","collections"," to the workspace.",[459,483,484,485,488,489,493,494,497],{},"Every installed extension is available to every workspace on the ",[469,486,487],{},"instance"," (your running Monospace deployment). This page covers what happens after you ",[463,490,492],{"href":491},"\u002Fdeveloper\u002Fextensions\u002Finstall","install"," a data connector extension: finding its connectors, creating data sources, and keeping them working when the extension changes. See ",[463,495,237],{"href":496},"\u002Fdeveloper\u002Fextensions\u002Fdata-connectors\u002Fruntime#data-source-lifecycle"," for what Engine does each time a data source starts.",[455,499,501],{"id":500},"list-installed-data-connectors","List Installed Data Connectors",[459,503,504,505,509,510,514,515,518],{},"List what installed extensions provide with ",[506,507],"http-method",{"method":508},"GET"," ",[511,512,513],"code",{},"\u002Fapi\u002F{workspace}\u002Fconnectors\u002Fdata",". It lists data connector extensions only, not the built-in database connectors. It requires the ",[511,516,517],{},"extension:read"," entitlement in the workspace. The SDK has no method for connectors, so call the endpoint directly:",[520,521,522,559],"code-group",{},[523,524,530],"pre",{"className":525,"code":526,"filename":527,"language":528,"meta":529,"style":529},"language-bash shiki shiki-themes monospace-light monospace-light monospace-dark","curl -g \"https:\u002F\u002Fexample.monospace.io\u002Fapi\u002Fblog\u002Fconnectors\u002Fdata\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n","curl","bash","",[511,531,532,550],{"__ignoreMap":529},[533,534,537,540,543,547],"span",{"class":535,"line":536},"line",1,[533,538,527],{"class":539},"ssBNi",[533,541,542],{"class":539}," -g",[533,544,546],{"class":545},"suKVh"," \"https:\u002F\u002Fexample.monospace.io\u002Fapi\u002Fblog\u002Fconnectors\u002Fdata\"",[533,548,549],{"class":539}," \\\n",[533,551,553,556],{"class":535,"line":552},2,[533,554,555],{"class":539},"  -H",[533,557,558],{"class":545}," \"Authorization: Bearer YOUR_API_KEY\"\n",[523,560,565],{"className":561,"code":562,"filename":563,"language":564,"meta":529,"style":529},"language-ts shiki shiki-themes monospace-light monospace-light monospace-dark","const response = await fetch('https:\u002F\u002Fexample.monospace.io\u002Fapi\u002Fblog\u002Fconnectors\u002Fdata', {\n  headers: {\n    Authorization: 'Bearer YOUR_API_KEY',\n  },\n});\n\nconst { data } = await response.json();\n","fetch","ts",[511,566,567,595,600,612,618,624,631],{"__ignoreMap":529},[533,568,569,573,576,579,582,585,589,592],{"class":535,"line":536},[533,570,572],{"class":571},"sLVBU","const",[533,574,575],{"class":539}," response",[533,577,578],{"class":571}," =",[533,580,581],{"class":571}," await",[533,583,584],{"class":539}," fetch",[533,586,588],{"class":587},"sTMul","(",[533,590,591],{"class":545},"'https:\u002F\u002Fexample.monospace.io\u002Fapi\u002Fblog\u002Fconnectors\u002Fdata'",[533,593,594],{"class":587},", {\n",[533,596,597],{"class":535,"line":552},[533,598,599],{"class":587},"  headers: {\n",[533,601,603,606,609],{"class":535,"line":602},3,[533,604,605],{"class":587},"    Authorization: ",[533,607,608],{"class":545},"'Bearer YOUR_API_KEY'",[533,610,611],{"class":587},",\n",[533,613,615],{"class":535,"line":614},4,[533,616,617],{"class":587},"  },\n",[533,619,621],{"class":535,"line":620},5,[533,622,623],{"class":587},"});\n",[533,625,627],{"class":535,"line":626},6,[533,628,630],{"emptyLinePlaceholder":629},true,"\n",[533,632,634,636,639,642,645,648,650,653,656,659],{"class":535,"line":633},7,[533,635,572],{"class":571},[533,637,638],{"class":587}," { ",[533,640,641],{"class":539},"data",[533,643,644],{"class":587}," } ",[533,646,647],{"class":571},"=",[533,649,581],{"class":571},[533,651,575],{"class":652},"sNJ9c",[533,654,655],{"class":587},".",[533,657,658],{"class":539},"json",[533,660,661],{"class":587},"();\n",[459,663,664,665,668,669,672,673,676,677,680],{},"Each entry's ",[511,666,667],{},"id"," is the entry id a data source names as its ",[511,670,671],{},"provider",". ",[511,674,675],{},"extensionId"," is the extension it belongs to, and ",[511,678,679],{},"permissions"," lists the hosts it declares:",[523,682,686],{"className":683,"code":684,"filename":685,"language":658,"meta":529,"style":529},"language-json shiki shiki-themes monospace-light monospace-light monospace-dark","{\n  \"data\": [\n    {\n      \"id\": \"example\u002Fartic-connector\",\n      \"version\": \"0.1.0\",\n      \"name\": \"Art Institute of Chicago\",\n      \"icon\": \"lucide:landmark\",\n      \"extensionId\": \"example\u002Fartic\",\n      \"permissions\": [\n        {\n          \"permission\": \"net:api.artic.edu\",\n          \"reason\": \"Read artworks and artists from the Art Institute of Chicago API\"\n        }\n      ]\n    }\n  ]\n}\n","response.json",[511,687,688,693,702,707,720,732,744,756,769,777,783,796,807,813,819,825,831],{"__ignoreMap":529},[533,689,690],{"class":535,"line":536},[533,691,692],{"class":587},"{\n",[533,694,695,699],{"class":535,"line":552},[533,696,698],{"class":697},"snHjA","  \"data\"",[533,700,701],{"class":587},": [\n",[533,703,704],{"class":535,"line":602},[533,705,706],{"class":587},"    {\n",[533,708,709,712,715,718],{"class":535,"line":614},[533,710,711],{"class":697},"      \"id\"",[533,713,714],{"class":587},": ",[533,716,717],{"class":545},"\"example\u002Fartic-connector\"",[533,719,611],{"class":587},[533,721,722,725,727,730],{"class":535,"line":620},[533,723,724],{"class":697},"      \"version\"",[533,726,714],{"class":587},[533,728,729],{"class":545},"\"0.1.0\"",[533,731,611],{"class":587},[533,733,734,737,739,742],{"class":535,"line":626},[533,735,736],{"class":697},"      \"name\"",[533,738,714],{"class":587},[533,740,741],{"class":545},"\"Art Institute of Chicago\"",[533,743,611],{"class":587},[533,745,746,749,751,754],{"class":535,"line":633},[533,747,748],{"class":697},"      \"icon\"",[533,750,714],{"class":587},[533,752,753],{"class":545},"\"lucide:landmark\"",[533,755,611],{"class":587},[533,757,759,762,764,767],{"class":535,"line":758},8,[533,760,761],{"class":697},"      \"extensionId\"",[533,763,714],{"class":587},[533,765,766],{"class":545},"\"example\u002Fartic\"",[533,768,611],{"class":587},[533,770,772,775],{"class":535,"line":771},9,[533,773,774],{"class":697},"      \"permissions\"",[533,776,701],{"class":587},[533,778,780],{"class":535,"line":779},10,[533,781,782],{"class":587},"        {\n",[533,784,786,789,791,794],{"class":535,"line":785},11,[533,787,788],{"class":697},"          \"permission\"",[533,790,714],{"class":587},[533,792,793],{"class":545},"\"net:api.artic.edu\"",[533,795,611],{"class":587},[533,797,799,802,804],{"class":535,"line":798},12,[533,800,801],{"class":697},"          \"reason\"",[533,803,714],{"class":587},[533,805,806],{"class":545},"\"Read artworks and artists from the Art Institute of Chicago API\"\n",[533,808,810],{"class":535,"line":809},13,[533,811,812],{"class":587},"        }\n",[533,814,816],{"class":535,"line":815},14,[533,817,818],{"class":587},"      ]\n",[533,820,822],{"class":535,"line":821},15,[533,823,824],{"class":587},"    }\n",[533,826,828],{"class":535,"line":827},16,[533,829,830],{"class":587},"  ]\n",[533,832,834],{"class":535,"line":833},17,[533,835,836],{"class":587},"}\n",[455,838,840],{"id":839},"add-a-data-source-in-studio","Add a Data Source in Studio",[459,842,843,844,847,848,852],{},"Studio offers installed data connectors when you add a data source, each marked ",[469,845,846],{},"Extension",". These steps add the Art Institute of Chicago connector from the ",[463,849,851],{"href":850},"\u002Fguides\u002Fdata-connectors\u002Fquickstart","Data Connector Quickstart",":",[854,855,856,866,872,891,898,907],"ol",{},[857,858,859,860,862,863,655],"li",{},"Open ",[469,861,39],{}," and choose ",[469,864,865],{},"Add Source",[857,867,868,869,655],{},"Choose ",[469,870,871],{},"Art Institute of Chicago",[857,873,874,875,878,879,882,883,886,887,890],{},"Enter ",[511,876,877],{},"artic"," as the ",[469,880,881],{},"Name",", and leave ",[469,884,885],{},"Connection Parameters"," at ",[511,888,889],{},"{}",". This connector has no configuration.",[857,892,893,894,897],{},"Review ",[469,895,896],{},"Permissions",": the hosts the connector declares, each with its reason.",[857,899,868,900,903,904,655],{},[469,901,902],{},"Test Connection",", then ",[469,905,906],{},"Continue",[857,908,909,910,913,914,917,918,921,922,903,925,655],{},"Under ",[469,911,912],{},"Select Collections to Add",", keep ",[511,915,916],{},"artworks"," and ",[511,919,920],{},"artists"," selected. Choose ",[469,923,924],{},"Review",[469,926,927],{},"Add 2 Collections",[459,929,930],{},"Studio grants the permissions the connector declares. It asks you to approve permissions only when the connector needs more than it declares, which this one never does.",[459,932,933,934,937],{},"Creating a data source, in Studio or over the API, runs the connector's ",[511,935,936],{},"testConnection"," first when the connector has one. A test that fails stops the creation.",[455,939,941],{"id":940},"approve-network-permissions","Approve Network Permissions",[459,943,944,945,948,949,952],{},"A data connector reaches only the hosts its data source was granted. Whoever creates the data source approves the hosts the connector requires: the ",[511,946,947],{},"net:"," permissions in its manifest, plus any its ",[511,950,951],{},"preflight"," derives from the configuration.",[954,955,956,969],"table",{},[957,958,959],"thead",{},[960,961,962,966],"tr",{},[963,964,965],"th",{},"Rule",[963,967,968],{},"Consequence",[970,971,972,989,997],"tbody",{},[960,973,974,978],{},[975,976,977],"td",{},"The grant must match the required set exactly",[975,979,980,981,984,985,988],{},"A grant with a missing host or an extra host is refused with ",[511,982,983],{},"422"," and code ",[511,986,987],{},"7001",". Only the permissions are compared, not their reasons",[960,990,991,994],{},[975,992,993],{},"The grant is fixed at creation",[975,995,996],{},"No endpoint changes a data source's grant or configuration",[960,998,999,1002],{},[975,1000,1001],{},"Studio sends the declared set",[975,1003,1004],{},"Studio asks you to approve only when the connector requires more hosts than its manifest declares",[459,1006,1007,1008,1012],{},"See ",[463,1009,1011],{"href":1010},"\u002Freference\u002Fextensions\u002Fdata-connectors\u002Fpermissions#approve-permissions","Approve Permissions"," in Network Permissions for the approval flow over the API.",[455,1014,1016],{"id":1015},"update-data-sources-after-an-extension-update","Update Data Sources After an Extension Update",[459,1018,1019,1020,1024],{},"When you ",[463,1021,1023],{"href":1022},"\u002Fdeveloper\u002Fextensions\u002Finstall#update-an-extension","update an extension"," with automatic reloading on, Engine restarts every data source whose entry id is still in the new build. A data source whose entry the new build removes or renames isn't restarted. Without automatic reloading, restart the instance. What else you do depends on what changed:",[954,1026,1027,1037],{},[957,1028,1029],{},[960,1030,1031,1034],{},[963,1032,1033],{},"Change in the new version",[963,1035,1036],{},"What to do",[970,1038,1039,1047,1085,1097,1107],{},[960,1040,1041,1044],{},[975,1042,1043],{},"Connector code only",[975,1045,1046],{},"Nothing. Each data source switches to the new code on the next request that reaches its connector. A result served from the cache runs no connector code",[960,1048,1049,1057],{},[975,1050,1051,1052,1056],{},"Declared schema: collections, ",[463,1053,1055],{"href":1054},"\u002Fconcepts\u002Fdata-model#fields","fields",", operations, relations",[975,1058,1059,1060,1063,1064,509,1067,1070,1071,1078,1079,509,1081,1084],{},"Refresh each data source's schema. In Studio, choose ",[469,1061,1062],{},"Refresh Schema"," on the data source, or call ",[506,1065],{"method":1066},"POST",[511,1068,1069],{},"\u002Fapi\u002F{workspace}\u002Fschema\u002Fintrospect\u002F{source}",", which requires the ",[463,1072,1074,1077],{"href":1073},"\u002Freference\u002Fpermissions#workspace-entitlements",[511,1075,1076],{},"dataModel:edit"," entitlement",". A refresh without a body applies what changed, including removing collections and fields the new build no longer declares, except what the data source's stored exclusions leave out. Preview it first with ",[506,1080],{"method":1066},[511,1082,1083],{},"\u002Fapi\u002F{workspace}\u002Fschema\u002Fintrospect\u002F{source}\u002Fdiff",", which ignores stored exclusions, so it can list changes the refresh won't apply",[960,1086,1087,1090],{},[975,1088,1089],{},"Required hosts: added, removed, or changed",[975,1091,1092,1096],{},[463,1093,1095],{"href":1094},"#recreate-a-data-source","Recreate"," each data source with the new set. Until then, every request that reaches an existing data source's connector fails. Results already in the query cache are still served. Reinstalling a version whose required hosts match the grant also restores it",[960,1098,1099,1102],{},[975,1100,1101],{},"Configuration the connector expects",[975,1103,1104,1106],{},[463,1105,1095],{"href":1094}," each data source with the new configuration",[960,1108,1109,1116],{},[975,1110,1111,1115],{},[463,1112,1114],{"href":1113},"\u002Freference\u002Fextensions\u002Fmanifest#capabilities","Query capabilities",": added or removed",[975,1117,1118,1119,1122,1123],{},"With automatic reloading on, every request that reaches an existing data source's connector fails with ",[511,1120,1121],{},"503"," until you restart the instance or rebuild the workspace, for example by creating another data source in it. A restart loads the new capabilities directly. A collection whose stored declaration relies on a capability the new build drops then loads with no operations: fix the declaration and refresh the schema. See ",[463,1124,1126],{"href":1125},"\u002Freference\u002Fextensions\u002Fdata-connectors\u002Foperations#when-the-capabilities-change","When the Capabilities Change",[459,1128,1129,1130,1133],{},"A reload swaps code, not the schema a data source was created with. Until you refresh the schema, Engine keeps accepting requests based on the old one. Requests the new code can't serve fail. See ",[463,1131,331],{"href":1132},"\u002Freference\u002Fapi-reference\u002Fschema-migration\u002Fimport-changes"," for the introspect endpoint.",[459,1135,1136],{},"Refreshing the schema keeps the data source's configuration and granted permissions. That's why a change in required hosts needs a new data source. A change to a permission's reason alone needs nothing, because Engine doesn't compare reasons.",[455,1138,1140],{"id":1139},"recreate-a-data-source","Recreate a Data Source",[459,1142,1143],{},"Delete the data source, then create it again with the new permissions or configuration. Recreating isn't an update in place: deleting a data source deletes the workspace's stored definitions of its collections and of the relations between them. The new data source gets a new id and a freshly imported schema, with the relations its connector declares.",[459,1145,1146,1147,1149,1150,509,1152,1155,1156,1158],{},"In Studio, remove it from ",[469,1148,39],{}," and add it again. Over the API, you need its id. List the data sources in a workspace with their providers with ",[506,1151],{"method":508},[511,1153,1154],{},"\u002Fapi\u002F{workspace}\u002Fschema\u002Fstructure\u002Fsources",". The ",[511,1157,1055],{}," parameter selects the fields each data source returns; a request without it is refused. The SDK has no method for data sources, so call the endpoint directly:",[520,1160,1161,1183],{},[523,1162,1164],{"className":525,"code":1163,"filename":527,"language":528,"meta":529,"style":529},"curl -g \"https:\u002F\u002Fexample.monospace.io\u002Fapi\u002Fblog\u002Fschema\u002Fstructure\u002Fsources?fields=id,apiName,provider\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n",[511,1165,1166,1177],{"__ignoreMap":529},[533,1167,1168,1170,1172,1175],{"class":535,"line":536},[533,1169,527],{"class":539},[533,1171,542],{"class":539},[533,1173,1174],{"class":545}," \"https:\u002F\u002Fexample.monospace.io\u002Fapi\u002Fblog\u002Fschema\u002Fstructure\u002Fsources?fields=id,apiName,provider\"",[533,1176,549],{"class":539},[533,1178,1179,1181],{"class":535,"line":552},[533,1180,555],{"class":539},[533,1182,558],{"class":545},[523,1184,1186],{"className":561,"code":1185,"filename":563,"language":564,"meta":529,"style":529},"const params = new URLSearchParams({\n  fields: 'id,apiName,provider',\n});\n\nconst response = await fetch(\n  `https:\u002F\u002Fexample.monospace.io\u002Fapi\u002Fblog\u002Fschema\u002Fstructure\u002Fsources?${params}`,\n  {\n    headers: {\n      Authorization: 'Bearer YOUR_API_KEY',\n    },\n  },\n);\n\nconst { data } = await response.json();\n",[511,1187,1188,1206,1216,1220,1224,1239,1252,1257,1262,1271,1276,1280,1285,1289],{"__ignoreMap":529},[533,1189,1190,1192,1195,1197,1200,1203],{"class":535,"line":536},[533,1191,572],{"class":571},[533,1193,1194],{"class":539}," params",[533,1196,578],{"class":571},[533,1198,1199],{"class":571}," new",[533,1201,1202],{"class":539}," URLSearchParams",[533,1204,1205],{"class":587},"({\n",[533,1207,1208,1211,1214],{"class":535,"line":552},[533,1209,1210],{"class":587},"  fields: ",[533,1212,1213],{"class":545},"'id,apiName,provider'",[533,1215,611],{"class":587},[533,1217,1218],{"class":535,"line":602},[533,1219,623],{"class":587},[533,1221,1222],{"class":535,"line":614},[533,1223,630],{"emptyLinePlaceholder":629},[533,1225,1226,1228,1230,1232,1234,1236],{"class":535,"line":620},[533,1227,572],{"class":571},[533,1229,575],{"class":539},[533,1231,578],{"class":571},[533,1233,581],{"class":571},[533,1235,584],{"class":539},[533,1237,1238],{"class":587},"(\n",[533,1240,1241,1244,1247,1250],{"class":535,"line":626},[533,1242,1243],{"class":545},"  `https:\u002F\u002Fexample.monospace.io\u002Fapi\u002Fblog\u002Fschema\u002Fstructure\u002Fsources?${",[533,1245,1246],{"class":652},"params",[533,1248,1249],{"class":545},"}`",[533,1251,611],{"class":587},[533,1253,1254],{"class":535,"line":633},[533,1255,1256],{"class":587},"  {\n",[533,1258,1259],{"class":535,"line":758},[533,1260,1261],{"class":587},"    headers: {\n",[533,1263,1264,1267,1269],{"class":535,"line":771},[533,1265,1266],{"class":587},"      Authorization: ",[533,1268,608],{"class":545},[533,1270,611],{"class":587},[533,1272,1273],{"class":535,"line":779},[533,1274,1275],{"class":587},"    },\n",[533,1277,1278],{"class":535,"line":785},[533,1279,617],{"class":587},[533,1281,1282],{"class":535,"line":798},[533,1283,1284],{"class":587},");\n",[533,1286,1287],{"class":535,"line":809},[533,1288,630],{"emptyLinePlaceholder":629},[533,1290,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309],{"class":535,"line":815},[533,1292,572],{"class":571},[533,1294,638],{"class":587},[533,1296,641],{"class":539},[533,1298,644],{"class":587},[533,1300,647],{"class":571},[533,1302,581],{"class":571},[533,1304,575],{"class":652},[533,1306,655],{"class":587},[533,1308,658],{"class":539},[533,1310,661],{"class":587},[459,1312,1313,1314,1317,1318,1321],{},"The list is paged like any other: without ",[511,1315,1316],{},"limit",", it returns at most the instance's default page size (100 items unless configured). The list includes the workspace's own ",[511,1319,1320],{},"_system"," data source, which can't be deleted:",[523,1323,1325],{"className":683,"code":1324,"filename":685,"language":658,"meta":529,"style":529},"{\n  \"data\": [\n    {\n      \"id\": \"00000000-0000-0000-0000-000000000000\",\n      \"apiName\": \"_system\",\n      \"provider\": \"postgres\"\n    },\n    {\n      \"id\": \"f353377a-60dc-4edd-8052-faeb9bdfe53f\",\n      \"apiName\": \"artic\",\n      \"provider\": \"example\u002Fartic-connector\"\n    }\n  ]\n}\n",[511,1326,1327,1331,1337,1341,1352,1364,1374,1378,1382,1393,1404,1413,1417,1421],{"__ignoreMap":529},[533,1328,1329],{"class":535,"line":536},[533,1330,692],{"class":587},[533,1332,1333,1335],{"class":535,"line":552},[533,1334,698],{"class":697},[533,1336,701],{"class":587},[533,1338,1339],{"class":535,"line":602},[533,1340,706],{"class":587},[533,1342,1343,1345,1347,1350],{"class":535,"line":614},[533,1344,711],{"class":697},[533,1346,714],{"class":587},[533,1348,1349],{"class":545},"\"00000000-0000-0000-0000-000000000000\"",[533,1351,611],{"class":587},[533,1353,1354,1357,1359,1362],{"class":535,"line":620},[533,1355,1356],{"class":697},"      \"apiName\"",[533,1358,714],{"class":587},[533,1360,1361],{"class":545},"\"_system\"",[533,1363,611],{"class":587},[533,1365,1366,1369,1371],{"class":535,"line":626},[533,1367,1368],{"class":697},"      \"provider\"",[533,1370,714],{"class":587},[533,1372,1373],{"class":545},"\"postgres\"\n",[533,1375,1376],{"class":535,"line":633},[533,1377,1275],{"class":587},[533,1379,1380],{"class":535,"line":758},[533,1381,706],{"class":587},[533,1383,1384,1386,1388,1391],{"class":535,"line":771},[533,1385,711],{"class":697},[533,1387,714],{"class":587},[533,1389,1390],{"class":545},"\"f353377a-60dc-4edd-8052-faeb9bdfe53f\"",[533,1392,611],{"class":587},[533,1394,1395,1397,1399,1402],{"class":535,"line":779},[533,1396,1356],{"class":697},[533,1398,714],{"class":587},[533,1400,1401],{"class":545},"\"artic\"",[533,1403,611],{"class":587},[533,1405,1406,1408,1410],{"class":535,"line":785},[533,1407,1368],{"class":697},[533,1409,714],{"class":587},[533,1411,1412],{"class":545},"\"example\u002Fartic-connector\"\n",[533,1414,1415],{"class":535,"line":798},[533,1416,824],{"class":587},[533,1418,1419],{"class":535,"line":809},[533,1420,830],{"class":587},[533,1422,1423],{"class":535,"line":815},[533,1424,836],{"class":587},[459,1426,1427,1428,655],{},"To find one data source by name, add a filter, e.g. ",[511,1429,1430],{},"filter[apiName][_eq]=artic",[459,1432,1433,1437,1438,655],{},[463,1434,1436],{"href":1435},"#delete-a-data-source","Delete the data source",", then create it again as described in ",[463,1439,432],{"href":1010},[455,1441,1443],{"id":1442},"delete-a-data-source","Delete a Data Source",[459,1445,1446,1447,509,1450,1453,1454,1456,1457,1460,1461,1464,1465,1470],{},"Delete a data source by id with ",[506,1448],{"method":1449},"DELETE",[511,1451,1452],{},"\u002Fapi\u002F{workspace}\u002Fsources\u002Fdata\u002F{source}",". In Studio, open ",[469,1455,39],{},", open the menu next to the data source, choose ",[469,1458,1459],{},"Remove Data Source",", and confirm with ",[469,1462,1463],{},"Remove",". Deleting requires the ",[463,1466,1467,1077],{"href":1073},[511,1468,1469],{},"dataSource:delete:{id}"," for that data source.",[1472,1473,1474],"caution",{},"Deleting a data source removes its collections from the workspace. It deletes nothing in the external data source.",[1476,1477,1479],"h3",{"id":1478},"before-you-remove-an-extension","Before You Remove an Extension",[459,1481,1482,1483,655],{},"Delete the data sources that use the extension's data connectors first, then ",[463,1484,1486],{"href":1485},"\u002Fdeveloper\u002Fextensions\u002Finstall#remove-an-extension","remove the extension",[459,1488,1489],{},"A data source whose extension is removed keeps serving on the code it already loaded. It stops at its next restart, because the connector file is gone.",[455,1491,1493],{"id":1492},"see-also","See Also",[1495,1496,1497,1502,1507,1513,1519],"ul",{},[857,1498,1499,1501],{},[463,1500,227],{"href":491},": place, reload, update, and remove extension files",[857,1503,1504,1506],{},[463,1505,851],{"href":850},": build a connector and create its first data source in Studio",[857,1508,1509,1512],{},[463,1510,237],{"href":1511},"\u002Fdeveloper\u002Fextensions\u002Fdata-connectors\u002Fruntime",": the data source lifecycle, restarts, and failures",[857,1514,1515,1518],{},[463,1516,432],{"href":1517},"\u002Freference\u002Fextensions\u002Fdata-connectors\u002Fpermissions",": declare and approve the hosts a connector calls",[857,1520,1521,1524],{},[463,1522,427],{"href":1523},"\u002Freference\u002Fextensions\u002Fdata-connectors\u002Flimitations#configuration-and-network",": what you can't change on an existing data source",[1526,1527,1528],"style",{},"html pre.shiki code .ssBNi, html code.shiki .ssBNi{--shiki-light:#1659E9;--shiki-default:#1659E9;--shiki-dark:#94B3F5}html pre.shiki code .suKVh, html code.shiki .suKVh{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#F8FAFC}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sLVBU, html code.shiki .sLVBU{--shiki-light:#0891B2;--shiki-default:#0891B2;--shiki-dark:#22D3EE}html pre.shiki code .sTMul, html code.shiki .sTMul{--shiki-light:#1F2937;--shiki-default:#1F2937;--shiki-dark:#94A3B8}html pre.shiki code .sNJ9c, html code.shiki .sNJ9c{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E2E8F0}html pre.shiki code .snHjA, html code.shiki .snHjA{--shiki-light:#124BC4;--shiki-default:#124BC4;--shiki-dark:#5B8EF4}",{"title":529,"searchDepth":552,"depth":552,"links":1530},[1531,1532,1533,1534,1535,1536,1537,1540],{"id":457,"depth":552,"text":143},{"id":500,"depth":552,"text":501},{"id":839,"depth":552,"text":840},{"id":940,"depth":552,"text":941},{"id":1015,"depth":552,"text":1016},{"id":1139,"depth":552,"text":1140},{"id":1442,"depth":552,"text":1443,"children":1538},[1539],{"id":1478,"depth":602,"text":1479},{"id":1492,"depth":552,"text":1493},"Learn how to create, update, recreate, and delete the data sources that use a data connector extension.","md",null,{},{"title":242,"icon":42},{"title":447,"description":1541},"oRBp2kUUIPbJmOgvFUi4qOxtcQmTkqlemFrlCX0wBos",[1549,1551],{"title":237,"path":238,"stem":239,"description":1550,"icon":240,"children":-1},"Learn where data connector code runs, what it can use, how it reaches the network, and how data sources start, reload, and restart.",{"title":246,"path":247,"stem":248,"description":1552,"icon":249,"children":-1},"Translate an external data source's filters, paging, keys, writes and errors onto the data connector contract, with examples from a rich and a weak grammar.",1790840121667]