Base URL (local): http://localhost:3001
All REST responses default to JSON unless an export format (e.g. format=csv) is explicitly requested.
Errors follow a consistent structure:
{
"error": {
"code": "bad_request",
"message": "project id must be a positive integer"
}
}code is a stable, machine-readable identifier for programmatic handling; message provides human-readable detail.
| Status | error.code |
When |
|---|---|---|
400 |
bad_request |
Invalid parameters, body validation error, or malformed JSON |
401 |
unauthorized |
Missing or invalid authentication credentials / bearer token |
403 |
forbidden |
Client IP not whitelisted or role insufficient |
404 |
not_found |
Resource or unknown route does not exist |
429 |
too_many_requests |
Rate limit exceeded (check Retry-After header) |
500 |
server_misconfigured |
Admin endpoint called without ADMIN_API_KEY configured |
500 |
internal_error |
Unexpected server error |
The platform supports multiple authentication schemes depending on the endpoint category:
- Admin Bearer Token: Required for administrative operations under
/v1/admin/*. Pass via headerAuthorization: Bearer <ADMIN_API_KEY>. - Role-Based Access Control (RBAC): Required for
/v1/roles/*endpoints. Pass user identifier viaX-User-Id: <user_id>. Valid roles:admin,operator,viewer. - Consumer API Keys: External consumers authenticate with keys generated via
/v1/admin/api-keys. Pass viaAuthorization: Bearer <key>orX-API-Key: <key>. - IP Whitelisting: Certain sensitive management endpoints (
/v1/admin/*,/v1/roles,/v1/webhooks,/v1/panels,/v1/metadata,/v1/email,/v1/scoring/formulas,/v1/chains,/v1/satellite-sources) restrict access according to configured IP whitelist ranges when enabled.
Endpoints enforce rate limiting per client IP or authenticated API key. Standard rate limit headers are included in responses:
RateLimit-Limit: Maximum requests permitted per windowRateLimit-Remaining: Remaining requests in current windowRateLimit-Reset: Seconds until quota resetsRetry-After: Included on429 Too Many Requestsresponses
Configurable environment variables (see .env.example):
- Public tier:
RATE_LIMIT_WINDOW_MS,RATE_LIMIT_MAX - Admin tier:
RATE_LIMIT_ADMIN_WINDOW_MS,RATE_LIMIT_ADMIN_MAX
All current routes are mounted under the /v1 prefix.
Legacy unversioned /api/* routes are deprecated and maintained for backward compatibility until 2027-01-01. Responses on /api/* include Deprecation: true and sunset warning headers.
| Route Group | Base Path | Auth Requirement | Rate Limit Tier | Description |
|---|---|---|---|---|
| System & Health | /health, /ready, /metrics, /docs |
Public | None / Default | Liveness, readiness, Prometheus metrics, and OpenAPI/Swagger documentation |
| Telemetry (IoT) | /v1/iot |
Public / Consumer Key | Public | Simulated solar panel readings and satellite NDVI vegetation telemetry |
| Projects | /v1/projects |
Public / Consumer Key | Public | Paginated, filterable, and sortable project registry and detail |
| Score History | /v1/projects/:id/history |
Public / Consumer Key | Public | Historical score logs and score direction trend evaluation |
| Aggregation | /v1/projects/aggregate |
Public / Consumer Key | Public | Portfolio-level aggregate score calculations by category and region |
| Portfolio | /v1/portfolio |
Public / Consumer Key | Public | Investor deposit/withdrawal history, token shares, and valuation |
| Metadata | /v1/metadata |
IP Whitelist | Admin | Descriptive project metadata, geolocation, coordinates, and tags |
| Panels Hardware | /v1/panels |
IP Whitelist | Admin | Solar panel technical specifications and effective capacity calculation |
| Dashboard | /v1/dashboard |
Public / Consumer Key | Public | Portfolio summaries, top/bottom performers, score distributions, and CSV export |
| Comparison | /v1/comparison |
Public / Consumer Key | Public | Side-by-side multi-project metric comparisons and ranked lists |
| Benchmarking | /v1/benchmarking |
Public / Consumer Key | Public | Standard/custom industry benchmark definitions, percentiles, and alerts |
| Financial Modeling | /v1/financial |
Public / Consumer Key | Public | NPV, discounted payback, cost-benefit analysis, and parameter sensitivity |
| Forecasting | /v1/forecast |
Public / Consumer Key | Public | Time-series forecasting (ARIMA, smoothing, regression), weather adjustments, accuracy |
| Maintenance | /v1/maintenance |
Public / Consumer Key | Public | Predictive failure modeling, work order tasks, scheduling calendar, maintenance logs |
| Anomaly Detection | /v1/anomaly |
Public / Consumer Key | Public | Z-score anomaly detection on live IoT telemetry with configurable thresholds |
| Investor Reports | /v1/investor |
Public / Consumer Key | Public | High-level executive summaries, ESG compliance reports, and custom PDF/JSON reports |
| Webhooks | /v1/webhooks |
IP Whitelist | Admin | Webhook registration, HMAC secret configuration, and retry management |
| Email Digests | /v1/email |
IP Whitelist | Admin | Digest subscriptions, unsubscribe tokens, alert thresholds, and email templates |
| Multi-Chain | /v1/chains |
IP Whitelist | Admin | Multi-blockchain network management and cross-chain score broadcasting |
| Satellite Sources | /v1/satellite-sources |
IP Whitelist | Admin | Satellite imagery provider priorities, adapter health checks, and fallback routing |
| Scoring Formulas | /v1/scoring/formulas |
IP Whitelist | Admin | Custom impact scoring formulas, metric weighting, and A/B score preview |
| Oracle & Admin | /v1/admin |
Bearer Token / IP Whitelist | Admin | Soroban smart contract oracle score updates and immutable audit logging |
| Batch Operations | /v1/admin/batch |
IP Whitelist | Admin | Asynchronous multi-project score update batch jobs with concurrency controls |
| Consumer API Keys | /v1/admin/api-keys |
Bearer Token / IP Whitelist | Admin | Generation, usage monitoring, scheduled rotation, and revocation of client API keys |
| RBAC Roles | /v1/roles |
RBAC (X-User-Id) |
Admin | User role assignment (admin, operator, viewer) and authorization policies |
| System Operations | /v1/admin/*, /v1/traces |
IP Whitelist / Admin | Admin | DB migrations, secret rotation, dynamic log levels, compression stats, OpenTelemetry traces |
| GraphQL API | /graphql |
Bearer / API Key | Public / Admin | Flexible GraphQL query and mutation endpoint with GraphiQL playground |
| gRPC Service | localhost:50051 |
Metadata Auth | RPC | High-performance unary and streaming gRPC interface |
Liveness check and cron job execution status. Not rate limited.
Response 200
{
"status": "ok",
"uptime_seconds": 3712,
"started_at": "2026-06-26T18:00:00.000Z",
"last_cron_run": {
"name": "score-update",
"status": "success",
"at": "2026-06-26T19:00:00.123Z"
}
}Readiness probe for load balancers and container orchestrators.
Response 200 / 503
{
"status": "ready",
"checks": {
"database": "connected",
"stellar_rpc": "available"
}
}Standard Prometheus format metrics endpoint for scraping.
Interactive Swagger UI explorer (/docs) and raw OpenAPI 3.0.3 specification (/docs.json).
Aggregated operational metrics dashboard (request counts, latency percentiles, error rates).
Response 200
{
"requests_total": 14205,
"error_rate_pct": 0.04,
"avg_latency_ms": 18.2,
"uptime_seconds": 3712
}Exports distributed trace spans collected via OpenTelemetry.
| Param | In | Type | Description |
|---|---|---|---|
correlation_id |
query | string | Optional correlation ID filter |
limit |
query | int | Max spans to return (default: 100, max: 500) |
since |
query | int | Unix ms timestamp filter |
Response 200
{
"summary": {
"total_spans": 240,
"active_traces": 4
},
"spans": [
{
"trace_id": "9a12b48fe3...",
"span_id": "7c88d12...",
"name": "calculateNPV",
"duration_ms": 1.4,
"timestamp": 1718150400000
}
]
}Simulated solar panel telemetry for project id. Deterministic per (project_id, clock_hour).
| Param | In | Type | Rules |
|---|---|---|---|
id |
path | int | Positive integer (>= 1, <= MAX_PROJECT_ID) |
Response 200
{
"power_output_kw": 742.15,
"efficiency_pct": 74.21,
"max_power_kw": 1000,
"timestamp": 1718150400000
}Simulated satellite / vegetation index reading for project id.
Response 200
{
"forest_density_pct": 68.44,
"ndvi_score": 0.684,
"timestamp": 1718150400000
}Paginated, filterable list of projects with latest scores and telemetry.
| Param | In | Type | Rules | Default |
|---|---|---|---|---|
limit |
query | int | Integer 1..100 |
10 |
cursor |
query | int | Non-negative integer offset | 0 |
min_score |
query | number | Minimum credit quality score filter | — |
max_score |
query | number | Maximum credit quality score filter | — |
min_date |
query | number | Minimum timestamp (ms) | — |
max_date |
query | number | Maximum timestamp (ms) | — |
sort_by |
query | string | One of: id, credit_quality, green_impact, power_output_kw, efficiency_pct, forest_density_pct, ndvi_score, timestamp |
id |
sort_order |
query | string | asc or desc |
asc |
Response 200
{
"projects": [
{
"id": 1,
"credit_quality": 74,
"green_impact": 69,
"power_output_kw": 742.15,
"efficiency_pct": 74.21,
"forest_density_pct": 68.44,
"ndvi_score": 0.684,
"timestamp": 1718150400000
}
],
"total": 50,
"filtered_total": 50,
"cursor": 10
}Detailed metrics and funding data for a specific project.
Response 200
{
"id": 1,
"credit_quality": 74,
"green_impact": 69,
"power_output_kw": 742.15,
"efficiency_pct": 74.21,
"forest_density_pct": 68.44,
"ndvi_score": 0.684,
"timestamp": 1718150400000,
"funding": 482910.55
}Historical score logs for project id. Supports CSV export.
| Param | In | Type | Description |
|---|---|---|---|
from |
query | int | Starting Unix ms timestamp |
to |
query | int | Ending Unix ms timestamp |
format |
query | string | json (default) or csv |
Response 200 (JSON)
{
"project_id": 1,
"count": 2,
"entries": [
{
"project_id": 1,
"credit_quality": 74,
"green_impact": 69,
"recorded_at": 1718150400000
}
]
}Evaluates score direction (improving, declining, stable) over time.
Response 200
{
"project_id": 1,
"trend": "improving",
"net_delta": 4.5,
"data_points": 12
}Portfolio-level aggregated impact and credit quality metrics across projects.
| Param | In | Type | Rules |
|---|---|---|---|
limit |
query | int | Number of projects to aggregate (1..100, default: 20) |
cursor |
query | int | Offset (default: 0) |
category |
query | string | Optional filter: solar, forest, wind |
region |
query | string | Optional filter: north, south, east, west |
Response 200
{
"project_count": 20,
"avg_credit_quality": 78.4,
"avg_green_impact": 72.1,
"total_power_output_kw": 14200.5,
"cursor": 20,
"limit": 20
}Indexed deposit/withdrawal transaction history, share count, and position value for a Stellar account address.
Response 200
{
"address": "GBBD...24KL",
"current_shares": 42,
"current_value": 71.25,
"events": [
{
"id": "1234-abcdef",
"type": "deposit",
"amount": 500,
"shares": 42,
"timestamp": 1718150400000,
"txHash": "abcdef..."
}
]
}Retrieves project descriptive metadata (name, description, location, geographic coordinates, tags, and attached panel specs).
Response 200
{
"project_id": 1,
"name": "Sahara Sol I",
"description": "High-efficiency utility-scale solar farm",
"location": "North Africa",
"coordinates": { "latitude": 27.12, "longitude": 13.18 },
"tags": ["utility", "clean-energy"],
"panel_config": {
"project_id": 1,
"model": "SunPower Maxeon 6",
"manufacturer": "SunPower",
"panel_count": 2500,
"wattage_per_panel": 400,
"effective_capacity_kw": 1000
}
}Creates, replaces, or updates project metadata.
Request Body
{
"name": "Sahara Sol I",
"description": "Expanded 1.2MW capacity solar array",
"location": "North Africa",
"coordinates": { "latitude": 27.12, "longitude": 13.18 },
"tags": ["solar", "expansion"]
}Retrieves solar panel hardware specs and calculates effective capacity (panel_count * wattage_per_panel / 1000).
Configures solar panel specifications for project id.
Request Body
{
"model": "SunPower Maxeon 6",
"manufacturer": "SunPower",
"panel_count": 2500,
"wattage_per_panel": 400,
"tilt_angle": 25,
"azimuth": 180,
"panel_type": "monocrystalline",
"installation_date": "2024-01-15"
}High-level overview of total projects, average credit scores, average green impact, and total power generation.
Response 200
{
"total_projects": 50,
"avg_credit_quality": 76.5,
"avg_green_impact": 71.2,
"total_power_output_kw": 36500.8
}Ranks top and bottom performing projects across the portfolio.
| Param | In | Type | Rules | Default |
|---|---|---|---|---|
limit |
query | int | Integer 1..50 |
5 |
Response 200
{
"top": [{ "id": 12, "credit_quality": 98, "green_impact": 95 }],
"bottom": [{ "id": 4, "credit_quality": 38, "green_impact": 42 }]
}Generates score distribution histogram data for charts.
| Param | In | Type | Rules | Default |
|---|---|---|---|---|
field |
query | string | credit_quality or green_impact |
credit_quality |
bucket |
query | int | Number of histogram buckets (1..50) |
10 |
Retrieves historical score data points for a specific project. Supports ?from= and ?to= query filters.
Exports the entire portfolio score database in CSV format (Content-Type: text/csv).
Compares up to 20 projects side by side across environmental and financial metrics.
| Param | In | Type | Rules |
|---|---|---|---|
ids |
query | string | Comma-separated list of positive integer project IDs (max 20) |
Response 200
{
"projects": [
{
"id": 1,
"credit_quality": 74,
"green_impact": 69,
"power_output_kw": 742.15,
"efficiency_pct": 74.21,
"forest_density_pct": 68.44,
"ndvi_score": 0.684
},
{
"id": 2,
"credit_quality": 88,
"green_impact": 82,
"power_output_kw": 890.0,
"efficiency_pct": 89.0,
"forest_density_pct": 74.1,
"ndvi_score": 0.741
}
]
}Lists all supported comparison metric keys (credit_quality, green_impact, power_output_kw, efficiency_pct, forest_density_pct, ndvi_score, combined_score).
Ranks a set of projects according to chosen criteria.
| Param | In | Type | Rules | Default |
|---|---|---|---|---|
ids |
query | string | Comma-separated project IDs | Required |
criteria |
query | string | Any valid comparison metric | combined_score |
Exports project comparison or ranked analysis to CSV format.
Lists standard and custom benchmark definitions with evaluation thresholds (poor, fair, good, excellent).
Response 200
{
"benchmarks": [
{
"id": "credit_quality",
"name": "Industry Credit Quality",
"description": "Standardized financial creditworthiness",
"metric": "credit_quality",
"thresholds": { "poor": 40, "fair": 60, "good": 80, "excellent": 90 },
"source": "Standard & Poor's ESG"
}
]
}Registers a new custom benchmark definition.
Request Body
{
"id": "custom_efficiency",
"name": "High-Efficiency Solar Benchmark",
"description": "Benchmark for bifacial tier-1 solar assets",
"metric": "efficiency_pct",
"thresholds": { "poor": 50, "fair": 70, "good": 85, "excellent": 95 },
"source": "NREL 2026 Guidelines"
}Evaluates project id against all registered industry benchmarks.
Calculates project percentile ranking against all projects in the registry.
| Param | In | Type | Rules | Default |
|---|---|---|---|---|
metric |
query | string | Metric key to rank | combined_score |
Returns active alerts for project metrics falling below benchmark thresholds.
Evaluates project performance trajectory relative to a benchmark over time.
Detailed cost-benefit analysis breakdown over the project lifetime.
| Param | In | Type | Description |
|---|---|---|---|
installation_cost |
query | number | Optional override for total capital expenditure |
annual_maintenance_cost |
query | number | Optional override for annual O&M |
electricity_price_per_kwh |
query | number | Price per kWh generated |
discount_rate |
query | number | Annual discount rate (e.g. 0.06 for 6%) |
project_lifetime_years |
query | number | Project lifespan (default: 25) |
Response 200
{
"project_id": 1,
"installation_cost": 250000,
"total_revenue": 680000,
"total_maintenance_cost": 75000,
"net_benefit": 355000,
"roi_pct": 142.0,
"annual_cash_flows": [
{ "year": 1, "revenue": 27200, "maintenance_cost": 3000, "net_cash_flow": 24200 }
]
}Computes simple and discounted payback periods in years.
Response 200
{
"project_id": 1,
"payback_years": 7.4,
"discounted_payback_years": 9.2,
"reaches_payback": true
}Calculates Net Present Value (NPV) based on discounted future cash flows.
Response 200
{
"project_id": 1,
"npv": 118450.25,
"discount_rate": 0.06,
"discounted_cash_flows": [{ "year": 1, "discounted_cash_flow": 22830.19 }]
}Performs sensitivity analysis evaluating how NPV and ROI respond to changes in discount rates, electricity prices, and degradation rates.
Compares ROI, NPV, and payback across multiple projects (?ids=1,2,3).
Generates time-series forecasts for future power generation or efficiency.
| Param | In | Type | Rules | Default |
|---|---|---|---|---|
horizon |
query | int | Hours ahead to forecast (1..8760) |
24 |
field |
query | string | power_output_kw or efficiency_pct |
power_output_kw |
method |
query | string | exponential_smoothing, linear_regression, moving_average, arima_simplified |
exponential_smoothing |
history_hours |
query | int | Historical sample window (4..8760) |
168 |
format |
query | string | json or csv |
json |
Response 200
{
"project_id": 1,
"field": "power_output_kw",
"method": "exponential_smoothing",
"predictions": [
{
"hour_offset": 1,
"predicted_value": 745.2,
"confidence_lower": 710.0,
"confidence_upper": 780.4
}
]
}Forecasts power generation factoring in diurnal solar irradiance and simulated cloud cover patterns.
Decomposes performance into seasonal, diurnal, and periodic cycles.
Backtests forecasting models against historical project telemetry and reports accuracy metrics (mae, rmse, mape).
Returns list of available forecasting model identifiers.
Analyzes efficiency degradation trend and rate of loss over time.
Predictive modeling identifying hardware failure risks, estimated hours/days to critical threshold, severity, and confidence score. Supports CSV export.
Response 200
{
"project_id": 1,
"current_efficiency": 74.21,
"critical_threshold": 50.0,
"estimated_hours_to_threshold": 1420,
"estimated_days_to_threshold": 59.1,
"severity": "medium",
"confidence": 0.88,
"panel_type": "monocrystalline"
}Actionable maintenance recommendations (e.g. panel cleaning, inverter diagnostics, string inspection) based on telemetry patterns.
Optimal scheduled maintenance calendar with recommended target dates and estimated costs.
Consolidated health check including efficiency trends, failure predictions, recommendations, and maintenance schedules.
Creates a maintenance task / work order.
Request Body
{
"project_id": 1,
"title": "Quarterly Inverter Inspection",
"description": "Thermal scan of inverter modules and terminal connections",
"action_type": "inspection",
"priority": "high",
"scheduled_date": "2026-09-15",
"assigned_to": "technician_1",
"estimated_cost": 450
}Lists work orders with query filters: project_id, status (pending, in_progress, completed, cancelled), priority, from_date, to_date, format (json or csv).
Auto-generates recommended work orders for project id from predictive schedule analysis.
Retrieves or partially modifies a specific maintenance task.
Marks a task completed and records actual costs and before/after efficiency delta.
Request Body
{
"actual_cost": 420.0,
"notes": "Replaced faulty connector on string 4",
"efficiency_before": 72.1,
"efficiency_after": 78.4
}Deletes a maintenance task.
Calendar views (daily, weekly, monthly) or custom date ranges (?from=YYYY-MM-DD&to=YYYY-MM-DD) of scheduled maintenance.
Retrieves or manually logs a past maintenance intervention.
Maintenance KPIs: completed task count, total maintenance spend, average resolution time, and efficiency gains.
Runs statistical z-score and moving average anomaly detection on project telemetry.
| Param | In | Type | Rules |
|---|---|---|---|
sensitivity |
query | number | Optional z-score threshold override |
window |
query | number | Moving baseline window size |
Response 200
{
"project_id": 1,
"is_anomaly": true,
"anomaly_score": 3.42,
"flagged_metrics": ["efficiency_pct"],
"details": {
"efficiency_pct": { "value": 41.2, "expected": 74.0, "z_score": -3.42 }
}
}Retrieves or updates anomaly detection configuration (sensitivityZScore, trendWindowSize, trendDeviationPct, minBaseline).
Clears baseline history cache for a specific project or all projects.
Portfolio-wide aggregated dashboard summary and recent audit activities for investor portals.
Response 200
{
"portfolio_summary": {
"total_projects": 2,
"total_power_output_kw": 1150,
"avg_credit_quality": 85,
"avg_green_impact": 75,
"total_portfolio_value": 950000,
"total_carbon_offsets_tonnes": 4312.5
},
"recent_activities": [
{
"id": 1,
"project_id": 1,
"credit_quality": 85,
"green_impact": 75,
"tx_hash": "tx123",
"triggered_by": "api",
"timestamp": 1718150400000
}
]
}Provides actual vs expected performance ratios and operational status (Optimal, Underperforming, Critical) for all portfolio assets.
Aggregates financial KPIs (total installation cost, total NPV, average payback period, average ROI).
ESG compliance scoring, verified carbon credits issued, and immutable audit logs.
Generates customized reports tailored by project ID list and report sections.
Request Body
{
"project_ids": [1, 2],
"sections": ["performance", "scores", "financials", "compliance"]
}Registers an external HTTP endpoint to receive real-time event notifications (e.g. score updates, threshold alerts).
Request Body
{
"url": "https://api.external.com/webhooks/heliobond",
"secret": "super_secret_signing_key_at_least_16_chars",
"max_retries": 3,
"retry_delay_ms": 2000
}Response 201
{
"id": "wh_9f2a48b1",
"url": "https://api.external.com/webhooks/heliobond",
"max_retries": 3,
"retry_delay_ms": 2000,
"created_at": 1718150400000
}Lists registered webhooks or retrieves details for a single webhook (secrets are omitted).
Unregisters and deletes a webhook subscription.
Subscribes an email address to recurring summary digests.
Request Body
{
"email": "investor@example.com",
"frequency": "weekly"
}One-click unsubscribe endpoint (?token=<unsubscribe_token>).
Lists current subscribers with optional ?frequency=daily|weekly filter.
Retrieves or updates alerting thresholds for automatic email notifications.
Manages markdown/HTML templates for digest emails (name, subject, body).
Triggers an on-demand digest dispatch to subscribers.
Lists configured blockchains (Stellar, Polygon, Ethereum, etc.) and active RPC status.
Updates configuration for a specific chain network (enabled, rpcUrl, contractAddress, name).
Broadcasts computed project impact scores across one or all enabled blockchain networks.
Request Body
{
"chains": ["stellar", "polygon"]
}Lists configured satellite data providers (e.g. Sentinel-2, Landsat-9, MODIS, Planet) with priority and health status.
Health check status and consecutive failure counts per data source provider.
Enables/disables a source or alters its priority in the failover cascade ({ "enabled": true, "priority": 1 }).
Registers a custom external satellite data adapter endpoint (name, priority, fetchUrl).
Fetches satellite NDVI data from the highest-priority available source with automatic fallback failover.
Lists all scoring formula definitions and identifies the currently active formula ID.
Creates a custom formula assigning weights to telemetry metrics.
Request Body
{
"id": "solar_heavy_v2",
"name": "Solar Focused Impact Formula",
"description": "Increases weighting of solar efficiency over vegetation",
"weights": {
"efficiency_pct": 0.6,
"power_output_kw": 0.2,
"ndvi_score": 0.2
}
}Retrieves or deletes a custom scoring formula definition.
Activates a custom formula platform-wide for subsequent score computations.
Validates weight distribution and sum normalization without saving.
Simulates and previews score changes for a project using the custom formula vs the default formula (A/B testing).
Computes and submits update_impact_score transactions to the Soroban smart contract oracle.
Headers
| Header | Required | Value |
|---|---|---|
Authorization |
Yes (when ADMIN_API_KEY set) |
Bearer <ADMIN_API_KEY> |
Request Body (optional)
{
"project_ids": [1, 2, 3]
}Response 200
{
"updated": 2,
"results": [
{ "project_id": 1, "tx_hash": "abc123...", "credit_quality": 74, "green_impact": 69 }
],
"errors": [],
"skipped": []
}Immutable audit log of all on-chain score updates with query filters (?project_id=, ?from=, ?to=, ?format=json|csv).
Starts an asynchronous background batch score update job with concurrency controls.
Request Body
{
"project_ids": [1, 2, 3, 4, 5],
"concurrency": 3
}Response 202 Accepted
{
"batch_id": "job_9a8f21c4",
"status": "running",
"total": 5,
"concurrency": 3
}Polls progress, completion status, results, and errors for a batch job.
Generates a new consumer API key with rate limits and rotation intervals.
Request Body
{
"consumer_name": "Acme Partner Service",
"rate_limit": 100,
"rotation_interval_days": 90
}GET /v1/admin/api-keys, POST /v1/admin/api-keys/:id/rotate, DELETE /v1/admin/api-keys/:id, GET /v1/admin/api-keys/:id/usage
Full lifecycle management for consumer API credentials.
Role-Based Access Control (RBAC) user assignment (admin, operator, viewer).
Checks encryption secret rotation status and schedule.
Database migration status and execution controls.
Inspects or dynamically updates the runtime logger level (debug, info, warn, error).
Reports response compression efficiency and byte savings.
GET /v1/admin/flags, GET /v1/admin/flags/:name, POST /v1/admin/flags/load, POST /v1/admin/flags/merge, GET /v1/admin/flags/analytics
Feature flag management and evaluation context analytics.
- HTTP Endpoint:
/graphql(POST requests) - GraphiQL Playground:
/graphql-playground(GET request in browser)
query GetProjectsWithSolar {
projects(limit: 5) {
id
credit_quality
green_impact
solar {
power_output_kw
efficiency_pct
max_power_kw
}
financials {
npv
roi_pct
payback_period_years
}
}
}mutation UpdateProjectScore {
updateProjectScores(id: "1", creditQuality: 90, greenImpact: 85) {
id
credit_quality
green_impact
}
}High-performance gRPC service listening on port 50051. Authenticates callers via gRPC metadata headers (authorization or x-api-key).
syntax = "proto3";
package heliobond;
service HeliobondService {
rpc GetProjectScore(ProjectRequest) returns (ProjectResponse);
rpc StreamProjectScores(StreamRequest) returns (stream ProjectResponse);
rpc ChatProjectScores(stream ProjectRequest) returns (stream ProjectResponse);
}
message ProjectRequest {
int32 project_id = 1;
}
message StreamRequest {
repeated int32 project_ids = 1;
}
message ProjectResponse {
int32 project_id = 1;
double credit_quality = 2;
double green_impact = 3;
double power_output_kw = 4;
double efficiency_pct = 5;
int64 timestamp = 6;
}