The Enterprise GIS API describes its tools in the structure of OGC API – Processes: a process list, and each tool's inputs and outputs as JSON Schema. What it offers, and what it does not claim.
The Enterprise GIS API can describe its tools in the structure of OGC API – Processes (Part 1: Core): a list of processes, and for each process its inputs and outputs as JSON Schema. Software that already speaks the standard — a workflow engine, a desktop GIS plugin, an integration layer — can then discover what Hyz offers and what each tool takes without learning Hyz's own catalogue format.
It is generated from the same tool definitions the Portal's panels, the tool reference and Hyz MCP are generated from, so it always matches what the tools really accept.
Hyz does not claim conformance to OGC API – Processes. This is a description in the standard's shape, for discovery. Three things differ from the standard, and each process says so:
| The standard | Hyz |
|---|---|
A process is executed at /processes/{id}/execution with a JSON document |
A process is executed on its own route, as multipart form data — files travel as files. The execute link gives the address and the media type |
A landing page and a /conformance declaration |
Neither is served |
A job's status at /jobs/{id} in the standard's status document |
A job's status is Hyz's own document at /jobs/{jobId} |
Use it to find out what exists and how to call it; call the tools as the tool reference describes.
GET /api/enterprise/v1/gis/processes
Authenticated like every call of the Enterprise GIS API, with a key of a Console application. It returns the tools that key may run. The body is the document itself, not the Hyz envelope.
{
"processes": [
{
"id": "buffer-generator",
"title": "Buffer Generator",
"description": "Create buffer zones around points, lines or polygons…",
"version": "2026.10.2",
"keywords": ["geometry"],
"jobControlOptions": ["sync-execute", "async-execute"],
"outputTransmission": ["value"],
"haiyz": {
"toolKey": "buffer-generator",
"conformance": "not claimed: a description in the structure of OGC API – Processes",
"execution": "multipart/form-data",
"limited": true,
"input": "vector",
"output": "layer"
},
"links": [
{ "rel": "self", "href": "/api/enterprise/v1/gis/processes/buffer-generator" },
{ "rel": "http://www.opengis.net/def/rel/ogc/1.0/execute", "type": "multipart/form-data", "href": "/api/enterprise/v1/gis/buffer" }
]
}
],
"links": [
{ "rel": "self", "href": "/api/enterprise/v1/gis/processes" },
{ "rel": "service-desc", "href": "/api/enterprise/v1/gis/openapi.json" }
]
}
id is the tool's permanent id. A tool's older names keep working as routes and are not listed; the tool names them in haiyz.aliases.version is the version of the tool's behaviour. A stored run records it, so you can say later which version produced a file.jobControlOptions includes async-execute for a tool that can also run as a job.haiyz.limited says whether a run counts against the enterprise's tool allowance.?lang=ar for Arabic titles and descriptions.GET /api/enterprise/v1/gis/processes/{id}
Adds inputs and outputs:
{
"id": "buffer-generator",
"inputs": {
"file": {
"title": "Input file",
"minOccurs": 1,
"maxOccurs": 1,
"schema": { "oneOf": [{ "type": "string", "contentEncoding": "binary", "contentMediaType": "application/geo+json" }] }
},
"distance_m": {
"title": "Buffer distance",
"minOccurs": 0,
"maxOccurs": 1,
"schema": { "type": "number", "minimum": -100000, "maximum": 100000, "default": 100, "x-haiyz-unitInput": "unit", "x-haiyz-boundsUnit": "m" },
"x-haiyz-usedWhen": { "field": "distance_by", "equals": "value" }
},
"unit": { "title": "Distance unit", "schema": { "type": "string", "enum": ["m", "km", "ft", "mi"], "default": "m" } }
},
"outputs": {
"result": { "schema": { "type": "object", "required": ["key"] } }
}
}
Reading an input:
minOccurs and maxOccurs say whether it is required and how many times it may be sent — a merge takes its files input two to five times.schema carries the options (enum), the bounds (minimum, maximum) and the default.x-haiyz-usedWhen marks an input that matters only while another holds a value: the buffer's distance_m is used when distance_by is value.x-haiyz-unitInput marks a distance: its value is in the unit that input names, and its bounds are in metres whatever the unit.x-haiyz-encoding: "json-text" marks an array input — several columns, a list of statistics — that is sent as JSON text in one form field.x-haiyz-columnOf marks a column name and says which file input it is a column of.An unknown id, or a tool the key may not run, answers 404 with the standard's exception document.
Send the inputs as multipart form fields to the process's execute link:
POST /api/enterprise/v1/gis/buffer
Content-Type: multipart/form-data
file[email protected]
target_format=geojson
distance_m=250
The answer is the Hyz envelope described in the API reference: data.key is the stored result, and the run's artifacts are downloaded from /runs/{runId}/artifacts/{artifactId}. A request the tool's rules refuse answers 422 naming the field and the rule.