ACMEbuild API (0.2.0)

Download OpenAPI specification:

License: Apache-2.0

Production system of ACME analog Inc. (formerly ACMEprod). System of record for products, bills of materials (BOM) and production planning. Core capabilities:

  • holds the BOM per product (raw materials from ACMEsupply + labor and energy units/kWh),

  • forecasts the material demand (supply projection) from the open production contracts (ACMEcrm) and the available capacity (workers/shifts, from ACMEhr),

  • answers via the feasibility API whether a contract (products, quantities, delivery date) can be fulfilled — and if not, which resource is scarce (worker or material),

  • tracks the shop floor — production orders on the planning board (/production-orders), the weekly shift plan (/shift-plan) and the live machine monitor with OEE (/machines) that back the ACMEbuild "Fertigung" UI.

Roles (ACMEbase): WATCH reads, WORK writes operationally, ADMIN maintains master data (products/BOM). The role required per operation is given under x-required-role.

Version 0.2.0 adds the shop-floor resources (production orders, shift plan, machines) the Build frontend persists; they extend but do not change the v0.1.0 planning surface.

BOM

Products and their bills of materials.

All bills of materials

Authorizations:
bearerAuth

Responses

Response Schema: application/json
Array
productId
required
string
laborUnits
required
number

Labor units per piece.

energyUnits
required
number

Energy per piece (kWh).

required
Array of objects (BomLine)

Response samples

Content type
application/json
[
  • {
    • "productId": "string",
    • "laborUnits": 0,
    • "energyUnits": 0,
    • "lines": [
      ]
    }
]

Bill of materials of a product

Authorizations:
bearerAuth
path Parameters
id
required
string

Product ID.

Responses

Response Schema: application/json
productId
required
string
laborUnits
required
number

Labor units per piece.

energyUnits
required
number

Energy per piece (kWh).

required
Array of objects (BomLine)

Response samples

Content type
application/json
{
  • "productId": "string",
  • "laborUnits": 0,
  • "energyUnits": 0,
  • "lines": [
    • {
      }
    ]
}

Create/update bill of materials (master data)

Authorizations:
bearerAuth
path Parameters
id
required
string

Product ID.

Request Body schema: application/json
required
laborUnits
required
number
energyUnits
required
number
required
Array of objects (BomLine)

Responses

Response Schema: application/json
productId
required
string
laborUnits
required
number

Labor units per piece.

energyUnits
required
number

Energy per piece (kWh).

required
Array of objects (BomLine)

Request samples

Content type
application/json
{
  • "laborUnits": 0,
  • "energyUnits": 0,
  • "lines": [
    • {
      }
    ]
}

Response samples

Content type
application/json
{
  • "productId": "string",
  • "laborUnits": 0,
  • "energyUnits": 0,
  • "lines": [
    • {
      }
    ]
}

Planning

Production capacity and material demand projection.

Current production capacity

Planned daily capacity from factory/port workers (availability from ACMEhr) and the labor/port units per worker and day.

Authorizations:
bearerAuth

Responses

Response Schema: application/json
factoryWorkers
required
integer

Available factory workers (from ACMEhr).

laborUnitsPerWorkerDay
required
number

Labor units per worker and day.

factoryLaborUnitsPerDay
required
number

Total labor capacity/day (workers × units).

harborWorkers
required
integer

Available port workers (shipping).

harborUnitsPerWorkerDay
required
integer

Shipping units per port worker and day.

harborUnitsPerDay
required
integer

Total shipping capacity/day.

Response samples

Content type
application/json
{
  • "factoryWorkers": 0,
  • "laborUnitsPerWorkerDay": 0,
  • "factoryLaborUnitsPerDay": 0,
  • "harborWorkers": 0,
  • "harborUnitsPerWorkerDay": 0,
  • "harborUnitsPerDay": 0
}

Material demand projection

Aggregated material demand over the horizon, derived from the open production contracts (ACMEcrm) and the BOMs. Basis for procurement in ACMEsupply.

