Skip to main content

Puro.earth dMRV Connect (Beta) (Beta)

Download OpenAPI specification:Download

The dMRV Connect enables you to programmatically interact with Puro's compliance system. Use it to upload evidence and centralize all data needed to meet CDR compliance requirements.

Audit Packages

An Audit Package is a collection of Audits for a specific Facility. Audit Packages are shared with reviewers, such as Auditors or Issuing Authorities, to evaluate compliance of the Frameworks or Models against defined requirements.

Get audit packages

Returns a paginated list of audit packages.

Authorizations:
bearer
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10
facilityId
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Get audit package

Retrieves a specific audit package by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "primaryAuditorOrganization": {
    },
  • "secondaryAuditorOrganizations": [
    ],
  • "id": "string",
  • "facilityId": "string",
  • "startDate": "2019-08-24T14:15:22Z",
  • "endDate": "2019-08-24T14:15:22Z",
  • "audits": [
    ],
  • "fields": [
    ],
  • "createdAt": "2019-08-24T14:15:22Z"
}

Create audit package

Creates a new audit package. Note: The auditor for the submitted package is selected automatically based on its subjects. All acknowledgement fields for those subjects are also set to true automatically.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
required
Array of objects (AuditPackageSubjectInput) non-empty
Array (non-empty)
id
required
string <uuid>
type
required
string
Enum: "FRAMEWORK_INSTANCE" "MODEL"

Responses

Request samples

Content type
application/json
{
  • "subjects": [
    ]
}

Response samples

Content type
application/json
{
  • "primaryAuditorOrganization": {
    },
  • "secondaryAuditorOrganizations": [
    ],
  • "id": "string",
  • "facilityId": "string",
  • "startDate": "2019-08-24T14:15:22Z",
  • "endDate": "2019-08-24T14:15:22Z",
  • "audits": [
    ],
  • "fields": [
    ],
  • "createdAt": "2019-08-24T14:15:22Z"
}

Audit Reports

An Audit Report records the outcome of a review for an Audit Package. Reviewers publish Audit Reports based on their permissions. Publishing an Audit Report indicates that the associated Audit Package and by extension the Audit—has been formally reviewed.

Get audit reports

Returns a paginated list of audit reports.

Authorizations:
bearer
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Get audit report

Retrieves a specific audit report by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "packageId": "string",
  • "publishedAt": "2019-08-24T14:15:22Z",
  • "publishedBy": {
    },
  • "confirmations": [
    ],
  • "files": [
    ],
  • "fields": [
    ]
}

Audits

An Audit represents the review of a single compliance Framework Instance or Model by an Auditor Organization. It describes what is being audited, who is auditing, and where it is in its process.

Create audit export job

Starts an asynchronous export of an Audit's data whose results can be fetched using the returned job ID. Currently, only Framework Audits are supported. Returns a job ID and a status URL to check when the export is complete.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "statusUrl": "string"
}

Get audit export job

Retrieves the status of a previously created Audit export job. When complete, the response includes a signed URL for downloading the exported data.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "status": "PENDING",
  • "id": "string",
  • "signedUrl": "string"
}

Batches

Batches represent units of carbon stored within a Monitoring Period. When an Evidence Request is configured as type BATCH, submissions can be organized by batchItemId, allowing the grouping of related Evidence files and Expected Field Values together. This enables efficient data entry where common field values are specified once per Batch rather than repeated for each individual submission.

Delete batch

Deletes a specific batch by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{ }

Create batch

Creates a new batch.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Responses

Response samples

Content type
application/json
{
  • "id": "string"
}

Document Instances

A Document Instance represents a Document applied to a specific Monitoring Period. Document Instances can contain Evidence Requests, Templates, Expected Fields to structure the collection of compliance data.

Create document instance

Creates a new document instance.

Authorizations:
bearer
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
documentId
required
string <uuid>
monitoringPeriodId
required
string <uuid>

Responses

Request samples

Content type
application/json
{
  • "documentId": "4704590c-004e-410d-adf7-acb7ca0a7052",
  • "monitoringPeriodId": "2ccf460d-7a18-4269-8f33-2415ee0813f9"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "documentId": "string",
  • "monitoringPeriodId": "string"
}

