API Architecture
The Halo system consists of three main API layers:Public APIs (v2alpha)
Reporting API - High-level reporting interface for measurement consumers- Create and manage reports with metrics and aggregations
- Define reporting sets and metric calculation specifications
- Schedule automated report generation
- Query event groups and apply filters
- Manage principals (users and TLS clients)
- Define policies and permissions
- Check authorization for operations
System APIs (v1alpha)
Internal system APIs for communication between Kingdom and Duchies:- Computation Control - Coordinate MPC computations across duchies
- Requisition Fulfillment - Track requisition state and data transfer
- Computations Service - Stream and manage computation lifecycle
- Computation Participants - Manage duchy participation in computations
Internal APIs
Implementation-specific internal APIs for backend services (not documented here).API Versioning
All APIs use explicit versioning in the package namespace:wfa.measurement.reporting.v2alpha- Reporting APIswfa.measurement.access.v1alpha- Access control APIswfa.measurement.system.v1alpha- System APIs
alpha designation indicates APIs that may evolve based on feedback.
Authentication and Authorization
Authentication Methods
The Halo system supports two primary authentication methods: OAuth 2.0 - For user-based access- OpenID Connect integration
- JWT token validation
- Issuer and subject identification
- X.509 certificate-based authentication
- Authority Key Identifier (AKID) validation
- Certificate pinning support
Authorization Model
Access control uses a Role-Based Access Control (RBAC) model:- Principals - Authenticated entities (users or TLS clients)
- Roles - Named sets of permissions
- Policies - Bindings of roles to principals for specific resources
- Permissions - Granular access rights on resource types
Protocol Support
gRPC
All APIs are defined using Protocol Buffers (proto3) and exposed via gRPC:- Strongly-typed schemas
- Efficient binary serialization
- Streaming RPC support
- Built-in deadline and cancellation
REST/HTTP
Public APIs also support REST via gRPC-Gateway:- RESTful resource paths
- Standard HTTP methods (GET, POST, DELETE)
- JSON request/response encoding
Resource Naming
All resources follow the AIP-122 resource naming convention: Format:{collection}/{id}
Examples:
measurementConsumers/123/reports/456measurementConsumers/123/metrics/789computations/abc123/requisitions/def456
- Use full resource paths in API requests
- Resource references use
resource_referenceannotations - Parent-child relationships encoded in path hierarchy
Common Patterns
Pagination
List methods support pagination using page tokens:Maximum number of resources to return (default: 50, max: 1000)
Token from previous response to retrieve next page
Filtering
Many list operations support filtering: CEL-based filters (Common Expression Language)Long-Running Operations
Computations and reports are asynchronous:- Create resource - returns immediately in
RUNNINGstate - Poll resource - check
statefield periodically - Terminal states -
SUCCEEDED,FAILED, orCANCELLED
Idempotency
Create operations support idempotency tokens:Unique identifier (UUID recommended) for idempotent request processing
Error Handling
APIs use standard gRPC status codes:| Code | Description | Example |
|---|---|---|
OK | Success | Operation completed |
INVALID_ARGUMENT | Invalid parameter | Malformed resource name |
NOT_FOUND | Resource not found | Report ID does not exist |
PERMISSION_DENIED | Authorization failed | Insufficient permissions |
ABORTED | Concurrent modification | ETag mismatch |
RESOURCE_EXHAUSTED | Rate limit exceeded | Too many requests |
FAILED_PRECONDITION | Invalid state | Cannot modify terminal resource |
Next Steps
Reporting APIs
Generate cross-media measurement reports
Access Control
Manage permissions and policies
System APIs
Internal system coordination
Data Provider APIs
Fulfill requisitions and provide data