RTiS
RTiS (Roche Terminology and Information Services) is the single source of truth for all data models in the roche-data pipeline. Domain experts maintain ontologies, terminologies, synonyms, and entity relationships in RTiS. The pipeline pulls entity definitions via REST API and writes frozen snapshots to models/{entity}/model.json — everything downstream traces back to an RTiS model version.
Connection Details
Section titled “Connection Details”| Property | Value |
|---|---|
| URL | https://ontology-services.roche.com/api |
| Auth method | Basic Auth (service account) |
| Network | Roche corporate network (VPN required) |
| Access task | A01 |
| GitHub issue | #15 (closed — resolved 2026-04-24) |
Environment Variables
Section titled “Environment Variables”| Variable | Source | Description |
|---|---|---|
RTIS_BASE_URL | Vault common/rtis | Base URL for RTiS REST API (https://ontology-services.roche.com/api) |
RTIS_TIMEOUT_SECONDS | Vault common/rtis | HTTP timeout (default: 300s) |
GENERIC_ID_USERNAME | Vault {env}/rtis | Service account username for Basic Auth |
GENERIC_ID_PASSWORD | Vault {env}/rtis | Service account password for Basic Auth |
Configuration
Section titled “Configuration”RTiS entity identifiers are configured in roche-data.toml:
[rtis]base_url = "https://ontology-services.roche.com/api"
[rtis.entities.organization-site]rtis_class_id = "ROX38275200443992329"rtis_terminology_id = "ROX38218176443982250"CLI Modules
Section titled “CLI Modules”| Module | Usage |
|---|---|
rdt-model-pull | Fetches entity definitions, writes models/{entity}/model.json |
API Endpoints
Section titled “API Endpoints”| Method | Path | Purpose |
|---|---|---|
GET | /int/refmodels/classes/{class_id} | Class definition and parent edges |
GET | /int/refmodels/properties?domain={class_id} | OWL properties for the class |
GET | /int/refterminologies/{terminology_id} | Terminology metadata |
GET | /int/refmodels/classes?page=0&size=342 | List all available classes |
GET | /int/refmodels/metadata | API metadata (for connectivity testing) |
Access Verification
Section titled “Access Verification”Script: scripts/access/check-rtis.sh
Required tools: curl
Checks performed:
- HTTP connectivity to RTiS endpoint
- HTTP status code validation (200/204 = pass, 401/403 = auth failure, timeout = network issue)
Expected state: HTTP 200/204 when on VPN with valid credentials. Returns 401 if credentials are incorrect.
Authentication
Section titled “Authentication”RTiS uses HTTP Basic Auth:
curl -u "$GENERIC_ID_USERNAME:$GENERIC_ID_PASSWORD" \ "https://ontology-services.roche.com/api/int/refmodels/metadata"The service account was provisioned on 2026-04-24. The public gateway endpoint is confirmed working.
Data Model
Section titled “Data Model”RTiS provides:
| Concept | Maps to | Used for |
|---|---|---|
| Classes | Entity definitions | Schema structure, field names |
| OWL Properties | Field metadata | Data types, nullability, relationships |
| Terminologies | Controlled vocabularies | Silver layer enrichment, semantic mappings |
| Synonyms | Alternative names | Search, documentation |
| Relationships | Entity graph edges | Lineage, foreign keys |
Output
Section titled “Output”models/{entity}/model.json — a frozen snapshot containing:
- Entity metadata (name, version, description, last_modified)
- Fields array (name, data_type, nullable, primary_key, description)
- Relationships array (name, target_entity, relationship_type, foreign_key)
- Terminology mappings (field, terminology_system, code, display)
Troubleshooting
Section titled “Troubleshooting”| Symptom | Cause | Resolution |
|---|---|---|
| HTTP timeout | Not on Roche VPN | Connect to VPN or use --dry-run |
| HTTP 401 | Invalid credentials | Check GENERIC_ID_USERNAME/GENERIC_ID_PASSWORD in .env |
| Empty fields array | OWL properties are global | Expected — RTiS returns all global properties, not entity-specific |
rtis_class_id not set | Entity not registered in RTiS | Request class from RTiS owner, update roche-data.toml |