diff --git a/src/__tests__/ioc-creation.test.js b/src/__tests__/ioc-creation.test.js
index 6bc7d7bed92d828d511bf77379ce3fc8ad9eecdf..e8882ca40647530e5e2630b68bf227505e3f9e40 100644
--- a/src/__tests__/ioc-creation.test.js
+++ b/src/__tests__/ioc-creation.test.js
@@ -88,11 +88,9 @@ defineFeature(feature, (test) => {
   //             owner: "testuser",
   //             id: 1,
   //             status: null,
-  //             createdBy: "testuser",
   //             latestVersion: {
   //               id: 1,
   //               version: 1,
-  //               createdBy: "testuser",
   //               createdAt: "2021-08-04T14:35:41.037+00:00",
   //               namingName: "TEST-IOC-1",
   //               sourceUrl: "http://test-ioc.git",
@@ -112,11 +110,9 @@ defineFeature(feature, (test) => {
   //             owner: "testuser",
   //             id: iocId,
   //             status: null,
-  //             createdBy: "testuser",
   //             latestVersion: {
   //               id: 1,
   //               version: 1,
-  //               createdBy: "testuser",
   //               createdAt: "2021-08-04T14:35:41.037+00:00",
   //               namingName: "TEST-IOC-1",
   //               sourceUrl: "http://test-ioc.git",
diff --git a/src/api/SwaggerApi.js b/src/api/SwaggerApi.js
index bca2b3bcb9ac183437a3c521fac340b533720c4c..4d04c5dc2e11b0df21e3e830e6e1ea4fa6c0c4b9 100644
--- a/src/api/SwaggerApi.js
+++ b/src/api/SwaggerApi.js
@@ -188,7 +188,7 @@ function useCallAndUnpack(fcn, unpacker = x => x) {
 
 export function unpackIOC(ioc) {
   ioc = { ...ioc };
-  const { id, description, owner, createdBy, active,
+  const { id, description, owner, active,
      activeDeployment, namingName, gitProjectId, externalNameId,
       sourceUrl, sourceVersion, sourceVersionShort, operationInProgress, alerts } = ioc;
 
@@ -196,7 +196,6 @@ export function unpackIOC(ioc) {
     id: id,
     description: description,
     owner: owner,
-    createdBy: createdBy,
     activeDeployment: activeDeployment,
     active: active,
     gitProjectId: gitProjectId,
diff --git a/src/mocks/fixtures/IOCDetails.json b/src/mocks/fixtures/IOCDetails.json
index 4e3dd774210e8206e10e758d65e0b98c3bd84ce8..13fabb62830c34c1f22cbebcca5812695641dcf8 100644
--- a/src/mocks/fixtures/IOCDetails.json
+++ b/src/mocks/fixtures/IOCDetails.json
@@ -3,7 +3,6 @@
     "id": 1,
     "description": "This is a test IOC for demonstrating the deployment tool",
     "owner": "johnsparger",
-    "createdBy": "johnsparger",
     "namingName": "CCCE:SC-IOC-003",
     "externalNameId": 238364,
     "gitProjectId": 5215,
@@ -19,7 +18,6 @@
     "id": 2,
     "description": "Test IOC for CCCE",
     "owner": "johnsparger",
-    "createdBy": "johnsparger",
     "namingName": "CCCE:SC-IOC-001",
     "externalNameId": 238032,
     "gitProjectId": 4801,
diff --git a/src/mocks/fixtures/ccce-api.json b/src/mocks/fixtures/ccce-api.json
index b380ee2177f24201b5627d93db28b44c0cf1ac70..732689d46e489d4c2029a20f7d65b93a83eba775 100644
--- a/src/mocks/fixtures/ccce-api.json
+++ b/src/mocks/fixtures/ccce-api.json
@@ -3,7 +3,7 @@
   "info": {
     "title": "CCCE API",
     "description": "CCCE backend",
-    "version": "0.0.3"
+    "version": "0.0.5"
   },
   "servers": [
     {
@@ -44,13 +44,13 @@
     }
   ],
   "paths": {
-    "/api/v1/deployments/{ioc_id}/undeploy_in_db": {
+    "/api/v1/iocs/{ioc_id}/undeploy_in_db": {
       "put": {
         "tags": [
-          "Deployments"
+          "IOCs"
         ],
-        "summary": "Undeploy in DB",
-        "description": "Marks an IOC in DB as undeployed - will not call AWX",
+        "summary": "Undeploy in database",
+        "description": "Marks an IOC in database as undeployed - will not call AWX",
         "operationId": "unDeployInDb",
         "parameters": [
           {
@@ -65,46 +65,6 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
-                }
-              }
-            }
-          },
-          "404": {
-            "description": "Not found",
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
-                }
-              }
-            }
-          },
-          "403": {
-            "description": "Forbidden: user doesn't have the necessary permissions to undeploy",
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
-                }
-              }
-            }
-          },
-          "422": {
-            "description": "IOC is not deployed",
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
-                }
-              }
-            }
-          },
           "200": {
             "description": "Undeployment created",
             "content": {
@@ -118,8 +78,8 @@
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -128,8 +88,8 @@
               }
             }
           },
-          "409": {
-            "description": "Ongoing deployment, or undeployment for IOC",
+          "403": {
+            "description": "Forbidden: user doesn't have the necessary permissions to undeploy",
             "content": {
               "application/json": {
                 "schema": {
@@ -137,35 +97,9 @@
                 }
               }
             }
-          }
-        },
-        "security": [
-          {
-            "bearerAuth": []
-          }
-        ]
-      }
-    },
-    "/api/v1/awx/jobs": {
-      "put": {
-        "tags": [
-          "AWX"
-        ],
-        "summary": "Update an AWX job's status",
-        "operationId": "updateJob",
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "$ref": "#/components/schemas/AwxJobMeta"
-              }
-            }
           },
-          "required": true
-        },
-        "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "404": {
+            "description": "Not found",
             "content": {
               "application/json": {
                 "schema": {
@@ -174,8 +108,8 @@
               }
             }
           },
-          "404": {
-            "description": "Job not found",
+          "409": {
+            "description": "Ongoing deployment, or undeployment for IOC",
             "content": {
               "application/json": {
                 "schema": {
@@ -184,8 +118,8 @@
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "422": {
+            "description": "IOC is not deployed",
             "content": {
               "application/json": {
                 "schema": {
@@ -194,8 +128,8 @@
               }
             }
           },
-          "200": {
-            "description": "Job updated",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -207,7 +141,7 @@
         },
         "security": [
           {
-            "apiKey": []
+            "bearerAuth": []
           }
         ]
       }
@@ -297,22 +231,22 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "A paged array of IOCs",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/PagedIocResponse"
                 }
               }
             }
           },
-          "200": {
-            "description": "A paged array of IOCs",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/PagedIocResponse"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -346,18 +280,18 @@
           "required": true
         },
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "201": {
+            "description": "IOC created",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/Ioc"
                 }
               }
             }
           },
-          "424": {
-            "description": "Metadata file not found, or not processable",
+          "400": {
+            "description": "Incomplete request",
             "content": {
               "application/json": {
                 "schema": {
@@ -366,8 +300,8 @@
               }
             }
           },
-          "422": {
-            "description": "Unprocessable request",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -376,8 +310,8 @@
               }
             }
           },
-          "400": {
-            "description": "Incomplete request",
+          "403": {
+            "description": "Forbidden: User doesn't have the necessary permissions in Gitlab",
             "content": {
               "application/json": {
                 "schema": {
@@ -396,8 +330,8 @@
               }
             }
           },
-          "503": {
-            "description": "Remote service exception",
+          "422": {
+            "description": "Unprocessable request",
             "content": {
               "application/json": {
                 "schema": {
@@ -406,8 +340,8 @@
               }
             }
           },
-          "403": {
-            "description": "Forbidden: User doesn't have the necessary permissions in Gitlab",
+          "424": {
+            "description": "Metadata file not found, or not processable",
             "content": {
               "application/json": {
                 "schema": {
@@ -426,12 +360,12 @@
               }
             }
           },
-          "201": {
-            "description": "IOC created",
+          "503": {
+            "description": "Remote service exception",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/Ioc"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -444,12 +378,12 @@
         ]
       }
     },
-    "/api/v1/deployments/{ioc_id}/undeploy": {
+    "/api/v1/iocs/{ioc_id}/undeployment_job": {
       "post": {
         "tags": [
-          "Deployments"
+          "IOCs"
         ],
-        "summary": "Start undeployment",
+        "summary": "Create undeployment job",
         "operationId": "createUndeployment",
         "parameters": [
           {
@@ -474,12 +408,15 @@
           "required": true
         },
         "responses": {
-          "422": {
-            "description": "IOC is not deployed correctly",
+          "201": {
+            "description": "Undeployment created",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/Deployment"
+                  }
                 }
               }
             }
@@ -524,8 +461,8 @@
               }
             }
           },
-          "503": {
-            "description": "Remote service exception",
+          "422": {
+            "description": "IOC is not deployed correctly",
             "content": {
               "application/json": {
                 "schema": {
@@ -534,21 +471,18 @@
               }
             }
           },
-          "201": {
-            "description": "Undeployment created",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
-                  "type": "array",
-                  "items": {
-                    "$ref": "#/components/schemas/Deployment"
-                  }
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Remote service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -565,12 +499,12 @@
         ]
       }
     },
-    "/api/v1/deployments/{ioc_id}/stop": {
+    "/api/v1/iocs/{ioc_id}/stop_job": {
       "post": {
         "tags": [
-          "Deployments"
+          "IOCs"
         ],
-        "summary": "Stop an existing IOC",
+        "summary": "Create stop job for an existing IOC",
         "operationId": "stopIoc",
         "parameters": [
           {
@@ -585,18 +519,18 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "201": {
+            "description": "IOC stop initiated",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/AdHocCommand"
                 }
               }
             }
           },
-          "404": {
-            "description": "IOC not found",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -605,8 +539,8 @@
               }
             }
           },
-          "409": {
-            "description": "Concurrent deployment, undeployment, start or stop for IOC is ongoing",
+          "403": {
+            "description": "Forbidden: User doesn't have the necessary permissions in Gitlab",
             "content": {
               "application/json": {
                 "schema": {
@@ -615,8 +549,8 @@
               }
             }
           },
-          "503": {
-            "description": "Remote service exception",
+          "404": {
+            "description": "IOC not found",
             "content": {
               "application/json": {
                 "schema": {
@@ -625,8 +559,8 @@
               }
             }
           },
-          "403": {
-            "description": "Forbidden: User doesn't have the necessary permissions in Gitlab",
+          "409": {
+            "description": "Concurrent deployment, undeployment, start or stop for IOC is ongoing",
             "content": {
               "application/json": {
                 "schema": {
@@ -655,12 +589,12 @@
               }
             }
           },
-          "201": {
-            "description": "IOC stop initiated",
+          "503": {
+            "description": "Remote service exception",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/AdHocCommand"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -673,12 +607,12 @@
         ]
       }
     },
-    "/api/v1/deployments/{ioc_id}/start": {
+    "/api/v1/iocs/{ioc_id}/start_job": {
       "post": {
         "tags": [
-          "Deployments"
+          "IOCs"
         ],
-        "summary": "Start an existing IOC",
+        "summary": "Create start job for an existing IOC",
         "operationId": "startIoc",
         "parameters": [
           {
@@ -693,18 +627,18 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "201": {
+            "description": "IOC start initiated",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/AdHocCommand"
                 }
               }
             }
           },
-          "404": {
-            "description": "IOC not found",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -713,18 +647,18 @@
               }
             }
           },
-          "201": {
-            "description": "IOC start initiated",
+          "403": {
+            "description": "Forbidden: User doesn't have the necessary permissions in Gitlab",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/AdHocCommand"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "409": {
-            "description": "Concurrent deployment, undeployment, start or stop for IOC is ongoing",
+          "404": {
+            "description": "IOC not found",
             "content": {
               "application/json": {
                 "schema": {
@@ -733,8 +667,8 @@
               }
             }
           },
-          "503": {
-            "description": "Remote service exception",
+          "409": {
+            "description": "Concurrent deployment, undeployment, start or stop for IOC is ongoing",
             "content": {
               "application/json": {
                 "schema": {
@@ -743,8 +677,8 @@
               }
             }
           },
-          "403": {
-            "description": "Forbidden: User doesn't have the necessary permissions in Gitlab",
+          "422": {
+            "description": "IOC has no active deployment",
             "content": {
               "application/json": {
                 "schema": {
@@ -753,8 +687,8 @@
               }
             }
           },
-          "422": {
-            "description": "IOC has no active deployment",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -763,8 +697,8 @@
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Remote service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -781,12 +715,12 @@
         ]
       }
     },
-    "/api/v1/deployments/{ioc_id}/deploy": {
+    "/api/v1/iocs/{ioc_id}/deployment_job": {
       "post": {
         "tags": [
-          "Deployments"
+          "IOCs"
         ],
-        "summary": "Update and deploy an existing IOC",
+        "summary": "Create a deployment job for an existing IOC",
         "operationId": "updateAndDeployIoc",
         "parameters": [
           {
@@ -811,6 +745,26 @@
           "required": true
         },
         "responses": {
+          "201": {
+            "description": "Deployment created",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Deployment"
+                }
+              }
+            }
+          },
+          "400": {
+            "description": "Incomplete request",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/GeneralException"
+                }
+              }
+            }
+          },
           "401": {
             "description": "Unauthorized",
             "content": {
@@ -821,6 +775,16 @@
               }
             }
           },
+          "403": {
+            "description": "Forbidden: User doesn't have the necessary permissions in Gitlab",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/GeneralException"
+                }
+              }
+            }
+          },
           "404": {
             "description": "IOC not found",
             "content": {
@@ -831,8 +795,8 @@
               }
             }
           },
-          "424": {
-            "description": "Metadata file not found, or not processable",
+          "409": {
+            "description": "Concurrent deployment, undeployment, start or stop for IOC is ongoing",
             "content": {
               "application/json": {
                 "schema": {
@@ -841,18 +805,18 @@
               }
             }
           },
-          "201": {
-            "description": "Deployment created",
+          "422": {
+            "description": "CSEntry host not found",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/Deployment"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "409": {
-            "description": "Concurrent deployment, undeployment, start or stop for IOC is ongoing",
+          "424": {
+            "description": "Metadata file not found, or not processable",
             "content": {
               "application/json": {
                 "schema": {
@@ -861,8 +825,8 @@
               }
             }
           },
-          "400": {
-            "description": "Incomplete request",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -880,9 +844,35 @@
                 }
               }
             }
+          }
+        },
+        "security": [
+          {
+            "bearerAuth": []
+          }
+        ]
+      }
+    },
+    "/api/v1/awx/jobs": {
+      "post": {
+        "tags": [
+          "AWX"
+        ],
+        "summary": "Update an AWX job's status",
+        "operationId": "updateJob",
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/AwxJobMeta"
+              }
+            }
           },
-          "403": {
-            "description": "Forbidden: User doesn't have the necessary permissions in Gitlab",
+          "required": true
+        },
+        "responses": {
+          "200": {
+            "description": "Job updated",
             "content": {
               "application/json": {
                 "schema": {
@@ -891,8 +881,18 @@
               }
             }
           },
-          "422": {
-            "description": "CSEntry host not found",
+          "401": {
+            "description": "Unauthorized",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/GeneralException"
+                }
+              }
+            }
+          },
+          "404": {
+            "description": "Job not found",
             "content": {
               "application/json": {
                 "schema": {
@@ -914,7 +914,7 @@
         },
         "security": [
           {
-            "bearerAuth": []
+            "apiKey": []
           }
         ]
       }
@@ -928,8 +928,18 @@
         "description": "Renewing valid, non-expired JWT token",
         "operationId": "tokenRenew",
         "responses": {
-          "503": {
-            "description": "Login server unavailable",
+          "200": {
+            "description": "Ok",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/LoginResponse"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -938,12 +948,12 @@
               }
             }
           },
-          "200": {
-            "description": "Ok",
+          "403": {
+            "description": "Permission denied",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/LoginResponse"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -957,6 +967,16 @@
                 }
               }
             }
+          },
+          "503": {
+            "description": "Login server unavailable",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/GeneralException"
+                }
+              }
+            }
           }
         },
         "security": [
@@ -985,8 +1005,18 @@
           "required": true
         },
         "responses": {
-          "503": {
-            "description": "Login server unavailable",
+          "200": {
+            "description": "Ok",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/LoginResponse"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Bad username, and/or password",
             "content": {
               "application/json": {
                 "schema": {
@@ -995,12 +1025,12 @@
               }
             }
           },
-          "200": {
-            "description": "Ok",
+          "403": {
+            "description": "User doesn't have permission to log in",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/LoginResponse"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -1015,8 +1045,8 @@
               }
             }
           },
-          "403": {
-            "description": "Bad username, and/or password",
+          "503": {
+            "description": "Login server unavailable",
             "content": {
               "application/json": {
                 "schema": {
@@ -1048,18 +1078,18 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "Found IOC",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/IocDetails"
                 }
               }
             }
           },
-          "404": {
-            "description": "Ioc not found",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -1068,12 +1098,12 @@
               }
             }
           },
-          "200": {
-            "description": "Found IOC",
+          "404": {
+            "description": "Ioc not found",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/IocDetails"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -1109,18 +1139,18 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "204": {
+            "description": "IOC deleted",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "type": "string"
                 }
               }
             }
-          },
-          "404": {
-            "description": "IOC not found",
+          },
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -1129,18 +1159,18 @@
               }
             }
           },
