{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/harness/main/json-schema/harness-github-com-harness-hce-saas-hce-sdk-types-api-machine-infra-infra-schema.json",
  "title": "github_com_harness_hce-saas_hce-sdk_types_api_machine_infra.Infra",
  "x-generated": "2026-10-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/harness-chaos-infrastructure-api-openapi.yml#/components/schemas/github_com_harness_hce-saas_hce-sdk_types_api_machine_infra.Infra",
  "type": "object",
  "properties": {
    "createdAt": {
      "description": "Timestamp when the infra was created",
      "type": "string"
    },
    "createdBy": {
      "description": "User who created the infra",
      "allOf": [
        {
          "$ref": "#/$defs/infra.UserDetails"
        }
      ]
    },
    "description": {
      "description": "Description of the infra",
      "type": "string"
    },
    "environmentID": {
      "description": "Environment ID for the infra",
      "type": "string"
    },
    "hostname": {
      "description": "Hostname of the infra",
      "type": "string"
    },
    "infraID": {
      "description": "ID of the infra",
      "type": "string"
    },
    "isActive": {
      "description": "Boolean value indicating if chaos infrastructure is active or not",
      "type": "boolean"
    },
    "isInfraConfirmed": {
      "description": "Boolean value indicating if chaos infrastructure is confirmed or not",
      "type": "boolean"
    },
    "isRegistered": {
      "description": "IsRegistered indicates if the infra is registered",
      "type": "boolean"
    },
    "lastHeartbeat": {
      "description": "Last Heartbeat status sent by the infra",
      "type": "string"
    },
    "lastWorkflowTimestamp": {
      "description": "Timestamp of the last workflow run in the infra",
      "type": "string"
    },
    "name": {
      "description": "Name of the infra",
      "type": "string"
    },
    "noOfSchedules": {
      "description": "Number of schedules created in the infra",
      "type": "integer"
    },
    "noOfWorkflows": {
      "description": "Number of workflows run in the infra",
      "type": "integer"
    },
    "startTime": {
      "description": "Timestamp when the infra got connected",
      "type": "string"
    },
    "status": {
      "description": "Status of the infrastructure",
      "allOf": [
        {
          "$ref": "#/$defs/infra.InfraStatus"
        }
      ]
    },
    "tags": {
      "description": "Tags of the infra",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "updatedAt": {
      "description": "Timestamp when the infra was last updated",
      "type": "string"
    },
    "updatedBy": {
      "description": "User who has updated the infra",
      "allOf": [
        {
          "$ref": "#/$defs/infra.UserDetails"
        }
      ]
    },
    "userInputs": {
      "description": "User inputs for the infra",
      "allOf": [
        {
          "$ref": "#/$defs/infra.RegisterInfraUserInputs"
        }
      ]
    },
    "version": {
      "description": "Version of the infra",
      "type": "string"
    }
  },
  "$defs": {
    "infra.CloudFoundryInfraUserInputs": {
      "type": "object",
      "properties": {
        "allowedOrigins": {
          "description": "The origins to be exempted from CORS",
          "type": "string"
        },
        "httpPort": {
          "description": "The port at which CFCO should be started",
          "type": "string"
        },
        "livenessCheckInterval": {
          "description": "The interval at which app instances liveness is checked",
          "type": "string"
        },
        "maxHeartbeatDelay": {
          "description": "The maximum delay in the liveness update of app instances after which they get removed",
          "type": "string"
        }
      }
    },
    "infra.ContainerInfraUserInputs": {
      "type": "object",
      "properties": {
        "deploymentType": {
          "description": "The deployment type for the container infrastructure",
          "allOf": [
            {
              "$ref": "#/$defs/infra.DeploymentType"
            }
          ]
        },
        "platformType": {
          "description": "The platform type for the container infrastructure",
          "allOf": [
            {
              "$ref": "#/$defs/infra.PlatformType"
            }
          ]
        }
      }
    },
    "infra.DeploymentType": {
      "type": "string",
      "enum": [
        "AWS_ECS_EC2",
        "AWS_ECS_FARGATE"
      ],
      "x-enum-varnames": [
        "DeploymentTypeAwsEcsEc2",
        "DeploymentTypeAwsEcsFargate"
      ]
    },
    "infra.InfraSpecificUserInputs": {
      "type": "object",
      "properties": {
        "cloudFoundryInfraUserInputs": {
          "$ref": "#/$defs/infra.CloudFoundryInfraUserInputs"
        },
        "containerInfraUserInputs": {
          "$ref": "#/$defs/infra.ContainerInfraUserInputs"
        }
      }
    },
    "infra.InfraStatus": {
      "type": "string",
      "enum": [
        "ACTIVE",
        "INACTIVE",
        "PENDING"
      ],
      "x-enum-varnames": [
        "InfraStatusActive",
        "InfraStatusInactive",
        "InfraStatusPending"
      ]
    },
    "infra.PlatformType": {
      "type": "string",
      "enum": [
        "AWS_ECS",
        "DOCKER_COMPOSE",
        "HASHICORP_NOMAD"
      ],
      "x-enum-varnames": [
        "PlatformTypeAwsEcs",
        "PlatformTypeDockerCompose",
        "PlatformTypeHashicorpNomad"
      ]
    },
    "infra.RegisterInfraUserInputs": {
      "type": "object",
      "properties": {
        "abortPollInterval": {
          "description": "The interval at which abort is polled for a running task",
          "type": "string"
        },
        "chaosInfrastructureLogFileDirectory": {
          "description": "Name of the log file directory",
          "type": "string"
        },
        "chaosInfrastructureLogFileMaxBackups": {
          "description": "Maximum number of log file backups",
          "type": "integer"
        },
        "chaosInfrastructureLogFileMaxSize": {
          "description": "Maximum size of log file in MB",
          "type": "integer"
        },
        "customTlsCertificate": {
          "description": "TLS certificate to be used with the infrastructure",
          "type": "string"
        },
        "experimentLogFileMaxAgeDays": {
          "description": "Maximum age of log file in days",
          "type": "integer"
        },
        "httpClientTimeout": {
          "description": "The timeout duration for the infrastructure http client",
          "type": "string"
        },
        "httpProxy": {
          "description": "URL for the http proxy",
          "type": "string"
        },
        "httpsProxy": {
          "description": "URL for the https proxy",
          "type": "string"
        },
        "infraSpecificUserInputs": {
          "description": "Infra specific user inputs",
          "allOf": [
            {
              "$ref": "#/$defs/infra.InfraSpecificUserInputs"
            }
          ]
        },
        "livenessUpdateInterval": {
          "description": "The interval at which chaos infrastructure updates liveness heartbeat",
          "type": "string"
        },
        "noProxy": {
          "description": "Comma separated URLs that won't be proxied",
          "type": "string"
        },
        "taskPollInterval": {
          "description": "The polling interval for fetching the new tasks",
          "type": "string"
        },
        "taskUpdateInterval": {
          "description": "Task update interval",
          "type": "string"
        },
        "updateRetries": {
          "description": "Specifies the maximum number of retries in case of a failure while sending a task status or result",
          "type": "integer"
        },
        "updateRetryInterval": {
          "description": "Specifies the interval between the subsequent attempts to send a fault status or result, in case of a failure",
          "type": "string"
        }
      }
    },
    "infra.UserDetails": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "userID": {
          "type": "string"
        },
        "username": {
          "type": "string"
        }
      }
    }
  }
}