{"openapi":"3.0.1","info":{"title":"Dashboards","description":"Dashboards, widgets, dashboard data and images.","version":"v3"},"servers":[{"url":"https://talk.perspio.io/dashboards/v3","description":"AU Region"},{"url":"https://us-talk.perspio.io/dashboards/v3","description":"US Region"}],"paths":{"/":{"get":{"tags":["Dashboards"],"summary":"Get Dashboards","description":"List the tenant's dashboards.","operationId":"getdashboards","parameters":[{"name":"includedisabledassets","in":"header","description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false.","schema":{"type":"boolean"},"example":"False"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Display name."},"isGlobal":{"type":"boolean","description":"Whether the dashboard is shared across the whole tenant."},"description":{"type":"string","description":"Free-text description."},"enabled":{"type":"boolean","description":"Whether the dashboard is enabled."},"scope":{"type":"object","properties":{"scopeType":{"type":"number"},"objectRefs":{"type":"array","items":{"type":"string"}}},"description":"Visibility scope of the dashboard."},"backgroundImageUrl":{"description":"URL of the dashboard background image."},"logoImageUrl":{"description":"URL of the dashboard logo image."},"widgets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of this record."},"name":{"type":"string","description":"Display name."},"description":{"type":"string","description":"Free-text description."},"type":{"type":"string","description":"Type / record-type discriminator."},"dataType":{"type":"string","description":"Data type the widget renders."},"inputParameters":{"type":"object","properties":{"scope":{"type":"object","properties":{"scopeType":{"type":"number"},"objectRefs":{"type":"array","items":{"type":"string"}}},"description":"Visibility scope of the dashboard."},"ids":{},"signals":{"type":"array","items":{"type":"string"}},"options":{"type":"array","items":{"type":"string"}},"condition":{"type":"object","properties":{"fact":{"type":"string"},"operator":{"type":"string"},"value":{"type":"string"},"all":{"type":"array","items":{"type":"object","properties":{"fact":{"type":"string"},"operator":{"type":"string"},"value":{"type":"string"}}}},"any":{"type":"array","items":{"type":"object","properties":{"fact":{"type":"string"},"operator":{"type":"string"},"value":{"type":"string"}}}}}}},"description":"Input parameters for the widget query."},"display":{"type":"object","properties":{"chartcolor":{},"cols":{"type":"number"},"rows":{"type":"number"},"x":{"type":"number"},"y":{"type":"number"},"backgroundColor":{"type":"string"},"detailedChart":{"type":"boolean"},"chartColor":{},"whiteText":{"type":"boolean"},"decimalPlaces":{"type":"string"},"transparentBackground":{"type":"boolean"},"scaleValueOnResize":{"type":"boolean"},"hideLastValue":{},"frostedBackground":{"type":"boolean"},"centerTitle":{"type":"boolean"},"hideTitle":{},"hideDescription":{},"boolDisplayType":{"type":"string"},"hideChartLabels":{},"hideChartLegend":{"type":"boolean"},"barChartVerticalLayout":{"type":"boolean"},"noGrouping":{"type":"boolean"},"limitToTopXResults":{"type":"number"},"sortAsc":{"type":"boolean"},"hideAssetIcons":{},"processControlUpper":{},"processControlLower":{},"processControlAverage":{},"showProcessControl":{},"hideChartBullets":{},"groupChartBullets":{},"mapTheme":{"type":"string"},"mapCluster":{"type":"boolean"},"mapGeofences":{},"mapTollRoads":{},"mapHeatMap":{},"mapKmls":{}},"description":"Display configuration for the widget."}}},"description":"Widgets that make up the dashboard."},"createdBy":{"type":"string","description":"User or system that created the record."},"createdDate":{"type":"string","description":"UTC timestamp when the record was created."},"updatedBy":{"type":"string","description":"User or system that last modified the record."},"ownedBy":{"type":"string","description":"Owner of the record."},"updatedDate":{"type":"string","description":"UTC timestamp when the record was last modified."},"id":{"type":"string","description":"Unique identifier of this record."},"type":{"type":"string","description":"Type / record-type discriminator."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"number"}}}},"example":[{"name":"Dashboard Group Alpha","isGlobal":true,"description":"A global dashboard group for monitoring key metrics.","enabled":true,"scope":{"scopeType":1,"objectRefs":["obj-001","obj-002"]},"backgroundImageUrl":"https://example.com/images/background-alpha.jpg","logoImageUrl":"https://example.com/images/logo-alpha.png","widgets":[{"id":"widget-123","name":"Performance Chart","description":"Shows performance over time","type":"chart","dataType":"time-series","inputParameters":{"scope":{"scopeType":2,"objectRefs":["obj-003"]},"ids":["id-1001","id-1002"],"signals":["signal-1","signal-2"],"options":["optionA","optionB"],"condition":{"fact":"temperature","operator":">","value":"75","all":[{"fact":"humidity","operator":"<","value":"60"}],"any":[{"fact":"pressure","operator":">=","value":"101"}]}},"display":{"chartcolor":"#FF5733","cols":4,"rows":2,"x":0,"y":0,"backgroundColor":"#FFFFFF","detailedChart":true,"chartColor":"#33A1FF","whiteText":false,"decimalPlaces":"2","transparentBackground":false,"scaleValueOnResize":true,"hideLastValue":false,"frostedBackground":false,"centerTitle":true,"hideTitle":false,"hideDescription":false,"boolDisplayType":"toggle","hideChartLabels":false,"hideChartLegend":true,"barChartVerticalLayout":false,"noGrouping":false,"limitToTopXResults":10,"sortAsc":true,"hideAssetIcons":false,"processControlUpper":100,"processControlLower":20,"processControlAverage":50,"showProcessControl":true,"hideChartBullets":false,"groupChartBullets":true,"mapTheme":"light","mapCluster":true,"mapGeofences":true,"mapTollRoads":false,"mapHeatMap":true,"mapKmls":false}}],"createdBy":"admin-user","createdDate":"2025-06-20T12:00:00.0000000+00:00","updatedBy":"editor-user","ownedBy":"owner-user","updatedDate":"2025-06-21T15:30:00.0000000+00:00","id":"group-789","type":"dashboardGroup","correlationId":"corr-xyz-123","_ts":1687286400}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Bearer token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.GetDashboards","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/dashboards","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"post":{"tags":["Dashboards"],"summary":"Create Dashboard","description":"Create a new dashboard for the tenant.","operationId":"createdashboard","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDashboard-RequestObject"},"example":{"name":"Toilet Usage","description":"Usage Dashboard","enabled":true,"scope":{"scopeType":5,"objectRefs":[]},"backgroundImageUrl":null,"logoImageUrl":"/assets/logos/safetyculture-logo.png","widgets":[{"id":"5e049e0c9c334b6284a6a3907e41b4c4","name":"L2 - Access","description":null,"type":"text-value","objectRef":"sc-000016","objectRefs":["sc-000016"],"field":"totalUsage","aggFunc":null,"resultAggFunc":null,"customiser":null,"conditions":null,"dataFilter":{"hasSummary":true,"showValidOnly":true,"showConditions":null},"display":{"alias":"access","unit":"","min":0,"max":100,"y":8,"x":8,"showHeader":true,"cols":8,"rows":4,"decimals":0,"backgroundColor":null,"headerType":"basic","tinyCard":true,"header":"L2 - Access","type":"text-value","templates":["header","value","chart"],"hasChart":true}},{"id":"4efc5154168e4a608fa630787dffc993","name":"L2 - Female","description":null,"type":"text-value","objectRef":"sc-000017","objectRefs":["sc-000017"],"field":"totalUsage","aggFunc":null,"resultAggFunc":null,"customiser":null,"conditions":null,"dataFilter":{"hasSummary":true,"showValidOnly":true,"showConditions":null},"display":{"alias":"female","unit":"","min":0,"max":100,"y":8,"x":0,"showHeader":true,"cols":8,"rows":4,"decimals":0,"backgroundColor":null,"tinyCard":true,"headerType":"basic","header":"L2 - Female","type":"text-value","templates":["header","value","chart"],"hasChart":true}}]}}}},"responses":{"200":{"description":"The dashboard was created.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Display name."},"isGlobal":{"type":"boolean","description":"Whether the dashboard is shared across the whole tenant."},"description":{"type":"string","description":"Free-text description."},"enabled":{"type":"boolean","description":"Whether the dashboard is enabled."},"scope":{"type":"object","properties":{"scopeType":{"type":"number"},"objectRefs":{"type":"array","items":{}}},"description":"Visibility scope of the dashboard."},"backgroundImageUrl":{"description":"URL of the dashboard background image."},"logoImageUrl":{"description":"URL of the dashboard logo image."},"widgets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of this record."},"name":{"type":"string","description":"Display name."},"description":{"type":"string","description":"Free-text description."},"type":{"type":"string","description":"Type / record-type discriminator."},"dataType":{"type":"string","description":"Data type the widget renders."},"inputParameters":{"type":"object","properties":{"scope":{"type":"object","properties":{"scopeType":{"type":"number"},"objectRefs":{"type":"array","items":{"type":"string"}}},"description":"Visibility scope of the dashboard."},"ids":{},"signals":{"type":"array","items":{"type":"string"}},"options":{},"condition":{"type":"object","properties":{"fact":{"type":"string"},"operator":{"type":"string"},"value":{"type":"string"},"all":{"type":"array","items":{"type":"object","properties":{"fact":{"type":"string"},"operator":{"type":"string"},"value":{"type":"string"}}}}}}},"description":"Input parameters for the widget query."},"display":{"type":"object","properties":{"chartcolor":{},"cols":{"type":"number"},"rows":{"type":"number"},"x":{"type":"number"},"y":{"type":"number"},"backgroundColor":{"type":"string"},"detailedChart":{"type":"boolean"},"chartColor":{},"whiteText":{"type":"boolean"},"decimalPlaces":{},"transparentBackground":{"type":"boolean"},"scaleValueOnResize":{"type":"boolean"},"hideLastValue":{},"frostedBackground":{"type":"boolean"},"centerTitle":{},"hideTitle":{},"hideDescription":{},"boolDisplayType":{"type":"string"},"hideChartLabels":{},"hideChartLegend":{"type":"boolean"},"barChartVerticalLayout":{},"noGrouping":{},"limitToTopXResults":{},"sortAsc":{},"hideAssetIcons":{},"processControlUpper":{},"processControlLower":{},"processControlAverage":{},"showProcessControl":{},"hideChartBullets":{},"groupChartBullets":{},"mapTheme":{},"mapCluster":{"type":"boolean"},"mapGeofences":{},"mapTollRoads":{},"mapHeatMap":{},"mapKmls":{}},"description":"Display configuration for the widget."}}},"description":"Widgets that make up the dashboard."},"createdBy":{"type":"string","description":"User or system that created the record."},"createdDate":{"type":"string","description":"UTC timestamp when the record was created."},"updatedBy":{"type":"string","description":"User or system that last modified the record."},"ownedBy":{"type":"string","description":"Owner of the record."},"updatedDate":{"type":"string","description":"UTC timestamp when the record was last modified."},"id":{"type":"string","description":"Unique identifier of this record."},"type":{"type":"string","description":"Type / record-type discriminator."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"number"}}},"example":{"name":"Environmental Dashboard","isGlobal":false,"description":"Monitors key environmental metrics for selected zones.","enabled":true,"scope":{"scopeType":2,"objectRefs":["zone-101","zone-102"]},"backgroundImageUrl":"https://example.com/bg/env.jpg","logoImageUrl":"https://example.com/logo/env-logo.svg","widgets":[{"id":"widget-a12b3","name":"CO2 Levels","description":"Tracks carbon dioxide levels in monitored zones.","type":"chart","dataType":"timeseries","inputParameters":{"scope":{"scopeType":1,"objectRefs":["sensor-55","sensor-87"]},"ids":["data-id-001","data-id-002"],"signals":["co2_reading","temp_reading"],"options":["average","max"],"condition":{"fact":"co2_reading","operator":">","value":"800","all":[{"fact":"temp_reading","operator":"<","value":"30"}]}},"display":{"chartcolor":"#228B22","cols":6,"rows":2,"x":1,"y":1,"backgroundColor":"#ffffff","detailedChart":true,"chartColor":"#228B22","whiteText":false,"decimalPlaces":"1","transparentBackground":false,"hideLastValue":false,"frostedBackground":false,"centerTitle":true,"hideTitle":false,"hideDescription":false,"boolDisplayType":"switch","hideChartLabels":false,"barChartVerticalLayout":false,"noGrouping":false,"limitToTopXResults":5,"sortAsc":true,"hideAssetIcons":false,"processControlUpper":1000,"processControlLower":400,"processControlAverage":700,"showProcessControl":true,"hideChartBullets":false,"groupChartBullets":true,"mapTheme":"satellite","mapCluster":true,"mapGeofences":false,"mapTollRoads":false,"mapHeatMap":true,"mapKmls":false}}],"createdBy":"admin_user","createdDate":"2025-06-24T01:23:45.0000000+00:00","updatedBy":"analyst_user","ownedBy":"team-environmental","updatedDate":"2025-06-24T06:42:30.0000000+00:00","id":"dashboard-xyz123","type":"dashboardConfig","correlationId":"corr-5678-env","_ts":1729782945}}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Bearer token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.CreateDashboard","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/dashboards","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}":{"put":{"tags":["Dashboards"],"summary":"Update Dashboard","description":"Update a dashboard by id.","operationId":"updatedashboard","parameters":[{"name":"id","in":"path","description":"Dashboard Id","required":true,"schema":{"type":"string","example":"in-dash-000339"}},{"name":"includedisabledassets","in":"header","description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false.","schema":{"type":"boolean"},"example":"False"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDashboard-RequestObject"},"example":{"name":"Toilet Usage","description":"Usage Dashboard","enabled":true,"scope":{"scopeType":5,"objectRefs":[]},"backgroundImageUrl":null,"logoImageUrl":"/assets/logos/safetyculture-logo.png","widgets":[{"id":"5e049e0c9c334b6284a6a3907e41b4c4","name":"L2 - Access","description":null,"type":"text-value","objectRef":"sc-000016","objectRefs":["sc-000016"],"field":"totalUsage","aggFunc":null,"resultAggFunc":null,"customiser":null,"conditions":null,"dataFilter":{"hasSummary":true,"showValidOnly":true,"showConditions":null},"display":{"alias":"access","unit":"","min":0,"max":100,"y":8,"x":8,"showHeader":true,"cols":8,"rows":4,"decimals":0,"backgroundColor":null,"headerType":"basic","tinyCard":true,"header":"L2 - Access","type":"text-value","templates":["header","value","chart"],"hasChart":true}},{"id":"4efc5154168e4a608fa630787dffc993","name":"L2 - Female","description":null,"type":"text-value","objectRef":"sc-000017","objectRefs":["sc-000017"],"field":"totalUsage","aggFunc":null,"resultAggFunc":null,"customiser":null,"conditions":null,"dataFilter":{"hasSummary":true,"showValidOnly":true,"showConditions":null},"display":{"alias":"female","unit":"","min":0,"max":100,"y":8,"x":0,"showHeader":true,"cols":8,"rows":4,"decimals":0,"backgroundColor":null,"tinyCard":true,"headerType":"basic","header":"L2 - Female","type":"text-value","templates":["header","value","chart"],"hasChart":true}}]}}}},"responses":{"200":{"description":"null"},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.UpdateDashboard","errorType":"ArgumentException","statusCode":400,"request":"PUT /api/dashboards/in-dash-000339","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid dashboard id format: 'abc123'. Expected format: xx-dash-nnnnnn"}}}},"401":{"description":"Invalid API Key provided or Invalid Bearer token"},"404":{"description":"Dashboard Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.UpdateDashboard","errorType":"NullReferenceException","statusCode":500,"request":"PUT /api/dashboards/in-dash-000339","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"delete":{"tags":["Dashboards"],"summary":"Delete Dashboard","description":"Delete a dashboard by id.","operationId":"deletedashboard","parameters":[{"name":"id","in":"path","description":"Dashboard Id","required":true,"schema":{"type":"string","example":"in-dash-000340"}},{"name":"includedisabledassets","in":"header","description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false.","schema":{"type":"boolean"},"example":"False"}],"responses":{"200":{"description":"The dashboard was deleted."},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.DeleteDashboard","errorType":"ArgumentException","statusCode":400,"request":"DELETE /api/dashboards/in-dash-000340","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid dashboard id format: 'abc123'. Expected format: xx-dash-nnnnnn"}}}},"401":{"description":"Invalid API Key provided or Invalid Bearer token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.DeleteDashboard","errorType":"NullReferenceException","statusCode":500,"request":"DELETE /api/dashboards/in-dash-000340","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"get":{"tags":["Dashboards"],"summary":"Get Dashboard","description":"Fetch a single dashboard by id.","operationId":"getDashboard","parameters":[{"name":"id","in":"path","description":"Dashboard Id","required":true,"schema":{"type":"string","example":"in-dash-000339"}},{"name":"includedisabledassets","in":"header","description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false.","schema":{"type":"boolean"},"example":"False"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Display name."},"isGlobal":{"type":"boolean","description":"Whether the dashboard is shared across the whole tenant."},"description":{"type":"string","description":"Free-text description."},"enabled":{"type":"boolean","description":"Whether the dashboard is enabled."},"scope":{"type":"object","properties":{"scopeType":{"type":"number"},"objectRefs":{"type":"array","items":{}}},"description":"Visibility scope of the dashboard."},"backgroundImageUrl":{"description":"URL of the dashboard background image."},"logoImageUrl":{"description":"URL of the dashboard logo image."},"widgets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of this record."},"name":{"type":"string","description":"Display name."},"description":{"type":"string","description":"Free-text description."},"type":{"type":"string","description":"Type / record-type discriminator."},"dataType":{"type":"string","description":"Data type the widget renders."},"inputParameters":{"type":"object","properties":{"scope":{"type":"object","properties":{"scopeType":{"type":"number"},"objectRefs":{"type":"array","items":{"type":"string"}}},"description":"Visibility scope of the dashboard."},"ids":{},"signals":{"type":"array","items":{"type":"string"}},"options":{},"condition":{"type":"object","properties":{"fact":{"type":"string"},"operator":{"type":"string"},"value":{"type":"string"},"all":{"type":"array","items":{"type":"object","properties":{"fact":{"type":"string"},"operator":{"type":"string"},"value":{"type":"string"}}}}}}},"description":"Input parameters for the widget query."},"display":{"type":"object","properties":{"chartcolor":{},"cols":{"type":"number"},"rows":{"type":"number"},"x":{"type":"number"},"y":{"type":"number"},"backgroundColor":{"type":"string"},"detailedChart":{"type":"boolean"},"chartColor":{},"whiteText":{"type":"boolean"},"decimalPlaces":{},"transparentBackground":{"type":"boolean"},"scaleValueOnResize":{"type":"boolean"},"hideLastValue":{},"frostedBackground":{"type":"boolean"},"centerTitle":{},"hideTitle":{},"hideDescription":{},"boolDisplayType":{"type":"string"},"hideChartLabels":{},"hideChartLegend":{"type":"boolean"},"barChartVerticalLayout":{},"noGrouping":{},"limitToTopXResults":{},"sortAsc":{},"hideAssetIcons":{},"processControlUpper":{},"processControlLower":{},"processControlAverage":{},"showProcessControl":{},"hideChartBullets":{},"groupChartBullets":{},"mapTheme":{},"mapCluster":{"type":"boolean"},"mapGeofences":{},"mapTollRoads":{},"mapHeatMap":{},"mapKmls":{}},"description":"Display configuration for the widget."}}},"description":"Widgets that make up the dashboard."},"createdBy":{"type":"string","description":"User or system that created the record."},"createdDate":{"type":"string","description":"UTC timestamp when the record was created."},"updatedBy":{"type":"string","description":"User or system that last modified the record."},"ownedBy":{"type":"string","description":"Owner of the record."},"updatedDate":{"type":"string","description":"UTC timestamp when the record was last modified."},"id":{"type":"string","description":"Unique identifier of this record."},"type":{"type":"string","description":"Type / record-type discriminator."},"correlationId":{"type":"string","description":"Client-supplied correlation id, echoed back for request tracing."},"_ts":{"type":"number"}}},"example":{"name":"Environmental Dashboard","isGlobal":false,"description":"Monitors key environmental metrics for selected zones.","enabled":true,"scope":{"scopeType":2,"objectRefs":["zone-101","zone-102"]},"backgroundImageUrl":"https://example.com/bg/env.jpg","logoImageUrl":"https://example.com/logo/env-logo.svg","widgets":[{"id":"widget-a12b3","name":"CO2 Levels","description":"Tracks carbon dioxide levels in monitored zones.","type":"chart","dataType":"timeseries","inputParameters":{"scope":{"scopeType":1,"objectRefs":["sensor-55","sensor-87"]},"ids":["data-id-001","data-id-002"],"signals":["co2_reading","temp_reading"],"options":["average","max"],"condition":{"fact":"co2_reading","operator":">","value":"800","all":[{"fact":"temp_reading","operator":"<","value":"30"}]}},"display":{"chartcolor":"#228B22","cols":6,"rows":2,"x":1,"y":1,"backgroundColor":"#ffffff","detailedChart":true,"chartColor":"#228B22","whiteText":false,"decimalPlaces":"1","transparentBackground":false,"hideLastValue":false,"frostedBackground":false,"centerTitle":true,"hideTitle":false,"hideDescription":false,"boolDisplayType":"switch","hideChartLabels":false,"barChartVerticalLayout":false,"noGrouping":false,"limitToTopXResults":5,"sortAsc":true,"hideAssetIcons":false,"processControlUpper":1000,"processControlLower":400,"processControlAverage":700,"showProcessControl":true,"hideChartBullets":false,"groupChartBullets":true,"mapTheme":"satellite","mapCluster":true,"mapGeofences":false,"mapTollRoads":false,"mapHeatMap":true,"mapKmls":false}}],"createdBy":"admin_user","createdDate":"2025-06-24T01:23:45.0000000+00:00","updatedBy":"analyst_user","ownedBy":"team-environmental","updatedDate":"2025-06-24T06:42:30.0000000+00:00","id":"dashboard-xyz123","type":"dashboardConfig","correlationId":"corr-5678-env","_ts":1729782945}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.GetDashboardById","errorType":"ArgumentException","statusCode":400,"request":"GET /api/dashboards/in-dash-000339","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid dashboard id format: 'abc123'. Expected format: xx-dash-nnnnnn"}}}},"401":{"description":"Invalid API Key provided or Invalid Bearer token"},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.GetDashboardById","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/dashboards/in-dash-000339","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/data":{"get":{"tags":["Dashboards"],"summary":"Get Dashboard Data","description":"Return the data for a dashboard over a date range.","operationId":"getdashboarddata","parameters":[{"name":"id","in":"path","description":"Dashboard Id","required":true,"schema":{"type":"string","example":"in-dash-000339"}},{"name":"from","in":"query","description":"Start of the data date range.","schema":{"type":"string","format":"date-time"},"example":"2024-07-01T12:00:00.0000000+00:00"},{"name":"to","in":"query","description":"End of the data date range.","schema":{"type":"string","format":"date-time"},"example":"2024-07-10T11:59:59.0000000+00:00"},{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true} Required when the dashboard is configured to enforce a filter (MustUseFilter): the API rejects the request if this header is empty.","schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false.","schema":{"type":"boolean"},"example":"False"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"widgets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of this record."},"result":{"type":"object","properties":{"dataType":{"type":"string","description":"Data type the widget renders."},"inputParametersQuery":{"type":"string"},"dataItems":{"type":"array","items":{"type":"object","properties":{"objectId":{"type":"string"},"data":{"type":"object","properties":{"metadata.assetInfo.customerAssetId":{"type":"string"},"id":{"type":"string","description":"Unique identifier of this record."},"customerAssetId":{"type":"string","description":"Customer-assigned asset id."},"externalBatteryVoltage":{"type":"number"},"metadata.assetInfo.assetName":{"type":"string"},"devicedata.id":{"type":"string"},"lastCommunicatedUtc":{"type":"string"},"metadata.operation.hireStatus":{"type":"string"}}}}}}}},"pending":{"type":"boolean"},"error":{},"dateUtc":{"type":"string"}}},"description":"Widgets that make up the dashboard."}}},"example":{"widgets":[{"id":"widget-001","result":{"dataType":"sensorData","inputParametersQuery":"SELECT * FROM sensors WHERE status='active'","dataItems":[{"objectId":"obj-123","data":{"metadata.assetInfo.customerAssetId":"cust-789","id":"data-001","customerAssetId":"cust-789","externalBatteryVoltage":12.5,"metadata.assetInfo.assetName":"Excavator Model X","devicedata.id":"device-555","lastCommunicatedUtc":"2025-06-24T08:00:00.0000000+00:00","metadata.operation.hireStatus":"rented"}},{"objectId":"obj-456","data":{"id":"data-002","metadata.assetInfo.customerAssetId":"cust-456","customerAssetId":"cust-456","externalBatteryVoltage":13.7,"metadata.assetInfo.assetName":"Bulldozer Model Y","devicedata.id":"device-556","lastCommunicatedUtc":"2025-06-24T08:05:00.0000000+00:00","metadata.operation.hireStatus":"available"}}]},"pending":false,"error":null,"dateUtc":"2025-06-24T08:10:00.0000000+00:00"}]}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.GetDashboardData","errorType":"ArgumentException","statusCode":400,"request":"GET /api/dashboards/in-dash-000339/data","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid dashboard id format: 'abc123'. Expected format: xx-dash-nnnnnn"}}}},"401":{"description":"Invalid API Key provided or Invalid Bearer token"},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.GetDashboardData","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/dashboards/in-dash-000339/data","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/assets":{"get":{"tags":["Dashboards"],"summary":"Get Dashboard Assets","description":"List the assets referenced by a dashboard.","operationId":"getDashboardAssets","parameters":[{"name":"id","in":"path","description":"Dashboard Id","required":true,"schema":{"type":"string","example":"in-dash-000339"}},{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true}","schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false.","schema":{"type":"boolean"},"example":"False"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"customerAssetId":{"type":"string","description":"Customer-assigned asset id."},"assetTypeId":{"type":"number","description":"Asset type identifier."},"assetName":{"type":"string","description":"Display name of the asset."},"id":{"type":"string","description":"Unique identifier of this record."}}}},"example":[{"customerAssetId":"CUST-12345","assetTypeId":101,"assetName":"Excavator","id":"ASSET-001"},{"customerAssetId":"CUST-67890","assetTypeId":202,"assetName":"Bulldozer","id":"ASSET-002"},{"assetTypeId":303,"assetName":"Forklift","id":"ASSET-003"}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.GetDashboardAssets","errorType":"ArgumentException","statusCode":400,"request":"GET /api/dashboards/in-dash-000339/assets","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid dashboard id format: 'abc123'. Expected format: xx-dash-nnnnnn"}}}},"401":{"description":"Invalid API Key provided or Invalid Bearer token"},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.GetDashboardAssets","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/dashboards/in-dash-000339/assets","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/dictionaries":{"get":{"tags":["Dashboards"],"summary":"Get Dashboard Dictionaries","description":"Return the dictionaries (lookup metadata) for a dashboard.","operationId":"getDashboardDictionaries","parameters":[{"name":"id","in":"path","description":"Dashboard Id","required":true,"schema":{"type":"string","example":"in-dash-000339"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"aggfunc-names":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"name":{"type":"string","description":"Display name."},"title":{"type":"string"}}},"description":"Dictionary of aggfunc-names lookup values for the dashboard."}}},"example":{"aggfunc-names":[{"value":"sum","name":"Sum","title":"Total Sum"},{"value":"avg","name":"Average","title":"Mean Value"},{"value":"max","name":"Maximum","title":"Highest Value"}]}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Reports.ReportApi.GetReportDictionaries","errorType":"ArgumentException","statusCode":400,"request":"GET /api/dashboards/in-dash-000339/dictionaries","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid dashboard id format: 'abc123'. Expected format: xx-dash-nnnnnn"}}}},"401":{"description":"Invalid API Key provided or Invalid Bearer token"},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Reports.ReportApi.GetReportDictionaries","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/dashboards/in-dash-000339/dictionaries","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/widgets/{widgetId}":{"get":{"tags":["Widgets"],"summary":"Get Dashboard Widget","description":"Fetch the widgets of a dashboard.","operationId":"getDashboardWidget","parameters":[{"name":"id","in":"path","description":"Dashboard Id","required":true,"schema":{"type":"string","example":"in-dash-000339"}},{"name":"widgetId","in":"path","description":"Perspio Dashboard Widget ID","required":true,"schema":{"type":"string","example":"4ba15bb8-a672-4ca5-a367-1059c86e7f33"}},{"name":"includedisabledassets","in":"header","description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false.","schema":{"type":"boolean"},"example":"False"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of this record."},"name":{"type":"string","description":"Display name."},"description":{"type":"string","description":"Free-text description."},"type":{"type":"string","description":"Type / record-type discriminator."},"dataType":{"type":"string","description":"Data type the widget renders."},"inputParameters":{"type":"object","properties":{"scope":{"type":"object","properties":{"scopeType":{"type":"number"},"objectRefs":{"type":"array","items":{"type":"string"}}},"description":"Visibility scope of the dashboard."},"ids":{},"signals":{"type":"array","items":{"type":"string"}},"options":{},"condition":{"type":"object","properties":{"fact":{"type":"string"},"operator":{"type":"string"},"value":{"type":"string"}}}},"description":"Input parameters for the widget query."},"display":{"type":"object","properties":{"scaleValueOnResize":{},"backgroundColor":{"type":"string"},"detailedChart":{},"hideLastValue":{},"chartColor":{},"whiteText":{"type":"boolean"},"decimalPlaces":{},"transparentBackground":{"type":"boolean"},"frostedBackground":{"type":"boolean"},"centerTitle":{"type":"boolean"},"hideTitle":{},"hideDescription":{},"boolDisplayType":{"type":"string"},"hideChartLabels":{},"hideChartLegend":{"type":"boolean"},"barChartVerticalLayout":{},"noGrouping":{},"limitToTopXResults":{},"sortAsc":{},"hideAssetIcons":{},"processControlUpper":{},"processControlLower":{},"processControlAverage":{},"showProcessControl":{},"hideChartBullets":{},"groupChartBullets":{},"cols":{"type":"number"},"rows":{"type":"number"},"x":{"type":"number"},"y":{"type":"number"},"mapTheme":{},"mapCluster":{"type":"boolean"},"mapGeofences":{},"mapTollRoads":{},"mapHeatMap":{},"mapKmls":{}},"description":"Display configuration for the widget."}}}},"example":[{"id":"widget-001","name":"Temperature Monitor","description":"Displays temperature data from sensors","type":"chart","dataType":"float","inputParameters":{"scope":{"scopeType":1,"objectRefs":["obj-1001","obj-1002"]},"ids":["id-123","id-456"],"signals":["temp","humidity"],"options":{"refreshInterval":"5m","units":"Celsius"},"condition":{"fact":"temperature","operator":">","value":"25"}},"display":{"scaleValueOnResize":true,"backgroundColor":"#ffffff","detailedChart":false,"hideLastValue":false,"chartColor":"#ff0000","decimalPlaces":"2","transparentBackground":false,"hideTitle":false,"hideDescription":false,"boolDisplayType":"boolean","hideChartLabels":false,"barChartVerticalLayout":true,"noGrouping":false,"limitToTopXResults":10,"sortAsc":true,"hideAssetIcons":false,"processControlUpper":100,"processControlLower":0,"processControlAverage":50,"showProcessControl":true,"hideChartBullets":false,"groupChartBullets":true,"cols":4,"rows":3,"x":0,"y":0,"mapTheme":"light","mapCluster":true,"mapGeofences":false,"mapTollRoads":false,"mapHeatMap":true,"mapKmls":false}},{"id":"widget-002","name":"Pressure Gauge","description":"Shows pressure levels across sites","type":"gauge","dataType":"integer","inputParameters":{"scope":{"scopeType":2,"objectRefs":["obj-2001"]},"ids":["id-789"],"signals":["pressure"],"options":{"threshold":"75"},"condition":{"fact":"pressure","operator":"<=","value":"75"}},"display":{"scaleValueOnResize":false,"backgroundColor":"#eeeeee","detailedChart":true,"hideLastValue":true,"chartColor":"#0000ff","decimalPlaces":"0","transparentBackground":true,"hideTitle":true,"hideDescription":true,"boolDisplayType":"chart","hideChartLabels":true,"barChartVerticalLayout":false,"noGrouping":true,"limitToTopXResults":5,"sortAsc":false,"hideAssetIcons":true,"processControlUpper":120,"processControlLower":20,"processControlAverage":70,"showProcessControl":false,"hideChartBullets":true,"groupChartBullets":false,"cols":3,"rows":2,"x":4,"y":1,"mapTheme":"dark","mapCluster":false,"mapGeofences":true,"mapTollRoads":true,"mapHeatMap":false,"mapKmls":true}}]}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.GetDashboardWidget","errorType":"ArgumentException","statusCode":400,"request":"GET /api/dashboards/in-dash-000339/widgets/in-dash-000339","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid dashboard id format: 'abc123'. Expected format: xx-dash-nnnnnn"}}}},"401":{"description":"Invalid API Key provided or Invalid Bearer token"},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.GetDashboardWidget","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/dashboards/in-dash-000339/widgets/in-dash-000339","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/widgets/{widgetId}/data":{"get":{"tags":["Widgets"],"summary":"Get Dashboard Widget Data","description":"Return the data for a single dashboard widget over a date range.","operationId":"getDashboardWidgetData","parameters":[{"name":"id","in":"path","description":"Dashboard Id","required":true,"schema":{"type":"string","example":"in-dash-000339"}},{"name":"widgetId","in":"path","description":"Perspio Dashboard Widget ID","required":true,"schema":{"type":"string","example":"4ba15bb8-a672-4ca5-a367-1059c86e7f33"}},{"name":"from","in":"query","description":"Start of the data date range.","schema":{"type":"string","format":"date-time"},"example":"2024-07-01T12:00:00.0000000+00:00"},{"name":"to","in":"query","description":"End of the data date range.","schema":{"type":"string","format":"date-time"},"example":"2024-07-10T11:59:59.0000000+00:00"},{"name":"x-perspio-filter","in":"header","description":"Global data filter (JSON-serialised) scoping results to matching assets. Optional keys, each an array of strings: locationHierarchyL1..L3, productHierarchyL1..L3, operationalHierarchyL1..L3, groupIds; plus boolean 'enabled'. Omit for no additional filtering (security-group scoping always applies). Example: {\"locationHierarchyL1\":[\"NSW\"],\"enabled\":true} Required when the dashboard is configured to enforce a filter (MustUseFilter): the API rejects the request if this header is empty.","schema":{"type":"string"}},{"name":"includedisabledassets","in":"header","description":"When true, disabled assets are included in the tenant scope applied to this request. Defaults to false.","schema":{"type":"boolean"},"example":"False"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of this record."},"name":{"type":"string","description":"Display name."},"description":{"type":"string","description":"Free-text description."},"type":{"type":"string","description":"Type / record-type discriminator."},"dataType":{"type":"string","description":"Data type the widget renders."},"inputParameters":{"type":"object","properties":{"scope":{"type":"object","properties":{"scopeType":{"type":"number"},"objectRefs":{"type":"array","items":{}}},"description":"Visibility scope of the dashboard."},"ids":{},"signals":{},"options":{}},"description":"Input parameters for the widget query."},"display":{"type":"object","properties":{"scaleValueOnResize":{},"backgroundColor":{"type":"string"},"detailedChart":{},"hideLastValue":{},"chartColor":{},"whiteText":{},"decimalPlaces":{},"transparentBackground":{"type":"boolean"},"frostedBackground":{},"centerTitle":{"type":"boolean"},"hideTitle":{},"hideDescription":{},"boolDisplayType":{"type":"string"},"hideChartLabels":{},"hideChartLegend":{},"barChartVerticalLayout":{},"noGrouping":{},"limitToTopXResults":{},"sortAsc":{},"hideAssetIcons":{},"processControlUpper":{},"processControlLower":{},"processControlAverage":{},"showProcessControl":{},"hideChartBullets":{},"groupChartBullets":{},"cols":{"type":"number"},"rows":{"type":"number"},"x":{"type":"number"},"y":{"type":"number"}},"description":"Display configuration for the widget."}}},"example":{"id":"widget-xyz-001","name":"Energy Usage Widget","description":"Shows real-time energy consumption data","type":"gauge","dataType":"float","inputParameters":{"scope":{"scopeType":3,"objectRefs":["site-123","device-456"]},"ids":["id-789","id-1011"],"signals":["energyUsage","powerFactor"],"options":{"refreshInterval":"10m","units":"kWh"}},"display":{"scaleValueOnResize":true,"backgroundColor":"#fafafa","detailedChart":false,"hideLastValue":false,"chartColor":"#00aaff","whiteText":false,"decimalPlaces":"2","transparentBackground":false,"frostedBackground":true,"centerTitle":true,"hideTitle":false,"hideDescription":false,"boolDisplayType":"boolean","hideChartLabels":false,"hideChartLegend":true,"barChartVerticalLayout":true,"noGrouping":false,"limitToTopXResults":5,"sortAsc":true,"hideAssetIcons":false,"processControlUpper":100,"processControlLower":10,"processControlAverage":55,"showProcessControl":true,"hideChartBullets":false,"groupChartBullets":true,"cols":3,"rows":2,"x":1,"y":0}}}}},"400":{"description":"Invalid Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.GetDashboardWidgetData","errorType":"ArgumentException","statusCode":400,"request":"GET /api/dashboards/in-dash-000339/widgets/in-dash-000339/data","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Invalid dashboard id format: 'abc123'. Expected format: xx-dash-nnnnnn"}}}},"401":{"description":"Invalid API Key provided or Invalid Bearer token"},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Dashboards.DashboardApi.GetDashboardWidgetData","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/dashboards/in-dash-000339/widgets/in-dash-000339/data","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}},"/{id}/images":{"get":{"tags":["Images"],"summary":"Get Dashboard Images","description":"List the images of a dashboard.","operationId":"getDashboardImages","parameters":[{"name":"id","in":"path","description":"Dashboard Id","required":true,"schema":{"type":"string","example":"in-dash-000339"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDashboardImages-ResponseObject"},"example":[{"createdDate":"2022-12-20T11:50:51.0000000+00:00","name":"uh-000664/im-2154d2a5-cdd3-4c7c-8d46-e33d54b19563","contentType":"image/png","description":"Updated Description","imageType":"Perspio UI","fileCreator":"bhanu"},{"createdDate":"2022-12-14T12:51:17.0000000+00:00","name":"uh-000664/im-97838a3b-5e85-4141-9848-be61c121468c","contentType":"image/jpeg","Description":"Error","imageType":"Background","fileCreator":"bhanu"},{"createdDate":"2022-12-14T12:47:43.0000000+00:00","name":"uh-000664/im-98c6f1f2-a151-4cdf-b96d-4cf2821d4da3","contentType":"image/jpeg","Description":"Error","imageType":"Background","fileCreator":"bhanu"},{"createdDate":"2022-12-12T04:29:32.0000000+00:00","name":"uh-000664/im-b88b5114-e60b-475a-8aa0-f6b376fdac62","contentType":"image/jpeg","Description":"Error","imageType":"Background","fileCreator":"bhanu"}]}}},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Bearer token"},"404":{"description":"Resource Not Found"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.GetImages","errorType":"NullReferenceException","statusCode":500,"request":"GET /api/in-dash-000339/images","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"post":{"tags":["Images"],"summary":"Upload Dashboard Image","description":"Upload an image for a dashboard.","operationId":"uploadDashboardImage","parameters":[{"name":"id","in":"path","description":"Dashboard Id","required":true,"schema":{"type":"string","example":"in-dash-000339"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"properties":{"file":{"type":"string","description":"The image file to upload","format":"binary"},"description":{"type":"string","description":"Optional description for the image"},"createdBy":{"type":"string","description":"Uploader identity or email"},"tags":{"type":"string","description":"Comma-separated list of tags"}}}}}},"responses":{"201":{"description":"The dashboard image was uploaded."},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Bearer token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.UploadImage","errorType":"NullReferenceException","statusCode":500,"request":"POST /api/in-dash-000339/images","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}},"delete":{"tags":["Images"],"summary":"Delete Dashboard Images","description":"Delete assocaited images from a dashboard.","operationId":"deleteDashboardImages","parameters":[{"name":"id","in":"path","description":"Dashboard Id","required":true,"schema":{"type":"string","example":"in-dash-000339"}}],"responses":{"204":{"description":"The dashboard images were deleted."},"400":{"description":"Invalid Request"},"401":{"description":"Invalid API Key provided or Invalid Bearer token"},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerspioError"},"example":{"functionName":"Perspio.API.Documents.DocumentServicesApi.DeleteImages","errorType":"NullReferenceException","statusCode":500,"request":"DELETE /api/in-dash-000339/images","tenantId":"in-93b1a4c6-1234-4c1c-9d2a-1f2e3d4c5b6a","message":"Internal Server Error: Object reference not set to an instance of an object."}}}}}}}},"components":{"schemas":{"PerspioError":{"type":"object","properties":{"functionName":{"type":"string","description":"Name of the backend function that raised the error."},"errorType":{"type":"string","description":"Exception/error type name."},"statusCode":{"type":"integer","description":"HTTP status code of the error.","format":"int32"},"request":{"type":"string","description":"Method and URL of the failing request."},"tenantId":{"type":"string","description":"Tenant the request was executed for."},"message":{"type":"string","description":"Human-readable error message."}},"description":"Standard Perspio backend error body (ErrorResultObject emitted by the error-handling middleware)."},"CreateDashboard-RequestObject":{"type":"object","properties":{"name":{"type":"string","description":"Display name."},"description":{"type":"string","description":"Free-text description."},"enabled":{"type":"boolean","description":"Whether the dashboard is enabled."},"scope":{"type":"object","properties":{"scopeType":{"type":"integer"},"objectRefs":{"type":"array"}},"description":"Visibility scope of the dashboard."},"backgroundImageUrl":{"description":"URL of the dashboard background image."},"logoImageUrl":{"type":"string","description":"URL of the dashboard logo image."},"widgets":{"type":"array","items":{"required":["id","name","description","type","objectRef","objectRefs","field","aggFunc","resultAggFunc","customiser","conditions","dataFilter","display"],"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of this record."},"name":{"type":"string","description":"Display name."},"description":{"description":"Free-text description."},"type":{"type":"string","description":"Type / record-type discriminator."},"objectRef":{"type":"string"},"objectRefs":{"type":"array","items":{"type":"string"}},"field":{"type":"string"},"aggFunc":{},"resultAggFunc":{},"customiser":{},"conditions":{},"dataFilter":{"type":"object","properties":{"hasSummary":{"type":"boolean"},"showValidOnly":{"type":"boolean"},"showConditions":{}}},"display":{"type":"object","properties":{"alias":{"type":"string"},"unit":{"type":"string"},"min":{"type":"integer"},"max":{"type":"integer"},"y":{"type":"integer"},"x":{"type":"integer"},"showHeader":{"type":"boolean"},"cols":{"type":"integer"},"rows":{"type":"integer"},"decimals":{"type":"integer"},"backgroundColor":{},"headerType":{"type":"string"},"tinyCard":{"type":"boolean"},"header":{"type":"string"},"type":{"type":"string","description":"Type / record-type discriminator."},"templates":{"type":"array","items":{"type":"string"}},"hasChart":{"type":"boolean"}},"description":"Display configuration for the widget."}}},"description":"Widgets that make up the dashboard."}}},"UpdateDashboard-RequestObject":{"type":"object","properties":{"name":{"type":"string","description":"Display name."},"description":{"type":"string","description":"Free-text description."},"enabled":{"type":"boolean","description":"Whether the dashboard is enabled."},"scope":{"type":"object","properties":{"scopeType":{"type":"integer"},"objectRefs":{"type":"array"}},"description":"Visibility scope of the dashboard."},"backgroundImageUrl":{"description":"URL of the dashboard background image."},"logoImageUrl":{"type":"string","description":"URL of the dashboard logo image."},"widgets":{"type":"array","items":{"required":["id","name","description","type","objectRef","objectRefs","field","aggFunc","resultAggFunc","customiser","conditions","dataFilter","display"],"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of this record."},"name":{"type":"string","description":"Display name."},"description":{"description":"Free-text description."},"type":{"type":"string","description":"Type / record-type discriminator."},"objectRef":{"type":"string"},"objectRefs":{"type":"array","items":{"type":"string"}},"field":{"type":"string"},"aggFunc":{},"resultAggFunc":{},"customiser":{},"conditions":{},"dataFilter":{"type":"object","properties":{"hasSummary":{"type":"boolean"},"showValidOnly":{"type":"boolean"},"showConditions":{}}},"display":{"type":"object","properties":{"alias":{"type":"string"},"unit":{"type":"string"},"min":{"type":"integer"},"max":{"type":"integer"},"y":{"type":"integer"},"x":{"type":"integer"},"showHeader":{"type":"boolean"},"cols":{"type":"integer"},"rows":{"type":"integer"},"decimals":{"type":"integer"},"backgroundColor":{},"headerType":{"type":"string"},"tinyCard":{"type":"boolean"},"header":{"type":"string"},"type":{"type":"string","description":"Type / record-type discriminator."},"templates":{"type":"array","items":{"type":"string"}},"hasChart":{"type":"boolean"}},"description":"Display configuration for the widget."}}},"description":"Widgets that make up the dashboard."}}},"GetDashboardImages-ResponseObject":{"type":"array","items":{"type":"object","properties":{"createdDate":{"type":"string","description":"UTC timestamp when the record was created."},"name":{"type":"string","description":"Display name."},"contentType":{"type":"string"},"description":{"type":"string","description":"Free-text description."},"imageType":{"type":"string"},"fileCreator":{"type":"string"},"Description":{"type":"string","description":"Free-text description."}}}},"UpdateImageMetadata-RequestObject":{"type":"object","properties":{"name":{"type":"string","description":"Display name."},"description":{"type":"string","description":"Free-text description."},"contentType":{"type":"string"},"createdDate":{"type":"string","description":"UTC timestamp when the record was created."}}},"UpdateImageMetadata-ResponseObject":{"type":"object","properties":{"createdDate":{"type":"string","description":"UTC timestamp when the record was created."},"name":{"type":"string","description":"Display name."},"contentType":{"type":"string"},"description":{"type":"string","description":"Free-text description."},"imageType":{"type":"string"},"fileCreator":{"type":"string"}}}},"securitySchemes":{"oauth2":{"type":"oauth2","description":"Client credentials from your Perspio API application. See Get Access Token.","flows":{"clientCredentials":{"tokenUrl":"/auth/v3/token","scopes":{}}}},"subscriptionKey":{"type":"apiKey","name":"Ocp-Apim-Subscription-Key","in":"header","description":"Your tenant's subscription key, from your API application."},"tenantId":{"type":"apiKey","name":"tid","in":"header","description":"Your tenant ID (tid), from your API application."}}},"security":[{"oauth2":[],"subscriptionKey":[],"tenantId":[]}],"tags":[{"name":"Widgets","description":"Dashboard widgets and widget data."},{"name":"Images","description":"Dashboard images."},{"name":"Dashboards","description":"Dashboard CRUD, data and assets."}],"x-readme":{"oauth-options":{"useInsecureClientAuthentication":true}}}