Get document instances

Returns a paginated list of document instances.

Authorizations:
bearer
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10
documentId
string <uuid>
monitoringPeriodId
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Get document instance

Retrieves a specific document instance by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "documentId": "string",
  • "monitoringPeriodId": "string"
}

Documents

A Document represents a specific compliance requirement. It contains one or more Evidence Requests for a given collection period. Documents can be mapped across Frameworks, allowing the same data to satisfy different requirements.

Get document

Retrieves a specific document by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string"
}

Get documents

Returns a paginated list of documents.

Authorizations:
bearer
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10
monitoringPeriodId
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Evidence

Evidence represents the files submitted to an Evidence Request. Each Evidence is tied to an Evidence Request and Evidence Template.

Create evidence export job

Creates a job to export Evidence files. Returns a job ID, current status, and a signed URL if the export is ready.

Authorizations:
bearer
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
merge
boolean
Default: false

If true, the export job will merge all evidence files with the same template into a single file

evidenceTemplateIds
Array of strings <uuid> [ items <uuid > ]
monitoringPeriodIds
Array of strings <uuid> [ items <uuid > ]
facilityIds
Array of strings <uuid> [ items <uuid > ]
evidenceRequestStatuses
Array of objects

Responses

Request samples

Content type
application/json
{
  • "merge": false,
  • "evidenceTemplateIds": [
    ],
  • "monitoringPeriodIds": [
    ],
  • "facilityIds": [
    ],
  • "evidenceRequestStatuses": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "statusUrl": "string"
}

Get evidence export job

Retrieves the Evidence export job.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "status": "PENDING",
  • "id": "string",
  • "signedUrl": "string"
}

Create evidence

Uploads Evidence to an Evidence Request.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: multipart/form-data
required
file
required
string <binary>
evidenceTemplateId
string or null <uuid>

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "evidenceRequestId": "string",
  • "evidenceTemplateId": "string",
  • "validationErrors": [
    ]
}

Evidence Requests

An Evidence Request prompts the submission of files (Evidence) and/or structured data (Expected Field Values) for a Document Instance. Requests can be STANDARD (single submission) or BATCH (requiring one submission per batch in the Monitoring Period). Evidence Requests can be assigned to users, include a due date, and track status.

Create evidence request

Creates a new evidence request.

Authorizations:
bearer
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
type
string
Default: "STANDARD"
Enum: "STANDARD" "BATCH"
documentInstanceId
required
string <uuid>
dueDate
string or null <date-time>
collectionStartDate
string or null <date-time>
collectionEndDate
string or null <date-time>

Responses

Request samples

Content type
application/json
{
  • "type": "STANDARD",
  • "documentInstanceId": "5f69dfc2-d3e5-44de-b8b9-f504ed41e323",
  • "dueDate": "2019-08-24T14:15:22Z",
  • "collectionStartDate": "2019-08-24T14:15:22Z",
  • "collectionEndDate": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "type": "STANDARD",
  • "status": "PENDING",
  • "id": "string",
  • "dueDate": "2019-08-24T14:15:22Z",
  • "collectionStartDate": "2019-08-24T14:15:22Z",
  • "collectionEndDate": "2019-08-24T14:15:22Z",
  • "reasonSkipped": "string"
}

Get evidence requests

Returns a paginated list of evidence requests.

Authorizations:
bearer
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10
monitoringPeriodId
string <uuid>
documentId
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Get evidence request

Retrieves a specific evidence request by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "type": "STANDARD",
  • "status": "PENDING",
  • "id": "string",
  • "dueDate": "2019-08-24T14:15:22Z",
  • "collectionStartDate": "2019-08-24T14:15:22Z",
  • "collectionEndDate": "2019-08-24T14:15:22Z",
  • "reasonSkipped": "string"
}

Update evidence request

Updates an existing evidence request by ID.

Authorizations:
bearer
path Parameters
id
required
string
Request Body schema: application/json
required
status
string or null
Enum: "PENDING" "READY_FOR_REVIEW" "APPROVED" "SKIPPED"

