Building a Complete Report
When an organization selects all three data scopes in your authorization (QR Score, Score Trend, and Pillar Breakdown), the three endpoints combine into a complete resilience report: the current score and grade, the breakdown driving it, and the full trajectory that got there.
This page builds one in three steps: pull, assemble, read. Then it shows where the artifact can live. The example is a board-ready year-in-review for an organization four quarters into a transformation program; the same composed artifact serves a CISO proving the program worked, an underwriter pricing the renewal, and a diligence team comparing targets.
Pull everything
Section titled “Pull everything”CLIENT_ID="osc_x7k2q9_9f8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d"BASE="https://api.overspace.io/orion/v1/customers/$CLIENT_ID"
curl "$BASE/score" -H "x-api-key: $API_KEY"curl "$BASE/pillars" -H "x-api-key: $API_KEY"curl "$BASE/trend?days=365" -H "x-api-key: $API_KEY"const CLIENT_ID = 'osc_x7k2q9_9f8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d';const BASE = `https://api.overspace.io/orion/v1/customers/${CLIENT_ID}`;const headers = { 'x-api-key': process.env.API_KEY };
const [score, pillars, trend] = await Promise.all([ fetch(`${BASE}/score`, { headers }).then((r) => r.json()), fetch(`${BASE}/pillars`, { headers }).then((r) => r.json()), fetch(`${BASE}/trend?days=365`, { headers }).then((r) => r.json()),]);import osimport requests
CLIENT_ID = "osc_x7k2q9_9f8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d"BASE = f"https://api.overspace.io/orion/v1/customers/{CLIENT_ID}"HEADERS = {"x-api-key": os.environ["API_KEY"]}
def get(path, **params): response = requests.get(f"{BASE}{path}", headers=HEADERS, params=params, timeout=10) response.raise_for_status() return response.json()
score = get("/score")pillars = get("/pillars")trend = get("/trend", days=365)Assemble the year-in-review
Section titled “Assemble the year-in-review”The three responses share the same clientId and scoreDate, so they compose directly into a single artifact, the same shape a public trust page publishes. The trend array carries the full daily series from /trend (truncated here for brevity):
{ "clientId": "osc_x7k2q9_9f8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d", "scoreDate": "2026-03-18", "score": 84, "grade": "Optimize", "pillarScores": { "structuralIntegrity": 84, "failureResistance": 82, "deviceHealth": 86, "recoveryCapability": 84 }, "trend": [ { "scoreDate": "2026-03-18", "score": 84 }, { "scoreDate": "2026-03-17", "score": 84 }, { "scoreDate": "2026-03-16", "score": 83 }, { "scoreDate": "2026-03-15", "score": 83 } ]}This composed view answers the three questions every audience asks:
| Question | Source | Answer in this example |
|---|---|---|
| Where do they stand? | Get Score | 84 (Optimize): strong foundation, fine-tuning for excellence |
| What’s driving it? | Get Pillars | All four pillars in the 80s, versus the day-one profile where only Device Health was strong |
| Which way is it heading? | Get Trend | Up 38 points in four quarters, 46 to 84, with the daily trajectory to prove it |
Where the artifact goes
Section titled “Where the artifact goes”Whether it stays internal as a board artifact or goes public on a trust page, the output is the same: a year of daily evidence that the transformation program improved resilience, in a form a board, an underwriter, or an acquirer reads the same way.
- Security Transformation: the full story behind this example, read from every seat: Boards & Regulators, Insurance, M&A, and TPRM
- Public Trust Page: publish this exact artifact on your public site, continuously re-attested, with the credential kept server-side
