@blacktopdata/blacktop-api-client
Typed TypeScript client for the blacktop-api (ocblacktop) v1 endpoints. Generated from the API's OpenAPI spec — do not hand-edit src/.
Install
npm install @blacktopdata/blacktop-api-client
Get an API key at https://ocblacktop.com/api. Python users: pip install blacktop-data.
Usage
import { client, EventsService } from '@blacktopdata/blacktop-api-client';
client.setConfig({
baseUrl: 'https://api.ocblacktop.com',
headers: { 'X-API-Key': process.env.BLACKTOP_API_KEY! },
});
const { data, error } = await EventsService.listF1Events({
query: { page: 1, limit: 20 },
});
The circuit series (F1, NASCAR, IndyCar, MotoGP) share resource-oriented services
(DriversService, EventsService, SeasonsService, StandingsService, …). The
World Rally Championship is rally-shaped and has its own services —
WrcRalliesService, WrcStandingsService, WrcSeasonsService, and
WrcDriversService:
import { client, WrcRalliesService, WrcStandingsService } from '@blacktopdata/blacktop-api-client';
// A season's rallies
const { data: rallies } = await WrcRalliesService.listWrcRallies({
query: { year: 2024 },
});
// Stage results for a rally (driver + co-driver, stage times, gaps)
const { data: stage } = await WrcRalliesService.getWrcRallyStage({
path: { id: rallyId, stageId },
});
// Drivers' championship standings
const { data: standings } = await WrcStandingsService.getWrcDriverStandings({
query: { year: 2024 },
});
Service and method names are generated from the OpenAPI spec; regenerate the SDK (below) after any API change to pick up new endpoints.
Versioning
- major — breaking contract change (removed field, changed type, removed endpoint)
- minor — additive change (new endpoint, new optional field)
- patch — docs / non-functional
Auto-bumped by CI; pin to ^X.Y.Z to receive minor + patch automatically.
Regenerating locally
# from blacktop-api repo root
npm run generate:docs # writes openapi.json
npm run --prefix packages/sdk generate
npm run --prefix packages/sdk build