Authorizations:
bearerAuth
query Parameters
horizonDays
integer >= 1
Default: 30

Planning horizon in days.

Responses

Response Schema: application/json
horizonDays
required
integer
required
Array of objects (SupplyProjectionItem)

Response samples

Content type
application/json
{
  • "horizonDays": 0,
  • "materials": [
    • {
      }
    ]
}

Feasibility

Feasibility of a contract against capacity and material availability.

Can a contract be fulfilled?

Checks a contract specification (products, quantities, delivery date) against capacity and material availability. Non-mutating. Returns feasible and — if not — the scarce resources (worker or material) with the shortfall.

Authorizations:
bearerAuth
Request Body schema: application/json
required
required
Array of objects (FeasibilityItem) non-empty
dueDate
string <date>

Desired delivery date (leave open = earliest possible).

Responses

Response Schema: application/json
feasible
required
boolean
earliestDate
string <date>

Earliest possible delivery date at current capacity (if computable).

requiredLaborUnits
required
number

Total labor units required for the specification.

required
Array of objects (MaterialRequirement)
required
Array of objects (ScarceResource)

Scarce resources; empty when feasible=true.

Request samples

Content type
application/json
{
  • "items": [
    • {
      }
    ],
  • "dueDate": "2019-08-24"
}

Response samples

Content type
application/json
{
  • "feasible": true,
  • "earliestDate": "2019-08-24",
  • "requiredLaborUnits": 0,
  • "requiredMaterials": [
    • {
      }
    ],
  • "scarce": [
    • {
      }
    ]
}

Shopfloor

Execution layer — production orders (planning board), the weekly shift plan and the live machine monitor (OEE). Backs the ACMEbuild "Fertigung" views.

Production orders on the planning board

Open and recently closed production orders, each in one of the board stages GEPLANT · RUESTEN · IN_ARBEIT · PRUEFUNG · FERTIG. Filter by stage to fetch a single column.

Authorizations:
bearerAuth
query Parameters
stage
string (OrderStage)
Enum: "GEPLANT" "RUESTEN" "IN_ARBEIT" "PRUEFUNG" "FERTIG"

Restrict to a single board stage.

Responses

Response Schema: application/json
Array
id
required
string
orderNo
required
string

Human order number

productId
string

Product being manufactured (see /products/{id}/bom).

productName
string

Denormalised product name for display.

quantity
required
integer >= 1

Pieces to produce.

machine
string or null

Assigned machine (e.g. CNC-03), if any.

ownerInitials
string or null

Responsible planner's initials.

stage
required
string (OrderStage)
Enum: "GEPLANT" "RUESTEN" "IN_ARBEIT" "PRUEFUNG" "FERTIG"

Stage of a production order on the planning board.

dueDate
string or null <date>

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "orderNo": "string",
    • "productId": "string",
    • "productName": "string",
    • "quantity": 1,
    • "machine": "string",
    • "ownerInitials": "string",
    • "stage": "GEPLANT",
    • "dueDate": "2019-08-24"
    }
]

Create a production order

Schedules a new order; it enters the board in GEPLANT unless a stage is given.

Authorizations:
bearerAuth
Request Body schema: application/json
required
productId
required
string
quantity
required
integer >= 1
machine
string or null
ownerInitials
string or null
stage
string (OrderStage)
Enum: "GEPLANT" "RUESTEN" "IN_ARBEIT" "PRUEFUNG" "FERTIG"

Stage of a production order on the planning board.

dueDate
string or null <date>

Responses

Response Schema: application/json
id
required
string
orderNo
required
string

Human order number

productId
string

Product being manufactured (see /products/{id}/bom).

productName
string

Denormalised product name for display.

quantity
required
integer >= 1

Pieces to produce.

machine
string or null

Assigned machine (e.g. CNC-03), if any.

ownerInitials
string or null

Responsible planner's initials.

stage
required
string (OrderStage)
Enum: "GEPLANT" "RUESTEN" "IN_ARBEIT" "PRUEFUNG" "FERTIG"