The status of the evidence request.

reasonSkipped
string or null
dueDate
string or null <date-time>
collectionStartDate
string or null <date-time>
collectionEndDate
string or null <date-time>

Responses

Request samples

Content type
application/json
{
  • "status": "PENDING",
  • "reasonSkipped": "string",
  • "dueDate": "2019-08-24T14:15:22Z",
  • "collectionStartDate": "2019-08-24T14:15:22Z",
  • "collectionEndDate": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "type": "STANDARD",
  • "status": "PENDING",
  • "id": "string",
  • "dueDate": "2019-08-24T14:15:22Z",
  • "collectionStartDate": "2019-08-24T14:15:22Z",
  • "collectionEndDate": "2019-08-24T14:15:22Z",
  • "reasonSkipped": "string"
}

Delete evidence request

Deletes a specific evidence request by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{ }

Create evidence

Uploads Evidence to an Evidence Request.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: multipart/form-data
required
file
required
string <binary>
evidenceTemplateId
string or null <uuid>

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "evidenceRequestId": "string",
  • "evidenceTemplateId": "string",
  • "validationErrors": [
    ]
}

Create expected field value

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
type
required
string
Default: "NUMERIC"
value
required
string
expectedFieldId
required
string <uuid>
batchItemId
string or null <uuid>

Responses

Request samples

Content type
application/json
Example
{
  • "type": "NUMERIC",
  • "value": "string",
  • "expectedFieldId": "c9445aee-6e7c-4508-99e6-1d565826fb8f",
  • "batchItemId": "c031d794-557a-415d-b487-6d1395a3d5e3"
}

Response samples

Content type
application/json
No sample

Get batch items for evidence request.

Returns a paginated list of Batch Items for an Evidence Request.

Authorizations:
bearer
path Parameters
id
required
string
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Evidence Templates

Evidence Templates define the expected format for CSV file submissions. Templates specify column headers, data types, and validation rules that uploaded files should conform to. Files that don't match the template structure are flagged in the platform for review rather than rejected by the API.

Get evidence template

Retrieves a specific evidence template by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "columns": [
    ],
  • "id": "string",
  • "label": "string"
}

Get evidence templates

Returns a paginated list of evidence templates.

Authorizations:
bearer
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10
monitoringPeriodId
string <uuid>

Must be provided if documentId is specified.

documentId
string <uuid>

Must be provided if monitoringPeriodId is specified.

facilityId
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Expected Field Values

Expected Field Values are the actual value entries for Expected Fields, capturing the specific numbers, text, dates, or boolean value submitted in Evidence Requests. These values form the dataset used in reporting and analysis.

Get expected field value

Retrieves a specific expected field value by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
Example
{
  • "type": "NUMERIC",
  • "value": "string",
  • "hasErrors": true,
  • "id": "string",
  • "expectedFieldId": "string",
  • "evidenceRequestId": "string",
  • "batchItemId": "string"
}

Update expected field value

Updates an existing expected field value by ID.

Authorizations:
bearer
path Parameters
id
required
string
Request Body schema: application/json
required
type
required
string
Default: "NUMERIC"
value
required
string

Responses

Request samples

Content type
application/json
Example
{
  • "type": "NUMERIC",
  • "value": "string"
}

Response samples

Content type
application/json
No sample

Delete expected field value

Deletes a specific expected field value by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Get expected field values

Returns a paginated list of expected field values.

Authorizations:
bearer
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10
evidenceRequestId
string <uuid>
expectedFieldId
string <uuid>
batchItemId
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Create expected field value

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
type
required
string
Default: "NUMERIC"
value
required
string
expectedFieldId
required
string <uuid>
batchItemId
string or null <uuid>

Responses

Request samples

Content type
application/json
Example
{
  • "type": "NUMERIC",
  • "value": "string",
  • "expectedFieldId": "c9445aee-6e7c-4508-99e6-1d565826fb8f",
  • "batchItemId": "c031d794-557a-415d-b487-6d1395a3d5e3"
}

Response samples

Content type
application/json
No sample

