ARCNM

API reference

Machines

The Machines API lets you update machines.

The Machines API lets you update machines.

Auto-generated from the public OpenAPI spec — this page never drifts from the running API. Base URL https://api.arcnm.io. Authenticate with the X-API-Key header (see Authentication).

Update Machine

PATCH /api/v1/machines/{machine_id}

Parameters

Name In Type Required Description
machine_id path string yes Identifier of the machine.

Request body (application/json)

Field Type Required Description
capability_overrides object no Capability fields to change. For a library-derived machine these merge over the library default (sparse override); for a bespoke machine they merge into its own capability matrix.
hourly_rate_eur number no New flat machine-hour rate in EUR/h; omit to leave.
klass milling.3axis_vmc | milling.5axis_full | milling.indexable_3plus2 | turning.2axis_cnc | turning.live_tool | turning.swiss_type | turning.mill_integrex | press_brake | laser_cutter | plasma_cutter | guillotine_shear | tube_bender | turret_punch | waterjet | wire_edm | sinter.dmls | fdm_industrial | injection_molding_press | grinder.surface | grinder.cylindrical | saw.band | saw.circular no Correct the machine's process class (e.g. a lathe entered from a milling template). The machine is re-based on the new class's standard capability matrix and detached from its catalogue entry, because that entry describes a different kind of machine; name, rates and fleet memberships are kept. Omit to leave.
name string no New machine name; omit to leave.
rate_operator_eur_per_h number no Operator wage already contained in hourly_rate_eur, in EUR/h; omit to leave. 0 means the rate covers the machine only and operator labour is billed separately — the default. Set it when the rate is all-in, so the operator is not charged twice.
rate_operator_share number no Share of an operator this machine consumes while it runs (0-1); omit to leave. Setup is always fully attended. Unset falls back to the machine class default.

Request

curl -X PATCH https://api.arcnm.io/api/v1/machines/{machine_id} \
  -H "X-API-Key: $ARCNM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "capability_overrides": {},
    "hourly_rate_eur": 0,
    "klass": "milling.3axis_vmc",
    "name": "string",
    "rate_operator_eur_per_h": 0,
    "rate_operator_share": 0
  }'
import requests

resp = requests.patch(
    "https://api.arcnm.io/api/v1/machines/{machine_id}",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "capability_overrides": {},
        "hourly_rate_eur": 0,
        "klass": "milling.3axis_vmc",
        "name": "string",
        "rate_operator_eur_per_h": 0,
        "rate_operator_share": 0
    },
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.arcnm.io/api/v1/machines/{machine_id}", {
  method: "PATCH",
  headers: {
    "X-API-Key": process.env.ARCNM_API_KEY!,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "capability_overrides": {},
    "hourly_rate_eur": 0,
    "klass": "milling.3axis_vmc",
    "name": "string",
    "rate_operator_eur_per_h": 0,
    "rate_operator_share": 0
  }),
})
const data = await resp.json()

Responses

Status Description
200 Successful Response
422 Validation Error

Errors

Standard error responses — see the Errors catalog for the full envelope, request_id, and retry-safety table.

Status Code When
401 invalid_api_key Missing, malformed, or revoked API key.
403 insufficient_scope The key is valid but lacks a scope this endpoint requires.
404 not_found A referenced resource doesn't exist or isn't visible to your organisation.
409 conflict A conflicting change, or an Idempotency-Key reused with a different body.
429 rate_limited Per-key or per-org rate limit exceeded — back off with jitter and retry.

Response body 200

Field Type Description
burden_rate_eur number Overhead burden added on top of the machine-hour rate, in EUR per hour.
capabilities object Raw stored capability matrix; empty for library-derived instances (see effective_capabilities).
hourly_rate_eur number Machine-hour rate in EUR per hour.
id string Unique identifier of the machine definition.
klass string Machine class (e.g. milling, turning, laser_cutter).
model_no string Vendor model number of the machine.
name string Human-readable name of the machine.
rate_operator_eur_per_h number Operator wage already contained in hourly_rate_eur, in EUR per hour. 0 means the rate covers the machine only and operator labour is billed separately.
rate_operator_share number Share of an operator this machine consumes while it runs (0-1); setup is always fully attended. Null falls back to the machine class default.
source string 'library' if instantiated from a catalog entry, else 'custom'.
subclass string Machine subclass refining the class (e.g. small, medium, large).
valid_from string ISO date (YYYY-MM-DD) from which this machine definition is effective.
valid_to string ISO date (YYYY-MM-DD) the machine stops being effective; null = open-ended.
vendor string Manufacturer or vendor of the machine.

Example response

{
  "burden_rate_eur": 0,
  "capabilities": {},
  "hourly_rate_eur": 0,
  "id": "string",
  "klass": "string",
  "model_no": "string",
  "name": "string",
  "rate_operator_eur_per_h": 0,
  "rate_operator_share": 0,
  "source": "custom",
  "subclass": "string",
  "valid_from": "string",
  "valid_to": "string",
  "vendor": "string"
}