Skip to main content

Timbr REST API connector

Project description

Timbr logo

FOSSA Status FOSSA Status

Python 3.10 Python 3.11 Python 3.12

PypiVersion

timbr REST API connector using Python

This project is a pure python connector to timbr (no dependencies required).

Dependencies

  • Access to a timbr-server
  • Python from 3.10 or newer

Installation

Sample usage

  • For an example of how to use the REST API connector for Timbr, follow this Example file

Connection parameters examples

Generic example and explanation for each parameter

  pytimbr_api.run_query(
    url = "<TIMBR_URL>",
    ontology = "<ONTOLOGY_NAME>",
    token = "<USER_TOKEN>",
    query = "<TIMBR_QUERY>",
    datasource = "<DATASOURCE_NAME>",
    nested = "<true/false>",
    verify_ssl = <True/False>,
    enable_IPv6 = <True/False>,
    is_jwt = <True/False>,
    jwt_tenant_id = "<JWT_TENANT_ID>",
    additional_headers = <{ "x-api-impersonate-user": "<user to impersonate>" }>,
    is_async = <True/False>,
  )

  # url                 - Required - String - The IP / Hostname of the Timbr platform.
  # ontology            - Required - String - The ontology / knowledge graph to connect to.
  # token               - Required - String - Timbr token value or JWT token value. Note: If you are using JWT token, you need to set the is_jwt parameter to True.
  # query               - Required - String - The query that you want to execute.
  # datasource          - Optional - String - Add the specific datasource name that you want to query from, the default value is the current active datasource of your ontology.
  # nested              - Optional - String - Change to 'true' if nested flag needs to be enabled. make sure this flag contains string value not bool value.
  # verify_ssl          - Optional - Boolean - Verifying the target server's SSL Certificate, use False to disable this process.
  # enable_IPv6         - Optional - Boolean - Change to 'true' if you are using IPv6 connection.
  # is_jwt              - Optional - Boolean - Set to True if you are using JWT token, otherwise set to False.
  # jwt_tenant_id       - Optional - String - The tenant ID for JWT authentication.
  # additional_headers  - Optional - Dict - Extra Timbr connection parameters sent with every request (e.g., 'x-api-impersonate-user').
  # is_async            - Optional - Boolean - Set to True to submit the query asynchronously. Returns the submission response (including response_id) immediately instead of waiting for the result. Use get_async_result() to poll for completion. Default: False.

Async query execution

For long-running queries that may time out on a synchronous HTTP connection, use the two-step async flow:

  1. Submit — call run_query with is_async=True. It returns immediately with a submission response containing a response_id.
  2. Poll — call get_async_result with the response_id to check the status. Repeat until status is 'completed' or 'error'.
import time
import pytimbr_api

URL = "https://mytimbrenv.com:443"
ONTOLOGY = "my_ontology"
TOKEN = "tk_mytimbrtoken"

# Step 1: submit the query asynchronously
submission = pytimbr_api.run_query(
  url = URL,
  ontology = ONTOLOGY,
  token = TOKEN,
  query = "SELECT * FROM timbr.large_table",
  is_async = True,
)
response_id = submission["response_id"]
print(f"Query submitted — response_id: {response_id}")

# Step 2: poll until the result is ready
while True:
  result = pytimbr_api.get_async_result(
    url = URL,
    response_id = response_id,
    token = TOKEN,
  )
  status = result["status"]
  if status == "completed":
    print(result["response"])
    break
  elif status == "error":
    raise Exception(f"Query failed: {result.get('error')}")
  else:
    print(f"Status: {status} — waiting...")
    time.sleep(3)

get_async_result makes a single request each call and returns the raw server response — polling cadence and timeout logic are left to the caller.

Using Timbr token

HTTP example

  pytimbr_api.run_query(
    url = "http://mytimbrenv.com:11000",
    ontology = "my_ontology",
    token = "tk_mytimbrtoken",
    query = "SELECT * FROM timbr.sys_concepts",
    datasource = "my_datasource",
    nested = "false",
    verify_ssl = False,
    enable_IPv6 = False,
  )

HTTPS example

  pytimbr_api.run_query(
    url = "https://mytimbrenv.com:443",
    ontology = "my_ontology",
    token = "tk_mytimbrtoken",
    query = "SELECT * FROM timbr.sys_concepts",
    datasource = "my_datasource",
    nested = "false",
    verify_ssl = True,
    enable_IPv6 = False,
  )

Using JWT token

HTTP example

  pytimbr_api.run_query(
    url = "http://mytimbrenv.com:11000",
    ontology = "my_ontology",
    token = "tk_mytimbrtoken",
    query = "SELECT * FROM timbr.sys_concepts",
    datasource = "my_datasource",
    nested = "false",
    verify_ssl = False,
    enable_IPv6 = False,
    is_jwt = True,
    jwt_tenant_id = "my_tenant_id",
  )

HTTPS example

  pytimbr_api.run_query(
    url = "https://mytimbrenv.com:11000",
    ontology = "my_ontology",
    token = "tk_mytimbrtoken",
    query = "SELECT * FROM timbr.sys_concepts",
    datasource = "my_datasource",
    nested = "false",
    verify_ssl = True,
    enable_IPv6 = False,
    is_jwt = True,
    jwt_tenant_id = "my_tenant_id",
  )

Execute query examples

Using Timbr token

HTTP connection

  response = pytimbr_api.run_query(
    url = "http://mytimbrenv.com:11000",
    ontology = "my_ontology",
    token = "tk_mytimbrtoken",
    query = "SELECT * FROM timbr.sys_concepts",
    datasource = "my_datasource",
    nested = "false",
    verify_ssl = False,
    enable_IPv6 = False,
  )
  print(response)

HTTPS connection

  response = pytimbr_api.run_query(
    url = "https://mytimbrenv.com:443",
    ontology = "my_ontology",
    token = "tk_mytimbrtoken",
    query = "SELECT * FROM timbr.sys_concepts",
    datasource = "my_datasource",
    nested = "false",
    verify_ssl = True,
    enable_IPv6 = False,
  )
  print(response)

Using JWT token

HTTP example

  response = pytimbr_api.run_query(
    url = "http://mytimbrenv.com:11000",
    ontology = "my_ontology",
    token = "tk_mytimbrtoken",
    query = "SELECT * FROM timbr.sys_concepts",
    datasource = "my_datasource",
    nested = "false",
    verify_ssl = False,
    enable_IPv6 = False,
    is_jwt = True,
    jwt_tenant_id = "my_tenant_id",
  )
  print(response)

HTTPS example

  response = pytimbr_api.run_query(
    url = "https://mytimbrenv.com:11000",
    ontology = "my_ontology",
    token = "tk_mytimbrtoken",
    query = "SELECT * FROM timbr.sys_concepts",
    datasource = "my_datasource",
    nested = "false",
    verify_ssl = True,
    enable_IPv6 = False,
    is_jwt = True,
    jwt_tenant_id = "my_tenant_id",
  )
  print(response)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytimbr_api-2.2.0.tar.gz (12.6 kB view details)

Uploaded Source

File details

Details for the file pytimbr_api-2.2.0.tar.gz.

File metadata

  • Download URL: pytimbr_api-2.2.0.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.9

File hashes

Hashes for pytimbr_api-2.2.0.tar.gz
Algorithm Hash digest
SHA256 643720a353dc3d4ac61ca00c556498e39afd9c02944e80b6755c1733ff52d94e
MD5 11ee741216bd1fa628e781338ed81f55
BLAKE2b-256 70f421aa6db4ad5bf7d6dd40703eb21e17062eef746878ca1164ad70382b5177

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page