components:
parameters:
LanguageQueryParam:
description: |
Choose language in which the response should be displayed.
- 'en' for English
- 'de' for German
- 'fr' for French
in: query
name: language
schema:
enum:
- en
- de
- fr
type: string
schemas:
AIConversationThread:
properties:
summary:
description: Summary of the first prompt.
type: string
thread_id:
description: Unique id of conversation thread.
type: string
updated_at:
description: The last updated date of the conversation thread.
format: date-time
type: string
type: object
AIConversationThreads:
properties:
items:
items:
$ref: '#/components/schemas/AIConversationThread'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
Activity:
properties:
action:
type: string
message:
type: string
return_code:
format: int32
type: integer
time:
format: date-time
type: string
required:
- time
- return_code
- action
- message
type: object
Alert:
properties:
alarm_dashboard:
type: boolean
alert_type:
type: string
attributes:
type: string
created:
format: date-time
type: string
dataPointID:
type: string
delay:
description: |
Debounce duration the condition must hold before the alarm fires (e.g.
'5m'). Only present for threshold and discrete alerts with a delay configured.
type: string
description:
type: string
email:
format: email
type: string
id:
format: int64
type: integer
level:
description: The severity a discrete alert fires at. Only set for discrete
alerts.
type: string
name:
type: string
negate:
description: |
Whether a discrete alert fires while the value is NOT one of its
values. Only set for discrete alerts.
type: boolean
period:
description: Throughput measurement period as a duration string (e.g. '2h').
Only set for throughput alerts.
type: string
project_id:
format: int64
type: integer
repeat:
description: |
Re-notification interval as a duration string (e.g.
'2h'), or 'never' (notify only on level changes).
type: string
status:
type: string
teams_webhook:
description: Comma-separated MS Teams webhook URLs configured for this alert.
type: string
telegram_chatid:
type: string
threshold_crit:
type: number
threshold_crit_reset:
type: number
threshold_dead:
type: number
threshold_info:
type: number
threshold_info_reset:
type: number
threshold_ok:
type: number
threshold_order:
enum:
- asc
- desc
type: string
threshold_warn:
type: number
threshold_warn_reset:
type: number
timezone:
description: IANA timezone used to render this alert's notification timestamps.
type: string
updated:
format: date-time
type: string
values:
description: The discrete values the alert fires on. Only set for discrete
alerts.
items:
type: number
type: array
required:
- id
- name
- description
- project_id
- created
- alert_type
- status
type: object
AlertNotification:
additionalProperties: false
description: Notification channels for an alert. Each channel is optional.
properties:
dashboard:
$ref: '#/components/schemas/DashboardNotificationPoint'
nullable: true
email:
$ref: '#/components/schemas/EmailNotificationPoint'
nullable: true
ms_teams:
$ref: '#/components/schemas/MSTeamsNotificationPoint'
nullable: true
telegram:
$ref: '#/components/schemas/TelegramNotificationPoint'
nullable: true
type: object
AlertThresholds:
additionalProperties: false
description: |
Trigger and reset thresholds per severity. At least one of 'info', 'warn', or 'crit' must
be provided; omitted levels are not evaluated. The 'order' (ascending/descending) is
inferred from the values when two or more levels are given (and validated if also supplied),
and is REQUIRED when only a single level is configured, since one value cannot determine the
direction. 'asc' fires when the value rises to/above a level; 'desc' fires when it falls
to/below. Reset values default to their trigger value when omitted.
properties:
crit:
nullable: true
type: number
crit_reset:
nullable: true
type: number
info:
nullable: true
type: number
info_reset:
nullable: true
type: number
order:
description: |
Alarm direction. Optional when >=2 levels are configured (inferred from the values);
required when exactly one level is configured.
enum:
- asc
- desc
type: string
warn:
nullable: true
type: number
warn_reset:
nullable: true
type: number
type: object
AnalysisFunction:
properties:
alphanumeric_id:
type: string
attributes:
items:
$ref: '#/components/schemas/ComponentAttributeDefinition'
type: array
execution_schedule:
type: string
id:
format: int64
type: integer
kpis:
items:
type: string
type: array
name:
type: string
nameDE:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
nameEN:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
pins:
items:
$ref: '#/components/schemas/Pin'
type: array
required:
- id
- alphanumeric_id
- nameEN
- nameDE
- kpis
type: object
AnalysisFunctionShort:
properties:
alphanumeric_id:
type: string
id:
format: int64
type: integer
name:
type: string
required:
- id
- alphanumeric_id
- name
type: object
AnalysisResult:
properties:
alphanumeric_id:
type: string
analytics_version:
type: string
display_name:
type: string
end:
format: date-time
type: string
function_name:
type: string
info:
items:
type: string
type: array
instance_id:
type: integer
interpretation:
type: string
kpi:
items:
$ref: '#/components/schemas/KPIResult'
type: array
plots:
items:
$ref: '#/components/schemas/PlotsResult'
type: array
project_id:
type: integer
recommendation:
items:
type: string
type: array
signal_color:
enum:
- green
- yellow
- red
type: string
start:
format: date-time
type: string
status:
type: string
summary_kpi:
$ref: '#/components/schemas/SummaryKPIResult'
timeseries:
items:
$ref: '#/components/schemas/TimeseriesResult'
type: array
type: object
AnalysisResultReferences:
properties:
result_ids:
description: List of created result reference IDs.
items:
format: uuid
type: string
type: array
type: object
AnalysisResultShort:
properties:
function_id:
type: integer
id:
type: string
instance_id:
type: integer
interpretation:
type: string
signal_color:
enum:
- green
- grey
- yellow
- red
type: string
required:
- id
- instance_id
- function_id
type: object
AnalysisResultStatistics:
properties:
count:
description: Number of analysis results with this signal color.
type: integer
signal_color:
description: The signal color of the analysis results.
type: string
type: object
AnalysisResultSummary:
properties:
input_parameters:
type: object
interpretation:
type: string
result_id:
type: string
savings_potential_kpis:
items:
$ref: '#/components/schemas/KPIResult'
type: array
signal_color:
type: string
status:
type: string
type: object
AnalysisResultsOverview:
properties:
analyses:
$ref: '#/components/schemas/SignalColorCountOverview'
components_in_project_count:
type: integer
required:
- components_in_project_count
- analyses
type: object
AnalysisSavings:
properties:
analysis_function:
$ref: '#/components/schemas/AnalysisFunctionShort'
savings:
items:
$ref: '#/components/schemas/Saving'
type: array
type: object
AnalyticsInstancesRunResponse:
properties:
instance_ids_not_found:
description: List of instance IDs that were not found.
items:
format: int64
type: integer
type: array
result_ids:
description: List of created result reference IDs.
items:
format: uuid
type: string
type: array
type: object
AnalyticsOverview:
properties:
items:
items:
$ref: '#/components/schemas/AnalyticsOverviewItem'
type: array
overview:
$ref: '#/components/schemas/AnalysisResultsOverview'
required:
- overview
- items
type: object
AnalyticsOverviewItem:
properties:
analyses:
$ref: '#/components/schemas/SignalColorCountOverview'
component:
$ref: '#/components/schemas/ComponentWithContext'
required:
- component
- analyses
type: object
AnalyticsResultsForComponent:
properties:
component_in_project:
$ref: '#/components/schemas/ComponentInProjectWithContext'
result_ids:
items:
$ref: '#/components/schemas/AnalyticsResultsForComponentResultIds'
type: array
signal_color:
type: string
type: object
AnalyticsResultsForComponentResultIds:
properties:
alphanumeric_id:
type: string
analysis_function_id:
type: integer
analytics_version:
type: string
display_name:
type: string
end:
format: date-time
type: string
function_name:
type: string
instance_id:
format: int64
type: integer
interpretation:
type: string
result_id:
type: string
signal_color:
type: string
start:
format: date-time
type: string
summary_kpi:
$ref: '#/components/schemas/SummaryKPIResult'
type: object
AnalyticsResultsForComponents:
properties:
items:
items:
$ref: '#/components/schemas/ComponentWithResults'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
ApiDetails:
properties:
api_version:
type: string
uptime:
type: string
type: object
AssignedPin:
properties:
alphanumeric_id:
type: string
dataPointID:
type: string
datapoint_hash_id:
type: string
description:
type: string
description_de:
deprecated: true
description: 'Deprecated: use the localized ''description'' field instead.'
type: string
description_en:
deprecated: true
description: 'Deprecated: use the localized ''description'' field instead.'
type: string
id:
format: int64
type: integer
location:
type: string
name:
type: string
nameDE:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
nameEN:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
pin_attributes:
items:
$ref: '#/components/schemas/PinAttribute'
type: array
unit_type:
type: string
type: object
AttributeErrorModel:
properties:
alphanumeric_id:
type: string
error:
type: string
required:
- alphanumeric_id
- error
type: object
Chat:
properties:
prompt:
$ref: '#/components/schemas/ChatPrompt'
description: The user's prompt
response:
$ref: '#/components/schemas/ChatResponse'
description: The AI's response to the prompt.
required:
- prompt
type: object
ChatHistory:
properties:
chats:
description: The list of chats in a thread
items:
$ref: '#/components/schemas/Chat'
type: array
required:
- chats
type: object
ChatPrompt:
properties:
context:
description: The user context.
nullable: true
type: string
message:
description: The user's prompt
type: string
metadata:
additionalProperties:
type: string
description: Key-value metadata providing structured context.
nullable: true
type: object
required:
- message
type: object
ChatRequest:
properties:
context:
description: Free-text description of the current user context.
nullable: true
type: string
message:
description: The user's input message.
type: string
metadata:
additionalProperties:
type: string
description: |
Key-value metadata providing structured context.
Setting `feature` to `task-description-translate` or `task-description-improve` marks the request as an ephemeral one-shot call that is not persisted.
type: object
required:
- message
- metadata
type: object
ChatResponse:
properties:
message:
description: Response from the AI agent.
type: string
sources:
description: Sources used to create the response.
items:
$ref: '#/components/schemas/Source'
type: array
timestamp:
description: Timestamp of the response.
format: date-time
type: string
required:
- message
- sources
type: object
Company:
properties:
address:
type: string
avatar_url:
type: string
description:
type: string
id:
format: int64
type: integer
name:
type: string
phone:
type: string
roles:
items:
properties:
description:
type: string
id:
type: integer
name:
type: string
type: object
type: array
whitelabel:
type: boolean
required:
- name
type: object
CompanyProjectResponse:
properties:
project:
$ref: '#/components/schemas/Project'
role:
$ref: '#/components/schemas/Role'
required:
- project
- role
type: object
CompanyReference:
properties:
id:
format: int64
type: integer
required:
- id
type: object
CompanyRole:
properties:
authed_endpoints:
items:
format: int64
type: integer
type: array
company_id:
format: int64
type: integer
description:
type: string
id:
format: int64
type: integer
name:
type: string
type: object
CompanyWithContext:
properties:
company:
$ref: '#/components/schemas/Company'
projects:
items:
properties:
account_manager:
$ref: '#/components/schemas/ShortUser'
description: Account manager assigned to this project
address:
type: string
asset_manager:
$ref: '#/components/schemas/ShortUser'
description: Asset manager assigned to this project
avatar_url:
type: string
description:
type: string
id:
type: integer
name:
type: string
project_engineer:
$ref: '#/components/schemas/ShortUser'
description: Project engineer assigned to this project
roles:
items:
properties:
description:
type: string
id:
type: integer
name:
type: string
type: object
type: array
start:
format: date-time
type: string
status_report:
type: string
status_report_updated_at:
format: date-time
type: string
required:
- name
type: object
type: array
users:
items:
properties:
avatar_url:
type: string
company_id:
type: integer
company_roles:
items:
type: integer
type: array
email:
format: email
type: string
firstName:
type: string
id:
type: integer
lastName:
type: string
phone:
type: string
project_roles:
items:
type: integer
type: array
type: object
type: array
type: object
Component:
properties:
alphanumeric_id:
type: string
category:
$ref: '#/components/schemas/ComponentCategory'
id:
format: int64
type: integer
name:
type: string
nameDE:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
nameEN:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
private:
type: boolean
type: object
ComponentAttributeDefinition:
properties:
alphanumeric_id:
type: string
default_unit:
type: string
default_value:
type: string
description:
type: string
description_de:
deprecated: true
description: 'Deprecated: use the localized ''description'' field instead.'
type: string
description_en:
deprecated: true
description: 'Deprecated: use the localized ''description'' field instead.'
type: string
id:
format: int64
type: integer
key:
type: string
limits:
properties:
max:
format: float
type: number
min:
format: float
type: number
type: object
name:
type: string
nameDE:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
nameEN:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
unit_type:
type: string
value_options:
items:
$ref: '#/components/schemas/EnumValue'
type: array
value_type:
type: string
type: object
ComponentCategory:
properties:
description:
type: string
description_de:
deprecated: true
description: 'Deprecated: use the localized ''description'' field instead.'
type: string
description_en:
deprecated: true
description: 'Deprecated: use the localized ''description'' field instead.'
type: string
key:
type: string
name:
type: string
nameDE:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
nameEN:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
type: object
ComponentControlsApp:
properties:
algorithm:
type: string
attributes:
items:
type: string
type: array
id:
format: uuid
type: string
pins:
items:
type: string
type: array
status:
$ref: '#/components/schemas/ControlsAppStatus'
variation:
deprecated: true
description: 'Deprecated: use ''variation_meta.key'' instead.'
type: string
variation_meta:
$ref: '#/components/schemas/ControlsAppVariation'
required:
- id
- algorithm
- status
type: object
ComponentInProject:
properties:
abbreviation:
type: string
component_id:
format: int64
type: integer
id:
format: int64
type: integer
name:
type: string
nameDE:
deprecated: true
description: 'Deprecated: use ''name'' instead.'
type: string
nameEN:
deprecated: true
description: 'Deprecated: use ''name'' instead.'
type: string
project_id:
format: int64
type: integer
type: object
ComponentInProjectAttribute:
properties:
alphanumeric_id:
type: string
id:
format: int64
type: integer
key:
type: string
source:
type: string
unit:
type: string
value:
type: string
type: object
ComponentInProjectHolidays:
properties:
component:
$ref: '#/components/schemas/ComponentInProject'
holidays:
$ref: '#/components/schemas/Holiday'
required:
- component
type: object
ComponentInProjectKPIAggregations:
properties:
component_in_project:
$ref: '#/components/schemas/ComponentInProjectWithContext'
kpi_aggregations:
items:
$ref: '#/components/schemas/KPIAggregationItem'
type: array
required:
- component_in_project
- kpi_aggregations
type: object
ComponentInProjectRelation:
properties:
id:
format: int64
type: integer
relationship:
enum:
- hasLocation
- hasPart
- feeds
type: string
source_componentinproject_id:
format: int64
type: integer
target_componentinproject_id:
format: int64
type: integer
type: object
ComponentInProjectWithContext:
properties:
abbreviation:
type: string
attributes:
items:
$ref: '#/components/schemas/ComponentInProjectAttribute'
type: array
attributes_definitions:
items:
$ref: '#/components/schemas/ComponentAttributeDefinition'
type: array
component:
$ref: '#/components/schemas/Component'
controls_apps:
items:
$ref: '#/components/schemas/ComponentControlsApp'
type: array
display_name:
type: string
id:
format: int64
type: integer
name:
type: string
nameDE:
deprecated: true
description: 'Deprecated: use ''name'' instead.'
type: string
nameEN:
deprecated: true
description: 'Deprecated: use ''name'' instead.'
type: string
pins:
items:
$ref: '#/components/schemas/AssignedPin'
type: array
project_id:
format: int64
type: integer
relationships:
items:
$ref: '#/components/schemas/ComponentInProjectRelation'
type: array
tags:
items:
$ref: '#/components/schemas/Tag'
type: array
type: object
ComponentSavings:
properties:
analysis_savings:
items:
$ref: '#/components/schemas/AnalysisSavings'
type: array
component:
$ref: '#/components/schemas/Component'
component_in_project:
$ref: '#/components/schemas/ComponentInProject'
required:
- component_in_project
- component
- analysis_savings
type: object
ComponentSchedule:
properties:
combined:
items:
$ref: '#/components/schemas/Schedule'
type: array
custom:
items:
$ref: '#/components/schemas/Schedule'
type: array
default:
items:
$ref: '#/components/schemas/Schedule'
type: array
holiday:
items:
$ref: '#/components/schemas/Schedule'
type: array
type: object
ComponentWithContext:
properties:
alphanumeric_id:
type: string
components_in_project_count:
type: integer
id:
format: int64
type: integer
name:
type: string
nameDE:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
nameEN:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
required:
- id
- alphanumeric_id
- nameEN
- nameDE
- name
- components_in_project_count
type: object
ComponentWithResults:
properties:
componentinproject_id:
format: int64
type: integer
display_name:
type: string
display_name_DE:
deprecated: true
description: 'Deprecated: use the localized ''display_name'' field instead.'
type: string
signal_color:
type: string
type: object
ComponentsInProject:
properties:
items:
items:
$ref: '#/components/schemas/ComponentInProject'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
ComponentsKPIAggregationResult:
properties:
aggregated_kpis_overview:
items:
$ref: '#/components/schemas/KPIResult'
type: array
items:
items:
$ref: '#/components/schemas/ComponentInProjectKPIAggregations'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
required:
- aggregated_kpis_overview
- items
- meta
type: object
ControlsAlgorithm:
properties:
counts:
$ref: '#/components/schemas/ControlsAlgorithmCounts'
description:
description: Translated description of the controls algorithm.
type: string
key:
description: The key identifier of the controls algorithm.
type: string
labels:
items:
$ref: '#/components/schemas/ControlsAlgorithmLabel'
type: array
name:
description: Translated name of the controls algorithm.
type: string
short_code:
description: Short abbreviated name of the controls algorithm.
type: string
required:
- key
- name
- description
- short_code
- counts
- labels
type: object
ControlsAlgorithmCounts:
properties:
active:
description: Number of active apps in the project with the grouped algorithm.
type: integer
inactive:
description: Number of inactive apps in the project with the grouped algorithm.
type: integer
required:
- active
- inactive
type: object
ControlsAlgorithmLabel:
properties:
id:
description: Label identifier.
enum:
- dynamics
type: string
name:
description: Translated label name.
type: string
required:
- id
- name
type: object
ControlsApp:
properties:
algorithm:
type: string
component_in_project:
$ref: '#/components/schemas/ComponentInProject'
config:
type: object
description:
type: string
id:
format: uuid
type: string
logs:
items:
type: object
type: array
name:
type: string
pins:
properties:
input:
items:
$ref: '#/components/schemas/ControlsAppPin'
type: array
output:
items:
$ref: '#/components/schemas/ControlsAppPin'
type: array
type: object
revision:
type: string
status:
$ref: '#/components/schemas/ControlsAppStatus'
update_available:
type: boolean
variation:
deprecated: true
description: 'Deprecated: use ''variation_meta.key'' instead.'
type: string
variation_meta:
$ref: '#/components/schemas/ControlsAppVariation'
required:
- id
- algorithm
- status
- name
- description
- update_available
- logs
type: object
ControlsAppEventStream:
properties:
add_initializer:
default: true
type: boolean
emit_always:
default: false
type: boolean
emit_on_start_up:
default: false
type: boolean
event_type:
default: ObservationEvent
enum:
- ObservationEvent
- SetpointEvent
type: string
output:
$ref: '#/components/schemas/EventStreamOutputDatapoint'
parameters:
type: object
pins:
type: object
start_up_delay:
format: float
type: number
timestamp:
default: create
enum:
- create
- consume
- ingest
- now
- untimed
type: string
type:
enum:
- absolute_air_humidity
- ara
- bee
- counter
- deviation
- formula
- frog_mode
- frog_supply_air_temperature
- gradient
- heating_curve
- hero
- orc
- schedule
- sequence
type: string
required:
- type
- output
type: object
ControlsAppList:
properties:
items:
items:
$ref: '#/components/schemas/ControlsAppShort'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
required:
- items
- meta
type: object
ControlsAppPin:
properties:
dataPointID:
type: string
datapoint_hash_id:
type: string
name:
type: string
nameDE:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
nameEN:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
pin_alphanumeric_id:
type: string
type: object
ControlsAppShort:
properties:
algorithm:
type: string
component_in_project:
$ref: '#/components/schemas/ComponentInProject'
id:
format: uuid
type: string
name:
type: string
revision:
type: string
status:
$ref: '#/components/schemas/ControlsAppStatus'
update_available:
type: boolean
variation:
deprecated: true
description: 'Deprecated: use ''variation_meta.key'' instead.'
type: string
variation_meta:
$ref: '#/components/schemas/ControlsAppVariation'
required:
- id
- algorithm
- status
- name
- update_available
type: object
ControlsAppStatus:
properties:
code:
type: integer
message:
type: string
name:
description: Stable, language-independent short key for the status, e.g.
'running' or 'died'.
type: string
type:
description: Classification of the status.
enum:
- normal
- error
- pending
- ready
type: string
required:
- code
- message
type: object
ControlsAppUpdateResult:
properties:
affected:
type: boolean
controls_app_id:
format: uuid
type: string
status:
$ref: '#/components/schemas/ControlsAppStatus'
required:
- controls_app_id
- status
- affected
type: object
ControlsAppVariation:
properties:
description:
description: Description of the controls app algorithm variation.
type: string
key:
description: Stable, language-independent short key for the variation, e.g.,
'hero' or 'hero_dryrun'.
type: string
name:
description: Human-readable name of the variation, e.g., 'Dry run'.
type: string
required:
- key
- name
- description
type: object
ControlsAppsSummary:
properties:
controls_algorithms:
description: List of controls algorithms.
items:
$ref: '#/components/schemas/ControlsAlgorithm'
type: array
required:
- controls_algorithms
type: object
ControlsStatistics:
properties:
status:
description: The controls status of the project.
enum:
- active
- inactive
- potential
- not available
- unknown
type: string
required:
- status
type: object
Conversation:
properties:
entries:
description: List of conversation entry.
items:
$ref: '#/components/schemas/ConversationEntry'
type: array
id:
description: id of the conversation entry.
format: uuid
type: string
meta:
$ref: '#/components/schemas/PaginationMeta'
project_id:
description: Conversation related project id.
type: integer
required:
- id
- project_id
type: object
ConversationEntry:
properties:
content:
description: Conversation entry content.
type: string
id:
description: id of the conversation entry.
format: uuid
type: string
rating:
description: Conversation entry rating.
type: string
sources:
description: Source of conversation entry.
items:
$ref: '#/components/schemas/ConversationSource'
type: array
timestamp:
description: Conversation entry create timestamp.
format: date-time
type: string
type:
description: Type of conversation entry.
enum:
- human
- ai
type: string
required:
- id
- type
- content
- sources
- timestamp
type: object
ConversationList:
properties:
items:
items:
properties:
entry:
$ref: '#/components/schemas/ConversationEntry'
description: a conversation entry.
id:
format: uuid
type: string
project_id:
description: Conversation related project id.
type: integer
required:
- project_id
- id
- entry
type: object
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
ConversationSource:
properties:
content:
description: Source content.
type: string
name:
description: Source name.
type: string
url:
description: Source url.
type: string
required:
- name
- url
- content
type: object
CustomPage:
properties:
id:
type: integer
title:
type: string
url:
type: string
type: object
DashboardNotificationPoint:
additionalProperties: false
properties:
enabled:
type: boolean
type: object
DataPoint:
properties:
dataPointID:
type: string
hash_id:
type: string
id:
type: integer
project_id:
format: int64
type: integer
setpoint_max_value:
type: number
setpoint_min_value:
type: number
writable:
type: boolean
required:
- dataPointID
- project_id
type: object
DataPointKey:
properties:
description:
type: string
id:
type: integer
name:
type: string
project_id:
type: integer
type: object
DataPointWithContext:
properties:
dataPointID:
type: string
favorite:
type: boolean
hash_id:
type: string
id:
type: integer
renamings:
items:
$ref: '#/components/schemas/Renaming'
type: array
setpoint_max_value:
type: number
setpoint_min_value:
type: number
tags:
items:
$ref: '#/components/schemas/TagAssociation'
type: array
writable:
type: boolean
type: object
DataPointWithTags:
properties:
dataPointID:
type: string
tags:
items:
$ref: '#/components/schemas/TagAssociation'
type: array
type: object
DatapointWithScore:
properties:
dataPointID:
type: string
score:
type: number
type: object
DeleteProjectDatapointsRequest:
example:
- dataPointID1
- dataPointID2
items:
type: string
type: array
DeleteSetpoint:
properties:
id:
format: int64
type: integer
required:
- id
type: object
Device:
properties:
child_devices:
items:
$ref: '#/components/schemas/Device'
type: array
datapoints:
items:
type: string
type: array
id:
type: integer
name:
type: string
project_id:
format: int64
type: integer
tags:
items:
$ref: '#/components/schemas/TagAssociation'
type: array
type: object
DeviceMinimal:
properties:
child_devices:
items:
$ref: '#/components/schemas/DeviceMinimal'
type: array
id:
type: integer
name:
type: string
type: object
EmailNotificationPoint:
additionalProperties: false
properties:
recipients:
items:
type: string
type: array
type: object
Endpoint:
properties:
id:
format: int64
type: integer
path:
type: string
request_method:
type: string
summary:
type: string
EntityLog:
properties:
created_at:
type: string
id:
type: string
log_level:
type: string
log_message:
type: string
required:
- id
- created_at
- log_message
- log_level
type: object
EntityLogList:
properties:
items:
items:
$ref: '#/components/schemas/EntityLog'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
required:
- items
- meta
type: object
EnumValue:
properties:
key:
type: string
name:
type: string
nameDE:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
nameEN:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
type: object
Error:
properties:
details:
properties: {}
type: object
error:
type: string
operation:
enum:
- ''
- get
- create
- delete
- update
type: string
success:
default: false
type: boolean
required:
- error
type: object
EventStreamOutputDatapoint:
properties:
calculated_unit:
type: string
dataPointID:
type: string
required:
- dataPointID
type: object
File:
properties:
download_link:
type: string
last_modified:
format: date-time
type: string
path:
type: string
preview_link:
type: string
size_bytes:
type: integer
tags:
type: object
valid_until:
type: string
type: object
FilesList:
properties:
items:
items:
$ref: '#/components/schemas/File'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
HiddenNativePage:
properties:
title:
description: Identifier of the native page to hide or unhide.
minLength: 1
type: string
required:
- title
type: object
Holiday:
properties:
holiday_date:
format: date
type: string
holiday_name:
type: string
required:
- holiday_name
- holiday_date
type: object
ImportDigitalTwinRequest:
properties:
filename:
description: The name the file is stored under, including its extension.
minLength: 1
type: string
path:
description: The target folder within the project where the file is placed.
minLength: 1
type: string
required:
- filename
- path
type: object
ImportDigitalTwinResponse:
properties:
expires_at:
description: The date and time the presigned upload URL expires.
format: date-time
type: string
file_id:
description: The id the file is registered under.
format: uuid
type: string
job_id:
description: The id of the job tracking the mapping.
format: uuid
type: string
upload_url:
description: The presigned URL the file's content must be uploaded to.
type: string
type: object
InstanceConfig:
properties:
config:
format: json
type: object
id:
format: int64
type: integer
project_id:
format: int64
type: integer
type: object
InstanceSummary:
properties:
input_parameters:
type: object
result_id:
type: string
status:
type: string
type: object
Job:
properties:
created_at:
description: |
The date and time the job was created.
format: date-time
type: string
created_by:
description: The id of the user who created the job.
format: int64
type: integer
id:
description: The id of the job.
format: uuid
type: string
project_id:
description: The id of the project the job belongs to.
format: int64
type: integer
status:
description: The status of the job.
type: string
type:
description: The type of the job.
type: string
updated_at:
description: |
The date and time the job was last updated.
format: date-time
type: string
type: object
JobList:
properties:
items:
items:
$ref: '#/components/schemas/Job'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
JobLogList:
properties:
items:
items:
$ref: '#/components/schemas/EntityLog'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
required:
- items
- meta
type: object
KPI:
example:
component_in_project_id: 1
context: co2_savings
identifier: schedule_analysis.co2_saving
type: potential
units: kilowatt-hours
units_context: electrical
value: 214.43
properties:
analysis_function_id:
type: integer
component_in_project_id:
type: integer
context:
type: string
identifier:
type: string
type:
enum:
- actual
- potential
type: string
units:
type: string
units_context:
type: string
value:
format: float
type: number
required:
- component_in_project_id
- analysis_function_id
- identifier
- context
- type
- value
- units
type: object
KPIAggregationItem:
properties:
kpi:
$ref: '#/components/schemas/KPIResult'
time_range_info:
$ref: '#/components/schemas/TimeRangeInfo'
required:
- time_range_info
- kpi
type: object
KPIAggregationResult:
properties:
kpi:
type: string
portfolio_result:
$ref: '#/components/schemas/PortfolioResult'
project_results:
items:
$ref: '#/components/schemas/ProjectKPIAggregationResultItem'
type: array
units:
type: string
type: object
KPIResult:
properties:
context:
type: string
id:
type: integer
identifier:
type: string
name:
type: string
unit:
type: string
value:
format: float
type: number
type: object
KPIResultList:
properties:
kpis:
items:
$ref: '#/components/schemas/KPIResult'
type: array
type: object
KPIResultShort:
properties:
end:
format: date-time
type: string
start:
format: date-time
type: string
value:
type: number
type: object
LabelsSystems:
properties:
currency_systems:
items:
type: string
type: array
labels_checksum:
type: string
locales:
items:
type: string
type: array
units_systems:
items:
type: string
type: array
type: object
LatestReportGeneration:
properties:
created_at:
format: date-time
type: string
status:
description: Status of the latest generation attempt.
type: string
required:
- status
- created_at
type: object
LatestSuccessfulReport:
properties:
created_at:
format: date-time
type: string
file_path:
description: Path of the generated file. Usable directly with get_project_file.
type: string
required:
- file_path
- created_at
type: object
ListOfAlerts:
properties:
items:
items:
$ref: '#/components/schemas/Alert'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
ListOfCompanyRoles:
items:
$ref: '#/components/schemas/CompanyRole'
type: array
ListOfDataPoints:
properties:
dataPointIDs:
items:
type: string
type: array
favorites:
items:
type: string
type: array
idMappings:
items:
properties:
hash_id:
type: string
id:
type: integer
type: object
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
ListOfDevices:
properties:
devices:
items:
$ref: '#/components/schemas/DeviceMinimal'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
project_id:
format: int64
type: integer
type: object
ListOfEndpoints:
items:
$ref: '#/components/schemas/Endpoint'
type: array
ListOfRoles:
items:
$ref: '#/components/schemas/Role'
type: array
MSTeamsNotificationPoint:
additionalProperties: false
properties:
webhook_urls:
items:
type: string
type: array
type: object
MqttTopicAuth:
properties:
id:
format: int64
type: integer
rights:
type: string
topic:
type: string
type: object
MqttUser:
properties:
description:
type: string
id:
format: int64
type: integer
topics:
items:
$ref: '#/components/schemas/MqttTopicAuth'
type: array
username:
type: string
valid_until:
format: datetime
type: string
type: object
NewCompanyRole:
properties:
authed_endpoints:
items:
format: int64
type: integer
type: array
description:
type: string
name:
type: string
required:
- name
- authed_endpoints
type: object
NewComponentInProject:
properties:
abbreviation:
type: string
name:
type: string
nameDE:
deprecated: true
description: 'Deprecated: use ''name'' instead.'
type: string
nameEN:
deprecated: true
description: 'Deprecated: use ''name'' instead.'
type: string
type: object
NewComponentInProjectRelation:
properties:
relationship:
enum:
- hasLocation
- hasPart
- feeds
type: string
source_componentinproject_id:
format: int64
type: integer
target_componentinproject_id:
format: int64
type: integer
required:
- source_componentinproject_id
- target_componentinproject_id
- relationship
type: object
NewCustomControlsApp:
example:
event_streams:
- emit_always: false
event_type: ObservationEvent
output:
dataPointID: my_schedule_datapoint_id
parameters:
pytz_timezone: Europe/Berlin
regular_schedule:
Fri:
- time: 06:00
value: 1.0
- time: '14:00'
value: 0.0
Mon:
- time: 06:00
value: 0.5
- time: 09:00
value: 1.0
- time: '18:00'
value: 0.0
Thu:
- time: 06:00
value: 1.0
- time: '18:00'
value: 0.0
Tue:
- time: 06:00
value: 1.0
- time: '18:00'
value: 0.0
Wed:
- time: 06:00
value: 1.0
- time: '18:00'
value: 0.0
type: schedule
- emit_always: false
event_type: SetpointEvent
output:
dataPointID: my_setpoint_datapoint
parameters:
formula: if(schedule==0 AND room_temperature_ok==1, 0, null);
priority: 13
reset_value: 22
pins:
room_temperature_ok:
aggregate: mean
dataPointID: room_temperature_checker
data_range:
time: 1h
expected_unit: degrees-celsius
trigger: 2m
schedule:
dataPointID: my_schedule_datapoint_id
expected_unit: generic
type: formula
properties:
event_streams:
items:
$ref: '#/components/schemas/ControlsAppEventStream'
type: array
required:
- event_streams
type: object
NewCustomPage:
properties:
title:
maxLength: 50
minLength: 1
type: string
url:
type: string
required:
- title
- url
type: object
NewDiscreteAlert:
additionalProperties: false
description: |
Definitions for a new discrete value alert.
- The alert fires while the datapoint's value is one of the values in 'values', and clears as
soon as the value is no longer one of them. Use it for enumerated signals — status, mode or
fault codes — where the interesting values are not a contiguous range and therefore cannot be
expressed as thresholds. A single value is the binary/equality case.
- Set 'negate' to fire on the inverse: while the value is NOT one of the given values.
- The alert fires at exactly one severity, chosen with 'level'. There is no ordering
(ascending/descending) and no reset value: membership is exact, so the alert clears
immediately when the value leaves the set.
example:
attributes:
category: fault
team: Operations
dataPointID: Chiller_01_StatusCode
description: |
Alert while the chiller reports one of the fault codes 2, 5 or 7.
Codes 3, 4 and 6 are informational and must not raise an alarm, which is why this cannot
be expressed with thresholds.
level: crit
name: Chiller fault code
negate: false
notification:
email:
recipients:
- john.smith@example.com
repeat: 2h
values:
- 2
- 5
- 7
properties:
attributes:
additionalProperties:
type: string
description: Attributes/tags to assign to the alert (key=value).
type: object
dataPointID:
description: The datapoint whose values are to check.
type: string
delay:
description: |
Optional debounce. The membership condition must hold continuously for this duration
(e.g. '5m') before the alarm fires; if the value leaves the set sooner, nothing is sent.
Omit for the default (fire as soon as the value enters the set).
example: 5m
pattern: ^\d+[wdhms]{1}$
type: string
description:
description: Free text description of the alert.
type: string
disabled:
default: false
description: |
Create the alert in a paused (disabled) state: its task is created disabled and does not
fire until the alert is enabled via the enable endpoint. Defaults to false (created enabled).
type: boolean
level:
default: crit
description: The severity the alert fires at while the value matches.
enum:
- info
- warn
- crit
type: string
name:
description: The name of the alert.
type: string
negate:
default: false
description: |
Fire while the value is NOT one of 'values' instead of while it is.
Defaults to false.
type: boolean
notification:
$ref: '#/components/schemas/AlertNotification'
repeat:
default: 1h
description: |
Minimum interval after which an unchanged alert is re-notified (in addition to
notifying on every level change). Use a duration like '2h' to re-notify periodically;
'0s' or the keyword 'never' disables re-notification (notify only on level changes).
example: 2d
pattern: ^(\d+[wdhms]|never)$
type: string
timezone:
description: |
Optional IANA timezone (e.g. 'Europe/Berlin') used to render alert timestamps in
notifications. Defaults to the project's building timezone on create; falls back to 'UTC'
when the building timezone is unresolved.
example: Europe/Berlin
type: string
values:
description: The discrete values to alert on, e.g. the fault codes [2, 5,
7].
items:
type: number
maxItems: 50
minItems: 1
type: array
uniqueItems: true
required:
- name
- dataPointID
- values
NewInstanceConfig:
properties:
analysisfunction_id:
format: int64
type: integer
auto_execution:
type: boolean
componentinproject_id:
format: int64
type: integer
description:
type: string
enabled:
type: boolean
name:
type: string
required:
- componentinproject_id
- analysisfunction_id
type: object
NewMqttUser:
properties:
description:
type: string
password:
type: string
rights:
enum:
- read
- write
type: string
username:
type: string
validity:
format: int64
type: integer
required:
- username
- password
type: object
NewProject:
properties:
account_manager_id:
description: ID of the account manager user
format: int64
type: integer
address:
type: string
asset_manager_id:
format: int64
type: integer
currency_system:
type: string
description:
type: string
latitude:
type: string
longitude:
type: string
name:
maxLength: 254
minLength: 1
type: string
project_engineer_id:
description: ID of the project engineer user
format: int64
type: integer
start:
format: date-time
type: string
status_report:
type: string
units_system:
type: string
required:
- name
type: object
NewProjectComment:
properties:
text:
description: The text of the comment.
maxLength: 32767
type: string
required:
- text
type: object
NewProjectGroup:
properties:
name:
description: Name of the project group.
maxLength: 254
minLength: 1
type: string
project_ids:
description: |
Optional list of project ids to assign on creation.
Projects that do not belong to the company are silently ignored.
items:
format: int64
type: integer
type: array
required:
- name
type: object
NewRole:
allOf:
- $ref: '#/components/schemas/NewCompanyRole'
- properties:
authed_tags:
items:
$ref: '#/components/schemas/TagAuth'
type: array
type: object
required:
- name
- authed_endpoints
- authed_tags
NewSaving:
properties:
analysis_function_id:
description: The id of the analysis function that the saving is associated
with.
type: integer
context:
description: The context of the saving.
enum:
- financial
- co2_emissions
- energy_consumption
type: string
open:
description: The potential that has not yet been realized as actual saving.
format: float
type: number
potential:
description: The potential value selected by the user.
format: float
type: number
units:
description: The units of the saving.
type: string
units_context:
description: The units context of the saving.
type: string
required:
- analysis_function_id
- context
- potential
- open
- units
type: object
NewTag:
properties:
key:
type: string
value:
type: string
required:
- key
type: object
NewTask:
properties:
analytics_result:
description: List of references of analytics results related to the task.
items:
format: uuid
type: string
type: array
assignee_user_id:
description: The id of the user assigned to the task.
format: int64
type: integer
componentinproject:
description: List of ids of component instances related to the task.
items:
format: int64
type: integer
type: array
description:
default: ''
description: The description of the task.
maxLength: 32727
type: string
end:
description: The planned end time of the task.
format: date-time
type: string
plot_view_id:
description: id of the plot view related to the task
format: uuid
type: string
priority:
default: medium
description: The priority of the task.
enum:
- low
- medium
- high
type: string
reporter_user_id:
description: |
The id of the user who reported the task.
If not given, this will be set to the user who made the API call.
format: int64
type: integer
start:
description: The planned start time of the task.
format: date-time
type: string
status:
default: open
description: The status of the task.
enum:
- open
- doing
- review
- done
- rejected
- failed
type: string
title:
description: The short title of the task.
maxLength: 100
type: string
required:
- title
type: object
NewTaskComment:
properties:
text:
description: The text of the comment.
maxLength: 32767
type: string
required:
- text
type: object
NewThresholdAlert:
additionalProperties: false
description: |
Definitions for a new threshold alert
- When the alert stays on the same level, it is re-notified only after the 'repeat' duration; a 'repeat' of '0s' or 'never' disables re-notification, so you are notified only when the alert level changes.
- The order of the alert (ascending or descending) is inferred from the thresholds when two or more levels are configured, and must be supplied explicitly (via the thresholds `order` field) when only a single level is configured.
- info < warn < crit makes an ascending alert that gets more critical as values get bigger.
- info > warn > crit makes a descending alert that gets more critical as values get smaller.
example:
attributes:
category: fire
team: Operations
dataPointID: CO2_Sensor_01
description: |
Alert on indoor CO2 level with three severity levels.
Normal outdoor CO2 levels range between 350-450 ppm(OK).
Complaints of stuffiness and less comfortable breathing indoors occur at 600-1000 ppm (INFO).
General drowsiness can occur at 1000-2500 ppm (WARNING).
Adverse health effects can happen beyond 2500 ppm (CRITICAL).
name: Productivity Alert
notification:
dashboard:
enabled: false
email:
recipients:
- john.smith@example.com
- john.doe@example.com
ms_teams:
webhook_urls:
- https://example.webhook.office.com/webhookb2/00000000-0000-0000-0000-000000000000@11111111-1111-1111-1111-111111111111/IncomingWebhook/0123456789abcdef0123456789abcdef/22222222-2222-2222-2222-222222222222
telegram:
chat_ids:
- '-12345'
- '56789'
repeat: 2h
thresholds:
crit: 2500
crit_reset: 2000
info: 600
info_reset: 500
warn: 1000
warn_reset: 900
properties:
attributes:
additionalProperties:
type: string
description: Attributes/tags to assign to the alert (key=value).
type: object
dataPointID:
description: The datapoint whose values are to check.
type: string
delay:
description: |
Optional debounce. The threshold condition must hold continuously for this duration
(e.g. '5m') before the alarm fires; if it clears sooner, nothing is sent. Omit for the
default (fire as soon as the condition is met). Threshold alarms only.
example: 5m
pattern: ^\d+[wdhms]{1}$
type: string
description:
description: Free text description of the alert.
type: string
disabled:
default: false
description: |
Create the alert in a paused (disabled) state: its task is created disabled and does not
fire until the alert is enabled via the enable endpoint. Defaults to false (created enabled).
type: boolean
name:
description: The name of the alert.
type: string
notification:
$ref: '#/components/schemas/AlertNotification'
repeat:
default: 1h
description: |
Minimum interval after which an unchanged alert is re-notified (in addition to
notifying on every level change). Use a duration like '2h' to re-notify periodically;
'0s' or the keyword 'never' disables re-notification (notify only on level changes).
example: 2d, 0.5h, 2.5m, 110s
pattern: ^(\d+[wdhms]|never)$
type: string
thresholds:
$ref: '#/components/schemas/AlertThresholds'
timezone:
description: |
Optional IANA timezone (e.g. 'Europe/Berlin') used to render alert timestamps in
notifications. Defaults to the project's building timezone on create; falls back to 'UTC'
when the building timezone is unresolved.
example: Europe/Berlin
type: string
required:
- name
- dataPointID
- thresholds
NewThroughputAlert:
additionalProperties: false
description: |
Definitions for a new throughput alert.
- When the alert stays on the same level, new events are emitted only after the 'repeat' duration.
- Throughput is measured as the number of values received during each 'period', and all provided thresholds are interpreted as *values per 'period'*.
- Throughput is measured over 'period' before an alert is triggered. Thus, use a longer 'period' for more stable alerts that tolerate temporary drops/highs in throughput and use a shorter 'period' for more reactive alerts that also trigger on short temporary changes in throughput.
A 'repeat' of '0s' or 'never' disables re-notification, so you are notified only when the alert level changes.
- The order of the alert (ascending or descending) is inferred from the thresholds when two or more levels are configured, and must be supplied explicitly (via the thresholds `order` field) when only a single level is configured.
- info < warn < crit makes an ascending alert that gets more critical as throughput grows.
- info > warn > crit makes a descending alert that gets more critical as throughput drops.
example:
attributes:
category: network
team: IT
description: |
Alert on project ingress measured over a 10-minute period.
During normal operation, we expect well beyond 50 values per period (INFO).
If data ingress drops below 20 values per period, this could indicate connection problems or partial equipment failure (WARNING).
If ingress goes to 0, this indicates connection loss or complete equipment failure (CRITICAL).
name: Ingress Alert
notification:
dashboard:
enabled: false
email:
recipients:
- john.smith@example.com
- john.doe@example.com
ms_teams:
webhook_urls:
- https://example.webhook.office.com/webhookb2/00000000-0000-0000-0000-000000000000@11111111-1111-1111-1111-111111111111/IncomingWebhook/0123456789abcdef0123456789abcdef/22222222-2222-2222-2222-222222222222
telegram:
chat_ids:
- '-12345'
- '56789'
period: 10m
repeat: 1d
thresholds:
crit: 0
crit_reset: 2
info: 50
info_reset: 60
warn: 20
warn_reset: 25
properties:
attributes:
additionalProperties:
type: string
description: Attributes/tags to assign to the alert (key=value).
type: object
dataPointID:
description: The datapoint to check throughtput for. If not provided, throughput
of the whole project is checked.
type: string
description:
description: Free text description of the alert.
type: string
disabled:
default: false
description: |
Create the alert in a paused (disabled) state: its task is created disabled and does not
fire until the alert is enabled via the enable endpoint. Defaults to false (created enabled).
type: boolean
name:
description: The name of the alert.
type: string
notification:
$ref: '#/components/schemas/AlertNotification'
period:
description: Time period over which to measure throughput.
pattern: ^\d+[wdhms]{1}$
type: string
repeat:
default: 1d
description: |
Minimum interval after which an unchanged alert is re-notified (in addition to
notifying on every level change). Use a duration like '2h' to re-notify periodically;
'0s' or the keyword 'never' disables re-notification (notify only on level changes).
example: 2d, 0.5h, 2.5m, 110s
pattern: ^(\d+[wdhms]|never)$
type: string
thresholds:
$ref: '#/components/schemas/AlertThresholds'
timezone:
description: |
Optional IANA timezone (e.g. 'Europe/Berlin') used to render alert timestamps in
notifications. Defaults to the project's building timezone on create; falls back to 'UTC'
when the building timezone is unresolved.
example: Europe/Berlin
type: string
required:
- name
- thresholds
- period
NewUser:
properties:
address:
type: string
currency_system:
type: string
email:
format: email
type: string
firstName:
type: string
lastName:
type: string
locale:
type: string
password:
type: string
phone:
type: string
units_system:
type: string
required:
- firstName
- lastName
- email
type: object
Node:
example:
children:
- alias: ''
children:
- alias:
bacnet: degreesCelsius
pint: degrees-celsius
units-conversion: deg-C
description: The observations are measured in degree Celsius
display_name: Degree Celsius
id: degrees-celsius
symbol: °C
- alias: {}
description: The observations are measured in degree Celsius
display_name: Degree Fahrenheit
id: degrees-fahrenheit
symbol: °F
description: Units defining temperatures
display_name: temperatures
id: temperature
symbol: ''
description: Label for units
display_name: units
id: units
properties:
alias:
type: object
children:
items:
$ref: '#/components/schemas/Node'
type: array
description:
type: string
display_name:
type: string
id:
type: string
symbol:
type: string
type: object
ObjectReportStatus:
properties:
latest_report_generation:
$ref: '#/components/schemas/LatestReportGeneration'
latest_successful_report:
$ref: '#/components/schemas/LatestSuccessfulReport'
quota_remaining_today:
minimum: 0
type: integer
required:
- quota_remaining_today
type: object
Observation:
properties:
time:
type: string
value:
format: float
type: number
required:
- time
- value
PaginationMeta:
properties:
current_page:
type: integer
items_per_page:
type: integer
total_items:
type: integer
total_pages:
type: integer
required:
- total_items
- items_per_page
- current_page
- total_pages
type: object
PatchAttributesErrorDetails:
properties:
attribute_errors:
items:
$ref: '#/components/schemas/AttributeErrorModel'
type: array
status:
enum:
- patch_failed
- controls_update_required
- controls_update_failed
type: string
required:
- status
- attribute_errors
type: object
PatchAttributesSuccess:
properties:
patched_attributes:
items:
$ref: '#/components/schemas/PatchedAttribute'
type: array
status:
enum:
- patched
- patched_controls_updated
type: string
updated_controls_app_ids:
items:
type: string
type: array
required:
- status
- patched_attributes
type: object
PatchProjectComponentAttributesRequest:
items:
properties:
key:
type: string
unit:
type: string
value:
type: string
required:
- key
type: object
type: array
PatchedAttribute:
properties:
attribute:
$ref: '#/components/schemas/ComponentInProjectAttribute'
operation:
enum:
- updated
- created
- deleted
type: string
type: object
Pin:
properties:
alphanumeric_id:
type: string
description:
type: string
description_de:
deprecated: true
description: 'Deprecated: use the localized ''description'' field instead.'
type: string
description_en:
deprecated: true
description: 'Deprecated: use the localized ''description'' field instead.'
type: string
id:
format: int64
type: integer
location:
type: string
name:
type: string
nameDE:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
nameEN:
deprecated: true
description: 'Deprecated: use the localized ''name'' field instead.'
type: string
pin_attributes:
items:
$ref: '#/components/schemas/PinAttribute'
type: array
unit_type:
type: string
type: object
PinAttribute:
properties:
id:
format: int64
type: integer
key:
type: string
probability:
type: number
value:
type: string
type: object
PinRecommendation:
properties:
idMappings:
items:
properties:
hash_id:
type: string
id:
type: integer
type: object
type: array
items:
items:
$ref: '#/components/schemas/DatapointWithScore'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
PlotView:
properties:
datapoints:
description: Datapoints of the plot view.
items:
type: string
type: array
end:
description: end timestamp of the datapoints
format: date-time
type: string
hidden_datapoints:
description: Hidden datapoints of the plot view.
items:
type: string
type: array
samplerate:
description: sample rate of the datapoints.
example: 1s
type: string
start:
description: start timestamp of the datapoints.
format: date-time
type: string
zoom:
$ref: '#/components/schemas/PlotViewZoom'
description: Zoom period with start and end timestamps including timezone
required:
- start
- end
- samplerate
- datapoints
type: object
PlotViewResponse:
properties:
datapoints:
description: Datapoints of the plot view.
items:
type: string
type: array
end:
description: end timestamp of the datapoints
format: date-time
type: string
hidden_datapoints:
description: Hidden datapoints of the plot view.
items:
type: string
type: array
id:
description: id integer of the plot view.
format: uuid
type: string
samplerate:
description: sample rate of the datapoints.
type: string
start:
description: start timestamp of the datapoints.
format: date-time
type: string
zoom:
$ref: '#/components/schemas/PlotViewZoom'
description: Zoom period with start and end timestamps including timezone
required:
- id
- start
- end
- samplerate
type: object
PlotViewZoom:
description: Plot view zoom period with start and end timestamps including timezone
properties:
end:
description: end timestamp of the plot view zoom period including timezone
format: date-time
nullable: true
type: string
start:
description: start timestamp of the plot view zoom period including timezone
format: date-time
nullable: true
type: string
type: object
PlotsResult:
properties:
categories:
items:
type: string
type: array
data:
items:
$ref: '#/components/schemas/PlotsResultData'
type: array
extras:
type: object
identifier:
type: string
title:
type: string
type:
type: string
unit:
type: string
type: object
PlotsResultData:
properties:
name:
type: string
values:
items:
format: float
type: number
type: array
type: object
PortfolioResult:
properties:
aggregation:
type: string
aggregation_value:
type: number
total_projects:
type: integer
required:
- aggregation
- total_projects
type: object
PostControlsAppRequest:
example:
setpoint_writing_params:
PIN_ALPHANUMERIC_ID_SP_1:
keep_out_of_service: false
priority: 13
reset_value: 'null'
PIN_ALPHANUMERIC_ID_SP_2:
keep_out_of_service: true
priority: 8
reset_value: 25.0
properties:
setpoint_writing_params:
type: object
type: object
PostProjectComponentAttributeRequest:
properties:
key:
type: string
unit:
type: string
value:
type: string
required:
- key
- value
PostProjectImportTimeseriesRequest:
properties:
import_file:
description: |
A file containing timeseries in csv format as follows:
`datapointID,value,date-time,tagkey1=tagvalue1,...,tagkeyN=tagvalueN`
- tag key and value pair MUST be separated by a "="
- tag key and value must not themselves contain "="
- to escape delimiter characters, use double qoutes
format: binary
type: string
required:
- import_file
type: object
PostProjectTimeseriesRequest:
additionalProperties:
items:
$ref: '#/components/schemas/Observation'
type: array
example:
dataPointID1:
- time: '2023-01-01T12:00:00Z'
value: 1
- time: '2023-01-01T13:00:00Z'
value: 2
dataPointID2:
- time: '2023-01-01T12:00:00Z'
value: 3
type: object
PostProjectVirtualDatapointRequest:
example:
parameters:
formula: P1;
pins:
P1:
aggregate: mean
dataPointID: Dev1_Temperature_AI1
data_range:
time: 1d
properties:
parameters:
type: object
pins:
type: object
required:
- pins
- parameters
Project:
properties:
account_manager:
$ref: '#/components/schemas/ShortUser'
description: Account manager assigned to this project
address:
type: string
asset_manager:
$ref: '#/components/schemas/ShortUser'
description: Asset manager assigned to this project
avatar_url:
type: string
company_id:
format: int64
type: integer
currency_system:
type: string
custom_pages:
items:
$ref: '#/components/schemas/CustomPage'
type: array
description:
type: string
handle:
type: string
hidden_native_pages:
items:
$ref: '#/components/schemas/HiddenNativePage'
type: array
id:
type: integer
latitude:
type: string
links:
items:
$ref: '#/components/schemas/ProjectLink'
type: array
load_balancing_group:
type: string
longitude:
type: string
name:
type: string
project_engineer:
$ref: '#/components/schemas/ShortUser'
description: Project engineer assigned to this project
start:
format: date-time
type: string
status_report:
type: string
status_report_updated_at:
format: date-time
type: string
units_system:
type: string
required:
- company_id
- name
type: object
ProjectComment:
properties:
author:
$ref: '#/components/schemas/ShortUser'
description: The author of the comment.
created:
description: |
Timestamp of the comment creation.
This information is set automatically and is not editable.
format: date-time
type: string
id:
description: The id of the comment.
format: uuid
type: string
project_id:
description: The id of the project the comment belongs to.
type: integer
text:
description: The text of the comment.
type: string
updated:
description: |
Timestamp of the latest comment modification.
This information is set automatically and is not editable.
format: date-time
type: string
required:
- id
type: object
ProjectCommentList:
properties:
items:
items:
$ref: '#/components/schemas/ProjectComment'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
ProjectGroup:
properties:
company:
$ref: '#/components/schemas/CompanyReference'
id:
format: int64
type: integer
name:
type: string
required:
- id
- name
- company
type: object
ProjectJourney:
properties:
current_substage_key:
type: string
phases:
items:
$ref: '#/components/schemas/ProjectJourneyPhase'
type: array
type: object
ProjectJourneyAction:
properties:
key:
type: string
restricted:
type: boolean
required:
- key
- restricted
type: object
ProjectJourneyMilestone:
properties:
key:
type: string
state:
enum:
- open
- in_progress
- done
type: string
substages:
items:
$ref: '#/components/schemas/ProjectJourneySubstage'
type: array
updated_at:
format: date-time
type: string
type: object
ProjectJourneyOverview:
properties:
phase_key:
description: Key of the project's current journey phase.
nullable: true
type: string
type: object
ProjectJourneyPhase:
properties:
key:
type: string
milestones:
items:
$ref: '#/components/schemas/ProjectJourneyMilestone'
type: array
type: object
ProjectJourneySubstage:
properties:
action:
$ref: '#/components/schemas/ProjectJourneyAction'
end_date:
format: date
type: string
key:
type: string
progression_type:
enum:
- linear
- looped
type: string
start_date:
format: date
type: string
state:
enum:
- open
- in_progress
- done
type: string
type: object
ProjectJourneySyncResponse:
properties:
project_ids:
description: List of project IDs that were found and processed.
items:
format: int64
type: integer
type: array
project_ids_not_found:
description: List of project IDs that were not found.
items:
format: int64
type: integer
type: array
type: object
ProjectKPI:
properties:
end_timestamp_latest_result:
description: The timestamp of the last KPI execution.
format: date-time
type: string
kpi_identifier:
description: The KPI identifier.
type: string
project_id:
description: The project ID.
format: int64
type: integer
unit:
description: The unit of the KPI value.
type: string
unit_context:
description: The unit context.
type: string
value:
description: The KPI value.
type: number
required:
- project_id
- value
- end_timestamp_latest_result
- unit
type: object
ProjectKPIAggregationResultItem:
properties:
aggregation:
type: string
aggregation_value:
type: number
kpis:
items:
$ref: '#/components/schemas/KPIResultShort'
type: array
project:
$ref: '#/components/schemas/ProjectShort'
time_range_info:
$ref: '#/components/schemas/TimeRangeInfo'
required:
- project
- time_range_info
type: object
ProjectLink:
properties:
before:
type: string
icon:
type: string
parent:
type: string
title:
type: string
titleDE:
type: string
titleEN:
type: string
url:
type: string
urlDE:
type: string
urlEN:
type: string
required:
- title
- titleDE
- titleEN
- url
- urlDE
- urlEN
type: object
ProjectPortfolio:
properties:
analysis_result_statistics:
description: Analysis result counts grouped by signal color.
items:
$ref: '#/components/schemas/AnalysisResultStatistics'
nullable: true
type: array
company:
$ref: '#/components/schemas/CompanyReference'
controls_statistics:
$ref: '#/components/schemas/ControlsStatistics'
groups:
description: |
List of groups that the project belongs to.
Empty list when the project is not in any group.
items:
$ref: '#/components/schemas/ProjectGroup'
type: array
project_avatar_url:
description: Public URL of the project avatar, if set.
nullable: true
type: string
project_data_ingress_date:
description: The start of the project, if known.
example: '2024-03-15T08:30:00+00:00'
format: date-time
nullable: true
type: string
project_id:
description: The ID of the project.
format: int64
type: integer
project_journey_overview:
$ref: '#/components/schemas/ProjectJourneyOverview'
nullable: true
project_name:
description: The name of the project.
type: string
savings_statistics:
description: Latest yearly savings KPIs grouped by savings category.
items:
$ref: '#/components/schemas/TotalSavings'
nullable: true
type: array
task_statistics:
description: Task counts grouped by status.
items:
$ref: '#/components/schemas/TaskStatistics'
nullable: true
type: array
required:
- project_id
- project_name
- controls_statistics
- company
type: object
ProjectSetupCredential:
properties:
password:
description: The generated password of the provisioned credential.
type: string
username:
description: The username of the provisioned credential.
type: string
required:
- username
- password
type: object
ProjectSetupResource:
properties:
credentials:
description: The credentials created for this resource.
items:
$ref: '#/components/schemas/ProjectSetupCredential'
type: array
topics:
description: The topics created for this resource, if any.
items:
$ref: '#/components/schemas/ProjectSetupTopic'
type: array
type:
description: The resource type.
type: string
required:
- type
- credentials
type: object
ProjectSetupResponse:
properties:
project:
$ref: '#/components/schemas/Project'
resources:
description: The provisioned resources.
items:
$ref: '#/components/schemas/ProjectSetupResource'
type: array
required:
- project
- resources
type: object
ProjectSetupTopic:
properties:
name:
description: The logical name of the topic.
type: string
topic:
description: The topic pattern.
type: string
required:
- name
- topic
type: object
ProjectShort:
properties:
id:
type: integer
name:
type: string
type: object
ProjectWithContext:
properties:
company:
$ref: '#/components/schemas/Company'
dataPointKeys:
items:
$ref: '#/components/schemas/DataPointKey'
type: array
project:
$ref: '#/components/schemas/Project'
type: object
ProjectsKPIAggregation:
properties:
aggregated_value:
description: The aggregated KPI value across projects.
type: number
kpi_identifier:
description: The KPI identifier.
type: string
projects_kpi:
description: Per-project KPI results.
items:
$ref: '#/components/schemas/ProjectKPI'
type: array
unit:
description: The unit of the aggregated value.
type: string
required:
- aggregated_value
- kpi_identifier
- unit
- projects_kpi
type: object
PutProjectVirtualDatapointRequest:
properties:
description:
type: string
PutUserPasswordRequest:
properties:
current_password:
description: The user's current password.
format: password
type: string
new_password:
description: The user's new password.
format: password
type: string
required:
- current_password
- new_password
type: object
Quota:
properties:
info:
type: string
quota_available:
type: object
quota_limits:
description: |
Configured limits keyed by quota type.
For the 'files' service: 'space_bytes', 'files', 'file_size_bytes' (each a number or 'Unlimited'), and 'max_folder_depth'.
type: object
quota_used:
type: object
type: object
Quotas:
properties:
ai:
$ref: '#/components/schemas/Quota'
files:
$ref: '#/components/schemas/Quota'
virtual_datapoints:
$ref: '#/components/schemas/Quota'
type: object
RealmRole:
properties:
endpoints:
items:
type: integer
type: array
id:
description: id of the realm role.
type: integer
name:
description: name of the realm role.
type: string
type: object
Renaming:
properties:
datapointkey_id:
format: int64
type: integer
id:
format: int64
type: integer
renaming:
type: string
type: object
Role:
properties:
authed_endpoints:
items:
format: int64
type: integer
type: array
authed_tags:
items:
$ref: '#/components/schemas/TagAuth'
type: array
description:
type: string
id:
format: int64
type: integer
name:
type: string
project_id:
format: int64
type: integer
type: object
Saving:
properties:
context:
type: string
id:
format: uuid
type: string
open:
format: float
type: number
potential:
format: float
type: number
realized:
format: float
type: number
units:
type: string
units_context:
type: string
type: object
SavingsPotential:
properties:
analysis_function:
$ref: '#/components/schemas/AnalysisFunctionShort'
analysis_result:
$ref: '#/components/schemas/AnalysisResultShort'
component:
$ref: '#/components/schemas/Component'
component_in_project:
$ref: '#/components/schemas/ComponentInProject'
potential_kpis:
items:
$ref: '#/components/schemas/KPIResult'
type: array
required:
- component_in_project
- component
- analysis_result
- potential_kpis
type: object
Schedule:
properties:
color:
description: The color associated with the schedule value.
type: string
mode_name:
additionalProperties:
type: string
description: Mapping of modes to their corresponding values.
type: object
source:
description: The source of the schedule value.
type: string
status:
description: Indicates the schedule status.
type: string
timestamp:
description: The timestamp of the schedule value.
format: date-time
type: string
value:
description: The value of the schedule.
type: number
type: object
Setpoint:
properties:
id:
format: int64
type: integer
start:
format: date-time
type: string
value:
type: string
required:
- id
- start
- value
type: object
SetpointAck:
properties:
dataPointID:
type: string
log:
type: string
priority:
type: integer
project_id:
format: int64
type: integer
reference:
type: string
state_before:
type: object
status:
type: string
value:
type: string
type: object
SetpointReference:
properties:
dataPointID:
type: string
dryrun:
type: boolean
priority:
type: integer
reference:
type: string
status:
type: string
time:
format: date-time
type: string
user:
type: string
value:
type: string
type: object
SetpointReferences:
properties:
meta:
$ref: '#/components/schemas/PaginationMeta'
setpoints:
items:
$ref: '#/components/schemas/SetpointReference'
type: array
type: object
ShortUser:
properties:
avatar_url:
description: The url to the user's avatar.
type: string
company_id:
description: The id of the company the user belongs to.
type: integer
email:
description: The user's email address.
format: email
type: string
firstName:
description: The user's first name.
type: string
id:
description: The user's id.
type: integer
lastName:
description: The user's last name.
type: string
required:
- id
- email
- company_id
type: object
ShortUserList:
properties:
items:
items:
$ref: '#/components/schemas/ShortUser'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
SignalColorCountOverview:
properties:
green:
type: integer
grey:
type: integer
red:
type: integer
yellow:
type: integer
required:
- red
- yellow
- green
- grey
type: object
Source:
properties:
name:
description: The name of the source.
type: string
parameters:
description: A set of named parameters.
type: object
required:
- name
- parameters
type: object
Success:
properties:
message:
type: string
operation:
enum:
- ''
- get
- create
- delete
- update
type: string
resource:
properties: {}
type: object
success:
default: true
type: boolean
type: object
SummaryKPICurrentResult:
properties:
time_reference:
type: string
unit:
type: string
value:
format: float
type: number
type: object
SummaryKPIDevelopmentResult:
properties:
arrow:
enum:
- up
- down
- right
type: string
time_reference:
type: string
unit:
type: string
value:
format: float
type: number
type: object
SummaryKPIResult:
properties:
current:
$ref: '#/components/schemas/SummaryKPICurrentResult'
development:
$ref: '#/components/schemas/SummaryKPIDevelopmentResult'
type: object
Tag:
properties:
id:
format: int64
type: integer
key:
type: string
value:
type: string
required:
- id
- key
type: object
TagAssociation:
allOf:
- $ref: '#/components/schemas/Tag'
- properties:
confirmed:
type: boolean
probability:
type: number
protected:
type: boolean
source:
type: string
type: object
TagAuth:
properties:
key:
type: string
read:
type: boolean
value:
type: string
write:
type: boolean
type: object
Task:
properties:
analytics_result:
description: List of analytics results related to the task.
items:
$ref: '#/components/schemas/AnalysisResultShort'
type: array
assignee:
$ref: '#/components/schemas/ShortUser'
componentinproject:
description: List of component instances related to the task.
items:
$ref: '#/components/schemas/ComponentInProject'
type: array
created:
description: |
The date and time the task was created.
This information is set automatically and is not manually editable.
format: date-time
type: string
description:
description: The description of the task.
type: string
end:
description: The planned end time for the task.
format: date-time
type: string
id:
description: The id of the task.
format: uuid
type: string
plot_view:
$ref: '#/components/schemas/PlotViewResponse'
priority:
description: The priority of the task.
enum:
- low
- medium
- high
type: string
project_id:
description: The id of the project the task belongs to.
format: int64
type: integer
reporter:
$ref: '#/components/schemas/ShortUser'
savings_potential:
$ref: '#/components/schemas/KPIResult'
start:
description: The planned start time for the task.
format: date-time
type: string
status:
description: The status of the task.
enum:
- open
- doing
- review
- done
- rejected
- failed
type: string
title:
description: The short task title.
type: string
updated:
description: |
The date and time the task was last updated.
This information is set automatically and is not manually editable.
format: date-time
type: string
type: object
TaskComment:
properties:
author:
$ref: '#/components/schemas/ShortUser'
description: The author of the comment.
created:
description: |
Timestamp of the comment creation.
This information is set automatically and is not editable.
format: date-time
type: string
id:
description: The id of the comment.
format: uuid
type: string
task_id:
description: The id of the task the comment belongs to.
format: uuid
type: string
text:
description: The text of the comment.
type: string
updated:
description: |
Timestamp of the latest comment modification.
This information is set automatically and is not editable.
format: date-time
type: string
required:
- id
type: object
TaskCommentList:
properties:
items:
items:
$ref: '#/components/schemas/TaskComment'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
TaskList:
properties:
items:
items:
$ref: '#/components/schemas/Task'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
TaskStatistics:
properties:
count:
description: Number of tasks with this status.
type: integer
status:
description: The task status.
type: string
required:
- status
- count
type: object
TelegramNotificationPoint:
additionalProperties: false
properties:
chat_ids:
items:
type: string
type: array
type: object
TimeRangeInfo:
properties:
end:
format: date-time
type: string
filled:
type: boolean
start:
format: date-time
type: string
type: object
Timeseries:
items:
$ref: '#/components/schemas/Observation'
type: array
TimeseriesResult:
properties:
data:
items:
properties:
time:
format: date-time
type: string
value:
format: float
type: number
type: object
type: array
name:
type: string
unit:
type: string
type: object
TimeseriesWithContext:
properties:
data:
$ref: '#/components/schemas/Timeseries'
dataPointID:
type: string
datapoint_hash_id:
type: string
error:
description: |
Optional error message describing why the data could not be loaded or processed, for example due to a unit conversion failure or missing units tag.
type: string
tags:
items:
$ref: '#/components/schemas/TagAssociation'
type: array
units:
type: string
TotalSavings:
properties:
kpi_identifier:
description: Identifier of the savings KPI category.
type: string
open_savings:
description: Open savings value.
nullable: true
type: number
potential_savings:
description: Potential savings value.
nullable: true
type: number
realized_savings:
description: Realized savings value.
nullable: true
type: number
units:
description: Unit of the savings values.
type: string
required:
- units
type: object
UpdateAlert:
additionalProperties: false
description: |
Partial update for an existing alert. Only the provided fields are changed; omitted fields
keep their current values. The monitored datapoint (dataPointID), the alert type, and the threshold
order (ascending/descending) cannot be changed via PATCH — delete and recreate the alert for those.
A throughput alert's measurement period (period) can be changed in place. Very old alerts that predate the current
alert templates (2023) cannot be updated via PATCH at all and must be deleted and recreated.
Enabling/disabling is done via the dedicated enable/disable endpoints, not PATCH.
Nested objects (notification, thresholds, attributes) are merged key-by-key one level
deep: keys you provide are added or overwritten, and keys you omit keep their current values.
Set a key to null to remove it (JSON Merge Patch, RFC 7386): null on a notification channel,
a severity level, an attribute, or a top-level optional field (e.g. description, repeat,
timezone) deletes it; deleting a trigger also drops its paired reset. Omitted keys are
unchanged; an empty object ({}) is a no-op. To edit list members (email recipients, Teams
webhook URLs) send the desired list. Immutable fields (dataPointID, threshold order) cannot
be removed. At least one severity level must remain.
Anything below that level is replaced wholesale — e.g. a provided notification channel
(notification.email) overwrites that channel's previous settings entirely.
Resets are independent: PATCHing a threshold trigger (e.g. 'crit') does not adjust its paired
reset ('crit_reset') — send both if the reset should follow, otherwise the previous reset is kept.
An empty payload is a no-op and returns the unchanged alert.
properties:
attributes:
additionalProperties:
nullable: true
type: string
description: Attributes/tags to assign to the alert (key=value).
type: object
delay:
description: |
Debounce duration the condition must hold before the alarm fires (e.g.
'5m'; threshold and discrete alarms only). Set to null to remove the delay (fire immediately).
nullable: true
pattern: ^\d+[wdhms]{1}$
type: string
description:
description: Free text description of the alert. Set to null to clear it.
nullable: true
type: string
level:
description: The severity a discrete alert fires at (discrete alarms only).
enum:
- info
- warn
- crit
type: string
name:
description: The name of the alert.
type: string
negate:
description: Fire while the value is NOT one of 'values' (discrete alarms
only).
type: boolean
notification:
$ref: '#/components/schemas/AlertNotification'
period:
description: Time period over which to measure throughput (throughput alarms
only).
pattern: ^\d+[wdhms]{1}$
type: string
repeat:
description: |
Minimum interval after which an unchanged alert is re-notified (in addition to
notifying on every level change). Use a duration like '2h' to re-notify periodically;
'0s' or the keyword 'never' disables re-notification (notify only on level changes).
Set to null to reset to the per-type default.
nullable: true
pattern: ^(\d+[wdhms]|never)$
type: string
thresholds:
$ref: '#/components/schemas/AlertThresholds'
timezone:
description: |
Optional IANA timezone (e.g.
'Europe/Berlin') used to render alert timestamps in notifications.
Set to null to reset to the building's timezone.
example: Europe/Berlin
nullable: true
type: string
values:
description: The discrete values to alert on (discrete alarms only). Replaces
the current set.
items:
type: number
maxItems: 50
minItems: 1
type: array
uniqueItems: true
type: object
UpdateCompany:
properties:
address:
type: string
description:
type: string
phone:
type: string
type: object
UpdateCompanyRole:
properties:
authed_endpoints:
items:
format: int64
type: integer
type: array
description:
type: string
name:
type: string
type: object
UpdateDatapoint:
properties:
setpoint_max_value:
type: number
setpoint_min_value:
type: number
writable:
type: boolean
type: object
UpdateInstanceConfig:
properties:
analysisfunction_id:
format: int64
type: integer
auto_execution:
type: boolean
componentinproject_id:
format: int64
type: integer
description:
type: string
enabled:
type: boolean
name:
type: string
type: object
UpdateMqttUser:
properties:
description:
type: string
password:
type: string
rights:
enum:
- read
- write
type: string
validity:
format: int64
type: integer
type: object
UpdateProject:
properties:
account_manager_id:
description: ID of the account manager user
nullable: true
type: integer
address:
type: string
asset_manager_id:
format: int64
nullable: true
type: integer
currency_system:
type: string
description:
type: string
latitude:
type: string
longitude:
type: string
name:
type: string
project_engineer_id:
description: ID of the project engineer user
nullable: true
type: integer
start:
format: date-time
type: string
status_report:
type: string
units_system:
type: string
type: object
UpdateProjectComment:
properties:
text:
description: The text of the comment.
maxLength: 32767
type: string
required:
- text
type: object
UpdateProjectGroup:
properties:
name:
description: New name for the project group.
maxLength: 254
minLength: 1
type: string
required:
- name
type: object
UpdateRole:
allOf:
- $ref: '#/components/schemas/UpdateCompanyRole'
- properties:
authed_tags:
items:
$ref: '#/components/schemas/TagAuth'
type: array
type: object
UpdateSaving:
properties:
open:
format: float
type: number
potential:
format: float
type: number
units:
type: string
units_context:
type: string
type: object
UpdateSetpoint:
properties:
id:
format: int64
type: integer
start:
format: date-time
type: string
value:
type: string
required:
- id
type: object
UpdateTag:
properties:
key:
type: string
value:
type: string
type: object
UpdateTagAssoc:
properties:
confirmed:
enum:
- 'true'
- 'false'
- unconfirmed
type: string
type: object
UpdateTask:
properties:
analytics_result:
description: |
New list of references of analytics results related to the task, fully replacing the old list.
items:
format: uuid
type: string
type: array
assignee_user_id:
description: The id of the new user assigned to the task.
format: int64
type: integer
componentinproject:
description: |
New list of ids of component instances related to the task, fully replacing the old list.
items:
format: int64
type: integer
type: array
description:
description: The updated description of the task.
maxLength: 32727
type: string
end:
description: The updated planned end time of the task.
format: date-time
type: string
plot_view_id:
description: id of the plot view related to the task
format: uuid
type: string
priority:
description: The updated priority of the task.
enum:
- low
- medium
- high
type: string
reporter_user_id:
description: The id of the new user who reported the task.
format: int64
type: integer
start:
description: The updated planned start time of the task.
format: date-time
type: string
status:
description: The updated status of the task.
enum:
- open
- doing
- review
- done
- rejected
- failed
type: string
title:
description: The updated title of the task.
maxLength: 100
type: string
required:
- title
- description
- status
- priority
- reporter_user_id
type: object
UpdateTaskComment:
properties:
text:
description: The text of the comment.
maxLength: 32727
type: string
required:
- text
type: object
UpdateUser:
properties:
address:
type: string
currency_system:
type: string
email:
format: email
type: string
firstName:
type: string
lastName:
type: string
locale:
type: string
phone:
type: string
units_system:
type: string
type: object
UploadAvatarRequest:
properties:
avatar:
description: The image file thats going to be stored
format: binary
type: string
required:
- avatar
type: object
UploadFileRequest:
properties:
file:
description: The file to upload.
format: binary
type: string
required:
- file
type: object
User:
properties:
address:
type: string
avatar_url:
type: string
company_id:
type: integer
currency_system:
type: string
email:
format: email
type: string
firstName:
type: string
id:
type: integer
lastName:
type: string
locale:
type: string
phone:
type: string
realm_role:
type: string
units_system:
type: string
type: object
UserProjectsPortfolio:
properties:
projects_portfolio:
description: Per-project portfolio entries, sorted by project name (Z to
A).
items:
$ref: '#/components/schemas/ProjectPortfolio'
type: array
type: object
UserWithContext:
properties:
ai_enabled:
description: Whether the user has AI access enabled
type: boolean
company:
$ref: '#/components/schemas/Company'
companyroles:
items:
$ref: '#/components/schemas/CompanyRole'
type: array
password_locked_until:
format: datetime
type: string
roles:
items:
$ref: '#/components/schemas/Role'
type: array
user:
$ref: '#/components/schemas/User'
type: object
VirtualDatapoint:
properties:
dataPointID:
type: string
description:
type: string
logs:
items:
type: object
type: array
parameters:
type: object
pins:
type: object
status:
$ref: '#/components/schemas/VirtualDatapointStatus'
vdp_type:
type: string
type: object
VirtualDatapointList:
properties:
items:
items:
$ref: '#/components/schemas/VirtualDatapointShort'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
VirtualDatapointShort:
properties:
dataPointID:
type: string
status:
$ref: '#/components/schemas/VirtualDatapointStatus'
type: object
VirtualDatapointStatus:
properties:
code:
type: integer
message:
type: string
type: object
securitySchemes:
basicAuth:
scheme: basic
type: http
x-basicInfoFunc: app.controllers.auth.connexion_basic_auth
openIDConnect:
flows:
implicit:
authorizationUrl: https://auth.aedifion.io/realms/aedifion/protocol/openid-connect/auth
scopes:
openid: Use OpenID Connect (required)
type: oauth2
x-tokenInfoFunc: app.controllers.auth.connexion_token_info
info:
description: |
Welcome to the interactive user interface (UI) for the aedifion REST API.
This UI allows you to
- browse documentation of all endpoints
- explore schemas and examples of request parameters and responses
- call endpoints and view responses
Further documentation as well as extensive guides and tutorials are available in the [official documentation](https://docs.aedifion.io/en/developers/http-api/).
title: API Docs
version: ''
openapi: 3.0.1
paths:
/ping:
get:
description: Ping api server.
operationId: ping
responses:
'200':
content:
application/json:
schema:
type: boolean
description: Successful operation. Returns a boolean 'true'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to get.
headers:
WWW_Authenticate:
schema:
type: string
summary: Ping api server.
tags:
- Meta
x-openapi-router-controller: app.controllers.meta_controller
/v2/alert/discrete:
post:
description: |
Creates a new discrete value alert, which fires while the datapoint's value is one of a
configured set of values (or, when negated, while it is not).
The alert is directly enabled and will become active immediately after creation.
operationId: post_alert_discrete
parameters:
- description: The numeric id of the project in which to create the alert.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewDiscreteAlert'
description: The details of the alert to create.
required: true
x-body-name: new_alert
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Alert'
description: Success. The alert has been created. The created alert is returned
in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details of the error are returned in
the 'error' field of the repsonse.
'415':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unsuccessful request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a new discrete value alert.
tags:
- Alert
x-openapi-router-controller: app.controllers.alert_controller
/v2/alert/threshold:
post:
description: |
Creates a new threshold alert. The alert is directly enabled and will become active immediately after creation.
operationId: post_alert_threshold
parameters:
- description: The id of the project in which to create the alert.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewThresholdAlert'
description: The details of the alert to create.
required: true
x-body-name: new_alert
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Alert'
description: Success. The alert has been created. The created alert is returned
in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details of the error are returned in
the 'error' field of the repsonse.
'415':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unsuccessful request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a new threshold alert.
tags:
- Alert
x-openapi-router-controller: app.controllers.alert_controller
/v2/alert/throughput:
post:
description: |
Creates a new throughput alert. The alert is directly enabled and will become active immediately after creation.
operationId: post_alert_throughput
parameters:
- description: The numeric id of the project in which to create the alert.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewThroughputAlert'
description: The details of the alert to create.
required: true
x-body-name: new_alert
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Alert'
description: Success. The alert has been created. The created alert is returned
in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details of the error are returned in
the 'error' field of the repsonse.
'415':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unsuccessful request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a new throughput alert.
tags:
- Alert
x-openapi-router-controller: app.controllers.alert_controller
/v2/alert/{alert_id}:
delete:
description: Delete an alert.
operationId: delete_alert_new
parameters:
- description: The id of the alert.
in: path
name: alert_id
required: true
schema:
format: int64
type: integer
responses:
'204':
content: {}
description: |
Success. The alert has been deleted. Per REST semantics this response has an
empty body (no content) — treat the 204 status itself as confirmation of deletion.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: No alert was found for the given id. Details are returned in
the 'error' field of the response.
security:
- basicAuth: []
- openIDConnect: []
summary: Delete an alert.
tags:
- Alert
x-openapi-router-controller: app.controllers.alert_controller
get:
description: Returns the details of a single alert.
operationId: get_alert
parameters:
- description: The id of the alert.
in: path
name: alert_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Alert'
description: Success. The alert is returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
No alert was found for the given id, or the alert was created with a previous version of
alerting and its definition can no longer be retrieved.
Details are returned in the 'error' field of the response.
security:
- basicAuth: []
- openIDConnect: []
summary: Get an alert.
tags:
- Alert
x-openapi-router-controller: app.controllers.alert_controller
patch:
description: |
Partially updates an existing alert. Only the provided fields are changed; omitted fields
keep their current values. The monitored datapoint and the alert type cannot be changed.
operationId: patch_alert
parameters:
- description: The id of the alert.
in: path
name: alert_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAlert'
description: The fields to update.
required: true
x-body-name: update_alert
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Alert'
description: Success. The alert has been updated. The updated alert is returned
in the response.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Invalid update. Details are returned in the 'error' field of
the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: No alert was found for the given id. Details are returned in
the 'error' field of the response.
security:
- basicAuth: []
- openIDConnect: []
summary: Partially update an alert.
tags:
- Alert
x-openapi-router-controller: app.controllers.alert_controller
/v2/alert/{alert_id}/disable:
post:
description: Disable an alert.
operationId: disable_alert
parameters:
- description: The id of the alert.
in: path
name: alert_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Alert'
description: |
Success.
The alert has been disabled or was already disabled.
The affected alert is returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: No alert was found for the given id. Details are returned in
the 'error' field of the response.
security:
- basicAuth: []
- openIDConnect: []
summary: Disable an alert.
tags:
- Alert
x-openapi-router-controller: app.controllers.alert_controller
/v2/alert/{alert_id}/enable:
post:
description: Enable an alert.
operationId: enable_alert
parameters:
- description: The id of the alert.
in: path
name: alert_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Alert'
description: |
Success.
The alert has been enabled or was already enabled.
The affected alert is returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: No alert was found for the given id. Details are returned in
the 'error' field of the response.
security:
- basicAuth: []
- openIDConnect: []
summary: Enable an alert.
tags:
- Alert
x-openapi-router-controller: app.controllers.alert_controller
/v2/analytics/componentInProject/{componentinproject_id}/results:
get:
description: |
Returns detailed information of a component containing analysis results and a list of result ids associated to it.
operationId: get_component_results
parameters:
- description: '[mandatory] The id of the component in project.'
in: path
name: componentinproject_id
required: true
schema:
format: int64
type: integer
- description: '[mandatory] The id of the project.'
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
- description: |
The optional system of units in which the analysis results should be returned (Example: **metric**).
Request the **GET /v2/labels/systems** endpoint to fetch available units systems.
in: query
name: units_system
schema:
type: string
- description: |
The optional currency system in which the analysis results should be returned (Example: **EUR**).
Request the **GET /v2/labels/systems** endpoint to fetch available currency systems.
in: query
name: currency_system
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsResultsForComponent'
description: Success
security:
- basicAuth: []
- openIDConnect: []
summary: Get analysis result references for a component.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/components/kpi_aggregation:
get:
description: Returns aggregated KPI results for components.
operationId: get_components_kpi_aggregation
parameters:
- description: '[mandatory] The id of the project.'
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: '[mandatory] The list of component ids.'
in: query
name: component_ids
required: true
schema:
items:
format: int64
type: integer
type: array
- description: The list of KPI identifiers to limit the result.
in: query
name: kpi_identifiers
required: false
schema:
items:
type: string
type: array
- description: The start time of the aggregation interval. It defaults to the
current timestamp minus one year.
in: query
name: start
required: false
schema:
format: date-time
type: string
- description: The end time of the aggregation interval. It defaults to the
current timestamp.
in: query
name: end
required: false
schema:
format: date-time
type: string
- description: |
Components in projects can be filtered by their attributes.
Format must be in the form of key=value.
Multiple filters can be applied, separated by a ';' like: key=value; key2=value
Filters with same key will be processed as 'Or' and 'And' across different keys.
Note that attribute keys are seen as suffixes. TODO: Improve this text.
in: query
name: attribute_filter
schema:
type: string
- description: |
The optional system of units in which the KPI aggregation results should be returned (Example: **metric**).
Request the **GET /v2/labels/systems** endpoint to fetch available units systems.
in: query
name: units_system
schema:
type: string
- description: |
The optional currency system in which the KPI aggregation results should be returned (Example: **EUR**).
Request the **GET /v2/labels/systems** endpoint to fetch available currency systems.
in: query
name: currency_system
schema:
type: string
- description: |
Desired aggregation method to be used for aggregating KPI results of a project over the given time interval.
Default method: "mean"
Available options:
- "max"
- "mean"
- "min"
- "sum"
- "latest_execution"
in: query
name: time_aggregation
required: false
schema:
default: mean
enum:
- max
- mean
- min
- sum
- latest_execution
type: string
- description: |
Desired aggregation method to be used for aggregating the aggregated KPI results of projects.
Default method: "mean"
Available options:
- "max"
- "mean"
- "min"
- "sum"
in: query
name: component_aggregation
required: false
schema:
default: mean
enum:
- max
- mean
- min
- sum
type: string
- $ref: '#/components/parameters/LanguageQueryParam'
- description: Page number.
in: query
name: page
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ComponentsKPIAggregationResult'
description: Success
security:
- basicAuth: []
- openIDConnect: []
summary: Get aggregated KPI results for components.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/componentsInProject:
get:
description: |
Returns a list of components in a project including their corresponding signal-color.
**Note** that `"signal_color": "grey"` indicates, that a component does not have results yet.
operationId: get_analysis_components
parameters:
- description: '[mandatory] The id of the project.'
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: Page number.
in: query
name: page
required: false
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
required: false
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
- description: |
Optional parameter, filter on the name of the component in the project.
You can also search by the component type, translated into the chosen language,
e.g. "boiler" with language "en" or "Kessel" with language "de".
in: query
name: search
required: false
schema:
type: string
- description: |
Results can be filtered by keys: alphanumeric_id, signal_color and status.
alphanumeric_id refers to the corresponding components.
signal_color can be one of: red, yellow, green, grey
status can be one of: Success., Failed., Processing.
Format must be in the form of key=value.
Multiple filters can be applied, separated by a ';' like: key=value; key2=value
Filters with same key will be processed as 'Or' and 'And' across different keys.
in: query
name: filter
required: false
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsResultsForComponents'
description: Success
security:
- basicAuth: []
- openIDConnect: []
summary: Get components in a project with signal color.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/functions:
get:
description: |
Returns a list of available analysis functions. If a component name or id is passed, functions are filtered for the component.
operationId: get_analysis_functions
parameters:
- description: Filter functions by component alphanumeric id.
in: query
name: component_alphanumeric_id
required: false
schema:
type: string
- description: Filter functions by component id.
in: query
name: component_id
required: false
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/AnalysisFunction'
type: array
description: Success
security:
- basicAuth: []
- openIDConnect: []
summary: Get a list of available analysis functions.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/instance:
post:
description: |
Creates an analysis config instance for a component in a project.
operationId: post_analysis_instance
parameters:
- description: '[mandatory] The id of the project.'
in: query
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewInstanceConfig'
description: '[mandatory] The anaylsis config.'
required: true
x-body-name: instance_config
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/InstanceConfig'
description: Success
security:
- basicAuth: []
- openIDConnect: []
summary: Create an analysis instance.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/instance/{instance_id}:
delete:
description: |
Deletes an analysis instance configured in a project.
operationId: delete_analysis_instance
parameters:
- description: '[mandatory] The id of the project.'
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: '[mandatory] The id of the instance.'
in: path
name: instance_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The deleted instance is returned in the 'resource' field and the 'operation' is set to 'delete'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unsuccessful request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'."
security:
- basicAuth: []
- openIDConnect: []
summary: Delete an analysis instance configured in a project.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
get:
description: |
Returns details of an analysis instance configured in a project.
operationId: get_analysis_instance
parameters:
- description: '[mandatory] The id of the project.'
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: '[mandatory] The id of the instance.'
in: path
name: instance_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/InstanceConfig'
description: Success
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unsuccessful request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
security:
- basicAuth: []
- openIDConnect: []
summary: Get a detailed analysis instance.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
put:
description: |
Updates an analysis instance.
operationId: put_analysis_instance
parameters:
- description: '[mandatory] The id of the project.'
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: '[mandatory] The id of the instance.'
in: path
name: instance_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateInstanceConfig'
description: '[mandatory] The anaylsis config.'
required: true
x-body-name: instance_config
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/InstanceConfig'
description: Success
security:
- basicAuth: []
- openIDConnect: []
summary: Update an analysis instance.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/instance/{instance_id}/result/{result_id}:
get:
description: |
Returns the result of an executed instance referenced by its result_id.
aedifion.io and any add-ons do not include energy consulting. All data calculated, analysed and/or displayed by aedifion.io and any add-ons, especially setting values (e.g. room temperature) or the mappings of datapoints, are non-binding recommendations that have to be carefully checked by the user's qualified personnel in each individual case before implementation ("human-in-the-loop principle").
operationId: get_instance_result
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the instance.
in: path
name: instance_id
required: true
schema:
format: int64
type: integer
- description: result id to the executed instance.
in: path
name: result_id
required: true
schema:
type: string
- description: |
Choose language in which the results should be displayed.
- 'en' for English
- 'de' for German.
in: query
name: result_language
required: false
schema:
enum:
- en
- de
type: string
- description: |
The optional system of units in which the analysis results should be returned (Example: **metric**).
Request the **GET /v2/labels/systems** endpoint to fetch available units systems.
in: query
name: units_system
schema:
type: string
- description: |
The optional currency system in which the analysis results should be returned (Example: **EUR**).
Request the **GET /v2/labels/systems** endpoint to fetch available currency systems.
in: query
name: currency_system
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AnalysisResult'
description: Success
security:
- basicAuth: []
- openIDConnect: []
summary: Get the result of an executed instance.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/instance/{instance_id}/results:
get:
description: |
Returns a list of executions for an instance.
operationId: get_instance_results
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the instance.
in: path
name: instance_id
required: true
schema:
format: int64
type: integer
- description: |
Choose language in which the interpretations should be displayed.
- 'en' for English
- 'de' for German.
in: query
name: result_language
required: false
schema:
enum:
- en
- de
type: string
- description: |
The optional system of units in which the analysis results should be returned (Example: **metric**).
Request the **GET /v2/labels/systems** endpoint to fetch available units systems.
in: query
name: units_system
schema:
type: string
- description: |
The optional currency system in which the analysis results should be returned (Example: **EUR**).
Request the **GET /v2/labels/systems** endpoint to fetch available currency systems.
in: query
name: currency_system
schema:
type: string
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/AnalysisResultSummary'
type: array
description: Success
security:
- basicAuth: []
- openIDConnect: []
summary: Get list of executions for an analysis instance.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/instance/{instance_id}/run:
post:
description: |
Runs the analysis instance and returns a result_id which can be used to retrieve the result of the execution.
operationId: post_analysis_instance_run
parameters:
- description: '[mandatory] The id of the project.'
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: '[mandatory] The id of the instance.'
in: path
name: instance_id
required: true
schema:
format: int64
type: integer
- description: '[mandatory] The start timestamp of the interval analysed.'
in: query
name: start
required: true
schema:
format: date-time
type: string
- description: '[mandatory] The end timestamp of the interval analysed.'
in: query
name: end
required: true
schema:
format: date-time
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized
security:
- basicAuth: []
- openIDConnect: []
summary: Run an analysis instance.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/instances:
get:
description: |
Returns details of all analysis config instances configured in a project.
operationId: get_analysis_instances
parameters:
- description: '[mandatory] The id of the project.'
in: query
name: project_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/InstanceConfig'
type: array
description: Success
security:
- basicAuth: []
- openIDConnect: []
summary: Get details of all analysis instances.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/instances/run:
post:
description: |
Runs multiple analysis instances in batch for calculated execution periods based on their execution schedules.
The execution periods are calculated based on the execution_schedule of each analysis function:
- Monthly: Always 1st of month to 1st of next month in UTC
- Weekly: Always Monday to Monday in project timezone
operationId: post_analytics_instances_run
parameters:
- description: '[mandatory] The id of the project.'
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: '[mandatory] List of instance IDs to execute.'
in: query
name: instance_ids
required: true
schema:
items:
format: int64
type: integer
type: array
- description: '[mandatory] The start timestamp of the date range for calculating
execution periods.'
in: query
name: start
required: true
schema:
format: date-time
type: string
- description: '[optional] The end timestamp of the date range. If not provided,
defaults to current date.'
in: query
name: end
required: false
schema:
format: date-time
type: string
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Success. All instances were found and started successfully.
Returns list of created result IDs.
'207':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Success'
- properties:
resource:
$ref: '#/components/schemas/AnalyticsInstancesRunResponse'
type: object
description: |
Multi-Status.
Some instances were not found or some analyses failed to run.
Returns list of created result IDs and list of instance IDs not found.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized
security:
- basicAuth: []
- openIDConnect: []
summary: Run analysis instances in batch.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/instances/scheduled/run:
post:
description: |
Runs all scheduled analysis instances of a project for calculated execution periods based on their execution schedules.
The execution periods are calculated based on the execution_schedule of each analysis function:
- Monthly: Always 1st of month to 1st of next month in UTC
- Weekly: Always Monday to Monday in project timezone
operationId: post_analytics_scheduled_instances_run
parameters:
- description: '[mandatory] The ID of the project.'
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: Execution schedule of the instances. Defaults to all.
in: query
name: execution_schedule
required: true
schema:
default: all
enum:
- all
- weekly
- monthly
type: string
- description: '[mandatory] The start timestamp of the date range for calculating
execution periods.'
in: query
name: start
required: true
schema:
format: date-time
type: string
- description: '[optional] The end timestamp of the date range. If not provided,
defaults to current UTC datetime.'
in: query
name: end
required: false
schema:
format: date-time
type: string
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Success. All scheduled instances started successfully. Returns
list of created result IDs.
'207':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Success'
- properties:
resource:
$ref: '#/components/schemas/AnalysisResultReferences'
type: object
description: |
Multi-Status.
Some instances were already running.
Returns list of created result IDs and a warning message if instances are already running.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized
security:
- basicAuth: []
- openIDConnect: []
summary: Run all scheduled analysis instances of a project.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/kpi:
post:
description: |
Creates a KPI for a component.
If a KPI with the same type and identifier already exists, it will be updated.
Manually created KPIs supersede KPIs generated by .analytics.
operationId: post_analytics_kpi
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/KPI'
description: |
The KPI to post:
- **component_in_project_id**: the ID of the project component
- **identifier**: the unique identifier of the KPI
- **context**: the context of the KPI
- **type**: the type of the KPI, either "actual" or "potential"
- **value**: the value of the KPI
- **units**: the unit of the KPI
- **units_context** [optional]: the context of the unit. Defaults to "default"
required: true
x-body-name: kpi
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Successful operation. The newly created KPI is returned in
the 'resource' field.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Post a KPI for a component.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/kpi/{kpi_id}:
delete:
description: Delete a KPI of a project with the source user. KPIs with other
sources cannot be deleted.
operationId: delete_user_analytics_kpi
parameters:
- description: '[mandatory] The id of the KPI.'
in: path
name: kpi_id
required: true
schema:
format: int64
type: integer
responses:
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad request.
The specified KPI cannot be deleted because it was not created by a user.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Not Found. The specified KPI does not exist.
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a KPI of a project.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/kpi_aggregation:
get:
description: Returns aggregated KPI results for projects.
operationId: get_kpi_aggregation
parameters:
- description: '[mandatory] The list of project ids.'
in: query
name: project_ids
required: true
schema:
items:
format: int64
type: integer
type: array
- description: |
[mandatory] KPI identifier to aggregate.
Request the **GET /v2/analytics/functions** endpoint to fetch available KPIs.
in: query
name: kpi
required: true
schema:
type: string
- description: The start time of the aggregation interval. It defaults to the
current timestamp minus one year.
in: query
name: start
required: false
schema:
format: date-time
type: string
- description: The end time of the aggregation interval. It defaults to the
current timestamp.
in: query
name: end
required: false
schema:
format: date-time
type: string
- description: |
The length of the time duration for the KPI aggregation.
**NOTE:** It should be in ISO8601 duration format.
Examples: P1Y, P5M, P2W, P13D
in: query
name: time_window
required: false
schema:
format: iso8601
type: string
- description: |
The optional system of units in which the KPI aggregation results should be returned (Example: **metric**).
Request the **GET /v2/labels/systems** endpoint to fetch available units systems.
in: query
name: units_system
schema:
type: string
- description: |
The optional currency system in which the KPI aggregation results should be returned (Example: **EUR**).
Request the **GET /v2/labels/systems** endpoint to fetch available currency systems.
in: query
name: currency_system
schema:
type: string
- description: |
Desired aggregation method to be used for aggregating KPI results of a project over the given time interval.
Default method: "mean"
Available options:
- "max"
- "mean"
- "min"
- "sum"
in: query
name: time_aggregation
required: false
schema:
default: mean
enum:
- max
- mean
- min
- sum
type: string
- description: |
Desired aggregation method to be used for aggregating the aggregated KPI results of projects.
Default method: "mean"
Available options:
- "max"
- "mean"
- "median"
- "min"
- "mode"
- "sum"
in: query
name: project_aggregation
required: false
schema:
default: mean
enum:
- max
- mean
- median
- min
- mode
- sum
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/KPIAggregationResult'
description: Success
security:
- basicAuth: []
- openIDConnect: []
summary: Get aggregated KPI results for projects.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/overview:
get:
description: Returns an overview of the latest analysis results for all components
in project, grouped by component type.
operationId: get_analytics_overview
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsOverview'
description: Success
security:
- basicAuth: []
- openIDConnect: []
summary: Get an overview of analysis results for all component types.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/potentials:
get:
description: |
Returns the savings potentials calculated by the latest project analyses.
operationId: get_potentials
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
- description: |
The optional system of units in which the savings potentials should be returned (Example: **metric**).
Request the **GET /v2/labels/systems** endpoint to fetch available units systems.
in: query
name: units_system
schema:
type: string
- description: |
The optional currency system in which the savings potentials results should be returned (Example: **EUR**).
Request the **GET /v2/labels/systems** endpoint to fetch available currency systems.
in: query
name: currency_system
schema:
type: string
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/SavingsPotential'
type: array
description: Success
security:
- basicAuth: []
- openIDConnect: []
summary: Get savings potentials for a project.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/projects/kpis_aggregation:
get:
description: Returns aggregated KPI results across projects for multiple KPI
identifiers at a given reference date.
operationId: get_projects_kpis_aggregation
parameters:
- description: List of project IDs to aggregate KPIs for.
in: query
name: project_ids
required: true
schema:
items:
format: int64
type: integer
type: array
- description: List of KPI identifiers to aggregate.
in: query
name: kpi_identifiers
required: true
schema:
items:
type: string
type: array
- description: |
The reference timestamp (RFC3339) used to identify the most recent KPI execution.
Defaults to current UTC time.
in: query
name: reference_date
required: false
schema:
format: date-time
type: string
- description: |
The optional system of units in which the aggregation results should be returned (Example: **metric**).
Request the **GET /v2/labels/systems** endpoint to fetch available units systems.
in: query
name: units_system
schema:
type: string
- description: |
The optional currency system in which the aggregation results should be returned (Example: **EUR**).
Request the **GET /v2/labels/systems** endpoint to fetch available currency systems.
in: query
name: currency_system
schema:
type: string
- description: |
Desired aggregation method to be used for aggregating the KPI results across projects.
Default method: "mean"
Available options:
- "max"
- "mean"
- "median"
- "min"
- "mode"
- "sum"
in: query
name: project_aggregation
required: false
schema:
default: mean
enum:
- max
- mean
- median
- min
- mode
- sum
type: string
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ProjectsKPIAggregation'
type: array
description: Success
security:
- basicAuth: []
- openIDConnect: []
summary: Get aggregated KPI results across projects.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/result/{result_id}:
delete:
description: Deletes an analysis result of a project.
operationId: delete_instance_result
parameters:
- description: '[mandatory] The id of the project.'
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: '[mandatory] id of the analysis result.'
in: path
name: result_id
required: true
schema:
format: uuid
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
Short summary of the deleted analysis result returned in the 'resource' field of the response.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Not found.
Analysis result for given 'result_id' could not be found.
security:
- basicAuth: []
- openIDConnect: []
summary: Delete the result of an executed instance.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/savings:
get:
description: |
Returns the kpi savings calculated by the latest project analysis.
operationId: get_savings
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
- description: |
The optional system of units in which the savings should be returned (Example: **metric**).
Request the **GET /v2/labels/systems** endpoint to fetch available units systems.
in: query
name: units_system
schema:
type: string
- description: |
The optional currency system in which the savings results should be returned (Example: **EUR**).
Request the **GET /v2/labels/systems** endpoint to fetch available currency systems.
in: query
name: currency_system
schema:
type: string
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ComponentSavings'
type: array
description: Success
security:
- basicAuth: []
- openIDConnect: []
summary: Get KPI savings for a project.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
post:
description: Creates a saving for a project component.
operationId: post_saving
parameters:
- description: '[mandatory] The id of the component in project.'
in: query
name: componentinproject_id
required: true
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewSaving'
description: The details of the saving to create.
required: true
x-body-name: new_saving
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ComponentSavings'
description: Successful operation. The saving has been created and returned
in response.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Bad request. Details on the error are returned in the 'error'
field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Post a saving for a project component.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/analytics/savings/{saving_id}:
delete:
description: Delete a saving with given saving_id.
operationId: delete_saving
parameters:
- description: The id of the saving to delete.
in: path
name: saving_id
required: true
schema:
format: uuid
type: string
responses:
'204':
content: {}
description: Success. The saving has been deleted.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Not Found. The specified saving does not exist.
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a saving.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
patch:
description: Patch a saving with given saving_id.
operationId: patch_saving
parameters:
- description: The id of the saving to update.
in: path
name: saving_id
required: true
schema:
format: uuid
type: string
- $ref: '#/components/parameters/LanguageQueryParam'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSaving'
description: |
The Saving to patch: only mutable fields could be updated.
- **open** [optional]: the open value of the saving.
- **potential** [optional]: the potential value of the saving.
- **units** [optional]: the unit of the saving.
- **units_context** [optional]: the context of the unit.
required: true
x-body-name: saving
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ComponentSavings'
description: Success. The saving has been update.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Not Found. The specified saving does not exist.
security:
- basicAuth: []
- openIDConnect: []
summary: Patch a saving.
tags:
- Analytics
x-openapi-router-controller: app.controllers.analytics_controller
/v2/company:
get:
description: Returns a list of projects and users defined for the queried company.
operationId: get_company
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyWithContext'
description: Successful operation. Returns the company's projects and users.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all projects and users defined in the company.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
put:
description: Updates the details for the company of the logged in user.
operationId: put_company
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCompany'
description: |
The details of the updated user:
- **description** is optional, the new description of the updated company
- **address** is optional, the address of the updated company
- **phone** is optional, the phone of the updated company
required: true
x-body-name: company
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Update the details for the company of the logged in user.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/avatar:
delete:
description: Deletes the current avatar image of the user's company
operationId: delete_company_avatar
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Successful operation.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Out of service.
security:
- basicAuth: []
- openIDConnect: []
summary: Deletes the current avatar image of the user's company
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
post:
description: Uploads and stores an image for the current user's company
operationId: post_company_avatar
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadAvatarRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Successful operation.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: File is not an image file.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Out of service.
security:
- basicAuth: []
- openIDConnect: []
summary: Uploads and stores an image for the current user's company
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/file:
delete:
description: Delete a file on the company's document database.
operationId: delete_company_file
parameters:
- description: Path to file to be deleted.
in: query
name: path
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The details of deleted resource is returned in the 'resource' field and the 'operation' is set to 'delete'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a file on the company's document database.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
get:
description: Download a file from the company's document database.
operationId: get_company_file
parameters:
- description: Path to the file to download.
in: query
name: path
required: true
schema:
type: string
- description: |
The time period for which the generated link is valid.
Acceptable format is a number followed by 's', 'm', 'h', 'd' for seconds, minutes, hours and days respectively.
- Examples: 1h, 30m, 7d.
- Minimum allowed value: 1s.
- Maximum allowed value: 7d
in: query
name: expiry
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/File'
description: Successful operation. The details of the file along with a
downloadable link is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Download a file from the company's document database.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
post:
description: Upload a file to the company's document database.
operationId: post_company_file
parameters:
- description: |
Path to a sub-folder, if required. If the folder doesn't exist, it will be created.
Paths are normalized: consecutive, leading, and trailing slashes are removed.
The folder nesting depth must not exceed the configured maximum (see the 'max_folder_depth' quota limit returned by the quota endpoint).
in: query
name: folder
required: false
schema:
type: string
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadFileRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The details of uploaded resource is returned in the 'resource' field and the 'operation' is set to 'create'.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad request.
The file path is invalid or the folder nesting depth exceeds the configured maximum.
Filenames and paths may only contain alphanumeric characters, '/', '_', '-', and spaces; the filename must have an extension separated by a dot.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Upload a file to the company's document database.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
put:
description: Replace a file on the company's document database.
operationId: put_company_file
parameters:
- description: |
Path to a sub-folder.
Paths are normalized: consecutive, leading, and trailing slashes are removed.
The folder nesting depth must not exceed the configured maximum (see the 'max_folder_depth' quota limit returned by the quota endpoint).
in: query
name: folder
required: false
schema:
type: string
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadFileRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The details of uploaded resource is returned in the 'resource' field and the 'operation' is set to 'update'.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad request.
The file path is invalid or the folder nesting depth exceeds the configured maximum.
Filenames and paths may only contain alphanumeric characters, '/', '_', '-', and spaces; the filename must have an extension separated by a dot.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'update'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Replace a file on the company's document database.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/files:
get:
description: Get a list of files from the company's document database.
operationId: get_company_files
parameters:
- description: Search file database. All files or folders matching the search
string will be returned.
in: query
name: search
schema:
type: string
- description: Page number.
in: query
name: page
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FilesList'
description: A list of files along with its details is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a list of files from the company's document database.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/quota:
get:
description: Returns quota for various services enabled for the company.
operationId: get_company_quota
parameters:
- description: Optional parameter, filter quota for a specific service.
in: query
name: service
schema:
enum:
- files
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Quotas'
description: Successful operation. Returns quota for services.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get quota for various services enabled for the company.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/role:
post:
description: Creates a new role for the company, user is logged in with.
operationId: post_company_role
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewCompanyRole'
description: |
The details of the role to create\n
- **name** is mandatory
- **description** is optional (default = \"\")
- **authed_endpoints** is mandatory, the list of numeric endpoint ids the specified role can access
required: true
x-body-name: role_definition
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyRole'
description: Successful operation. Returns details of created role.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'post'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a new role for the logged user's company.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/role/{role_id}:
delete:
description: Deletes an existing role for this company.
operationId: delete_company_role
parameters:
- description: The id of the role that should be deleted.
in: path
name: role_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The deleted project is returned within the 'resource' field and 'operation' will indicate a 'delete' operation
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete an existing role for the company.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
put:
description: Updates an existing role for the company.
operationId: put_company_role
parameters:
- description: The id of the role.
in: path
name: role_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCompanyRole'
description: |
The details of the role to create\n
- **name** that needs to be edited
- **description** that needs to be edited
- **endpoints** is the list of numeric endpoint ids the specified role can access
required: true
x-body-name: role_definition
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyRole'
description: Successful operation. Returns details of edited role.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'post'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Updates an existing role for the company.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/role/{role_id}/user/{user_id}:
delete:
description: Removes role with id 'role_id' from user with id 'id'.
operationId: delete_user_company_role
parameters:
- description: The unique id of the user
in: path
name: user_id
required: true
schema:
format: int64
type: integer
- description: The unique id of the role
in: path
name: role_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The deleted relation between 'user' and 'role' is returned in the 'resource' field of the response and 'operation' is set to 'delete'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Removes a role from a user.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
post:
description: Assigns role with its id 'role_id' to user with her/his id 'id'.
operationId: post_user_company_role
parameters:
- description: The unique id of the user
in: path
name: user_id
required: true
schema:
format: int64
type: integer
- description: The unique id of the role
in: path
name: role_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The newly created relation between 'user' and 'role' is returned in the 'resource' field of the response and 'operation' is set to 'create'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Assign a role to a user.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/roles:
get:
description: Returns a list of roles defined for the queried company.
operationId: get_company_roles
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListOfCompanyRoles'
description: Successful operation. Returns a list of roles in the queried
company.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all roles defined in the company.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/user:
post:
description: Creates a new user with the specified details.
operationId: post_user
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewUser'
description: |
The details of the user to create\n
- **firstName** is mandatory, the first name of the new user
- **lastName** is mandatory, the last name of the new user
- **email** is mandatory, must be unique among all users
- **password** is mandatory, the initial password for the new user
- **address** is optional, the address of the updated user
- **phone** is optional, the phone number of the updated user
- **units_system** is optional, the preferred system of units of the updated user
- **currency_system** is optional, the preferred currency system of the updated user
- **locale** is optional, the locale of the updated user
required: true
x-body-name: user_body
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation. The newly created user is returned in
the 'resource' field and the 'operation' will indicate a CREATE operation.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unsuccessful request. The error is returned in the 'error'
field.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a new user.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/user/{user_id}:
delete:
description: Deletes an existing user within the company.
operationId: delete_user_company
parameters:
- description: id of the user that would be deleted.
in: path
name: user_id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The deleted user is returned in the 'resource' field and the 'operation' will indicate a DELETE operation.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unsuccessful request. The error is returned in the 'error'
field.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete an existing user within the company.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
get:
description: |
Get a user within the company.
**Note**: Only company admins can fetch user details of users within the same company while non-admins can only fetch their own user details.
operationId: get_company_user
parameters:
- description: id of the user that will be updated.
in: path
name: user_id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UserWithContext'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unsuccessful request.
The error is returned in the 'error' field.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a user within the company.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
put:
description: |
Updates an existing user within the company.
**Note**: Only company admins can update user details of users within the same company while non-admins can only update their own user details.
operationId: put_company_user
parameters:
- description: id of the user that will be updated.
in: path
name: user_id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUser'
description: |
The details of the updated user:
- **firstName** is optional, the new first name of the updated user
- **lastName** is optional, the new last name of the updated user
- **units_system** is optional, the preferred system of units of the updated user
- **currency_system** is optional, the preferred currency system of the updated user
- **locale** is optional, the locale of the updated user
- **address** is optional, the address of the updated user
- **phone** is optional, the phone number of the updated user
required: true
x-body-name: user_details
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The updated user is returned in the 'resource' field and the 'operation' will indicate a PUT operation.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unsuccessful request.
The error is returned in the 'error' field.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Updates an existing user within the company.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/{company_id}:
get:
description: Returns a list of projects and users defined for the queried company.
operationId: get_company_by_id
parameters:
- description: id of the company.
in: path
name: company_id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyWithContext'
description: Successful operation. Returns the company's projects and users.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all projects and users defined in the company.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/{company_id}/project:
post:
description: Creates a new project with the specified details.
operationId: post_company_project
parameters:
- description: The id of the company to create the project for.
in: path
name: company_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewProject'
description: |
The details of the project to create
- **name** is mandatory
- **description** is optional (default = \"\")
- **units_system** is optional, the preferred system of units for the project
- **currency_system** is optional, the preferred currency system for the project
required: true
x-body-name: project
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyProjectResponse'
description: |
Successful operation. The created project is returned under
'resource.project' and its auto-created admin role under 'resource.role'.
The project is created **unprovisioned**: it has no handle, no load
balancing group and no slug, and cannot ingest or serve data until the
provisioning step is done.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad request.
Invalid input data.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
The error is returned in the 'error' field.
headers:
WWW_Authenticate:
schema:
type: string
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Project creation is temporarily disabled.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: The company or a referenced manager was not found.
security:
- basicAuth: []
- openIDConnect: []
summary: Create a new project.
tags:
- Realm
x-openapi-router-controller: app.controllers.realm_controller
/v2/company/{company_id}/project-groups:
post:
description: |
Creates a new project group for the company, optionally assigning projects to it.
Projects that do not belong to the company are silently ignored.
operationId: post_company_project_group
parameters:
- description: The id of the company that the project group belongs to.
in: path
name: company_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewProjectGroup'
description: The details of the project group to create.
required: true
x-body-name: project_group
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectGroup'
description: |
Success.
The project group has been created.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad request.
Invalid input data.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
The error is returned in the 'error' field.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Company not found.
security:
- basicAuth: []
- openIDConnect: []
summary: Create a project group.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/{company_id}/project-groups/{project_group_id}:
delete:
description: |
Deletes an existing project group.
The member projects themselves are not deleted.
operationId: delete_company_project_group
parameters:
- description: The id of the company that the project group belongs to.
in: path
name: company_id
required: true
schema:
format: int64
type: integer
- description: The id of the project group to delete.
in: path
name: project_group_id
required: true
schema:
format: int64
type: integer
responses:
'204':
content: {}
description: |
Success.
The project group has been deleted.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
The error is returned in the 'error' field.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Project group not found.
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a project group.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
put:
description: Updates the name of an existing project group.
operationId: put_company_project_group
parameters:
- description: The id of the company that the project group belongs to.
in: path
name: company_id
required: true
schema:
format: int64
type: integer
- description: The id of the project group to update.
in: path
name: project_group_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProjectGroup'
description: The new details of the project group.
required: true
x-body-name: project_group
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectGroup'
description: |
Success.
The project group has been updated.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad request.
Invalid input data.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
The error is returned in the 'error' field.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Project group not found.
security:
- basicAuth: []
- openIDConnect: []
summary: Rename a project group.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/{company_id}/project-groups/{project_group_id}/projects/{project_id}:
delete:
description: |
Removes the project with id 'project_id' from the project group with id 'project_group_id'.
The operation is idempotent: unassigning a project that is not in the group succeeds without error.
The project and the group must belong to the company with id 'company_id'.
operationId: delete_project_in_project_group
parameters:
- description: The unique id of the company
in: path
name: company_id
required: true
schema:
format: int64
type: integer
- description: The unique id of the project group
in: path
name: project_group_id
required: true
schema:
format: int64
type: integer
- description: The unique id of the project
in: path
name: project_id
required: true
schema:
format: int64
type: integer
responses:
'204':
content: {}
description: Successful operation. The project is unassigned from the project
group. No content is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Not found. The project group or project does not exist or does
not belong to the company.
security:
- basicAuth: []
- openIDConnect: []
summary: Unassign a project from a project group.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
post:
description: |
Assigns the project with id 'project_id' to the project group with id 'project_group_id'.
The operation is idempotent: assigning an already-assigned project succeeds without creating a duplicate.
The project and the group must belong to the company with id 'company_id'.
operationId: post_project_in_project_group
parameters:
- description: The unique id of the company
in: path
name: company_id
required: true
schema:
format: int64
type: integer
- description: The unique id of the project group
in: path
name: project_group_id
required: true
schema:
format: int64
type: integer
- description: The unique id of the project
in: path
name: project_id
required: true
schema:
format: int64
type: integer
responses:
'204':
content: {}
description: Successful operation. The project is assigned to the project
group. No content is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Not found. The project group or project does not exist or does
not belong to the company.
security:
- basicAuth: []
- openIDConnect: []
summary: Assign a project to a project group.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/{company_id}/project/{project_id}/setup:
post:
description: |
Provisions the backend resources for an existing project: it auto-assigns a load
balancing group, then creates the backing storage and messaging resources with their
credentials and topic authorizations. The project handle is derived from the given
slug. This is a one-shot operation and cannot be re-run for a project that already
has a slug, handle or load balancing group set.
operationId: post_project_setup
parameters:
- description: The id of the company that owns the project.
in: path
name: company_id
required: true
schema:
format: int64
type: integer
- description: The id of the project to provision.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The project slug from which the handle is derived.
in: query
name: slug
required: true
schema:
maxLength: 126
minLength: 3
pattern: ^[a-z0-9_-]+$
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectSetupResponse'
description: |
Success.
The project has been provisioned and the created resources are returned.
The returned credentials are shown only once and cannot be retrieved later.
Store them before discarding the response.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad request.
The slug is invalid or the project is missing prerequisites.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response.
headers:
WWW-Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Not found.
The project was not found.
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Conflict.
The project is already provisioned or the slug/handle is already in use.
'503':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Provisioning unavailable.
An external resource failed, or no load balancing group is configured.
security:
- basicAuth: []
- openIDConnect: []
summary: Provision the backend resources for a project.
tags:
- Realm
x-openapi-router-controller: app.controllers.realm_controller
/v2/company/{company_id}/role/{role_id}/user/{user_id}:
delete:
description: Removes role with id 'role_id' from user with id 'id'.
operationId: delete_user_company_role_by_company_id
parameters:
- description: The unique id of the company
in: path
name: company_id
required: true
schema:
format: int64
type: integer
- description: The unique id of the user
in: path
name: user_id
required: true
schema:
format: int64
type: integer
- description: The unique id of the role
in: path
name: role_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The deleted relation between 'user' and 'role' is returned in the 'resource' field of the response and 'operation' is set to 'delete'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Removes a role from a user.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
post:
description: Assigns role with its id 'role_id' to user with her/his id 'id'.
operationId: post_user_company_role_by_company_id
parameters:
- description: The unique id of the company
in: path
name: company_id
required: true
schema:
format: int64
type: integer
- description: The unique id of the user
in: path
name: user_id
required: true
schema:
format: int64
type: integer
- description: The unique id of the role
in: path
name: role_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The newly created relation between 'user' and 'role' is returned in the 'resource' field of the response and 'operation' is set to 'create'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Assign a role to a user.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/company/{company_id}/user:
post:
description: Creates a new user with the specified details.
operationId: post_user_by_company_id
parameters:
- description: The id of the company that the role belongs to.
in: path
name: company_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewUser'
description: |
The details of the user to create\n
- **firstName** is mandatory, the first name of the new user
- **lastName** is mandatory, the last name of the new user
- **email** is mandatory, must be unique among all users
- **password** is mandatory, the initial password for the new user
- **address** is optional, the address of the updated user
- **phone** is optional, the phone number of the updated user
- **units_system** is optional, the preferred system of units of the updated user
- **currency_system** is optional, the preferred currency system of the updated user
- **locale** is optional, the locale of the updated user
required: true
x-body-name: user_body
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The newly created user is returned in the 'resource' field and the 'operation' will indicate a CREATE operation.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unsuccessful request. The error is returned in the 'error'
field.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a new user.
tags:
- Company
x-openapi-router-controller: app.controllers.company_controller
/v2/component/{component_id}/attributeDefinitions:
get:
description: Gets a list of attribute definitions for the component.
operationId: get_component_attribute_definitions
parameters:
- description: The id of the component.
in: path
name: component_id
required: true
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ComponentAttributeDefinition'
type: array
description: |
Successful operation.
A list of available attribute definitions are returned for the component in the 'resource' field and the 'operation' is set to 'get'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all available attribute definitions for the component.
tags:
- Component
x-openapi-router-controller: app.controllers.component_controller
/v2/component/{component_id}/pins:
get:
description: Gets all the defined pins for the component.
operationId: get_component_pins
parameters:
- description: The id of the component to get pins.
in: path
name: component_id
required: true
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/Pin'
type: array
description: |
Successful operation.
A list of pins and its attributes are returned for the component in the 'resource' field and the 'operation' is set to 'get'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all pins and its attributes for the component.
tags:
- Component
x-openapi-router-controller: app.controllers.component_controller
/v2/components:
get:
description: Gets all the available components to be used in a project.
operationId: get_components
parameters:
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/Component'
type: array
description: |
Successful operation.
A list of component ids along with their english and german names are returned in the 'resource' field and the 'operation' is set to 'get'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all available components.
tags:
- Component
x-openapi-router-controller: app.controllers.component_controller
/v2/controls/algorithms_by_component:
get:
description: Get a list of controls algorithms and their variations for abstract
components with pin and attribute details.
operationId: get_controls_algorithms_by_component
parameters:
- description: Filter controls algorithm by component alphanumeric ids.
in: query
name: component_alphanumeric_ids
required: false
schema:
items:
type: string
type: array
- description: Filter controls algorithm by algorithm identifier.
in: query
name: algorithms
required: false
schema:
items:
type: string
type: array
responses:
'200':
content:
application/json:
schema:
example:
COMPONENT_ALPHANUMERIC_ID:
algorithm:
default:
attributes:
- attribute_alphanumeric_id: ATTRIBUTE_ALPHANUMERIC_ID_1
default_value: 1.0
required: true
pins:
input:
- pin_alphanumeric_id: PIN_ALPHANUMERIC_ID_1
required: true
output:
- pin_alphanumeric_id: PIN_ALPHANUMERIC_ID_SP_2
required: true
variation1:
attributes:
- attribute_alphanumeric_id: ATTRIBUTE_ALPHANUMERIC_ID_2
default_value: 10
required: false
pins:
input:
- pin_alphanumeric_id: PIN_ALPHANUMERIC_ID_3
required: true
output:
- pin_alphanumeric_id: PIN_ALPHANUMERIC_ID_SP_4
required: true
type: object
description: An object with the available controls algorithms for the components.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a list of controls algorithms and their variations with details
grouped by components.
tags:
- Controls
x-openapi-router-controller: app.controllers.controls_controller
/v2/controls/app:
delete:
description: Deletes a controls app in the project.
operationId: delete_controls_app
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the controls app.
in: query
name: controls_app_id
required: true
schema:
format: uuid
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ControlsAppShort'
description: The controls app marked for deletion is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a controls app in the project.
tags:
- Controls
x-openapi-router-controller: app.controllers.controls_controller
post:
description: Requests to create a controls app in the project with given componentinproject_id
and algorithm.
operationId: post_controls_app
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: The unique numeric identifier of the component in project.
in: query
name: componentinproject_id
required: true
schema:
format: int64
type: integer
- description: Algorithm of the controls app.
in: query
name: algorithm
required: true
schema:
enum:
- ant
- bee
- puma
- frog
- heating_curve
- hero
- orc
- schedule
- sloth
- spot
- wasp
type: string
- description: Variation of the controls algorithm.
in: query
name: variation
schema:
type: string
- description: Name of the controls app.
in: query
name: name
schema:
type: string
- description: Description of the controls app.
in: query
name: description
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PostControlsAppRequest'
description: |
Setpoint writing config for the controls app.
All setpoints written by the controls app can be configure under the key "setpoint_writing_params".
The keys for each setpoint are the alphanumeric ids of the component pins.
For more information see aedifion docs.
required: false
x-body-name: config
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
Created controls app is returned in the 'resource' field of the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response."
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a controls app in the project.
tags:
- Controls
x-openapi-router-controller: app.controllers.controls_controller
/v2/controls/app/custom:
post:
description: Requests to create a custom controls app in the project with given
componentinproject_id and algorithm.
operationId: post_controls_app_custom
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: |
The unique numeric identifier of the component in project.
If the app is used on multiple components, please use the dominant or most relevant component.
in: query
name: componentinproject_id
required: true
schema:
format: int64
type: integer
- description: Name of the controls app.
in: query
name: name
schema:
type: string
- description: Description of the controls app.
in: query
name: description
schema:
type: string
- description: |
A parameter that determines how long the connection to the Edge Device can be lost before the controls app is reset.
Note: The alive timeout value is in seconds.
Default: 900 seconds.
in: query
name: alive_timeout
required: false
schema:
default: 900
format: int64
type: integer
- description: |
A parameter that determines whether a controls app should be automatically restarted after a loss of communication to the Edge Device."
Default: true.
in: query
name: auto_recovery
required: false
schema:
default: true
type: boolean
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewCustomControlsApp'
description: |
The event stream configs that describe the controls app.
required: true
x-body-name: config
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
Created controls app is returned in the 'resource' field of the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response."
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a custom controls app in the project.
tags:
- Controls
x-openapi-router-controller: app.controllers.controls_controller
/v2/controls/app/{controls_app_id}:
get:
description: |
Gets a controls app in the project.
**Note** that the logs attribute of the response is deprecated.
Please use the dedicated logs endpoint `GET /v2/controls/app/{controls_app_id}/logs` to get a list of logs of a ControlsApp in a project.
operationId: get_controls_app
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the controls app.
in: path
name: controls_app_id
required: true
schema:
format: uuid
type: string
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ControlsApp'
description: A controls app is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a controls app in the project.
tags:
- Controls
x-openapi-router-controller: app.controllers.controls_controller
/v2/controls/app/{controls_app_id}/logs:
get:
description: Gets logs of a controls app in the project.
operationId: get_controls_app_logs
parameters:
- description: The id of the controls app.
in: path
name: controls_app_id
required: true
schema:
format: uuid
type: string
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: The minimal log level of the logs. Defaults to **info**.
in: query
name: log_level
required: false
schema:
default: info
enum:
- info
- warning
- error
type: string
- $ref: '#/components/parameters/LanguageQueryParam'
- description: Optional parameter, sort order based on the `created_at` timestamps
of the logs, descending by default
in: query
name: sort_order
required: false
schema:
default: desc
enum:
- asc
- desc
type: string
- description: |
Return all logs *after* this date-time.
If **start** is provided without **end**, all logs *after* **start** are returned.
in: query
name: start
required: false
schema:
format: date-time
type: string
- description: |
Return all logs *before* this date-time.
If **end** is provided without **start**, all logs *before* **end** are returned.
in: query
name: end
required: false
schema:
format: date-time
type: string
- description: Page number.
in: query
name: page
required: false
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
required: false
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/EntityLogList'
description: A list of controls app logs is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get logs of a controls app in the project.
tags:
- Controls
x-openapi-router-controller: app.controllers.controls_controller
/v2/controls/app/{controls_app_id}/run:
post:
description: Requests to run or stop a controls app in the project.
operationId: post_controls_app_run
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the controls app.
in: path
name: controls_app_id
required: true
schema:
format: uuid
type: string
- description: Desired state of the controls app.
in: query
name: run
required: true
schema:
type: boolean
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ControlsAppUpdateResult'
description: Run action result is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Request to run or stop a controls app in the project.
tags:
- Controls
x-openapi-router-controller: app.controllers.controls_controller
/v2/controls/apps:
get:
description: Gets a list of controls apps in the project.
operationId: get_controls_apps
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: Search controls apps. All controls apps with names matching the
search string will be returned.
in: query
name: search
schema:
type: string
- description: |
Results can be filtered by keys: status_code, algorithm, and component_in_project_id.
Format must be in the form of key=value.
Multiple filters can be applied, separated by a ';' like: key=value; key2=value
Filters with same key will be processed as 'Or' and 'And' across different keys.
in: query
name: filter
required: false
schema:
type: string
- description: Page number.
in: query
name: page
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ControlsAppList'
description: A list of controls apps are returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a list of controls apps in the project.
tags:
- Controls
x-openapi-router-controller: app.controllers.controls_controller
/v2/controls/apps/run:
post:
description: Requests to run or stop multiple controls apps in the project.
operationId: post_controls_apps_run
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: |
The list of controls app ids to run or stop.
All controls apps of the project will be affected if no ids are given.
in: query
name: controls_app_ids
schema:
items:
format: uuid
type: string
type: array
- description: Desired state of the controls apps.
in: query
name: run
required: true
schema:
type: boolean
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ControlsAppUpdateResult'
type: array
description: A list of run action result is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Request to run or stop multiple controls apps in the project.
tags:
- Controls
x-openapi-router-controller: app.controllers.controls_controller
/v2/controls/apps/summary:
get:
description: Returns all available algorithms with their translated name and
description, and the count of active and inactive apps per algorithm in the
project.
operationId: get_controls_apps_summary
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ControlsAppsSummary'
description: A summary of controls apps grouped by algorithm is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a summary of controls apps grouped by algorithm for a project.
tags:
- Controls
x-openapi-router-controller: app.controllers.controls_controller
/v2/controls/apps/update:
post:
description: Request to update multiple controls apps in the project.
operationId: post_controls_apps_update
parameters:
- description: The id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: |
The list of controls app ids to update.
All controls apps of the project will be affected if no ids are given.
in: query
name: controls_app_ids
schema:
items:
format: uuid
type: string
type: array
- description: Option to update controls apps by force.
in: query
name: force
schema:
default: false
type: boolean
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ControlsAppUpdateResult'
type: array
description: A list of update action result is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Request to update multiple controls apps in the project.
tags:
- Controls
x-openapi-router-controller: app.controllers.controls_controller
/v2/datapoint:
delete:
description: |
Deletes a datapoint.
It requires the virtual datapoints of the datapoint to be stopped and deleted.
It may take few seconds for the datapoint to be deleted.
operationId: delete_datapoint
parameters:
- description: The dataPointID of the datapoint to delete.
in: query
name: dataPointID
required: true
schema:
type: string
- description: The numeric id of the project to which the datapoint identified
by _dataPointID_ belongs.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Successful operation.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'.
headers:
WWW_Authenticate:
schema:
type: string
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Forbidden request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'.
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a datapoint.
tags:
- Datapoint
x-openapi-router-controller: app.controllers.datapoint_controller
get:
description: Gets the data point including meta information, i.e., whether it
is a user's favorite, its renamings and tags.
operationId: get_datapoint
parameters:
- description: The dataPointID of the data point to retrieve.
in: query
name: dataPointID
required: true
schema:
type: string
- description: The numeric id of the project to which the data point identified
by _dataPointID_ belongs.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/DataPointWithContext'
description: Successful operation. The data point including meta information
is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get details about data point.
tags:
- Datapoint
x-openapi-router-controller: app.controllers.datapoint_controller
put:
description: Modifies datapoint details such as safety bounds for setpoints.
operationId: put_datapoint
parameters:
- description: The numeric id of the project.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: The alphanumeric identifier of the datapoint.
in: query
name: dataPointID
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDatapoint'
description: |
The details of the update to the data point.
- **setpoint_min_value** is optional, the minimum allowed value for setpoints
- **setpoint_max_value** is optional, the maximum allowed value for setpoints
- **writable** is optional, whether the datapoint can be written to or not
required: true
x-body-name: datapoint_details
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The modified datapoint is returned in the 'resource' field and the 'operation' is set to 'update'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'update'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Change datapoint details.
tags:
- Datapoint
x-openapi-router-controller: app.controllers.datapoint_controller
/v2/datapoint/favorite:
delete:
description: Removes a data point from the personal favorites of the user.
operationId: delete_datapoint_favorite
parameters:
- description: The dataPointID of the data point to unset as favorite
in: query
name: dataPointID
required: true
schema:
type: string
- description: The numeric id of the project to which the data point identified
by _dataPointID_ belongs
in: query
name: project_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The deleted favorite data point is returned in the 'resource' field and the 'operation' is set to 'delete'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Remove a personal favorite data point.
tags:
- Datapoint
x-openapi-router-controller: app.controllers.datapoint_controller
post:
description: Sets a data point referenced by its name/dataPointID as a favorite
for the user.
operationId: post_datapoint_favorite
parameters:
- description: The dataPointID to to mark as favorite
in: query
name: dataPointID
required: true
schema:
type: string
- description: The numeric id of the project to which the data point identified
by _dataPointID_ belongs
in: query
name: project_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The newly created favorite is returned in the 'resource' field and the 'operation' is set to 'create'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unsuccessful operation. Details on the error are returned in
the 'error' field.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Set a data point as personal favorite.
tags:
- Datapoint
x-openapi-router-controller: app.controllers.datapoint_controller
/v2/datapoint/setpoint:
post:
description: |
Attempts to write 'value' with given 'priority' to the datapoint identified by 'dataPointID' and 'project_id'.
This endpoint implements a no-frills, non-acked, stateless, best-effort write service intended for single one-shot setpoint write operations.
**Please note:**
- This endpoint returns '200 - success' if the setpoint operation is authorized and correctly specified. It does not provide any feedback whether the setpoint has actually been written successfully by the remote building network.
operationId: post_datapoint_setpoint
parameters:
- description: The dataPointID of the data point for which to write a setpoint.
in: query
name: dataPointID
required: true
schema:
type: string
- description: The numeric id of the project which the data point identified
by 'dataPointID' belongs to.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: The value to write (either a float or 'null' for reset)
in: query
name: value
required: true
schema:
type: string
- in: query
name: priority
schema:
default: 13
maximum: 16
minimum: 1
type: integer
- description: Request acknowledgement for setpoint write operation.
in: query
name: acked
schema:
default: false
type: boolean
- description: Do a dry run without actually writing anything.
in: query
name: dryrun
schema:
default: false
type: boolean
- description: Ensure the value will not get overwritten by the local BAS.
in: query
name: keep_out_of_service
schema:
default: false
type: boolean
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The setpoint operation has been triggerd but may still fail on the remote side, i.e., the building network.
If setopint is acked, a reference is returned in the answer that can be used to retrieve status of this operation later.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unsuccessful request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'."
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Write a setpoint.
tags:
- Datapoint
x-openapi-router-controller: app.controllers.datapoint_controller
/v2/datapoint/setpoint/{reference}:
get:
description: |
Retrieve the acknowledgement for a setpoint write operation triggered earlier.
operationId: get_datapoint_setpoint
parameters:
- description: The reference of the setpoint write operation.
in: path
name: reference
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SetpointAck'
description: |
Successful operation.
An object containing the details about the setpoint write operation is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized access.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Not found.
Acknowledgement for setpoint write operation could not be found.
security:
- basicAuth: []
- openIDConnect: []
summary: Retrieve acknowledgement for setpoint write operation.
tags:
- Datapoint
x-openapi-router-controller: app.controllers.datapoint_controller
/v2/datapoint/tag:
post:
description: Adds a tag to the specified data point.
operationId: post_datapoint_tag
parameters:
- description: The dataPointID of the data point to assign a tag to.
in: query
name: dataPointID
required: true
schema:
type: string
- description: The numeric id of the project to which the data point identified
by 'dataPointID' belongs to.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: The numeric id of the tag which will be assigned to the data
point referenced to by 'dataPointID' and 'project_id'.
in: query
name: tag_id
required: true
schema:
format: int64
type: integer
- description: Flags a tag as correct or incorrect.
in: query
name: confirmed
required: false
schema:
type: boolean
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The newly created relation (data point, tag) is returned in the 'resource' field and the 'operation' is set to 'create'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Add a tag.
tags:
- Datapoint
x-openapi-router-controller: app.controllers.datapoint_controller
/v2/datapoint/tag/{tag_id}:
delete:
description: Removes the tag identified by 'id' from the data point identified
by 'dataPointID' and 'project_id'.
operationId: delete_datapoint_tag
parameters:
- description: The unique id of the tag to delete.
in: path
name: tag_id
required: true
schema:
format: int64
type: integer
- description: The dataPointID of the data point from which the tag will be
deleted.
in: query
name: dataPointID
required: true
schema:
type: string
- description: The numeric id of the project to which the data point identified
by 'dataPointID' belongs to.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The deleted relation (data point, tag) is returned in the 'resource' field and the 'operation' is set to 'delete'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unsuccessful request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'."
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Remove tag from data point.
tags:
- Datapoint
x-openapi-router-controller: app.controllers.datapoint_controller
put:
description: Updates the tag identified by 'id' associated with the data point
identified by 'dataPointID' and 'project_id'.
operationId: put_datapoint_tag
parameters:
- description: The unique id of the tag to update.
in: path
name: tag_id
required: true
schema:
format: int64
type: integer
- description: The dataPointID of the associated data point where the tag will
be updated.
in: query
name: dataPointID
required: true
schema:
type: string
- description: The numeric id of the project to which the data point identified
by 'dataPointID' belongs to.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTagAssoc'
description: |
The details of the updated tag.
- **confirmed** is required, flags a tag as correct or incorrect.
required: true
x-body-name: tag
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The updated tag is returned in the 'resource' field and the 'operation' is set to 'update'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unsuccessful request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'update'."
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Update tag associated with data point.
tags:
- Datapoint
x-openapi-router-controller: app.controllers.datapoint_controller
/v2/datapoint/timeseries:
delete:
description: |
Delete timeseries data for a datapoint.
operationId: delete_datapoint_timeseries
parameters:
- description: '**project_id** [mandatory], The id of the project that given
datapoint belongs to.'
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: '**dataPointID** [mandatory], the alphanumeric id of the datapoint.'
in: query
name: dataPointID
required: true
schema:
type: string
- description: |
If set to `true` delete all observations.
If set to `false` delete observations based on given `start` and `end`.
in: query
name: all
schema:
default: false
type: boolean
- description: |
Delete only observations *after* this date-time inclusively.
**NOTE:** It should be in RFC3999 format.
If **start** is provided without **end**, all observations *after* **start** are deleted.
in: query
name: start
required: false
schema:
format: date-time
type: string
- description: |
Delete only observations *before* this date-time inclusively.
**NOTE:** It should be in RFC3999 format.
If **end** is provided without **start**, all observations *before* **end** are deleted.
in: query
name: end
required: false
schema:
format: date-time
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad request.
Details are returned in the "error" field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete timeseries data for a datapoint.
tags:
- Datapoint
x-openapi-router-controller: app.controllers.datapoint_controller
get:
description: |
Returns the measured time series data for the specified data point
referenced by its name/dataPointID for the time interval specified by **start**
and **end**.
Returns the last (or respectively next) **max** observations, if either **start** nor **end** are provided.
operationId: get_datapoint_timeseries
parameters:
- description: The id of the project from which to query observations for a
data point
in: query
name: project_id
required: true
schema:
format: int64
type: integer
- description: Name/ID of the data point, e.g., *bacnet100-4120-CO2*
in: query
name: dataPointID
required: true
schema:
type: string
- description: |
Return only observations *after* this date-time"
If **start** is provided without **end**, the first **max** elements *after* **start** are returned.
in: query
name: start
required: false
schema:
format: date-time
type: string
- description: |
Return only observations *before* this date-time".
If **end** is provided without **start**, the last **max** elements *before* **end** are returned.
in: query
name: end
required: false
schema:
format: date-time
type: string
- description: |
Maximum number of observations to return.
- This option is ignored when both **start** and **end** are provided.
- Setting **max** = 0 returns *all* available data points.
in: query
name: max
required: false
schema:
default: 1
format: int64
type: integer
- description: |
Desired sampling rate.
The returned observations are sampled down to the specified interval. The down sampling will be done by calculating the arithmetic average on all observations made within an interval. The timestamp will represent the beginning of the interval the resampling average is estimated for.
Allowed intervals are integers combined with durations, like seconds (s), minutes (m), hours (h), and days (d), e.g.
- "10s" specifies a sampling rate of "once every 10 seconds",
- "1h" specifies a sampling rate of "once every (1) hour",
- "0s", "0m", "0h", ... specify highest sampling rate available
- "auto" specifies an automatic sampling rate
in: query
name: samplerate
schema:
type: string
- description: |
Desired interpolation method.
This option is to be used while resampling. While resampling, the specified method will be used to interpolate missing data.
Default method: "previous"
Available options:
- "previous" Reports the value from the previous time interval for time intervals with no data.
- "linear" Reports the results of linear interpolation for time intervals with no data.
- "null" Reports null for time intervals with no data but returns a timestamp. This is the same as the default behavior.
- "none" Reports no timestamp and no value for time intervals with no data.
in: query
name: interpolation
schema:
default: previous
enum:
- previous
- linear
- 'null'
- none
type: string
- description: |
Desired aggregation method to be used while interpolating over a timeframe.
Default method: "mean"
Available options:
- "mean"
- "min"
- "max"
- "mode"
- "median"
- "distinct"
- "count"
in: query
name: aggregation
required: false
schema:
default: mean
enum:
- mean
- min
- max
- mode
- median
- distinct
- count
type: string
- description: |
Return only list of timeseries data format, i.e.
- without tags
- compressed timeseries format, i.e. [(time1, val1), ..., (timen, valn)]
in: query
name: short
schema:
default: false
type: boolean
- description: |
Returns the last recorded value on the requested start and end timestamp if there does not exist an observation at this precise time.
in: query
name: closed_interval
schema:
default: false
type: boolean
- description: |
The optional system of units in which the timeseries data should be returned (Example: **metric**).
Request the **GET /v2/labels/systems** endpoint to fetch available units systems.
in: query
name: units_system
schema:
type: string
- description: |
The optional currency system in which the timeseries data should be returned (Example: **EUR**).
Request the **GET /v2/labels/systems** endpoint to fetch available currency systems.
in: query
name: currency_system
schema:
type: string
- description: |
The optional units in which the timeseries data should be returned.
This overrides the **units_system** and **currency_system** parameters.
in: query
name: units
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TimeseriesWithContext'
description: Successful operation. A list of observations for the specified
data point is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
At least one datapoint could not be converted, e.g., due to the missing `units` tag or the requested unit conversion is not supported.
security:
- basicAuth: []
- openIDConnect: []
summary: Get the time series data of a data point.
tags:
- Datapoint
- Timeseries
x-openapi-router-controller: app.controllers.datapoint_controller
/v2/labels/definitions:
get:
description: Get labels definitions.
operationId: get_labels_definitions
parameters:
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
type: object
description: Successful operation.
summary: Get labels definitions.
tags:
- Meta
x-openapi-router-controller: app.controllers.meta_controller
/v2/labels/systems:
get:
description: Get available labels systems.
operationId: get_labels_systems
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/LabelsSystems'
description: |
Successful operation. A list of available `currency_systems`, `units_systems`, `locales` and a `labels_checksum` will be returned.
summary: Get available labels systems.
tags:
- Meta
x-openapi-router-controller: app.controllers.meta_controller
/v2/meta/api_version:
get:
description: Returns api version and some helpful details.
operationId: get_api_version
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiDetails'
description: Successful operation. Returns api version and uptime of the
api.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to get.
headers:
WWW_Authenticate:
schema:
type: string
summary: Get api version.
tags:
- Meta
x-openapi-router-controller: app.controllers.meta_controller
/v2/meta/endpoints:
get:
description: Returns a list of available endpoint IDs and their names.
operationId: get_endpoints
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListOfEndpoints'
description: Successful operation. A list of all available endpoint IDs
and their names is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to get.
headers:
WWW_Authenticate:
schema:
type: string
summary: Get a list of available endpoints.
tags:
- Meta
x-openapi-router-controller: app.controllers.meta_controller
/v2/meta/ready:
get:
description: Checks readiness of API by verifying external dependencies (database,
etc.).
operationId: get_api_readiness
responses:
'200':
content: {}
description: All readiness checks passed. API is ready to serve requests.
'503':
content: {}
description: One or more readiness checks failed. API is not ready.
summary: Check API readiness by verifying external dependencies.
tags:
- Meta
x-openapi-router-controller: app.controllers.meta_controller
/v2/project/{project_id}:
delete:
description: |
Deletes the specified project and all its associated resources.
Requires confirmation by the given project name.
operationId: delete_project
parameters:
- description: The id of the project that should be deleted.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The exact name of the project. Must match the project name exactly
for deletion to proceed.
in: query
name: project_name
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The deleted project is returned within the 'resource' field and 'operation' will indicate a 'delete' operation.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Bad request. Details are returned in the 'error' field of the
response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Project not found.
security:
- basicAuth: []
- openIDConnect: []
summary: Delete project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
get:
description: Returns the details of the queried project.
operationId: get_project
parameters:
- description: The id of the project that should be retrieved.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectWithContext'
description: |
Successful operation.
Returns the project, the company that owns this project, and a list of data point keys associated with this project.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to get.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get project's details.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
put:
description: Updates the details of the specified project.
operationId: put_project
parameters:
- description: The id of the project that should be updated.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProject'
description: |
The details of the update to an existing project:
- **name** is optional, a new name for the referenced project
- **description** is optional, a new description for the referenced project
- **latitude** is optional, a new latitude for the referenced project
- **longitude** is optional, a new longitude for the referenced project
- **units_system** is optional, a new preferred system of units for the referenced project
- **currency_system** is optional, a new preferred currency system for the referenced project
- **asset_manager_id** is id of the user that is the asset manager of the project. Assign `null` to remove the asset manager."
- **account_manager_id** is id of the user that is the account manager of the project. Assign `null` to remove the account manager."
- **project_engineer_id** is id of the user that is the project engineer. Assign `null` to remove the project engineer."
required: true
x-body-name: project
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The updated project is returned within the 'resource' field and 'operation' will indicate a 'update' operation.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'update'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Update project's details.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/ai/consent:
post:
description: |
Grant or revoke the consent for AI assistant for the specified project.
Giving consent grants the AI assistant to process project's data.
operationId: post_ai_assistant_consent
parameters:
- description: The id of the project
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Consent status. Set to true to give consent, false to revoke.
in: query
name: consent
required: true
schema:
type: boolean
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: AI assistant consent status updated successfully
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request
security:
- basicAuth: []
- openIDConnect: []
summary: Grant or revoke the consent for AI Assistant.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/alerts:
get:
description: Returns the details of all alerts in a project.
operationId: get_alerts
parameters:
- description: The numeric id of the project for which alerts should be queried.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Page number.
in: query
name: page
required: false
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
required: false
schema:
format: int64
type: integer
- description: Optional parameter, filter on alert names.
in: query
name: search
required: false
schema:
type: string
- description: |
Results can be filtered by keys: alert_type, dataPointID, status.
Format must be in the form of key=value.
Multiple filters can be applied, separated by a ';' like: key=value; key2=value
Filters with same key will be processed as 'Or' and 'And' across different keys.
The status filter accepts the values 'enabled' and 'disabled' (case-insensitive).
in: query
name: filter
required: false
schema:
type: string
- description: Optional parameter, sort order, ascending by default
in: query
name: sort_order
required: false
schema:
default: asc
enum:
- asc
- desc
type: string
- description: Optional parameter, sort by, sorted by id by default
in: query
name: sort_by
required: false
schema:
default: id
enum:
- id
- name
- alert_type
- created
- updated
- status
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListOfAlerts'
description: Successful operation. A list of all alerts for the specified
project is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all alerts in a project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/avatar:
delete:
description: Deletes the current avatar image of the project
operationId: delete_project_avatar
parameters:
- description: id of the project
in: path
name: project_id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Successful operation.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Out of service.
security:
- basicAuth: []
- openIDConnect: []
summary: Deletes the current avatar image of the project
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
post:
description: Uploads and stores an image for the project
operationId: post_project_avatar
parameters:
- description: id of the project
in: path
name: project_id
required: true
schema:
type: integer
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadAvatarRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Successful operation.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: File is not an image file.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Out of service.
security:
- basicAuth: []
- openIDConnect: []
summary: Uploads and stores an image for the project
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/comments:
get:
description: Returns a paginated list of project comments.
operationId: get_project_comments
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
type: integer
- description: The page number.
in: query
name: page
required: false
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
required: false
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectCommentList'
description: A paginated list of project comments.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request. Details on the error are returned in the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all comments of a project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
post:
description: Create a new comment for a project given with `project_id`.
operationId: post_project_comment
parameters:
- description: The id of the project the comment will be created for.
in: path
name: project_id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewProjectComment'
description: The details of the comment.
required: true
x-body-name: new_comment
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectComment'
description: Success. The project comment has been created. The created
comment is returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details of the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a new project comment.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/comments/{comment_id}:
delete:
description: Delete a comment belonging to a project.
operationId: delete_project_comment
parameters:
- in: path
name: project_id
required: true
schema:
type: integer
- description: The id of the comment.
in: path
name: comment_id
required: true
schema:
format: uuid
type: string
responses:
'204':
content: {}
description: Success. The project comment has been deleted.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a project comment.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
get:
description: Get the details of a project comment.
operationId: get_project_comment
parameters:
- description: The id of the comment.
in: path
name: comment_id
required: true
schema:
format: uuid
type: string
- in: path
name: project_id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectComment'
description: Success. The queried project comment is returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a project comment.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
put:
description: Update the message of a project comment.
operationId: put_project_comment
parameters:
- description: The id of the comment.
in: path
name: comment_id
required: true
schema:
format: uuid
type: string
- in: path
name: project_id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProjectComment'
description: The changes to the comment.
required: true
x-body-name: comment
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectComment'
description: Success. The project comment has been updated. The updated
comment is returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Edit a project comment.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/componentInProject:
post:
description: Adds a new component to the specified project.
operationId: post_project_component
parameters:
- description: The numeric id of the project for which to add the new component.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The numeric id of the component to add.
in: query
name: component_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewComponentInProject'
description: |
The details of the component to add to the project.
**Note:** At least one of 'name', 'nameEN', or 'nameDE' must be provided.
- **name** [optional], the component's name. If not given, deprecated parameters 'nameEN' and 'nameDE' are going to be taken into account.
- (deprecated) **nameEN** [optional], the component's english name
- (deprecated) **nameDE** [optional], the component's german name
- **abbreviation** [optional], the component's abbreviated name
required: false
x-body-name: component_details
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The newly added component is returned in the 'resource' field and the 'operation' is set to 'create'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Add a new component in project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/componentInProject/attribute:
delete:
description: Deletes an attribute for a component in a project.
operationId: delete_project_component_attribute
parameters:
- description: The numeric id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The numeric id of the component in project.
in: query
name: componentinproject_id
required: true
schema:
format: int64
type: integer
- description: The attribute key that should be deleted.
in: query
name: key
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation. The details of the deleted component attribute are returned in the 'resource' field and 'operation' will indicate a 'delete' operation.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete an attribute for a component in a project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
post:
description: Adds a new attribute to the specified component in project.
operationId: post_project_component_attribute
parameters:
- description: The numeric id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The numeric id of the componentInProject.
in: query
name: componentinproject_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PostProjectComponentAttributeRequest'
description: |
The details of the componentInproject attribute to add to the project:
- **key** [mandatory], the key of the attribute
- **value** [mandatory], the value of the attribute
- **unit** [optional], the unit of the attribute
required: true
x-body-name: attribute_details
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The newly added component is returned in the 'resource' field and the 'operation' is set to 'create'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Add a new attribute to component in project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
put:
description: Edits an attribute for a component in a project.
operationId: put_project_component_attribute
parameters:
- description: The numeric id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The numeric id of the component in project.
in: query
name: componentinproject_id
required: true
schema:
format: int64
type: integer
- description: The attribute key.
in: query
name: key
required: true
schema:
type: string
- description: The new value of the attribute.
in: query
name: value
required: true
schema:
type: string
- description: The new unit of the attribute.
in: query
name: unit
required: false
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The edited component attribute is returned in the 'resource' field and the 'operation' is set to 'update'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'update'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Edit an attribute for a component in a project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/componentInProject/attributes:
patch:
description: Adds, updates and removes the attributes of a specified component
in project as described in the request.
operationId: patch_project_component_attributes
parameters:
- description: The numeric id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The numeric id of the componentInProject.
in: query
name: componentinproject_id
required: true
schema:
format: int64
type: integer
- description: Option to force update controls apps that use the patched attributes.
in: query
name: force
schema:
default: false
type: boolean
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchProjectComponentAttributesRequest'
description: |
The details of the componentInproject attributes to update as a list of objects containing:
- **key** [mandatory], the key of the attribute
- **value** [optional], the value of the attribute
- **unit** [optional], the unit of the attribute
Providing key without a value results in deletion of the attribute.
required: true
x-body-name: attribute_details_batch
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PatchAttributesSuccess'
description: |
Successful operation.
The newly added component is returned in the 'resource' field and the 'operation' is set to 'create'.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Bad request. Details on the error are returned in the 'details'
field of the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Change attributes of a component in project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/componentInProject/pin/datapoint:
delete:
description: Deletes a datapoint on component pin defined in project.
operationId: delete_project_component_pin_datapoint
parameters:
- description: The id of the project from where to delete the component.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the component.
in: query
name: componentinproject_id
required: true
schema:
format: int64
type: integer
- description: The id of the pin.
in: query
name: pin_id
required: true
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation. The details of the deleted datapoint on component are returned in the 'resource' field and 'operation' will indicate a 'delete' operation.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a datapoint on component pin for the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
post:
description: Connects a datapoint to a component's pin within the specified
project.
operationId: post_project_component_pin_datapoint
parameters:
- description: The id of the project to add datapoint to its component pin.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: '**componentinproject_id** [mandatory], the numeric id of the
component in the project'
in: query
name: componentinproject_id
required: true
schema:
format: int64
type: integer
- description: '**pin_id** [mandatory], the id of the pin.'
in: query
name: pin_id
required: true
schema:
format: int64
type: integer
- description: '**dataPointID** [mandatory], the alphanumeric id of the datapoint.'
in: query
name: dataPointID
required: true
schema:
type: string
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The component with added datapoint is returned in the 'resource' field and the 'operation' is set to 'create'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Connects a datapoint to a component's pin.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
put:
description: Edit a datapoint on component pin for the specified project.
operationId: put_project_component_pin_datapoint
parameters:
- description: The id of the project to edit datapoint on its component pin.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: '**componentinproject_id** [mandatory], the numeric id of the
component in the project'
in: query
name: componentinproject_id
required: true
schema:
format: int64
type: integer
- description: '**pin_id** [mandatory], the id of the pin.'
in: query
name: pin_id
required: true
schema:
format: int64
type: integer
- description: '**dataPointID** [mandatory], the alphanumeric id of the datapoint.'
in: query
name: dataPointID
required: true
schema:
type: string
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The component with edited datapoint is returned in the 'resource' field and the 'operation' is set to 'update'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'update'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Edits a datapoint on a component pin in the specified project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/componentInProject/pin/recommendations:
get:
description: Get a list of recommended datapoints for each pin of the component
which is not already assigned.
operationId: get_project_component_recommendations
parameters:
- description: The id of the project to get recommendations for.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: '**componentinproject_id** [mandatory], the numeric id of the
component in the project'
in: query
name: componentinproject_id
required: true
schema:
format: int64
type: integer
- description: '**pin_id** [mandatory], the numeric id of the pin of the component
in project'
in: query
name: pin_id
required: true
schema:
format: int64
type: integer
- description: |
Results can be filtered by tag keys.
Format must be in the form of key=value.
Multiple filters can be applied, separated by a ';' like: key=value; key2=value
Filters with same key will be processed as 'Or' and 'And' across different keys.
in: query
name: filter
required: false
schema:
type: string
- description: Optional parameter, filter only dataPointIDs containing given
parameter
in: query
name: search
required: false
schema:
type: string
- description: Page number.
in: query
name: page
required: false
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
required: false
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PinRecommendation'
description: |
Successful operation.
The component with added datapoint is returned in the 'resource' field and the 'operation' is set to 'create'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get recommendations for datapoints of an instantiated component within
a project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/componentInProject/relationship:
post:
description: Creates a relationship between given source and target.
operationId: post_componentinproject_relationship
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewComponentInProjectRelation'
description: |
The details of the componentinproject relationship to create
- **source_componentinproject_id** is the id of the componentinproject that is the source of the relationship requested
- **target_componentinproject_id** is the id of the componentinproject that is the target of the relationship requested
- **relationship** is the relationship between two components
required: true
x-body-name: new_componentinproject_relation
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ComponentInProjectRelation'
description: Successful operation. Returns details of created relationship.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'post'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a relationship between componentinprojects
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/componentInProject/relationship/{relationship_id}:
delete:
description: Delete an existing componentinproject relationship.
operationId: delete_componentinproject_relationship
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the relationship that should be deleted.
in: path
name: relationship_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The deleted relationship is returned within the 'resource' field and 'operation' will indicate a 'delete' operation
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete an existing componentinproject relationship.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/componentInProject/{componentinproject_id}:
delete:
description: Deletes a component defined in the specified project.
operationId: delete_project_component
parameters:
- description: The numeric id of the project from which to delete a component.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The numeric id of the component to delete.
in: path
name: componentinproject_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation. The details of the deleted component are returned in the 'resource' field and 'operation' will indicate a 'delete' operation.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a component in the specified project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
get:
description: Gets a component defined in project along with its pin details.
operationId: get_project_component
parameters:
- description: The numeric id of the project from which to get a component.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The numeric id of the component to get.
in: path
name: componentinproject_id
required: true
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ComponentInProjectWithContext'
description: |
Successful operation.
All component details along with its pin details is returned in the 'resource' field and the 'operation' is set to 'get'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a component for the specified project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
put:
description: Edits a component for this project.
operationId: put_project_component
parameters:
- description: The numeric id of the project for which to edit a component.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The numeric id of the component to edit.
in: path
name: componentinproject_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewComponentInProject'
description: |
The details of the update to the component.
- **name** [optional], the component's name. If not given, deprecated parameters 'nameEN' and 'nameDE' are going to be taken into account.
- (deprecated) **nameEN** [optional], a new component name in english
- (deprecated) **nameDE** [optional], a new component name in german
- **abbreviation** [optional], a new abbreviated component name
required: false
x-body-name: component_details
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The edited component is returned in the 'resource' field and the 'operation' is set to 'update'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'update'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Edit a component in the specified project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/componentinproject/{componentinproject_id}/holidays:
get:
description: Gets the holidays of a component based on the building timezone
for the given time range.
operationId: get_project_component_holidays
parameters:
- description: The id of the project the component belongs to.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the component to get its schedules.
in: path
name: componentinproject_id
required: true
schema:
format: int64
type: integer
- description: The start date of the requested date range with format `YYYY-MM-DD`
in: query
name: start_date
required: false
schema:
format: date
type: string
- description: The end date of the requested date range with format `YYYY-MM-DD`
in: query
name: end_date
required: false
schema:
format: date
type: string
- $ref: '#/components/parameters/LanguageQueryParam'
- description: Optional parameter, sort order based on the holiday date. Ascending
by default
in: query
name: sort_order
required: false
schema:
enum:
- asc
- desc
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ComponentInProjectHolidays'
description: Successful operation. A list of holidays for the given component
is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get holidays of a component for the given time range.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/componentinproject/{componentinproject_id}/schedules:
get:
description: Gets all the defined schedules for the component in the given time
range.
operationId: get_project_component_schedules
parameters:
- description: The id of the project the component belongs to.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the component to get schedules.
in: path
name: componentinproject_id
required: true
schema:
format: int64
type: integer
- description: The start time of the requested time range with format `YYYY-MM-DD`
in: query
name: start
required: true
schema:
format: date
type: string
- description: The end time of the requested time range with format `YYYY-MM-DD`
in: query
name: end
required: true
schema:
format: date
type: string
- description: "If set to true, the schedule values will be mapped to the component\
\ attribute mode.\nMapping Example: \n{\n \"color\": \"#aedf\",\n \
\ \"mode_name\": {\"nameDE\": \"Ausgeschaltet\"},\n \"source\": \"holiday\"\
,\n \"status\": \"off\",\n \"timestamp\": \"2025-06-19T18:00:00+00:00\"\
,\n \"value\": 0,\n}\n\nIf set to false, the schedule values will not\
\ be mapped. \nDefault: false\n"
in: query
name: mode_mapping
required: false
schema:
default: false
type: boolean
- description: |
If set to true, the last schedule emitted value before start of the given interval will be returned.
Example: give start date `2015-09-23` result will include last emitted schedule value from `2025-09-22`.
If set to false, the schedules will be returned only for the given interval.
Default: false
in: query
name: closed_interval
schema:
default: false
type: boolean
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ComponentSchedule'
type: array
description: |
Successful operation.
A component schedule with a list of all schedule types are returned for the component in the 'resource' field and the 'operation' is set to 'get'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get component schedules for the given time range.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/componentsInProject:
get:
description: Get all components that have been added to the project.
operationId: get_project_components
parameters:
- description: The numeric id of the project from which to get components.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Page number.
in: query
name: page
required: false
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
required: false
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
- description: |
Optional parameter, filter on the name of the component in the project.
You can also search by the component type, translated into the chosen language,
e.g. "boiler" with language "en" or "Kessel" with language "de".
in: query
name: search
required: false
schema:
type: string
- description: |
Results can be filtered by keys: abbreviation, alphanumeric_id.
Format must be in the form of key=value.
Multiple filters can be applied, separated by a ';' like: key=value; key2=value
Filters with same key will be processed as 'Or' and 'And' across different keys.
in: query
name: filter
required: false
schema:
type: string
- description: Optional parameter, sort order, ascending by default
in: query
name: sort_order
required: false
schema:
default: asc
enum:
- asc
- desc
type: string
- description: |
Optional parameter, sort by, sorted by name by default.
Deprecated parameters 'nameEN' and 'nameDE' will result in sorting by 'name'.
in: query
name: sort_by
required: false
schema:
default: name
enum:
- name
- nameEN
- nameDE
- abbreviation
- id
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ComponentsInProject'
description: |
Successful operation.
A list of component ids along with their names are returned in the 'resource' field and the 'operation' is set to 'get'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all components in a project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/custom_page:
post:
description: |
Creates a new custom page for the specified project.
operationId: post_custom_page
parameters:
- description: The id of the project for which to create a custom page.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewCustomPage'
required: true
x-body-name: custom_page
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/CustomPage'
description: Success. The custom page has been created.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Bad request. Invalid input data.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request. Details on the error are returned in
the 'error' field of the response and 'operation' is set to 'post'.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Project not found.
security:
- basicAuth: []
- openIDConnect: []
summary: Create a custom page for a project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/custom_page/{custom_page_id}:
delete:
description: |
Deletes an existing custom page from the specified project.
operationId: delete_custom_page
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the custom page to delete.
in: path
name: custom_page_id
required: true
schema:
format: int64
type: integer
responses:
'204':
content: {}
description: Success. The custom page has been deleted.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request. Details on the error are returned in
the 'error' field of the response and 'operation' is set to 'delete'.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Custom page not found.
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a custom page.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
put:
description: |
Updates an existing custom page for the specified project.
operationId: put_custom_page
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the custom page to update.
in: path
name: custom_page_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewCustomPage'
required: true
x-body-name: custom_page
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CustomPage'
description: Success. The custom page has been updated.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Bad request. Invalid input data.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request. Details on the error are returned in
the 'error' field of the response and 'operation' is set to 'put'.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Custom page not found.
security:
- basicAuth: []
- openIDConnect: []
summary: Update a custom page.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/datapoints:
delete:
description: |
Deletes datapoints in the project.
It requires all virtual datapoints associated to the datapoint to be stopped and deleted.
It may take few seconds for the datapoints to be deleted.
This endpoint processes the request atomically. Either all datapoints are deleted or none.
I.e., if the authorization or checks of a single datapoint fail, none of the datapoints are deleted.
operationId: delete_project_datapoints
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteProjectDatapointsRequest'
description: The list of fully qualified datapoint names to delete.
required: true
x-body-name: dataPointIDs
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Successful operation.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request. Details on the error are returned in
the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Forbidden request. Details on the error are returned in
the 'error' field of the response and 'operation' is set to 'delete'.
security:
- basicAuth: []
- openIDConnect: []
summary: Delete datapoints in the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/datapoints/byPage:
get:
description: Returns a list of all data points which match the criteria.
operationId: get_project_datapoints_by_page
parameters:
- description: The id of the project for which data points should be queried.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Page number.
in: query
name: page
required: false
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
required: false
schema:
format: int64
type: integer
- description: "Optional parameter to apply search filters with tag, in the\
\ form of: key=value \n Multiple tags can be passed, separated with a ';'\
\ like: key1=value;key2=value2 \n 'key' is necessary, but 'value' is optional."
in: query
name: tags
required: false
schema:
type: string
- description: Optional parameter, this will sort results based on values of
a tag, if no tag is given, sorting is done on dataPointID
in: query
name: sort_by
required: false
schema:
type: string
- description: Optional parameter, sort order, ascending by default
in: query
name: sort_order
required: false
schema:
default: asc
enum:
- asc
- desc
type: string
- description: |
[DEPRECATED] Optional parameter, filters only favorite datapoints, defaults to false.
Please use `favorite_mode` 'only' instead.
in: query
name: favorites
required: false
schema:
default: false
type: boolean
- description: Optional parameter, filter only dataPointIDs containing given
parameter
in: query
name: search
required: false
schema:
type: string
- description: Optional parameter, whether dataPointID search should be case
sensitive or not
in: query
name: match_case
required: false
schema:
default: false
type: boolean
- description: Optional parameter, whether only writable datapoints should be
returned
in: query
name: writable
required: false
schema:
default: false
type: boolean
- description: |
Optional parameter, filters on user's favorite datapoints.
- 'only' returns only the favorite datapoints for the user
- 'exclude' excludes favorite datapoints for the user
in: query
name: favorite_mode
required: false
schema:
enum:
- only
- exclude
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListOfDataPoints'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unsuccessful operation. Details on the error are returned in
the 'error' field.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get list of filtered data points in this project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/datapoints/byTag:
get:
description: Returns a list of all data points by tag that have been initialized
in this project.
operationId: get_project_datapoints_bytag
parameters:
- description: The id of the project for which to query data points by tag.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The key of the tag.
in: query
name: key
required: true
schema:
type: string
- description: The value of the tag.
in: query
name: value
required: false
schema:
type: string
- description: The source of the tag.
in: query
name: source
required: false
schema:
type: string
- description: The confirmed status of the tag.
in: query
name: confirmed
required: false
schema:
enum:
- 'true'
- 'false'
- unconfirmed
type: string
- description: |
Return only list of matching datapoints and omit tag details.
in: query
name: short
schema:
default: false
type: boolean
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/DataPointWithTags'
title: DataPoints
type: array
description: |
Successful operation.
A list of all data points with the given tag in the specified project is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all data points in this project with a given tag.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/datapoints/favorites:
get:
description: Returns a list of all favorite data points that have been created
in this project.
operationId: get_project_datapoints_favorites
parameters:
- description: The numeric id of the project for which data points should be
queried.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
items:
type: string
title: DataPoints
type: array
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unsuccessful operation. Details on the error are returned in
the 'error' field.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a list of favorited data points in this project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/device/{device_id}:
get:
description: Get a device for a given project and its children.
operationId: get_project_device
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the device.
in: path
name: device_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Device'
description: |
Successful operation.
A device with its children is returned in the 'resource' field and the 'operation' is set to 'get'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a device for the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/devices:
get:
description: Get a list of devices for a given project.
operationId: get_project_devices
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Page number.
in: query
name: page
required: false
schema:
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
required: false
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListOfDevices'
description: |
Successful operation.
A list of devices is returned in the 'resource' field and the 'operation' is set to 'get'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a list of devices for the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/file:
delete:
description: Delete a file on the project's document database.
operationId: delete_project_file
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Path to file to be deleted.
in: query
name: path
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The details of deleted resource is returned in the 'resource' field and the 'operation' is set to 'delete'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a file on the project's document database.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
get:
description: Download a file from the project's document database.
operationId: get_project_file
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Path to file to download.
in: query
name: path
required: true
schema:
type: string
- description: |
The time period for which the generated link is valid.
Acceptable format is a number followed by 's', 'm', 'h', 'd' for seconds, minutes, hours and days respectively.
- Examples: 1h, 30m, 7d.
- Minimum allowed value: 1s.
- Maximum allowed value: 7d
in: query
name: expiry
schema:
default: 168h
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/File'
description: Successful operation. The details of the file along with a
downloadable link is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Download a file from the project's document database.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
post:
description: Upload a file in the project's document database.
operationId: post_project_file
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: |
Path to a sub-folder.
If it doesn't exist, it will be created automatically.
Paths are normalized: consecutive, leading, and trailing slashes are removed.
The folder nesting depth must not exceed the configured maximum (see the 'max_folder_depth' quota limit returned by the quota endpoint).
in: query
name: folder
required: false
schema:
type: string
- description: |
JSON object of custom tags (key-value pairs) to apply to the uploaded file.
Example: {"type": "object_report"}
in: query
name: tags
required: false
schema:
type: string
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadFileRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The details of uploaded resource is returned in the 'resource' field and the 'operation' is set to 'create'.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad request.
The file path is invalid or the folder nesting depth exceeds the configured maximum.
Filenames and paths may only contain alphanumeric characters, '/', '_', '-', and spaces; the filename must have an extension separated by a dot.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: "Unauthorized request. \nDetails on the error are returned\
\ in the 'error' field of the response and the 'operation' is set to 'create'.\n"
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Upload a file in the project's document database.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
put:
description: Replace a file on the project's document database.
operationId: put_project_file
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: |
Path to a sub-folder.
Paths are normalized: consecutive, leading, and trailing slashes are removed.
The folder nesting depth must not exceed the configured maximum (see the 'max_folder_depth' quota limit returned by the quota endpoint).
in: query
name: folder
required: false
schema:
type: string
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadFileRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The details of uploaded resource is returned in the 'resource' field and the 'operation' is set to 'update'.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad request.
The file path is invalid or the folder nesting depth exceeds the configured maximum.
Filenames and paths may only contain alphanumeric characters, '/', '_', '-', and spaces; the filename must have an extension separated by a dot.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'update'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Replace a file on the project's document database.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/files:
get:
description: Get a list of files from the project's document database.
operationId: get_project_files
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Search file database. All files or folders matching the search
string will be returned.
in: query
name: search
schema:
type: string
- description: Page number.
in: query
name: page
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FilesList'
description: A list of files along with its details is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a list of files from the project's document database.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/folder:
delete:
description: "Delete a folder on the project's document database. \nAll files\
\ within the folder will be deleted recursively.\n"
operationId: delete_project_folder
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Path of the folder to delete.
in: query
name: path
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: "Successful operation. \nThe details of deleted resource is\
\ returned in the 'resource' field and the 'operation' is set to 'delete'.\n"
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad request.
The folder path is empty or invalid, or contains forbidden path segments ('.' or '..'). Allowed characters: alphanumeric (including unicode), /, _, -, spaces, and dots.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: "Unauthorized request. \nDetails on the error are returned\
\ in the 'error' field of the response and the 'operation' is set to 'delete'.\n"
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a folder on the project's document database.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
post:
description: Creates a folder on the project's document database.
operationId: post_project_folder
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: |
Path of the folder to create.
Paths are normalized: consecutive, leading, and trailing slashes are removed. An empty path is considered invalid.
The folder nesting depth must not exceed the configured maximum (see the 'max_folder_depth' quota limit returned by the quota endpoint).
in: query
name: path
required: true
schema:
type: string
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The details of created resource is returned in the 'resource' field and the 'operation' is set to 'create'.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad request.
The folder path is empty or invalid, contains '.' or '..' segments, the folder already exists, or the folder nesting depth exceeds the configured maximum.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and the 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a folder on the project's document database.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/hidden_native_page:
delete:
description: |
Removes a native page from the list of hidden pages for the given project.
operationId: delete_project_hidden_native_page
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The title of the native page to unhide.
in: query
name: title
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Success.
The native page has been removed from the list of hidden pages.
The unhidden page is returned in the 'resource' field.
'204':
content: {}
description: No content. The native page with the given title was already
unhidden.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Bad request. Parameter title is missing or invalid.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Not found. A project with this ID does not exist.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Internal server error.
security:
- basicAuth: []
- openIDConnect: []
summary: Unhide a native page for a project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
post:
description: |
Adds a native page to the list of hidden pages for the given project.
operationId: post_project_hidden_native_page
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/HiddenNativePage'
required: true
x-body-name: hidden_native_page
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Success.
The native page was already hidden.
The hidden page is returned in the 'resource' field.
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Success.
The native page is now hidden.
The hidden page is returned in the 'resource' field.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Bad request. Parameter title is missing or invalid.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Not found. A project with this ID does not exist.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Internal server error.
security:
- basicAuth: []
- openIDConnect: []
summary: Hide a native page for a project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/import-digital-twins:
post:
description: |
Registers a digital twin mapping file and returns a presigned URL its content must be uploaded to.
A job is created to track the mapping, which starts once the uploaded file has been scanned.
Only one digital twin import can be in progress per project at a time.
operationId: post_project_import_digital_twins
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ImportDigitalTwinRequest'
description: |
The mapping file that is registered for the import.
`filename` is the name the file is stored under and must include its extension, for example `mapping.xlsx`.
`path` is the folder within the project the file is placed in, for example `/imports/digital-twins`.
Both are validated: an invalid filename, as well as a path that exceeds the allowed folder depth or length, is not processed.
The file's content is not part of this request. It is uploaded separately to the presigned URL returned in the response.
required: true
x-body-name: digital_twin_file
responses:
'202':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Success'
- properties:
resource:
$ref: '#/components/schemas/ImportDigitalTwinResponse'
type: object
description: |
Accepted.
The file has been registered and the import job has been created.
The presigned upload URL and the job id are returned.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Bad request. The request body is invalid.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized.
The request carries no valid credentials, or the user is not authorized for this project.
An import started without an OpenID Connect access token is rejected by the file-service.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Not found. A project with this ID does not exist.
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Conflict.
A digital twin import is already in progress for this project, or a file of that name already exists at that path.
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unprocessable entity.
The filename or the path cannot be processed, e.g., because the path exceeds the allowed folder depth or length.
Each reported violation is listed in `details`.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Internal server error.
'503':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Service unavailable. Digital twin imports are currently not
available.
security:
- basicAuth: []
- openIDConnect: []
summary: Start a digital twin import.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/importTimeseries:
post:
description: Imports timeseries data defined in a file.
operationId: post_project_import_timeseries
parameters:
- description: The id of the project the timeseries belongs to.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The format of the file uploaded.
in: query
name: format
required: true
schema:
enum:
- csv
- influx_line_protocol
type: string
- description: Action upon error.
in: query
name: on_error
required: true
schema:
enum:
- continue
- abort
type: string
- description: |
Time precision.
Optional, either 's', 'ms', 'u' or 'n'.
Default: 's'. Used only for influx_line_protocol.
in: query
name: time_precision
required: false
schema:
enum:
- s
- ms
- u
- n
type: string
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/PostProjectImportTimeseriesRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The uploaded timeseries is returned in the 'resource' field and the 'operation' will indicate a CREATE operation.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unsuccessful request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Imports timeseries data from a file
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/jobs:
get:
description: Returns a paginated list of the jobs in a project.
operationId: get_project_jobs
parameters:
- description: The id of the project for which to query jobs.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Filter the returned jobs by their type.
in: query
name: type
required: false
schema:
enum:
- process_datapoint_file_mapping
- generate_object_report
type: string
- description: Sort direction of the returned jobs by their creation time. Defaults
to 'desc'.
in: query
name: sort_order
required: false
schema:
default: desc
enum:
- asc
- desc
type: string
- description: The page number.
in: query
name: page
required: false
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
required: false
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/JobList'
description: A paginated list of jobs.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request. Details on the error are returned in the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all jobs in a project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/jobs/{job_id}/logs:
get:
description: Gets logs of a job in the project.
operationId: get_project_job_logs
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the job.
in: path
name: job_id
required: true
schema:
format: uuid
type: string
- $ref: '#/components/parameters/LanguageQueryParam'
- description: Optional parameter, sort order based on the `created_at` timestamps
of the logs, descending by default
in: query
name: sort_order
required: false
schema:
default: desc
enum:
- asc
- desc
type: string
- description: Page number.
in: query
name: page
required: false
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
required: false
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/JobLogList'
description: A list of job logs is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get logs of a job in the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/link/{link_id}:
delete:
description: Deletes an existing project link.
operationId: delete_project_link
parameters:
- description: The id of the project for which to delete a link.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the link to delete.
in: path
name: link_id
required: true
schema:
format: int64
type: integer
responses:
'204':
content: {}
description: Success. The project link has been deleted.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request. Details on the error are returned in
the 'error' field of the response and 'operation' is set to 'delete'.
headers:
WWW_Authenticate:
schema:
type: string
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Link not found.
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a project link.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/mqttuser:
post:
description: Creates an MQTT user account with limited validity.
operationId: post_project_mqttuser
parameters:
- description: The numeric id of the project for which to create the MQTT account.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewMqttUser'
description: |
The details of the new MQTT user account:
- **username**: the username for the account
- **passsword**: the password for the account
- **rights** [optional: can be either 'read' or 'write' while write permissions imply read permissions
- **validity** [optional, default=None]: number of seconds after which the account expires
- **description** [optional, default=""] human readable description for this account
required: true
x-body-name: newmqttuser
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The MQTT user account was crated and is returned in the 'resource' field and the 'operation' is set to 'create'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create an MQTT user account.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/mqttuser/{mqttuser_id}:
put:
description: Updates an MQTT user account.
operationId: put_project_mqttuser
parameters:
- description: The numeric id of the project for which to update an MQTT account.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The numeric id of the MQTT user account to update.
in: path
name: mqttuser_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMqttUser'
description: |
The details of the update to the MQTT user account:
- **password** [optional]: a new password for this account
- **rights** [optional]: change permissions of this account to either 'read' or 'write' (note that 'write' implies read permissions)
- **validity** [optional, default=None]: if present, this account's validity is extended to this number of seconds in the future from the time of this update
- **description** [optional, default=""]: updated human readable description for this account
required: true
x-body-name: update
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The MQTT user account was crated and is returned in the 'resource' field and the 'operation' is set to 'create'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Updates an MQTT user account.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/object-report:
post:
description: |
Triggers the generation of an object report for the given project.
A daily quota limits the number of report generations per project.
operationId: post_project_object_report
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Accepted.
The report generation has been initiated.
The job id and status are returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Not found. A project with this ID does not exist.
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Conflict. A report generation is already in progress for this
project.
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Too many requests. Daily report generation quota exceeded for
this project.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Internal server error.
security:
- basicAuth: []
- openIDConnect: []
summary: Trigger object report generation.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/object-report/status:
get:
description: Returns the remaining daily quota, the most recent generation attempt,
and the most recent successfully generated report for the project.
operationId: get_project_object_report_status
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ObjectReportStatus'
description: Successful operation. Returns the object report status.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Forbidden. User does not have a role on the project.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Project not found.
security:
- basicAuth: []
- openIDConnect: []
summary: Get status of the object report generations for a project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/plot-view:
post:
description: |
The details of the new plot view:
- **start**: Start date time of the plot view, e.g., `2024-09-24T10:58:07.158Z`.
- **end**: End date time of the plot view, e.g., `2024-09-24T10:58:07.158Z`.
- **samplerate**: Sample rate of the plot view.
Allowed intervals are integers combined with durations, like seconds (s), minutes (m), hours (h), and days (d), e.g.
- "10s" specifies a sampling rate of "once every 10 seconds",
- "1h" specifies a sampling rate of "once every (1) hour",
- "0s", "0m", "0h", ... specify highest sampling rate available
- "auto" specifies an automatic sampling rate.
- "original" returns data at its original sampling rate without resampling.
- **datapoints**: Active datapoints of the plot view.
- **hidden_datapoints** [optional, default=[]]: Hidden datapoints of the plot view.
- **zoom**: [optional, default=None] Zoom period of the plot view.
- **start**: Start date time of the zoom period, e.g., `2024-09-24T10:58:07.158Z`.
- **end**: End date time of the zoom period, e.g., `2024-09-24T10:58:07.158Z`.
operationId: post_plot_view
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PlotView'
description: The details of the plot view.
required: true
x-body-name: new_plot_view
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/PlotViewResponse'
description: Success. The created plot view is returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a plot view.
tags:
- Project
x-openapi-router-controller: app.controllers.plot_view_controller
/v2/project/{project_id}/plot-view/{plot_view_id}:
delete:
description: Delete a plot view belonging to a project.
operationId: delete_plot_view
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
type: integer
- description: The id of the plot view.
in: path
name: plot_view_id
required: true
schema:
format: uuid
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PlotViewResponse'
description: Success. The deleted plot view is returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a plot view.
tags:
- Project
x-openapi-router-controller: app.controllers.plot_view_controller
get:
description: Get a plot view belonging to a project.
operationId: get_plot_view
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
type: integer
- description: The id of the plot view.
in: path
name: plot_view_id
required: true
schema:
format: uuid
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PlotViewResponse'
description: Success. The requested plot view has been retrieved.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a plot view.
tags:
- Project
x-openapi-router-controller: app.controllers.plot_view_controller
put:
description: |
The details of the new plot view:
- **start**: Start date time of the plot view, e.g., `2024-09-24T10:58:07.158Z`.
- **end**: End date time of the plot view, e.g., `2024-09-24T10:58:07.158Z`.
- **samplerate**: Sample rate of the plot view.
Allowed intervals are integers combined with durations, like seconds (s), minutes (m), hours (h), and days (d), e.g.
- "10s" specifies a sampling rate of "once every 10 seconds",
- "1h" specifies a sampling rate of "once every (1) hour",
- "0s", "0m", "0h", ... specify highest sampling rate available
- "auto" specifies an automatic sampling rate.
- "original" returns data at its original sampling rate without resampling.
- **datapoints**: Active datapoints of the plot view.
- **hidden_datapoints**: [optional, default=[]] Hidden datapoints of the plot view.
- **zoom**: [optional, default=None] Zoom period of the plot view.
- **start**: Start date time of the zoom period, e.g., `2024-09-24T10:58:07.158Z`.
- **end**: End date time of the zoom period, e.g., `2024-09-24T10:58:07.158Z`.
operationId: put_plot_view
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
type: integer
- description: The id of the plot view.
in: path
name: plot_view_id
required: true
schema:
format: uuid
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PlotView'
description: The details of the plot view.
required: true
x-body-name: plot_view
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PlotViewResponse'
description: Success. The updated plot view is returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Update a plot view.
tags:
- Project
x-openapi-router-controller: app.controllers.plot_view_controller
/v2/project/{project_id}/project_journey:
get:
description: Returns all data related to project journey of the queried project
operationId: get_project_journey
parameters:
- description: The id of the project that should be retrieved.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectJourney'
description: |
Successful operation.
Returns the project journey data associated with the project.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get project journey.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/quota:
get:
description: Returns quota for various services enabled for the project.
operationId: get_project_quota
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Optional parameter, filter quota for a specific service.
in: query
name: service
schema:
enum:
- files
- virtual_datapoints
- AI
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Quotas'
description: Successful operation. Returns quota for services.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get quota for various services enabled for the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/role:
post:
description: Creates a new role for this project.
operationId: post_project_role
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewRole'
description: |
The details of the role to create\n
- **name** is mandatory
- **description** is optional (default = \"\")
- **authed_endpoints** is mandatory, the list of numeric endpoint ids the specified role can access
- **authed_tags** is the list of TagAuths the specified role can access
required: true
x-body-name: role_definition
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
description: Successful operation. Returns details of created role.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'post'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a new role for this project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/role/{role_id}:
delete:
description: Deletes an existing role for this project.
operationId: delete_project_role
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the role that should be deleted.
in: path
name: role_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The deleted project is returned within the 'resource' field and 'operation' will indicate a 'delete' operation
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete an existing role for this project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
put:
description: Updates an existing role for this project.
operationId: put_project_role
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the role.
in: path
name: role_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateRole'
description: |
The details of the role to create\n
- **name** that needs to be edited
- **description** that needs to be edited
- **endpoints** is the list of numeric endpoint ids the specified role can access
required: true
x-body-name: role_definition
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
description: Successful operation. Returns details of edited role.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'post'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Updates an existing role for this project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/role/{role_id}/user/{user_id}:
delete:
description: Removes role with id 'role_id' from user with id 'id'.
operationId: delete_user_role
parameters:
- description: The unique id of the project
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The unique id of the user
in: path
name: user_id
required: true
schema:
format: int64
type: integer
- description: The unique id of the role
in: path
name: role_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The deleted relation between 'user' and 'role' is returned in the 'resource' field of the response and 'operation' is set to 'delete'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Removes a role from a user.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
post:
description: Assigns role with its id 'role_id' to user with her/his id 'id'.
operationId: post_user_role
parameters:
- description: The unique id of the project
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The unique id of the user
in: path
name: user_id
required: true
schema:
format: int64
type: integer
- description: The unique id of the role
in: path
name: role_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The newly created relation between 'user' and 'role' is returned in the 'resource' field of the response and 'operation' is set to 'create'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Assign a role to a user.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/roles:
get:
description: Returns a list of roles defined for the queried project.
operationId: get_project_roles
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListOfRoles'
description: Successful operation. Returns a list of roles in the queried
project.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all roles defined in the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/setpoints:
get:
description: |
Get a list of references of setpoints executed for a given project.
Additionally filters can be applied to narrow down the search.
operationId: get_project_setpoints
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: |
Results can be filtered by keys: dataPointID, status, priority and value.
Format must be in the form of key=value.
Multiple filters can be applied, separated by a ';' like: key=value; key2=value
Filters with same key will be processed as 'Or' and 'And' across different keys.
in: query
name: filter
required: false
schema:
type: string
- description: Page number.
in: query
name: page
required: false
schema:
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
required: false
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SetpointReferences'
description: |
Successful operation.
A list of references to setpoints is returned in the 'resource' field and the 'operation' is set to 'create'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a list of setpoints defined for the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/tag:
post:
description: Creates a new tag that can then be assigned to data points in this
project.
operationId: post_project_tag
parameters:
- description: The id of the project for which to add a data point tag.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewTag'
description: |
The details of the tag.
- **key** is mandatory, the key of the tag
- **value** is mandatory, the value of the key
required: true
x-body-name: tag
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The newly created tag is returned in the 'resource' field and the 'operation' is set to 'create'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a new tag.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/tag/{tag_id}:
delete:
description: Deletes an existing tag associated with this project.
operationId: delete_project_tag
parameters:
- description: The id of the project for which to delete a tags.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the tag to delete.
in: path
name: tag_id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The deleted tag is returned in the 'resource' field and the 'operation' is set to 'delete'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'delete'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a tag.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
put:
description: Updates an existing tag associated with this project.
operationId: put_project_tag
parameters:
- description: The id of the project for which to update a tag.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The id of the tag to update.
in: path
name: tag_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTag'
description: |
The details of the updated tag
- **key** is optional, the tag's key
- **value** is optional, the tag's key value"
required: true
x-body-name: tag
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The updated tag is returned in the 'resource' field and the 'operation' is set to 'update'.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'update'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Update an existing tag.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/tags:
get:
description: Returns a list of all data point tags that have been created in
this project.
operationId: get_project_tags
parameters:
- description: The id of the project for which to query data point tags.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Key of the returned tags.
in: query
name: key
schema:
type: string
- description: Return list of only the keys of the tags occurring.
in: query
name: keys_only
schema:
type: boolean
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/Tag'
type: array
description: Successful operation. A list of all tags for data points in
the specified project is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all data point tags in this project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/tasks:
get:
description: Returns a paginated list the tasks in a project.
operationId: get_project_tasks
parameters:
- description: The id of the project for which to query tasks.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The page number.
in: query
name: page
required: false
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
required: false
schema:
format: int64
type: integer
- description: |
Attributes to sort returned tasks by.
**Format:** Each sort field can optionally include a direction suffix separated by a colon:
- `field` - uses descending order as default
- `field:asc` - ascending order
- `field:desc` - descending order
- Accepts comma-separated sort fields with optional direction suffixes, e.g., `sort_by=priority:desc,title:asc,status:desc`.
- As extra sorting criteria, title will be used in all cases.
- ComponentInProject will be sorted by english name.
- Assignee and Reporter will be sorted by concatenation of first and last name.
- Start, End, Created, and Updated will be sorted by time.
- **Only the following sorting fields are accepted:**
- priority
- title
- componentinproject
- start
- end
- created
- updated
- assignee
- reporter
- status
- savings_potential
in: query
name: sort_by
schema:
items:
type: string
type: array
- description: |
Only the following keys are supported: status, componentinproject_id and analysisfunction_id.
Format must be in the form of key=value.
Multiple filters can be applied, separated by a ';' like: key=value; key2=value
Filters with same key will be processed as 'Or' and 'And' across different keys.
in: query
name: filter
required: false
schema:
type: string
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TaskList'
description: A paginated list of tasks.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request. Details on the error are returned in the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all tasks in a project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/timeseries:
get:
description: |
Returns the measured time series data for the specified data points
referenced by its name/dataPointID for the time interval specified by **start**
and **end**.
Returns the last (or respectively next) **max** observations, if either **start** nor **end** are provided.
The unauthorized data points are ignored in the request.
operationId: get_project_timeseries
parameters:
- description: The id of the project
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Name/ID of the data point, each dataPointID is separated by a
new line.
in: query
name: dataPointIDs
required: true
schema:
items:
type: string
type: array
- description: |
Return only observations *after* this date-time"
If **start** is provided without **end**, the first **max** elements *after* **start** are returned.
in: query
name: start
required: false
schema:
format: date-time
type: string
- description: |
Return only observations *before* this date-time".
If **end** is provided without **start**, the last **max** elements *before* **end** are returned.
in: query
name: end
required: false
schema:
format: date-time
type: string
- description: |
Maximum number of observations to return.
- This option is ignored when both **start** and **end** are provided.
- Setting **max** = 0 returns *all* available data points
in: query
name: max
required: false
schema:
default: 1
format: int64
type: integer
- description: |
Desired sampling rate.
The returned observations are sampled down to the specified interval. The down sampling will be done by calculating the arithmetic average on all observations made within an interval. The timestamp will represent the beginning of the interval the resampling average is estimated for.
Allowed intervals are integers combined with durations, like seconds (s), minutes (m), hours (h), and days (d), e.g.
- "10s" specifies a sampling rate of "once every 10 seconds",
- "1h" specifies a sampling rate of "once every (1) hour",
- "0s", "0m", "0h", ... specify highest sampling rate available
- "auto" specifies an automatic sampling rate
in: query
name: samplerate
schema:
type: string
- description: |
Desired interpolation method.
This option is to be used while resampling. While resampling, the specified method will be used to interpolate missing data.
Default method: "previous"
Available options:
- "previous" Reports the value from the previous time interval for time intervals with no data.
- "linear" Reports the results of linear interpolation for time intervals with no data.
- "null" Reports null for time intervals with no data but returns a timestamp. This is the same as the default behavior.
- "none" Reports no timestamp and no value for time intervals with no data.
in: query
name: interpolation
schema:
default: previous
enum:
- previous
- linear
- 'null'
- none
type: string
- description: |
Desired aggregation method to be used while interpolating over a timeframe.
Default method: "mean"
Available options:
- "mean"
- "min"
- "max"
- "mode"
- "median"
- "distinct"
- "count"
in: query
name: aggregation
required: false
schema:
default: mean
enum:
- mean
- min
- max
- mode
- median
- distinct
- count
type: string
- description: |
Return only list of timeseries data format, i.e.
- without tags
- compressed timeseries format, i.e. [(time1, val1), ..., (timen, valn)]
in: query
name: short
schema:
default: false
type: boolean
- description: |
Returns the last recorded value on the requested start and end timestamp if there does not exist an observation at this precise time.
in: query
name: closed_interval
schema:
default: false
type: boolean
- description: |
The optional system of units in which the timeseries data should be returned (Example: **metric**).
Request the **GET /v2/labels/systems** endpoint to fetch available units systems.
in: query
name: units_system
schema:
type: string
- description: |
The optional currency system in which the timeseries data should be returned (Example: **EUR**).
Request the **GET /v2/labels/systems** endpoint to fetch available currency systems.
in: query
name: currency_system
schema:
type: string
- description: |
The optional units for datapoints in which their timeseries data should be returned.
The order of the units must correspond to the **dataPointIDs**' order.
in: query
name: units
schema:
items:
type: string
type: array
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/TimeseriesWithContext'
type: array
description: |
Successful operation.
A list of observations for the specified data point is returned, along with any datapoints that encountered unit conversion errors and their corresponding error messages.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'get'.
headers:
WWW_Authenticate:
schema:
type: string
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
At least one datapoint could not be converted, e.g., due to the missing `units` tag or the requested unit conversion is not supported.
security:
- basicAuth: []
- openIDConnect: []
summary: Get the time series data of a list of data points.
tags:
- Project
- Timeseries
x-openapi-router-controller: app.controllers.project_controller
post:
description: |
Adds timeseries data for datapoints. New datapoints will be created if they do not exist.
**Note:** Timeseries data can only be added to datapoints you have access to.
operationId: post_project_timeseries
parameters:
- description: The id of the project
in: path
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PostProjectTimeseriesRequest'
description: |
A dictionary with dataPointIDs as keys and lists of observations as values.
Timestamps should be in RFC 3339 format.
required: true
x-body-name: timeseries
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Successful operation. Observations are successfully added.
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Forbidden request. Details on the error are returned in the
'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Add timeseries data for datapoints.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/users:
get:
description: Returns a list of users that have access to a project, either due
to a company role or a project role.
operationId: get_project_users
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: The search term. Users with a matching first name, last name
and email will be returned.
in: query
name: search
required: false
schema:
type: string
- description: The page number.
in: query
name: page
required: false
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
required: false
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ShortUserList'
description: Successful operation. Returns a list of users in the queried
project.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response."
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all users of the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/virtual_datapoint:
delete:
description: Deletes a virtual datapoint in the project.
operationId: delete_project_virtual_datapoint
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Fully qualified datapoint name.
in: query
name: dataPointID
required: true
schema:
type: string
- description: Delete corresponding datapoint and timeseries of the virtual
datapoint.
in: query
name: purge
schema:
default: false
type: boolean
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VirtualDatapoint'
description: The virtual datapoint marked for deletion is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a virtual datapoint in the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
get:
description: Gets a virtual datapoint in the project.
operationId: get_project_virtual_datapoint
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Fully qualified datapoint name.
in: query
name: dataPointID
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VirtualDatapoint'
description: A virtual datapoint is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a virtual datapoint in the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
post:
description: Creates a virtual datapoint in the project.
operationId: post_project_virtual_datapoint
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Type of the virtual datapoint.
in: query
name: type
required: true
schema:
enum:
- absolute_air_humidity
- counter
- deviation
- formula
- gradient
type: string
- description: Name of the virtual datapoint.
in: query
name: dataPointID
required: true
schema:
type: string
- description: description for the virtual datapoint.
in: query
name: description
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PostProjectVirtualDatapointRequest'
description: |
Pin and parameter config for the datapoint.
The available options heavily depend on the type of the virtual datapoint.
For more information see aedifion docs.
required: true
x-body-name: config
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VirtualDatapoint'
description: Created virtual datapoint is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a virtual datapoint in the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
put:
description: Edits a virtual datapoint in the project.
operationId: put_project_virtual_datapoint
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Fully qualified datapoint name.
in: query
name: dataPointID
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PutProjectVirtualDatapointRequest'
description: Parameters to update.
required: false
x-body-name: update
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VirtualDatapoint'
description: Updated virtual datapoint is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Edit a virtual datapoint in the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/virtual_datapoint/run:
post:
description: Requests to run or stop a virtual datapoint in the project.
operationId: post_project_virtual_datapoint_run
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Fully qualified datapoint name.
in: query
name: dataPointID
required: true
schema:
type: string
- description: Desired state of the virtual datapoint.
in: query
name: run
required: true
schema:
type: boolean
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VirtualDatapoint'
description: Affected virtual datapoint is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Request to run or stop a virtual datapoint in the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/project/{project_id}/virtual_datapoints:
get:
description: Gets a list of virtual datapoints in the project.
operationId: get_project_virtual_datapoints
parameters:
- description: The id of the project.
in: path
name: project_id
required: true
schema:
format: int64
type: integer
- description: Search virtual datapoints. All datapoints matching the search
string will be returned.
in: query
name: search
schema:
type: string
- description: |
Results can be filtered by keys: status_code.
Format must be in the form of key=value.
Multiple filters can be applied, separated by a ';' like: key=value; key2=value
Filters with same key will be processed as 'Or' and 'And' across different keys.
in: query
name: filter
required: false
schema:
type: string
- description: Page number.
in: query
name: page
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VirtualDatapointList'
description: A list of virtual datapoints are returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to 'create'.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a list of virtual datapoints in the project.
tags:
- Project
x-openapi-router-controller: app.controllers.project_controller
/v2/realm/companies:
get:
description: Get list of the companies.
operationId: get_companies
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/CompanyWithContext'
type: array
description: Success. List of all companies returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all companies.
tags:
- Realm
x-openapi-router-controller: app.controllers.realm_controller
/v2/realm/project_journey_sync:
post:
description: Synchronizes project journey data for each project in the given
project_ids list.
operationId: post_project_journey_sync
parameters:
- description: The list of project ids to synchronize project journey data.
in: query
name: project_ids
required: true
schema:
items:
format: int64
type: integer
type: array
responses:
'202':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Success'
- properties:
resource:
$ref: '#/components/schemas/ProjectJourneySyncResponse'
type: object
description: A success message in case the request was posted successfully.
headers:
WWW-Authenticate:
schema:
type: string
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: "Unauthorized request. \nDetails on the error are returned\
\ in the 'error' field of the response.\n"
headers:
WWW-Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Post a project journey synchronization request.
tags:
- Realm
x-openapi-router-controller: app.controllers.realm_controller
/v2/realm/role/user/{user_id}:
delete:
description: Delete the associated realm role from a user.
operationId: delete_user_realm_role
parameters:
- description: The id of the user.
in: path
name: user_id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/User'
description: Success. The realm role has been deleted from user.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete the realm role from a user.
tags:
- Realm
x-openapi-router-controller: app.controllers.realm_controller
/v2/realm/role/{role_id}/user/{user_id}:
post:
description: Assign or change the realm role to the user.
operationId: post_user_realm_role
parameters:
- description: The id of the realm role.
in: path
name: role_id
required: true
schema:
type: integer
- description: The id of the user.
in: path
name: user_id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/User'
description: Success. The realm role has been assigned to the user. The
updated user is returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Assign a new realm role to the user.
tags:
- Realm
x-openapi-router-controller: app.controllers.realm_controller
/v2/realm/roles:
get:
description: Get list of all realm roles.
operationId: get_realm_roles
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/RealmRole'
type: array
description: Success. List of all available realm roles returned in the
response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all available realm roles.
tags:
- Realm
x-openapi-router-controller: app.controllers.realm_controller
/v2/task:
post:
description: |
Create a new task.
operationId: post_task
parameters:
- description: The id of the project in which to create the task.
in: query
name: project_id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewTask'
description: The details of the task to create.
required: true
x-body-name: new_task
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Task'
description: Success. The task has been created. The created task is returned
in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details of the error are returned in
the 'error' field of the repsonse.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a new task.
tags:
- Task
x-openapi-router-controller: app.controllers.task_controller
/v2/task/comments/{comment_id}:
delete:
description: Delete a comment belonging to a task.
operationId: delete_task_comment
parameters:
- description: The id of the comment.
in: path
name: comment_id
required: true
schema:
format: uuid
type: string
responses:
'204':
content: {}
description: Success. The task comment has been deleted.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a task comment.
tags:
- Task
x-openapi-router-controller: app.controllers.task_controller
get:
description: Get the details of a task comment.
operationId: get_task_comment
parameters:
- description: The id of the comment.
in: path
name: comment_id
required: true
schema:
format: uuid
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TaskComment'
description: Success. The queried task comment is returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a task comment.
tags:
- Task
x-openapi-router-controller: app.controllers.task_controller
put:
description: Update the message of a task comment.
operationId: put_task_comment
parameters:
- description: The id of the comment.
in: path
name: comment_id
required: true
schema:
format: uuid
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTaskComment'
description: The changes to the comment.
required: true
x-body-name: comment
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TaskComment'
description: Success. The task comment has been updated. The updated comment
is returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Edit a task comment.
tags:
- Task
x-openapi-router-controller: app.controllers.task_controller
/v2/task/{task_id}:
delete:
description: Delete the task.
operationId: delete_task
parameters:
- description: The id of the task.
in: path
name: task_id
required: true
schema:
format: uuid
type: string
responses:
'204':
content: {}
description: Success. The task has been deleted.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a task.
tags:
- Task
x-openapi-router-controller: app.controllers.task_controller
get:
description: Get the details of the task.
operationId: get_task
parameters:
- description: The id of the task.
in: path
name: task_id
required: true
schema:
format: uuid
type: string
- $ref: '#/components/parameters/LanguageQueryParam'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Task'
description: Success. The queried task is returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get a task.
tags:
- Task
x-openapi-router-controller: app.controllers.task_controller
put:
description: Edit one or multiple attributes of the task.
operationId: put_task
parameters:
- description: The id of the task.
in: path
name: task_id
required: true
schema:
format: uuid
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTask'
description: The changes to the task.
required: true
x-body-name: task
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Task'
description: Success. The task has been updated. The updated task is returned
in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details on the error are returned in
the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Edit a task.
tags:
- Task
x-openapi-router-controller: app.controllers.task_controller
/v2/task/{task_id}/comments:
get:
description: Returns a paginated list of task comments.
operationId: get_task_comments
parameters:
- description: The id of the task.
in: path
name: task_id
required: true
schema:
format: uuid
type: string
- description: The page number.
in: query
name: page
required: false
schema:
format: int64
type: integer
- description: Items per page. Defaults to 20, maximum limit is 100.
in: query
name: per_page
required: false
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TaskCommentList'
description: A paginated list of task comments.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request. Details on the error are returned in the 'error' field of the response.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get all comments of a task.
tags:
- Task
x-openapi-router-controller: app.controllers.task_controller
post:
description: Create a new comment for a task given with `task_id`.
operationId: post_task_comment
parameters:
- description: The id of the task the comment will be created for.
in: path
name: task_id
required: true
schema:
format: uuid
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NewTaskComment'
description: The details of the comment.
required: true
x-body-name: new_comment
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/TaskComment'
description: Success. The task comment has been created. The created comment
is returned in the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized request. Details of the error are returned in
the 'error' field of the repsonse.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Create a new task comment.
tags:
- Task
x-openapi-router-controller: app.controllers.task_controller
/v2/user:
delete:
description: Deletes the logged in user and all his/her resources - DANGER to
suspend important accounts!
operationId: delete_user
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Successful operation.
The deleted user is returned within the 'resource' field and 'operation' will indicate a DELETE operation.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized access.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: 'CAUTION: Deletes logged in user.'
tags:
- User
x-openapi-router-controller: app.controllers.user_controller
get:
description: Returns the details of the logged in user.
operationId: get_user
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UserWithContext'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get logged in user's details.
tags:
- User
x-openapi-router-controller: app.controllers.user_controller
put:
description: Updates the details of the specified user (specification by authentication
credentials).
operationId: put_user
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUser'
description: |
The details of the updated user:
- **firstName** is optional, the new first name of the updated user
- **lastName** is optional, the new last name of the updated user
- **email** is optional, the new email address of the updated user
- **address** is optional, the address of the updated user
- **phone** is optional, the phone number of the updated user
- **units_system** is optional, the preferred system of units of the updated user
- **currency_system** is optional, the preferred currency system of the updated user
- **locale** is optional, the locale of the updated user
required: true
x-body-name: user_body
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Update the details of the logged in user.
tags:
- User
x-openapi-router-controller: app.controllers.user_controller
/v2/user/ai/chat/{thread_id}:
post:
description: |
Chat with the AI based on the user's current context.
Requests tagged in the metadata with `feature` set to `task-description-translate`
or `task-description-improve` are treated as ephemeral one-shot calls: neither the
conversation thread nor the chat history is persisted.
operationId: post_chat
parameters:
- description: The ID of the conversation thread.
in: path
name: thread_id
required: true
schema:
format: uuid
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ChatRequest'
description: The chat request payload including user message and context.
required: true
x-body-name: chat_request
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ChatResponse'
description: Success. The chat request was processed and an answer provided.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad Request.
The input could not be processed.
Details on the error are returned in the 'error' field of the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized. Authentication is required.
security:
- basicAuth: []
- openIDConnect: []
summary: Chat with the AI scoped to the user.
tags:
- AI
x-openapi-router-controller: app.controllers.ai_controller
/v2/user/ai/thread/{thread_id}:
delete:
description: |
Deletes a specific user AI conversation thread scoped to the user's current context.
operationId: delete_user_conversation_thread
parameters:
- description: The unique idetifier of the user AI conversation thread.
in: path
name: thread_id
required: true
schema:
format: uuid
type: string
responses:
'204':
content: {}
description: Success. The user AI converstion thread is successfully deleted.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad Request.
The input could not be processed.
Details on the error are returned in the 'error' field of the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized. Authentication is required.
security:
- basicAuth: []
- openIDConnect: []
summary: Delete a user AI conversation thread.
tags:
- AI
x-openapi-router-controller: app.controllers.ai_controller
get:
description: Retrieves complete chat history, sorted newest to oldest
operationId: get_chat_history
parameters:
- description: The chat thread ID
in: path
name: thread_id
required: true
schema:
format: uuid
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ChatHistory'
description: Success. The chat history for the thread is returned.
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Not Found
security:
- basicAuth: []
- openIDConnect: []
summary: Get all chat messages for a thread.
tags:
- AI
x-openapi-router-controller: app.controllers.ai_controller
/v2/user/ai/threads:
get:
description: |
Gets all the AI conversation threads based on the user's current context.
operationId: get_user_conversation_threads
parameters:
- description: The page number used for paginating the result. Default to 0
in: query
name: page
required: false
schema:
type: integer
- description: The number of records per page. Default to 10
in: query
name: per_page
required: false
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AIConversationThreads'
description: Success. The get request was processed and a response provided.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Bad Request.
The input could not be processed.
Details on the error are returned in the 'error' field of the response.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized. Authentication is required.
security:
- basicAuth: []
- openIDConnect: []
summary: Gets all conversation threads scoped to the user.
tags:
- AI
x-openapi-router-controller: app.controllers.ai_controller
/v2/user/avatar:
delete:
description: Deletes the current profile image of the user
operationId: delete_user_avatar
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Successful operation.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Out of service.
security:
- basicAuth: []
- openIDConnect: []
summary: Deletes the current profile image of the user
tags:
- User
x-openapi-router-controller: app.controllers.user_controller
post:
description: Uploads and stores an image for the current user
operationId: post_user_avatar
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadAvatarRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Successful operation.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: File is not an image file.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Out of service.
security:
- basicAuth: []
- openIDConnect: []
summary: Uploads and stores an image for the current user
tags:
- User
x-openapi-router-controller: app.controllers.user_controller
/v2/user/favorites:
get:
description: Returns a list of data points that the user marked as his/her favorites.
operationId: get_user_favorites
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/DataPoint'
title: Favorites
type: array
description: |
Successful operation.
A list of all data points that the current user marked as favorites is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to get.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get user's favorite data points.
tags:
- User
x-openapi-router-controller: app.controllers.user_controller
/v2/user/password:
put:
description: |
Allows user to change their password.
Maximum three consecutive fail attempts within 24 hours, will lock this endpoint until the next day.
operationId: put_user_password
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PutUserPasswordRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: Successful operation.
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Current password is incorrect.
'423':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Endpoint is locked due to too many requests.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Out of service.
security:
- basicAuth: []
- openIDConnect: []
summary: Change user's password.
tags:
- User
x-openapi-router-controller: app.controllers.user_controller
/v2/user/projects:
get:
description: Returns a list of all projects that the user is authorized for.
operationId: get_user_projects
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ProjectWithContext'
type: array
description: Successful operation. A list of projects that the user is authorized
to access is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to get.
headers:
WWW_Authenticate:
schema:
type: string
security:
- basicAuth: []
- openIDConnect: []
summary: Get user's projects.
tags:
- User
x-openapi-router-controller: app.controllers.user_controller
/v2/user/projects/hidden_native_page:
delete:
description: |
Removes a native page from the list of hidden pages for all projects the user has access to.
Only accessible to company admins and realm admins.
operationId: delete_user_projects_hidden_native_page
parameters:
- description: The title of the native page to unhide.
in: query
name: title
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Success.
The native page has been removed from the list of hidden pages for all user projects.
The updated projects are returned in the 'resource' field."
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Bad request. Parameter title is missing or invalid.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized.
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Forbidden request. Details on the error are returned in the
'error' field of the response.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Internal server error.
security:
- basicAuth: []
- openIDConnect: []
summary: Unhide a native page for all user projects.
tags:
- User
x-openapi-router-controller: app.controllers.user_controller
post:
description: |
Adds a native page to the list of hidden pages for all projects the user has access to.
Only accessible to company admins and realm admins.
operationId: post_user_projects_hidden_native_page
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/HiddenNativePage'
required: true
x-body-name: hidden_native_page
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
description: |
Success.
The native page has been added to the list of hidden pages for all user projects.
The updated projects are returned in the 'resource' field."
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Bad request. Parameter title is missing or invalid.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unauthorized.
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Forbidden request. Details on the error are returned in the
'error' field of the response.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Internal server error.
security:
- basicAuth: []
- openIDConnect: []
summary: Hide a native page for all user projects.
tags:
- User
x-openapi-router-controller: app.controllers.user_controller
/v2/user/projects/portfolio:
get:
description: |
Returns aggregated portfolio data for every project the user is authorized for, one
`ProjectPortfolio` entry per project. Each entry bundles base metadata (name, avatar,
data ingress date), the current project journey phase, controls status, task statistics,
savings and analysis-result statistics. Entries are sorted by project name (Z to A).
operationId: get_user_projects_portfolio
parameters:
- description: |
The optional system of units in which the savings should be returned (Example: **metric**).
Request the **GET /v2/labels/systems** endpoint to fetch available units systems.
in: query
name: units_system
schema:
type: string
- description: |
The optional currency system in which the savings should be returned (Example: **EUR**).
Request the **GET /v2/labels/systems** endpoint to fetch available currency systems.
in: query
name: currency_system
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UserProjectsPortfolio'
description: |
Successful operation.
The user's project portfolio is returned.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: |
Unauthorized request.
Details on the error are returned in the 'error' field of the response and 'operation' is set to get.
headers:
WWW_Authenticate:
schema:
type: string
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: The requested units_system or currency_system is invalid or
not supported.
security:
- basicAuth: []
- openIDConnect: []
summary: Get the user's project portfolio.
tags:
- User
x-openapi-router-controller: app.controllers.user_controller
servers:
- url: ''
tags:
- description: Meta management resources.
name: Meta
- description: Creating, modifying, and accessing AI related resources.
name: AI
- description: Accessing realm-level resources.
name: Realm
- description: Creating, modifying, and accessing companies and related resources.
name: Company
- description: Creating, modifying, and accessing users and related resources.
name: User
- description: Creating, modifying, and accessing projects and related resources.
name: Project
- description: Creating, modifying, and accessing datapoints and related resources.
name: Datapoint
- description: Creating, modifying, and accessing alerts and related resources.
name: Alert
- description: Creating, modifying, and accessing tasks and related resources.
name: Task
- description: Creating, modifying, and accessing components and related resources.
name: Component
- description: Creating, modifying, and accessing analytics and related resources.
name: Analytics
- description: Creating, modifying, and accessing controls apps and related resources.
name: Controls