List
Every database this organization may SEE, with where its license stands.
Not just the ones you hold: a customer with one grant should be able to
tell what else is published without asking. standing is the
difference - licensed, expired, or unlicensed for one never
bought.
?apikey=<key>. Convenient in a browser; prefer a header elsewhere.
In: query
Response Body
application/json
application/json
curl -X GET "https://api.vpndetection.io/api/v1/database/list"{
"databases": [
{
"base": "vpn_ip",
"name": "VPN IP",
"summary": "string",
"license_type": "evaluation",
"starts": "2019-08-24T14:15:22Z",
"expires": "2019-08-24T14:15:22Z",
"renews_at": "2019-08-24T14:15:22Z",
"notice_due_at": "2019-08-24T14:15:22Z",
"in_term": true,
"standing": "expired",
"open": true,
"versions": [
{
"id": "vpn_ip_v1",
"version": 1,
"summary": "string",
"formats": [
{
"format": "csvgz",
"bytes": 0
}
],
"sample_formats": [
"csvgz"
]
}
]
}
]
}{
"rc": "string"
}Batch POST
Answers up to 1000 addresses in one call. Each distinct string in `ips` is one lookup: it costs exactly what `GET /{ip}` costs for that address and comes back with exactly the fields that call would carry for your plan. Exact duplicates collapse to one entry and one lookup. Both maps in the answer are keyed by the string you sent, so nothing has to be lined up by position; the `ip` inside each result is the normalized form. An address that could not be answered sits in `errors` with the status and message the single lookup would have given, and never disturbs the others: a string that is not an address is a `400` there, and an allowance that runs out part way through leaves the remaining entries as `429`s. The call itself fails only for the reasons below, and a `429` on the call always carries `Retry-After`: the batch is admitted or refused whole by the rate limit, so a per-entry `429` is always a spent allowance and never a throttle.
Download GET
Answers `302` with a time-limited URL pointing straight at object storage. Follow the redirect; the link authorizes the START of a transfer, so one already running is not interrupted when it lapses.