For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/en/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/en/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/en/guides/public-cloud/data-platform/connectors-custom-sources.md.

Build your own connector with Custom Sources

View as Markdown

Custom Sources let you bring your own connector for an API that Data Platform has no connector for

Objective

Custom Sources let you bring your own connector for an API that Data Platform has no connector for. Your coding agent writes and tests the connector on your machine, guided by a skill you download from Data Platform. You upload the result as a package, Data Platform checks and publishes it, and anyone with source rights in the project can then create sources from it.

A source built on a custom connector works like any other source: it appears in the Sources list, its metadata is extracted, and it feeds Load actions, tables and lineage. Only the name of its connector sets it apart.

The Custom Sources page before any connector is added, with the Download skill and Upload buttons

Custom Sources or HTTP REST

The HTTP REST connector already covers APIs you can describe in a form. Use a custom source when the API needs Python to be read:

  • pagination that HTTP REST cannot follow;
  • several calls to build one record;
  • responses that must be reshaped before they are loaded;
  • an authentication scheme HTTP REST does not support.

A custom connector is never built or edited in Data Platform. The package is the connector: its code, its endpoints and its credential fields come from the package, and they change only when you upload a new one.

Requirements

  • An AI coding agent on your machine, to build the connector.
  • The documentation of the API, or an OpenAPI file or cURL examples, and valid credentials if the API needs them.
  • The permission to write sources in the project (see Permissions).

Instructions

Download the skill

In the Connectors service, open Custom Sources and click Download skill. The skill is a folder you give to your coding agent. It holds:

ContentWhat it is for
SKILL.mdThe instructions the agent follows, from the API documentation to the finished package
An example packageA complete connector to start from
reference/package-format.md, reference/connector-contract.mdThe format of a package and the functions a connector must provide
harness/A runner that executes the connector the way an extraction job does, the checks Data Platform runs at upload, and the command that builds the package

You can download the skill again at any time from the same page.

Build and test the connector with your agent

Give the skill folder to your coding agent and ask it to build a connector for your API. Following the skill, the agent:

  1. Checks that a custom source is the right tool, rather than HTTP REST.
  2. Asks you for the API documentation, the data you want and how authentication works.
  3. Writes the connector: a manifest (forepaas.json) and a Python module.
  4. Runs the connector against the real API, with credentials you export as CUSTOM_SOURCE_<KEY> environment variables. Credential values are never written in a file.
  5. Runs the same checks Data Platform runs at upload, then builds the package, a .tgz file.
  6. Tells you what the connector extracts, which credential fields it declares, which warnings remain and what it could not run.

The test runs on your machine, against the real API: Data Platform never sees your credentials while the connector is built.

Upload the connector

On the Custom Sources page, click Upload, then drop the .tgz file in the window or click to pick it.

The Upload a custom source window before a package is dropped

Data Platform runs its checks and shows the endpoints it found, with:

  • errors, which block the upload: fix them with your agent and upload the new package;
  • warnings, which do not block it: read them, and fix them with your agent if they apply to you.
The Upload a custom source window after a package is dropped, showing the connector with its endpoint count and the Add button

Click Add. The connector is published at once and its page opens. You can create a source from it right away, or later from the same page.

The confirmation shown once the connector is added, offering to connect to it now or later

A package is refused when it declares a dependency other than a Python dependency, contains a script, or holds a file other than the manifest, the Python module and the icon. Its technical name cannot be the name of a connector built into Data Platform.

Review and edit the connector

Open a connector from the Custom Sources list. Its page has 2 tabs:

  • Definition: the result of the checks, with any remaining warning, then the identity of the connector, its connection (base URL, authentication method), its credential fields and its endpoints with their parameters.
  • Code: the Python code that runs in the extraction jobs.
The page of a custom connector on the Definition tab, with the Export, Connect to the source and Upload new version buttons The Code tab of a custom connector, showing its Python code read-only

You can change 3 things in Data Platform: the display name (up to 200 characters), the description (up to 2,000 characters) and the icon. A Save button appears when you change one of them. Everything else comes from the package and is read-only: to change the code, the endpoints, the credential fields or the authentication, update the connector with your agent and upload a new version.

The technical name cannot change. It identifies the connector, and an upload with the same technical name replaces it.

Create a source from the connector

On the page of the connector, click Connect to the source. You can also click New Source in the Sources list: custom connectors are listed under the Custom Source category of the store, next to the built-in ones.

The New Source store with the Custom source category listing the connector added to the project

The standard source wizard opens. Name the source, fill in the credential fields the connector declares, pick the endpoints and their parameters, then save. See Configure your connector for the steps that follow, from metadata extraction to loading.

Update a connector

  1. On the page of the connector, click Export. The package downloads, without any credential value. Keep it as a backup.
  2. Give the exported package to your agent, with the skill, and ask for the change. The agent keeps the technical name, tests every endpoint, runs the checks and builds a new package.
  3. Click Upload new version and upload the new package. It replaces the previous one.

Sources on the connector run the new code from their next job. If something breaks, upload the package you exported in step 1 again.

Uploading a package with the same technical name from Upload on the Custom Sources page also replaces the connector: the window offers to replace it, never to create a second one. Upload new version refuses a package whose technical name is different.

Share a connector with another project

Click Export on the page of the connector, then upload the package in the other project with Upload. The same connector is published there. Credential values are not part of the package: each source in the other project needs its own.

Delete a connector

Click Delete in the Custom Sources list. The page of the connector has no delete button.

Warning

Sources that use the connector stop working. When sources depend on the connector, the confirmation lists them by name. Once the connector is deleted, these sources are kept as orphans, and their next job fails with a message naming the missing connector.

Permissions

Custom Sources use the existing source permissions of the Identity Access Manager. There is no dedicated role.

To do thisYou need
See the Custom Sources page, the connectors and their codeSource read
Upload a connector or a new version, change its display name, description or iconSource write
Delete a connectorSource delete
Create a source from a custom connectorThe same right as for any other source

Without source rights, the Custom Sources page and the Custom Source store category are not shown. With read rights only, the page and the connectors are visible, and Save, Upload, Upload new version and Delete are disabled.

Good to know

  • The code runs in your project's extraction jobs only, like a built-in connector. It never runs in a shared Data Platform service.
  • Credentials are declared as secret fields in the package and filled in when you create a source. Their values are never part of a package, including an exported one.
  • A new version applies to every source on the connector from their next job. If the new package drops an endpoint that a source uses, the upload does not warn you: that source's next job fails.
  • There is no version history in Data Platform. Export the connector before you upload a new version, so you can restore it.

Troubleshooting

SymptomWhat to do
"The upload shows errors and Add is disabled"Each error names the file, field or value at fault. Give the errors to your agent, then upload the new package. Run the harness checks before uploading to catch these errors earlier.
"The upload is refused because the name is taken by a built-in connector"Ask your agent to change the technical name in forepaas.json, then build and upload the package again.
"Upload new version refuses the package"The technical name differs from the connector's. Start the change from the exported package, so the agent keeps the technical name.
"A source fails after a new version was uploaded"Check that the new package still has the endpoints the source uses. Upload the previous package again to restore the connector.
"A source's job fails naming a missing connector"Its connector was deleted. Create the source again on another connector.

Go further

For training or technical assistance implementing our solutions, contact your sales representative or visit our Professional Services page to request a quote and have your project analysed by our experts.

Ask questions, give your feedback and interact directly with the team building the Data Platform on the dedicated Discord channel.

If you need support with your OVHcloud services, create a request in our Help Centre.

Join our community of users.

Was this page helpful?