A comprehensive Node.js SDK for the Traficom API, providing easy access to Finnish transport and communications data.
- π Type-safe API access
- π Full TypeScript support
- π Promise-based async/await interface
- π Well-documented API methods
- π« No external dependencies
Install the package using npm:
npm install traficom-node
Or using yarn:
yarn add traficom-node
import { createClient } from "traficom-node";
// Initialize the client
const client = createClient();
// Basic usage
const fetchTelecomCompanies = async () => {
try {
const telecomCompanies = await client.getTelecomCompanyIdentifiers();
return telecomCompanies.value;
} catch (error) {
console.error("Error:", error);
}
};
// Get first 5 mobile network codes ordered by company name
const mobileNetworks = await client.getMobileNetworkCodes({
$top: 5,
$orderby: "Company asc",
$select: "ID,Number,Company",
});
// Filter broadband projects by municipality
const projects = await client.getBroadbandProjects({
$filter: "Municipality eq 'Helsinki'",
$select: "ID,ProjectName,OperatorName",
});
// Get municipality-specific network availability
const municipalityAvailability =
await client.getFixedNetworkMunicipalitySpecificAvailability({
$filter: "Availability2Mb gt 90",
$select: "Name,Number,Availability2Mb",
});
// Get province-level network coverage
const provinceAvailability =
await client.getFixedNetworkProvinceSpecificAvailability({
$orderby: "Name asc",
$select: "Name,Availability100Mb",
});
// Get national service numbers
const serviceNumbers = await client.getNationalServiceNumbers({
$filter: "Company eq 'Elisa Oyj'",
$select: "Number,Company,Granted",
});
// Get subscriber numbers with pagination
const subscriberNumbers = await client.getNationalSubscriberNumbers({
$top: 10,
$skip: 20,
$orderby: "Granted desc",
});
try {
const result = await client.getTelecomCompanyIdentifierById(NaN);
} catch (error) {
if (error instanceof TraficomError) {
console.error(`API Error (${error.statusCode}):`, error.message);
} else {
console.error("Unexpected error:", error);
}
}
The SDK supports all OData query parameters:
$select
: Choose specific fields$filter
: Filter results$orderby
: Sort results$top
: Limit number of results$skip
: Skip results for pagination$count
: Include total count$expand
: Expand related entities
Example:
const response = await client.getRadioAmateurCallSigns({
$select: "ID,CallSign",
$filter: "contains(CallSign, 'OH')",
$orderby: "CallSign asc",
$top: 50,
});
The SDK is written in TypeScript and provides full type definitions for all API responses:
import { TelecomCompanyIdentifier, BroadbandProject } from "traficom-node";
const getCompanyProjects = async (
companyName: string,
): Promise<BroadbandProject[]> => {
try {
const { value: projects } = await client.getBroadbandProjects({
$filter: `OperatorName eq '${encodeURIComponent(companyName)}'`,
});
return projects;
} catch (error) {
console.error("Error:", error);
}
};
Contributions are welcome! Please check our contributing guidelines for details.
See CHANGELOG.md for a list of changes and upgrade notes.
git clone https://github.com/villeve/traficom-node.git
cd traficom-node
npm install
npm run build
npm test
- Create an issue
- Write unit tests
- Enhance type coverage
- Thanks to Traficom for providing the API
- All the contributors
MIT License - feel free to use this SDK in your projects.
Full API documentation is available at:
- Traficom API Documentation - Official Traficom API reference