-          "204": {
-            "description": "IOC deleted",
+          "403": {
+            "description": "Forbidden: User doesn't have the necessary permissions",
             "content": {
               "application/json": {
                 "schema": {
-                  "type": "string"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "409": {
-            "description": "Concurrent deployment, undeployment, start or stop for IOC is ongoing",
+          "404": {
+            "description": "IOC not found",
             "content": {
               "application/json": {
                 "schema": {
@@ -1149,8 +1179,8 @@
               }
             }
           },
-          "503": {
-            "description": "Remote service exception",
+          "409": {
+            "description": "Concurrent deployment, undeployment, start or stop for IOC is ongoing",
             "content": {
               "application/json": {
                 "schema": {
@@ -1159,8 +1189,8 @@
               }
             }
           },
-          "403": {
-            "description": "Forbidden: User doesn't have the necessary permissions",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -1169,8 +1199,8 @@
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Remote service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -1215,18 +1245,18 @@
           "required": true
         },
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "IOC updated",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/Ioc"
                 }
               }
             }
           },
-          "404": {
-            "description": "Ioc not found",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -1235,8 +1265,8 @@
               }
             }
           },
-          "422": {
-            "description": "Unprocessable request",
+          "403": {
+            "description": "Forbidden: User doesn't have the necessary permissions",
             "content": {
               "application/json": {
                 "schema": {
@@ -1245,8 +1275,8 @@
               }
             }
           },
-          "503": {
-            "description": "Remote service exception",
+          "404": {
+            "description": "Ioc not found",
             "content": {
               "application/json": {
                 "schema": {
@@ -1255,8 +1285,8 @@
               }
             }
           },
-          "403": {
-            "description": "Forbidden: User doesn't have the necessary permissions",
+          "409": {
+            "description": "IOC already created or concurrent deployment, undeployment, start or stop for IOC is ongoing",
             "content": {
               "application/json": {
                 "schema": {
@@ -1265,18 +1295,18 @@
               }
             }
           },
-          "200": {
-            "description": "IOC updated",
+          "422": {
+            "description": "Unprocessable request",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/Ioc"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "409": {
-            "description": "IOC already created or concurrent deployment, undeployment, start or stop for IOC is ongoing",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -1285,8 +1315,8 @@
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Remote service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -1331,22 +1361,22 @@
         "summary": "Own IOCs' statistics",
         "operationId": "personalStatistics",
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "Personal statistics",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/PersonalStatisticsResponse"
                 }
               }
             }
           },
-          "200": {
-            "description": "Personal statistics",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/PersonalStatisticsResponse"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -1377,22 +1407,22 @@
         "summary": "Set of statistics",
         "operationId": "generalStatistics",
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "Statistics about IOCs, deployments, and hosts",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/GeneralStatisticsResponse"
                 }
               }
             }
           },
-          "200": {
-            "description": "Statistics about IOCs, deployments, and hosts",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralStatisticsResponse"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -1462,25 +1492,25 @@
         "summary": "Deployment statistics",
         "operationId": "deploymentStatistics",
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "Statistics about IOCs, deployments, and hosts",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/DeploymentStatisticsResponse"
+                  }
                 }
               }
             }
           },
-          "200": {
-            "description": "Statistics about IOCs, deployments, and hosts",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "type": "array",
-                  "items": {
-                    "$ref": "#/components/schemas/DeploymentStatisticsResponse"
-                  }
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -1506,25 +1536,25 @@
         "summary": "Deployed IOC history from DB for statistics",
         "operationId": "iocDeploymentHistory",
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "History about deployed IOCs from DB for statistics",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/ActiveIOCSForHistoryResponse"
+                  }
                 }
               }
             }
           },
-          "200": {
-            "description": "History about deployed IOCs from DB for statistics",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "type": "array",
-                  "items": {
-                    "$ref": "#/components/schemas/ActiveIOCSForHistoryResponse"
-                  }
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -1550,25 +1580,25 @@
         "summary": "Currently active IOC statistics",
         "operationId": "currentlyActiveIocs",
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "Statistics about currently active IOCs",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/ActiveIocStatisticsResponse"
+                  }
                 }
               }
             }
           },
-          "200": {
-            "description": "Statistics about currently active IOCs",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "type": "array",
-                  "items": {
-                    "$ref": "#/components/schemas/ActiveIocStatisticsResponse"
-                  }
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -1594,18 +1624,21 @@
         "summary": "Active IOC history from Prometheus for statistics",
         "operationId": "activeIocHistory",
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "History about active IOCs for statistics",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/ActiveIOCSForHistoryResponse"
+                  }
                 }
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -1614,15 +1647,12 @@
               }
             }
           },
-          "200": {
-            "description": "History about active IOCs for statistics",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
-                  "type": "array",
-                  "items": {
-                    "$ref": "#/components/schemas/ActiveIOCSForHistoryResponse"
-                  }
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -1649,18 +1679,21 @@
           }
         ],
         "responses": {
-          "500": {
-            "description": "Service exception",
+          "200": {
+            "description": "Naming names, and IDs from CCDB",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/NameResponse"
+                  }
                 }
               }
             }
           },
-          "503": {
-            "description": "Remote service unreachable",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -1669,21 +1702,18 @@
               }
             }
           },
-          "200": {
-            "description": "Naming names, and IDs from CCDB",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
-                  "type": "array",
-                  "items": {
-                    "$ref": "#/components/schemas/NameResponse"
-                  }
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "401": {
-            "description": "Unauthorized",
+          "503": {
+            "description": "Remote service unreachable",
             "content": {
               "application/json": {
                 "schema": {
@@ -1729,12 +1759,12 @@
           }
         ],
         "responses": {
-          "500": {
-            "description": "Service exception",
+          "200": {
+            "description": "Log lines",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/LokiResponse"
                 }
               }
             }
@@ -1749,8 +1779,8 @@
               }
             }
           },
-          "503": {
-            "description": "Logging server unavailable",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -1759,12 +1789,12 @@
               }
             }
           },
-          "200": {
-            "description": "Log lines",
+          "503": {
+            "description": "Logging server unavailable",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/LokiResponse"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -1797,22 +1827,22 @@
           }
         ],
         "responses": {
-          "500": {
-            "description": "Service exception",
+          "200": {
+            "description": "Log lines",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/IocStatusResponse"
                 }
               }
             }
           },
-          "200": {
-            "description": "Log lines",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/IocStatusResponse"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -1827,8 +1857,8 @@
               }
             }
           },
-          "401": {
-            "description": "Unauthorized",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -1878,12 +1908,12 @@
           }
         ],
         "responses": {
-          "500": {
-            "description": "Service exception",
+          "200": {
+            "description": "Log lines",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/LokiResponse"
                 }
               }
             }
@@ -1898,8 +1928,8 @@
               }
             }
           },
-          "503": {
-            "description": "Logging server unavailable",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -1908,12 +1938,12 @@
               }
             }
           },
-          "200": {
-            "description": "Log lines",
+          "503": {
+            "description": "Logging server unavailable",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/LokiResponse"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -1934,25 +1964,25 @@
         "summary": "List own IOCs with alarms",
         "operationId": "listOwnIocsWithAlarms",
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "Array of own IOC with alarms",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/IocWithAlarm"
+                  }
                 }
               }
             }
           },
-          "200": {
-            "description": "Array of own IOC with alarms",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "type": "array",
-                  "items": {
-                    "$ref": "#/components/schemas/IocWithAlarm"
-                  }
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -2013,29 +2043,29 @@
             }
           }
         ],
