{
	"Internal": {
		"description": "An internal server error with a proprietary message.",
		"message": "Server error: {message}",
		"http": 500,
		"tags": [
			"General"
		]
	},
	"NotFound": {
		"description": "To be used if the requested resource does not exist. Note: There are specialized errors for missing jobs (JobNotFound), files (FileNotFound), etc. Unsupported endpoints MAY send an 'FeatureUnsupported' (501) error.",
		"message": "Resource not found.",
		"http": 404,
		"tags": [
			"General"
		]
	},
	"FeatureUnsupported": {
		"description": "The back-end responds with this error whenever an endpoint is specified in the openEO API, but is not supported.",
		"message": "Feature not supported.",
		"http": 501,
		"tags": [
			"General"
		]
	},
	"InfrastructureMaintenance": {
		"description": "Service is currently not available as the infrastructure is currently undergoing maintenance work.",
		"message": "Service is not available at the moment due to maintenance work. Please try again later or contact our support.",
		"http": 503,
		"tags": [
			"General"
		]
	},
	"InfrastructureBusy": {
		"description": "Service is generally available, but the infrastructure can't handle it at the moment as too many requests are processed.",
		"message": "Service is not available at the moment due to overloading. Please try again later or contact our support.",
		"http": 503,
		"tags": [
			"General"
		]
	},
	"UnsupportedApiVersion": {
		"description": "The service doesn't support the openEO API version specified in the request URL. Clients should check well-known document for supported versions.",
		"message": "The requested API version '{version}' is not supported.",
		"http": 404,
		"tags": [
			"General"
		]
	},
	"RequestTimeout": {
		"description": "The request took too long and timed out.",
		"message": "Request timed out.",
		"http": 408,
		"tags": [
			"General",
			"Data Processing"
		]
	},
	"BudgetInvalid": {
		"description": "The budget is too low as it is either smaller than or equal to 0 or below the costs.",
		"message": "The specified budget is too low.",
		"http": 400,
		"tags": [
			"Batch Jobs",
			"Secondary Services",
			"Data Processing"
		]
	},
	"EstimateComplexity": {
		"description": "The process is too complex to calculate an estimate, e.g. due to a UDF or other processes that are complex to estimate costs reliably.",
		"message": "The process is too complex to calculate an estimate.",
		"http": 500,
		"tags": [
			"Batch Jobs"
		]
	},
	"NoDataForUpdate": {
		"description": "For PATCH requests: No valid data specified at all.",
		"message": "No data specified to be updated.",
		"http": 400,
		"tags": [
			"Batch Jobs",
			"Secondary Services"
		]
	},
	"PropertyNotEditable": {
		"description": "For PATCH requests: The specified parameter can't be updated. It is read-only.",
		"message": "The specified property '{property}' is read-only.",
		"http": 400,
		"tags": [
			"Batch Jobs",
			"Secondary Services"
		]
	},
	"CollectionNotFound": {
		"description": "The requested collection does not exist.",
		"message": "Collection '{identifier}' does not exist.",
		"http": 404,
		"tags": [
			"EO Data Discovery"
		]
	},
	"StorageFailure": {
		"description": "Server couldn't store file(s) due to server-side reasons.",
		"message": "Unable to store files due to a server error. Please try again later or contact our support.",
		"http": 500,
		"tags": [
			"File Management",
			"Batch Jobs"
		]
	},
	"StorageQuotaExceeded": {
		"description": "The storage quota has been exceeded by the user.",
		"message": "Your storage quota has been exceeded.",
		"http": 400,
		"tags": [
			"File Management",
			"Batch Jobs"
		]
	},
	"FileNotFound": {
		"description": "The requested file does not exist.",
		"message": "File '{file}' does not exist.",
		"http": 404,
		"tags": [
			"File Management"
		]
	},
	"FilePathInvalid": {
		"description": "The specified path is invalid or not accessible. Path could contain invalid characters, point to an existing folder or a location outside of the user folder.",
		"message": "File path is invalid: {reason}",
		"http": 400,
		"tags": [
			"File Management"
		]
	},
	"FileOperationUnsupported": {
		"description": null,
		"message": "The file operation is not supported for the specified path.",
		"http": 400,
		"tags": [
			"File Management"
		]
	},
	"FolderOperationUnsupported": {
		"description": "The specified path is a folder and the operation is only supported for files.",
		"message": "Operation is only supported for files, not folders.",
		"http": 400,
		"tags": [
			"File Management"
		]
	},
	"ContentTypeInvalid": {
		"description": "The specified media (MIME) type used in the Content-Type header is not allowed.",
		"message": "The media type is not supported. Allowed: {types}",
		"http": 400,
		"tags": [
			"File Management",
			"General"
		]
	},
	"FileTypeInvalid": {
		"description": "File format or file extension is not allowed.",
		"message": "File format {type} not allowed. Allowed file formats: {types}",
		"http": 400,
		"tags": [
			"File Management"
		]
	},
	"FileSizeExceeded": {
		"description": "File exceeds allowed maximum file size.",
		"message": "File size it too large. Maximum file size: {size}",
		"http": 400,
		"tags": [
			"File Management"
		]
	},
	"FileContentInvalid": {
		"description": "The content of the file is invalid.",
		"message": "File content is invalid.",
		"http": 400,
		"tags": [
			"File Management"
		]
	},
	"FileLocked": {
		"description": "The file is locked by a running job or another process.",
		"message": "File '{file}' is locked by another process.",
		"http": 400,
		"tags": [
			"File Management"
		]
	},
	"ProcessGraphNotFound": {
		"description": "The requested user-defined process does not exist. To be used for all endpoints starting with `/process_graphs`.",
		"message": "User-defined process '{identifier}' does not exist.",
		"http": 404,
		"tags": [
			"User-Defined Processes"
		]
	},
	"ProcessInvalid": {
		"description": "The given process definition is invalid, which usually means that the process metadata is invalid.",
		"message": "Invalid process specified.",
		"http": 400,
		"tags": [
			"User-Defined Processes",
			"Batch Jobs",
			"Secondary Services",
			"Data Processing"
		]
	},
	"ProcessGraphMissing": {
		"description": "The process doesn't contain a process graph. For jobs, services, and sync. processing the parameter `process` must contain a `process_graph`.",
		"message": "Invalid process specified. It doesn't contain a process graph.",
		"http": 400,
		"tags": [
			"User-Defined Processes",
			"Batch Jobs",
			"Secondary Services",
			"Data Processing"
		]
	},
	"ProcessGraphInvalid": {
		"description": "The process doesn't contain a valid process graph, which means it doesn't comply to the general structure / schema.",
		"message": "Invalid process graph specified.",
		"http": 400,
		"tags": [
			"User-Defined Processes",
			"Batch Jobs",
			"Secondary Services",
			"Data Processing"
		]
	},
	"PredefinedProcessExists": {
		"description": "If a user wants to store a user-defined process with the id of a predefined process.",
		"message": "A predefined process with the given identifier exists.",
		"http": 400,
		"tags": [
			"User-Defined Processes"
		]
	},
	"ProcessGraphComplexity": {
		"description": "The process graph is computationally too demanding for synchronous processing and will likely time out. Please use a batch job instead.",
		"message": "The process graph is too demanding for synchronous processing. Please use a batch job instead.",
		"http": 400,
		"tags": [
			"Data Processing"
		]
	},
	"ProcessUnsupported": {
		"description": "A process (predefined or user-defined) with the specified identifier is not available. To be used when validating or executing process graphs.",
		"message": "Process with identifier '{process}' is not available in namespace '{namespace}'.",
		"http": 400,
		"tags": [
			"Data Processing"
		]
	},
	"ProcessParameterUnsupported": {
		"description": null,
		"message": "Process '{process}' does not support parameter '{parameter}'.",
		"http": 400,
		"tags": [
			"Data Processing"
		]
	},
	"ProcessParameterInvalid": {
		"description": null,
		"message": "The value passed for parameter '{parameter}' in process '{process}' is invalid: {reason}",
		"http": 400,
		"tags": [
			"Data Processing"
		]
	},
	"ProcessParameterRequired": {
		"description": null,
		"message": "Process '{process}' parameter '{parameter}' is required.",
		"http": 400,
		"tags": [
			"Data Processing"
		]
	},
	"JobNotFound": {
		"description": "The requested job does not exist.",
		"message": "The batch job '{identifier}' does not exist.",
		"http": 404,
		"tags": [
			"Batch Jobs"
		]
	},
	"JobLocked": {
		"description": "The job is currently locked due to a running batch computation and can't be modified meanwhile.",
		"message": "Batch job is locked due to a queued or running batch computation.",
		"http": 400,
		"tags": [
			"Batch Jobs"
		]
	},
	"JobNotFinished": {
		"description": null,
		"message": "Batch job has not finished computing the results yet. Please try again later or contact our support.",
		"http": 400,
		"tags": [
			"Batch Jobs"
		]
	},
	"JobNotStarted": {
		"description": "Job has not been queued or started yet or was canceled and not restarted by the user.",
		"message": "Batch job must be started first.",
		"http": 400,
		"tags": [
			"Batch Jobs"
		]
	},
	"ResultLinkExpired": {
		"description": "The signed URLs for batch job results have expired. Please send a request to `GET /jobs/{job_id}/results` to refresh the links.",
		"message": "The link to the batch job result has expired. Please request the results again.",
		"http": 410,
		"tags": [
			"Batch Jobs"
		]
	},
	"PaymentRequired": {
		"description": "The budget required to fulfil the request is insufficient.",
		"message": "The budget required to fulfil the request is not sufficient. A payment is required first.",
		"http": 402,
		"tags": [
			"Batch Jobs",
			"Secondary Services"
		]
	},
	"BillingPlanInvalid": {
		"description": "The billing plan is not on the list of available plans.",
		"message": "The billing plan is invalid.",
		"http": 400,
		"tags": [
			"Batch Jobs",
			"Secondary Services",
			"Data Processing"
		]
	},
	"BillingPlanMissing": {
		"description": "No billing plan has been specified by the user and the billing plan can't be determined unambiguously.",
		"message": "A billing plan must be specified.",
		"http": 400,
		"tags": [
			"Batch Jobs",
			"Secondary Services",
			"Data Processing"
		]
	},
	"AuthenticationRequired": {
		"description": "The client did not provide any authentication details for a resource requiring authentication or the provided authentication details are not correct.",
		"message": "Unauthorized.",
		"http": 401,
		"tags": [
			"Account Management"
		]
	},
	"AuthenticationSchemeInvalid": {
		"description": "Invalid authentication scheme (e.g. Bearer).",
		"message": "Authentication method not supported.",
		"http": 403,
		"tags": [
			"Account Management"
		]
	},
	"TokenInvalid": {
		"description": null,
		"message": "Authorization token has expired or is invalid. Please authenticate again.",
		"http": 403,
		"tags": [
			"Account Management"
		]
	},
	"CredentialsInvalid": {
		"description": null,
		"message": "Credentials are not correct.",
		"http": 403,
		"tags": [
			"Account Management"
		]
	},
	"PermissionsInsufficient": {
		"description": "Forbidden. The client did provided correct authentication details, but the privileges/permissions of the provided credentials do not allow to request the resource.",
		"message": "Forbidden. The permissions of the authenticated account do not allow to request the requested resource.",
		"http": 403,
		"tags": [
			"Account Management"
		]
	},
	"ServiceNotFound": {
		"description": "The requested secondary service does not exist.",
		"message": "Service '{identifier}' does not exist.",
		"http": 404,
		"tags": [
			"Secondary Services"
		]
	},
	"ServiceUnsupported": {
		"description": null,
		"message": "Service type '{type}' is not supported.",
		"http": 400,
		"tags": [
			"Secondary Services"
		]
	},
	"ServiceConfigUnsupported": {
		"description": "Refers to the secondary service `configuration` object.",
		"message": "Service parameter '{parameter}' is not supported.",
		"http": 400,
		"tags": [
			"Secondary Services"
		]
	},
	"ServiceConfigInvalid": {
		"description": "Refers to the secondary service `configuration` object.",
		"message": "The value passed for the service parameter '{parameter}' is invalid: {reason}",
		"http": 400,
		"tags": [
			"Secondary Services"
		]
	},
	"ServiceConfigRequired": {
		"description": "Refers to the secondary service `configuration` object.",
		"message": "Service parameter '{parameter}' is required.",
		"http": 400,
		"tags": [
			"Secondary Services"
		]
	}
}