How to connect a source
Use this guide when a program needs evidence from an external system (the open literature and knowledge
sources, a document library, analytical tools) or a source you cite by hand. You start with a program that
has no connection; you end with a connection record, a sync run, and a source record in Evidence. The two
read-only connectors with partner onboarding steps have their own guides:
How to connect an ELN and How to connect a QMS. The steps need program.connections.manage, program.connections.sync and
evidence.sources.manage; reading needs the matching .read permissions.
Every provider is designed until the R1 gates pass. A new connection starts as pending;
a manual sync of document_library or analysis_tools finishes as skipped with a
NotImplemented error entry because those adapters do not fetch data, while literature_search reads the
open sources with platform keys. The steps below record what the product is designed to do.
Prerequisites
- A program you can open (the program appears in your switcher).
- The permissions named in each step, for example through the
program_leadorprogram_ownerpersona.
Open Setup › Connections
In the rail choose Setup, then Connections in the panel (/p/<slug>/setup/connections). The page
lists the program’s connections with provider, status, health, enabled flag, write policy, pinned API
version and last sync. The header summarises the providers and their release status. Needs
program.connections.read.
Add a connection
Choose Add connection (needs program.connections.manage). In the form that expands in the connections list pick a Provider from
literature_search (“Literature search”), benchling (“ELN connector”), veeva_qualitydocs (“QMS/SOP
connector”), document_library (“Document library”) or analysis_tools (“Analytical and design tools”),
give it a Name, optionally pick a Stage (the program’s current stage is the default) and submit. The
form calls POST /programs/{program_id}/connections; the record appears with status pending until the
credentials are configured (platform keys for the literature sources; per-connection service credentials for
the two read-only connectors). Secret values are never stored in the database: secret_refs hold references
only. Connections are program-scoped and carry scope_rules, write_policy and api_version.
Trigger a sync run
Select the connection, then Sync now (needs program.connections.sync). This calls
POST /programs/{program_id}/connections/{connection_id}/sync and queues a sync run with trigger
manual. The run list under the connection (GET .../connections/{connection_id}/runs) shows it move
from queued to succeeded (or skipped
for a provider without an adapter) once the worker’s background lane claims it.
Register a source by hand
In the rail choose Evidence, then Sources in the panel (/p/<slug>/evidence/sources). Choose
Add source (needs evidence.sources.manage), pick a Kind (publication, eln_entry, protocol,
report, dataset, sop_document, registry_record, preprint or other), enter a Title, optionally
a Citation, an External reference (a DOI, PMID or record id in the connected system), a Licence
code and a Summary, and submit. The source is created with status pending,
origin = human and a “Saved” confirmation. Sources the agent proposes in the console arrive the same way
with origin = agent after you approve them.
Link the source to a question
Open the source and link it to a question, finding or hypothesis (needs evidence.sources.link, route
POST /programs/{program_id}/evidence/sources/{source_id}/links with target_type in question,
finding or hypothesis). Findings that cite the source keep the link in source_ids.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Add connection is not shown | You lack program.connections.manage | Ask a program owner for the program_lead persona or a direct assignment |
The sync run stays queued | No worker process is running | Run make worker in api/ |
The sync run finishes skipped | Expected for document_library and analysis_tools, which have no adapter | Nothing to fix; the error entry says NotImplemented |
403 with permission in the body | The route needs a permission you do not hold | The problem document names the missing key |
Related
- Connectors and the provider list on the API reference.
- How to run an evidence comparison.