[{"data":1,"prerenderedAt":862},["ShallowReactive",2],{"navigation_docs_en":3,"-en-reference-connectors-custom-connectors":448,"-en-reference-connectors-custom-connectors-surround":857},[4,30,72,132,260,439],{"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,298,302,307,343,372,377],{"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":143,"path":280,"stem":281,"children":282,"icon":81},"\u002Fen\u002Freference\u002Fconnectors","en\u002F6.reference\u002F4.connectors\u002Findex",[283,284,289,294],{"title":143,"path":280,"stem":281,"icon":81},{"title":285,"path":286,"stem":287,"icon":288},"PostgreSQL","\u002Fen\u002Freference\u002Fconnectors\u002Fpostgresql","en\u002F6.reference\u002F4.connectors\u002F1.postgresql","i-simple-icons-postgresql",{"title":290,"path":291,"stem":292,"icon":293},"MySQL and MariaDB","\u002Fen\u002Freference\u002Fconnectors\u002Fmysql-mariadb","en\u002F6.reference\u002F4.connectors\u002F2.mysql-mariadb","i-simple-icons-mysql",{"title":295,"path":296,"stem":297,"icon":114},"Custom Connectors","\u002Fen\u002Freference\u002Fconnectors\u002Fcustom-connectors","en\u002F6.reference\u002F4.connectors\u002F3.custom-connectors",{"title":299,"path":300,"stem":301,"icon":209},"Data Types Representation","\u002Fen\u002Freference\u002Fdata-types","en\u002F6.reference\u002F5.data-types",{"title":303,"path":304,"stem":305,"icon":306},"Permissions Reference","\u002Fen\u002Freference\u002Fpermissions","en\u002F6.reference\u002F6.permissions","i-lucide-shield",{"title":308,"path":309,"stem":310,"children":311,"page":6},"API Reference","\u002Fen\u002Freference\u002Fapi-reference","en\u002F6.reference\u002F7.api-reference",[312,316,321],{"title":313,"path":314,"stem":315,"icon":273},"System Endpoints","\u002Fen\u002Freference\u002Fapi-reference\u002Fsystem-endpoints","en\u002F6.reference\u002F7.api-reference\u002F1.system-endpoints",{"title":317,"path":318,"stem":319,"icon":320},"OpenAPI Spec","\u002Fen\u002Freference\u002Fapi-reference\u002Fopenapi-spec","en\u002F6.reference\u002F7.api-reference\u002F2.openapi-spec","i-lucide-file-code",{"title":322,"path":323,"stem":324,"children":325,"icon":327},"Schema Migration","\u002Fen\u002Freference\u002Fapi-reference\u002Fschema-migration","en\u002F6.reference\u002F7.api-reference\u002F3.schema-migration\u002Findex",[326,328,333,338],{"title":322,"path":323,"stem":324,"icon":327},"i-lucide-database-zap",{"title":329,"path":330,"stem":331,"icon":332},"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":334,"path":335,"stem":336,"icon":337},"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":339,"path":340,"stem":341,"icon":342},"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":344,"path":345,"stem":346,"children":347,"page":6},"Design Considerations","\u002Fen\u002Freference\u002Fdesign-considerations","en\u002F6.reference\u002F8.design-considerations",[348,352,357,362,367],{"title":143,"path":349,"stem":350,"icon":351},"\u002Fen\u002Freference\u002Fdesign-considerations\u002Foverview","en\u002F6.reference\u002F8.design-considerations\u002F1.overview","i-lucide-compass",{"title":353,"path":354,"stem":355,"icon":356},"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":358,"path":359,"stem":360,"icon":361},"Overly Permissive Public Access","\u002Fen\u002Freference\u002Fdesign-considerations\u002Foverly-permissive","en\u002F6.reference\u002F8.design-considerations\u002F4.overly-permissive","i-lucide-shield-off",{"title":363,"path":364,"stem":365,"icon":366},"No Aggregates","\u002Fen\u002Freference\u002Fdesign-considerations\u002Fno-aggregates","en\u002F6.reference\u002F8.design-considerations\u002F5.no-aggregates","i-lucide-sigma",{"title":368,"path":369,"stem":370,"icon":371},"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":373,"path":374,"stem":375,"icon":376},"CLI","\u002Fen\u002Freference\u002Fcli","en\u002F6.reference\u002F9.cli","i-lucide-square-terminal",{"title":221,"path":378,"stem":379,"children":380,"page":6},"\u002Fen\u002Freference\u002Fextensions","en\u002F6.reference\u002F9.extensions",[381,386,389,408],{"title":382,"path":383,"stem":384,"icon":385},"Extension Config and Manifest","\u002Fen\u002Freference\u002Fextensions\u002Fmanifest","en\u002F6.reference\u002F9.extensions\u002F1.manifest","i-lucide-file-json",{"title":373,"path":387,"stem":388,"icon":86},"\u002Fen\u002Freference\u002Fextensions\u002Fcli","en\u002F6.reference\u002F9.extensions\u002F2.cli",{"title":390,"path":391,"stem":392,"children":393,"page":6},"Extension Kit","\u002Fen\u002Freference\u002Fextensions\u002Fextension-kit","en\u002F6.reference\u002F9.extensions\u002F3.extension-kit",[394,398,403],{"title":395,"path":396,"stem":397,"icon":81},"Data Connector","\u002Fen\u002Freference\u002Fextensions\u002Fextension-kit\u002Fdata-connector","en\u002F6.reference\u002F9.extensions\u002F3.extension-kit\u002F1.data-connector",{"title":399,"path":400,"stem":401,"icon":402},"Protocol","\u002Fen\u002Freference\u002Fextensions\u002Fextension-kit\u002Fprotocol","en\u002F6.reference\u002F9.extensions\u002F3.extension-kit\u002F2.protocol","i-lucide-arrow-left-right",{"title":404,"path":405,"stem":406,"icon":407},"Schema Helpers","\u002Fen\u002Freference\u002Fextensions\u002Fextension-kit\u002Fexperimental","en\u002F6.reference\u002F9.extensions\u002F3.extension-kit\u002F3.experimental","i-lucide-blocks",{"title":113,"path":409,"stem":410,"children":411,"page":6},"\u002Fen\u002Freference\u002Fextensions\u002Fdata-connectors","en\u002F6.reference\u002F9.extensions\u002F4.data-connectors",[412,416,420,424,429,434],{"title":413,"path":414,"stem":415,"icon":81},"Data Connector API","\u002Fen\u002Freference\u002Fextensions\u002Fdata-connectors\u002Fapi","en\u002F6.reference\u002F9.extensions\u002F4.data-connectors\u002F1.api",{"title":417,"path":418,"stem":419,"icon":176},"Operations and Operators","\u002Fen\u002Freference\u002Fextensions\u002Fdata-connectors\u002Foperations","en\u002F6.reference\u002F9.extensions\u002F4.data-connectors\u002F2.operations",{"title":148,"path":421,"stem":422,"icon":423},"\u002Fen\u002Freference\u002Fextensions\u002Fdata-connectors\u002Ferrors","en\u002F6.reference\u002F9.extensions\u002F4.data-connectors\u002F3.errors","i-lucide-triangle-alert",{"title":425,"path":426,"stem":427,"icon":428},"Runtime Limits","\u002Fen\u002Freference\u002Fextensions\u002Fdata-connectors\u002Flimits","en\u002F6.reference\u002F9.extensions\u002F4.data-connectors\u002F4.limits","i-lucide-gauge",{"title":430,"path":431,"stem":432,"icon":433},"Limitations","\u002Fen\u002Freference\u002Fextensions\u002Fdata-connectors\u002Flimitations","en\u002F6.reference\u002F9.extensions\u002F4.data-connectors\u002F5.limitations","i-lucide-ban",{"title":435,"path":436,"stem":437,"icon":438},"Network Permissions","\u002Fen\u002Freference\u002Fextensions\u002Fdata-connectors\u002Fpermissions","en\u002F6.reference\u002F9.extensions\u002F4.data-connectors\u002F6.permissions","i-lucide-shield-check",{"title":440,"icon":121,"path":441,"stem":442,"children":443,"page":6},"Release Notes","\u002Fen\u002Frelease-notes","en\u002F7.release-notes",[444],{"title":445,"path":446,"stem":447,"icon":121},"Changelog","\u002Fen\u002Frelease-notes\u002Fchangelog","en\u002F7.release-notes\u002F1.changelog",{"id":449,"title":295,"body":450,"description":850,"extension":851,"links":852,"meta":853,"navigation":854,"path":296,"seo":855,"stem":297,"__hash__":856},"docs_en\u002Fen\u002F6.reference\u002F4.connectors\u002F3.custom-connectors.md",{"type":451,"value":452,"toc":839},"minimark",[453,457,470,484,493,497,528,531,535,598,602,676,680,797,801,810,813,817],[454,455,143],"h2",{"id":456},"overview",[458,459,460,461,465,466,469],"p",{},"A custom connector is a ",[462,463,464],"strong",{},"data connector extension",": code you write and install on your Monospace ",[462,467,468],{},"instance"," (your running deployment) to reach a system Monospace has no built-in connector for. That system can be a SaaS API such as Stripe, an internal service, or a database without a native connector.",[458,471,472,473,478,479,483],{},"Its data appears as ",[474,475,477],"a",{"href":476},"\u002Fconcepts\u002Fdata-model#collections","collections"," in a ",[474,480,482],{"href":481},"\u002Fconcepts\u002Forganization#glossary","workspace",". Callers use the same REST API, SDK, and Studio as for any database, under the same roles and permissions. Nothing is copied: each request the cache doesn't answer becomes a live query against the external system.",[485,486,487,488,492],"warning",{},"Extensions are in preview. The extension kit, CLI, manifest format, and data connector contract can change in breaking ways between releases. Use them in non-production environments only. See ",[474,489,491],{"href":490},"\u002Fdeveloper\u002Fextensions#stability","Stability",".",[454,494,496],{"id":495},"how-it-works","How It Works",[498,499,500,507,513,519],"ol",{},[501,502,503,506],"li",{},[462,504,505],{},"Write it."," Create a project with the Monospace CLI. Describe the extension in a config file and write the connector in TypeScript.",[501,508,509,512],{},[462,510,511],{},"Build it."," The CLI validates the config and bundles the code into a build.",[501,514,515,518],{},[462,516,517],{},"Install it."," Copy the build into your instance's extensions directory.",[501,520,521,524,525,492],{},[462,522,523],{},"Connect it."," Add a data source in the Studio. The Studio offers installed data connectors alongside the built-in connectors, each marked ",[462,526,527],{},"Extension",[458,529,530],{},"The connector runs inside your instance, isolated from Monospace itself. It can reach only the network hosts you approve for it, and every other network request fails.",[454,532,534],{"id":533},"get-started","Get Started",[536,537,538,551],"table",{},[539,540,541],"thead",{},[542,543,544,548],"tr",{},[545,546,547],"th",{},"Page",[545,549,550],{},"Covers",[552,553,554,566,577,588],"tbody",{},[542,555,556,563],{},[557,558,559],"td",{},[474,560,562],{"href":561},"\u002Fguides\u002Fdata-connectors\u002Fquickstart","Data Connector Quickstart",[557,564,565],{},"Build a read-only connector for the Art Institute of Chicago API, install it, and query it in the Studio",[542,567,568,574],{},[557,569,570],{},[474,571,573],{"href":572},"\u002Fguides\u002Fdata-connectors\u002Fstripe","Build a Stripe Data Connector",[557,575,576],{},"A larger connector with writes and tests, built against Stripe's test mode",[542,578,579,585],{},[557,580,581],{},[474,582,584],{"href":583},"\u002Fguides\u002Fdata-connectors\u002Fai-agents","Build Data Connectors with AI Agents",[557,586,587],{},"Give a coding agent the extension docs and a starter prompt, and see which steps still need you",[542,589,590,595],{},[557,591,592],{},[474,593,227],{"href":594},"\u002Fdeveloper\u002Fextensions\u002Finstall",[557,596,597],{},"Where your instance loads extensions from, and how to update and remove them",[454,599,601],{"id":600},"design-a-connector","Design a Connector",[536,603,604,612],{},[539,605,606],{},[542,607,608,610],{},[545,609,547],{},[545,611,550],{},[552,613,614,624,634,644,655,665],{},[542,615,616,621],{},[557,617,618],{},[474,619,113],{"href":620},"\u002Fdeveloper\u002Fextensions\u002Fdata-connectors",[557,622,623],{},"How a request flows through a connector, and whether your system is a good fit",[542,625,626,631],{},[557,627,628],{},[474,629,237],{"href":630},"\u002Fdeveloper\u002Fextensions\u002Fdata-connectors\u002Fruntime",[557,632,633],{},"Where connector code runs, what it can use, and how it reaches the network",[542,635,636,641],{},[557,637,638],{},[474,639,246],{"href":640},"\u002Fdeveloper\u002Fextensions\u002Fdata-connectors\u002Fdata-source-mapping",[557,642,643],{},"Translate a system's filters, paging, keys, writes, and errors onto the connector contract",[542,645,646,652],{},[557,647,648],{},[474,649,651],{"href":650},"\u002Fdeveloper\u002Fextensions\u002Fdata-connectors\u002Ferrors","Handle Data Connector Errors",[557,653,654],{},"Map each failure to the right error class and keep secrets out of responses",[542,656,657,662],{},[557,658,659],{},[474,660,256],{"href":661},"\u002Fdeveloper\u002Fextensions\u002Fdata-connectors\u002Ftesting",[557,663,664],{},"Test from lint and unit tests up to the Studio",[542,666,667,673],{},[557,668,669],{},[474,670,672],{"href":671},"\u002Fdeveloper\u002Fextensions\u002Fdata-connectors\u002Fdata-sources","Manage Data Sources",[557,674,675],{},"Create, update, recreate, and delete the data sources that use a connector",[454,677,679],{"id":678},"look-up-the-reference","Look Up the Reference",[536,681,682,690],{},[539,683,684],{},[542,685,686,688],{},[545,687,547],{},[545,689,550],{},[552,691,692,710,728,742,755,765,775,786],{},[542,693,694,699],{},[557,695,696],{},[474,697,382],{"href":698},"\u002Freference\u002Fextensions\u002Fmanifest",[557,700,701,705,706,709],{},[702,703,704],"code",{},"extension.config.json",", the built ",[702,707,708],{},"manifest.json",", and the install directory layout",[542,711,712,717],{},[557,713,714],{},[474,715,373],{"href":716},"\u002Freference\u002Fextensions\u002Fcli",[557,718,719,720,723,724,727],{},"The ",[702,721,722],{},"monospace extension create"," and ",[702,725,726],{},"monospace extension build"," commands",[542,729,730,736],{},[557,731,732],{},[474,733,735],{"href":734},"\u002Freference\u002Fextensions\u002Fextension-kit\u002Fdata-connector","Data Connector Module",[557,737,738,739],{},"Every export of ",[702,740,741],{},"@monospace\u002Fextension-kit\u002Fdata-connector",[542,743,744,749],{},[557,745,746],{},[474,747,413],{"href":748},"\u002Freference\u002Fextensions\u002Fdata-connectors\u002Fapi",[557,750,719,751,754],{},[702,752,753],{},"dataConnector"," entry, its handlers, the schema document, and query requests",[542,756,757,762],{},[557,758,759],{},[474,760,417],{"href":761},"\u002Freference\u002Fextensions\u002Fdata-connectors\u002Foperations",[557,763,764],{},"The operations a collection declares and the filter operators each field type allows",[542,766,767,772],{},[557,768,769],{},[474,770,435],{"href":771},"\u002Freference\u002Fextensions\u002Fdata-connectors\u002Fpermissions",[557,773,774],{},"How a connector declares the hosts it reaches, and how you approve them",[542,776,777,783],{},[557,778,779],{},[474,780,782],{"href":781},"\u002Freference\u002Fextensions\u002Fdata-connectors\u002Flimits","Data Connector Runtime Limits",[557,784,785],{},"Hard numbers and fixed rules at runtime",[542,787,788,794],{},[557,789,790],{},[474,791,793],{"href":792},"\u002Freference\u002Fextensions\u002Fdata-connectors\u002Flimitations","Data Connector Limitations",[557,795,796],{},"What a connector can't do today, and how to work around it",[454,798,800],{"id":799},"request-a-connector","Request a Connector",[458,802,803,804,492],{},"If you'd rather not build a connector yourself, ",[474,805,809],{"href":806,"rel":807},"https:\u002F\u002Ffeedback.monospace.io\u002Frequest?request=new",[808],"nofollow","request a built-in connector on the roadmap",[811,812],"hr",{},[454,814,816],{"id":815},"see-also","See Also",[818,819,820,827,833],"ul",{},[501,821,822,826],{},[474,823,825],{"href":824},"\u002Freference\u002Fconnectors","Connectors"," — every way to connect a data source",[501,828,829,832],{},[474,830,221],{"href":831},"\u002Fdeveloper\u002Fextensions"," — what extensions are and how they reach your instance",[501,834,835,838],{},[474,836,39],{"href":837},"\u002Fconcepts\u002Fdata-model"," — collections, fields, and relations",{"title":840,"searchDepth":841,"depth":841,"links":842},"",2,[843,844,845,846,847,848,849],{"id":456,"depth":841,"text":143},{"id":495,"depth":841,"text":496},{"id":533,"depth":841,"text":534},{"id":600,"depth":841,"text":601},{"id":678,"depth":841,"text":679},{"id":799,"depth":841,"text":800},{"id":815,"depth":841,"text":816},"Connect APIs, SaaS applications, and other systems that have no built-in connector by building a data connector extension.","md",null,{},{"icon":114},{"title":295,"description":850},"LRNNcwe0uFBDy2ef4B97s175k8wRbfrnISEvbOPApCU",[858,860],{"title":290,"path":291,"stem":292,"description":859,"icon":293,"children":-1},"Configuration options and limitations for the MySQL and MariaDB connectors, and setup notes for the managed and compatible services they connect to.",{"title":299,"path":300,"stem":301,"description":861,"icon":209,"children":-1},"How each field type is represented in JSON in Monospace API requests and responses.",1791199471060]