-        "responses": {
-          "401": {
-            "description": "Unauthorized",
+        "responses": {
+          "200": {
+            "description": "A paged array of CSEntry hosts",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/PagedCSEntryHostResponse"
                 }
               }
             }
           },
-          "200": {
-            "description": "A paged array of CSEntry hosts",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/PagedCSEntryHostResponse"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "503": {
-            "description": "Remote server exception",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -2044,8 +2074,8 @@
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Remote server exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -2077,18 +2107,18 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "Found Host",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/CSEntryHostWithStatus"
                 }
               }
             }
           },
-          "404": {
-            "description": "Not found",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -2097,8 +2127,8 @@
               }
             }
           },
-          "503": {
-            "description": "Remote server exception",
+          "404": {
+            "description": "Not found",
             "content": {
               "application/json": {
                 "schema": {
@@ -2107,18 +2137,18 @@
               }
             }
           },
-          "200": {
-            "description": "Found Host",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/CSEntryHostWithStatus"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Remote server exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -2170,22 +2200,22 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "Found Host",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/PagedAssociatedIocs"
                 }
               }
             }
           },
-          "200": {
-            "description": "Found Host",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/PagedAssociatedIocs"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -2295,16 +2325,6 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
-                }
-              }
-            }
-          },
           "200": {
             "description": "List of Tags and CommitIds for a specific GitLab repo",
             "content": {
@@ -2318,8 +2338,8 @@
               }
             }
           },
-          "503": {
-            "description": "Git exception",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -2337,6 +2357,16 @@
                 }
               }
             }
+          },
+          "503": {
+            "description": "Git exception",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/GeneralException"
+                }
+              }
+            }
           }
         }
       }
@@ -2370,16 +2400,6 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
-            "content": {
-              "application/json": {
-                "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
-                }
-              }
-            }
-          },
           "200": {
             "description": "List of Tags and CommitIds for a specific GitLab repo",
             "content": {
@@ -2393,8 +2413,8 @@
               }
             }
           },
-          "503": {
-            "description": "Git exception",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -2412,6 +2432,16 @@
                 }
               }
             }
+          },
+          "503": {
+            "description": "Git exception",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/GeneralException"
+                }
+              }
+            }
           }
         },
         "security": [
@@ -2429,18 +2459,18 @@
         "summary": "Current-user information",
         "operationId": "userInfo",
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "Information about the current user",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/UserInfoResponse"
                 }
               }
             }
           },
-          "404": {
-            "description": "Not found",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -2449,18 +2479,18 @@
               }
             }
           },
-          "200": {
-            "description": "Information about the current user",
+          "404": {
+            "description": "Not found",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/UserInfoResponse"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "503": {
-            "description": "Git exception",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -2469,8 +2499,8 @@
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Git exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -2506,25 +2536,25 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "Information about the current user",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/UserInfoResponse"
+                  }
                 }
               }
             }
           },
-          "200": {
-            "description": "Information about the current user",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "type": "array",
-                  "items": {
-                    "$ref": "#/components/schemas/UserInfoResponse"
-                  }
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -2539,8 +2569,8 @@
               }
             }
           },
-          "503": {
-            "description": "Git exception",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -2549,8 +2579,8 @@
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Git exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -2575,18 +2605,21 @@
         "summary": "List IOC projects",
         "operationId": "listProjects",
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "List of Gitlab projects of allowed groups",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/GitProject"
+                  }
                 }
               }
             }
           },
-          "503": {
-            "description": "Git exception",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -2605,15 +2638,12 @@
               }
             }
           },
-          "200": {
-            "description": "List of Gitlab projects of allowed groups",
+          "503": {
+            "description": "Git exception",
             "content": {
               "application/json": {
                 "schema": {
-                  "type": "array",
-                  "items": {
-                    "$ref": "#/components/schemas/GitProject"
-                  }
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -2738,22 +2768,22 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "A paged array of deployments",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/PagedDeploymentResponse"
                 }
               }
             }
           },
-          "200": {
-            "description": "A paged array of deployments",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/PagedDeploymentResponse"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -2791,18 +2821,18 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "A deployment with details",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/DeploymentInfoDetails"
                 }
               }
             }
           },
-          "404": {
-            "description": "Deployment not found",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -2811,12 +2841,12 @@
               }
             }
           },
-          "200": {
-            "description": "A deployment with details",
+          "404": {
+            "description": "Deployment not found",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/DeploymentInfoDetails"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -2854,18 +2884,18 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "AWX job details",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/AwxJobDetails"
                 }
               }
             }
           },
-          "404": {
-            "description": "Deployment not found",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -2874,18 +2904,18 @@
               }
             }
           },
-          "200": {
-            "description": "AWX job details",
+          "404": {
+            "description": "Deployment not found",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/AwxJobDetails"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "503": {
-            "description": "Remote service exception",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -2894,8 +2924,8 @@
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Remote service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -2927,18 +2957,18 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "AWX job log",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/AwxJobLog"
                 }
               }
             }
           },
-          "404": {
-            "description": "Deployment not found",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -2947,8 +2977,8 @@
               }
             }
           },
-          "503": {
-            "description": "Remote service exception",
+          "404": {
+            "description": "Deployment not found",
             "content": {
               "application/json": {
                 "schema": {
@@ -2957,18 +2987,18 @@
               }
             }
           },
-          "200": {
-            "description": "AWX job log",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/AwxJobLog"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Remote service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -3035,22 +3065,22 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "A command with details",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/PagedCommandResponse"
                 }
               }
             }
           },
-          "200": {
-            "description": "A command with details",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/PagedCommandResponse"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -3065,8 +3095,8 @@
               }
             }
           },
-          "503": {
-            "description": "Remote service exception",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -3075,8 +3105,8 @@
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Remote service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -3108,22 +3138,22 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "A command descriptor",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/AdHocCommand"
                 }
               }
             }
           },
-          "200": {
-            "description": "A command descriptor",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/AdHocCommand"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -3138,8 +3168,8 @@
               }
             }
           },
-          "503": {
-            "description": "Remote service exception",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -3148,8 +3178,8 @@
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Remote service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -3181,18 +3211,18 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "Ongoing command (if exists)",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/AdHocCommand"
                 }
               }
             }
           },
-          "404": {
-            "description": "IOC not found",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
@@ -3201,18 +3231,18 @@
               }
             }
           },
-          "200": {
-            "description": "Ongoing command (if exists)",
+          "404": {
+            "description": "IOC not found",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/AdHocCommand"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "503": {
-            "description": "Remote service exception",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -3221,8 +3251,8 @@
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Remote service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -3254,28 +3284,28 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "A command with details",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/AwxCommandDetails"
                 }
               }
             }
           },
-          "200": {
-            "description": "A command with details",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/AwxCommandDetails"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "503": {
-            "description": "Remote service exception",
+          "404": {
+            "description": "AWX command not found",
             "content": {
               "application/json": {
                 "schema": {
@@ -3294,8 +3324,8 @@
               }
             }
           },
-          "404": {
-            "description": "AWX command not found",
+          "503": {
+            "description": "Remote service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -3315,22 +3345,22 @@
         "summary": "Get announcements",
         "operationId": "fetchAnnouncements",
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "Announcements text",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "$ref": "#/components/schemas/Announcements"
                 }
               }
             }
           },
-          "200": {
-            "description": "Announcements text",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/Announcements"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -3358,25 +3388,25 @@
           }
         ],
         "responses": {
-          "401": {
-            "description": "Unauthorized",
+          "200": {
+            "description": "Ok",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "type": "array",
+                  "items": {
+                    "type": "string"
+                  }
                 }
               }
             }
           },
