API · v1 · stabil
CODEMETA OSDeveloper Center
Konsole öffnen
Entity · project_positions

Project Position Schema

Schema-ID
project_position
Collection
project_positions
Permissions
  • Lesenproject_position_view
  • Anlegenproject_position_create
  • Ändernproject_position_edit
  • Löschenproject_position_delete
Beziehungen

Felder

Project Position Schema

project_positions4 Permissions

ADR 0310 — optional billing/grouping layer between a project and its tasks; carries the billing model and aggregates the effort of its tasks.

projectIduuidoptional→ project

Owning project UUID.

positionNumberintegeroptional

Position number carried over from the sales order (display / ordering).

≥ 0nullable
sortOrderintegeroptional

Manual sort order within the project (drag & drop).

≥ 0nullable
titlestringerforderlich

Position title.

1–200 Zeichen
generatedTitlestringoptional

ADR 1018 — title materialise_order last generated from the order line. While `title` still equals it, nobody renamed the position and the title follows a renamed weclapp line; null on rows created before the field (the history CREATE entry is used instead).

read-onlynullable
descriptionstringoptional

Position description.

max 4000 Zeichennullable
statusstringerforderlich

Position lifecycle status.

OPENDONECANCELLED
billingModelstringerforderlich

flat_rate = fixed price, bookings are a profitability metric only (never hard-blocked). time_and_material = billed by actual bookings; an optional cap lives on the task (limitMode).

flat_ratetime_and_material
plannedMinutesintegeroptional

Planned effort in minutes (Soll).

≥ 0nullable
plannedAmountstringoptional

Planned / sold net amount in EUR (Soll), decimal string.

Patternnullable
plannedAmountCurrencystringoptional

ISO 4217 currency for plannedAmount (default EUR when null).

Patternnullable
quantitystringoptional

Sold quantity carried over from the order item (decimal string).

Patternnullable
unitPricestringoptional

Unit price carried over from the order item (decimal string).

Patternnullable
netAmountstringoptional

Net amount carried over from the order item (decimal string).

Patternnullable
orderItemSnapshotobjectoptional

Frozen copy of the sold order line, written ONCE when the position is created from a sales order (order intake / order import) and never refreshed. quantity/unitPrice/netAmount above follow the order on every intake run; this snapshot keeps the sold terms visible for the price check even after the line was edited or deleted in weclapp. Server-managed (protected).

read-onlynullable
quantitystringoptional
Patternnullable
unitNamestringoptional
max 100 Zeichennullable
unitPricestringoptional
Patternnullable
discountPercentstringoptional
Patternnullable
netAmountstringoptional
Patternnullable
weclappItemIdstringoptional
max 64 Zeichennullable
consumedMinutesintegeroptional

Sum of loggedMinutes of the tasks under this position (cached rollup). ADR 0924: rounded working time.

≥ 0read-onlynullable
consumedRealMinutesintegeroptional

ADR 0924: the same bookings as consumedMinutes summed as NET working time (cached rollup) — the "(real)" part of the display.

≥ 0read-onlynullable
consumedAmountstringoptional

Sum of consumedAmount of the tasks under this position (cached rollup, EUR).

Patternread-onlynullable
articleIduuidoptional

Optional linked article UUID.

nullable
salesOrderIduuidoptional

Sales order this position was materialised from (order-import path).

read-onlynullable
salesOrderItemIdstringoptional

ID of the orderItem inside the linked sales_order (matches salesOrder.orderItems[].id).

read-onlynullable
salesOrderItemSourcestringoptional

Origin of the linked sales-order item — internal or weclapp.

internalweclappnull
read-onlynullable
weclappBillingModestringoptional

ADR 0634 — wie diese Position im weclapp-Auftrag abgerechnet wird. `position` (Default, auch bei null) = die Auftragsposition bleibt stehen und wird bebucht/fakturiert wie verkauft; `replace` = die Auftragsposition ist eine Nicht-DL-Platzhalterposition und wird beim Abrechnungsabschluss durch die gerenderten Buchungspositionen ERSETZT. Vorbelegt aus der Intake-Regel (`position.weclappBilling`), danach im Projektabrechnungs-Dialog änderbar; ein Re-Import überschreibt den Wert bewusst NICHT.

positionreplacenull
nullable
billedAtdatetimeoptional

When this flat-rate position was put on a Leistungsnachweis (per-project billing run). Null = not billed yet.

read-onlynullable
performanceRecordIduuidoptional

Leistungsnachweis this position was billed on. Server-managed.

read-onlynullable
invoiceIduuidoptional

Invoice this position was billed on. Server-managed.

read-onlynullable

Standard-Endpoints

Diese Resource folgt dem generischen CRUD-Vertrag der Plattform. Lesen Sie die Konventionen für Pagination, Idempotenz, Optimistic Locking und Audit. Die wichtigsten Endpoints:

  • GET /api/v1/project_positions — Liste, paginiert + filterbar
  • GET /api/v1/project_positions/<id> — Einzelne Entity
  • POST /api/v1/project_positions — Anlegen
  • PATCH /api/v1/project_positions/<id> — Teil-Update
  • DELETE /api/v1/project_positions/<id> — Soft-Delete
  • GET /api/v1/project_positions/<id>/timeline — Audit + Aktivitäten

Suche