New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

@jambonz/time-series

Package Overview
Dependencies
Maintainers
1
Versions
38
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@jambonz/time-series

write and query data to time series daetabase

latest
npmnpm
Version
0.2.18
Version published
Weekly downloads
745
112.25%
Maintainers
1
Weekly downloads
 
Created
Source

time-series

Read and write call detail records and alerts to an influxdb database.

Usage

Import a function and invoke it with the ip address of the influxdb database and a pino logger.

const {
  writeCdrs,
  queryCdrs,
  writeAlerts,
  queryAlerts,
  AlertType
} = require('@jambonz/time-series')(pinoLogger, '172.32.10.44');

CDRs

writing

await writeCdrs([{
    from: 'me',
    to: 'you',
    sip_callid: 'foo@127.0.0.1',
    answered: true,
    duration: 22,
    attempted_at: new Date(Date.now() - (3600 * 1000)),
    answered_at: Date.now() - (3590 * 1000),
    terminated_at: Date.now(),
    termination_reason: 'caller hungup',
    direction: 'inbound',
    host: '10.10.100.1',
    remote_host: '10.10.100.8',
    trunk: 'device',
    account_sid: 'xxxx',
    call_sid: 'foo'
  }]);

reading

Reading is pagination-based: request a page of data, providing the page number and count of records (i.e page size).

Begin by querying page 1 and a count of records >= 25 and <= 500. The response will include a "total" property indicating the total number of records meeting the supplied criteria; based on this you can calculate the total number of page and then provide pagination.

result = await queryCdrs({account_sid: 'yyyy', page: 1, page_size:50});

{
	"total": 1,
	"page_size": 50,
	"page": 1,
	"data": [{cdr 1}, {cdr 2}, .. {cdr 50}]
}
filtering data

CDR data has these tags, of which you must provide at least account_sid in your query, and you may optionally filter the data further by providing any of the other tags and associated values to filter on:

  • account_sid
  • host (IP address of SBC that generated the CDR)
  • trunk (carrier name)
  • direction (inbound or outbound)
  • answered (true or false)
result = await queryCdrs({account_sid: 'yyyy', direction: 'inbound', page: 1, page_size:50});

Alerts

writing

await writeAlerts([{
      alert_type: AlertType.WEBHOOK_STATUS_FAILURE,
      account_sid: 'yyyy',
      url: 'http://foo.bar',
      status: 404
    },
    {
      alert_type: AlertType.TTS_NOT_PROVISIONED,
      account_sid: 'yyyy',
      vendor: 'google'
    },
    {
      alert_type: AlertType.CARRIER_NOT_PROVISIONED,
      account_sid: 'yyyy',
    },
    {
      alert_type: AlertType.CALL_LIMIT,
      account_sid: 'yyyy',
      count: 50,
    }
]);

reading

result = await queryAlerts({account_sid: 'yyyy', page: 1, page_size:50});

{
	"total": 1,
	"page_size": 50,
	"page": 1,
	"data": [{alert 1}, {alert 2}, .. {alert 50}]
}
filtering data

Alert data has these tags, of which you must provide at least account_sid in your query, and you may optionally filter the data further by providing any of the other tags and associated values to filter on:

  • account_sid
  • alert_type
result = await queryAlerts({account_sid: 'yyyy', alert_type: AlertType.CARRIER_NOT_PROVISIONED, page: 1, page_size:50});

FAQs

Package last updated on 01 Apr 2026

Did you know?

Socket

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.

Install

Related posts