Prepared for Verra. Api Integration Spec. Draft in review.
This document outlines the technical specifications for the integration of DaedArch Corporation’s sensor-based Monitoring, Reporting, and Verification (MRV) platform with the Verra systems. The purpose of this integration is to facilitate the exchange of verified environmental data and carbon offset metrics in compliance with the Verified Carbon Standard (VCS). The integration shall ensure adherence to rigorous Measurement, Reporting, and Verification (MRV) protocols and support both technology-based and nature-based solutions.
The Verra API employs OAuth 2.0 for secure authentication. DaedArch Corporation shall implement the following steps to obtain an access token:
POST https://api.verra.org/oauth/tokenContent-Type: application/x-www-form-urlencoded`plaintext grant_type=client_credentials&client_id={client_id}&client_secret={client_secret} `
Access tokens are valid for 1 hour. DaedArch shall implement logic to refresh tokens using the same endpoint and parameters as above, prior to the expiration of the current token.
https://api.verra.org/v1/offsetsAuthorization: Bearer {access_token}Content-Type: application/jsonThe request body must adhere to the following JSON schema:
`json { "projectId": "string", "offsets": [ { "offsetId": "string", "amount": "number", "timestamp": "string (ISO 8601 format)", "source": { "type": "string (either 'technology' or 'nature')", "details": { "sensorId": "string", "location": { "latitude": "number", "longitude": "number" } } }, "verificationStatus": "string (either 'pending', 'verified', or 'rejected')" } ] } `
Upon successful submission, the API shall return a 201 Created status with the following JSON response:
`json { "message": "Offsets submitted successfully.", "submittedAt": "string (ISO 8601 format)", "offsetIds": ["string"] } `
https://api.verra.org/v1/offsets/{projectId}Authorization: Bearer {access_token}The response shall return the following structure:
`json { "projectId": "string", "offsets": [ { "offsetId": "string", "amount": "number", "timestamp": "string (ISO 8601 format)", "source": { "type": "string", "details": { "sensorId": "string", "location": { "latitude": "number", "longitude": "number" } } }, "verificationStatus": "string" } ] } `
https://api.verra.org/v1/offsets/{offsetId}Authorization: Bearer {access_token}Content-Type: application/json`json { "verificationStatus": "string (either 'verified' or 'rejected')", "comments": "string (optional)" } `
A successful update shall return a 200 OK status with the following JSON response:
`json { "message": "Verification status updated successfully.", "offsetId": "string", "newStatus": "string" } `
The project data model must include the following fields:
| Field Name | Data Type | Description | |------------------|-----------|--------------------------------------------------| | projectId | string | Unique identifier for the project | | name | string | Name of the project | | description | string | Description of the project | | createdAt | string | ISO 8601 format timestamp of project creation | | updatedAt | string | ISO 8601 format timestamp of last update |
The offset data model must include the following fields:
| Field Name | Data Type | Description | |------------------|-----------|--------------------------------------------------| | offsetId | string | Unique identifier for the offset | | amount | number | Amount of carbon offsets in metric tons | | timestamp | string | ISO 8601 format timestamp of the measurement | | source | object | Details of the source of the offset | | verificationStatus| string | Current status of verification |
The source data model must include the following fields:
| Field Name | Data Type | Description | |------------------|-----------|--------------------------------------------------| | type | string | Type of the source ('technology' or 'nature') | | details | object | Details specific to the source |
The location data model must include the following fields:
| Field Name | Data Type | Description | |------------------|-----------|--------------------------------------------------| | latitude | number | Latitude of the sensor location | | longitude | number | Longitude of the sensor location |
In the event of an error, the API shall return a JSON object with the following structure:
`json { "error": { "code": "string", "message": "string", "details": "string (optional)" } } `
| Error Code | HTTP Status | Description | |------------------|-------------|--------------------------------------------------| | INVALID_REQUEST | 400 | The request is malformed or contains invalid data| | UNAUTHORIZED | 401 | Authentication failed or invalid token | | FORBIDDEN | 403 | Access to the resource is forbidden | | NOT_FOUND | 404 | Resource was not found | | INTERNAL_ERROR | 500 | An internal server error occurred |
Verra enforces a rate limit of 100 requests per minute per client. DaedArch shall implement logic to handle rate limiting, including:
X-RateLimit-Limit: The maximum number of requests allowed in the current window.X-RateLimit-Remaining: The number of requests remaining in the current window.X-RateLimit-Reset: The time when the rate limit will reset (in epoch seconds).DaedArch shall implement exponential backoff strategies for retrying requests that fail due to rate limiting. The maximum backoff time should not exceed 60 seconds.
DaedArch shall implement data integrity checks to ensure that all submitted data is accurate and verifiable. This includes:
All data submitted to Verra must undergo third-party verification as per VCS requirements. DaedArch shall ensure that:
DaedArch shall participate in regular audits conducted by Verra to assess compliance with VCS standards, including:
This document serves as the comprehensive API integration specification for DaedArch Corporation's collaboration with Verra. Adherence to the outlined protocols, data models, and compliance procedures is mandatory to ensure the integrity and reliability of carbon offset data exchanged between the two entities. DaedArch shall maintain ongoing communication with Verra to address any updates to standards or protocols as they arise.