Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi": "3.0.4",
"info": {
"title": "Fenergo Nebula Configuration Exchange Command",
"description": "**Configuration Exchange Command API provides**:<br/><ul><li> Configuration Exchange Environment Models Management </li><li> Import Session Models Management </li></ul>",
"version": "1.0"
},
"servers": [
{
"url": "/configexchangecommand"
}
],
"paths": {
"/api/configuration-exchange": {
"post": {
"tags": [
"ConfigEnvironment"
],
"summary": "Create new ConfigurationEnvironment",
"description": "\nThis method will create a new ConfigurationEnvironment.\n The ConfigurationEnvironment will initialize with the data provided in the DTO.<br /><br /><b>Required permissions:</b><br />Following permissions are required: ConfigurationExchangeEdit",
"operationId": "CreateConfigurationEnvironment",
"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": "ServiceRequest with the Fenergo.Nebula.ConfigExchange.Command.Application.Dto.ConfigEnvironmentDto to create",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConfigEnvironmentDtoServiceRequest"
}
}
}
},
"responses": {
"202": {
"description": "Success. ConfigurationEnvironment created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConfigEnvironmentDtoServiceResponse"
}
}
}
},
"400": {
"description": "Bad request. The request has missing/invalid values",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServiceResponse"
}
}
}
},
"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/configuration-exchange/{id}": {
"put": {
"tags": [
"ConfigEnvironment"
],
"summary": "Update existing ConfigurationEnvironment",
"description": "\nThis method will update an existing ConfigurationEnvironment.\n The ConfigurationEnvironment will be updated with the data provided in the DTO.<br /><br /><b>Required permissions:</b><br />Following permissions are required: ConfigurationExchangeEdit",
"operationId": "UpdateConfigurationEnvironment",
"parameters": [
{
"name": "id",
"in": "path",
"description": "The Id of the existing ConfigurationEnvironment to update",
"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"
}
],
"requestBody": {
"description": "ServiceRequest with the Fenergo.Nebula.ConfigExchange.Command.Application.Dto.ConfigEnvironmentDto to update",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConfigEnvironmentDtoServiceRequest"
}
}
}
},
"responses": {
"202": {
"description": "Success. ConfigurationEnvironment updated"
},
"400": {
"description": "Not Found. ConfigurationEnvironment with given ID does not exist",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServiceResponse"
}
}
}
},
"404": {
"description": "Resource not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": { },
"messages": [
{
"message": "Not Found",
"type": "Error",
"errorCode": "Error Code"
}
]
}
}
}
},
"500": {
"description": "Internal Server Error. An unhandled exception occurred"
},
"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"
}
]
}
}
}
}
}
},
"delete": {
"tags": [
"ConfigEnvironment"
],
"summary": "Delete existing ConfigurationEnvironment",
"description": "\nThis method will delete an existing ConfigurationEnvironment.\n The ConfigurationEnvironment will be updated with the data provided in the DTO.<br /><br /><b>Required permissions:</b><br />Following permissions are required: ConfigurationExchangeEdit",
"operationId": "DeleteConfigurationEnvironment",
"parameters": [
{
"name": "id",
"in": "path",
"description": "The Id of the existing ConfigurationEnvironment 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": {
"202": {
"description": "Success. ConfigurationEnvironment deleted"
},
"400": {
"description": "Not Found. ConfigurationEnvironment with given ID does not exist",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServiceResponse"
}
}
}
},
"404": {
"description": "Resource not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ObjectServiceResponse"
},
"example": {
"data": { },
"messages": [
{
"message": "Not Found",
"type": "Error",
"errorCode": "Error Code"
}
]
}
}
}
},
"500": {
"description": "Internal Server Error. An unhandled exception occurred"
},
"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/import-history": {
"post": {
"tags": [
"ImportRecord"
],
"summary": "Create new ImportRecord",
"description": "\nThis method will create a new ImportRecord.\n The ImportRecord will initialize with the data provided in the DTO.<br /><br /><b>Required permissions:</b><br />Following permissions are required: ConfigurationExchangeEdit",
"operationId": "CreateImportRecord",
"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": "ServiceRequest with the Fenergo.Nebula.ConfigExchange.Command.Application.Dto.ImportRecordDto to create",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImportRecordDtoServiceRequest"
}
}
}
},
"responses": {
"202": {
"description": "Success. ImportRecord created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImportRecordDtoServiceResponse"
}
}
}
},
"400": {
"description": "Bad request. The request has missing/invalid values",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServiceResponse"
}
}
}
},
"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/import-session": {
"post": {
"tags": [
"ImportSession"
],
"summary": "Create new ImportSession",
"description": "\nThis method will create a new ImportSession.\n The ImportSession will initialize with the data provided in the DTO.<br /><br /><b>Required permissions:</b><br />Following permissions are required: ConfigurationExchangeEdit",
"operationId": "CreateImportSession",
"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": "ServiceRequest with the Fenergo.Nebula.ConfigExchange.Command.Application.Dto.ImportSessionDto to create",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImportSessionCreationDtoServiceRequest"
}
}
}
},
"responses": {
"202": {
"description": "Success. ImportSession created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImportSessionDtoServiceResponse"
}
}
}
},
"400": {
"description": "Bad request. The request has missing/invalid values",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServiceResponse"
}
}
}
},
"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/import-session/{sessionId}/log": {
"patch": {
"tags": [
"ImportSession"
],
"summary": "Adds logs to an import session",
"description": "\nThis method add new logs to an import session<br /><br /><b>Required permissions:</b><br />Following permissions are required: ConfigurationExchangeEdit",
"operationId": "AddSessionLogs",
"parameters": [
{
"name": "sessionId",
"in": "path",
"description": "The id of the import session",
"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"
}
],
"requestBody": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImportSessionAddLogsDtoServiceRequest"
}
}
}
},
"responses": {
"202": {
"description": "Success. Logs added",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServiceResponse"
}
}
}
},
"400": {
"description": "Bad request. The request has missing/invalid values",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServiceResponse"
}
}
}
},
"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/import-session/{sessionId}/phase/current/close": {
"put": {
"tags": [
"ImportSession"
],
"summary": "Close import phase",
"description": "\nThis method will close import phase.\n The current ImportSession phase will be closed with the data provided in the DTO.<br /><br /><b>Required permissions:</b><br />Following permissions are required: ConfigurationExchangeEdit",
"operationId": "CloseImportPhase",
"parameters": [
{
"name": "sessionId",
"in": "path",
"description": "The id of the import session",
"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"
}
],
"requestBody": {
"description": "ServiceRequest with the Fenergo.Nebula.ConfigExchange.Command.Application.Dto.ImportSessionDto to create",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CloseImportPhaseRequestDtoServiceRequest"
}
}
}
},
"responses": {
"202": {
"description": "Success. ImportSession created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CloseImportPhaseResponseDtoServiceResponse"
}
}
}
},
"400": {
"description": "Bad request. The request has missing/invalid values",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServiceResponse"
}
}
}
},
"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"
}
]
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"CloseImportPhaseRequestDto": {
"type": "object",
"properties": {
"sessionId": {
"type": "string",
"description": "Unique Identifier of the import session",
"format": "uuid",
"example": "2920b7a7-7336-4fb1-82b7-1d691b8367fa"
},
"currentPhaseIndex": {
"type": "integer",
"description": "Identifier of current phase",
"format": "int32",
"example": 0
},
"nextPhaseType": {
"$ref": "#/components/schemas/ImportPhaseType"
},
"description": {
"type": "string",
"description": "The description of the import session",
"nullable": true,
"example": "Description of the Import Session 23/04/22"
},
"importInPublishedState": {
"type": "boolean",
"description": "The state of the import in a published state toggle",
"example": true
},
"configAsOfDate": {
"type": "string",
"description": "The current configuration as-of value",
"format": "date-time",
"example": "2019-01-06T17:16:40"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ImportItem"
},
"description": "Selected items",
"nullable": true
},
"closeDate": {
"type": "string",
# --- truncated at 32 KB (53 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fenergo/refs/heads/main/openapi/fenergo-configexchangecommand-v1-0-openapi.json