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

Quotation Schema

Schema-ID
quotation
Collection
quotations
Permissions
  • Lesenquotation_view
  • Anlegenquotation_create
  • Ändernquotation_edit
  • Löschenquotation_delete

Felder

Quotation Schema

quotations4 Permissions

Schema for validating quotation (Angebot) entities

quotationNumberstringoptional

Auto-generated quotation number (AN-YYYY-NNNNN); in External-Master imported from weclapp commercialNumber

max 30 ZeichenDefault: nullread-onlynullable
titlestringoptional

Optional title for the quotation

max 200 ZeichenDefault: nullnullable
partyIduuiderforderlich

Recipient (customer) party UUID

contactPartyIdstringoptional

Contact person UUID at customer (PERSON)

PatternDefault: nullnullable
opportunityIdstringoptional

Source opportunity UUID (sales pipeline anchor)

PatternDefault: nullnullable
proposalIdstringoptional

Source proposal UUID (predecessor Angebotsmappe)

PatternDefault: nullnullable
assignedToIdstringoptional

Assigned MSP employee UUID

PatternDefault: nullnullable
orgUnitIdstringoptional

Responsible org unit UUID

PatternDefault: nullnullable
paymentTermIdstringoptional

Payment term reference

PatternDefault: nullnullable
positionsobject[]erforderlich

Quotation line items

Default: []
iduuiderforderlich
positionNumberintegererforderlich

Position number for sorting

≥ 0
positionTypestringerforderlich

Position type — TEXT/SECTION_HEADER/SUBTOTAL skip quantity/price validation in the editor

ITEMTEXTSECTION_HEADERSUBTOTAL
Default: "ITEM"
articleIdstringoptional

Article UUID (null for free positions)

PatternDefault: nullnullable
articleNumberstringoptional

Denormalized article number snapshot

max 100 ZeichenDefault: nullnullable
namestringoptional

Position name (snapshot, avoids drift when article changes)

max 300 ZeichenDefault: nullnullable
descriptionstringoptional

Position description or note

Default: nullnullable
unitNamestringoptional

Unit label snapshot (e.g. "Stk", "h", "Pauschal")

max 100 ZeichenDefault: nullnullable
quantitystringoptional

Quantity (null for TEXT/SECTION_HEADER positions)

PatternDefault: nullnullable
unitPriceNetstringoptional

Net unit price (null for TEXT/SECTION_HEADER positions)

PatternDefault: nullnullable
discountPercentstringoptional

Line item discount percentage (0–100)

PatternDefault: nullnullable
netAmountstringoptional

Net amount = quantity * unitPriceNet * (1 - discount/100)

PatternDefault: nullnullable
vatRatestringoptional

VAT rate, e.g. "19", "7", "0"

PatternDefault: nullnullable
accountCodestringoptional

DATEV revenue account code

max 50 ZeichenDefault: nullnullable
billingIntervalstringoptional

Billing interval for recurring positions

MONTHLYQUARTERLYSEMI_ANNUALYEARLYONE_TIMEnull
Default: nullnullable
setupFeestringoptional

One-time setup fee on top of recurring

PatternDefault: nullnullable
introTextstringoptional

Free cover-letter text shown above positions in the PDF

Default: nullnullable
footerTextstringoptional

Terms/conditions text shown below positions in the PDF

Default: nullnullable
notesstringoptional

Internal note (not visible to customer)

max 4000 ZeichenDefault: nullnullable
validUntildateerforderlich

Date until which the quotation is valid

statusstringerforderlich

Quotation lifecycle status

DRAFTSENTACCEPTEDREJECTEDEXPIREDCANCELLEDCONVERTED
Default: "DRAFT"
sentAtdatetimeoptional

Send timestamp (also lock-marker for editability)

Default: nullread-onlynullable
sentBystringoptional

User who sent the quotation

PatternDefault: nullread-onlynullable
acceptedAtdatetimeoptional

Customer acceptance timestamp

Default: nullread-onlynullable
acceptedByContactIdstringoptional

Contact party who accepted (from magic-link or internal "on behalf")

PatternDefault: nullread-onlynullable
acceptedViastringoptional

Origin of the acceptance