Expected Fields

Expected Fields are configurations for the data inputs for a Document Instance. Each field specifies its data type—text, numeric, date, or boolean—and can include validation constraints like min/max values or date ranges to ensure accurate data capture.

Create expected field

Creates a new Expected Field for a Document Instance. The type fields determines the other input fields.

Authorizations:
bearer
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
type
required
string
Default: "NUMERIC"
unit
string or null
minValue
string or null
maxValue
string or null
documentInstanceId
required
string <uuid>
label
required
string

Responses

Request samples

Content type
application/json
Example
{
  • "type": "NUMERIC",
  • "unit": "string",
  • "minValue": "string",
  • "maxValue": "string",
  • "documentInstanceId": "5f69dfc2-d3e5-44de-b8b9-f504ed41e323",
  • "label": "string"
}

Response samples

Content type
application/json
No sample

Get expected fields

Returns a paginated list of expected fields.

Authorizations:
bearer
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10
documentInstanceId
string <uuid>
monitoringPeriodId
string <uuid>
evidenceRequestId
string <uuid>
modelId
string <uuid>
type
object (Object)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Get expected field

Retrieves a specific expected field by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
Example
{
  • "type": "NUMERIC",
  • "unit": "string",
  • "minValue": "string",
  • "maxValue": "string",
  • "id": "string",
  • "documentInstanceId": "string",
  • "label": "string"
}

Update expected field

Updates an existing Expected Field by ID. The type field determines the value field type.

Authorizations:
bearer
path Parameters
id
required
string
Request Body schema: application/json
required
type
required
string
Default: "NUMERIC"
label
string
unit
string or null
minValue
string or null
maxValue
string or null

Responses

Request samples

Content type
application/json
Example
{
  • "type": "NUMERIC",
  • "label": "string",
  • "unit": "string",
  • "minValue": "string",
  • "maxValue": "string"
}

Response samples

Content type
application/json
No sample

Delete expected field

Deletes an Expected Field by ID. Warning: This operation will cascade delete all associated Expected Field Values. This action cannot be undone.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Facilities

A Facility represents a physical or operational location where environmental activities occur. Facilities serve as the primary unit for reporting, linking Monitoring Periods, Audit Packages, Documents, and Evidence Requests.

Create facility

Creates a new facility.

Authorizations:
bearer
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
label
string or null
description
string or null

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string",
  • "organizationId": "string"
}

Get facilities

Returns a paginated list of facilities.

Authorizations:
bearer
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Create multiple facilities

Creates multiple facilities.

Authorizations:
bearer
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required

Array of facilities to create

Array
label
string or null
description
string or null

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
[
  • {
    }
]

Get facility

Retrieves a specific facility by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string",
  • "organizationId": "string"
}

Update facility

Updates an existing facility by ID.

Authorizations:
bearer
path Parameters
id
required
string
Request Body schema: application/json
required
label
string or null
description
string or null

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string",
  • "organizationId": "string"
}

Delete facility

Deletes a specific facility by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{ }

Create audit package

Creates a new audit package. Note: The auditor for the submitted package is selected automatically based on its subjects. All acknowledgement fields for those subjects are also set to true automatically.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
required
Array of objects (AuditPackageSubjectInput) non-empty
Array (non-empty)
id
required
string <uuid>
type
required
string
Enum: "FRAMEWORK_INSTANCE" "MODEL"

Responses

Request samples

Content type
application/json
{
  • "subjects": [
    ]
}

Response samples

Content type
application/json
{
  • "primaryAuditorOrganization": {
    },
  • "secondaryAuditorOrganizations": [
    ],
  • "id": "string",
  • "facilityId": "string",
  • "startDate": "2019-08-24T14:15:22Z",
  • "endDate": "2019-08-24T14:15:22Z",
  • "audits": [
    ],
  • "fields": [
    ],
  • "createdAt": "2019-08-24T14:15:22Z"
}

Framework Instances

A Framework Instance is a Framework applied to a specific Monitoring Period.

Get framework instances

Returns a paginated list of framework instances.

