API

Analytics

Read project traffic, deployment statistics, and resource usage.

Analytics report traffic, deployment outcomes, and runtime usage for resources the caller can access. Project methods take a project ID in the SDK; REST uses ?projectId=. Server methods take a server ID.

Read request traffic

overview returns the cumulative summary and time-series periods together. Use summary or periods when you only need one. geo adds geographic, path, and status-code breakdowns where available.

const traffic = await ship.analytics.overview("proj_123", {
  from: "2026-09-01T00:00:00Z",
  to: "2026-09-02T00:00:00Z",
});
console.log(traffic.summary, traffic.periods);
curl "$OPENSHIP_URL/api/analytics/overview?projectId=proj_123&from=2026-09-01T00:00:00Z&to=2026-09-02T00:00:00Z" \
  -H "Authorization: Bearer $OPENSHIP_TOKEN"
InputApplies toUse
domainSummary, periods, overview, and geoLimit results to one tracked hostname.
from, toPeriods, overview, and geoOrdered ISO date range, at most 366 days.

The project ID is required. An inaccessible or missing project is not included in results. Fixed organization scopes do not forward through an owner's Cloud link; see Cloud compatibility.

Read deployment statistics

const stats = await ship.analytics.deploymentStats("proj_123");
console.log(stats.successfulDeployments, stats.failedDeployments);
curl "$OPENSHIP_URL/api/analytics/deployments?projectId=proj_123" \
  -H "Authorization: Bearer $OPENSHIP_TOKEN"

Statistics include totals, success and failure counts, average build duration, and daily counts. dashboard() returns project and deployment counts for the caller's organization.

Read runtime usage

resources returns an aggregate plus per-service usage, capacity, timestamp, and a supported flag. usage and containerInfo read the active runtime and can return null when it is unavailable.

const usage = await ship.analytics.resources("proj_123");
console.log(usage.supported, usage.overall, usage.services);
curl "$OPENSHIP_URL/api/analytics/resources?projectId=proj_123" \
  -H "Authorization: Bearer $OPENSHIP_TOKEN"

Use usageHistory(projectId, { from, to, serviceKey }) for time buckets. All three filters are optional; the result reports its granularityMinutes and selected serviceKey.

Live usage

for await (const event of ship.analytics.streamUsage("proj_123", {
  signal: AbortSignal.timeout(30_000),
})) {
  console.log(event);
}
curl -N "$OPENSHIP_URL/api/analytics/usage/stream?projectId=proj_123" \
  -H "Authorization: Bearer $OPENSHIP_TOKEN"

The REST endpoint returns Server-Sent Events. An active deployment with a running container is required. Pass an abort signal or stop iteration to close an SDK stream.

Control path collection

await ship.analytics.setPathsCollection("proj_123", { enabled: true });
curl -X POST "$OPENSHIP_URL/api/analytics/paths-collection/proj_123" \
  -H "Authorization: Bearer $OPENSHIP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"enabled":true}'

This changes collection settings and requires write access. Other analytics methods read data.

Server analytics

Server analytics require server:read access and a tracked domain. Persisted buckets and daily geo data remain readable when a server is offline; live analytics require a reachable management API.

const buckets = await ship.analytics.serverBuckets("srv_123", { domain: "app.example.com" });
console.log(buckets);
curl "$OPENSHIP_URL/api/analytics/server/srv_123?domain=app.example.com" \
  -H "Authorization: Bearer $OPENSHIP_TOKEN"
MethodAdditional inputResult
serverBucketsOptional from, toPersisted minute buckets; range values accept ISO timestamps or epoch minutes.
serverGeoOptional day in YYYYMMDD formatDaily country totals.
serverLiveNoneLive edge analytics.

Every method above also requires domain. Missing domain returns 400; an unreachable live source can return 502.

Operations

OperationSDKREST API
Stream current resource usage.analytics.streamUsage(projectId, options?)GET /api/analytics/usage/stream
analytics:read
Read summary statistics for the selected scope and period.analytics.summary(id, input?)GET /api/analytics
analytics:read
List supported analytics periods.analytics.periods(id, input?)GET /api/analytics/periods
analytics:read
Read aggregate traffic and application analytics.analytics.overview(id, input?)GET /api/analytics/overview
analytics:read
Read geographic traffic statistics.analytics.geo(id, input?)GET /api/analytics/geo
analytics:read
Read deployment outcome statistics.analytics.deploymentStats(id)GET /api/analytics/deployments
analytics:read
Read current workload resource usage.analytics.usage(id)GET /api/analytics/usage
analytics:read
Read analytics runtime/container information.analytics.containerInfo(id)GET /api/analytics/container
analytics:read
Read configured resource allocations.analytics.resources(id)GET /api/analytics/resources
analytics:read
Read historical resource usage.analytics.usageHistory(id, input?)GET /api/analytics/usage/history
analytics:read
Enable or disable request-path collection.analytics.setPathsCollection(id, input)POST /api/analytics/paths-collection/:projectId
project:write
Read server traffic buckets.analytics.serverBuckets(id, input)GET /api/analytics/server/:serverId
server:read
Read geographic server-request statistics.analytics.serverGeo(id, input)GET /api/analytics/server/:serverId/geo
server:read
Read current server traffic data.analytics.serverLive(id, input)GET /api/analytics/server/:serverId/live
server:read
Read the analytics dashboard aggregate.analytics.dashboard()GET /api/analytics/dashboard
analytics:read

On this page