
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
volt-time-cloud-api
Advanced tools
Node.js client library for the VoltTime Cloud API.
npm install
npm run build
import { VoltTimeClient } from './dist/index.js';
const client = new VoltTimeClient({
apiKey: 'your-api-key-here'
});
const user = await client.getCurrentUser();
console.log(user);
const user = await client.getUserDetails('user-id');
console.log(user);
const sites = await client.getSites({
page: 1,
per_page: 20
});
console.log(sites.data);
console.log(`Total: ${sites.meta.per_page}`);
const site = await client.getSite('site-uuid');
console.log(site);
const chargers = await client.getChargers({
page: 1,
per_page: 20
});
console.log(chargers.data);
const charger = await client.getCharger('charger-uuid');
console.log(charger);
const transactions = await client.getTransactionsBySite(
'site-uuid',
{
page: 1,
per_page: 50
}
);
console.log(transactions.data);
// Automatically fetch all pages
const allTransactions = await client.getAllTransactionsBySite('site-uuid');
console.log(`Total transactions: ${allTransactions.length}`);
const totalKwh = allTransactions.reduce(
(sum, tx) => sum + parseFloat(tx.total_kwh),
0
);
console.log(`Total energy: ${totalKwh.toFixed(2)} kWh`);
const tariffs = await client.getTariffs('BE'); // Location code
console.log(`Found ${tariffs.length} tariffs`);
tariffs.forEach((tariff) => {
console.log(`${tariff.timestamp}: €${tariff.price} (${tariff.type})`);
});
const providers = await client.getProviders();
console.log(`Found ${providers.length} providers`);
providers.forEach((provider) => {
console.log(`${provider.name}: ${provider.websocket_url}`);
});
const products = await client.getProducts();
console.log(`Found ${products.length} products`);
products.forEach((product) => {
console.log(`${product.name} (${product.sku}): €${product.price}`);
});
const powerUsage = await client.getConnectorPowerUsage(
'charger-uuid',
1 // connector ID
);
console.log(`Power: ${powerUsage.kW} kW`);
console.log(`L1: ${powerUsage.L1} A`);
console.log(`L2: ${powerUsage.L2} A`);
console.log(`L3: ${powerUsage.L3} A`);
const meterValue = await client.getConnectorLatestMeterValue(
'charger-uuid',
1 // connector ID
);
console.log(`Connector ID: ${meterValue.connectorId}`);
const latest = meterValue.meterValue[0];
console.log(`Timestamp: ${latest.timestamp}`);
latest.sampledValue.forEach((sv) => {
console.log(`${sv.measurand}: ${sv.value} ${sv.unit || ''}`);
});
For backward compatibility, these aliases are available:
// Same as getChargers()
const chargePoints = await client.getChargePoints();
// Same as getCharger()
const chargePoint = await client.getChargePoint('charger-uuid');
import { VoltTimeAPIError } from './dist/index.js';
try {
const user = await client.getCurrentUser();
} catch (error) {
if (error instanceof VoltTimeAPIError) {
console.error(`API Error: ${error.message}`);
console.error(`Status Code: ${error.statusCode}`);
console.error(`Response:`, error.responseData);
} else {
console.error('Unexpected error:', error);
}
}
Create a .env file for your API key:
VOLTTIME_API_KEY=your-api-key-here
Then run:
node dist/example.js
new VoltTimeClient(config: VoltTimeConfig)
config.apiKey (required): Your VoltTime API keyconfig.baseUrl (optional): Custom API base URL (defaults to https://app.plugchoice.com/api/v3)User
getCurrentUser(): Promise<User>getUserDetails(userId: string): Promise<User>Sites
getSites(params?: PaginationParams): Promise<PaginatedResponse<Site>>getSite(siteUuid: string): Promise<Site>Chargers
getChargers(params?: PaginationParams): Promise<PaginatedResponse<Charger>>getCharger(chargerUuid: string): Promise<Charger>Transactions
getTransactionsBySite(siteUuid: string, params?: TransactionParams): Promise<PaginatedResponse<Transaction>>getAllTransactionsBySite(siteUuid: string, params?: TransactionParams): Promise<Transaction[]>Tariffs
getTariffs(location: string): Promise<Tariff[]>Providers
getProviders(): Promise<Provider[]>Products
getProducts(): Promise<Product[]>Connectors
getConnectorPowerUsage(chargerUuid: string, connectorId: number): Promise<ConnectorPowerUsage>getConnectorLatestMeterValue(chargerUuid: string, connectorId: number): Promise<ConnectorMeterValue>Legacy Aliases
getChargePoints(params?: PaginationParams): Promise<PaginatedResponse<ChargePoint>>getChargePoint(chargePointId: string): Promise<ChargePoint>See src/types.ts for full type definitions including:
User, Site, Charger, TransactionTariff, Provider, ProductConnectorPowerUsage, ConnectorMeterValue, SampledValue, MeterValuePaginatedResponse<T>, PaginationParams, TransactionParamsSee example.ts for a complete working example demonstrating all endpoints.
MIT
FAQs
Node.js client library for VoltTime Cloud API
We found that volt-time-cloud-api demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.