Authorizations:
bearer
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10
frameworkId
string or null <uuid>
monitoringPeriodId
string or null <uuid>

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Get framework instance

Retrieves a specific framework instance by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "frameworkId": "string",
  • "monitoringPeriodId": "string"
}

Delete framework instance

Deletes a specific framework instance by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Create framework instance

Creates a new framework instance.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
frameworkId
required
string <uuid>

Responses

Request samples

Content type
application/json
{
  • "frameworkId": "39ce3374-0559-48fa-9aa6-962d6b4d6117"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "frameworkId": "string",
  • "monitoringPeriodId": "string"
}

Fields

Fields reference Document Instances and derive calculations from their Expected Fields. For Document Instances with repeating Evidence Requests, Expected Field values can be averaged or summed in the calculations. For Document Instances with Batch Evidence Requests, calculations are vectorized so that each batch is matched to its relevant data point, producing a result for every batch.

Get field

Retrieves a specific field by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "emissionImpactType": "SEQUESTRATION",
  • "variables": [
    ],
  • "id": "string",
  • "label": "string",
  • "description": "string",
  • "expression": "string",
  • "fieldLibraryId": "string"
}

Update field

Updates an existing field by ID.

Authorizations:
bearer
path Parameters
id
required
string
Request Body schema: application/json
required
expression
string or null

The mathematical expression. You can reference variable values using the escaped refId. To escape the refId, replace any dashes with underscores and add an underscore prefix.

emissionImpactType
string or null
Enum: "SEQUESTRATION" "EMISSION"
Array of any or null
label
string or null
description
string or null

Responses

Request samples

Content type
application/json
{
  • "expression": "_abcd_123 / _efgh_456 * 100",
  • "emissionImpactType": "SEQUESTRATION",
  • "variables": [
    ],
  • "label": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "emissionImpactType": "SEQUESTRATION",
  • "variables": [
    ],
  • "id": "string",
  • "label": "string",
  • "description": "string",
  • "expression": "string",
  • "fieldLibraryId": "string"
}

Delete field

Deletes a specific field by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Get field values

Returns a paginated list of field values.

Authorizations:
bearer
path Parameters
id
required
string
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
Example
{
  • "value": "string",
  • "unit": "string"
}

Create field

Creates a new field.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
expression
string or null

The mathematical expression. You can reference variable values using the escaped refId. To escape the refId, replace any dashes with underscores and add an underscore prefix.

emissionImpactType
string or null
Enum: "SEQUESTRATION" "EMISSION"
Array of any or null
label
string or null
description
string or null

Responses

Request samples

Content type
application/json
{
  • "expression": "_abcd_123 / _efgh_456 * 100",
  • "emissionImpactType": "SEQUESTRATION",
  • "variables": [
    ],
  • "label": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "emissionImpactType": "SEQUESTRATION",
  • "variables": [
    ],
  • "id": "string",
  • "label": "string",
  • "description": "string",
  • "expression": "string",
  • "fieldLibraryId": "string"
}

Get fields

Returns a paginated list of fields.

Authorizations:
bearer
path Parameters
id
required
string
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Field Libraries

A Field Library is a collection of related Fields. Every Field inherently belongs to a Field Library.

Delete field library

Deletes a specific field library by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Create field

Creates a new field.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
expression
string or null

The mathematical expression. You can reference variable values using the escaped refId. To escape the refId, replace any dashes with underscores and add an underscore prefix.

emissionImpactType
string or null
Enum: "SEQUESTRATION" "EMISSION"
Array of any or null
label
string or null
description
string or null

Responses

Request samples

Content type
application/json
{
  • "expression": "_abcd_123 / _efgh_456 * 100",
  • "emissionImpactType": "SEQUESTRATION",
  • "variables": [
    ],
  • "label": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "emissionImpactType": "SEQUESTRATION",
  • "variables": [
    ],
  • "id": "string",
  • "label": "string",
  • "description": "string",
  • "expression": "string",
  • "fieldLibraryId": "string"
}

Get fields

Returns a paginated list of fields.

Authorizations:
bearer
path Parameters
id
required
string
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Create field library

