ArtrellionAdvocacy Infrastructure for the Data-Driven Era

DNV API Integration Specification — Data Exchange Protocol

Prepared for DNV. Api Integration Spec. Draft in review.

DNV API Integration Specification — Data Exchange Protocol

Overview

This document provides a comprehensive specification for the API-based data exchange between DaedArch Corporation (hereinafter referred to as "DaedArch") and DNV. The API facilitates the integration of DaedArch’s sensor-based Monitoring, Reporting, and Verification (MRV) platform with DNV's verification systems. This integration is essential for ensuring that the environmental data captured by DaedArch’s IoT sensors is processed, verified, and reported in accordance with DNV's standards and requirements for third-party verification and assurance.

Purpose

The purpose of this specification is to outline the requirements for API integration, including authentication methods, endpoint definitions, data models, error handling procedures, and rate limits. This document serves as a normative guide for technical reviewers and developers involved in the integration process.

Authentication

All API requests to DNV’s systems shall be authenticated using OAuth 2.0 protocol. The following steps outline the authentication process:

  1. Client Registration: DaedArch shall register with DNV to obtain a Client ID and Client Secret.
  2. Token Request: DaedArch shall request an access token by sending a POST request to the token endpoint:

` POST /oauth/token Host: api.dnv.com Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id={CLIENT_ID}&client_secret={CLIENT_SECRET} `

  1. Access Token: Upon successful authentication, DNV shall return an access token in the following format:

`json { "access_token": "eyJz93a...k4laUWw", "token_type": "Bearer", "expires_in": 3600 } `

  1. Token Usage: DaedArch shall include the access token in the Authorization header of subsequent API requests:

` Authorization: Bearer {access_token} `

Endpoints

The following endpoints are defined for data exchange between DaedArch and DNV. Each endpoint includes the HTTP method, URL, description, request parameters, and response formats.

1. Submit Environmental Data

  • Endpoint: /api/v1/environmental-data
  • Method: POST
  • Description: Submits environmental data captured by DaedArch’s IoT sensors for verification.
  • Request Body:

`json { "sensor_id": "string", "timestamp": "string (ISO 8601)", "data": { "temperature": "number", "humidity": "number", "co2_levels": "number", "other_metrics": { "metric_name": "value" } }, "chain_of_custody": { "source": "string", "transit": [ { "from": "string", "to": "string", "timestamp": "string (ISO 8601)" } ] } } `

  • Response:
  • Success (201 Created):

`json { "status": "success", "message": "Data submitted successfully", "verification_id": "string" } `

  • Error (400 Bad Request):

`json { "status": "error", "message": "Invalid data format" } `

2. Retrieve Verification Status

  • Endpoint: /api/v1/verification-status/{verification_id}
  • Method: GET
  • Description: Retrieves the status of the verification process for previously submitted environmental data.
  • URL Parameters:
  • verification_id: The unique identifier for the verification request.
  • Response:
  • Success (200 OK):

`json { "verification_id": "string", "status": "string", "timestamp": "string (ISO 8601)", "results": { "verified": true, "comments": "string" } } `

  • Error (404 Not Found):

`json { "status": "error", "message": "Verification ID not found" } `

3. Error Reporting

  • Endpoint: /api/v1/error-report
  • Method: POST
  • Description: Reports errors encountered during data submission or verification.
  • Request Body:

`json { "verification_id": "string", "error_message": "string", "timestamp": "string (ISO 8601)" } `

  • Response:
  • Success (201 Created):

`json { "status": "success", "message": "Error reported successfully" } `

  • Error (400 Bad Request):

`json { "status": "error", "message": "Invalid error report format" } `

Data Models

The data models used for the API requests and responses are defined as follows:

Environmental Data Model

| Field Name | Type | Description | Required | |----------------------|----------|---------------------------------------------------|----------| | sensor_id | string | Unique identifier for the sensor | Yes | | timestamp | string | Timestamp of the data capture (ISO 8601 format) | Yes | | data | object | Environmental metrics captured | Yes | | data.temperature | number | Temperature reading | Yes | | data.humidity | number | Humidity reading | Yes | | data.co2_levels | number | CO2 levels reading | Yes | | data.other_metrics | object | Additional metrics captured | No | | chain_of_custody | object | Chain of custody details | Yes | | chain_of_custody.source | string | Source of the data | Yes | | chain_of_custody.transit | array | List of transit records | Yes |

Verification Status Model

| Field Name | Type | Description | Required | |----------------------|----------|---------------------------------------------------|----------| | verification_id | string | Unique identifier for the verification request | Yes | | status | string | Current status of the verification process | Yes | | timestamp | string | Timestamp of the status retrieval (ISO 8601 format)| Yes | | results | object | Verification results | Yes | | results.verified | boolean | Indicates if the data has been verified | Yes | | results.comments | string | Comments or notes regarding the verification | No |

Error Handling

The API shall provide clear and descriptive error messages to facilitate troubleshooting. The following error codes and messages are defined:

| HTTP Status Code | Error Message | Description | |------------------|-----------------------------------------|--------------------------------------------------| | 400 | Invalid data format | The request body does not conform to the expected format. | | 401 | Unauthorized | Authentication failed; invalid access token. | | 404 | Not found | The requested resource could not be found. | | 500 | Internal server error | An unexpected error occurred on the server side. |

Error Response Format

All error responses shall conform to the following JSON format: `json { "status": "error", "message": "Descriptive error message" } `

Rate Limits

To ensure fair usage and availability of the API, the following rate limits shall apply:

  • Standard Rate Limit: 100 requests per minute per client.
  • Burst Rate Limit: 200 requests per minute for short bursts (up to 10 seconds).

Rate Limit Response

When the rate limit is exceeded, the API shall respond with a 429 Too Many Requests status code and the following JSON format: `json { "status": "error", "message": "Rate limit exceeded. Please try again later." } `

Conformity Assessment Procedures

The following procedures shall be followed to ensure compliance with DNV's standards:

  1. Initial Integration Testing: DaedArch shall conduct initial integration tests to verify that the API endpoints are functioning as intended. This includes testing all request and response formats, error handling, and rate limits.
  2. Data Validation: All data submitted to DNV shall be validated against the defined data models. Any discrepancies shall be logged and reported.
  3. Audit Trails: DaedArch shall maintain detailed logs of all API interactions, including timestamps, request and response bodies, and error messages. These logs shall be available for audit by DNV upon request.
  4. Periodic Reviews: DNV shall conduct periodic reviews of the integration to ensure ongoing compliance with the specified requirements.

Conclusion

This API Integration Specification outlines the necessary requirements for the data exchange between DaedArch and DNV. Adherence to the specifications set forth in this document is crucial for maintaining compliance with DNV's verification and assurance standards. All parties involved in the integration process shall ensure that they are fully familiar with these requirements and implement them accordingly.

For further inquiries or clarifications, please contact the technical support team at DNV.

Organisation
DNV
Category
Verification Bodies (VVBs)
Doc type
Api Integration Spec
Word count
1156

The co-dependence network

Trellison Institute

Research and methodology.

Carbon capture research →

Artrellion

Policy and stakeholder engagement.

Carbon release arsenal →

LedgerWell

Operational verification.

Carbon business cases →

Disclosure: Draft document prepared for Artrellion stakeholder engagement. Transmittal requires governance approval and recipient-specific customisation.

← DNV · All stakeholders