NetOrca SDK
The official Python SDK for the NetOrca API. Build automation pipelines, manage services, and integrate NetOrca into your CI/CD workflows with a clean, fully typed Python interface.
Installation
Requirements: Python 3.8+
Client Initialisation
from netorca_sdk import NetOrcaClient
client = NetOrcaClient(
fqdn="https://your-instance.netorca.io/v1",
api_key="YOUR_API_KEY",
)
The context parameter controls which point-of-view the client operates from:
# Service owner context (default)
client = NetOrcaClient(fqdn="...", api_key="...", context="serviceowner")
# Consumer context
client = NetOrcaClient(fqdn="...", api_key="...", context="consumer")
| Parameter | Type | Default | Description |
|---|---|---|---|
fqdn |
str |
required | Base URL of your NetOrca instance |
api_key |
str |
required | Your NetOrca API key |
context |
str |
"serviceowner" |
Point-of-view: "serviceowner" or "consumer" |
verify_ssl |
bool |
True |
Verify SSL certificates on requests |
verify_auth |
bool |
True |
Validate the API key on initialisation |
Available Resources
client.services
The definitions published in the NetOrca catalogue — what consumers can order. Each service has a name, JSON Schema, and lifecycle state.
client.service_items
A running instance of a service — what a consumer has requested and what the service owner delivers.
client.deployed_items
Records the provisioning output of a fulfilled change instance — connection strings, hostnames, credentials, or any structured data the consumer needs.
item = client.deployed_items.create({
"service_item": 123,
"change_instance": 456,
"data": {"host": "db-prod-01.internal", "port": 5432}
})
print(item.id)
client.change_instances
A lifecycle event on a service item — a create, modify, or delete request. Automation pipelines watch these, process them, and update the state.
for ci in client.change_instances.list(state="PENDING"):
print(ci.id, ci.change_type)
client.change_instances.update(ci.id, {"state": "COMPLETED"})
client.service_configs
A snapshot of a service's configuration at a specific version, recorded whenever it's provisioned or modified.
config = client.service_configs.create({
"service": 45,
"config": {"engine": "postgres", "size": "medium"}
})
print(config.id, config.version)
client.charges
Billing records attached to service items — either a one-time cost per change or a recurring monthly cost. Read-only.
client.applications
A named grouping that belongs to a consumer team; every service item belongs to one. Managed automatically by the platform, so it's read-only.
client.submissions
Direct access to submission records — each one is a payload a consumer team sent declaring the state of their applications. Immutable once created.
submission = client.submissions.submit({
"team_name": {
"metadata": {"team_email": "team@example.com"},
"my-application": {"services": {"DATABASE": {"engine": "postgres"}}}
}
})
print(submission.id, submission.status)
client.healthchecks
Verifies the availability of a service item by making an HTTP request to a configured URL. Results are stored and can be triggered on demand.
client.webhooks
Registers a URL for NetOrca to POST to whenever a change instance reaches a configured state.
webhook = client.webhooks.create({
"target_url": "https://your-service.example.com/netorca/events",
"service": 45,
"change_instance_state": "PENDING"
})
client.ai_processors
Defines the prompts NetOrca uses to automate service operations — linked to a service, an LLM model, and an action type (config, verify, execution, etc).
processor = client.ai_processors.create({
"name": "database-service_config",
"service": 45,
"llm_model": 1,
"action_type": "config",
"prompt": "Given the consumer request, generate a valid database configuration...",
"active": True
})
client.ai_documents
Context files attached to a service that an AI processor can retrieve and query when generating a configuration — architecture notes, runbooks, policies.
doc = client.ai_documents.create_for_service(
service_id=45,
data={"filename": "runbook.md", "raw_content": "# Runbook\n..."}
)
client.pack_profiles
The configuration record that ties a service's AI pack together — linking processors, validators, and documents into a resolved configuration.
profile = client.pack_profiles.create_for_service(
service_id=45,
data={"pack_enabled": True, "top_k": 5}
)
client.pack
Actions for triggering a Pack pipeline stage or retriggering a service or service item's pipeline from CONFIG:
client.pack.trigger(object_id=389, action_type="config")
client.pack.retrigger(object_id=389, serviceowner_comment="The deployment failed; use VLAN 210")
client.messages
Create and delete service-owner messages displayed to eligible consumers.
message = client.messages.create({
"description": "Scheduled maintenance",
"expiry_date": "2026-09-30T12:00:00.000Z",
"scopes": [],
})
client.messages.delete(message.id)
client.llm_models
Language model connections registered in NetOrca — register a model once with its provider credentials, then reuse it across processors and validators.
model = client.llm_models.create({
"name": "gpt-4o",
"provider": "openai",
"model_name": "gpt-4o",
"api_key": "sk-...",
"active": True
})
Full Documentation
docs.netorca.io/sdk-guide/introduction