Creates a new field library.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
label
string or null
description
string or null

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string",
  • "sectionId": "string"
}

Get field libraries

Returns a paginated list of field libraries.

Authorizations:
bearer
path Parameters
id
required
string
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Formulas

Formulas are calculations that reference other Fields and Formulas.

Get formula

Retrieves a specific formula by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "emissionImpactType": "SEQUESTRATION",
  • "id": "string",
  • "label": "string",
  • "description": "string",
  • "expression": "string",
  • "variables": [
    ],
  • "sectionId": "string"
}

Update formula

Updates an existing formula by ID.

Authorizations:
bearer
path Parameters
id
required
string
Request Body schema: application/json
required
expression
string or null

The mathematical expression. You can reference variable values using the escaped refId. To escape the refId, replace any dashes with underscores and add an underscore prefix.

emissionImpactType
string or null
Enum: "SEQUESTRATION" "EMISSION"
label
string or null
description
string or null
Array of objects or null (FormulaVariableInput)

Responses

Request samples

Content type
application/json
{
  • "expression": "_abcd_123 / _efgh_456 * 100",
  • "emissionImpactType": "SEQUESTRATION",
  • "label": "string",
  • "description": "string",
  • "variables": [
    ]
}

Response samples

Content type
application/json
{
  • "emissionImpactType": "SEQUESTRATION",
  • "id": "string",
  • "label": "string",
  • "description": "string",
  • "expression": "string",
  • "variables": [
    ],
  • "sectionId": "string"
}

Delete formula

Deletes a specific formula by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Get formula values

Returns a paginated list of formula values.

Authorizations:
bearer
path Parameters
id
required
string
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
Example
{
  • "value": "string",
  • "unit": "string"
}

Create formula

Creates a new formula.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
expression
string or null

The mathematical expression. You can reference variable values using the escaped refId. To escape the refId, replace any dashes with underscores and add an underscore prefix.

emissionImpactType
string or null
Enum: "SEQUESTRATION" "EMISSION"
label
string or null
description
string or null
Array of objects or null (FormulaVariableInput)

Responses

Request samples

Content type
application/json
{
  • "expression": "_abcd_123 / _efgh_456 * 100",
  • "emissionImpactType": "SEQUESTRATION",
  • "label": "string",
  • "description": "string",
  • "variables": [
    ]
}

Response samples

Content type
application/json
{
  • "emissionImpactType": "SEQUESTRATION",
  • "id": "string",
  • "label": "string",
  • "description": "string",
  • "expression": "string",
  • "variables": [
    ],
  • "sectionId": "string"
}

Get formulas

Returns a paginated list of formulas.

Authorizations:
bearer
path Parameters
id
required
string
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Frameworks

A Framework Instance is a Framework applied to a specific Monitoring Period.

Get frameworks

Returns a paginated list of frameworks.

Authorizations:
bearer
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Get framework by ID

Retrieves a framework by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string"
}

Models

Models are formula-based computations that reference Expected Fields defined in Documents. Models enable consistent, repeatable calculations across Facilities and Monitoring Periods, ensuring that updates to source data automatically propagate to model outputs.

Get model

Retrieves a specific model by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string"
}

Update model

Updates an existing model by ID.

Authorizations:
bearer
path Parameters
id
required
string
Request Body schema: application/json
required
label
string or null
description
string or null

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string"
}

Delete model

Deletes a specific model by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Create model section

Creates a new model section.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
label
string or null
description
string or null

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string"
}

Get model sections

Returns a paginated list of model sections.

Authorizations:
bearer
path Parameters
id
required
string
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Create model

Creates a new model.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
label
string or null
description
string or null
templateId
string or null <uuid>

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "description": "string",
  • "templateId": "196100ac-4eec-4fb6-a7f7-86c8b584771d"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string"
}

Get models

Returns a paginated list of models.

Authorizations:
bearer
path Parameters
id
required
string
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Model Sections

Model Sections provide the top-level structure within a Model. They group related Fields and Formulas, helping organize calculations into smaller components.

Create model section

Creates a new model section.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
label
string or null
description
string or null

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string"
}

Get model sections

