@kquika-inc/trakt
v1.0.8
Published
Trakt System Integrations API client: fleet predictions and maintenance forecasts.
Maintainers
Readme
Trakt System SDK
Client libraries for the Trakt System Integrations API: fleet predictions and maintenance forecasts, in a few lines of code.
Trakt System predicts which components on your fleet need attention, when, and what to do about them. This SDK gives you that data directly, with authentication, retries, and rate limits handled for you.
Install
Python
pip install kquika-trakt # core
pip install "kquika-trakt[pandas]" # with DataFrame supportThe distribution is named kquika-trakt and the import is trakt. That
difference is normal: the package you install and the module you import do not
have to share a name.
Node / TypeScript
npm install @kquika-inc/traktRequires Node 18 or newer. TypeScript types are included.
Quickstart
Python
from trakt import Trakt
trakt = Trakt(token="YOUR_API_KEY") # or set TRAKT_TOKEN
# What can this token do?
cfg = trakt.config()
print(cfg.access_level, cfg.max_predictions, cfg.can_export)
# Per-component predictions, most urgent first
for c in trakt.components():
print(c.name, c.aircraft_tail_number, c.health,
c.failure_probability, c.recommended_action)
# The next 90 days of maintenance, soonest first
for item in trakt.forecast(days=90):
if item.is_overdue:
print("OVERDUE:", item.tail_number, item.component_name)
# Straight to a DataFrame for planning
df = trakt.components_dataframe()Node / TypeScript
import { Trakt } from "@kquika/trakt";
const trakt = new Trakt({ token: process.env.TRAKT_TOKEN! });
const cfg = await trakt.config();
console.log(cfg.access_level, cfg.max_predictions);
// Per-component predictions, most urgent first
const components = await trakt.components();
for (const c of components) {
console.log(c.name, c.aircraft_tail_number, c.health, c.recommended_action);
}
// The next 90 days of maintenance, soonest first
const forecast = await trakt.forecast({ days: 90 });
for (const item of forecast) {
if (item.is_overdue) console.log("OVERDUE:", item.tail_number, item.component_name);
}Handling errors
Both clients raise typed errors, so you can catch the case you care about.
from trakt import AuthenticationError, PermissionError_, RateLimitError
try:
components = trakt.components()
except AuthenticationError:
print("The token was not accepted.")
except PermissionError_:
print("This token's access level does not cover that call.")
except RateLimitError:
print("Quota exhausted. The client already retried with backoff.")import { AuthenticationError, PermissionError, RateLimitError } from "@kquika-inc/trakt";
try {
const components = await trakt.components();
} catch (e) {
if (e instanceof AuthenticationError) console.error("The token was not accepted.");
else if (e instanceof PermissionError) console.error("Access level does not cover that call.");
else if (e instanceof RateLimitError) console.error("Quota exhausted.");
else throw e;
}What the clients do for you
- Auth. Set the token once; every request carries the bearer header.
- Retries. A rate limit or a transient server failure is retried with
exponential backoff and jitter, honoring
Retry-Afterwhen it is sent. A rejected token or a permission error is not retried, because retrying will not fix it. - Typed errors.
AuthenticationError,PermissionError,RateLimitError,NotFoundError,ServerError. - Flattened objects. The nested prediction, survival, and maintenance blocks
are lifted onto the component, so
healthandrecommended_actionare one attribute away. - Useful ordering. Components come back most urgent first; forecast items come back soonest first.
Reading the fields
| Field | Meaning |
| --- | --- |
| health | 0 to 100, where higher is healthier. |
| health_trend | stable, declining, or critical. |
| predicted_rul_hours / predicted_rul_days | Remaining useful life before attention is due. |
| failure_probability | 0 to 1, the modeled chance of failure in the near term. |
| recommended_action | do_nothing, inspect, repair, or replace. |
| priority | The urgency band for planning. |
| task_reference | The task identifier from your source system, so a row ties back to its task. |
| days_until_due | Negative means the item is already past due. |
Access levels
Your token is issued at one of three levels, which control both the endpoints it can reach and how many records a request returns:
read_only— read predictions and forecastsread_write— read, plus the write endpointsfull— everything, including fleet export
A call outside your token's level raises a permission error. Call config() to
see the level and limits for your token rather than guessing.
Need a client in another language?
The SDKs are built from an OpenAPI specification, so a client can be generated for most languages. Contact us and we will provide the spec.
Support
Questions, a token, or a raised limit: [email protected]
License
MIT
