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-form-submissions-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 Form Submissions API
version: 1.0.0
servers:
- url: https://api.validere.io
security:
- Staging: []
- Integration: []
- Local: []
tags:
- description: Form Submissions
name: form_submissions
paths:
/app/v1/form_submissions:
post:
operationId: create_form_submission
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FormSubmissionInput'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FormSubmissionWithAnswers'
description: A successful operation
summary: Create a form submission
tags:
- form_submissions
/app/v1/form_submissions/filters:
get:
operationId: get_form_submissions_filter
parameters:
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/SortBy'
- $ref: '#/components/parameters/SortDirection'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PagedFormSubmissionFilterOutput'
description: successful operation
summary: List Filter
tags:
- form_submissions
post:
operationId: post_form_submissions_filter
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FormSubmissionFilterInput'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FormSubmissionFilterOutput'
description: successful operation
summary: Create Filter
tags:
- form_submissions
/app/v1/form_submissions/filters/{filter_id}:
delete:
operationId: delete_form_submissions_filter
parameters:
- $ref: '#/components/parameters/FilterId'
responses:
'200':
description: successful operation
summary: Delete Filter
tags:
- form_submissions
put:
operationId: put_form_submissions_filter
parameters:
- $ref: '#/components/parameters/FilterId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FormSubmissionFilterUpdateInput'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FormSubmissionFilterOutput'
description: successful operation
summary: Update Filter
tags:
- form_submissions
/app/v1/form_submissions/search:
post:
operationId: search_form_submissions
parameters:
- $ref: '#/components/parameters/FormSubmissionAnswersQuery'
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Paginated'
- $ref: '#/components/schemas/FormSubmissionSort'
- $ref: '#/components/schemas/FormSubmissionFilter'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PagedFormSubmissionList'
description: successful operation
summary: Search form submissions
tags:
- form_submissions
/app/v1/form_submissions/search/form_schema/{form_schema_id}/{version}:
post:
deprecated: true
operationId: search_form_submissions_answers
parameters:
- $ref: '#/components/parameters/FormSchemaIdParam'
- $ref: '#/components/parameters/FormSchemaVersionParam'
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Paginated'
- $ref: '#/components/schemas/FormSubmissionAnswerSort'
- $ref: '#/components/schemas/FormSubmissionAnswerFilter'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PagedFormSubmissionAnswerList'
description: successful operation
summary: Search form submissions by answers
tags:
- form_submissions
/app/v1/form_submissions/search/form_schema/{form_schema_id}:
post:
operationId: search_form_submissions_answers
parameters:
- $ref: '#/components/parameters/FormSchemaIdParam'
- $ref: '#/components/parameters/FormSchemaVersionQuery'
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Paginated'
- $ref: '#/components/schemas/FormSubmissionAnswerSort'
- $ref: '#/components/schemas/FormSubmissionAnswerFilter'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PagedFormSubmissionAnswerList'
description: successful operation
summary: Search form submissions by answers
tags:
- form_submissions
/app/v1/form_submissions/export:
post:
operationId: export_form_submissions
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FormSubmissionFilter'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ReportWithS3Url'
description: successful operation
summary: Export Form Submissions for a specific Form Schema/ Template
tags:
- form_submissions
/app/v1/form_submissions/export_metadata/{form_schema_id}:
get:
operationId: export_form_metadata
parameters:
- $ref: '#/components/parameters/FormSchemaIdParam'
- $ref: '#/components/parameters/FormSchemaVersionQuery'
responses:
'200':
content:
application/json:
schema:
type: object
properties:
form_name:
type: string
properties:
$ref: '#/components/schemas/JsonSchema'
required:
type: array
items:
type: string
conditional:
type: array
items:
type: string
calculated:
type: array
items:
type: string
column_order:
type: array
items:
type: string
column_name_mappings:
type: object
properties:
additionalProperties:
type: object
properties:
sectionId:
type: string
questionId:
type: string
value:
type: string
description: successful operation
summary: Form metadata for imports and exports
tags:
- form_submissions
/app/v1/form_submissions/{id}:
get:
operationId: get_form_submission
parameters:
- $ref: '#/components/parameters/FormSubmissionId'
- $ref: '#/components/parameters/FormSubmissionVersionQuery'
responses:
'200':
content:
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
schema:
$ref: '#/components/schemas/XLSXResponse'
application/json:
schema:
$ref: '#/components/schemas/FormSubmissionWithAnswers'
description: A successful operation
summary: Get a form submission
tags:
- form_submissions
put:
operationId: update_form_submission
parameters:
- $ref: '#/components/parameters/FormSubmissionId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FormSubmissionUpdate'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FormSubmissionWithAnswers'
description: A successful operation
summary: Update a form submission
tags:
- form_submissions
post:
operationId: edit_form_submission
parameters:
- $ref: '#/components/parameters/FormSubmissionId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FormSubmissionEditInput'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FormSubmissionWithAnswers'
description: A successful operation
summary: Edit a form submission
tags:
- form_submissions
delete:
operationId: delete_form_submission
parameters:
- $ref: '#/components/parameters/FormSubmissionId'
- $ref: '#/components/parameters/FormSubmissionVersionQuery'
responses:
'200':
description: successful operation
summary: Delete a Form Submission
tags:
- form_submissions
components:
schemas:
TemplatedReportStatus:
type: string
enum:
- active
- archived
AttributeTypes:
type: string
enum:
- number
- string
- geo_point
- boolean
- integer
- pick-list
- multi-pick-list
- number-array
- lookup
- date
- date-time
- file
FormSchemaQuestionDefaultAnswer:
description: default answer to this question. For reference only, the actual answer still needs to be submitted with the form submission.
anyOf:
- type: string
- type: number
- type: boolean
- type: array
items:
anyOf:
- type: string
- type: number
- $ref: '#/components/schemas/FormSchemaQuestionDefaultSourcingAnswer'
example: 123
DevicePrimaryFilterFields:
properties:
attributes:
type: object
custom_attributes:
type: object
id:
type: string
measurement_types:
type: string
name:
type: string
status:
type: string
type_id:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
FormSchema:
properties:
company_id:
format: uuid
type: string
config:
$ref: '#/components/schemas/FormSchemaConfig'
created_at:
format: date-time
type: string
created_by:
format: uuid
type: string
description:
maxLength: 1024
type: string
form_submission_editable:
type: boolean
form_category_id:
format: uuid
type: string
id:
format: uuid
type: string
name:
maxLength: 100
type: string
status:
enum:
- active
- archived
- draft
type: string
updated_at:
format: date-time
type: string
version:
default: 1
type: integer
type: object
FormSubmissionEditInput:
allOf:
- $ref: '#/components/schemas/FormSubmissionAnswers'
- properties:
status:
$ref: '#/components/schemas/FormSubmissionStatus'
event_id:
description: the event id that this form will be associated with
format: uuid
type: string
workflow_task_id:
description: the workflow task id that this form will be associated with
format: uuid
type: string
retrigger_workflow:
description: whether the edited form submission should retrigger associated worfklows
type: boolean
default: false
required:
- answers
type: object
XLSXResponse:
format: binary
type: string
PagedFormSubmissionFilterOutput:
allOf:
- $ref: '#/components/schemas/Pagination'
- properties:
data:
items:
$ref: '#/components/schemas/FormSubmissionFilterOutput'
type: array
type: object
EquipmentStatus:
type: string
enum:
- active
- inactive
- deprecated
FormSubmissionValue:
anyOf:
- type: string
- type: number
- type: boolean
- type: array
items:
anyOf:
- type: string
- type: number
example: 123
FacilityFilterFields:
description: A filter object for facility 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.
example:
custom_attributes.hint: View schema for all supported fields
custom_attributes.operator: bob
name:
$like: wind
properties:
custom_attributes:
type: object
id:
type: string
name:
type: string
status:
type: string
event.id:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
type: object
MeasurementSubjectEntityType:
type: string
enum:
- equipment
- device
- facility
- flow
- asset_group
FormSubmissionWithPivotAnswers:
properties:
company_id:
format: uuid
type: string
created_by:
format: uuid
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
form_schema_id:
format: uuid
type: string
form_schema_version:
type: number
id:
format: uuid
type: string
status:
$ref: '#/components/schemas/FormSubmissionStatus'
submissionId:questionId:
type: string
type: object
EquipmentFilterFields:
allOf:
- $ref: '#/components/schemas/EquipmentPrimaryFilterFields'
- $ref: '#/components/schemas/FacilityPrimaryFilterFieldsWithPrefix'
- properties:
event.id:
type: string
type: object
FormSubmissionFilterUpdateInput:
allOf:
- $ref: '#/components/schemas/FilterInput'
- $ref: '#/components/schemas/FormSubmissionFilter'
FilterName:
properties:
name:
type: string
example: My first filter
FormSchemaConfig:
properties:
questions:
additionalProperties:
anyOf:
- $ref: '#/components/schemas/FormSchemaQuestion'
- $ref: '#/components/schemas/FormSchemaMeasurement'
example:
questionId1:
description: Look at gauge
subject_lookup_question_id: lookupQuestionId
source_lookup_question_id: deviceQuestion
measurement_time_question_id: measurementTimeQuestion
is_required: false
measurement_type: temperature
measurement_unit: degrees Celsius
prompt: Input measurement 1
type: measurement
default_answer: 40
minimum: 1
maximum: 100
questionId2:
data_type: string
description: Is gauge working?
is_required: false
prompt: Input question 1
type: question
min_length: 1
max_length: 100
questionId3:
data_type: string
description: Description of the problem
is_required: false
prompt: Question 2
type: question
is_long_string: true
questionIdBoolean:
data_type: boolean
description: Input question Boolean
is_required: false
prompt: Input question Boolean
type: question
facilityLookupQuestionId:
data_type: lookup
description: Facility
is_required: false
lookup_entity_type: facility
prompt: Facility checked
type: question
lookupQuestionId:
data_type: lookup
description: Equipment that has the temperature sensor
is_required: false
lookup_entity_type: equipment
prompt: Equipment checked
parent_facility_question_id: facilityLookupQuestionId
filter:
name:
$like: AB123
type: question
conditions:
$or:
- questionId1:
$gt: 5
questionId2: 10
- questionId3: 1
deviceQuestion:
data_type: lookup
description: Device that monitors temperature
is_required: false
lookup_entity_type: device
prompt: Gauge that was read
type: question
conditions:
questionIdBoolean: true
measurementTimeQuestion:
data_type: date-time
description: Time the temperature sensor was read
is_required: false
prompt: Measurement Time
type: question
default_answer: $now
before: '2024-01-01'
after: $now
note:
data_type: string
description: note
is_required: false
prompt: note
type: question
default_answer:
lookup_question_id: facilityLookupQuestionId
lookup_attribute: area
fileUploadQuestion:
data_type: file
description: File
is_required: false
prompt: File
type: question
type: object
sections:
items:
properties:
description:
maxLength: 256
type: string
id:
type: string
name:
maxLength: 100
type: string
description: Should not start with a number
is_repeatable:
type: boolean
default: false
questions:
example:
- questionId1
- questionId2
- facilityLookupQuestionId
- lookupQuestionId
- deviceQuestion
- measurementTimeQuestion
items:
type: string
type: array
required:
- description
- id
- name
- questions
type: array
type: object
FormSubmissionStatus:
type: string
enum:
- validated
- invalidated
- pending
- submitted
- draft
default: pending
CompanyId:
properties:
id:
format: uuid
type: string
FilterInput:
allOf:
- $ref: '#/components/schemas/FilterName'
- $ref: '#/components/schemas/FilterStatus'
- $ref: '#/components/schemas/FilterTag'
- $ref: '#/components/schemas/FilterMetadata'
PagedFormSubmissionList:
allOf:
- $ref: '#/components/schemas/Pagination'
- properties:
data:
items:
oneOf:
- $ref: '#/components/schemas/FormSubmissionWithoutAnswers'
- $ref: '#/components/schemas/FormSubmissionWithAnswers'
type: array
type: object
FormSubmissionFilterInput:
allOf:
- $ref: '#/components/schemas/FilterInput'
- $ref: '#/components/schemas/FormSubmissionFilter'
FilterId:
properties:
id:
format: uuid
type: string
FilterMetadata:
properties:
metadata:
type: array
items:
type: object
example:
- key: calculator_configuration.year_month
isSelected: true
- key: flow.type
isSelected: false
JsonSchemaTypes:
type:
- string
- 'null'
enum:
- boolean
- number
- integer
- string
- object
- array
PagedFormSubmissionAnswerList:
allOf:
- $ref: '#/components/schemas/Pagination'
- properties:
data:
items:
oneOf:
- $ref: '#/components/schemas/FormSubmissionWithPivotAnswers'
type: array
type: object
FormSubmissionWithAnswers:
allOf:
- $ref: '#/components/schemas/FormSubmissionWithoutAnswers'
- $ref: '#/components/schemas/FormSubmissionAnswers'
- properties:
form_schema:
$ref: '#/components/schemas/FormSchema'
FormSubmissionSectionAnswer:
additionalProperties:
$ref: '#/components/schemas/FormSubmissionAnswer'
type: object
FormSubmissionInput:
allOf:
- $ref: '#/components/schemas/FormSubmissionAnswers'
- properties:
form_schema_id:
format: uuid
type: string
form_schema_version:
type: integer
status:
$ref: '#/components/schemas/FormSubmissionStatus'
event_id:
description: the event id that this form will be associated with
format: uuid
type: string
workflow_task_id:
description: the workflow task id that this form will be associated with
format: uuid
type: string
required:
- answers
- form_schema_id
type: object
FormSubmissionAnswerSort:
type: object
properties:
sort_by:
enum:
- id
- status
- created_by
- created_at
- updated_at
- sectionId:questionId
default: created_at
type: string
sort_direction:
default: asc
description: sort direction
enum:
- asc
- desc
example: asc
type: string
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
FormSubmissionSort:
properties:
sort_by:
enum:
- created_at
- status
- answer
default: created_at
type: string
sort_direction:
default: asc
description: sort direction
enum:
- asc
- desc
example: asc
type: string
ReportWithS3Url:
allOf:
- $ref: '#/components/schemas/ReportWithTemplatedReportResponse'
- properties:
s3_download_link:
type: string
type: object
FormSubmissionFilterOutput:
allOf:
- $ref: '#/components/schemas/FilterOutput'
- $ref: '#/components/schemas/FormSubmissionFilter'
type: object
FormSchemaQuestionConditions:
description: configure the conditional question for current question. The syntax will take inspiration from existing filtering object.
example:
questionId1:
$gt: 5
type: object
FormSchemaQuestionDefaultSourcingAnswer:
type: object
properties:
lookup_question_id:
type: string
lookup_attribute:
type: string
FormSubmissionWithoutAnswers:
properties:
company_id:
format: uuid
type: string
created_by:
format: uuid
type: string
form_schema_id:
format: uuid
type: string
form_schema_version:
type: number
id:
format: uuid
type: string
status:
$ref: '#/components/schemas/FormSubmissionStatus'
type: object
FormLookupQuestionFilterFields:
oneOf:
- $ref: '#/components/schemas/FacilityFilterFields'
- $ref: '#/components/schemas/EquipmentFilterFields'
- $ref: '#/components/schemas/DeviceFilterFields'
ReportWithTemplatedReportResponse:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
minLength: 3
maxLength: 128
company_id:
type: string
format: uuid
status:
type: string
enum:
- exporting
- failed
- success
templated_report_name:
type: string
input:
type: object
additionalProperties: {}
description: User input for a templated report based on the input schema for the desired templated report.
example:
year_month: 202201
reporting_group_id: bc37cb31-08ce-4b22-8f4c-7d44692a4ef2
asset_id: 89c100dc-0401-447f-a9f5-72ae124f3244
s3_object_id:
type: string
report_version:
type: string
created_at:
anyOf:
- type: string
format: date-time
- type:
- string
- 'null'
- {}
updated_at:
anyOf:
- type: string
format: date-time
- type:
- string
- 'null'
- {}
created_by:
type: string
format: uuid
updated_by:
type: string
format: uuid
templated_report:
type: object
properties:
name:
type: string
minLength: 3
maxLength: 64
pattern: ^\w+$
display_name:
type: string
minLength: 3
maxLength: 64
status:
type: string
enum:
- active
- archived
default: active
input_schema:
type: object
additionalProperties:
type: object
properties:
display_name:
type: string
minLength: 3
maxLength: 64
data_type:
type: string
enum:
- boolean
- number
- integer
- pick-list
- multi-pick-list
- string
- geo_point
- number-array
- lookup
- date
- date-time
- date-time-range
- file
description:
type: string
maxLength: 256
is_required:
type: boolean
lookup_entity_type:
type: string
enum:
- equipment
- device
- facility
- flow
- asset_group
- form_schema
lookup_entity_attribute:
type: string
pick_list_values:
type: array
items:
type: string
order:
type: integer
required:
- display_name
- data_type
- description
- is_required
additionalProperties: false
default: {}
is_embedded:
type: boolean
default: false
use_data_layer_v2:
type: boolean
default: false
description:
type: string
maxLength: 256
deduplication_columns:
type: object
additionalProperties:
type: array
items:
type: string
minLength: 3
maxLength: 64
pattern: ^[A-Za-z0-9_]+$
maxItems: 20
row_styling_headers:
type: object
additionalProperties:
type: string
minLength: 3
maxLength: 64
pattern: ^[A-Za-z0-9_]+$
created_at:
anyOf:
- type: string
format: date-time
- type:
- string
- 'null'
- {}
updated_at:
anyOf:
- type: string
format: date-time
- type:
- string
- 'null'
- {}
required:
- name
- display_name
- created_at
- updated_at
s3_download_link:
type: string
required:
- id
- name
- company_id
- status
- created_at
- updated_at
- created_by
- updated_by
additionalProperties: false
FormSubmis
# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/validere/refs/heads/main/openapi/validere-form-submissions-api-openapi.yml