Returns a paginated list of model sections.

Authorizations:
bearer
path Parameters
id
required
string
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Get model section

Retrieves a specific model section by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string"
}

Update model section

Updates an existing model section by ID.

Authorizations:
bearer
path Parameters
id
required
string
Request Body schema: application/json
required
label
string or null
description
string or null

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string"
}

Delete model section

Deletes a specific model section by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string"
}

Create field library

Creates a new field library.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
label
string or null
description
string or null

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string",
  • "sectionId": "string"
}

Get field libraries

Returns a paginated list of field libraries.

Authorizations:
bearer
path Parameters
id
required
string
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Create formula

Creates a new formula.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
expression
string or null

The mathematical expression. You can reference variable values using the escaped refId. To escape the refId, replace any dashes with underscores and add an underscore prefix.

emissionImpactType
string or null
Enum: "SEQUESTRATION" "EMISSION"
label
string or null
description
string or null
Array of objects or null (FormulaVariableInput)

Responses

Request samples

Content type
application/json
{
  • "expression": "_abcd_123 / _efgh_456 * 100",
  • "emissionImpactType": "SEQUESTRATION",
  • "label": "string",
  • "description": "string",
  • "variables": [
    ]
}

Response samples

Content type
application/json
{
  • "emissionImpactType": "SEQUESTRATION",
  • "id": "string",
  • "label": "string",
  • "description": "string",
  • "expression": "string",
  • "variables": [
    ],
  • "sectionId": "string"
}

Get formulas

Returns a paginated list of formulas.

Authorizations:
bearer
path Parameters
id
required
string
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Model Templates

Model Templates are partially defined Models that can be applied to a Monitoring Period. When applied to a Monitoring Period, a Model Template generates a Model with Formulas and Fields that can be further configured.

Get model templates

Returns a paginated list of model templates.

Authorizations:
bearer
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Monitoring Periods

A Monitoring Period defines a specific time frame within a Facility during which CDR activities are tracked and reported. Data collected during a Monitoring Period is associated with relevant Documents and Evidence Requests for auditing and compliance purposes.

Create monitoring period

Creates a new monitoring period.

Authorizations:
bearer
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
facilityId
required
string <uuid>
description
string or null
startDate
required
string <date-time>
endDate
required
string <date-time>

Responses

Request samples

Content type
application/json
{
  • "facilityId": "d7244f5b-52c1-4d27-b4f5-43b1113fc304",
  • "description": "string",
  • "startDate": "2019-08-24T14:15:22Z",
  • "endDate": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "description": "string",
  • "startDate": "2019-08-24T14:15:22Z",
  • "endDate": "2019-08-24T14:15:22Z",
  • "facilityId": "string"
}

Get monitoring periods

Returns a paginated list of Monitoring Periods.

Authorizations:
bearer
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10
facilityId
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Duplicate monitoring period

Creates a copy of an existing Monitoring Period to a target Facility with new start and end dates.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
targetFacilityId
required
string <uuid>
startDate
required
string <date-time>
endDate
required
string <date-time>

Responses

Request samples

Content type
application/json
{
  • "targetFacilityId": "1bee9322-e776-48d0-a953-f18d3a200bed",
  • "startDate": "2019-08-24T14:15:22Z",
  • "endDate": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "description": "string",
  • "startDate": "2019-08-24T14:15:22Z",
  • "endDate": "2019-08-24T14:15:22Z",
  • "facilityId": "string"
}

Get monitoring period

Retrieves a specific monitoring period by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "description": "string",
  • "startDate": "2019-08-24T14:15:22Z",
  • "endDate": "2019-08-24T14:15:22Z",
  • "facilityId": "string"
}

Update monitoring period

Updates an existing monitoring period by ID.

Authorizations:
bearer
path Parameters
id
required
string
Request Body schema: application/json
required
description
string or null
startDate
string <date-time>
endDate
string <date-time>

Responses

Request samples

Content type
application/json
{
  • "description": "string",
  • "startDate": "2019-08-24T14:15:22Z",
  • "endDate": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "description": "string",
  • "startDate": "2019-08-24T14:15:22Z",
  • "endDate": "2019-08-24T14:15:22Z",
  • "facilityId": "string"
}