Stage of a production order on the planning board.

dueDate
string or null <date>

Request samples

Content type
application/json
{
  • "productId": "string",
  • "quantity": 1,
  • "machine": "string",
  • "ownerInitials": "string",
  • "stage": "GEPLANT",
  • "dueDate": "2019-08-24"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orderNo": "string",
  • "productId": "string",
  • "productName": "string",
  • "quantity": 1,
  • "machine": "string",
  • "ownerInitials": "string",
  • "stage": "GEPLANT",
  • "dueDate": "2019-08-24"
}

Advance / edit a production order

Moves an order between board stages (drag & drop) or reassigns its machine. Non-null fields are applied; others are left unchanged.

Authorizations:
bearerAuth
path Parameters
id
required
string

Production order ID.

Request Body schema: application/json
required
stage
string (OrderStage)
Enum: "GEPLANT" "RUESTEN" "IN_ARBEIT" "PRUEFUNG" "FERTIG"

Stage of a production order on the planning board.

machine
string or null
ownerInitials
string or null

Responses

Response Schema: application/json
id
required
string
orderNo
required
string

Human order number

productId
string

Product being manufactured (see /products/{id}/bom).

productName
string

Denormalised product name for display.

quantity
required
integer >= 1

Pieces to produce.

machine
string or null

Assigned machine (e.g. CNC-03), if any.

ownerInitials
string or null

Responsible planner's initials.

stage
required
string (OrderStage)
Enum: "GEPLANT" "RUESTEN" "IN_ARBEIT" "PRUEFUNG" "FERTIG"

Stage of a production order on the planning board.

dueDate
string or null <date>

Request samples

Content type
application/json
{
  • "stage": "GEPLANT",
  • "machine": "string",
  • "ownerInitials": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "orderNo": "string",
  • "productId": "string",
  • "productName": "string",
  • "quantity": 1,
  • "machine": "string",
  • "ownerInitials": "string",
  • "stage": "GEPLANT",
  • "dueDate": "2019-08-24"
}

Weekly shift plan

The current week's shift matrix — three shifts (early/late/night) × six working days (Mon–Sat), each cell FREE, FULL or PARTIAL. Basis for the daily labor capacity.

Authorizations:
bearerAuth

Responses

Response Schema: application/json
week
string

Calendar week label

required
Array of objects (ShiftRow)

Response samples

Content type
application/json
{
  • "week": "string",
  • "rows": [
    • {
      }
    ]
}

Replace the weekly shift plan

Authorizations:
bearerAuth
Request Body schema: application/json
required
required
Array of objects (ShiftRow)

Responses

Response Schema: application/json
week
string

Calendar week label

required
Array of objects (ShiftRow)

Request samples

Content type
application/json
{
  • "rows": [
    • {
      }
    ]
}

Response samples

Content type
application/json
{
  • "week": "string",
  • "rows": [
    • {
      }
    ]
}

Machine monitor (digital twin)

Live status of the shop-floor machines with OEE and its availability / performance / quality components, plus the currently running order and its progress.

Authorizations:
bearerAuth

Responses

Response Schema: application/json
Array
id
required
string
name
required
string

Machine label

status
required
string (MachineStatus)
Enum: "RUNNING" "SETUP" "FAULT" "MAINTENANCE" "IDLE"

Live machine state driving the tile color.

oee
required
integer [ 0 .. 100 ]

Overall Equipment Effectiveness (%).

availability
required
integer [ 0 .. 100 ]

OEE availability component (%).

performance
required
integer [ 0 .. 100 ]

OEE performance component (%).

quality
required
integer [ 0 .. 100 ]

OEE quality component (%).

progress
required
integer [ 0 .. 100 ]

Progress of the running order (%).

currentOrder
string or null

Running order + product, or a note (e.g. maintenance until).

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "name": "string",
    • "status": "RUNNING",
    • "oee": 100,
    • "availability": 100,
    • "performance": 100,
    • "quality": 100,
    • "progress": 100,
    • "currentOrder": "string"
    }
]