{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/harness/main/json-schema/harness-v1-agent-schema.json", "title": "A gitops-agent", "x-generated": "2026-10-04", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/harness-agents-api-openapi.yml#/components/schemas/v1Agent", "type": "object", "properties": { "accountIdentifier": { "type": "string", "description": "Account Identifier for the Entity.", "title": "The ID of the Harness Account that this gitops-agent belongs to" }, "projectIdentifier": { "type": "string", "description": "Project Identifier for the Entity.", "title": "The ID of the Harness Project that this gitops-agent belongs to" }, "orgIdentifier": { "type": "string", "description": "Organization Identifier for the Entity.", "title": "The ID of the Harness Organization that this gitops-agent belongs to" }, "identifier": { "type": "string", "title": "The gitops-server generated ID for this gitops-agent" }, "name": { "type": "string", "title": "A human readable name for the gitops-agent" }, "metadata": { "$ref": "#/$defs/v1AgentMetadata" }, "description": { "type": "string", "title": "A human readable description for the gitops-agent" }, "type": { "$ref": "#/$defs/v1AgentType" }, "createdAt": { "$ref": "#/$defs/v1Time" }, "lastModifiedAt": { "$ref": "#/$defs/v1Time" }, "tags": { "type": "object", "additionalProperties": { "type": "string" }, "title": "Tags that help organize gitops-agents" }, "health": { "$ref": "#/$defs/v1AgentHealth" }, "credentials": { "$ref": "#/$defs/v1AgentCredentials" }, "version": { "$ref": "#/$defs/v1SemanticVersion" }, "upgradeAvailable": { "type": "boolean", "title": "Indicates whether this agent has an upgrade available (i.e. the version of this gitops-agent is not the latest released)" }, "scope": { "$ref": "#/$defs/v1AgentScope" }, "disasterRecoveryNode": { "$ref": "#/$defs/v1DisasterRecoveryNode" }, "isPLG": { "type": "boolean", "description": "Indicates if the agent is for PLG." }, "operator": { "$ref": "#/$defs/v1AgentOperator" }, "prefixedIdentifier": { "type": "string", "description": "The scoped identifier of the agent. This is a combination of the account, org, project, and agent identifiers." }, "deletionInProgress": { "type": "boolean", "title": "Deletion in progress" } }, "$defs": { "servicev1AppProjectMapping": { "type": "object", "properties": { "appProjMap": { "type": "object", "additionalProperties": { "$ref": "#/$defs/servicev1Project" } } } }, "servicev1HealthStatus": { "type": "string", "enum": [ "HEALTH_STATUS_UNSET", "HEALTHY", "UNHEALTHY" ], "default": "HEALTH_STATUS_UNSET" }, "servicev1Project": { "type": "object", "properties": { "projectIdentifier": { "type": "string", "description": "Project Identifier for the Entity." }, "orgIdentifier": { "type": "string", "description": "Organization Identifier for the Entity." }, "autoCreateServiceEnv": { "type": "boolean", "description": "Enable automated creation of service,environment and cluster-env link. Defaults to false." } } }, "v1AgentComponentHealth": { "type": "object", "properties": { "status": { "$ref": "#/$defs/servicev1HealthStatus" }, "k8sError": { "type": "string" }, "message": { "type": "string" }, "version": { "type": "string" } } }, "v1AgentCredentials": { "type": "object", "properties": { "privateKey": { "type": "string" }, "publicKey": { "type": "string" } } }, "v1AgentHealth": { "type": "object", "properties": { "lastHeartbeat": { "type": "string", "format": "date-time", "title": "The last time the agent sent a HeartbeatRequest" }, "argoRepoServer": { "$ref": "#/$defs/v1AgentComponentHealth" }, "argoAppController": { "$ref": "#/$defs/v1AgentComponentHealth" }, "argoRedisServer": { "$ref": "#/$defs/v1AgentComponentHealth" }, "harnessGitopsAgent": { "$ref": "#/$defs/v1AgentComponentHealth" }, "connectionStatus": { "$ref": "#/$defs/v1ConnectedStatus" }, "argoAppSetController": { "$ref": "#/$defs/v1AgentComponentHealth" }, "argoHAProxy": { "$ref": "#/$defs/v1AgentComponentHealth" } } }, "v1AgentMetadata": { "type": "object", "properties": { "namespace": { "type": "string", "title": "The k8s namespace that this agent resides in" }, "highAvailability": { "type": "boolean", "title": "Whether or not this deployment should be deployed using deploy-ha.yaml" }, "deployedApplicationCount": { "type": "integer", "format": "int32", "title": "Number of Deployed Applications" }, "existingInstallation": { "type": "boolean", "title": "If the agent is running in an existing argo installation" }, "mappedProjects": { "$ref": "#/$defs/servicev1AppProjectMapping" }, "infraType": { "$ref": "#/$defs/v1ClusterInfraType" }, "isNamespaced": { "type": "boolean" } } }, "v1AgentOperator": { "type": "string", "enum": [ "UNKNOWN", "ARGO", "FLAMINGO" ], "default": "UNKNOWN" }, "v1AgentScope": { "type": "string", "enum": [ "AGENT_SCOPE_UNSET", "ACCOUNT", "ORG", "PROJECT" ], "default": "AGENT_SCOPE_UNSET" }, "v1AgentType": { "type": "string", "enum": [ "AGENT_TYPE_UNSET", "CONNECTED_ARGO_PROVIDER", "MANAGED_ARGO_PROVIDER", "HOSTED_ARGO_PROVIDER" ], "default": "AGENT_TYPE_UNSET", "description": "AgentType is the type of agent. CONNECTED_ARGO_PROVIDER is deprecated and will be removed in a future release.\n\nPlease use type \"MANAGED_ARGO_PROVIDER\" to create your agents.\n\n\"MANAGED_ARGO_PROVIDER\" agents are user managed agents and \"HOSTED_ARGO_PROVIDER\" agents are Harness managed agents(these cannot be created by users directly)." }, "v1ClusterInfraType": { "type": "string", "enum": [ "UNSET", "OPENSHIFT" ], "default": "UNSET", "title": "Agent destination cluster type" }, "v1ConnectedStatus": { "type": "string", "enum": [ "CONNECTED_STATUS_UNSET", "CONNECTED", "DISCONNECTED" ], "default": "CONNECTED_STATUS_UNSET" }, "v1DisasterRecoveryNode": { "type": "object", "properties": { "identifier": { "type": "string" }, "name": { "type": "string" }, "type": { "$ref": "#/$defs/v1DisasterRecoveryType" } } }, "v1DisasterRecoveryType": { "type": "string", "enum": [ "UNKNOWN_TYPE", "PRIMARY", "SECONDARY" ], "default": "UNKNOWN_TYPE" }, "v1SemanticVersion": { "type": "object", "properties": { "major": { "type": "string", "format": "int64" }, "minor": { "type": "string", "format": "int64" }, "patch": { "type": "string", "format": "int64" } } }, "v1Time": { "type": "object", "properties": { "seconds": { "type": "string", "format": "int64", "description": "Represents seconds of UTC time since Unix epoch\n1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n9999-12-31T23:59:59Z inclusive." }, "nanos": { "type": "integer", "format": "int32", "description": "Non-negative fractions of a second at nanosecond resolution. Negative\nsecond values with fractions must still have non-negative nanos values\nthat count forward in time. Must be from 0 to 999,999,999\ninclusive. This field may be limited in precision depending on context." } }, "description": "Time is a wrapper around time.Time which supports correct\nmarshaling to YAML and JSON. Wrappers are provided for many\nof the factory methods that the time package offers.\n\n+protobuf.options.marshal=false\n+protobuf.as=Timestamp\n+protobuf.options.(gogoproto.goproto_stringer)=false" } } }