Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi": "3.0.1",
"info": {
"title": "Fenergo Nebula Reports Command",
"description": "**Reports Command API**:<br/><br/><br/> Reports Command API provides endpoints in order to manage and configure all related models and their versions.<br/><br/><br/> **Reports Command API provides**:<br/><ul><li> Query Definitions Management</li><li> Report Models Management</li></ul>",
"version": "1.0"
},
"servers": [
{
"url": "/reportscommand"
}
],
"paths": {
"/api/Debug/schedule/trigger-cron": {
"post": {
"tags": [
"Debug",
"v1"
],
"summary": "Manually trigger the cron scan (local dev only)",
"operationId": "TriggerScheduleCron",
"parameters": [
{
"name": "X-TENANT-ID",
"in": "header",
"description": "The UiD of the tenant representing organization",
"required": true,
"schema": {
"type": "string"
},
"example": "b11f8be3-f29b-4959-8964-956d4af7c468"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
}
}
}
},
"401": {
"description": "User is not authorized to perform this request",
"content": {
"application/json": {
"example": {
"message": "Unauthorized"
}
}
}
},
"403": {
"description": "Access to resource is forbidden.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": { },
"messages": [
{
"message": "Access denied. Following permissions are required: Permission1, Permission2",
"type": "Forbidden",
"errorCode": "Error Code"
}
]
}
}
}
},
"500": {
"description": "Internal server exception. Please, contact your provider.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": null,
"messages": [
{
"message": "Internal server exception. Please, contact your provider.",
"type": "Error",
"errorCode": "INTERNAL_SERVER_ERROR"
}
]
}
}
}
},
"410": {
"description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StringServiceResponse"
},
"example": {
"data": null,
"messages": [
{
"message": "This endpoint is obsolete and was terminated on yyyy-MM-dd",
"type": "Error",
"errorCode": "OBSOLETE_ENDPOINT"
}
]
}
}
}
}
}
}
},
"/api/Debug/last-dispatch/{scheduleId}": {
"get": {
"tags": [
"Debug",
"v1"
],
"summary": "Returns the most-recently captured dispatch artifact for a schedule (local dev only).",
"description": "Returns 404 in all production environments.",
"operationId": "GetLastDispatchArtifact",
"parameters": [
{
"name": "scheduleId",
"in": "path",
"description": "The schedule identifier.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "tenant",
"in": "query",
"description": "The tenant identifier (required to look up the schedule).",
"schema": {
"type": "string"
}
},
{
"name": "X-TENANT-ID",
"in": "header",
"description": "The UiD of the tenant representing organization",
"required": true,
"schema": {
"type": "string"
},
"example": "b11f8be3-f29b-4959-8964-956d4af7c468"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
}
}
}
},
"404": {
"description": "Resource not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": { },
"messages": [
{
"message": "Not Found",
"type": "Error",
"errorCode": "Error Code"
}
]
}
}
}
},
"401": {
"description": "User is not authorized to perform this request",
"content": {
"application/json": {
"example": {
"message": "Unauthorized"
}
}
}
},
"403": {
"description": "Access to resource is forbidden.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": { },
"messages": [
{
"message": "Access denied. Following permissions are required: Permission1, Permission2",
"type": "Forbidden",
"errorCode": "Error Code"
}
]
}
}
}
},
"500": {
"description": "Internal server exception. Please, contact your provider.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": null,
"messages": [
{
"message": "Internal server exception. Please, contact your provider.",
"type": "Error",
"errorCode": "INTERNAL_SERVER_ERROR"
}
]
}
}
}
},
"410": {
"description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StringServiceResponse"
},
"example": {
"data": null,
"messages": [
{
"message": "This endpoint is obsolete and was terminated on yyyy-MM-dd",
"type": "Error",
"errorCode": "OBSOLETE_ENDPOINT"
}
]
}
}
}
}
}
}
},
"/api/Debug/last-email/{scheduleId}": {
"get": {
"tags": [
"Debug",
"v1"
],
"summary": "Returns the most-recently captured email payload for a schedule (local dev only).",
"description": "Returns 404 in all production environments.",
"operationId": "GetLastDispatchEmail",
"parameters": [
{
"name": "scheduleId",
"in": "path",
"description": "The schedule identifier.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "tenant",
"in": "query",
"description": "The tenant identifier (required to look up the schedule).",
"schema": {
"type": "string"
}
},
{
"name": "X-TENANT-ID",
"in": "header",
"description": "The UiD of the tenant representing organization",
"required": true,
"schema": {
"type": "string"
},
"example": "b11f8be3-f29b-4959-8964-956d4af7c468"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
}
}
}
},
"404": {
"description": "Resource not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": { },
"messages": [
{
"message": "Not Found",
"type": "Error",
"errorCode": "Error Code"
}
]
}
}
}
},
"401": {
"description": "User is not authorized to perform this request",
"content": {
"application/json": {
"example": {
"message": "Unauthorized"
}
}
}
},
"403": {
"description": "Access to resource is forbidden.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": { },
"messages": [
{
"message": "Access denied. Following permissions are required: Permission1, Permission2",
"type": "Forbidden",
"errorCode": "Error Code"
}
]
}
}
}
},
"500": {
"description": "Internal server exception. Please, contact your provider.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": null,
"messages": [
{
"message": "Internal server exception. Please, contact your provider.",
"type": "Error",
"errorCode": "INTERNAL_SERVER_ERROR"
}
]
}
}
}
},
"410": {
"description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StringServiceResponse"
},
"example": {
"data": null,
"messages": [
{
"message": "This endpoint is obsolete and was terminated on yyyy-MM-dd",
"type": "Error",
"errorCode": "OBSOLETE_ENDPOINT"
}
]
}
}
}
}
}
}
},
"/api/Query": {
"post": {
"tags": [
"Query",
"v1"
],
"summary": "Create a new Query definition",
"description": "<ul>\n <li>Creates a new Query definition</li>\n <li>Returns the unique id of the entry</li>\n</ul><br /><br /><b>Required permissions:</b><br />Following permissions are required: ReportingEdit",
"operationId": "CreateSqlQueryDefinition",
"parameters": [
{
"name": "X-TENANT-ID",
"in": "header",
"description": "The UiD of the tenant representing organization",
"required": true,
"schema": {
"type": "string"
},
"example": "b11f8be3-f29b-4959-8964-956d4af7c468"
}
],
"requestBody": {
"description": "Create query request",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/CreateSqlQueryDefinitionDtoServiceRequest"
}
]
}
}
}
},
"responses": {
"201": {
"description": "Created. Query definition created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreatedSqlQueryDefinitionDtoServiceResponse"
}
}
}
},
"400": {
"description": "Bad request. The request has missing/invalid values",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationErrorModelListServiceResponse"
}
}
}
},
"500": {
"description": "Internal Server Error"
},
"401": {
"description": "User is not authorized to perform this request",
"content": {
"application/json": {
"example": {
"message": "Unauthorized"
}
}
}
},
"403": {
"description": "Access to resource is forbidden.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": { },
"messages": [
{
"message": "Access denied. Following permissions are required: Permission1, Permission2",
"type": "Forbidden",
"errorCode": "Error Code"
}
]
}
}
}
},
"410": {
"description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StringServiceResponse"
},
"example": {
"data": null,
"messages": [
{
"message": "This endpoint is obsolete and was terminated on yyyy-MM-dd",
"type": "Error",
"errorCode": "OBSOLETE_ENDPOINT"
}
]
}
}
}
}
}
},
"put": {
"tags": [
"Query",
"v1"
],
"summary": "Update a Query definition",
"description": "<ul>\n <li>Updates a Query definition</li>\n</ul><br /><br /><b>Required permissions:</b><br />Following permissions are required: ReportingEdit",
"operationId": "UpdateSqlQueryDefinition",
"parameters": [
{
"name": "X-TENANT-ID",
"in": "header",
"description": "The UiD of the tenant representing organization",
"required": true,
"schema": {
"type": "string"
},
"example": "b11f8be3-f29b-4959-8964-956d4af7c468"
}
],
"requestBody": {
"description": "Create query request",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UpdateSqlQueryDefinitionDtoServiceRequest"
}
]
}
}
}
},
"responses": {
"204": {
"description": "NoContent. Query definition updated"
},
"400": {
"description": "Bad request. The request has missing/invalid values",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationErrorModelListServiceResponse"
}
}
}
},
"404": {
"description": "Resource not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": { },
"messages": [
{
"message": "NotFound. The resource was not found",
"type": "Error",
"errorCode": "Error Code"
}
]
}
}
}
},
"500": {
"description": "Internal Server Error"
},
"401": {
"description": "User is not authorized to perform this request",
"content": {
"application/json": {
"example": {
"message": "Unauthorized"
}
}
}
},
"403": {
"description": "Access to resource is forbidden.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": { },
"messages": [
{
"message": "Access denied. Following permissions are required: Permission1, Permission2",
"type": "Forbidden",
"errorCode": "Error Code"
}
]
}
}
}
},
"410": {
"description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StringServiceResponse"
},
"example": {
"data": null,
"messages": [
{
"message": "This endpoint is obsolete and was terminated on yyyy-MM-dd",
"type": "Error",
"errorCode": "OBSOLETE_ENDPOINT"
}
]
}
}
}
}
}
}
},
"/api/Query/{Id}": {
"delete": {
"tags": [
"Query",
"v1"
],
"summary": "Delete a Query definition",
"description": "<ul>\n <li>Deletes a Query definition</li>\n</ul><br /><br /><b>Required permissions:</b><br />Following permissions are required: ReportingDelete",
"operationId": "DeleteSqlQueryDefinition",
"parameters": [
{
"name": "Id",
"in": "path",
"description": "The Id of the existing Query definition model to delete",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "X-TENANT-ID",
"in": "header",
"description": "The UiD of the tenant representing organization",
"required": true,
"schema": {
"type": "string"
},
"example": "b11f8be3-f29b-4959-8964-956d4af7c468"
}
],
"responses": {
"204": {
"description": "NoContent. Query definition deleted"
},
"400": {
"description": "Bad request. The request has missing/invalid values",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationErrorModelListServiceResponse"
}
}
}
},
"404": {
"description": "Resource not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": { },
"messages": [
{
"message": "NotFound. The resource was not found",
"type": "Error",
"errorCode": "Error Code"
}
]
}
}
}
},
"500": {
"description": "Internal Server Error"
},
"401": {
"description": "User is not authorized to perform this request",
"content": {
"application/json": {
"example": {
"message": "Unauthorized"
}
}
}
},
"403": {
"description": "Access to resource is forbidden.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": { },
"messages": [
{
"message": "Access denied. Following permissions are required: Permission1, Permission2",
"type": "Forbidden",
"errorCode": "Error Code"
}
]
}
}
}
},
"410": {
"description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StringServiceResponse"
},
"example": {
"data": null,
"messages": [
{
"message": "This endpoint is obsolete and was terminated on yyyy-MM-dd",
"type": "Error",
"errorCode": "OBSOLETE_ENDPOINT"
}
]
}
}
}
}
}
}
},
"/api/Report": {
"post": {
"tags": [
"Report",
"v1"
],
"summary": "Create report",
"description": "<ul>\n <li>Creates and saves a new report.</li>\n <li>Returns the id of the created report.</li>\n</ul><br /><br /><b>Required permissions:</b><br />Following permissions are required: ReportingExecute",
"operationId": "CreateReport",
"parameters": [
{
"name": "X-TENANT-ID",
"in": "header",
"description": "The UiD of the tenant representing organization",
"required": true,
"schema": {
"type": "string"
},
"example": "b11f8be3-f29b-4959-8964-956d4af7c468"
}
],
"requestBody": {
"description": "Create report request",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/CreateReportV1DtoServiceRequest"
}
]
}
}
}
},
"responses": {
"202": {
"description": "Success. Report created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GuidServiceResponse"
}
}
}
},
"400": {
"description": "Bad request. The request has missing/invalid values",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationErrorModelListServiceResponse"
}
}
}
},
"401": {
"description": "User is not authorized to perform this request",
"content": {
"application/json": {
"example": {
"message": "Unauthorized"
}
}
}
},
"403": {
"description": "Access to resource is forbidden.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": { },
"messages": [
{
"message": "Access denied. Following permissions are required: Permission1, Permission2",
"type": "Forbidden",
"errorCode": "Error Code"
}
]
}
}
}
},
"500": {
"description": "Internal server exception. Please, contact your provider.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": null,
"messages": [
{
"message": "Internal server exception. Please, contact your provider.",
"type": "Error",
"errorCode": "INTERNAL_SERVER_ERROR"
}
]
}
}
}
},
"410": {
"description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StringServiceResponse"
},
"example": {
"data": null,
"messages": [
{
"message": "This endpoint is obsolete and was terminated on yyyy-MM-dd",
"type": "Error",
"errorCode": "OBSOLETE_ENDPOINT"
}
]
}
}
}
}
}
}
},
"/api/Report/Preview": {
"post": {
"tags": [
"Report",
"v1"
],
"summary": "Preview report",
"description": "<ul>\n <li>Executes a report with limit 5.</li>\n <li>Returns the first 5 rows of a report for preview.</li>\n</ul><br /><br /><b>Required permissions:</b><br />At least one of the following permissions is required: ReportingEdit, ReportingExecute",
"operationId": "Preview",
"parameters": [
{
"name": "X-TENANT-ID",
"in": "header",
"description": "The UiD of the tenant representing organization",
"required": true,
"schema": {
"type": "string"
},
"example": "b11f8be3-f29b-4959-8964-956d4af7c468"
}
],
"requestBody": {
"description": "Create report request",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/PreviewReportDtoServiceRequest"
}
]
}
}
}
},
"responses": {
"202": {
"description": "Success. Report created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StringServiceResponse"
}
}
}
},
"400": {
"description": "Bad request. The request has missing/invalid values",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationErrorModelListServiceResponse"
}
}
}
},
"401": {
"description": "User is not authorized to perform this request",
"content": {
"application/json": {
"example": {
"message": "Unauthorized"
}
}
}
},
"403": {
"description": "Access to resource is forbidden.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": { },
"messages": [
{
"message": "Access denied. Following permissions are required: Permission1, Permission2",
"type": "Forbidden",
"errorCode": "Error Code"
}
]
}
}
}
},
"500": {
"description": "Internal server exception. Please, contact your provider.",
"content": {
# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fenergo/refs/heads/main/openapi/fenergo-reportscommand-v1-0-openapi.json