Delete monitoring period

Deletes a specific monitoring period by ID.

Authorizations:
bearer
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "description": "string",
  • "startDate": "2019-08-24T14:15:22Z",
  • "endDate": "2019-08-24T14:15:22Z",
  • "facilityId": "string"
}

Create batch

Creates a new batch.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Responses

Response samples

Content type
application/json
{
  • "id": "string"
}

Create model

Creates a new model.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
label
string or null
description
string or null
templateId
string or null <uuid>

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "description": "string",
  • "templateId": "196100ac-4eec-4fb6-a7f7-86c8b584771d"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string",
  • "description": "string"
}

Get models

Returns a paginated list of models.

Authorizations:
bearer
path Parameters
id
required
string
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Create framework instance

Creates a new framework instance.

Authorizations:
bearer
path Parameters
id
required
string
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
frameworkId
required
string <uuid>

Responses

Request samples

Content type
application/json
{
  • "frameworkId": "39ce3374-0559-48fa-9aa6-962d6b4d6117"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "frameworkId": "string",
  • "monitoringPeriodId": "string"
}

Partner Authentication

Partners can authenticate in two ways, depending on what they're doing:

1) Partner Client Secret (pcs_…)

  • A global credential issued to a registered partner.
  • Use it for organization-agnostic endpoints only, most importantly to create an organization-scoped access token (see below).
  • Cannot be used to access a supplier's organization data.
  • Format: starts with pcs_. Treat it like a password (store securely; never commit to source control).
  • How to get one: partners must register with Puro.earth. Please contact tech-support@puro.earth.

2) Partner Access Token (poa_…)

  • A bearer token scoped to a single supplier organization
  • Issued by calling POST /v0/partners/auth/access-tokens
  • Use it to access org-specific API endpoints on behalf of your partner integration (not a human user).
  • Permissions: supplier organizations determine the permissions of the access token, such as which facilities can be accessed.
  • Revocation: supplier organizations can revoke these at any time; calls with a revoked token will fail.

Create a partner access token

Redeems an authorization code (provided by the supplier) to issue an access token (poa_…) scoped to the supplier's organization.

Requires Partner Client Secret (pcs_…) as Bearer.

For security purposes, this endpoint can only be called once for a given authorization code.

Authorizations:
PartnerClientSecret
Request Body schema: application/json
required
authorizationCode
required
string

The authorization code used to create the access token

Responses

Request samples

Content type
application/json
{
  • "authorizationCode": "string"
}

Response samples

Content type
application/json
{
  • "accessToken": "poa_abc123"
}

Organizations

An Organization represents the top-level entity under which Users, Facilities, and Audits are managed. It defines ownership and permissions for all data and operations within the platform.

Create organization

Creates a new organization.

Authorizations:
bearer
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
label
required
string

Responses

Request samples

Content type
application/json
{
  • "label": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "label": "string"
}

Get organizations

Returns a paginated list of organizations.

Authorizations:
bearer
query Parameters
pageCursor
string <uuid>
pageSize
number [ 1 .. 100 ]
Default: 10
label
string

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pageInfo": {
    }
}

Users

Users are individuals or service accounts that interact with the platform. They can be assigned roles and permissions to upload data, review audits, or manage other organizational data.

Invite user

Invites a new User to the platform.

Authorizations:
bearer
header Parameters
idempotency-key
required
string

A unique identifier for the request

Request Body schema: application/json
required
role
required
string
Enum: "ADMIN" "LIMITED_ACCESS_MEMBER" "ISSUING_AUTHORITY_ADMIN" "ISSUING_AUTHORITY_EDITOR" "ISSUING_AUTHORITY_VIEWER" "VERIFIER_ADMIN" "MANAGED_ADMIN"

The role of the user to invite.

email
required
string
firstName
string or null
lastName
string or null
sendInviteEmail
boolean or null

Responses

Request samples

Content type
application/json
{
  • "role": "ADMIN",
  • "email": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "sendInviteEmail": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "email": "string"
}