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