MAGIC_LINKINTERNAL_ON_BEHALFAPIWECLAPP_PORTALWECLAPP_BACKOFFICEnull
Default: nullread-onlynullable
rejectedAtdatetimeoptional
Default: nullread-onlynullable
rejectionReasonstringoptional
max 2000 ZeichenDefault: nullnullable
cancelledAtdatetimeoptional
Default: nullread-onlynullable
cancelledBystringoptional
PatternDefault: nullread-onlynullable
convertedToSalesOrderIdstringoptional

Sales order created from this quotation

PatternDefault: nullread-onlynullable
convertedAtdatetimeoptional
Default: nullread-onlynullable
subtotalNetstringoptional

Sum of net amounts before VAT

PatternDefault: nullnullable
totalVatstringoptional

Total VAT amount

PatternDefault: nullnullable
totalGrossstringoptional

Gross total (net + VAT)

PatternDefault: nullnullable
recurringNetstringoptional

Recurring portion of net (sum of items with billingInterval != ONE_TIME)

PatternDefault: nullnullable
onetimeNetstringoptional

One-time portion of net

PatternDefault: nullnullable
currencyCodestringoptional

ISO 4217 currency code

PatternDefault: "EUR"
defaultVatRatestringoptional

Default VAT rate for items without explicit vatRate

PatternDefault: "19"
headerDiscountstringoptional

Header-level discount percentage (deferred to Phase 3)

PatternDefault: nullnullable
recipientAddressobjectoptional

Recipient address snapshot (frozen at DRAFT → SENT)

Default: nullread-onlynullable
pdfFileIdstringoptional

Generated PDF file UUID

PatternDefault: nullread-onlynullable
pdfContentHashstringoptional

SHA-256 of canonicalized content; prevents redundant PDF regeneration

max 128 ZeichenDefault: nullread-onlynullable
acceptanceTokenstringoptional

Single-use token for magic-link acceptance (rotated on send)

max 128 ZeichenDefault: nullread-onlynullable
acceptanceTokenExpiresAtdatetimeoptional

Token expiry (defaults to validUntil + 7 days)

Default: nullread-onlynullable
requiresSignaturebooleanoptional

When true, acceptance is routed through the eSign module instead of click+log

Default: false
sourcestringoptional

Origin marker (API, WECLAPP, CUSTOMER_PORTAL, ...)

max 50 ZeichenDefault: nullnullable
tagsstring[]optional
Default: []
weclappIdstringoptional

Linked weclapp quotation id

Default: nullread-onlynullable
weclappLastSyncedAtdatetimeoptional
Default: nullnullable
weclappUrlstringoptional

Deeplink to the quotation in the weclapp UI

Default: nullnullable
externalReferencesobject[]optional

Cross-system linking refs (read by inbound sync worker, Phase 2)

Default: []
systemstringerforderlich
max 100 Zeichen
externalIdstringerforderlich
max 200 Zeichen
externalVersionstringoptional
nullable
syncedAtdatetimeoptional
nullable
weclappCustomAttributesobject[]optional

Captured values for weclapp mandatory/optional custom attributes, in weclapp `customAttributes[]` payload shape. Forwarded verbatim on every create/finalize push.

Default: []
attributeDefinitionIdstringerforderlich
max 64 Zeichen
stringValuestringoptional
max 100000 Zeichen
numberValuestringoptional
max 64 Zeichen
booleanValuebooleanoptional
dateValueintegeroptional
selectedValueIdstringoptional
max 64 Zeichen
selectedValuesobject[]optional
idstringerforderlich
max 64 Zeichen
entityIdstringoptional
max 64 Zeichen
inboundReplyAckedAtdatetimeoptional

Timestamp at which the latest inbound customer email on this quotation was acknowledged as "handled, no reply needed". Clears the awaiting-reply badge when >= the last inbound email time; a newer inbound email re-arms it. Local Codemeta annotation with no weclapp counterpart — listed in externalMaster.internalOnlyFields so it may be set even while weclapp masters the quotation and survives re-syncs. Mirrors opportunity.inboundReplyAckedAt.

nullable
inboundReplyAckedBystringoptional

User who acknowledged the latest inbound customer email (see inboundReplyAckedAt).

nullable

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

Suche