-          "200": {
-            "description": "Ok",
+          "401": {
+            "description": "Unauthorized",
             "content": {
               "application/json": {
                 "schema": {
-                  "type": "array",
-                  "items": {
-                    "type": "string"
-                  }
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
@@ -3391,8 +3421,8 @@
               }
             }
           },
-          "503": {
-            "description": "Login server unavailable",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -3401,8 +3431,8 @@
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Login server unavailable",
             "content": {
               "application/json": {
                 "schema": {
@@ -3428,6 +3458,19 @@
         "description": "Get user roles from authorization service",
         "operationId": "getUserRoles",
         "responses": {
+          "200": {
+            "description": "Ok",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "array",
+                  "items": {
+                    "type": "string"
+                  }
+                }
+              }
+            }
+          },
           "401": {
             "description": "Unauthorized",
             "content": {
@@ -3438,21 +3481,18 @@
               }
             }
           },
-          "200": {
-            "description": "Ok",
+          "403": {
+            "description": "Permission denied",
             "content": {
               "application/json": {
                 "schema": {
-                  "type": "array",
-                  "items": {
-                    "type": "string"
-                  }
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "503": {
-            "description": "Login server unavailable",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
@@ -3461,8 +3501,8 @@
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Login server unavailable",
             "content": {
               "application/json": {
                 "schema": {
@@ -3488,28 +3528,28 @@
         "description": "Logging out the user",
         "operationId": "logout",
         "responses": {
-          "503": {
-            "description": "Login server unavailable or remote error",
+          "200": {
+            "description": "Ok",
             "content": {
               "application/json": {
                 "schema": {
-                  "$ref": "#/components/schemas/GeneralException"
+                  "type": "object"
                 }
               }
             }
           },
-          "200": {
-            "description": "Ok",
+          "500": {
+            "description": "Service exception",
             "content": {
               "application/json": {
                 "schema": {
-                  "type": "object"
+                  "$ref": "#/components/schemas/GeneralException"
                 }
               }
             }
           },
-          "500": {
-            "description": "Service exception",
+          "503": {
+            "description": "Login server unavailable or remote error",
             "content": {
               "application/json": {
                 "schema": {
@@ -3529,17 +3569,6 @@
   },
   "components": {
     "schemas": {
-      "GeneralException": {
-        "type": "object",
-        "properties": {
-          "error": {
-            "type": "string"
-          },
-          "description": {
-            "type": "string"
-          }
-        }
-      },
       "Deployment": {
         "type": "object",
         "properties": {
@@ -3633,34 +3662,16 @@
           }
         }
       },
-      "AwxJobMeta": {
+      "GeneralException": {
         "type": "object",
         "properties": {
-          "id": {
-            "type": "integer",
-            "format": "int64"
-          },
-          "started": {
-            "type": "string",
-            "format": "date-time"
-          },
-          "finished": {
-            "type": "string",
-            "format": "date-time"
+          "error": {
+            "type": "string"
           },
-          "status": {
-            "type": "string",
-            "enum": [
-              "pending",
-              "waiting",
-              "running",
-              "failed",
-              "canceled",
-              "successful"
-            ]
+          "description": {
+            "type": "string"
           }
-        },
-        "description": "Job to update"
+        }
       },
       "CreateIoc": {
         "type": "object",
@@ -3683,7 +3694,8 @@
             "type": "string",
             "enum": [
               "ERROR",
-              "WARNING"
+              "WARNING",
+              "INFO"
             ]
           },
           "message": {
@@ -3707,9 +3719,6 @@
           "owner": {
             "type": "string"
           },
-          "createdBy": {
-            "type": "string"
-          },
           "namingName": {
             "type": "string"
           },
@@ -3814,6 +3823,35 @@
         },
         "description": "IOC to update"
       },
+      "AwxJobMeta": {
+        "type": "object",
+        "properties": {
+          "id": {
+            "type": "integer",
+            "format": "int64"
+          },
+          "started": {
+            "type": "string",
+            "format": "date-time"
+          },
+          "finished": {
+            "type": "string",
+            "format": "date-time"
+          },
+          "status": {
+            "type": "string",
+            "enum": [
+              "pending",
+              "waiting",
+              "running",
+              "failed",
+              "canceled",
+              "successful"
+            ]
+          }
+        },
+        "description": "Job to update"
+      },
       "LoginResponse": {
         "type": "object",
         "properties": {
@@ -3880,6 +3918,25 @@
           "numberOfActiveDeployments": {
             "type": "integer",
             "format": "int64"
+          },
+          "numberOfHostsWithIssue": {
+            "type": "integer",
+            "format": "int64"
+          },
+          "numberOfIocHostsOnTechnicalNetwork": {
+            "type": "integer",
+            "format": "int64"
+          },
+          "numberOfIocHostsWithIocsDeployed": {
+            "type": "integer",
+            "format": "int64"
+          },
+          "networkScopesIocCount": {
+            "type": "object",
+            "additionalProperties": {
+              "type": "integer",
+              "format": "int32"
+            }
           }
         }
       },
@@ -4001,7 +4058,8 @@
             "type": "string",
             "enum": [
               "ERROR",
-              "WARNING"
+              "WARNING",
+              "INFO"
             ]
           },
           "alerts": {
@@ -4097,9 +4155,6 @@
           "owner": {
             "type": "string"
           },
-          "createdBy": {
-            "type": "string"
-          },
           "namingName": {
             "type": "string"
           },
@@ -4150,9 +4205,6 @@
           "owner": {
             "type": "string"
           },
-          "createdBy": {
-            "type": "string"
-          },
           "namingName": {
             "type": "string"
           },
@@ -4186,7 +4238,8 @@
             "type": "string",
             "enum": [
               "ERROR",
-              "WARNING"
+              "WARNING",
+              "INFO"
             ]
           },
           "active": {
@@ -4238,7 +4291,8 @@
             "type": "string",
             "enum": [
               "ERROR",
-              "WARNING"
+              "WARNING",
+              "INFO"
             ]
           }
         }
diff --git a/src/test/ccce-api.json b/src/test/ccce-api.json
index b417f4543aaa0039a76e93d7ec34282d330874b7..e9c52f8e57a0aceb191578bedbe8cbc88211efcd 100644
--- a/src/test/ccce-api.json
+++ b/src/test/ccce-api.json
@@ -1 +1 @@
-{"openapi":"3.0.1","info":{"title":"CCCE API","description":"CCCE backend","version":"0.0.4"},"servers":[{"url":"http://localhost:8080","description":"CCCE Deployment Backend"}],"tags":[{"name":"Broadcasts"},{"name":"IOCs"},{"name":"Naming"},{"name":"Authentication"},{"name":"AWX"},{"name":"Statistics"},{"name":"Hosts"},{"name":"Deployments"},{"name":"Git"},{"name":"Monitoring"}],"paths":{"/api/v1/iocs/{ioc_id}/undeploy_in_db":{"put":{"tags":["IOCs"],"summary":"Undeploy in database","description":"Marks an IOC in database as undeployed - will not call AWX","operationId":"unDeployInDb","parameters":[{"name":"ioc_id","in":"path","description":"The id of the IOC to undeploy","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"409":{"description":"Ongoing deployment, or undeployment for IOC","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Undeployment created","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Deployment"}}}}},"422":{"description":"IOC is not deployed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: user doesn't have the necessary permissions to undeploy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/iocs":{"get":{"tags":["IOCs"],"summary":"List IOCs","operationId":"listIocs","parameters":[{"name":"deployment_status","in":"query","description":"IOC's current deployment status","required":false,"schema":{"type":"string","enum":["ALL","DEPLOYED","NOT_DEPLOYED"]}},{"name":"owner","in":"query","description":"User name","required":false,"schema":{"type":"string"}},{"name":"query","in":"query","description":"Search text (Search for Naming name, Owner)","required":false,"schema":{"type":"string"}},{"name":"order_by","in":"query","description":"Order by","required":false,"schema":{"type":"string","enum":["ID","OWNER","IOC_NAME"]}},{"name":"order_asc","in":"query","description":"Order Ascending","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","description":"Page offset","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Page size","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"A paged array of IOCs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedIocResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}},"post":{"tags":["IOCs"],"summary":"Create a new IOC","operationId":"createIoc","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIoc"}}},"required":true},"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"409":{"description":"IOC already created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"201":{"description":"IOC created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ioc"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"424":{"description":"Metadata file not found, or not processable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"400":{"description":"Incomplete request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: User doesn't have the necessary permissions in Gitlab","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/iocs/{ioc_id}/undeployment_job":{"post":{"tags":["IOCs"],"summary":"Create undeployment job","operationId":"createUndeployment","parameters":[{"name":"ioc_id","in":"path","description":"The id of the IOC to undeploy","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Undeployment"}}},"required":true},"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"422":{"description":"IOC is not deployed correctly","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"201":{"description":"Undeployment created","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Deployment"}}}}},"409":{"description":"Concurrent deployment, undeployment, start or stop for IOC is ongoing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: user doesn't have the necessary permissions in Gitlab","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/iocs/{ioc_id}/stop_job":{"post":{"tags":["IOCs"],"summary":"Create stop job for an existing IOC","operationId":"stopIoc","parameters":[{"name":"ioc_id","in":"path","description":"The id of the IOC to stop","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"IOC not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"422":{"description":"IOC has no active deployment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"201":{"description":"IOC stop initiated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdHocCommand"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: User doesn't have the necessary permissions in Gitlab","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"409":{"description":"Concurrent deployment, undeployment, start or stop for IOC is ongoing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/iocs/{ioc_id}/start_job":{"post":{"tags":["IOCs"],"summary":"Create start job for an existing IOC","operationId":"startIoc","parameters":[{"name":"ioc_id","in":"path","description":"The id of the IOC to start","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"IOC not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"422":{"description":"IOC has no active deployment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: User doesn't have the necessary permissions in Gitlab","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"201":{"description":"IOC start initiated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdHocCommand"}}}},"409":{"description":"Concurrent deployment, undeployment, start or stop for IOC is ongoing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/iocs/{ioc_id}/deployment_job":{"post":{"tags":["IOCs"],"summary":"Create a deployment job for an existing IOC","operationId":"updateAndDeployIoc","parameters":[{"name":"ioc_id","in":"path","description":"The id of the IOC to deploy","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAndDeployIoc"}}},"required":true},"responses":{"404":{"description":"IOC not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"424":{"description":"Metadata file not found, or not processable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"422":{"description":"CSEntry host not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"400":{"description":"Incomplete request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: User doesn't have the necessary permissions in Gitlab","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"409":{"description":"Concurrent deployment, undeployment, start or stop for IOC is ongoing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"201":{"description":"Deployment created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/awx/jobs":{"post":{"tags":["AWX"],"summary":"Update an AWX job's status","operationId":"updateJob","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AwxJobMeta"}}},"required":true},"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Job not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Job updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"apiKey":[]}]}},"/api/v1/authentication/renew":{"post":{"tags":["Authentication"],"summary":"Renewing JWT token","description":"Renewing valid, non-expired JWT token","operationId":"tokenRenew","responses":{"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Login server unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Ok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/authentication/login":{"post":{"tags":["Authentication"],"summary":"Login user and acquire JWT token","description":"Login user with username, and password in order to acquire JWT token","operationId":"login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Login"}}},"required":true},"responses":{"503":{"description":"Login server unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Ok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"401":{"description":"Bad username, and/or password","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"User doesn't have permission to log in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/iocs/{ioc_id}":{"get":{"tags":["IOCs"],"summary":"Find IOC details by ID","operationId":"getIoc","parameters":[{"name":"ioc_id","in":"path","description":"Unique ID of IOC","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Found IOC","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IocDetails"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Ioc not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}},"delete":{"tags":["IOCs"],"summary":"Deletes a single IOC based on the ID supplied","operationId":"deleteIoc","parameters":[{"name":"ioc_id","in":"path","description":"Id of IOC to delete","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"IOC not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: User doesn't have the necessary permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"204":{"description":"IOC deleted","content":{"application/json":{"schema":{"type":"string"}}}},"409":{"description":"Concurrent deployment, undeployment, start or stop for IOC is ongoing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["IOCs"],"summary":"Updating an IOC by ID","operationId":"updateIoc","parameters":[{"name":"ioc_id","in":"path","description":"Unique ID of IOC","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IOCUpdateRequest"}}},"required":true},"responses":{"409":{"description":"IOC already created or concurrent deployment, undeployment, start or stop for IOC is ongoing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: User doesn't have the necessary permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"IOC updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ioc"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Ioc not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/healthcheck":{"get":{"tags":["health-check-controller"],"operationId":"getHealthCheck","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/api/v1/statistics/my_iocs":{"get":{"tags":["Statistics"],"summary":"Own IOCs' statistics","operationId":"personalStatistics","responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Personal statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalStatisticsResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/statistics/general":{"get":{"tags":["Statistics"],"summary":"Set of statistics","operationId":"generalStatistics","responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Statistics about IOCs, deployments, and hosts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralStatisticsResponse"}}}}}}},"/api/v1/statistics/general/ioc_statistics":{"get":{"tags":["Statistics"],"summary":"IOC statistics","operationId":"iocStatistics","responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Statistics about IOCs deployed to hosts","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentOnHost"}}}}}}}},"/api/v1/statistics/general/deployment_statistics":{"get":{"tags":["Statistics"],"summary":"Deployment statistics","operationId":"deploymentStatistics","responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Statistics about IOCs, deployments, and hosts","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentStatisticsResponse"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/statistics/general/deployed_ioc_history":{"get":{"tags":["Statistics"],"summary":"Deployed IOC history from DB for statistics","operationId":"iocDeploymentHistory","responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"History about deployed IOCs from DB for statistics","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActiveIOCSForHistoryResponse"}}}}}}}},"/api/v1/statistics/general/active_ioc_statistics":{"get":{"tags":["Statistics"],"summary":"Currently active IOC statistics","operationId":"currentlyActiveIocs","responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Statistics about currently active IOCs","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActiveIocStatisticsResponse"}}}}}}}},"/api/v1/statistics/general/active_ioc_history":{"get":{"tags":["Statistics"],"summary":"Active IOC history from Prometheus for statistics","operationId":"activeIocHistory","responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"History about active IOCs for statistics","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActiveIOCSForHistoryResponse"}}}}}}}},"/api/v1/naming/ioc_names_by_name":{"get":{"tags":["Naming"],"summary":"Fetches IOC names by name from CCDB","operationId":"fetchIOCByName","parameters":[{"name":"ioc_name","in":"query","description":"IOC name","required":false,"schema":{"type":"string"}}],"responses":{"503":{"description":"Remote service unreachable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Naming names, and IDs from CCDB","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NameResponse"}}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/monitoring/syslog/host/{host_name}":{"get":{"tags":["Monitoring"],"summary":"Fetches syslog lines for a specific host","operationId":"fetchSyslogLines","parameters":[{"name":"host_name","in":"path","description":"Host name (without network part)","required":true,"schema":{"type":"string"}},{"name":"time_range","in":"query","description":"Time range (in minutes)","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Log lines","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LokiResponse"}}}},"503":{"description":"Logging server unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/monitoring/status/{ioc_id}":{"get":{"tags":["Monitoring"],"summary":"Fetches the Prometheus status of the IOC","operationId":"fetchIocStatus","parameters":[{"name":"ioc_id","in":"path","description":"Unique ID of the IOC","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Log lines","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IocStatusResponse"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Ioc not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/monitoring/procserv/host/{host_name}/{ioc_name}":{"get":{"tags":["Monitoring"],"summary":"Fetches procServ Log lines for a specific host","operationId":"fetchProcServLogLines","parameters":[{"name":"host_name","in":"path","description":"Host name (without network part)","required":true,"schema":{"type":"string"}},{"name":"ioc_name","in":"path","description":"Name of the IOC to get procServ logs","required":true,"schema":{"type":"string"}},{"name":"time_range","in":"query","description":"Time range (in minutes)","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Log lines","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LokiResponse"}}}},"503":{"description":"Logging server unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/iocs/my_iocs_with_alarms":{"get":{"tags":["IOCs"],"summary":"List own IOCs with alarms","operationId":"listOwnIocsWithAlarms","responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Array of own IOC with alarms","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IocWithAlarm"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosts":{"get":{"tags":["Hosts"],"summary":"List CSEntry hosts","operationId":"listHosts","parameters":[{"name":"query","in":"query","description":"Search text, this query string is passed directly to Elasticsearch. E.g.: To search all hosts where the string \"archiver\" appears in any field, use \"archiver\".To restrict the search to only the name field, use \"name:archiver\".Note that if you pass \"name:arch\", this will not match archiver as elasticsearch uses keywords for string matching. In this case you’d need to use a wildcard: \"name:arch*\".","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page offset","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Page size","required":false,"schema":{"maximum":100,"type":"string"}}],"responses":{"200":{"description":"A paged array of CSEntry hosts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedCSEntryHostResponse"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote server exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/hosts/{host_csentry_id}/with_status":{"get":{"tags":["Hosts"],"summary":"Find host by CSEntry ID and get status","operationId":"findHostById","parameters":[{"name":"host_csentry_id","in":"path","description":"Unique CSEntry ID of the host","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote server exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Found Host","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CSEntryHostWithStatus"}}}}}}},"/api/v1/hosts/{host_csentry_id}/iocs":{"get":{"tags":["Hosts"],"summary":"Find associated IOCs for the host","operationId":"findAssociatedIocsByHostId","parameters":[{"name":"host_csentry_id","in":"path","description":"Unique CSEntry ID of the host","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Page offset","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Page size","required":false,"schema":{"maximum":100,"type":"string"}}],"responses":{"200":{"description":"Found Host","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedAssociatedIocs"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/hosts/{host_csentry_id}/info":{"get":{"tags":["Hosts"],"summary":"Find host by CSEntry ID","operationId":"findCSentryHostById","parameters":[{"name":"host_csentry_id","in":"path","description":"Unique CSEntry ID of the host","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Found Host","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TargetHost"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/git_helper/{project_id}/tags_and_commits":{"get":{"tags":["Git"],"summary":"List Tags and CommitIds","operationId":"listTagsAndCommitIds","parameters":[{"name":"project_id","in":"path","description":"Git repo project ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"reference","in":"query","description":"Git reference","required":false,"schema":{"type":"string"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"List of Tags and CommitIds for a specific GitLab repo","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GitReference"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Git exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/git_helper/{project_id}/tags_and_commits/search":{"get":{"tags":["Git"],"summary":"Searches Tags and Commits by reference","operationId":"searchTagsAndCommitsByRefName","parameters":[{"name":"project_id","in":"path","description":"Git repo project ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"reference","in":"query","description":"Git short reference","required":false,"schema":{"type":"string"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"List of Tags and CommitIds for a specific GitLab repo","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GitReference"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Git exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/git_helper/user_info":{"get":{"tags":["Git"],"summary":"Current-user information","operationId":"userInfo","responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Information about the current user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInfoResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Git exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/git_helper/user_info/{user_name}":{"get":{"tags":["Git"],"summary":"User information","operationId":"infoFromUserName","parameters":[{"name":"user_name","in":"path","description":"The username to retrieve info from","required":true,"schema":{"type":"string"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Information about the current user","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserInfoResponse"}}}}},"503":{"description":"Git exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/git_helper/projects":{"get":{"tags":["Git"],"summary":"List IOC projects","operationId":"listProjects","responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Git exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"List of Gitlab projects of allowed groups","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GitProject"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/deployments":{"get":{"tags":["Deployments"],"summary":"List deployments","operationId":"listDeployments","parameters":[{"name":"ioc_id","in":"query","description":"IOC ID","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"host_csentry_id","in":"query","description":"Host CSEntry ID","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"status","in":"query","description":"Status","required":false,"schema":{"type":"string","enum":["QUEUED","PENDING","RUNNING","SUCCESSFUL","FAILED","FINISHED"]}},{"name":"user","in":"query","description":"User name","required":false,"schema":{"type":"string"}},{"name":"query","in":"query","description":"Search text (Search for IOC name, IOC version, Host name, Description, Created by)","required":false,"schema":{"type":"string"}},{"name":"order_by","in":"query","description":"Order by","required":false,"schema":{"type":"string","enum":["ID","CREATED_BY","CREATED_AT","START_TIME","FINISHED_AT","IOC_NAME","GIT_REFERENCE"]}},{"name":"order_asc","in":"query","description":"Order Ascending","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","description":"Page offset","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Page size","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"A paged array of deployments","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedDeploymentResponse"}}}}}}},"/api/v1/deployments/{deployment_id}":{"get":{"tags":["Deployments"],"summary":"Get deployment details","operationId":"fetchDeployment","parameters":[{"name":"deployment_id","in":"path","description":"Unique ID of deployment","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"A deployment with details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentInfoDetails"}}}},"404":{"description":"Deployment not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/deployments/jobs/{awx_job_id}":{"get":{"tags":["Deployments"],"summary":"Get deployment job details","operationId":"fetchDeploymentJobDetails","parameters":[{"name":"awx_job_id","in":"path","description":"Unique ID of AWX job","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"AWX job details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AwxJobDetails"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Deployment not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/deployments/jobs/{awx_job_id}/log":{"get":{"tags":["Deployments"],"summary":"Get deployment job log","operationId":"fetchDeploymentJobLog","parameters":[{"name":"awx_job_id","in":"path","description":"Unique ID of AWX job","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"AWX job log","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AwxJobLog"}}}},"404":{"description":"Deployment not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/deployments/commands":{"get":{"tags":["Deployments"],"summary":"Get ad-hoc command list for a specific deployment","operationId":"listCommandsByDeployment","parameters":[{"name":"ioc_id","in":"query","description":"Unique ID of IOC","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"deployment_id","in":"query","description":"Unique ID of deployment","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Page offset","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Page size","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"A command with details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedCommandResponse"}}}},"404":{"description":"Deployment not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/deployments/commands/{command_id}":{"get":{"tags":["Deployments"],"summary":"Get ad-hoc command","operationId":"fetchCommand","parameters":[{"name":"command_id","in":"path","description":"Unique ID of command","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Ad-hoc command not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"A command descriptor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdHocCommand"}}}}}}},"/api/v1/deployments/commands/ongoing/{ioc_id}":{"get":{"tags":["Deployments"],"summary":"Get list of ongoing ad-hoc commands for a specific IOC","operationId":"ongoingCommandByIoc","parameters":[{"name":"ioc_id","in":"path","description":"Unique ID of the IOC","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"IOC not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Ongoing command (if exists)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdHocCommand"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/deployments/commands/jobs/{awx_command_id}":{"get":{"tags":["Deployments"],"summary":"Get ad-hoc command details","operationId":"fetchCommandDetails","parameters":[{"name":"awx_command_id","in":"path","description":"Unique ID of AWX command","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"AWX command not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"A command with details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AwxCommandDetails"}}}}}}},"/api/v1/broadcasts/announcements":{"get":{"tags":["Broadcasts"],"summary":"Get announcements","operationId":"fetchAnnouncements","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Announcements text","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Announcements"}}}}}}},"/api/v1/authentication/users":{"get":{"tags":["Authentication"],"summary":"Get Deployment Tool users","description":"Get Deployment Tool users from authorization service","operationId":"getToolUsers","parameters":[{"name":"query","in":"query","description":"User name query","required":false,"schema":{"type":"string"}}],"responses":{"503":{"description":"Login server unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Role not found by authorization service","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Ok","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/authentication/roles":{"get":{"tags":["Authentication"],"summary":"Get user roles","description":"Get user roles from authorization service","operationId":"getUserRoles","responses":{"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Login server unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Ok","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/authentication/logout":{"delete":{"tags":["Authentication"],"summary":"Logout","description":"Logging out the user","operationId":"logout","responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Login server unavailable or remote error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Ok","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[{"bearerAuth":[]}]}}},"components":{"schemas":{"GeneralException":{"type":"object","properties":{"error":{"type":"string"},"description":{"type":"string"}}},"Deployment":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"createdBy":{"type":"string"},"startDate":{"type":"string","format":"date-time"},"undeployment":{"type":"boolean"},"namingName":{"type":"string"},"gitProjectId":{"type":"integer","format":"int64"},"sourceVersion":{"type":"string"},"endDate":{"type":"string","format":"date-time"},"comment":{"type":"string"},"iocName":{"type":"string"},"host":{"$ref":"#/components/schemas/Host"},"status":{"type":"string","enum":["PENDING","JOB","QUEUED","ERROR"]},"awxJobId":{"type":"integer","format":"int64"},"sourceUrl":{"type":"string"},"sourceVersionShort":{"type":"string"},"jobStatus":{"type":"string","enum":["pending","waiting","running","failed","canceled","successful"]}}},"Host":{"type":"object","properties":{"csEntryId":{"type":"integer","format":"int64"},"csEntryIdValid":{"type":"boolean"},"fqdn":{"type":"string"},"hostName":{"type":"string"},"network":{"type":"string"}}},"CreateIoc":{"type":"object","properties":{"externalNameId":{"type":"integer","format":"int64"},"gitProjectId":{"type":"integer","format":"int64"}},"description":"IOC to create"},"Alert":{"type":"object","properties":{"type":{"type":"string","enum":["ERROR","WARNING","INFO"]},"message":{"type":"string"},"link":{"type":"string"}}},"Ioc":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"description":{"type":"string"},"owner":{"type":"string"},"createdBy":{"type":"string"},"namingName":{"type":"string"},"externalNameId":{"type":"integer","format":"int64"},"gitProjectId":{"type":"integer","format":"int64"},"sourceUrl":{"type":"string"},"sourceVersion":{"type":"string"},"sourceVersionShort":{"type":"string"},"activeDeployment":{"$ref":"#/components/schemas/Deployment"},"alerts":{"type":"array","items":{"$ref":"#/components/schemas/Alert"}},"active":{"type":"boolean"}}},"Undeployment":{"type":"object","properties":{"comment":{"type":"string"}},"description":"Undeployment parameters"},"AdHocCommand":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"type":{"type":"string","enum":["START","STOP"]},"createdBy":{"type":"string"},"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["pending","waiting","running","failed","canceled","successful"]},"iocName":{"type":"string"},"awxCommandId":{"type":"integer","format":"int64"}}},"UpdateAndDeployIoc":{"type":"object","properties":{"comment":{"type":"string"},"sourceVersion":{"type":"string"},"hostCSEntryId":{"type":"integer","format":"int64"}},"description":"IOC to update"},"AwxJobMeta":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"started":{"type":"string","format":"date-time"},"finished":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["pending","waiting","running","failed","canceled","successful"]}},"description":"Job to update"},"LoginResponse":{"type":"object","properties":{"token":{"type":"string"}}},"Login":{"type":"object","properties":{"userName":{"type":"string"},"password":{"type":"string"}}},"IOCUpdateRequest":{"type":"object","properties":{"owner":{"type":"string"},"externalNameId":{"type":"integer","format":"int64"},"gitProjectId":{"type":"integer","format":"int64"}}},"PersonalStatisticsResponse":{"type":"object","properties":{"numberOfActiveIocs":{"type":"integer","format":"int64"}}},"GeneralStatisticsResponse":{"type":"object","properties":{"numberOfActiveHosts":{"type":"integer","format":"int64"},"numberOfCreatedIocs":{"type":"integer","format":"int64"},"numberOfActiveIocs":{"type":"integer","format":"int64"},"numberOfDeployments":{"type":"integer","format":"int64"},"numberOfActiveDeployments":{"type":"integer","format":"int64"},"numberOfHostsWithIssue":{"type":"integer","format":"int64"},"numberOfIocHostsOnTechnicalNetwork":{"type":"integer","format":"int64"},"numberOfIocHostsWithIocsDeployed":{"type":"integer","format":"int64"},"networkScopesIocCount":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}}},"DeploymentCount":{"type":"object","properties":{"iocCount":{"type":"integer","format":"int64"},"countingDate":{"type":"string","format":"date-time"}}},"DeploymentOnHost":{"type":"object","properties":{"network":{"type":"string"},"deployments":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentCount"}}}},"DeploymentStatisticsResponse":{"type":"object","properties":{"deploymentDate":{"type":"string","format":"date-time"},"numberOfDeployments":{"type":"integer","format":"int64"},"successfulDeployments":{"type":"integer","format":"int64"}}},"ActiveIOCSForHistoryResponse":{"type":"object","properties":{"iocCount":{"type":"integer","format":"int64"},"historyDate":{"type":"string","format":"date-time"}}},"ActiveIocStatisticsResponse":{"type":"object","properties":{"network":{"type":"string"},"iocCount":{"type":"integer","format":"int64"}}},"NameResponse":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string"}}},"LokiMessage":{"type":"object","properties":{"logDate":{"type":"string","format":"date-time"},"logMessage":{"type":"string"}}},"LokiResponse":{"type":"object","properties":{"lines":{"type":"array","items":{"$ref":"#/components/schemas/LokiMessage"}}}},"IocStatusResponse":{"type":"object","properties":{"iocId":{"type":"integer","format":"int64"},"alertSeverity":{"type":"string","enum":["ERROR","WARNING","INFO"]},"alerts":{"type":"array","items":{"$ref":"#/components/schemas/Alert"}},"active":{"type":"boolean"}}},"ActiveDeployment":{"type":"object","properties":{"host":{"$ref":"#/components/schemas/DeploymentHostInfo"}}},"DeploymentHostInfo":{"type":"object","properties":{"externalHostId":{"type":"integer","format":"int64"}}},"IocInfo":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"namingName":{"type":"string"},"owner":{"type":"string"},"gitProjectId":{"type":"integer","format":"int64"},"sourceVersion":{"type":"string"},"activeDeployment":{"$ref":"#/components/schemas/ActiveDeployment"}}},"PagedIocResponse":{"type":"object","properties":{"totalCount":{"type":"integer","format":"int64"},"listSize":{"type":"integer","format":"int32"},"pageNumber":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"iocList":{"type":"array","items":{"$ref":"#/components/schemas/IocInfo"}}}},"IocDetails":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"description":{"type":"string"},"owner":{"type":"string"},"createdBy":{"type":"string"},"namingName":{"type":"string"},"externalNameId":{"type":"integer","format":"int64"},"gitProjectId":{"type":"integer","format":"int64"},"sourceUrl":{"type":"string"},"sourceVersion":{"type":"string"},"sourceVersionShort":{"type":"string"},"activeDeployment":{"$ref":"#/components/schemas/Deployment"},"alerts":{"type":"array","items":{"$ref":"#/components/schemas/Alert"}},"operationInProgress":{"type":"boolean"},"active":{"type":"boolean"}}},"IocWithAlarm":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"description":{"type":"string"},"owner":{"type":"string"},"createdBy":{"type":"string"},"namingName":{"type":"string"},"externalNameId":{"type":"integer","format":"int64"},"gitProjectId":{"type":"integer","format":"int64"},"sourceUrl":{"type":"string"},"sourceVersion":{"type":"string"},"sourceVersionShort":{"type":"string"},"activeDeployment":{"$ref":"#/components/schemas/Deployment"},"alerts":{"type":"array","items":{"$ref":"#/components/schemas/Alert"}},"alert":{"type":"string","enum":["ERROR","WARNING","INFO"]},"active":{"type":"boolean"}}},"HostInfo":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"fqdn":{"type":"string"},"name":{"type":"string"},"scope":{"type":"string"},"description":{"type":"string"},"network":{"type":"string"},"deviceType":{"type":"string"}}},"HostInfoWithStatus":{"type":"object","properties":{"csEntryHost":{"$ref":"#/components/schemas/HostInfo"},"status":{"type":"string","enum":["AVAILABLE","UNREACHABLE"]},"alert":{"type":"string","enum":["ERROR","WARNING","INFO"]}}},"PagedCSEntryHostResponse":{"type":"object","properties":{"totalCount":{"type":"integer","format":"int64"},"listSize":{"type":"integer","format":"int32"},"pageNumber":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"csEntryHosts":{"type":"array","items":{"$ref":"#/components/schemas/HostInfoWithStatus"}}}},"CSEntryHost":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"fqdn":{"type":"string"},"name":{"type":"string"},"scope":{"type":"string"},"description":{"type":"string"},"user":{"type":"string"},"interfaces":{"type":"array","items":{"$ref":"#/components/schemas/CSEntryInterface"}},"is_ioc":{"type":"boolean"},"device_type":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"ansible_vars":{"type":"object","additionalProperties":{"type":"object"}},"ansible_groups":{"type":"array","items":{"type":"string"}}}},"CSEntryHostWithStatus":{"type":"object","properties":{"csEntryHost":{"$ref":"#/components/schemas/CSEntryHost"},"assigned":{"type":"boolean"},"status":{"type":"string","enum":["AVAILABLE","UNREACHABLE"]},"alerts":{"type":"array","items":{"$ref":"#/components/schemas/Alert"}}}},"CSEntryInterface":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"network":{"type":"string"},"domain":{"type":"string"},"ip":{"type":"string"},"mac":{"type":"string"},"host":{"type":"string"},"cnames":{"type":"array","items":{"type":"string"}},"is_main":{"type":"boolean"}}},"PagedAssociatedIocs":{"type":"object","properties":{"totalCount":{"type":"integer","format":"int64"},"listSize":{"type":"integer","format":"int32"},"pageNumber":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"deployedIocs":{"type":"array","items":{"$ref":"#/components/schemas/IocInfo"}}}},"TargetHost":{"type":"object","properties":{"externalId":{"type":"integer","format":"int64"},"fqdn":{"type":"string"},"hostName":{"type":"string"},"network":{"type":"string"}}},"GitReference":{"type":"object","properties":{"reference":{"type":"string"},"shortReference":{"type":"string"},"description":{"type":"string"},"commitDate":{"type":"string","format":"date-time"}}},"UserInfoResponse":{"type":"object","properties":{"fullName":{"type":"string"},"loginName":{"type":"string"},"avatar":{"type":"string"},"email":{"type":"string"},"gitlabUserName":{"type":"string"}}},"GitProject":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"url":{"type":"string"}}},"DeploymentInfo":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"createdBy":{"type":"string"},"startDate":{"type":"string","format":"date-time"},"undeployment":{"type":"boolean"},"namingName":{"type":"string"},"gitProjectId":{"type":"integer","format":"int64"},"sourceVersion":{"type":"string"},"host":{"$ref":"#/components/schemas/DeploymentHostInfo"}}},"PagedDeploymentResponse":{"type":"object","properties":{"totalCount":{"type":"integer","format":"int64"},"listSize":{"type":"integer","format":"int32"},"pageNumber":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"deployments":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentInfo"}}}},"DeploymentInfoDetails":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"createdBy":{"type":"string"},"startDate":{"type":"string","format":"date-time"},"undeployment":{"type":"boolean"},"namingName":{"type":"string"},"gitProjectId":{"type":"integer","format":"int64"},"sourceVersion":{"type":"string"},"endDate":{"type":"string","format":"date-time"},"comment":{"type":"string"},"host":{"$ref":"#/components/schemas/HostWithFqdn"},"status":{"type":"string","enum":["PENDING","JOB","QUEUED","ERROR"]},"awxJobId":{"type":"integer","format":"int64"},"iocId":{"type":"integer","format":"int64"},"awxJobUrl":{"type":"string"},"sourceUrl":{"type":"string"},"sourceVersionShort":{"type":"string"}}},"HostWithFqdn":{"type":"object","properties":{"csEntryId":{"type":"integer","format":"int64"},"csEntryIdValid":{"type":"boolean"},"fqdn":{"type":"string"}}},"AwxJobDetails":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"status":{"type":"string","enum":["pending","waiting","running","failed","canceled","successful"]},"started":{"type":"string","format":"date-time"},"finished":{"type":"string","format":"date-time"}}},"AwxJobLog":{"type":"object","properties":{"awxJobId":{"type":"integer","format":"int64"},"stdoutHtml":{"type":"string"},"elapsed":{"type":"number","format":"double"}}},"PagedCommandResponse":{"type":"object","properties":{"totalCount":{"type":"integer","format":"int64"},"listSize":{"type":"integer","format":"int32"},"pageNumber":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"commands":{"type":"array","items":{"$ref":"#/components/schemas/AdHocCommand"}}}},"AwxCommandDetails":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"status":{"type":"string","enum":["pending","waiting","running","failed","canceled","successful"]},"started":{"type":"string","format":"date-time"},"finished":{"type":"string","format":"date-time"}}},"Announcements":{"type":"object","properties":{"announcementsText":{"type":"string"}}}},"securitySchemes":{"apiKey":{"type":"apiKey","name":"CCCE-TOKEN","in":"header"},"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}}}
\ No newline at end of file
+{"openapi":"3.0.1","info":{"title":"CCCE API","description":"CCCE backend","version":"0.0.5"},"servers":[{"url":"http://localhost:8080","description":"CCCE Deployment Backend"}],"tags":[{"name":"Broadcasts"},{"name":"IOCs"},{"name":"Naming"},{"name":"Authentication"},{"name":"AWX"},{"name":"Statistics"},{"name":"Hosts"},{"name":"Deployments"},{"name":"Git"},{"name":"Monitoring"}],"paths":{"/api/v1/iocs/{ioc_id}/undeploy_in_db":{"put":{"tags":["IOCs"],"summary":"Undeploy in database","description":"Marks an IOC in database as undeployed - will not call AWX","operationId":"unDeployInDb","parameters":[{"name":"ioc_id","in":"path","description":"The id of the IOC to undeploy","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Undeployment created","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Deployment"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: user doesn't have the necessary permissions to undeploy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"422":{"description":"IOC is not deployed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"409":{"description":"Ongoing deployment, or undeployment for IOC","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/iocs":{"get":{"tags":["IOCs"],"summary":"List IOCs","operationId":"listIocs","parameters":[{"name":"deployment_status","in":"query","description":"IOC's current deployment status","required":false,"schema":{"type":"string","enum":["ALL","DEPLOYED","NOT_DEPLOYED"]}},{"name":"owner","in":"query","description":"User name","required":false,"schema":{"type":"string"}},{"name":"query","in":"query","description":"Search text (Search for Naming name, Owner)","required":false,"schema":{"type":"string"}},{"name":"order_by","in":"query","description":"Order by","required":false,"schema":{"type":"string","enum":["ID","OWNER","IOC_NAME"]}},{"name":"order_asc","in":"query","description":"Order Ascending","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","description":"Page offset","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Page size","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"A paged array of IOCs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedIocResponse"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}},"post":{"tags":["IOCs"],"summary":"Create a new IOC","operationId":"createIoc","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIoc"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"424":{"description":"Metadata file not found, or not processable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"400":{"description":"Incomplete request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"409":{"description":"IOC already created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: User doesn't have the necessary permissions in Gitlab","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"201":{"description":"IOC created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ioc"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/iocs/{ioc_id}/undeployment_job":{"post":{"tags":["IOCs"],"summary":"Create undeployment job","operationId":"createUndeployment","parameters":[{"name":"ioc_id","in":"path","description":"The id of the IOC to undeploy","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Undeployment"}}},"required":true},"responses":{"422":{"description":"IOC is not deployed correctly","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"201":{"description":"Undeployment created","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Deployment"}}}}},"403":{"description":"Forbidden: user doesn't have the necessary permissions in Gitlab","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"409":{"description":"Concurrent deployment, undeployment, start or stop for IOC is ongoing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/iocs/{ioc_id}/stop_job":{"post":{"tags":["IOCs"],"summary":"Create stop job for an existing IOC","operationId":"stopIoc","parameters":[{"name":"ioc_id","in":"path","description":"The id of the IOC to stop","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"IOC not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"201":{"description":"IOC stop initiated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdHocCommand"}}}},"409":{"description":"Concurrent deployment, undeployment, start or stop for IOC is ongoing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: User doesn't have the necessary permissions in Gitlab","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"422":{"description":"IOC has no active deployment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/iocs/{ioc_id}/start_job":{"post":{"tags":["IOCs"],"summary":"Create start job for an existing IOC","operationId":"startIoc","parameters":[{"name":"ioc_id","in":"path","description":"The id of the IOC to start","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"IOC not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"201":{"description":"IOC start initiated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdHocCommand"}}}},"409":{"description":"Concurrent deployment, undeployment, start or stop for IOC is ongoing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: User doesn't have the necessary permissions in Gitlab","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"422":{"description":"IOC has no active deployment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/iocs/{ioc_id}/deployment_job":{"post":{"tags":["IOCs"],"summary":"Create a deployment job for an existing IOC","operationId":"updateAndDeployIoc","parameters":[{"name":"ioc_id","in":"path","description":"The id of the IOC to deploy","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAndDeployIoc"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"IOC not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"424":{"description":"Metadata file not found, or not processable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"409":{"description":"Concurrent deployment, undeployment, start or stop for IOC is ongoing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"400":{"description":"Incomplete request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: User doesn't have the necessary permissions in Gitlab","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"201":{"description":"Deployment created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"422":{"description":"CSEntry host not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/awx/jobs":{"post":{"tags":["AWX"],"summary":"Update an AWX job's status","operationId":"updateJob","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AwxJobMeta"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Job not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Job updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"apiKey":[]}]}},"/api/v1/authentication/renew":{"post":{"tags":["Authentication"],"summary":"Renewing JWT token","description":"Renewing valid, non-expired JWT token","operationId":"tokenRenew","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Login server unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Ok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/authentication/login":{"post":{"tags":["Authentication"],"summary":"Login user and acquire JWT token","description":"Login user with username, and password in order to acquire JWT token","operationId":"login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Login"}}},"required":true},"responses":{"403":{"description":"User doesn't have permission to log in","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Login server unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Ok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"401":{"description":"Bad username, and/or password","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/iocs/{ioc_id}":{"get":{"tags":["IOCs"],"summary":"Find IOC details by ID","operationId":"getIoc","parameters":[{"name":"ioc_id","in":"path","description":"Unique ID of IOC","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Ioc not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Found IOC","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IocDetails"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}},"delete":{"tags":["IOCs"],"summary":"Deletes a single IOC based on the ID supplied","operationId":"deleteIoc","parameters":[{"name":"ioc_id","in":"path","description":"Id of IOC to delete","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"IOC not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"204":{"description":"IOC deleted","content":{"application/json":{"schema":{"type":"string"}}}},"409":{"description":"Concurrent deployment, undeployment, start or stop for IOC is ongoing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: User doesn't have the necessary permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["IOCs"],"summary":"Updating an IOC by ID","operationId":"updateIoc","parameters":[{"name":"ioc_id","in":"path","description":"Unique ID of IOC","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IOCUpdateRequest"}}},"required":true},"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Ioc not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"422":{"description":"Unprocessable request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Forbidden: User doesn't have the necessary permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"IOC updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ioc"}}}},"409":{"description":"IOC already created or concurrent deployment, undeployment, start or stop for IOC is ongoing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/healthcheck":{"get":{"tags":["health-check-controller"],"operationId":"getHealthCheck","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/api/v1/statistics/my_iocs":{"get":{"tags":["Statistics"],"summary":"Own IOCs' statistics","operationId":"personalStatistics","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Personal statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalStatisticsResponse"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/statistics/general":{"get":{"tags":["Statistics"],"summary":"Set of statistics","operationId":"generalStatistics","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Statistics about IOCs, deployments, and hosts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralStatisticsResponse"}}}}}}},"/api/v1/statistics/general/ioc_statistics":{"get":{"tags":["Statistics"],"summary":"IOC statistics","operationId":"iocStatistics","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Statistics about IOCs deployed to hosts","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentOnHost"}}}}}}}},"/api/v1/statistics/general/deployment_statistics":{"get":{"tags":["Statistics"],"summary":"Deployment statistics","operationId":"deploymentStatistics","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Statistics about IOCs, deployments, and hosts","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentStatisticsResponse"}}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/statistics/general/deployed_ioc_history":{"get":{"tags":["Statistics"],"summary":"Deployed IOC history from DB for statistics","operationId":"iocDeploymentHistory","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"History about deployed IOCs from DB for statistics","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActiveIOCSForHistoryResponse"}}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/statistics/general/active_ioc_statistics":{"get":{"tags":["Statistics"],"summary":"Currently active IOC statistics","operationId":"currentlyActiveIocs","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Statistics about currently active IOCs","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActiveIocStatisticsResponse"}}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/statistics/general/active_ioc_history":{"get":{"tags":["Statistics"],"summary":"Active IOC history from Prometheus for statistics","operationId":"activeIocHistory","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"History about active IOCs for statistics","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActiveIOCSForHistoryResponse"}}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/naming/ioc_names_by_name":{"get":{"tags":["Naming"],"summary":"Fetches IOC names by name from CCDB","operationId":"fetchIOCByName","parameters":[{"name":"ioc_name","in":"query","description":"IOC name","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Naming names, and IDs from CCDB","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NameResponse"}}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service unreachable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/monitoring/syslog/host/{host_name}":{"get":{"tags":["Monitoring"],"summary":"Fetches syslog lines for a specific host","operationId":"fetchSyslogLines","parameters":[{"name":"host_name","in":"path","description":"Host name (without network part)","required":true,"schema":{"type":"string"}},{"name":"time_range","in":"query","description":"Time range (in minutes)","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Log lines","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LokiResponse"}}}},"503":{"description":"Logging server unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/monitoring/status/{ioc_id}":{"get":{"tags":["Monitoring"],"summary":"Fetches the Prometheus status of the IOC","operationId":"fetchIocStatus","parameters":[{"name":"ioc_id","in":"path","description":"Unique ID of the IOC","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Log lines","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IocStatusResponse"}}}},"404":{"description":"Ioc not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/monitoring/procserv/host/{host_name}/{ioc_name}":{"get":{"tags":["Monitoring"],"summary":"Fetches procServ Log lines for a specific host","operationId":"fetchProcServLogLines","parameters":[{"name":"host_name","in":"path","description":"Host name (without network part)","required":true,"schema":{"type":"string"}},{"name":"ioc_name","in":"path","description":"Name of the IOC to get procServ logs","required":true,"schema":{"type":"string"}},{"name":"time_range","in":"query","description":"Time range (in minutes)","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Log lines","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LokiResponse"}}}},"503":{"description":"Logging server unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/iocs/my_iocs_with_alarms":{"get":{"tags":["IOCs"],"summary":"List own IOCs with alarms","operationId":"listOwnIocsWithAlarms","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Array of own IOC with alarms","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IocWithAlarm"}}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/hosts":{"get":{"tags":["Hosts"],"summary":"List CSEntry hosts","operationId":"listHosts","parameters":[{"name":"query","in":"query","description":"Search text, this query string is passed directly to Elasticsearch. E.g.: To search all hosts where the string \"archiver\" appears in any field, use \"archiver\".To restrict the search to only the name field, use \"name:archiver\".Note that if you pass \"name:arch\", this will not match archiver as elasticsearch uses keywords for string matching. In this case you’d need to use a wildcard: \"name:arch*\".","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page offset","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Page size","required":false,"schema":{"maximum":100,"type":"string"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"A paged array of CSEntry hosts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedCSEntryHostResponse"}}}},"503":{"description":"Remote server exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/hosts/{host_csentry_id}/with_status":{"get":{"tags":["Hosts"],"summary":"Find host by CSEntry ID and get status","operationId":"findHostById","parameters":[{"name":"host_csentry_id","in":"path","description":"Unique CSEntry ID of the host","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Found Host","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CSEntryHostWithStatus"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote server exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/hosts/{host_csentry_id}/iocs":{"get":{"tags":["Hosts"],"summary":"Find associated IOCs for the host","operationId":"findAssociatedIocsByHostId","parameters":[{"name":"host_csentry_id","in":"path","description":"Unique CSEntry ID of the host","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Page offset","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Page size","required":false,"schema":{"maximum":100,"type":"string"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Found Host","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedAssociatedIocs"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/hosts/{host_csentry_id}/info":{"get":{"tags":["Hosts"],"summary":"Find host by CSEntry ID","operationId":"findCSentryHostById","parameters":[{"name":"host_csentry_id","in":"path","description":"Unique CSEntry ID of the host","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Found Host","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TargetHost"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/git_helper/{project_id}/tags_and_commits":{"get":{"tags":["Git"],"summary":"List Tags and CommitIds","operationId":"listTagsAndCommitIds","parameters":[{"name":"project_id","in":"path","description":"Git repo project ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"reference","in":"query","description":"Git reference","required":false,"schema":{"type":"string"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"List of Tags and CommitIds for a specific GitLab repo","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GitReference"}}}}},"503":{"description":"Git exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/git_helper/{project_id}/tags_and_commits/search":{"get":{"tags":["Git"],"summary":"Searches Tags and Commits by reference","operationId":"searchTagsAndCommitsByRefName","parameters":[{"name":"project_id","in":"path","description":"Git repo project ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"reference","in":"query","description":"Git short reference","required":false,"schema":{"type":"string"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"List of Tags and CommitIds for a specific GitLab repo","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GitReference"}}}}},"503":{"description":"Git exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/git_helper/user_info":{"get":{"tags":["Git"],"summary":"Current-user information","operationId":"userInfo","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Information about the current user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInfoResponse"}}}},"503":{"description":"Git exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/git_helper/user_info/{user_name}":{"get":{"tags":["Git"],"summary":"User information","operationId":"infoFromUserName","parameters":[{"name":"user_name","in":"path","description":"The username to retrieve info from","required":true,"schema":{"type":"string"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Information about the current user","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserInfoResponse"}}}}},"503":{"description":"Git exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/git_helper/projects":{"get":{"tags":["Git"],"summary":"List IOC projects","operationId":"listProjects","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"List of Gitlab projects of allowed groups","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GitProject"}}}}},"503":{"description":"Git exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/deployments":{"get":{"tags":["Deployments"],"summary":"List deployments","operationId":"listDeployments","parameters":[{"name":"ioc_id","in":"query","description":"IOC ID","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"host_csentry_id","in":"query","description":"Host CSEntry ID","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"status","in":"query","description":"Status","required":false,"schema":{"type":"string","enum":["QUEUED","PENDING","RUNNING","SUCCESSFUL","FAILED","FINISHED"]}},{"name":"user","in":"query","description":"User name","required":false,"schema":{"type":"string"}},{"name":"query","in":"query","description":"Search text (Search for IOC name, IOC version, Host name, Description, Created by)","required":false,"schema":{"type":"string"}},{"name":"order_by","in":"query","description":"Order by","required":false,"schema":{"type":"string","enum":["ID","CREATED_BY","CREATED_AT","START_TIME","FINISHED_AT","IOC_NAME","GIT_REFERENCE"]}},{"name":"order_asc","in":"query","description":"Order Ascending","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","description":"Page offset","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Page size","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"A paged array of deployments","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedDeploymentResponse"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/deployments/{deployment_id}":{"get":{"tags":["Deployments"],"summary":"Get deployment details","operationId":"fetchDeployment","parameters":[{"name":"deployment_id","in":"path","description":"Unique ID of deployment","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Deployment not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"A deployment with details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentInfoDetails"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/deployments/jobs/{awx_job_id}":{"get":{"tags":["Deployments"],"summary":"Get deployment job details","operationId":"fetchDeploymentJobDetails","parameters":[{"name":"awx_job_id","in":"path","description":"Unique ID of AWX job","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"AWX job details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AwxJobDetails"}}}},"404":{"description":"Deployment not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/deployments/jobs/{awx_job_id}/log":{"get":{"tags":["Deployments"],"summary":"Get deployment job log","operationId":"fetchDeploymentJobLog","parameters":[{"name":"awx_job_id","in":"path","description":"Unique ID of AWX job","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"AWX job log","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AwxJobLog"}}}},"404":{"description":"Deployment not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/deployments/commands":{"get":{"tags":["Deployments"],"summary":"Get ad-hoc command list for a specific deployment","operationId":"listCommandsByDeployment","parameters":[{"name":"ioc_id","in":"query","description":"Unique ID of IOC","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"deployment_id","in":"query","description":"Unique ID of deployment","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Page offset","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Page size","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Deployment not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"A command with details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedCommandResponse"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/deployments/commands/{command_id}":{"get":{"tags":["Deployments"],"summary":"Get ad-hoc command","operationId":"fetchCommand","parameters":[{"name":"command_id","in":"path","description":"Unique ID of command","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"A command descriptor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdHocCommand"}}}},"404":{"description":"Ad-hoc command not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/deployments/commands/ongoing/{ioc_id}":{"get":{"tags":["Deployments"],"summary":"Get list of ongoing ad-hoc commands for a specific IOC","operationId":"ongoingCommandByIoc","parameters":[{"name":"ioc_id","in":"path","description":"Unique ID of the IOC","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"IOC not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Ongoing command (if exists)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdHocCommand"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/deployments/commands/jobs/{awx_command_id}":{"get":{"tags":["Deployments"],"summary":"Get ad-hoc command details","operationId":"fetchCommandDetails","parameters":[{"name":"awx_command_id","in":"path","description":"Unique ID of AWX command","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"A command with details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AwxCommandDetails"}}}},"503":{"description":"Remote service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"AWX command not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}}}},"/api/v1/broadcasts/announcements":{"get":{"tags":["Broadcasts"],"summary":"Get announcements","operationId":"fetchAnnouncements","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Announcements text","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Announcements"}}}}}}},"/api/v1/authentication/users":{"get":{"tags":["Authentication"],"summary":"Get Deployment Tool users","description":"Get Deployment Tool users from authorization service","operationId":"getToolUsers","parameters":[{"name":"query","in":"query","description":"User name query","required":false,"schema":{"type":"string"}}],"responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"404":{"description":"Role not found by authorization service","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Login server unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Ok","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/authentication/roles":{"get":{"tags":["Authentication"],"summary":"Get user roles","description":"Get user roles from authorization service","operationId":"getUserRoles","responses":{"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"503":{"description":"Login server unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Ok","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/authentication/logout":{"delete":{"tags":["Authentication"],"summary":"Logout","description":"Logging out the user","operationId":"logout","responses":{"503":{"description":"Login server unavailable or remote error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}},"200":{"description":"Ok","content":{"application/json":{"schema":{"type":"object"}}}},"500":{"description":"Service exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralException"}}}}},"security":[{"bearerAuth":[]}]}}},"components":{"schemas":{"Deployment":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"createdBy":{"type":"string"},"startDate":{"type":"string","format":"date-time"},"undeployment":{"type":"boolean"},"namingName":{"type":"string"},"gitProjectId":{"type":"integer","format":"int64"},"sourceVersion":{"type":"string"},"endDate":{"type":"string","format":"date-time"},"comment":{"type":"string"},"iocName":{"type":"string"},"host":{"$ref":"#/components/schemas/Host"},"status":{"type":"string","enum":["PENDING","JOB","QUEUED","ERROR"]},"awxJobId":{"type":"integer","format":"int64"},"sourceUrl":{"type":"string"},"sourceVersionShort":{"type":"string"},"jobStatus":{"type":"string","enum":["pending","waiting","running","failed","canceled","successful"]}}},"Host":{"type":"object","properties":{"csEntryId":{"type":"integer","format":"int64"},"csEntryIdValid":{"type":"boolean"},"fqdn":{"type":"string"},"hostName":{"type":"string"},"network":{"type":"string"}}},"GeneralException":{"type":"object","properties":{"error":{"type":"string"},"description":{"type":"string"}}},"CreateIoc":{"type":"object","properties":{"externalNameId":{"type":"integer","format":"int64"},"gitProjectId":{"type":"integer","format":"int64"}},"description":"IOC to create"},"Alert":{"type":"object","properties":{"type":{"type":"string","enum":["ERROR","WARNING","INFO"]},"message":{"type":"string"},"link":{"type":"string"}}},"Ioc":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"description":{"type":"string"},"owner":{"type":"string"},"namingName":{"type":"string"},"externalNameId":{"type":"integer","format":"int64"},"gitProjectId":{"type":"integer","format":"int64"},"sourceUrl":{"type":"string"},"sourceVersion":{"type":"string"},"sourceVersionShort":{"type":"string"},"activeDeployment":{"$ref":"#/components/schemas/Deployment"},"alerts":{"type":"array","items":{"$ref":"#/components/schemas/Alert"}},"active":{"type":"boolean"}}},"Undeployment":{"type":"object","properties":{"comment":{"type":"string"}},"description":"Undeployment parameters"},"AdHocCommand":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"type":{"type":"string","enum":["START","STOP"]},"createdBy":{"type":"string"},"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["pending","waiting","running","failed","canceled","successful"]},"iocName":{"type":"string"},"awxCommandId":{"type":"integer","format":"int64"}}},"UpdateAndDeployIoc":{"type":"object","properties":{"comment":{"type":"string"},"sourceVersion":{"type":"string"},"hostCSEntryId":{"type":"integer","format":"int64"}},"description":"IOC to update"},"AwxJobMeta":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"started":{"type":"string","format":"date-time"},"finished":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["pending","waiting","running","failed","canceled","successful"]}},"description":"Job to update"},"LoginResponse":{"type":"object","properties":{"token":{"type":"string"}}},"Login":{"type":"object","properties":{"userName":{"type":"string"},"password":{"type":"string"}}},"IOCUpdateRequest":{"type":"object","properties":{"owner":{"type":"string"},"externalNameId":{"type":"integer","format":"int64"},"gitProjectId":{"type":"integer","format":"int64"}}},"PersonalStatisticsResponse":{"type":"object","properties":{"numberOfActiveIocs":{"type":"integer","format":"int64"}}},"GeneralStatisticsResponse":{"type":"object","properties":{"numberOfActiveHosts":{"type":"integer","format":"int64"},"numberOfCreatedIocs":{"type":"integer","format":"int64"},"numberOfActiveIocs":{"type":"integer","format":"int64"},"numberOfDeployments":{"type":"integer","format":"int64"},"numberOfActiveDeployments":{"type":"integer","format":"int64"},"numberOfHostsWithIssue":{"type":"integer","format":"int64"},"numberOfIocHostsOnTechnicalNetwork":{"type":"integer","format":"int64"},"numberOfIocHostsWithIocsDeployed":{"type":"integer","format":"int64"},"networkScopesIocCount":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}}},"DeploymentCount":{"type":"object","properties":{"iocCount":{"type":"integer","format":"int64"},"countingDate":{"type":"string","format":"date-time"}}},"DeploymentOnHost":{"type":"object","properties":{"network":{"type":"string"},"deployments":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentCount"}}}},"DeploymentStatisticsResponse":{"type":"object","properties":{"deploymentDate":{"type":"string","format":"date-time"},"numberOfDeployments":{"type":"integer","format":"int64"},"successfulDeployments":{"type":"integer","format":"int64"}}},"ActiveIOCSForHistoryResponse":{"type":"object","properties":{"iocCount":{"type":"integer","format":"int64"},"historyDate":{"type":"string","format":"date-time"}}},"ActiveIocStatisticsResponse":{"type":"object","properties":{"network":{"type":"string"},"iocCount":{"type":"integer","format":"int64"}}},"NameResponse":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string"}}},"LokiMessage":{"type":"object","properties":{"logDate":{"type":"string","format":"date-time"},"logMessage":{"type":"string"}}},"LokiResponse":{"type":"object","properties":{"lines":{"type":"array","items":{"$ref":"#/components/schemas/LokiMessage"}}}},"IocStatusResponse":{"type":"object","properties":{"iocId":{"type":"integer","format":"int64"},"alertSeverity":{"type":"string","enum":["ERROR","WARNING","INFO"]},"alerts":{"type":"array","items":{"$ref":"#/components/schemas/Alert"}},"active":{"type":"boolean"}}},"ActiveDeployment":{"type":"object","properties":{"host":{"$ref":"#/components/schemas/DeploymentHostInfo"}}},"DeploymentHostInfo":{"type":"object","properties":{"externalHostId":{"type":"integer","format":"int64"}}},"IocInfo":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"namingName":{"type":"string"},"owner":{"type":"string"},"gitProjectId":{"type":"integer","format":"int64"},"sourceVersion":{"type":"string"},"activeDeployment":{"$ref":"#/components/schemas/ActiveDeployment"}}},"PagedIocResponse":{"type":"object","properties":{"totalCount":{"type":"integer","format":"int64"},"listSize":{"type":"integer","format":"int32"},"pageNumber":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"iocList":{"type":"array","items":{"$ref":"#/components/schemas/IocInfo"}}}},"IocDetails":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"description":{"type":"string"},"owner":{"type":"string"},"namingName":{"type":"string"},"externalNameId":{"type":"integer","format":"int64"},"gitProjectId":{"type":"integer","format":"int64"},"sourceUrl":{"type":"string"},"sourceVersion":{"type":"string"},"sourceVersionShort":{"type":"string"},"activeDeployment":{"$ref":"#/components/schemas/Deployment"},"alerts":{"type":"array","items":{"$ref":"#/components/schemas/Alert"}},"operationInProgress":{"type":"boolean"},"active":{"type":"boolean"}}},"IocWithAlarm":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"description":{"type":"string"},"owner":{"type":"string"},"namingName":{"type":"string"},"externalNameId":{"type":"integer","format":"int64"},"gitProjectId":{"type":"integer","format":"int64"},"sourceUrl":{"type":"string"},"sourceVersion":{"type":"string"},"sourceVersionShort":{"type":"string"},"activeDeployment":{"$ref":"#/components/schemas/Deployment"},"alerts":{"type":"array","items":{"$ref":"#/components/schemas/Alert"}},"alert":{"type":"string","enum":["ERROR","WARNING","INFO"]},"active":{"type":"boolean"}}},"HostInfo":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"fqdn":{"type":"string"},"name":{"type":"string"},"scope":{"type":"string"},"description":{"type":"string"},"network":{"type":"string"},"deviceType":{"type":"string"}}},"HostInfoWithStatus":{"type":"object","properties":{"csEntryHost":{"$ref":"#/components/schemas/HostInfo"},"status":{"type":"string","enum":["AVAILABLE","UNREACHABLE"]},"alert":{"type":"string","enum":["ERROR","WARNING","INFO"]}}},"PagedCSEntryHostResponse":{"type":"object","properties":{"totalCount":{"type":"integer","format":"int64"},"listSize":{"type":"integer","format":"int32"},"pageNumber":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"csEntryHosts":{"type":"array","items":{"$ref":"#/components/schemas/HostInfoWithStatus"}}}},"CSEntryHost":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"fqdn":{"type":"string"},"name":{"type":"string"},"scope":{"type":"string"},"description":{"type":"string"},"user":{"type":"string"},"interfaces":{"type":"array","items":{"$ref":"#/components/schemas/CSEntryInterface"}},"is_ioc":{"type":"boolean"},"device_type":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"ansible_vars":{"type":"object","additionalProperties":{"type":"object"}},"ansible_groups":{"type":"array","items":{"type":"string"}}}},"CSEntryHostWithStatus":{"type":"object","properties":{"csEntryHost":{"$ref":"#/components/schemas/CSEntryHost"},"assigned":{"type":"boolean"},"status":{"type":"string","enum":["AVAILABLE","UNREACHABLE"]},"alerts":{"type":"array","items":{"$ref":"#/components/schemas/Alert"}}}},"CSEntryInterface":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"network":{"type":"string"},"domain":{"type":"string"},"ip":{"type":"string"},"mac":{"type":"string"},"host":{"type":"string"},"cnames":{"type":"array","items":{"type":"string"}},"is_main":{"type":"boolean"}}},"PagedAssociatedIocs":{"type":"object","properties":{"totalCount":{"type":"integer","format":"int64"},"listSize":{"type":"integer","format":"int32"},"pageNumber":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"deployedIocs":{"type":"array","items":{"$ref":"#/components/schemas/IocInfo"}}}},"TargetHost":{"type":"object","properties":{"externalId":{"type":"integer","format":"int64"},"fqdn":{"type":"string"},"hostName":{"type":"string"},"network":{"type":"string"}}},"GitReference":{"type":"object","properties":{"reference":{"type":"string"},"shortReference":{"type":"string"},"description":{"type":"string"},"commitDate":{"type":"string","format":"date-time"}}},"UserInfoResponse":{"type":"object","properties":{"fullName":{"type":"string"},"loginName":{"type":"string"},"avatar":{"type":"string"},"email":{"type":"string"},"gitlabUserName":{"type":"string"}}},"GitProject":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"url":{"type":"string"}}},"DeploymentInfo":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"createdBy":{"type":"string"},"startDate":{"type":"string","format":"date-time"},"undeployment":{"type":"boolean"},"namingName":{"type":"string"},"gitProjectId":{"type":"integer","format":"int64"},"sourceVersion":{"type":"string"},"host":{"$ref":"#/components/schemas/DeploymentHostInfo"}}},"PagedDeploymentResponse":{"type":"object","properties":{"totalCount":{"type":"integer","format":"int64"},"listSize":{"type":"integer","format":"int32"},"pageNumber":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"deployments":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentInfo"}}}},"DeploymentInfoDetails":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"createdBy":{"type":"string"},"startDate":{"type":"string","format":"date-time"},"undeployment":{"type":"boolean"},"namingName":{"type":"string"},"gitProjectId":{"type":"integer","format":"int64"},"sourceVersion":{"type":"string"},"endDate":{"type":"string","format":"date-time"},"comment":{"type":"string"},"host":{"$ref":"#/components/schemas/HostWithFqdn"},"status":{"type":"string","enum":["PENDING","JOB","QUEUED","ERROR"]},"awxJobId":{"type":"integer","format":"int64"},"iocId":{"type":"integer","format":"int64"},"awxJobUrl":{"type":"string"},"sourceUrl":{"type":"string"},"sourceVersionShort":{"type":"string"}}},"HostWithFqdn":{"type":"object","properties":{"csEntryId":{"type":"integer","format":"int64"},"csEntryIdValid":{"type":"boolean"},"fqdn":{"type":"string"}}},"AwxJobDetails":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"status":{"type":"string","enum":["pending","waiting","running","failed","canceled","successful"]},"started":{"type":"string","format":"date-time"},"finished":{"type":"string","format":"date-time"}}},"AwxJobLog":{"type":"object","properties":{"awxJobId":{"type":"integer","format":"int64"},"stdoutHtml":{"type":"string"},"elapsed":{"type":"number","format":"double"}}},"PagedCommandResponse":{"type":"object","properties":{"totalCount":{"type":"integer","format":"int64"},"listSize":{"type":"integer","format":"int32"},"pageNumber":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"commands":{"type":"array","items":{"$ref":"#/components/schemas/AdHocCommand"}}}},"AwxCommandDetails":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"status":{"type":"string","enum":["pending","waiting","running","failed","canceled","successful"]},"started":{"type":"string","format":"date-time"},"finished":{"type":"string","format":"date-time"}}},"Announcements":{"type":"object","properties":{"announcementsText":{"type":"string"}}}},"securitySchemes":{"apiKey":{"type":"apiKey","name":"CCCE-TOKEN","in":"header"},"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}}}
\ No newline at end of file