Argo Workflows · Schema
io.argoproj.workflow.v1alpha1.WorkflowSpec
WorkflowSpec is the specification of a Workflow.
CNCFContainersData ProcessingKubernetesMachine-LearningOpen-SourceWorkflow Engine
Properties
| Name | Type | Description |
|---|---|---|
| activeDeadlineSeconds | integer | Optional duration in seconds relative to the workflow start time which the workflow is allowed to run before the controller terminates the io.argoproj.workflow.v1alpha1. A value of zero is used to ter |
| affinity | object | Affinity sets the scheduling constraints for all pods in the io.argoproj.workflow.v1alpha1. Can be overridden by an affinity specified in the template |
| archiveLogs | boolean | ArchiveLogs indicates if the container logs should be archived |
| arguments | object | Arguments contain the parameters and artifacts sent to the workflow entrypoint Parameters are referencable globally using the 'workflow' variable prefix. e.g. {{io.argoproj.workflow.v1alpha1.parameter |
| artifactGC | object | ArtifactGC describes the strategy to use when deleting artifacts from completed or deleted workflows (applies to all output Artifacts unless Artifact.ArtifactGC is specified, which overrides this) |
| artifactRepositoryRef | object | ArtifactRepositoryRef specifies the configMap name and key containing the artifact repository config. |
| automountServiceAccountToken | boolean | AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. ServiceAccountName of ExecutorConfig must be specified if this value is false. |
| dnsConfig | object | PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy. |
| dnsPolicy | string | Set DNS policy for workflow pods. Defaults to "ClusterFirst". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the |
| entrypoint | string | Entrypoint is a template reference to the starting point of the io.argoproj.workflow.v1alpha1. |
| executor | object | Executor holds configurations of executor containers of the io.argoproj.workflow.v1alpha1. |
| hooks | object | Hooks holds the lifecycle hook which is invoked at lifecycle of step, irrespective of the success, failure, or error status of the primary step |
| hostAliases | array | |
| hostNetwork | boolean | Host networking requested for this workflow pod. Default to false. |
| imagePullSecrets | array | ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because S |
| metrics | object | Metrics are a list of metrics emitted from this Workflow |
| nodeSelector | object | NodeSelector is a selector which will result in all pods of the workflow to be scheduled on the selected node(s). This is able to be overridden by a nodeSelector specified in the template. |
| onExit | string | OnExit is a template reference which is invoked at the end of the workflow, irrespective of the success, failure, or error of the primary io.argoproj.workflow.v1alpha1. |
| parallelism | integer | Parallelism limits the max total parallel pods that can execute at the same time in a workflow |
| podDisruptionBudget | object | PodDisruptionBudget holds the number of concurrent disruptions that you allow for Workflow's Pods. Controller will automatically add the selector with workflow name, if selector is empty. Optional: De |
| podGC | object | PodGC describes the strategy to use when deleting completed pods |
| podMetadata | object | PodMetadata defines additional metadata that should be applied to workflow pods |
| podPriorityClassName | string | PriorityClassName to apply to workflow pods. |
| podSpecPatch | string | PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits). |
| priority | integer | Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first. |
| retryStrategy | object | RetryStrategy for all templates in the io.argoproj.workflow.v1alpha1. |
| schedulerName | string | Set scheduler name for all pods. Will be overridden if container/script template's scheduler name is set. Default scheduler will be used if neither specified. |
| securityContext | object | SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field. |
| serviceAccountName | string | ServiceAccountName is the name of the ServiceAccount to run all pods of the workflow as. |
| shutdown | string | Shutdown will shutdown the workflow according to its ShutdownStrategy |
| suspend | boolean | Suspend will suspend the workflow and prevent execution of any future steps in the workflow |
| synchronization | object | Synchronization holds synchronization lock configuration for this Workflow |
| templateDefaults | object | TemplateDefaults holds default template values that will apply to all templates in the Workflow, unless overridden on the template-level |
| templates | array | Templates is a list of workflow templates used in a workflow MaxItems is an artificial limit to limit CEL validation costs - see note at top of file |
| tolerations | array | Tolerations to apply to workflow pods. |
| ttlStrategy | object | TTLStrategy limits the lifetime of a Workflow that has finished execution depending on if it Succeeded or Failed. If this struct is set, once the Workflow finishes, it will be deleted after the time t |
| volumeClaimGC | object | VolumeClaimGC describes the strategy to use when deleting volumes from completed workflows |
| volumeClaimTemplates | array | VolumeClaimTemplates is a list of claims that containers are allowed to reference. The Workflow controller will create the claims at the beginning of the workflow and delete the claims upon completion |
| volumes | array | Volumes is a list of volumes that can be mounted by containers in a io.argoproj.workflow.v1alpha1. |
| workflowMetadata | object | WorkflowMetadata contains some metadata of the workflow to refer to |
| workflowTemplateRef | object | WorkflowTemplateRef holds a reference to a WorkflowTemplate for execution |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/argo-workflows/refs/heads/main/json-schema/argo-workflows-io-argoproj-workflow-v1alpha1-workflow-spec-schema.json",
"title": "io.argoproj.workflow.v1alpha1.WorkflowSpec",
"description": "WorkflowSpec is the specification of a Workflow.",
"type": "object",
"properties": {
"activeDeadlineSeconds": {
"description": "Optional duration in seconds relative to the workflow start time which the workflow is allowed to run before the controller terminates the io.argoproj.workflow.v1alpha1. A value of zero is used to terminate a Running workflow",
"type": "integer"
},
"affinity": {
"description": "Affinity sets the scheduling constraints for all pods in the io.argoproj.workflow.v1alpha1. Can be overridden by an affinity specified in the template",
"$ref": "#/definitions/io.k8s.api.core.v1.Affinity"
},
"archiveLogs": {
"description": "ArchiveLogs indicates if the container logs should be archived",
"type": "boolean"
},
"arguments": {
"description": "Arguments contain the parameters and artifacts sent to the workflow entrypoint Parameters are referencable globally using the 'workflow' variable prefix. e.g. {{io.argoproj.workflow.v1alpha1.parameters.myparam}}",
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.Arguments"
},
"artifactGC": {
"description": "ArtifactGC describes the strategy to use when deleting artifacts from completed or deleted workflows (applies to all output Artifacts unless Artifact.ArtifactGC is specified, which overrides this)",
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.WorkflowLevelArtifactGC"
},
"artifactRepositoryRef": {
"description": "ArtifactRepositoryRef specifies the configMap name and key containing the artifact repository config.",
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.ArtifactRepositoryRef"
},
"automountServiceAccountToken": {
"description": "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. ServiceAccountName of ExecutorConfig must be specified if this value is false.",
"type": "boolean"
},
"dnsConfig": {
"description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.",
"$ref": "#/definitions/io.k8s.api.core.v1.PodDNSConfig"
},
"dnsPolicy": {
"description": "Set DNS policy for workflow pods. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.",
"type": "string"
},
"entrypoint": {
"description": "Entrypoint is a template reference to the starting point of the io.argoproj.workflow.v1alpha1.",
"type": "string"
},
"executor": {
"description": "Executor holds configurations of executor containers of the io.argoproj.workflow.v1alpha1.",
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.ExecutorConfig"
},
"hooks": {
"description": "Hooks holds the lifecycle hook which is invoked at lifecycle of step, irrespective of the success, failure, or error status of the primary step",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.LifecycleHook"
}
},
"hostAliases": {
"type": "array",
"items": {
"$ref": "#/definitions/io.k8s.api.core.v1.HostAlias"
},
"x-kubernetes-patch-merge-key": "ip",
"x-kubernetes-patch-strategy": "merge"
},
"hostNetwork": {
"description": "Host networking requested for this workflow pod. Default to false.",
"type": "boolean"
},
"imagePullSecrets": {
"description": "ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod",
"type": "array",
"items": {
"$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference"
},
"x-kubernetes-patch-merge-key": "name",
"x-kubernetes-patch-strategy": "merge"
},
"metrics": {
"description": "Metrics are a list of metrics emitted from this Workflow",
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.Metrics"
},
"nodeSelector": {
"description": "NodeSelector is a selector which will result in all pods of the workflow to be scheduled on the selected node(s). This is able to be overridden by a nodeSelector specified in the template.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"onExit": {
"description": "OnExit is a template reference which is invoked at the end of the workflow, irrespective of the success, failure, or error of the primary io.argoproj.workflow.v1alpha1.",
"type": "string"
},
"parallelism": {
"description": "Parallelism limits the max total parallel pods that can execute at the same time in a workflow",
"type": "integer"
},
"podDisruptionBudget": {
"description": "PodDisruptionBudget holds the number of concurrent disruptions that you allow for Workflow's Pods. Controller will automatically add the selector with workflow name, if selector is empty. Optional: Defaults to empty.",
"$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudgetSpec"
},
"podGC": {
"description": "PodGC describes the strategy to use when deleting completed pods",
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.PodGC"
},
"podMetadata": {
"description": "PodMetadata defines additional metadata that should be applied to workflow pods",
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.Metadata"
},
"podPriorityClassName": {
"description": "PriorityClassName to apply to workflow pods.",
"type": "string"
},
"podSpecPatch": {
"description": "PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits).",
"type": "string"
},
"priority": {
"description": "Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first.",
"type": "integer"
},
"retryStrategy": {
"description": "RetryStrategy for all templates in the io.argoproj.workflow.v1alpha1.",
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.RetryStrategy"
},
"schedulerName": {
"description": "Set scheduler name for all pods. Will be overridden if container/script template's scheduler name is set. Default scheduler will be used if neither specified.",
"type": "string"
},
"securityContext": {
"description": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.",
"$ref": "#/definitions/io.k8s.api.core.v1.PodSecurityContext"
},
"serviceAccountName": {
"description": "ServiceAccountName is the name of the ServiceAccount to run all pods of the workflow as.",
"type": "string"
},
"shutdown": {
"description": "Shutdown will shutdown the workflow according to its ShutdownStrategy",
"type": "string"
},
"suspend": {
"description": "Suspend will suspend the workflow and prevent execution of any future steps in the workflow",
"type": "boolean"
},
"synchronization": {
"description": "Synchronization holds synchronization lock configuration for this Workflow",
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.Synchronization"
},
"templateDefaults": {
"description": "TemplateDefaults holds default template values that will apply to all templates in the Workflow, unless overridden on the template-level",
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.Template"
},
"templates": {
"description": "Templates is a list of workflow templates used in a workflow MaxItems is an artificial limit to limit CEL validation costs - see note at top of file",
"type": "array",
"items": {
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.Template"
},
"x-kubernetes-patch-merge-key": "name",
"x-kubernetes-patch-strategy": "merge"
},
"tolerations": {
"description": "Tolerations to apply to workflow pods.",
"type": "array",
"items": {
"$ref": "#/definitions/io.k8s.api.core.v1.Toleration"
},
"x-kubernetes-patch-merge-key": "key",
"x-kubernetes-patch-strategy": "merge"
},
"ttlStrategy": {
"description": "TTLStrategy limits the lifetime of a Workflow that has finished execution depending on if it Succeeded or Failed. If this struct is set, once the Workflow finishes, it will be deleted after the time to live expires. If this field is unset, the controller config map will hold the default values.",
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.TTLStrategy"
},
"volumeClaimGC": {
"description": "VolumeClaimGC describes the strategy to use when deleting volumes from completed workflows",
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.VolumeClaimGC"
},
"volumeClaimTemplates": {
"description": "VolumeClaimTemplates is a list of claims that containers are allowed to reference. The Workflow controller will create the claims at the beginning of the workflow and delete the claims upon completion of the workflow",
"type": "array",
"items": {
"$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"
}
},
"volumes": {
"description": "Volumes is a list of volumes that can be mounted by containers in a io.argoproj.workflow.v1alpha1.",
"type": "array",
"items": {
"$ref": "#/definitions/io.k8s.api.core.v1.Volume"
},
"x-kubernetes-patch-merge-key": "name",
"x-kubernetes-patch-strategy": "merge"
},
"workflowMetadata": {
"description": "WorkflowMetadata contains some metadata of the workflow to refer to",
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.WorkflowMetadata"
},
"workflowTemplateRef": {
"description": "WorkflowTemplateRef holds a reference to a WorkflowTemplate for execution",
"$ref": "#/definitions/io.argoproj.workflow.v1alpha1.WorkflowTemplateRef"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/argo-workflows-io-argoproj-workflow-v1alpha1-workflow-spec"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.