{
  "components": {
    "responses": {
      "BenchmarksListResponse": {
        "content": {
          "application/json": {
            "schema": {
              "items": {
                "$ref": "#/components/schemas/Benchmark"
              },
              "type": "array"
            }
          }
        },
        "description": "BenchmarksListResponse is the response for a list benchmarks request."
      },
      "CreateCustomScanResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "created_at": {
                  "description": "The time at which the scan was created.",
                  "example": "2023-09-25T13:57:16.743Z",
                  "format": "date-time",
                  "type": "string"
                },
                "errored": {
                  "description": "The number of nodes that errored in scan.",
                  "example": 0,
                  "format": "uint64",
                  "type": "integer"
                },
                "failed": {
                  "description": "The number of nodes that failed in scan.",
                  "example": 0,
                  "format": "uint64",
                  "type": "integer"
                },
                "finished": {
                  "description": "The number of nodes that finished in scan.",
                  "example": 100,
                  "format": "uint64",
                  "type": "integer"
                },
                "finished_at": {
                  "description": "The time at which the scan finished.",
                  "example": "2023-09-25T13:57:16.743Z",
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                },
                "id": {
                  "description": "The ID of the scan.",
                  "example": "123",
                  "type": "string"
                },
                "name": {
                  "description": "The name of the scan.",
                  "example": "Scan 1",
                  "type": "string"
                },
                "nodes_scanned": {
                  "description": "The number of nodes scanned.",
                  "example": 100,
                  "format": "uint64",
                  "type": "integer"
                },
                "status": {
                  "description": "The status of the inventory sync job.",
                  "enum": [
                    "started",
                    "finished",
                    "failed"
                  ],
                  "example": "finished",
                  "type": "string"
                },
                "type": {
                  "description": "The type of scan.",
                  "example": "desired",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "name",
                "created_at",
                "nodes_scanned",
                "type",
                "status",
                "failed",
                "errored",
                "finished"
              ],
              "type": "object"
            }
          }
        },
        "description": "CreateCustomScanResponse represents the response to a scan request."
      },
      "CreateDesiredScanResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "created_at": {
                  "description": "The time at which the scan was created.",
                  "example": "2023-09-25T13:57:16.743Z",
                  "format": "date-time",
                  "type": "string"
                },
                "errored": {
                  "description": "The number of nodes that errored in scan.",
                  "example": 0,
                  "format": "uint64",
                  "type": "integer"
                },
                "failed": {
                  "description": "The number of nodes that failed in scan.",
                  "example": 0,
                  "format": "uint64",
                  "type": "integer"
                },
                "finished": {
                  "description": "The number of nodes that finished in scan.",
                  "example": 100,
                  "format": "uint64",
                  "type": "integer"
                },
                "finished_at": {
                  "description": "The time at which the scan finished.",
                  "example": "2023-09-25T13:57:16.743Z",
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                },
                "id": {
                  "description": "The ID of the scan.",
                  "example": "123",
                  "type": "string"
                },
                "name": {
                  "description": "The name of the scan.",
                  "example": "Scan 1",
                  "type": "string"
                },
                "nodes_scanned": {
                  "description": "The number of nodes scanned.",
                  "example": 100,
                  "format": "uint64",
                  "type": "integer"
                },
                "status": {
                  "description": "The status of the inventory sync job.",
                  "enum": [
                    "started",
                    "finished",
                    "failed"
                  ],
                  "example": "finished",
                  "type": "string"
                },
                "type": {
                  "description": "The type of scan.",
                  "example": "desired",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "name",
                "created_at",
                "nodes_scanned",
                "type",
                "status",
                "failed",
                "errored",
                "finished"
              ],
              "type": "object"
            }
          }
        },
        "description": "CreateDesiredScanResponse represents the response to a scan request."
      },
      "CreateExportJobResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "created_at": {
                  "description": "The time at which the export job was created.",
                  "example": "2023-09-25T13:57:16.743Z",
                  "format": "date-time",
                  "type": "string"
                },
                "description": {
                  "description": "A description of the export to be generated.",
                  "example": "Compliance summary for production Red Hat nodes.",
                  "type": "string"
                },
                "export_file_location": {
                  "description": "The location of the generated export file for download, if the export job has finished successfully.",
                  "example": "/api/public/v1/export/456/file",
                  "nullable": true,
                  "type": "string"
                },
                "id": {
                  "description": "The ID of the export job.",
                  "example": 123,
                  "format": "uint64",
                  "type": "integer"
                },
                "name": {
                  "description": "The name of the export to be generated.",
                  "example": "compliance_summary_production_redhat",
                  "type": "string"
                },
                "node_filters": {
                  "$ref": "#/components/schemas/NodeFilters"
                },
                "status": {
                  "description": "The status of the export job.",
                  "enum": [
                    "queued",
                    "processing",
                    "successful",
                    "failed"
                  ],
                  "example": "successful",
                  "type": "string"
                },
                "type": {
                  "description": "The type of export to be generated.",
                  "enum": [
                    "compliance_status_detailed",
                    "compliance_status_summary"
                  ],
                  "example": "compliance_status_summary",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "created_at",
                "name",
                "description",
                "type",
                "node_filters",
                "status"
              ],
              "type": "object"
            }
          }
        },
        "description": "CreateExportJobResponse represents the response to a create export job request.",
        "headers": {
          "location": {
            "description": "Specifies the location of the created `export-job`.",
            "schema": {
              "type": "string"
            }
          }
        }
      },
      "CreateInventoryJobResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "created_at": {
                  "description": "The time at which the inventory sync job was created.",
                  "example": "2023-09-25T13:57:16.743Z",
                  "format": "date-time",
                  "type": "string"
                },
                "finished_at": {
                  "description": "The time at which the inventory sync job finished.",
                  "example": "2023-09-25T13:57:16.743Z",
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                },
                "id": {
                  "description": "The ID of the inventory sync job.",
                  "example": 123,
                  "format": "uint64",
                  "type": "integer"
                },
                "nodes_deleted": {
                  "description": "The number of nodes deleted as part of the inventory sync job.",
                  "example": 0,
                  "format": "uint64",
                  "type": "integer"
                },
                "nodes_synced": {
                  "description": "The number of nodes synced as part of the inventory sync job.",
                  "example": 100,
                  "format": "uint64",
                  "type": "integer"
                },
                "reason": {
                  "description": "The reason for failure of inventory sync job, if any.",
                  "example": "null",
                  "type": "string"
                },
                "status": {
                  "description": "The status of the inventory sync job.",
                  "enum": [
                    "started",
                    "successful",
                    "failed",
                    "aborted"
                  ],
                  "example": "successful",
                  "type": "string"
                },
                "total_nodes": {
                  "description": "The total number of nodes in the inventory.",
                  "example": 100,
                  "format": "uint64",
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "created_at",
                "nodes_deleted",
                "nodes_synced",
                "reason",
                "status",
                "total_nodes"
              ],
              "type": "object"
            }
          }
        },
        "description": "CreateInventoryJobResponse represents the response to a create inventory sync job request."
      },
      "CustomProfileNotFound": {
        "description": "CustomProfileNotFound is returned when profile with provided id does not exist."
      },
      "CustomProfilesListResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "data": {
                  "description": "Data contains list of custom profiles records.",
                  "items": {
                    "$ref": "#/components/schemas/CustomProfile"
                  },
                  "type": "array"
                },
                "limit": {
                  "description": "If specified limit, you retrieve a subset of records limited to the given value..",
                  "example": 10,
                  "format": "int64",
                  "type": "integer"
                },
                "next": {
                  "description": "Next page value .",
                  "example": "/api/public/v_/_api_?offset=10&limit=10",
                  "nullable": true,
                  "type": "string"
                },
                "offset": {
                  "description": "Offset is the position in the dataset of a particular record.\nBy specifying offset, you retrieve a subset of records starting with the offset value.",
                  "example": 0,
                  "format": "int64",
                  "type": "integer"
                },
                "total": {
                  "description": "Total number of records.",
                  "example": 123,
                  "format": "int64",
                  "type": "integer"
                }
              },
              "required": [
                "total",
                "data"
              ],
              "type": "object"
            }
          }
        },
        "description": "CustomProfilesListResponse is the response for a custom profiles list."
      },
      "ErrorResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "error": {
                  "description": "The specific error detail. This field is optional, as additional detail is only provided for some errors.",
                  "example": "Required field 'type' is missing",
                  "type": "string"
                },
                "message": {
                  "description": "A general message about the nature of the error.",
                  "example": "Request does not match API specification",
                  "type": "string"
                }
              },
              "required": [
                "message"
              ],
              "type": "object"
            }
          }
        },
        "description": "ErrorResponse is the default error response."
      },
      "ExportsListResponse": {
        "content": {
          "application/json": {
            "schema": {
              "items": {
                "$ref": "#/components/schemas/export"
              },
              "type": "array"
            }
          }
        },
        "description": "ExportsListResponse is the response for a list exports request."
      },
      "GetBenchmarkResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "compatible_operating_systems": {
                  "description": "The operating systems compatible with the benchmark.",
                  "items": {
                    "$ref": "#/components/schemas/OperatingSystem"
                  },
                  "type": "array"
                },
                "id": {
                  "description": "The ID of the benchmark.",
                  "example": 22,
                  "format": "uint64",
                  "type": "integer"
                },
                "name": {
                  "description": "The name of the benchmark.",
                  "example": "3.0.0 CIS Apple macOS 12.0 Monterey",
                  "type": "string"
                },
                "profiles": {
                  "description": "The profiles associated with the benchmark.",
                  "items": {
                    "$ref": "#/components/schemas/Profile"
                  },
                  "type": "array"
                }
              },
              "required": [
                "id",
                "name",
                "profiles",
                "compatible_operating_systems"
              ],
              "type": "object"
            }
          }
        },
        "description": "GetBenchmarkResponse is the response for a get benchmark request."
      },
      "GetCustomProfileResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "id": {
                  "description": "The ID of the custom profile.",
                  "example": 123,
                  "format": "uint64",
                  "type": "integer"
                },
                "name": {
                  "description": "The name of the profile.",
                  "example": "Custom Profile Name",
                  "type": "string"
                },
                "profile": {
                  "$ref": "#/components/schemas/Profile"
                }
              },
              "required": [
                "name",
                "id"
              ],
              "type": "object"
            }
          }
        },
        "description": "GetCustomProfileResponse is the response for a custom profile."
      },
      "GetExportJobResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "created_at": {
                  "description": "The time at which the export job was created.",
                  "example": "2023-09-25T13:57:16.743Z",
                  "format": "date-time",
                  "type": "string"
                },
                "description": {
                  "description": "A description of the export to be generated.",
                  "example": "Compliance summary for production Red Hat nodes.",
                  "type": "string"
                },
                "export_file_location": {
                  "description": "The location of the generated export file for download, if the export job has finished successfully.",
                  "example": "/api/public/v1/export/456/file",
                  "nullable": true,
                  "type": "string"
                },
                "id": {
                  "description": "The ID of the export job.",
                  "example": 123,
                  "format": "uint64",
                  "type": "integer"
                },
                "name": {
                  "description": "The name of the export to be generated.",
                  "example": "compliance_summary_production_redhat",
                  "type": "string"
                },
                "node_filters": {
                  "$ref": "#/components/schemas/NodeFilters"
                },
                "status": {
                  "description": "The status of the export job.",
                  "enum": [
                    "queued",
                    "processing",
                    "successful",
                    "failed"
                  ],
                  "example": "successful",
                  "type": "string"
                },
                "type": {
                  "description": "The type of export to be generated.",
                  "enum": [
                    "compliance_status_detailed",
                    "compliance_status_summary"
                  ],
                  "example": "compliance_status_summary",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "created_at",
                "name",
                "description",
                "type",
                "node_filters",
                "status"
              ],
              "type": "object"
            }
          }
        },
        "description": "GetExportJobResponse is the response for a get export job request."
      },
      "GetInventorySyncJobResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "created_at": {
                  "description": "The time at which the inventory sync job was created.",
                  "example": "2023-09-25T13:57:16.743Z",
                  "format": "date-time",
                  "type": "string"
                },
                "finished_at": {
                  "description": "The time at which the inventory sync job finished.",
                  "example": "2023-09-25T13:57:16.743Z",
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                },
                "id": {
                  "description": "The ID of the inventory sync job.",
                  "example": 123,
                  "format": "uint64",
                  "type": "integer"
                },
                "nodes_deleted": {
                  "description": "The number of nodes deleted as part of the inventory sync job.",
                  "example": 0,
                  "format": "uint64",
                  "type": "integer"
                },
                "nodes_synced": {
                  "description": "The number of nodes synced as part of the inventory sync job.",
                  "example": 100,
                  "format": "uint64",
                  "type": "integer"
                },
                "reason": {
                  "description": "The reason for failure of inventory sync job, if any.",
                  "example": "null",
                  "type": "string"
                },
                "status": {
                  "description": "The status of the inventory sync job.",
                  "enum": [
                    "started",
                    "successful",
                    "failed",
                    "aborted"
                  ],
                  "example": "successful",
                  "type": "string"
                },
                "total_nodes": {
                  "description": "The total number of nodes in the inventory.",
                  "example": 100,
                  "format": "uint64",
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "created_at",
                "nodes_deleted",
                "nodes_synced",
                "reason",
                "status",
                "total_nodes"
              ],
              "type": "object"
            }
          }
        },
        "description": "GetInventorySyncJobResponse is the response for a get inventory sync job request."
      },
      "GetProfileResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "benchmark": {
                  "$ref": "#/components/schemas/AssociatedBenchmark"
                },
                "id": {
                  "description": "The ID of the profile.",
                  "example": 123,
                  "format": "uint64",
                  "type": "integer"
                },
                "name": {
                  "description": "The name of the profile.",
                  "example": "Level 1 - Server",
                  "type": "string"
                }
              },
              "required": [
                "name",
                "id"
              ],
              "type": "object"
            }
          }
        },
        "description": "GetProfileResponse is the response for a profile."
      },
      "GetScanResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "created_at": {
                  "description": "The time at which the scan was created.",
                  "example": "2023-09-25T13:57:16.743Z",
                  "format": "date-time",
                  "type": "string"
                },
                "errored": {
                  "description": "The number of nodes that errored in scan.",
                  "example": 0,
                  "format": "uint64",
                  "type": "integer"
                },
                "failed": {
                  "description": "The number of nodes that failed in scan.",
                  "example": 0,
                  "format": "uint64",
                  "type": "integer"
                },
                "finished": {
                  "description": "The number of nodes that finished in scan.",
                  "example": 100,
                  "format": "uint64",
                  "type": "integer"
                },
                "finished_at": {
                  "description": "The time at which the scan finished.",
                  "example": "2023-09-25T13:57:16.743Z",
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                },
                "id": {
                  "description": "The ID of the scan.",
                  "example": "123",
                  "type": "string"
                },
                "name": {
                  "description": "The name of the scan.",
                  "example": "Scan 1",
                  "type": "string"
                },
                "nodes_scanned": {
                  "description": "The number of nodes scanned.",
                  "example": 100,
                  "format": "uint64",
                  "type": "integer"
                },
                "status": {
                  "description": "The status of the inventory sync job.",
                  "enum": [
                    "started",
                    "finished",
                    "failed"
                  ],
                  "example": "finished",
                  "type": "string"
                },
                "type": {
                  "description": "The type of scan.",
                  "example": "desired",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "name",
                "created_at",
                "nodes_scanned",
                "type",
                "status",
                "failed",
                "errored",
                "finished"
              ],
              "type": "object"
            }
          }
        },
        "description": "GetScanResponse is the response for a scan."
      },
      "HostsFilteredListResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "data": {
                  "description": "Data contains list of hosts records.",
                  "items": {
                    "$ref": "#/components/schemas/host"
                  },
                  "type": "array"
                },
                "limit": {
                  "description": "If specified limit, you retrieve a subset of records limited to the given value..",
                  "example": 10,
                  "format": "int64",
                  "type": "integer"
                },
                "next": {
                  "description": "Next page value .",
                  "example": "/api/public/v_/_api_?offset=10&limit=10",
                  "nullable": true,
                  "type": "string"
                },
                "offset": {
                  "description": "Offset is the position in the dataset of a particular record.\nBy specifying offset, you retrieve a subset of records starting with the offset value.",
                  "example": 0,
                  "format": "int64",
                  "type": "integer"
                },
                "total": {
                  "description": "Total number of records.",
                  "example": 123,
                  "format": "int64",
                  "type": "integer"
                }
              },
              "required": [
                "total",
                "data"
              ],
              "type": "object"
            }
          }
        },
        "description": "HostsFilteredListResponse is the response for a list hosts request with filter."
      },
      "HostsListResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "data": {
                  "description": "Data contains list of hosts records.",
                  "items": {
                    "$ref": "#/components/schemas/host"
                  },
                  "type": "array"
                },
                "limit": {
                  "description": "If specified limit, you retrieve a subset of records limited to the given value..",
                  "example": 10,
                  "format": "int64",
                  "type": "integer"
                },
                "next": {
                  "description": "Next page value .",
                  "example": "/api/public/v_/_api_?offset=10&limit=10",
                  "nullable": true,
                  "type": "string"
                },
                "offset": {
                  "description": "Offset is the position in the dataset of a particular record.\nBy specifying offset, you retrieve a subset of records starting with the offset value.",
                  "example": 0,
                  "format": "int64",
                  "type": "integer"
                },
                "total": {
                  "description": "Total number of records.",
                  "example": 123,
                  "format": "int64",
                  "type": "integer"
                }
              },
              "required": [
                "total",
                "data"
              ],
              "type": "object"
            }
          }
        },
        "description": "HostsListResponse is the response for a list hosts request."
      },
      "InventoryJobNotFound": {
        "description": "InventoryJobNotFound is returned when inventory sync job with provided id does not exist."
      },
      "ManageDefaultDesiredComplianceResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "message": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "ManageDefaultDesiredComplianceResponse is the response for setting a default desired compliance."
      },
      "NoNodesToScanResponse": {
        "description": "NoNodesToScanResponse is returned when input to scan request did not match any nodes"
      },
      "OperatingSystemsListResponse": {
        "content": {
          "application/json": {
            "schema": {
              "items": {
                "$ref": "#/components/schemas/OperatingSystem"
              },
              "type": "array"
            }
          }
        },
        "description": "OperatingSystemsListResponse is the response for a list operating-systems request."
      },
      "ProfileNotFound": {
        "description": "ProfileNotFound is returned when profile with provided id does not exist."
      },
      "ProfilesListResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "data": {
                  "description": "Data contains list of profiles records.",
                  "items": {
                    "$ref": "#/components/schemas/Profile"
                  },
                  "type": "array"
                },
                "limit": {
                  "description": "If specified limit, you retrieve a subset of records limited to the given value..",
                  "example": 10,
                  "format": "int64",
                  "type": "integer"
                },
                "next": {
                  "description": "Next page value .",
                  "example": "/api/public/v_/_api_?offset=10&limit=10",
                  "nullable": true,
                  "type": "string"
                },
                "offset": {
                  "description": "Offset is the position in the dataset of a particular record.\nBy specifying offset, you retrieve a subset of records starting with the offset value.",
                  "example": 0,
                  "format": "int64",
                  "type": "integer"
                },
                "total": {
                  "description": "Total number of records.",
                  "example": 123,
                  "format": "int64",
                  "type": "integer"
                }
              },
              "required": [
                "total",
                "data"
              ],
              "type": "object"
            }
          }
        },
        "description": "ProfilesListResponse is the response for a profiles list."
      },
      "ScanListResponse": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "data": {
                  "description": "Data contains list of scans records.",
                  "items": {
                    "$ref": "#/components/schemas/scan"
                  },
                  "type": "array"
                },
                "limit": {
                  "description": "If specified limit, you retrieve a subset of records limited to the given value..",
                  "example": 10,
                  "format": "int64",
                  "type": "integer"
                },
                "next": {
                  "description": "Next page value .",
                  "example": "/api/public/v_/_api_?offset=10&limit=10",
                  "nullable": true,
                  "type": "string"
                },
                "offset": {
                  "description": "Offset is the position in the dataset of a particular record.\nBy specifying offset, you retrieve a subset of records starting with the offset value.",
                  "example": 0,
                  "format": "int64",
                  "type": "integer"
                },
                "total": {
                  "description": "Total number of records.",
                  "example": 123,
                  "format": "int64",
                  "type": "integer"
                }
              },
              "required": [
                "total",
                "data"
              ],
              "type": "object"
            }
          }
        },
        "description": "ScanListResponse is the response for a scan list."
      },
      "ScanNotFound": {
        "description": "ScanNotFound is returned when scan with provided id does not exist."
      },
      "TooManyInventoryRequestsResponse": {
        "description": "TooManyInventoryRequestsResponse is returned when inventory sync is already in progress"
      }
    },
    "schemas": {
      "AssociatedBenchmark": {
        "properties": {
          "id": {
            "description": "The ID of the benchmark.",
            "example": 123,
            "format": "uint64",
            "type": "integer"
          },
          "name": {
            "description": "The Name of the benchmark.",
            "example": "3.1.2 CIS CentOS Linux 7",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "title": "AssociatedBenchmark represents a benchmark associated with a profile.",
        "type": "object"
      },
      "Benchmark": {
        "properties": {
          "compatible_operating_systems": {
            "description": "The operating systems compatible with the benchmark.",
            "items": {
              "$ref": "#/components/schemas/OperatingSystem"
            },
            "type": "array"
          },
          "id": {
            "description": "The ID of the benchmark.",
            "example": 22,
            "format": "uint64",
            "type": "integer"
          },
          "name": {
            "description": "The name of the benchmark.",
            "example": "3.0.0 CIS Apple macOS 12.0 Monterey",
            "type": "string"
          },
          "profiles": {
            "description": "The profiles associated with the benchmark.",
            "items": {
              "$ref": "#/components/schemas/Profile"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "profiles",
          "compatible_operating_systems"
        ],
        "title": "Benchmark represents a benchmark.",
        "type": "object"
      },
      "CustomProfile": {
        "properties": {
          "id": {
            "description": "The ID of the custom profile.",
            "example": 123,
            "format": "uint64",
            "type": "integer"
          },
          "name": {
            "description": "The name of the profile.",
            "example": "Custom Profile Name",
            "type": "string"
          },
          "profile": {
            "$ref": "#/components/schemas/Profile"
          }
        },
        "required": [
          "name",
          "id"
        ],
        "title": "CustomProfile represents a custom profile.",
        "type": "object"
      },
      "NodeFilters": {
        "description": "NodeFilters represents filters that determine which nodes will be included in the result. Nodes must match all\nspecified filters to be included. If no filters are specified, all nodes will be included. Note that only nodes which\nhave been appropriately classified and synchronized with Comply will be included.",
        "properties": {
          "environments": {
            "description": "If specified, only nodes in at least one of the given environments will be included.",
            "example": [
              "production"
            ],
            "items": {
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "name": {
            "description": "If specified, only the node with the given name will be included.",
            "example": [
              "my-node-789.prod.example.com"
            ],
            "items": {
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "node_groups": {
            "description": "If specified, only nodes in at least one of the given node groups will be included.",
            "example": [
              "auditable nodes"
            ],
            "items": {
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "operating_systems": {
            "description": "If specified, only nodes of the given operating systems will be included. Each operating system must be specified\nas a string with the name and version separated by a space.",
            "example": [
              "redhat 7",
              "redhat 8"
            ],
            "items": {
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          }
        },
        "type": "object"
      },
      "OperatingSystem": {
        "properties": {
          "compatible_benchmarks": {
            "description": "CompatibleBenchmarks for operating system.",
            "items": {
              "$ref": "#/components/schemas/compatiblebenchmark"
            },
            "nullable": true,
            "type": "array"
          },
          "id": {
            "description": "The ID of an operating system.",
            "example": 123,
            "format": "uint64",
            "type": "integer"
          },
          "name": {
            "description": "The name of an operating system.",
            "example": "CentOS 7",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "title": "OperatingSystem represents an operating system and its compatible benchmarks.",
        "type": "object"
      },
      "PaginatedCustomProfiles": {
        "properties": {
          "data": {
            "description": "Data contains list of custom profiles records.",
            "items": {
              "$ref": "#/components/schemas/CustomProfile"
            },
            "type": "array"
          },
          "limit": {
            "description": "If specified limit, you retrieve a subset of records limited to the given value..",
            "example": 10,
            "format": "int64",
            "type": "integer"
          },
          "next": {
            "description": "Next page value .",
            "example": "/api/public/v_/_api_?offset=10&limit=10",
            "nullable": true,
            "type": "string"
          },
          "offset": {
            "description": "Offset is the position in the dataset of a particular record.\nBy specifying offset, you retrieve a subset of records starting with the offset value.",
            "example": 0,
            "format": "int64",
            "type": "integer"
          },
          "total": {
            "description": "Total number of records.",
            "example": 123,
            "format": "int64",
            "type": "integer"
          }
        },
        "required": [
          "total",
          "data"
        ],
        "title": "PaginatedCustomProfiles represents a custom profiles list with pagination information.",
        "type": "object"
      },
      "PaginatedProfiles": {
        "properties": {
          "data": {
            "description": "Data contains list of profiles records.",
            "items": {
              "$ref": "#/components/schemas/Profile"
            },
            "type": "array"
          },
          "limit": {
            "description": "If specified limit, you retrieve a subset of records limited to the given value..",
            "example": 10,
            "format": "int64",
            "type": "integer"
          },
          "next": {
            "description": "Next page value .",
            "example": "/api/public/v_/_api_?offset=10&limit=10",
            "nullable": true,
            "type": "string"
          },
          "offset": {
            "description": "Offset is the position in the dataset of a particular record.\nBy specifying offset, you retrieve a subset of records starting with the offset value.",
            "example": 0,
            "format": "int64",
            "type": "integer"
          },
          "total": {
            "description": "Total number of records.",
            "example": 123,
            "format": "int64",
            "type": "integer"
          }
        },
        "required": [
          "total",
          "data"
        ],
        "title": "PaginatedProfiles represents a profiles list with pagination information.",
        "type": "object"
      },
      "Profile": {
        "properties": {
          "benchmark": {
            "$ref": "#/components/schemas/AssociatedBenchmark"
          },
          "id": {
            "description": "The ID of the profile.",
            "example": 123,
            "format": "uint64",
            "type": "integer"
          },
          "name": {
            "description": "The name of the profile.",
            "example": "Level 1 - Server",
            "type": "string"
          }
        },
        "required": [
          "name",
          "id"
        ],
        "title": "Profile represents a profile.",
        "type": "object"
      },
      "ScanFilters": {
        "properties": {
          "environments": {
            "description": "If specified, only nodes in at least one of the given environments will be included.",
            "example": [
              "production"
            ],
            "items": {
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "hostnames": {
            "description": "If specified, nodes with at least one of the hostname will be included.",
            "example": [
              "hostname.example"
            ],
            "items": {
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "node_groups": {
            "description": "If specified, only nodes in at least one of the given node groups will be included.",
            "example": [
              "node group"
            ],
            "items": {
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "operating_systems": {
            "description": "If specified, only nodes of the given operating systems will be included. Each operating system must be specified\nas a string with the name and version separated by a space.",
            "example": [
              "redhat 7",
              "redhat 8"
            ],
            "items": {
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          }
        },
        "title": "ScanFilters represents scan filters for comply scanning.",
        "type": "object"
      },
      "ScanParams": {
        "properties": {
          "filters": {
            "$ref": "#/components/schemas/ScanFilters"
          },
          "scan-type": {
            "description": "The type of scan to be tiggrered.",
            "enum": [
              "desired"
            ],
            "example": "desired",
            "type": "string"
          }
        },
        "required": [
          "scan-type"
        ],
        "title": "ScanParams represents scan parameters for comply scanning.",
        "type": "object"
      },
      "compatiblebenchmark": {
        "properties": {
          "id": {
            "description": "The ID of the benchmark.",
            "example": 123,
            "format": "uint64",
            "type": "integer"
          },
          "name": {
            "description": "The Name of the benchmark.",
            "example": "3.1.2 CIS CentOS Linux 7",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "title": "compatiblebenchmark represents benchmark compatible with operating system.",
        "type": "object"
      },
      "export": {
        "properties": {
          "created_at": {
            "description": "The time at which the export was created.",
            "example": "2023-09-25T13:57:16.743Z",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "A description of the export.",
            "example": "Compliance summary for production Red Hat nodes.",
            "type": "string"
          },
          "export_file_location": {
            "description": "The location of the export file for download.",
            "example": "/api/public/v1/export/456/file",
            "type": "string"
          },
          "id": {
            "description": "The ID of the export.",
            "example": 123,
            "format": "uint64",
            "type": "integer"
          },
          "name": {
            "description": "The name of the export.",
            "example": "compliance_summary_production_redhat",
            "type": "string"
          },
          "node_filters": {
            "$ref": "#/components/schemas/NodeFilters"
          },
          "type": {
            "description": "The type of the export.",
            "enum": [
              "compliance_status_detailed",
              "compliance_status_summary"
            ],
            "example": "compliance_status_summary",
            "type": "string"
          }
        },
        "required": [
          "id",
          "created_at",
          "name",
          "description",
          "type",
          "node_filters",
          "export_file_location"
        ],
        "title": "export represents an export.",
        "type": "object"
      },
      "exportJob": {
        "properties": {
          "created_at": {
            "description": "The time at which the export job was created.",
            "example": "2023-09-25T13:57:16.743Z",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "A description of the export to be generated.",
            "example": "Compliance summary for production Red Hat nodes.",
            "type": "string"
          },
          "export_file_location": {
            "description": "The location of the generated export file for download, if the export job has finished successfully.",
            "example": "/api/public/v1/export/456/file",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "The ID of the export job.",
            "example": 123,
            "format": "uint64",
            "type": "integer"
          },
          "name": {
            "description": "The name of the export to be generated.",
            "example": "compliance_summary_production_redhat",
            "type": "string"
          },
          "node_filters": {
            "$ref": "#/components/schemas/NodeFilters"
          },
          "status": {
            "description": "The status of the export job.",
            "enum": [
              "queued",
              "processing",
              "successful",
              "failed"
            ],
            "example": "successful",
            "type": "string"
          },
          "type": {
            "description": "The type of export to be generated.",
            "enum": [
              "compliance_status_detailed",
              "compliance_status_summary"
            ],
            "example": "compliance_status_summary",
            "type": "string"
          }
        },
        "required": [
          "id",
          "created_at",
          "name",
          "description",
          "type",
          "node_filters",
          "status"
        ],
        "title": "exportJob represents an export job.",
        "type": "object"
      },
      "host": {
        "properties": {
          "assessor_version": {
            "description": "The assessor_version of the host.",
            "example": "4.3.1",
            "nullable": true,
            "type": "string"
          },
          "environment": {
            "description": "The environment of the host.",
            "example": "Test_Environment",
            "type": "string"
          },
          "id": {
            "description": "The ID of the host.",
            "example": 123,
            "format": "uint64",
            "type": "integer"
          },
          "name": {
            "description": "The name of the host.",
            "example": "example.node.net",
            "type": "string"
          },
          "operating_system": {
            "$ref": "#/components/schemas/OperatingSystem"
          }
        },
        "required": [
          "id",
          "name",
          "environment",
          "operating_system"
        ],
        "title": "host represents a host.",
        "type": "object"
      },
      "inventorySyncJob": {
        "properties": {
          "created_at": {
            "description": "The time at which the inventory sync job was created.",
            "example": "2023-09-25T13:57:16.743Z",
            "format": "date-time",
            "type": "string"
          },
          "finished_at": {
            "description": "The time at which the inventory sync job finished.",
            "example": "2023-09-25T13:57:16.743Z",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "The ID of the inventory sync job.",
            "example": 123,
            "format": "uint64",
            "type": "integer"
          },
          "nodes_deleted": {
            "description": "The number of nodes deleted as part of the inventory sync job.",
            "example": 0,
            "format": "uint64",
            "type": "integer"
          },
          "nodes_synced": {
            "description": "The number of nodes synced as part of the inventory sync job.",
            "example": 100,
            "format": "uint64",
            "type": "integer"
          },
          "reason": {
            "description": "The reason for failure of inventory sync job, if any.",
            "example": "null",
            "type": "string"
          },
          "status": {
            "description": "The status of the inventory sync job.",
            "enum": [
              "started",
              "successful",
              "failed",
              "aborted"
            ],
            "example": "successful",
            "type": "string"
          },
          "total_nodes": {
            "description": "The total number of nodes in the inventory.",
            "example": 100,
            "format": "uint64",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "created_at",
          "nodes_deleted",
          "nodes_synced",
          "reason",
          "status",
          "total_nodes"
        ],
        "title": "inventorySyncJob represents an inventory sync job.",
        "type": "object"
      },
      "paginatedhosts": {
        "properties": {
          "data": {
            "description": "Data contains list of hosts records.",
            "items": {
              "$ref": "#/components/schemas/host"
            },
            "type": "array"
          },
          "limit": {
            "description": "If specified limit, you retrieve a subset of records limited to the given value..",
            "example": 10,
            "format": "int64",
            "type": "integer"
          },
          "next": {
            "description": "Next page value .",
            "example": "/api/public/v_/_api_?offset=10&limit=10",
            "nullable": true,
            "type": "string"
          },
          "offset": {
            "description": "Offset is the position in the dataset of a particular record.\nBy specifying offset, you retrieve a subset of records starting with the offset value.",
            "example": 0,
            "format": "int64",
            "type": "integer"
          },
          "total": {
            "description": "Total number of records.",
            "example": 123,
            "format": "int64",
            "type": "integer"
          }
        },
        "required": [
          "total",
          "data"
        ],
        "title": "PaginatedHosts represents a host list with pagination information.",
        "type": "object"
      },
      "paginatedscans": {
        "properties": {
          "data": {
            "description": "Data contains list of scans records.",
            "items": {
              "$ref": "#/components/schemas/scan"
            },
            "type": "array"
          },
          "limit": {
            "description": "If specified limit, you retrieve a subset of records limited to the given value..",
            "example": 10,
            "format": "int64",
            "type": "integer"
          },
          "next": {
            "description": "Next page value .",
            "example": "/api/public/v_/_api_?offset=10&limit=10",
            "nullable": true,
            "type": "string"
          },
          "offset": {
            "description": "Offset is the position in the dataset of a particular record.\nBy specifying offset, you retrieve a subset of records starting with the offset value.",
            "example": 0,
            "format": "int64",
            "type": "integer"
          },
          "total": {
            "description": "Total number of records.",
            "example": 123,
            "format": "int64",
            "type": "integer"
          }
        },
        "required": [
          "total",
          "data"
        ],
        "title": "PaginatedScans represents a scan list with pagination information.",
        "type": "object"
      },
      "pagination": {
        "properties": {
          "limit": {
            "description": "If specified limit, you retrieve a subset of records limited to the given value..",
            "example": 10,
            "format": "int64",
            "type": "integer"
          },
          "next": {
            "description": "Next page value .",
            "example": "/api/public/v_/_api_?offset=10&limit=10",
            "nullable": true,
            "type": "string"
          },
          "offset": {
            "description": "Offset is the position in the dataset of a particular record.\nBy specifying offset, you retrieve a subset of records starting with the offset value.",
            "example": 0,
            "format": "int64",
            "type": "integer"
          },
          "total": {
            "description": "Total number of records.",
            "example": 123,
            "format": "int64",
            "type": "integer"
          }
        },
        "required": [
          "total"
        ],
        "type": "object"
      },
      "scan": {
        "properties": {
          "created_at": {
            "description": "The time at which the scan was created.",
            "example": "2023-09-25T13:57:16.743Z",
            "format": "date-time",
            "type": "string"
          },
          "errored": {
            "description": "The number of nodes that errored in scan.",
            "example": 0,
            "format": "uint64",
            "type": "integer"
          },
          "failed": {
            "description": "The number of nodes that failed in scan.",
            "example": 0,
            "format": "uint64",
            "type": "integer"
          },
          "finished": {
            "description": "The number of nodes that finished in scan.",
            "example": 100,
            "format": "uint64",
            "type": "integer"
          },
          "finished_at": {
            "description": "The time at which the scan finished.",
            "example": "2023-09-25T13:57:16.743Z",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "The ID of the scan.",
            "example": "123",
            "type": "string"
          },
          "name": {
            "description": "The name of the scan.",
            "example": "Scan 1",
            "type": "string"
          },
          "nodes_scanned": {
            "description": "The number of nodes scanned.",
            "example": 100,
            "format": "uint64",
            "type": "integer"
          },
          "status": {
            "description": "The status of the inventory sync job.",
            "enum": [
              "started",
              "finished",
              "failed"
            ],
            "example": "finished",
            "type": "string"
          },
          "type": {
            "description": "The type of scan.",
            "example": "desired",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "created_at",
          "nodes_scanned",
          "type",
          "status",
          "failed",
          "errored",
          "finished"
        ],
        "title": "Scan represents a scan.",
        "type": "object"
      }
    },
    "securitySchemes": {
      "api_key": {
        "description": "Value must be of the form `Bearer <token>`",
        "in": "header",
        "name": "Authorization",
        "type": "apiKey"
      }
    }
  },
  "info": {
    "description": "The Puppet Comply API allows you to interact with Comply using your own tools and automation.\n\nWhen making requests to the API, you must include a personal access token in the `Authorization` header in the form\n`Bearer <token>` and have one of the required roles at the time of calling the API. Personal access tokens can be\ncreated in the Comply UI.",
    "title": "Puppet Comply API",
    "version": "1"
  },
  "openapi": "3.0.0",
  "paths": {
    "/v1/benchmarks": {
      "get": {
        "description": "Retrieve a list of all benchmarks.\n\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "BenchmarksList",
        "responses": {
          "200": {
            "$ref": "#/components/responses/BenchmarksListResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "List benchmarks",
        "tags": [
          "Benchmarks"
        ]
      }
    },
    "/v1/benchmarks/{id}": {
      "get": {
        "description": "\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "getBenchmark",
        "parameters": [
          {
            "description": "The ID of the benchmark.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uint64",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/GetBenchmarkResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Retrieve a benchmark, including information about its associated profiles and compatible operating systems.",
        "tags": [
          "Benchmarks"
        ]
      }
    },
    "/v1/custom-profiles": {
      "get": {
        "description": "\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "CustomProfilesList",
        "parameters": [
          {
            "description": "The offset where list should start response at.",
            "in": "query",
            "name": "offset",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "description": "The offset where list should start response at.",
            "in": "query",
            "name": "limit",
            "schema": {
              "format": "int64",
              "maximum": 500,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/CustomProfilesListResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Retrieve a list of custom profiles.",
        "tags": [
          "Profiles"
        ]
      }
    },
    "/v1/custom-profiles/{id}": {
      "get": {
        "description": "\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "getCustomProfile",
        "parameters": [
          {
            "description": "The ID of the Profile.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uint64",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/GetCustomProfileResponse"
          },
          "400": {
            "$ref": "#/components/responses/CustomProfileNotFound"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Retrieve a custom profile.",
        "tags": [
          "Profiles"
        ]
      }
    },
    "/v1/custom-scan": {
      "post": {
        "description": "Creates custom scan request and runs scan on nodes that match filter criteria if specified with profile.\n\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`",
        "operationId": "createCustomScan",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "benchmark_id": {
                    "description": "The benchmark for associated profile.",
                    "example": 123,
                    "format": "uint64",
                    "type": "integer"
                  },
                  "custom_profile_id": {
                    "description": "The custom profile ID to be used for the scan.",
                    "example": 123,
                    "format": "uint64",
                    "nullable": true,
                    "type": "integer"
                  },
                  "profile_id": {
                    "description": "The profile ID to be used for the scan.",
                    "example": 123,
                    "format": "uint64",
                    "nullable": true,
                    "type": "integer"
                  },
                  "scan_filters": {
                    "$ref": "#/components/schemas/ScanFilters"
                  },
                  "scan_type": {
                    "description": "ScanType is the type of scan to run.",
                    "enum": [
                      "custom"
                    ],
                    "example": "custom",
                    "type": "string"
                  }
                },
                "required": [
                  "benchmark_id",
                  "scan_type"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/CreateCustomScanResponse"
          },
          "422": {
            "$ref": "#/components/responses/NoNodesToScanResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Create an ad-hoc custom scan",
        "tags": [
          "Scan"
        ]
      }
    },
    "/v1/export-job": {
      "post": {
        "description": "Create an export job containing the information required to generate an export. The export job will be queued and\nsubsequently processed by Comply. If the export job finishes successfully, a new export will be available to\ndownload.\n\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`",
        "operationId": "createExportJob",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "description": {
                    "description": "A description of the export to be generated.",
                    "example": "Compliance summary for production Red Hat nodes.",
                    "type": "string"
                  },
                  "name": {
                    "description": "The name of the export to be generated. If no name is supplied, one will be automatically generated.",
                    "example": "compliance_summary_production_redhat",
                    "type": "string"
                  },
                  "node_filters": {
                    "$ref": "#/components/schemas/NodeFilters"
                  },
                  "type": {
                    "description": "The type of export to be generated. `compliance_status_detailed` includes the status of each rule for each\nnode, whereas `compliance_status_summary` includes just the compliance scores for each node.",
                    "enum": [
                      "compliance_status_detailed",
                      "compliance_status_summary"
                    ],
                    "example": "compliance_status_summary",
                    "type": "string"
                  }
                },
                "required": [
                  "type"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/CreateExportJobResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Create an export job",
        "tags": [
          "Exports"
        ]
      }
    },
    "/v1/export-job/{id}": {
      "get": {
        "description": "Retrieve an export job, including its current status and the location of the associated export, if one has been\ngenerated successfully.\n\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "getExportJob",
        "parameters": [
          {
            "description": "The ID of the export job.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uint64",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/GetExportJobResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Retrieve an export job",
        "tags": [
          "Exports"
        ]
      }
    },
    "/v1/export/{id}": {
      "delete": {
        "description": "Delete an export permanently. This will also delete the associated export job.\n\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`",
        "operationId": "deleteExport",
        "parameters": [
          {
            "description": "The ID of the export.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uint64",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Delete an export",
        "tags": [
          "Exports"
        ]
      }
    },
    "/v1/export/{id}/file": {
      "get": {
        "description": "Download an export file as a ZIP archive.\n\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "getExportFile",
        "parameters": [
          {
            "description": "The ID of the export.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uint64",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Download an export file",
        "tags": [
          "Exports"
        ]
      }
    },
    "/v1/exports": {
      "get": {
        "description": "Retrieve a list of all exports.\n\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "ExportsList",
        "responses": {
          "200": {
            "$ref": "#/components/responses/ExportsListResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "List exports",
        "tags": [
          "Exports"
        ]
      }
    },
    "/v1/hosts": {
      "get": {
        "description": "Retrieve a list of all hosts.\n\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "HostsList",
        "parameters": [
          {
            "description": "The offset where list should start response at.",
            "in": "query",
            "name": "offset",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "description": "The offset where list should start response at.",
            "in": "query",
            "name": "limit",
            "schema": {
              "format": "int64",
              "maximum": 500,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/HostsListResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "List hosts",
        "tags": [
          "Hosts"
        ]
      }
    },
    "/v1/hosts/filter": {
      "post": {
        "description": "Retrieve a list of all hosts with given filter.\n\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "HostsFilterList",
        "parameters": [
          {
            "description": "The offset where list should start response at.",
            "in": "query",
            "name": "offset",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "description": "The offset where list should start response at.",
            "in": "query",
            "name": "limit",
            "schema": {
              "format": "int64",
              "maximum": 500,
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "environments": {
                    "description": "If specified, only nodes in at least one of the given environments will be included.",
                    "example": [
                      "production"
                    ],
                    "items": {
                      "type": "string"
                    },
                    "nullable": true,
                    "type": "array"
                  },
                  "hostnames": {
                    "description": "If specified, nodes with at least one of the hostname will be included.",
                    "example": [
                      "hostname.example"
                    ],
                    "items": {
                      "type": "string"
                    },
                    "nullable": true,
                    "type": "array"
                  },
                  "node_groups": {
                    "description": "If specified, only nodes in at least one of the given node groups will be included.",
                    "example": [
                      "node group"
                    ],
                    "items": {
                      "type": "string"
                    },
                    "nullable": true,
                    "type": "array"
                  },
                  "operating_systems": {
                    "description": "If specified, only nodes of the given operating systems will be included. Each operating system must be specified\nas a string with the name and version separated by a space.",
                    "example": [
                      "redhat 7",
                      "redhat 8"
                    ],
                    "items": {
                      "type": "string"
                    },
                    "nullable": true,
                    "type": "array"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/HostsFilteredListResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "List hosts with filter",
        "tags": [
          "Hosts"
        ]
      }
    },
    "/v1/inventory-sync-job": {
      "post": {
        "description": "Create an inventory sync job. If there is not an inventory sync job currently running, a new job will be created and\nstart running immediately. If there is an inventory sync job currently running, a new job will not be created.\n\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`",
        "operationId": "createInventorySyncJob",
        "responses": {
          "201": {
            "$ref": "#/components/responses/CreateInventoryJobResponse"
          },
          "429": {
            "$ref": "#/components/responses/TooManyInventoryRequestsResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Create an inventory sync job",
        "tags": [
          "Inventory"
        ]
      }
    },
    "/v1/inventory-sync-job/{id}": {
      "get": {
        "description": "Retrieve an inventory sync job, including its current status and associated information.\n\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "getInventorySyncJob",
        "parameters": [
          {
            "description": "The ID of the inventory sync job.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uint64",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/GetInventorySyncJobResponse"
          },
          "404": {
            "$ref": "#/components/responses/InventoryJobNotFound"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Retrieve an inventory sync job",
        "tags": [
          "Inventory"
        ]
      }
    },
    "/v1/manage-default-desired-compliance": {
      "post": {
        "description": "To use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`",
        "operationId": "manageDefaultDesiredCompliance",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "benchmarkName": {
                    "description": "The id of the benchmark.",
                    "example": "4.0.0 CIS Apple macOS 11.0 Big Sur",
                    "type": "string"
                  },
                  "customProfileName": {
                    "description": "The name of the custom profile.",
                    "type": "string"
                  },
                  "operatingSystemName": {
                    "description": "The name of the operating system.",
                    "example": "macOS 11.0",
                    "type": "string"
                  },
                  "profileName": {
                    "description": "The name of the profile.",
                    "example": "Level 1",
                    "type": "string"
                  },
                  "updateAll": {
                    "description": "Whether to update all hosts with the given OS.",
                    "example": false,
                    "type": "boolean"
                  }
                },
                "required": [
                  "operatingSystemName",
                  "benchmarkName"
                ],
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/ManageDefaultDesiredComplianceResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Sets a default desired compliance for incoming hosts from a pe server.",
        "tags": [
          "ManageDefaultDesiredCompliance"
        ]
      }
    },
    "/v1/operating-systems": {
      "get": {
        "description": "Retrieve a list of all operating systems.\n\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "OperatingSystemsList",
        "parameters": [
          {
            "description": "The os name by which operating systems list should be filtered.",
            "in": "query",
            "name": "name",
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/OperatingSystemsListResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "List Operating Systems",
        "tags": [
          "OperatingSystem"
        ]
      }
    },
    "/v1/profiles": {
      "get": {
        "description": "\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "ProfilesList",
        "parameters": [
          {
            "description": "The offset where list should start response at.",
            "in": "query",
            "name": "offset",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "description": "The offset where list should start response at.",
            "in": "query",
            "name": "limit",
            "schema": {
              "format": "int64",
              "maximum": 500,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/ProfilesListResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Retrieve a list of profiles.",
        "tags": [
          "Profiles"
        ]
      }
    },
    "/v1/profiles/{id}": {
      "get": {
        "description": "\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "getProfile",
        "parameters": [
          {
            "description": "The ID of the Profile.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uint64",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/GetProfileResponse"
          },
          "400": {
            "$ref": "#/components/responses/ProfileNotFound"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Retrieve a profile.",
        "tags": [
          "Profiles"
        ]
      }
    },
    "/v1/scan": {
      "get": {
        "description": "\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "ScanList",
        "parameters": [
          {
            "description": "The offset where list should start response at.",
            "in": "query",
            "name": "offset",
            "schema": {
              "format": "int64",
              "type": "integer"
            }
          },
          {
            "description": "The offset where list should start response at.",
            "in": "query",
            "name": "limit",
            "schema": {
              "format": "int64",
              "maximum": 500,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/ScanListResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Retrieve a list of scans.",
        "tags": [
          "Scan"
        ]
      },
      "post": {
        "description": "Creates scan request and runs scan on nodes that match filter criteria if specified.\n\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`",
        "operationId": "createScan",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "filters": {
                    "$ref": "#/components/schemas/ScanFilters"
                  },
                  "scan-type": {
                    "description": "The type of scan to be tiggrered.",
                    "enum": [
                      "desired"
                    ],
                    "example": "desired",
                    "type": "string"
                  }
                },
                "required": [
                  "scan-type"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/CreateDesiredScanResponse"
          },
          "422": {
            "$ref": "#/components/responses/NoNodesToScanResponse"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Create an ad-hoc scan",
        "tags": [
          "Scan"
        ]
      }
    },
    "/v1/scan/{id}": {
      "get": {
        "description": "\nTo use this endpoint, you must have one of the following roles:\n`comply-admin`\n`comply-operator`\n`comply-viewer`",
        "operationId": "getScan",
        "parameters": [
          {
            "description": "The ID of the scan.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/GetScanResponse"
          },
          "400": {
            "$ref": "#/components/responses/ScanNotFound"
          },
          "default": {
            "$ref": "#/components/responses/ErrorResponse"
          }
        },
        "summary": "Retrieve a scan.",
        "tags": [
          "Scan"
        ]
      }
    }
  },
  "security": [
    {
      "api_key": []
    }
  ],
  "servers": [
    {
      "url": "/api/public"
    }
  ],
  "tags": [
    {
      "description": "The Exports API allows you to create, download, and delete exports of data from Comply.",
      "name": "Exports"
    },
    {
      "description": "The Inventory API allows you to sync nodes with Puppet Enterprise from Comply.",
      "name": "Inventory"
    },
    {
      "description": "The OperatingSystem API allows you to retrieve information about the operating systems supported by Comply.",
      "name": "OperatingSystem"
    },
    {
      "description": "The Benchmarks API allows you to retrieve information about the benchmarks supported by Comply.",
      "name": "Benchmarks"
    },
    {
      "description": "The Hosts API allows you to retrieve information about the hosts from Comply.",
      "name": "Hosts"
    },
    {
      "description": "The Scan API allows you to scan the hosts from Comply.",
      "name": "Scan"
    },
    {
      "description": "The Profiles API allows you to retrieve information about the profiles and custom-profiles supported by Comply.",
      "name": "Profiles"
    }
  ]
}
