Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/validere-records-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
description: Activity Log
title: CarbonHub activities Records API
version: 1.0.0
servers:
- url: https://api.validere.io
security:
- Staging: []
- Integration: []
- Local: []
tags:
- description: Manage Records
name: records
paths:
/app/v1/records:
post:
operationId: create_record
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/RecordCreateInput'
- properties:
values:
items:
allOf:
- $ref: '#/components/schemas/RecordValueCreateInput'
- properties:
measurement_type:
type: string
type: object
type: array
type: object
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Record'
description: A successful operation
summary: Create new record
tags:
- records
put:
operationId: upsert_record
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/RecordCreateInput'
- properties:
values:
items:
allOf:
- $ref: '#/components/schemas/RecordValueCreateInput'
- properties:
measurement_type:
type: string
type: object
type: array
type: object
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Record'
description: A successful operation
summary: Create or update a record
tags:
- records
/app/v1/records/search:
post:
operationId: search_records
parameters:
- $ref: '#/components/parameters/RecordAssetDetailQuery'
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Paginated'
- $ref: '#/components/schemas/RecordSort'
- $ref: '#/components/schemas/RecordFilter'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PagedAggregatedRecordValues'
description: A successful operation
summary: Search and list records
tags:
- records
/app/v1/records/status:
put:
operationId: lock_records_by_search
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/RecordValueLockInput'
- $ref: '#/components/schemas/RecordLockFilter'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RecordValueSearchLockResponse'
description: A successful operation
summary: Search records and set status of their record values
tags:
- records
/app/v1/records/export:
post:
operationId: export_records
parameters:
- $ref: '#/components/parameters/RecordAssetDetailQuery'
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/RecordSort'
- $ref: '#/components/schemas/RecordFilter'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ReportWithS3Url'
description: A successful with the link to download report
summary: Export records based on search input
tags:
- records
/app/v1/records/apply_configuration:
post:
operationId: apply_record_configuration
requestBody:
content:
application/json:
schema:
type: object
properties:
filter:
$ref: '#/components/schemas/RecordFilterFields'
required: true
responses:
'200':
content:
application/json:
schema:
type: object
properties:
records:
type: array
items:
type: string
format: uuid
updated_record_values:
type: array
items:
type: string
format: uuid
failed_record_values:
type: array
items:
type: string
format: uuid
description: A successful operation
summary: Apply record configuration using filter parameters
tags:
- records
/app/v1/records/apply_default_configuration:
post:
operationId: apply_default_configuration
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ApplyDefaultRecordValueConfigurationRecordFilterInput'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BulkApplyDefaultRecordConfigurationResponse'
description: A successful operation
summary: Apply default record configuration using filter parameters
tags:
- records
/app/v1/records/apply_default_configuration_async:
post:
operationId: apply_default_configuration_async
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ApplyDefaultRecordValueConfigurationRecordFilterInput'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BulkAsyncApplyDefaultRecordConfigurationResponse'
description: Successfully starts an asynchronous job to bulk apply default record configurations
summary: Start an asynchronous job to bulk apply default record configuration using filter parameters
tags:
- records
/app/v1/records/{record_id}:
get:
operationId: get_record
parameters:
- $ref: '#/components/parameters/RecordId'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Record'
description: A successful operation
summary: Get record and values
tags:
- records
delete:
operationId: delete_record
parameters:
- $ref: '#/components/parameters/RecordId'
responses:
'200':
description: A successful operation
summary: Delete record and values
tags:
- records
/app/v1/records/{record_id}/status:
put:
operationId: lock_record_values_of_record
parameters:
- $ref: '#/components/parameters/RecordId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RecordValuesOfRecordLockInput'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/LockRecordValuesOfRecordResponse'
description: A successful operation
summary: Set status of values of a record (lock/unlock)
tags:
- records
/app/v1/records/{entity_type}/input_records/search:
post:
operationId: search_input_records
parameters:
- $ref: '#/components/parameters/AssetType'
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Paginated'
- properties:
filter:
$ref: '#/components/schemas/RecordFilterFields'
type: object
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PagedInputRecordResults'
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
schema:
$ref: '#/components/schemas/XLSXResponse'
description: A successful operation
summary: Search and list records that are calculator inputs
tags:
- records
/app/v1/records/{entity_type}/input_records/export:
post:
operationId: export_input_records
parameters:
- $ref: '#/components/parameters/AssetType'
requestBody:
content:
application/json:
schema:
properties:
filter:
$ref: '#/components/schemas/RecordFilterFields'
type: object
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ReportWithS3Url'
description: A successful with the link to download report
summary: Export records that are calculator inputs
tags:
- records
/app/v1/records/{record_id}/value/{measurement_type}:
get:
operationId: get_record_value
parameters:
- $ref: '#/components/parameters/RecordId'
- $ref: '#/components/parameters/MeasurementType'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RecordValue'
description: A successful operation
summary: Get record value
tags:
- records
put:
operationId: upsert_record_value
parameters:
- $ref: '#/components/parameters/RecordId'
- $ref: '#/components/parameters/MeasurementType'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RecordValueCreateInput'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RecordValue'
description: A successful operation
summary: Upsert record value
tags:
- records
delete:
operationId: delete_record_value
parameters:
- $ref: '#/components/parameters/RecordId'
- $ref: '#/components/parameters/MeasurementType'
responses:
'200':
description: A successful operation
summary: Delete record value
tags:
- records
/app/v1/records/{record_id}/value/{measurement_type}/status:
put:
operationId: lock_record_value
parameters:
- $ref: '#/components/parameters/RecordId'
- $ref: '#/components/parameters/MeasurementType'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RecordValueLockInput'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/RecordValueCreateInput'
description: A successful operation
summary: Set record value status (lock/unlock)
tags:
- records
/app/v1/records/filters:
get:
operationId: get_records_filter
parameters:
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/SortBy'
- $ref: '#/components/parameters/SortDirection'
- $ref: '#/components/parameters/FilterStatus'
- $ref: '#/components/parameters/FilterTag'
- $ref: '#/components/parameters/FilterCreatedBy'
- $ref: '#/components/parameters/FilterName'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PagedRecordFilterOutput'
description: successful operation
summary: List Filter
tags:
- records
post:
operationId: post_records_filter
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RecordFilterInput'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PagedRecordFilterOutput'
description: successful operation
summary: Create Filter
tags:
- records
/app/v1/records/filters/{filter_id}:
delete:
operationId: delete_records_filter
parameters:
- $ref: '#/components/parameters/FilterId'
responses:
'200':
description: successful operation
summary: Delete Filter
tags:
- records
put:
operationId: put_records_filter
parameters:
- $ref: '#/components/parameters/FilterId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RecordFilterInput'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FormSubmissionFilterOutput'
description: successful operation
summary: Update Filter
tags:
- records
components:
parameters:
Page:
description: page number
in: query
name: page
required: false
schema:
type: number
FilterId:
description: Filter ID
example: 748970de-fd1f-4494-ae3f-47cc21ff205f
in: path
name: filter_id
required: true
schema:
format: uuid
type: string
FilterName:
description: Filter Name
in: query
name: name
required: false
schema:
type: string
RecordAssetDetailQuery:
description: set to true to include asset detail when group by <asset_type>.id
in: query
name: asset_detail
example: true
required: false
schema:
type: string
SortDirection:
description: sort direction
example: desc
in: query
name: sort_direction
required: false
schema:
enum:
- asc
- desc
type: string
RecordId:
description: ID of the record
in: path
name: record_id
required: true
schema:
type: string
format: uuid
FilterCreatedBy:
description: Filter Creator
in: query
name: created_by
required: false
schema:
format: uuid
type: string
MeasurementType:
description: Measurement type of the measurements being retrieved
example: volume
in: path
name: measurement_type
required: true
schema:
type: string
AssetType:
description: Asset Type
example: equipment
in: path
name: entity_type
required: true
schema:
$ref: '#/components/schemas/AssetType'
FilterTag:
description: Filter Tag
in: query
name: tag
required: false
schema:
type: string
SortBy:
description: sort by
in: query
name: sort_by
required: false
schema:
type: string
FilterStatus:
description: Filter Status
in: query
name: status
required: false
schema:
$ref: '#/components/schemas/schemas-FilterStatus'
PageSize:
description: page size
in: query
name: page_size
required: false
schema:
type: number
schemas:
XLSXResponse:
format: binary
type: string
CalculatorResultRecordValueConfiguration:
properties:
configuration_type:
type: string
enum:
- calculator_result
aggregate_function:
$ref: '#/components/schemas/RecordValueConfigurationFunction'
calculator_result_ids:
type: array
items:
format: uuid
type: string
type: object
EquipmentStatus:
type: string
enum:
- active
- inactive
- deprecated
RecordValueSearchLockResponse:
properties:
success:
type: boolean
example: true
affected:
type: number
example: 109
type: object
RecordFilterFields:
allOf:
- $ref: '#/components/schemas/FacilityPrimaryFilterFieldsWithPrefix'
- $ref: '#/components/schemas/EquipmentPrimaryFilterFieldsWithPrefix'
- $ref: '#/components/schemas/EquipmentFacilityPrimaryFilterFieldsWithPrefix'
- $ref: '#/components/schemas/DevicePrimaryFilterFieldsWithPrefix'
- $ref: '#/components/schemas/FlowPrimaryFilterFieldsWithPrefix'
- $ref: '#/components/schemas/RecordPrimaryFilterFields'
- properties:
measurement_type:
type: string
record_value.id:
description: record value ID
type: string
format: uuid
flow.associated_facility.custom_attributes:
type: object
flow.associated_equipment.custom_attributes:
type: object
type: object
CompanyId:
properties:
id:
format: uuid
type: string
AssetType:
type: string
enum:
- equipment
- device
- facility
- flow
schemas-FilterStatus:
type: string
enum:
- active
- draft
RecordValueStatusType:
type: string
enum:
- locked
- unlocked
RecordPrimaryFilterFields:
properties:
id:
description: record ID
type: string
format: uuid
asset_type:
$ref: '#/components/schemas/MeasurementSubjectEntityType'
asset_id:
type: string
format: uuid
example:
$in:
- c3e9446d-4cc0-4e7b-bb43-43fff9361957
- c3e9446d-4cc0-4e7b-bb43-43fff9361957
reporting_group_id:
type: string
example: subpartw
year_month:
type: string
example: 202201
type: object
RecordFilterInput:
allOf:
- $ref: '#/components/schemas/FilterInput'
- $ref: '#/components/schemas/RecordFilter'
FormSubmissionFilter:
properties:
filter:
description: A filter object for Form Submissions where it can filter based on any of these following fields. No fields are mandatory and the syntax is roughly the same as MongoDB querying.
properties:
id:
type: string
format: uuid
version:
type: integer
current_version:
type: boolean
status:
type: string
$ref: '#/components/schemas/FormSubmissionStatus'
form_category_id:
type: string
example:
$in:
- 748970de-fd1f-4494-ae3f-47cc21ff205f
form_category.name:
type: string
example: test
form_schema.id:
type: string
example:
$in:
- 748970de-fd1f-4494-ae3f-47cc21ff205f
form_schema.name:
type: string
form_schema.version:
type: number
form_schema.current_version:
type: boolean
form_schema.status:
type: string
$ref: '#/components/schemas/FormSchemaStatus'
related_entity_id:
type: string
format: uuid
created_by:
type: string
format: uuid
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
event.id:
type: string
format: uuid
measurement.measurement_type:
type: string
measurement.measurement_unit:
type: string
measurement.source_id:
type: string
format: uuid
measurement.subject_id:
type: string
format: uuid
measurement.form_submission_id:
type: string
format: uuid
measurement.section_id:
type: string
measurement.question_id:
type: string
measurement.question_index:
type: number
measurement.time:
type: string
format: date-time
type: object
FlowStatus:
type: string
enum:
- active
- inactive
RecordValueWithCalculatorInputRecord:
allOf:
- $ref: '#/components/schemas/RecordValue'
- properties:
calculator_input_record:
$ref: '#/components/schemas/CalculatorInputRecord'
type: object
Pagination:
properties:
page_number:
type: number
example: 0
page_size:
type: number
example: 10
total_entries:
type: number
example: 58
total_pages:
type: number
example: 6
type: object
ProductCategories:
type: string
description: Use `id` value of any index in `GET /v1/product_categories`
FilterOutput:
allOf:
- $ref: '#/components/schemas/CompanyId'
- $ref: '#/components/schemas/FilterId'
- $ref: '#/components/schemas/FilterInput'
type: object
AuditFields:
properties:
created_at:
format: date-time
type: string
updated_at:
format: date-time
type: string
created_by:
format: uuid
type: string
updated_by:
format: uuid
type: string
type: object
BulkApplyDefaultRecordConfigurationResponse:
allOf:
- $ref: '#/components/schemas/BulkResponse'
- properties:
data:
type: object
additionalProperties:
$ref: '#/components/schemas/ApplyDefaultRecordConfigurationItemResponse'
skippedCount:
type: number
BulkResponse:
properties:
status:
$ref: '#/components/schemas/BulkResponseStatus'
type: object
PagedAggregatedRecordValues:
allOf:
- $ref: '#/components/schemas/Pagination'
- properties:
data:
$ref: '#/components/schemas/AggregatedRecordValuesResults'
type: object
ApplyDefaultRecordConfigurationItemResponse:
properties:
status:
$ref: '#/components/schemas/BulkItemStatus'
upserts:
type: array
items:
$ref: '#/components/schemas/RecordValue'
ReportingGroupInput:
type: object
allOf:
- $ref: '#/components/schemas/ReportingGroupUpdateInput'
- properties:
id:
type: string
example: subpartw
RecordSort:
properties:
sort_by:
description: any field from group_by param
type: string
sort_direction:
default: desc
description: sort direction
enum:
- asc
- desc
example: desc
type: string
LockRecordValuesOfRecordResponse:
properties:
success:
type: boolean
example: true
recordValues:
type: array
items:
$ref: '#/components/schemas/RecordValue'
type: object
ReportingGroupUpdateInput:
properties:
name:
type: string
example: SubpartW
description:
type: string
example: my reporting group
priority:
type: number
description: default to 1
example: 2
FlowFacilityPrimaryFilterFieldsWithPrefix:
properties:
flow.facility.custom_attributes:
type: object
flow.facility.id:
type: string
flow.facility.name:
type: string
flow.facility.status:
type: string
type: object
FormSubmissionStatus:
type: string
enum:
- validated
- invalidated
- pending
- submitted
- draft
default: pending
PagedRecordFilterOutput:
allOf:
- $ref: '#/components/schemas/Pagination'
- properties:
data:
items:
$ref: '#/components/schemas/RecordFilterOutput'
type: array
type: object
InputRecordResult:
type: object
allOf:
- $ref: '#/components/schemas/RecordCreateInput'
- $ref: '#/components/schemas/AuditFields'
- properties:
id:
format: uuid
type: string
company_id:
format: uuid
type: string
record_value:
type: array
items:
$ref: '#/components/schemas/RecordValueWithCalculatorInputRecord'
asset:
$ref: '#/components/schemas/Asset'
reporting_group:
$ref: '#/components/schemas/ReportingGroup'
JobStatus:
type: string
enum:
- started
- finished
- failed
- partial
FilterMetadata:
properties:
metadata:
type: array
items:
type: object
example:
- key: calculator_configuration.year_month
isSelected: true
- key: flow.type
isSelected: false
JobItemStatusCounts:
type: object
properties:
success:
type: number
failed:
type: number
skipped:
type: number
ReportWithS3Url:
allOf:
- $ref: '#/components/schemas/ReportWithTemplatedReportResponse'
- properties:
s3_download_link:
type: string
type: object
RecordValuesOfRecordLockInput:
properties:
measurement_types:
type: array
items:
type: string
example: volume
description: measurement_types
status:
$ref: '#/components/schemas/RecordValueStatusType'
type: object
FlowPrimaryFilterFieldsWithPrefix:
properties:
flow.id:
type: string
flow.name:
type: string
flow.status:
$ref: '#/components/schemas/FlowStatus'
flow.type:
$ref: '#/components/schemas/FlowTypes'
flow.product_type:
$ref: '#/components/schemas/ProductTypes'
flow.product_category:
$ref: '#/components/schemas/ProductCategories'
flow.custom_attributes:
$ref: '#/components/schemas/CustomAttributes'
flow.associated_facility_id:
type: string
format: uuid
flow.associated_equipment_id:
type: string
format: uuid
type: object
RecordValueLockInput:
properties:
status:
$ref: '#/components/schemas/RecordValueStatusType'
type: object
RecordCreateInput:
properties:
asset_id:
format: uuid
type: string
description: Either asset_id or asset_filter is required
asset_filter:
description: Either asset_id or asset_filter is required
allOf:
- $ref: '#/components/schemas/FacilityPrimaryFilterFieldsWithPrefix'
- $ref: '#/components/schemas/EquipmentPrimaryFilterFieldsWithPrefix'
- $ref: '#/components/schemas/DevicePrimaryFilterFieldsWithPrefix'
- $ref: '#/components/schemas/FlowPrimaryFilterFieldsWithPrefix'
- $ref: '#/components/schemas/EquipmentFacilityPrimaryFilterFieldsWithPrefix'
- $ref: '#/components/schemas/FlowFacilityPrimaryFilterFieldsWithPrefix'
reporting_group_id:
type: string
year_month:
type: string
type: object
ReportingGroup:
allOf:
- $ref: '#/components/schemas/ReportingGroupInput'
- $ref: '#/components/schemas/AuditFields'
- properties:
company_id:
format: uuid
type: string
type: object
ProductTypes:
type: string
description: Use `id` value of any index in `GET /v1/product_types`
ManualRecordValueConfiguration:
properties:
configuration_type:
type: string
enum:
- manual
value:
type: number
type: object
RecordValueConfiguration:
allOf:
- oneOf:
- $ref: '#/components/schemas/ManualRecordValueConfiguration'
- $ref: '#/components/schemas/FormMeasurementRecordValueConfiguration'
- $ref: '#/components/schemas/CalculatorResultRecordValueConfiguration'
- $ref: '#/components/schemas/MeasurementSeriesRecordValueConfiguration'
- properties:
sources:
items:
type: object
type: array
readOnly: true
type: object
JobType:
type: string
enum:
- run_calculation
- apply_default_record_configuration
- apply_default_calculator_configuration
BulkResponseStatus:
type: string
enum:
- success
- failed
CustomAttributes:
example:
attribute1: 12345
attribute2: value1
type: object
RecordFilter:
properties:
filter:
$ref: '#/components/schemas/RecordFilterFields'
group_by:
type: array
items:
description: any field from filter param
type: string
example: year_month
type: object
ApplyDefaultRecordValueConfigurationRecordFilterInput:
allOf:
- properties:
filter:
$ref: '#/components/schemas/RecordFilterFields'
- $ref: '#/components/schemas/OverwriteAllValues'
InputRecordResults:
type: array
items:
$ref: '#/components/schemas/InputRecordResult'
Record:
allOf:
- $ref: '#/components/schemas/RecordCreateInput'
- $ref: '#/components/schemas/AuditFields'
- properties:
id:
format: uuid
type: string
asset_type:
$ref: '#/components/schemas/MeasurementSubjectEntityType'
company_id:
format: uuid
type: string
values:
type: array
items:
$ref: '#/components/schemas/RecordValue'
type: object
OverwriteAllValues:
properties:
overwrite_all_values:
type: boolean
default: false
DevicePrimaryFilterFieldsWithPrefix:
properties:
device.attributes:
type: object
device.custom_attributes:
type: object
device.id:
type: string
device.measurement_types:
type: string
device.name:
type: string
device.status:
type: string
device.type_id:
type: string
EquipmentFacilityPrimaryFilterFieldsWithPrefix:
properties:
equipment.facility.custom_attributes:
type: object
equipment.facility.id:
type: string
equipment.facility.name:
type: string
equipment.facility.status:
type: string
type: object
FlowTypes:
type: string
description: Use `id` value of any index in `GET /v1/flow_types`
FormSubmissionFilterOutput:
allOf:
- $ref: '#/components/schemas/FilterOutput'
- $ref: '#/components/schemas/FormSubmissionFilter'
type: object
CalculatorInputRecord:
properties:
estimation_method_id:
type: string
format: uuid
input_name:
type: string
year_month:
type: string
record_value_id:
# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/validere/refs/heads/main/openapi/validere-records-api-openapi.yml