Skip to main content

API-Coils

note

Preliminary: subject to change

The Coils API exposes the coils currently in inventory and provides a synchronous move endpoint. The move endpoint writes through to Classic (the legacy coils.dbf STORELOC column) so the legacy operator screen and Eclipse Pro stay in sync.

See API-Getting Connected for the Authorization: ApiKey ... header.

Conventions

  • Location values are bare codes like "MACH01" or "WHSE00", not Raven document ids. The internal "Location/" prefix is never returned and is not accepted in requests.
  • Completed coils (isComplete == true) are excluded by default from list/search results. Use includeComplete=true to include them.

Endpoints

GET /api/v1/coils (list coils)

A flat list of coils. For richer filters, sort, and a total-count envelope, use GET /api/v1/coils/search instead.

Parameters
nametypedata typedescription
materialCodeoptionalstringExact match on material code.
locationoptionalstringExact match on the coil's current storage location code.
includeCompleteoptionalboolWhen true, include coils marked complete. Default false.
skipoptionalintItems to skip. Default 0.
takeoptionalintItems to take. Default 100, max 1000.
Responses
http codecontent-typeresponse
200application/jsonArray of coils (possibly empty).
401application/jsonMissing or invalid API key.
Response shape
[
{
"coilId": "1006779584",
"materialCode": "26GA-FG",
"description": "26GA FOREST GREEN",
"materialType": "STEEL",
"color": "FOREST GREEN",
"gauge": 26,
"widthIn": 36.0,
"lengthStartFt": 2500.0,
"lengthRemainingFt": 1842.0,
"currentWeightLbs": 4818.7,
"isComplete": false,
"isStarted": true,
"location": "MACH01",
"dateIn": "2026-03-14T00:00:00",
"vendorName": "MetalCo",
"heatNumber": "H12345",
"purchaseOrder": "PO-9876"
}
]
Example cURL
curl -H "Authorization: ApiKey YOUR_KEY" \
"http://localhost:8080/api/v1/coils?materialCode=26GA-FG&location=MACH01"
GET /api/v1/coils/{coilId} (get one coil)
Parameters
namelocationdata typedescription
coilIdpathstringThe coil id.
Responses
http codecontent-typeresponse
200application/jsonCoil object (same shape as the list endpoint).
404application/json{ "errors": ["No coil with id ..."] }.
401application/jsonMissing or invalid API key.
Example cURL
curl -H "Authorization: ApiKey YOUR_KEY" \
"http://localhost:8080/api/v1/coils/1006779584"
POST /api/v1/coils/{coilId}/location (move a coil to a different location)

Moves a single coil. The move is synchronous — when this returns 200 OK, both Classic and Eclipse Pro have been updated.

Order of operations:

  1. The Eclipse Agent is called to update coils.dbf STORELOC in Classic.
  2. If the Agent succeeds, Eclipse Pro's CoilExt.LocationId is updated to match.

If the Agent is offline or rejects the update, no Eclipse Pro state is changed — the two stores cannot half-apply. The Classic operator screen will reflect the new location on its next refresh.

Parameters
namelocationdata typedescription
coilIdpathstringThe coil id.
Body
{
"location": "MACH01"
}
fieldrequireddescription
locationyesDestination location code. Must match an existing LocationV1.code.
Responses
http codecontent-typeresponse
200The move was applied in both Classic and Eclipse Pro.
400application/json{ "errors": [...] }. location missing, destination unknown, coil has no CoilExt, or the Agent rejected.
404application/json{ "errors": ["No coil with id ..."] }.
503application/json{ "errors": ["AgentNotAvailable"] }. The Classic agent is offline; nothing changed.
401application/jsonMissing or invalid API key.
Example cURL
curl -X POST \
-H "Authorization: ApiKey YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"location":"MACH01"}' \
"http://localhost:8080/api/v1/coils/1006779584/location"