SDKs
SDKs
Open Spanner SDK packages and supported operations.
Open Spanner SDKs are for backend services that need to create meters, report usage, query buckets, or export usage data. Create an API key in the dashboard, pass it into the SDK client, and keep the key server-side.
| Language | Package | Install |
|---|---|---|
| Go | github.com/ssubedir/open-spanner/sdk/go | go get github.com/ssubedir/open-spanner/sdk/go@latest |
| TypeScript | @ssubedir/open-spanner | npm install @ssubedir/open-spanner |
| Python | open-spanner | pip install open-spanner |
| C# | OpenSpanner | dotnet add package OpenSpanner |
| Java | Coming soon | Coming soon |
Quick Example
These snippets assume OPEN_SPANNER_API_KEY contains an API key created from the dashboard.
transport := httptransport.New("localhost:18081", client.DefaultBasePath, []string{"http"})
transport.DefaultAuthentication = httptransport.BearerToken(os.Getenv("OPEN_SPANNER_API_KEY"))
api := client.New(transport, strfmt.Default)
_, err := api.Usages.CreateUsage(
usages.NewCreateUsageParams().WithRequest(&models.UsageCreateRequest{
IdempotencyKey: "usage_001",
Subject: "org_123",
Meter: "api_requests",
Quantity: 1,
Metadata: map[string]any{
"endpoint": "/v1/orders",
"region": "us-east",
},
}),
)client.setConfig({
baseUrl: process.env.OPEN_SPANNER_BASE_URL ?? "http://localhost:18081",
headers: {
Authorization: `Bearer ${process.env.OPEN_SPANNER_API_KEY}`,
},
});
await createUsage({
body: {
idempotency_key: "usage_001",
subject: "org_123",
meter: "api_requests",
quantity: 1,
metadata: {
endpoint: "/v1/orders",
region: "us-east",
},
},
throwOnError: true,
});client = AuthenticatedClient(
base_url=os.environ.get("OPEN_SPANNER_BASE_URL", "http://localhost:18081"),
token=os.environ["OPEN_SPANNER_API_KEY"],
raise_on_unexpected_status=True,
)
metadata = UsageCreateRequestMetadata()
metadata["endpoint"] = "/v1/orders"
metadata["region"] = "us-east"
create_usage.sync(
client=client,
body=UsageCreateRequest(
idempotency_key="usage_001",
subject="org_123",
meter="api_requests",
quantity=1,
metadata=metadata,
),
)var metadata = new UsageCreateRequest_metadata();
metadata.AdditionalData["endpoint"] = "/v1/orders";
metadata.AdditionalData["region"] = "us-east";
await client.V1.Usages.PostAsync(new UsageCreateRequest
{
IdempotencyKey = "usage_001",
Subject = "org_123",
Meter = "api_requests",
Quantity = 1,
Metadata = metadata,
});The full runnable projects are still available in the repository under examples/rest/basic and examples/stream/basic.
Included Operations
- Health and readiness checks
- Meter create, list, read, update, and delete
- Single usage ingestion
- Bulk usage ingestion
- Usage search
- Direct usage CSV export
SDKs do not manage dashboard users, sessions, API keys, system stats, retention pruning, subjects, ingestion history, queued export jobs, or raw event admin endpoints.