ACMEsuite — All APIs (0.2.0)

Download OpenAPI specification:

License: Apache-2.0

HR system of ACME analog Inc. and system of record for employees (title/role/hierarchy), vacation/absence planning, deputies & assistants, sick days, compensation as well as powers of attorney and approval limits.

This data feeds the approval/e-approval logic (which person may sign off on which amount, who deputizes during an absence) and consumers (who is available/on vacation/sick on day N). It evolves the existing org domain model (Person · OrgUnit · PowerOfAttorney · Absence · Role). The read-only /api/org browsing (people/units/hierarchy) continues to exist alongside it and is the source of people for consumers.

Roles (ACMEbase): WATCH reads, WORK writes operationally, ADMIN maintains master data. Per operation under x-required-role; hierarchy ADMIN > WORK > WATCH.

Employees

Employees (hired) — title, role, hierarchy, deputy/assistant.

List employees

Employees (hired). Applicants are not included — see /applicants.

Authorizations:
bearerAuth
query Parameters
active
boolean

Active/inactive only.

unitId
string

Filter by primary org unit.

q
string

Free text (name/email/title).

Responses

Response Schema: application/json
Array
id
required
string <= 32 characters
firstName
string
lastName
string
fullName
required
string
email
string or null <email>
jobTitle
string or null
active
required
boolean
applicant
boolean

Applicant (not yet hired).

primaryOrgUnitId
string or null
primaryOrgUnitName
string or null
managerId
string or null

Reporting line (manager).

deputyIds
Array of strings

Named deputies.

assistantIds
Array of strings
secondaryUnitIds
Array of strings

Matrix/secondary memberships.

compType
string (CompensationType)
Enum: "HOURLY" "SALARIED"
hourlyRate
number or null

Hourly rate when HOURLY.

workLocation
string (WorkLocation)
Enum: "ONSITE" "REMOTE" "HYBRID"

Where an employee primarily works.

Response samples

Content type
application/json
[
  • {
    • "id": "p-julia-jefa",
    • "firstName": "string",
    • "lastName": "string",
    • "fullName": "Julia Jefa",
    • "email": "user@example.com",
    • "jobTitle": "Managing Director",
    • "active": true,
    • "applicant": true,
    • "primaryOrgUnitId": "string",
    • "primaryOrgUnitName": "string",
    • "managerId": "string",
    • "deputyIds": [
      ],
    • "assistantIds": [
      ],
    • "secondaryUnitIds": [
      ],
    • "compType": "HOURLY",
    • "hourlyRate": 0,
    • "workLocation": "ONSITE"
    }
]

Create employee

Creates a hired employee directly (active=true, applicant=false).

Authorizations:
bearerAuth
Request Body schema: application/json
required
firstName
required
string
lastName
required
string
email
string <email>
jobTitle
string
primaryOrgUnitId
string
managerId
string
workLocation
string (WorkLocation)
Enum: "ONSITE" "REMOTE" "HYBRID"

Where an employee primarily works.

Responses

Response Schema: application/json
id
required
string <= 32 characters
firstName
string
lastName
string
fullName
required
string
email
string or null <email>
jobTitle
string or null
active
required
boolean
applicant
boolean

Applicant (not yet hired).

primaryOrgUnitId
string or null
primaryOrgUnitName
string or null
managerId
string or null

Reporting line (manager).

deputyIds
Array of strings

Named deputies.

assistantIds
Array of strings
secondaryUnitIds
Array of strings

Matrix/secondary memberships.

compType
string (CompensationType)
Enum: "HOURLY" "SALARIED"
hourlyRate
number or null

Hourly rate when HOURLY.

workLocation
string (WorkLocation)
Enum: "ONSITE" "REMOTE" "HYBRID"

Where an employee primarily works.

Request samples

Content type
application/json
{
  • "firstName": "string",
  • "lastName": "string",
  • "email": "user@example.com",
  • "jobTitle": "string",
  • "primaryOrgUnitId": "string",
  • "managerId": "string",
  • "workLocation": "ONSITE"
}

Response samples

Content type
application/json
{
  • "id": "p-julia-jefa",
  • "firstName": "string",
  • "lastName": "string",
  • "fullName": "Julia Jefa",
  • "email": "user@example.com",
  • "jobTitle": "Managing Director",
  • "active": true,
  • "applicant": true,
  • "primaryOrgUnitId": "string",
  • "primaryOrgUnitName": "string",
  • "managerId": "string",
  • "deputyIds": [
    • "string"
    ],
  • "assistantIds": [
    • "string"
    ],
  • "secondaryUnitIds": [
    • "string"
    ],
  • "compType": "HOURLY",
  • "hourlyRate": 0,
  • "workLocation": "ONSITE"
}

Read employee

Authorizations:
bearerAuth
path Parameters
id
required
string <= 32 characters

Natural person key.

Responses

Response Schema: application/json
id
required
string <= 32 characters
firstName
string
lastName
string
fullName
required
string
email
string or null <email>
jobTitle
string or null
active
required
boolean
applicant
boolean

Applicant (not yet hired).

primaryOrgUnitId
string or null
primaryOrgUnitName
string or null
managerId
string or null

Reporting line (manager).

deputyIds
Array of strings

Named deputies.

assistantIds
Array of strings
secondaryUnitIds
Array of strings

Matrix/secondary memberships.

compType
string (CompensationType)
Enum: "HOURLY" "SALARIED"
hourlyRate
number or null

Hourly rate when HOURLY.

workLocation
string (WorkLocation)
Enum: "ONSITE" "REMOTE" "HYBRID"

Where an employee primarily works.

Response samples

Content type
application/json
{
  • "id": "p-julia-jefa",
  • "firstName": "string",
  • "lastName": "string",
  • "fullName": "Julia Jefa",
  • "email": "user@example.com",
  • "jobTitle": "Managing Director",
  • "active": true,
  • "applicant": true,
  • "primaryOrgUnitId": "string",
  • "primaryOrgUnitName": "string",
  • "managerId": "string",
  • "deputyIds": [
    • "string"
    ],
  • "assistantIds": [
    • "string"
    ],
  • "secondaryUnitIds": [
    • "string"
    ],
  • "compType": "HOURLY",
  • "hourlyRate": 0,
  • "workLocation": "ONSITE"
}

Maintain overlay (title, manager, deputy, assistant, active)

Authorizations:
bearerAuth
path Parameters
id
required
string <= 32 characters

Natural person key.

Request Body schema: application/json
required
jobTitle
string
managerId
string or null
active
boolean
deputyIds
Array of strings
assistantIds
Array of strings
workLocation
string (WorkLocation)
Enum: "ONSITE" "REMOTE" "HYBRID"

Where an employee primarily works.

Responses

Response Schema: application/json
id
required
string <= 32 characters
firstName
string
lastName
string
fullName
required
string
email
string or null <email>
jobTitle
string or null
active
required
boolean
applicant
boolean

Applicant (not yet hired).

primaryOrgUnitId
string or null
primaryOrgUnitName
string or null
managerId
string or null

Reporting line (manager).

deputyIds
Array of strings

Named deputies.

assistantIds
Array of strings
secondaryUnitIds
Array of strings

Matrix/secondary memberships.

compType
string (CompensationType)
Enum: "HOURLY" "SALARIED"
hourlyRate
number or null

Hourly rate when HOURLY.

workLocation
string (WorkLocation)
Enum: "ONSITE" "REMOTE" "HYBRID"

Where an employee primarily works.

Request samples

Content type
application/json
{
  • "jobTitle": "string",
  • "managerId": "string",
  • "active": true,
  • "deputyIds": [
    • "string"
    ],
  • "assistantIds": [
    • "string"
    ],
  • "workLocation": "ONSITE"
}

Response samples

Content type
application/json
{
  • "id": "p-julia-jefa",
  • "firstName": "string",
  • "lastName": "string",
  • "fullName": "Julia Jefa",
  • "email": "user@example.com",
  • "jobTitle": "Managing Director",
  • "active": true,
  • "applicant": true,
  • "primaryOrgUnitId": "string",
  • "primaryOrgUnitName": "string",
  • "managerId": "string",
  • "deputyIds": [
    • "string"
    ],
  • "assistantIds": [
    • "string"
    ],
  • "secondaryUnitIds": [
    • "string"
    ],
  • "compType": "HOURLY",
  • "hourlyRate": 0,
  • "workLocation": "ONSITE"
}

Applicants

Applicants — candidates before being hired (applicant=true).

List applicants

Authorizations:
bearerAuth
query Parameters
unitId
string

Target org unit.

q
string

Free text (name/title).

Responses

Response Schema: application/json
Array
id
required
string <= 32 characters
firstName
string
lastName
string
fullName
required
string
email
string or null <email>
jobTitle
string or null

Target role.

targetOrgUnitId
string or null

Target org unit.

targetOrgUnitName
string or null
appliedOn
string or null <date>
stage
string (ApplicantStage)
Enum: "NEW" "SCREENING" "INTERVIEW" "OFFER" "REJECTED"

Recruiting pipeline stage of an applicant.

matchScore
integer or null [ 0 .. 100 ]

Fit score 0–100 from screening; null until scored.

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "firstName": "string",
    • "lastName": "string",
    • "fullName": "string",
    • "email": "user@example.com",
    • "jobTitle": "string",
    • "targetOrgUnitId": "string",
    • "targetOrgUnitName": "string",
    • "appliedOn": "2019-08-24",
    • "stage": "NEW",
    • "matchScore": 100
    }
]

Create applicant

Authorizations:
bearerAuth
Request Body schema: application/json
required
firstName
required
string
lastName
required
string
email
string <email>
jobTitle
string
targetOrgUnitId
string
stage
string (ApplicantStage)
Enum: "NEW" "SCREENING" "INTERVIEW" "OFFER" "REJECTED"

Recruiting pipeline stage of an applicant.

matchScore
integer or null [ 0 .. 100 ]

Responses

Response Schema: application/json
id
required
string <= 32 characters
firstName
string
lastName
string
fullName
required
string
email
string or null <email>
jobTitle
string or null

Target role.

targetOrgUnitId
string or null

Target org unit.

targetOrgUnitName
string or null
appliedOn
string or null <date>
stage
string (ApplicantStage)
Enum: "NEW" "SCREENING" "INTERVIEW" "OFFER" "REJECTED"

Recruiting pipeline stage of an applicant.

matchScore
integer or null [ 0 .. 100 ]

Fit score 0–100 from screening; null until scored.

Request samples

Content type
application/json
{
  • "firstName": "string",
  • "lastName": "string",
  • "email": "user@example.com",
  • "jobTitle": "string",
  • "targetOrgUnitId": "string",
  • "stage": "NEW",
  • "matchScore": 100
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "fullName": "string",
  • "email": "user@example.com",
  • "jobTitle": "string",
  • "targetOrgUnitId": "string",
  • "targetOrgUnitName": "string",
  • "appliedOn": "2019-08-24",
  • "stage": "NEW",
  • "matchScore": 100
}

Read applicant

Authorizations:
bearerAuth
path Parameters
id
required
string <= 32 characters

Natural person key.

Responses

Response Schema: application/json
id
required
string <= 32 characters
firstName
string
lastName
string
fullName
required
string
email
string or null <email>
jobTitle
string or null

Target role.

targetOrgUnitId
string or null

Target org unit.

targetOrgUnitName
string or null
appliedOn
string or null <date>
stage
string (ApplicantStage)
Enum: "NEW" "SCREENING" "INTERVIEW" "OFFER" "REJECTED"

Recruiting pipeline stage of an applicant.

matchScore
integer or null [ 0 .. 100 ]

Fit score 0–100 from screening; null until scored.

Response samples

Content type
application/json
{
  • "id": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "fullName": "string",
  • "email": "user@example.com",
  • "jobTitle": "string",
  • "targetOrgUnitId": "string",
  • "targetOrgUnitName": "string",
  • "appliedOn": "2019-08-24",
  • "stage": "NEW",
  • "matchScore": 100
}

Move applicant along the recruiting pipeline

Sets the recruiting stage (Bewerber board drag & drop).

Authorizations:
bearerAuth
path Parameters
id
required
string <= 32 characters

Natural person key.

Request Body schema: application/json
required
stage
required
string (ApplicantStage)
Enum: "NEW" "SCREENING" "INTERVIEW" "OFFER" "REJECTED"

Recruiting pipeline stage of an applicant.

Responses

Response Schema: application/json
id
required
string <= 32 characters
firstName
string
lastName
string
fullName
required
string
email
string or null <email>
jobTitle
string or null

Target role.

targetOrgUnitId
string or null

Target org unit.

targetOrgUnitName
string or null
appliedOn
string or null <date>
stage
string (ApplicantStage)
Enum: "NEW" "SCREENING" "INTERVIEW" "OFFER" "REJECTED"

Recruiting pipeline stage of an applicant.

matchScore
integer or null [ 0 .. 100 ]

Fit score 0–100 from screening; null until scored.

Request samples

Content type
application/json
{
  • "stage": "NEW"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "fullName": "string",
  • "email": "user@example.com",
  • "jobTitle": "string",
  • "targetOrgUnitId": "string",
  • "targetOrgUnitName": "string",
  • "appliedOn": "2019-08-24",
  • "stage": "NEW",
  • "matchScore": 100
}

Reject/remove application

Authorizations:
bearerAuth
path Parameters
id
required
string <= 32 characters

Natural person key.

Responses

Response samples

Content type
application/problem+json
{
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Hire applicant

Starts hiring the applicant: opens a hiring folder for approval (HR officer → HR management → managing director). On the concluding approval the applicant becomes an employee (applicant=false, active=true); a rejection imposes a re-hire block.

Authorizations:
bearerAuth
path Parameters
id
required
string <= 32 characters

Natural person key.

query Parameters
day
integer
Default: 0

Day of hiring.

Responses

Response Schema: application/json
id
required
string <= 32 characters
firstName
string
lastName
string
fullName
required
string
email
string or null <email>
jobTitle
string or null
active
required
boolean
applicant
boolean

Applicant (not yet hired).

primaryOrgUnitId
string or null
primaryOrgUnitName
string or null
managerId
string or null

Reporting line (manager).

deputyIds
Array of strings

Named deputies.

assistantIds
Array of strings
secondaryUnitIds
Array of strings

Matrix/secondary memberships.

compType
string (CompensationType)
Enum: "HOURLY" "SALARIED"
hourlyRate
number or null

Hourly rate when HOURLY.

workLocation
string (WorkLocation)
Enum: "ONSITE" "REMOTE" "HYBRID"

Where an employee primarily works.

Response samples

Content type
application/json
{
  • "id": "p-julia-jefa",
  • "firstName": "string",
  • "lastName": "string",
  • "fullName": "Julia Jefa",
  • "email": "user@example.com",
  • "jobTitle": "Managing Director",
  • "active": true,
  • "applicant": true,
  • "primaryOrgUnitId": "string",
  • "primaryOrgUnitName": "string",
  • "managerId": "string",
  • "deputyIds": [
    • "string"
    ],
  • "assistantIds": [
    • "string"
    ],
  • "secondaryUnitIds": [
    • "string"
    ],
  • "compType": "HOURLY",
  • "hourlyRate": 0,
  • "workLocation": "ONSITE"
}

Compensation

Compensation (salary/hourly wage) and personnel costs.

Set compensation (salary/hourly wage)

Authorizations:
bearerAuth
path Parameters
id
required
string <= 32 characters

Natural person key.

Request Body schema: application/json
required
compType
required
string (CompensationType)
Enum: "HOURLY" "SALARIED"
hourlyRate
number or null

Required when HOURLY.

Responses

Response Schema: application/json
id
required
string <= 32 characters
firstName
string
lastName
string
fullName
required
string
email
string or null <email>
jobTitle
string or null
active
required
boolean
applicant
boolean

Applicant (not yet hired).

primaryOrgUnitId
string or null
primaryOrgUnitName
string or null
managerId
string or null

Reporting line (manager).

deputyIds
Array of strings

Named deputies.

assistantIds
Array of strings
secondaryUnitIds
Array of strings

Matrix/secondary memberships.

compType
string (CompensationType)
Enum: "HOURLY" "SALARIED"
hourlyRate
number or null

Hourly rate when HOURLY.

workLocation
string (WorkLocation)
Enum: "ONSITE" "REMOTE" "HYBRID"

Where an employee primarily works.

Request samples

Content type
application/json
{
  • "compType": "HOURLY",
  • "hourlyRate": 0
}

Response samples

Content type
application/json
{
  • "id": "p-julia-jefa",
  • "firstName": "string",
  • "lastName": "string",
  • "fullName": "Julia Jefa",
  • "email": "user@example.com",
  • "jobTitle": "Managing Director",
  • "active": true,
  • "applicant": true,
  • "primaryOrgUnitId": "string",
  • "primaryOrgUnitName": "string",
  • "managerId": "string",
  • "deputyIds": [
    • "string"
    ],
  • "assistantIds": [
    • "string"
    ],
  • "secondaryUnitIds": [
    • "string"
    ],
  • "compType": "HOURLY",
  • "hourlyRate": 0,
  • "workLocation": "ONSITE"
}

Personnel cost overview (weekly)

Authorizations:
bearerAuth

Responses

Response Schema: application/json
salariedCount
required
integer
hourlyCount
required
integer
weeklySalariedEur
required
number
weeklyHourlyEur
required
number
weeklyTotalEur
required
number

Response samples

Content type
application/json
{
  • "salariedCount": 0,
  • "hourlyCount": 0,
  • "weeklySalariedEur": 0,
  • "weeklyHourlyEur": 0,
  • "weeklyTotalEur": 0
}

Roles

Role catalog and role assignments.

Role assignments of the person

Authorizations:
bearerAuth
path Parameters
id
required
string <= 32 characters

Natural person key.

Responses

Response Schema: application/json
Array
id
required
string
personId
required
string
personName
string
roleId
required
string
roleTitle
string
orgUnitId
string or null
validFrom
string or null <date>
validUntil
string or null <date>

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "personId": "string",
    • "personName": "string",
    • "roleId": "string",
    • "roleTitle": "string",
    • "orgUnitId": "string",
    • "validFrom": "2019-08-24",
    • "validUntil": "2019-08-24"
    }
]

Assign role

Authorizations:
bearerAuth
path Parameters
id
required
string <= 32 characters

Natural person key.

Request Body schema: application/json
required
roleId
required
string
orgUnitId
string or null
validFrom
string or null <date>
validUntil
string or null <date>

Responses

Response Schema: application/json
id
required
string
personId
required
string
personName
string
roleId
required
string
roleTitle
string
orgUnitId
string or null
validFrom
string or null <date>
validUntil
string or null <date>

Request samples

Content type
application/json
{
  • "roleId": "string",
  • "orgUnitId": "string",
  • "validFrom": "2019-08-24",
  • "validUntil": "2019-08-24"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "personId": "string",
  • "personName": "string",
  • "roleId": "string",
  • "roleTitle": "string",
  • "orgUnitId": "string",
  • "validFrom": "2019-08-24",
  • "validUntil": "2019-08-24"
}

Remove role assignment

Authorizations:
bearerAuth
path Parameters
id
required
string <= 32 characters

Natural person key.

assignmentId
required
string

Responses

Response samples

Content type
application/problem+json
{
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Role catalog

Authorizations:
bearerAuth

Responses

Response Schema: application/json
Array
id
required
string
title
required
string
kind
required
string (RoleKind)
Enum: "BUSINESS" "GOVERNANCE" "SYSTEM"
description
string or null

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "title": "Head of Purchasing",
    • "kind": "BUSINESS",
    • "description": "string"
    }
]

Absences

Vacation planning and sick days (absences) with deputy.

Absences of the person (vacation/sick)

Authorizations:
bearerAuth
path Parameters
id
required
string <= 32 characters

Natural person key.

Responses

Response Schema: application/json
Array
id
required
string
personId
required
string
personName
string
type
required
string (AbsenceType)
Enum: "VACATION" "SICK" "CURE" "TRAINING" "OTHER"

Type of absence.

status
required
string (AbsenceStatus)
Enum: "PLANNED" "APPROVED" "REJECTED" "CANCELLED"
required
object (DateRange)

Validity period. until=null = open-ended.

substituteId
string or null

Deputy during the absence.

substituteName
string or null
reasonKey
string or null

Business key/reason (e.g. urlaub-1).

note
string or null
workingDays
integer or null

Effective working days (excluding weekend).

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "personId": "string",
    • "personName": "string",
    • "type": "VACATION",
    • "status": "PLANNED",
    • "period": {
      },
    • "substituteId": "string",
    • "substituteName": "string",
    • "reasonKey": "string",
    • "note": "string",
    • "workingDays": 0
    }
]

Search absences (vacation planning, sick days)

Authorizations:
bearerAuth
query Parameters
personId
string
type
string (AbsenceType)
Enum: "VACATION" "SICK" "CURE" "TRAINING" "OTHER"

Type of absence.

status
string (AbsenceStatus)
Enum: "PLANNED" "APPROVED" "REJECTED" "CANCELLED"
from
string <date>

Overlap from this day on.

until
string <date>

Overlap up to this day.

Responses

Response Schema: application/json
Array
id
required
string
personId
required
string
personName
string
type
required
string (AbsenceType)
Enum: "VACATION" "SICK" "CURE" "TRAINING" "OTHER"

Type of absence.

status
required
string (AbsenceStatus)
Enum: "PLANNED" "APPROVED" "REJECTED" "CANCELLED"
required
object (DateRange)

Validity period. until=null = open-ended.

substituteId
string or null

Deputy during the absence.

substituteName
string or null
reasonKey
string or null

Business key/reason (e.g. urlaub-1).

note
string or null
workingDays
integer or null

Effective working days (excluding weekend).

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "personId": "string",
    • "personName": "string",
    • "type": "VACATION",
    • "status": "PLANNED",
    • "period": {
      },
    • "substituteId": "string",
    • "substituteName": "string",
    • "reasonKey": "string",
    • "note": "string",
    • "workingDays": 0
    }
]

Create absence (plan vacation / report sick)

Creates an absence. VACATION starts as PLANNED (approval follows), SICK is usually recorded directly as APPROVED (reported).

Authorizations:
bearerAuth
Request Body schema: application/json
required
personId
required
string
type
required
string (AbsenceType)
Enum: "VACATION" "SICK" "CURE" "TRAINING" "OTHER"

Type of absence.

from
required
string <date>
until
required
string <date>
substituteId
string or null
note
string or null

Responses

Response Headers
Location
string

URI of the new resource.

Response Schema: application/json
id
required
string
personId
required
string
personName
string
type
required
string (AbsenceType)
Enum: "VACATION" "SICK" "CURE" "TRAINING" "OTHER"

Type of absence.

status
required
string (AbsenceStatus)
Enum: "PLANNED" "APPROVED" "REJECTED" "CANCELLED"
required
object (DateRange)

Validity period. until=null = open-ended.

substituteId
string or null

Deputy during the absence.

substituteName
string or null
reasonKey
string or null

Business key/reason (e.g. urlaub-1).

note
string or null
workingDays
integer or null

Effective working days (excluding weekend).

Request samples

Content type
application/json
Example
{
  • "personId": "p-julia-jefa",
  • "type": "VACATION",
  • "from": "2026-07-20",
  • "until": "2026-08-02",
  • "substituteId": "p-dirk-direktor",
  • "note": "Summer vacation"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "personId": "string",
  • "personName": "string",
  • "type": "VACATION",
  • "status": "PLANNED",
  • "period": {
    • "from": "2019-08-24",
    • "until": "2019-08-24"
    },
  • "substituteId": "string",
  • "substituteName": "string",
  • "reasonKey": "string",
  • "note": "string",
  • "workingDays": 0
}

Read absence

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
personId
required
string
personName
string
type
required
string (AbsenceType)
Enum: "VACATION" "SICK" "CURE" "TRAINING" "OTHER"

Type of absence.

status
required
string (AbsenceStatus)
Enum: "PLANNED" "APPROVED" "REJECTED" "CANCELLED"
required
object (DateRange)

Validity period. until=null = open-ended.

substituteId
string or null

Deputy during the absence.

substituteName
string or null
reasonKey
string or null

Business key/reason (e.g. urlaub-1).

note
string or null
workingDays
integer or null

Effective working days (excluding weekend).

Response samples

Content type
application/json
{
  • "id": "string",
  • "personId": "string",
  • "personName": "string",
  • "type": "VACATION",
  • "status": "PLANNED",
  • "period": {
    • "from": "2019-08-24",
    • "until": "2019-08-24"
    },
  • "substituteId": "string",
  • "substituteName": "string",
  • "reasonKey": "string",
  • "note": "string",
  • "workingDays": 0
}

Change absence (approve/reject/cancel, deputy, period)

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
status
string (AbsenceStatus)
Enum: "PLANNED" "APPROVED" "REJECTED" "CANCELLED"
substituteId
string or null
from
string <date>
until
string <date>
note
string or null

Responses

Response Schema: application/json
id
required
string
personId
required
string
personName
string
type
required
string (AbsenceType)
Enum: "VACATION" "SICK" "CURE" "TRAINING" "OTHER"

Type of absence.

status
required
string (AbsenceStatus)
Enum: "PLANNED" "APPROVED" "REJECTED" "CANCELLED"
required
object (DateRange)

Validity period. until=null = open-ended.

substituteId
string or null

Deputy during the absence.

substituteName
string or null
reasonKey
string or null

Business key/reason (e.g. urlaub-1).

note
string or null
workingDays
integer or null

Effective working days (excluding weekend).

Request samples

Content type
application/json
{
  • "status": "PLANNED",
  • "substituteId": "string",
  • "from": "2019-08-24",
  • "until": "2019-08-24",
  • "note": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "personId": "string",
  • "personName": "string",
  • "type": "VACATION",
  • "status": "PLANNED",
  • "period": {
    • "from": "2019-08-24",
    • "until": "2019-08-24"
    },
  • "substituteId": "string",
  • "substituteName": "string",
  • "reasonKey": "string",
  • "note": "string",
  • "workingDays": 0
}

Delete absence

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response samples

Content type
application/problem+json
{
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

PowersOfAttorney

Powers of attorney (Prokura/Handlungsvollmacht) per legal entity.

Powers of attorney of the person

Authorizations:
bearerAuth
path Parameters
id
required
string <= 32 characters

Natural person key.

Responses

Response Schema: application/json
Array
id
required
string
holderId
required
string
holderName
string
legalEntityId
required
string
type
required
string (PowerOfAttorneyType)
Enum: "PROKURA" "HANDLUNGSVOLLMACHT" "GENERAL" "SPECIAL"
signatureRule
required
string (SignatureRule)
Enum: "SOLE" "JOINT"

SOLE = sole signing authority, JOINT = only jointly.

required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

scope
string or null
object (DateRange)

Validity period. until=null = open-ended.

revoked
required
boolean

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "holderId": "string",
    • "holderName": "string",
    • "legalEntityId": "string",
    • "type": "PROKURA",
    • "signatureRule": "SOLE",
    • "limit": {
      },
    • "scope": "string",
    • "validity": {
      },
    • "revoked": true
    }
]

Search powers of attorney

Authorizations:
bearerAuth
query Parameters
holderId
string
legalEntityId
string
includeRevoked
boolean
Default: false

Responses

Response Schema: application/json
Array
id
required
string
holderId
required
string
holderName
string
legalEntityId
required
string
type
required
string (PowerOfAttorneyType)
Enum: "PROKURA" "HANDLUNGSVOLLMACHT" "GENERAL" "SPECIAL"
signatureRule
required
string (SignatureRule)
Enum: "SOLE" "JOINT"

SOLE = sole signing authority, JOINT = only jointly.

required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

scope
string or null
object (DateRange)

Validity period. until=null = open-ended.

revoked
required
boolean

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "holderId": "string",
    • "holderName": "string",
    • "legalEntityId": "string",
    • "type": "PROKURA",
    • "signatureRule": "SOLE",
    • "limit": {
      },
    • "scope": "string",
    • "validity": {
      },
    • "revoked": true
    }
]

Grant power of attorney

Authorizations:
bearerAuth
Request Body schema: application/json
required
holderId
required
string
legalEntityId
required
string
type
required
string (PowerOfAttorneyType)
Enum: "PROKURA" "HANDLUNGSVOLLMACHT" "GENERAL" "SPECIAL"
signatureRule
required
string (SignatureRule)
Enum: "SOLE" "JOINT"

SOLE = sole signing authority, JOINT = only jointly.

object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

scope
string or null
validFrom
required
string <date>
validUntil
string or null <date>

Responses

Response Schema: application/json
id
required
string
holderId
required
string
holderName
string
legalEntityId
required
string
type
required
string (PowerOfAttorneyType)
Enum: "PROKURA" "HANDLUNGSVOLLMACHT" "GENERAL" "SPECIAL"
signatureRule
required
string (SignatureRule)
Enum: "SOLE" "JOINT"

SOLE = sole signing authority, JOINT = only jointly.

required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

scope
string or null
object (DateRange)

Validity period. until=null = open-ended.

revoked
required
boolean

Request samples

Content type
application/json
{
  • "holderId": "string",
  • "legalEntityId": "string",
  • "type": "PROKURA",
  • "signatureRule": "SOLE",
  • "limit": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "scope": "string",
  • "validFrom": "2019-08-24",
  • "validUntil": "2019-08-24"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "holderId": "string",
  • "holderName": "string",
  • "legalEntityId": "string",
  • "type": "PROKURA",
  • "signatureRule": "SOLE",
  • "limit": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "scope": "string",
  • "validity": {
    • "from": "2019-08-24",
    • "until": "2019-08-24"
    },
  • "revoked": true
}

Read power of attorney

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
holderId
required
string
holderName
string
legalEntityId
required
string
type
required
string (PowerOfAttorneyType)
Enum: "PROKURA" "HANDLUNGSVOLLMACHT" "GENERAL" "SPECIAL"
signatureRule
required
string (SignatureRule)
Enum: "SOLE" "JOINT"

SOLE = sole signing authority, JOINT = only jointly.

required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

scope
string or null
object (DateRange)

Validity period. until=null = open-ended.

revoked
required
boolean

Response samples

Content type
application/json
{
  • "id": "string",
  • "holderId": "string",
  • "holderName": "string",
  • "legalEntityId": "string",
  • "type": "PROKURA",
  • "signatureRule": "SOLE",
  • "limit": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "scope": "string",
  • "validity": {
    • "from": "2019-08-24",
    • "until": "2019-08-24"
    },
  • "revoked": true
}

Revoke power of attorney

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
holderId
required
string
holderName
string
legalEntityId
required
string
type
required
string (PowerOfAttorneyType)
Enum: "PROKURA" "HANDLUNGSVOLLMACHT" "GENERAL" "SPECIAL"
signatureRule
required
string (SignatureRule)
Enum: "SOLE" "JOINT"

SOLE = sole signing authority, JOINT = only jointly.

required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

scope
string or null
object (DateRange)

Validity period. until=null = open-ended.

revoked
required
boolean

Response samples

Content type
application/json
{
  • "id": "string",
  • "holderId": "string",
  • "holderName": "string",
  • "legalEntityId": "string",
  • "type": "PROKURA",
  • "signatureRule": "SOLE",
  • "limit": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "scope": "string",
  • "validity": {
    • "from": "2019-08-24",
    • "until": "2019-08-24"
    },
  • "revoked": true
}

ApprovalLimits

Approval limits — who may sign off up to which amount.

Effective approval limit of the person on a given date

Returns the approval limit effective on the given date (resolved from active powers of attorney or an explicitly maintained limit). Does NOT account for deputies — that is handled by e-approval resolution.

Authorizations:
bearerAuth
path Parameters
id
required
string <= 32 characters

Natural person key.

query Parameters
on
string <date>

Reference date (default = today / current day).

legalEntityId
string

Restrict to one legal entity.

Responses

Response Schema: application/json
personId
required
string
personName
string
legalEntityId
string or null
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

signatureRule
string (SignatureRule)
Enum: "SOLE" "JOINT"

SOLE = sole signing authority, JOINT = only jointly.

source
required
string
Enum: "POWER_OF_ATTORNEY" "EXPLICIT"

Origin of the limit.

object (DateRange)

Validity period. until=null = open-ended.

Response samples

Content type
application/json
{
  • "personId": "string",
  • "personName": "string",
  • "legalEntityId": "string",
  • "maxAmount": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "signatureRule": "SOLE",
  • "source": "POWER_OF_ATTORNEY",
  • "validity": {
    • "from": "2019-08-24",
    • "until": "2019-08-24"
    }
}

List approval limits

Authorizations:
bearerAuth
query Parameters
personId
string
on
string <date>

Reference date (default = today / current day).

Responses

Response Schema: application/json
Array
personId
required
string
personName
string
legalEntityId
string or null
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

signatureRule
string (SignatureRule)
Enum: "SOLE" "JOINT"

SOLE = sole signing authority, JOINT = only jointly.

source
required
string
Enum: "POWER_OF_ATTORNEY" "EXPLICIT"

Origin of the limit.

object (DateRange)

Validity period. until=null = open-ended.

Response samples

Content type
application/json
[
  • {
    • "personId": "string",
    • "personName": "string",
    • "legalEntityId": "string",
    • "maxAmount": {
      },
    • "signatureRule": "SOLE",
    • "source": "POWER_OF_ATTORNEY",
    • "validity": {
      }
    }
]

Set explicit approval limit

Sets an explicitly maintained approval limit (overrides the one derived from powers of attorney).

Authorizations:
bearerAuth
Request Body schema: application/json
required
personId
required
string
legalEntityId
string or null
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

validFrom
string or null <date>
validUntil
string or null <date>

Responses

Response Schema: application/json
personId
required
string
personName
string
legalEntityId
string or null
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

signatureRule
string (SignatureRule)
Enum: "SOLE" "JOINT"

SOLE = sole signing authority, JOINT = only jointly.

source
required
string
Enum: "POWER_OF_ATTORNEY" "EXPLICIT"

Origin of the limit.

object (DateRange)

Validity period. until=null = open-ended.

Request samples

Content type
application/json
{
  • "personId": "string",
  • "legalEntityId": "string",
  • "maxAmount": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "validFrom": "2019-08-24",
  • "validUntil": "2019-08-24"
}

Response samples

Content type
application/json
{
  • "personId": "string",
  • "personName": "string",
  • "legalEntityId": "string",
  • "maxAmount": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "signatureRule": "SOLE",
  • "source": "POWER_OF_ATTORNEY",
  • "validity": {
    • "from": "2019-08-24",
    • "until": "2019-08-24"
    }
}

Authorized signatories for an amount on a given date

Who may sign off on the given amount for this legal entity on the given date (from active powers of attorney).

Authorizations:
bearerAuth
path Parameters
legalEntityId
required
string
query Parameters
amount
required
number
currency
string = 3 characters
Default: "EUR"
on
string <date>

Reference date (default = today / current day).

Responses

Response Schema: application/json
Array
id
required
string
holderId
required
string
holderName
string
legalEntityId
required
string
type
required
string (PowerOfAttorneyType)
Enum: "PROKURA" "HANDLUNGSVOLLMACHT" "GENERAL" "SPECIAL"
signatureRule
required
string (SignatureRule)
Enum: "SOLE" "JOINT"

SOLE = sole signing authority, JOINT = only jointly.

required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

scope
string or null
object (DateRange)

Validity period. until=null = open-ended.

revoked
required
boolean

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "holderId": "string",
    • "holderName": "string",
    • "legalEntityId": "string",
    • "type": "PROKURA",
    • "signatureRule": "SOLE",
    • "limit": {
      },
    • "scope": "string",
    • "validity": {
      },
    • "revoked": true
    }
]

Customers

Customers and resellers (sales partners).

List customers/resellers

Authorizations:
bearerAuth
query Parameters
kind
string (CustomerKind)
Enum: "CUSTOMER" "RESELLER"
status
string (CustomerStatus)
Enum: "PROSPECT" "ACTIVE" "BLOCKED"
resellerId
string

Customers of a reseller.

q
string

Responses

Response Schema: application/json
Array
id
required
string
name
required
string
kind
required
string (CustomerKind)
Enum: "CUSTOMER" "RESELLER"
status
required
string (CustomerStatus)
Enum: "PROSPECT" "ACTIVE" "BLOCKED"
email
string or null <email>
country
string or null
parentResellerId
string or null

For end customers of a reseller.

priceListId
string or null

Assigned price list.

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "name": "Kontor Nord GmbH",
    • "kind": "CUSTOMER",
    • "status": "PROSPECT",
    • "email": "user@example.com",
    • "country": "DE",
    • "parentResellerId": "string",
    • "priceListId": "string"
    }
]

Create customer/reseller

Authorizations:
bearerAuth
Request Body schema: application/json
required
name
required
string
kind
required
string (CustomerKind)
Enum: "CUSTOMER" "RESELLER"
status
string (CustomerStatus)
Enum: "PROSPECT" "ACTIVE" "BLOCKED"
email
string <email>
country
string
parentResellerId
string or null
priceListId
string or null

Responses

Response Schema: application/json
id
required
string
name
required
string
kind
required
string (CustomerKind)
Enum: "CUSTOMER" "RESELLER"
status
required
string (CustomerStatus)
Enum: "PROSPECT" "ACTIVE" "BLOCKED"
email
string or null <email>
country
string or null
parentResellerId
string or null

For end customers of a reseller.

priceListId
string or null

Assigned price list.

Request samples

Content type
application/json
{
  • "name": "string",
  • "kind": "CUSTOMER",
  • "status": "PROSPECT",
  • "email": "user@example.com",
  • "country": "string",
  • "parentResellerId": "string",
  • "priceListId": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "Kontor Nord GmbH",
  • "kind": "CUSTOMER",
  • "status": "PROSPECT",
  • "email": "user@example.com",
  • "country": "DE",
  • "parentResellerId": "string",
  • "priceListId": "string"
}

Read customer

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
name
required
string
kind
required
string (CustomerKind)
Enum: "CUSTOMER" "RESELLER"
status
required
string (CustomerStatus)
Enum: "PROSPECT" "ACTIVE" "BLOCKED"
email
string or null <email>
country
string or null
parentResellerId
string or null

For end customers of a reseller.

priceListId
string or null

Assigned price list.

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "Kontor Nord GmbH",
  • "kind": "CUSTOMER",
  • "status": "PROSPECT",
  • "email": "user@example.com",
  • "country": "DE",
  • "parentResellerId": "string",
  • "priceListId": "string"
}

Update customer

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
name
required
string
kind
required
string (CustomerKind)
Enum: "CUSTOMER" "RESELLER"
status
string (CustomerStatus)
Enum: "PROSPECT" "ACTIVE" "BLOCKED"
email
string <email>
country
string
parentResellerId
string or null
priceListId
string or null

Responses

Response Schema: application/json
id
required
string
name
required
string
kind
required
string (CustomerKind)
Enum: "CUSTOMER" "RESELLER"
status
required
string (CustomerStatus)
Enum: "PROSPECT" "ACTIVE" "BLOCKED"
email
string or null <email>
country
string or null
parentResellerId
string or null

For end customers of a reseller.

priceListId
string or null

Assigned price list.

Request samples

Content type
application/json
{
  • "name": "string",
  • "kind": "CUSTOMER",
  • "status": "PROSPECT",
  • "email": "user@example.com",
  • "country": "string",
  • "parentResellerId": "string",
  • "priceListId": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "Kontor Nord GmbH",
  • "kind": "CUSTOMER",
  • "status": "PROSPECT",
  • "email": "user@example.com",
  • "country": "DE",
  • "parentResellerId": "string",
  • "priceListId": "string"
}

Products

Product catalog (analog goods from the ACME factory).

List products

Authorizations:
bearerAuth
query Parameters
category
string
active
boolean
q
string

Responses

Response Schema: application/json
Array
id
required
string
sku
required
string
name
required
string
category
string or null
unit
string
Default: "piece"
active
required
boolean
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "sku": "ACME-RADIO-01",
    • "name": "Tube radio „Nostalgie“",
    • "category": "string",
    • "unit": "piece",
    • "active": true,
    • "listPrice": {
      }
    }
]

Create product (master data)

Authorizations:
bearerAuth
Request Body schema: application/json
required
sku
required
string
name
required
string
category
string
unit
string
active
boolean
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

Responses

Response Schema: application/json
id
required
string
sku
required
string
name
required
string
category
string or null
unit
string
Default: "piece"
active
required
boolean
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

Request samples

Content type
application/json
{
  • "sku": "string",
  • "name": "string",
  • "category": "string",
  • "unit": "string",
  • "active": true,
  • "listPrice": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "sku": "ACME-RADIO-01",
  • "name": "Tube radio „Nostalgie“",
  • "category": "string",
  • "unit": "piece",
  • "active": true,
  • "listPrice": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    }
}

Read product

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
sku
required
string
name
required
string
category
string or null
unit
string
Default: "piece"
active
required
boolean
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

Response samples

Content type
application/json
{
  • "id": "string",
  • "sku": "ACME-RADIO-01",
  • "name": "Tube radio „Nostalgie“",
  • "category": "string",
  • "unit": "piece",
  • "active": true,
  • "listPrice": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    }
}

Update product (master data)

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
sku
required
string
name
required
string
category
string
unit
string
active
boolean
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

Responses

Response Schema: application/json
id
required
string
sku
required
string
name
required
string
category
string or null
unit
string
Default: "piece"
active
required
boolean
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

Request samples

Content type
application/json
{
  • "sku": "string",
  • "name": "string",
  • "category": "string",
  • "unit": "string",
  • "active": true,
  • "listPrice": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "sku": "ACME-RADIO-01",
  • "name": "Tube radio „Nostalgie“",
  • "category": "string",
  • "unit": "piece",
  • "active": true,
  • "listPrice": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    }
}

PriceLists

Price lists (list/reseller) with tiered prices + price resolution.

List price lists

Authorizations:
bearerAuth
query Parameters
kind
string (PriceListKind)
Enum: "LIST" "RESELLER" "CUSTOM"

Responses

Response Schema: application/json
Array
id
required
string
name
required
string
currency
required
string = 3 characters
kind
required
string (PriceListKind)
Enum: "LIST" "RESELLER" "CUSTOM"
object (DateRange)

Validity period. until=null = open-ended.

required
Array of objects (PriceListItem)

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "name": "string",
    • "currency": "EUR",
    • "kind": "LIST",
    • "validity": {
      },
    • "items": [
      ]
    }
]

Create price list (master data)

Authorizations:
bearerAuth
Request Body schema: application/json
required
name
required
string
currency
required
string = 3 characters
kind
required
string (PriceListKind)
Enum: "LIST" "RESELLER" "CUSTOM"
validFrom
string <date>
validUntil
string or null <date>
Array of objects (PriceListItem)

Responses

Response Schema: application/json
id
required
string
name
required
string
currency
required
string = 3 characters
kind
required
string (PriceListKind)
Enum: "LIST" "RESELLER" "CUSTOM"
object (DateRange)

Validity period. until=null = open-ended.

required
Array of objects (PriceListItem)

Request samples

Content type
application/json
{
  • "name": "string",
  • "currency": "str",
  • "kind": "LIST",
  • "validFrom": "2019-08-24",
  • "validUntil": "2019-08-24",
  • "items": [
    • {
      }
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "currency": "EUR",
  • "kind": "LIST",
  • "validity": {
    • "from": "2019-08-24",
    • "until": "2019-08-24"
    },
  • "items": [
    • {
      }
    ]
}

Read price list

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
name
required
string
currency
required
string = 3 characters
kind
required
string (PriceListKind)
Enum: "LIST" "RESELLER" "CUSTOM"
object (DateRange)

Validity period. until=null = open-ended.

required
Array of objects (PriceListItem)

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "currency": "EUR",
  • "kind": "LIST",
  • "validity": {
    • "from": "2019-08-24",
    • "until": "2019-08-24"
    },
  • "items": [
    • {
      }
    ]
}

Resolve effective unit price

Returns the unit price applicable for customer + product + quantity (incl. tier/reseller).

Authorizations:
bearerAuth
query Parameters
customerId
required
string
productId
required
string
quantity
integer >= 1
Default: 1

Responses

Response Schema: application/json
productId
required
string
customerId
required
string
quantity
required
integer
unitPrice
required
number
currency
string
priceListId
string or null
source
string
Enum: "PRICE_LIST" "LIST_PRICE"

Response samples

Content type
application/json
{
  • "productId": "string",
  • "customerId": "string",
  • "quantity": 0,
  • "unitPrice": 0,
  • "currency": "string",
  • "priceListId": "string",
  • "source": "PRICE_LIST"
}

Quotes

Quotes — draft through acceptance, conversion into an order.

List quotes

Authorizations:
bearerAuth
query Parameters
customerId
string
status
string (QuoteStatus)
Enum: "DRAFT" "SENT" "ACCEPTED" "REJECTED" "EXPIRED"

Responses

Response Schema: application/json
Array
id
required
string
customerId
required
string
customerName
string
status
required
string (QuoteStatus)
Enum: "DRAFT" "SENT" "ACCEPTED" "REJECTED" "EXPIRED"
currency
required
string
validUntil
string or null <date>
required
Array of objects (Line)
netTotal
required
number
createdOn
string or null <date>

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "customerId": "string",
    • "customerName": "string",
    • "status": "DRAFT",
    • "currency": "string",
    • "validUntil": "2019-08-24",
    • "lines": [
      ],
    • "netTotal": 0,
    • "createdOn": "2019-08-24"
    }
]

Create quote

Unit prices are resolved from the customer's price list if not provided.

Authorizations:
bearerAuth
Request Body schema: application/json
required
customerId
required
string
validUntil
string or null <date>
required
Array of objects (LineWrite) non-empty

Responses

Response Schema: application/json
id
required
string
customerId
required
string
customerName
string
status
required
string (QuoteStatus)
Enum: "DRAFT" "SENT" "ACCEPTED" "REJECTED" "EXPIRED"
currency
required
string
validUntil
string or null <date>
required
Array of objects (Line)
netTotal
required
number
createdOn
string or null <date>

Request samples

Content type
application/json
{
  • "customerId": "string",
  • "validUntil": "2019-08-24",
  • "lines": [
    • {
      }
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "customerId": "string",
  • "customerName": "string",
  • "status": "DRAFT",
  • "currency": "string",
  • "validUntil": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "netTotal": 0,
  • "createdOn": "2019-08-24"
}

Read quote

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
customerId
required
string
customerName
string
status
required
string (QuoteStatus)
Enum: "DRAFT" "SENT" "ACCEPTED" "REJECTED" "EXPIRED"
currency
required
string
validUntil
string or null <date>
required
Array of objects (Line)
netTotal
required
number
createdOn
string or null <date>

Response samples

Content type
application/json
{
  • "id": "string",
  • "customerId": "string",
  • "customerName": "string",
  • "status": "DRAFT",
  • "currency": "string",
  • "validUntil": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "netTotal": 0,
  • "createdOn": "2019-08-24"
}

Update quote (status/validity)

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
status
string (QuoteStatus)
Enum: "DRAFT" "SENT" "ACCEPTED" "REJECTED" "EXPIRED"
validUntil
string or null <date>

Responses

Response Schema: application/json
id
required
string
customerId
required
string
customerName
string
status
required
string (QuoteStatus)
Enum: "DRAFT" "SENT" "ACCEPTED" "REJECTED" "EXPIRED"
currency
required
string
validUntil
string or null <date>
required
Array of objects (Line)
netTotal
required
number
createdOn
string or null <date>

Request samples

Content type
application/json
{
  • "status": "DRAFT",
  • "validUntil": "2019-08-24"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "customerId": "string",
  • "customerName": "string",
  • "status": "DRAFT",
  • "currency": "string",
  • "validUntil": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "netTotal": 0,
  • "createdOn": "2019-08-24"
}

Convert quote into order

Marks the quote as accepted and creates an order from it.

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
customerId
required
string
customerName
string
customerCountry
string or null
quoteId
string or null
status
required
string (OrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "FULFILLED" "CANCELLED"
orderDate
required
string <date>
required
Array of objects (Line)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

shippingMode
string or null

Shipping mode (e.g. AIR = air freight, otherwise sea freight).

note
string or null

Response samples

Content type
application/json
{
  • "id": "string",
  • "customerId": "string",
  • "customerName": "string",
  • "customerCountry": "string",
  • "quoteId": "string",
  • "status": "CREATED",
  • "orderDate": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "total": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "approval": {
    • "required": true,
    • "approverId": "string",
    • "decision": "APPROVE",
    • "decidedOn": "2019-08-24",
    • "comment": "string"
    },
  • "shippingMode": "string",
  • "note": "string"
}

Orders

Orders incl. e-approval (submission, approval/rejection, production, fulfillment).

List orders

Consumers read the approved orders via status=APPROVED for the production cycle.

Authorizations:
bearerAuth
query Parameters
customerId
string
status
string (OrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "FULFILLED" "CANCELLED"

Responses

Response Schema: application/json
Array
id
required
string
customerId
required
string
customerName
string
customerCountry
string or null
quoteId
string or null
status
required
string (OrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "FULFILLED" "CANCELLED"
orderDate
required
string <date>
required
Array of objects (Line)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

shippingMode
string or null

Shipping mode (e.g. AIR = air freight, otherwise sea freight).

note
string or null

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "customerId": "string",
    • "customerName": "string",
    • "customerCountry": "string",
    • "quoteId": "string",
    • "status": "CREATED",
    • "orderDate": "2019-08-24",
    • "lines": [
      ],
    • "total": {
      },
    • "approval": {
      },
    • "shippingMode": "string",
    • "note": "string"
    }
]

Create order

Authorizations:
bearerAuth
Request Body schema: application/json
required
customerId
required
string
quoteId
string or null
required
Array of objects (LineWrite) non-empty
shippingMode
string or null
note
string or null

Responses

Response Schema: application/json
id
required
string
customerId
required
string
customerName
string
customerCountry
string or null
quoteId
string or null
status
required
string (OrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "FULFILLED" "CANCELLED"
orderDate
required
string <date>
required
Array of objects (Line)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

shippingMode
string or null

Shipping mode (e.g. AIR = air freight, otherwise sea freight).

note
string or null

Request samples

Content type
application/json
{
  • "customerId": "string",
  • "quoteId": "string",
  • "lines": [
    • {
      }
    ],
  • "shippingMode": "string",
  • "note": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "customerId": "string",
  • "customerName": "string",
  • "customerCountry": "string",
  • "quoteId": "string",
  • "status": "CREATED",
  • "orderDate": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "total": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "approval": {
    • "required": true,
    • "approverId": "string",
    • "decision": "APPROVE",
    • "decidedOn": "2019-08-24",
    • "comment": "string"
    },
  • "shippingMode": "string",
  • "note": "string"
}

Delete all orders (data reset)

Destructive reset of the order stock — intended only for the data/economy reset, hence ADMIN. Not for normal operation.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/problem+json
{
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Read order

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
customerId
required
string
customerName
string
customerCountry
string or null
quoteId
string or null
status
required
string (OrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "FULFILLED" "CANCELLED"
orderDate
required
string <date>
required
Array of objects (Line)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

shippingMode
string or null

Shipping mode (e.g. AIR = air freight, otherwise sea freight).

note
string or null

Response samples

Content type
application/json
{
  • "id": "string",
  • "customerId": "string",
  • "customerName": "string",
  • "customerCountry": "string",
  • "quoteId": "string",
  • "status": "CREATED",
  • "orderDate": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "total": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "approval": {
    • "required": true,
    • "approverId": "string",
    • "decision": "APPROVE",
    • "decidedOn": "2019-08-24",
    • "comment": "string"
    },
  • "shippingMode": "string",
  • "note": "string"
}

Submit order for approval (e-approval)

Sets the status to PENDING_APPROVAL or — below the threshold — directly to APPROVED.

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
customerId
required
string
customerName
string
customerCountry
string or null
quoteId
string or null
status
required
string (OrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "FULFILLED" "CANCELLED"
orderDate
required
string <date>
required
Array of objects (Line)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

shippingMode
string or null

Shipping mode (e.g. AIR = air freight, otherwise sea freight).

note
string or null

Response samples

Content type
application/json
{
  • "id": "string",
  • "customerId": "string",
  • "customerName": "string",
  • "customerCountry": "string",
  • "quoteId": "string",
  • "status": "CREATED",
  • "orderDate": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "total": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "approval": {
    • "required": true,
    • "approverId": "string",
    • "decision": "APPROVE",
    • "decidedOn": "2019-08-24",
    • "comment": "string"
    },
  • "shippingMode": "string",
  • "note": "string"
}

Approval decision (e-approval)

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
approverId
required
string

Person (ACMEhr) making the decision.

decision
required
string
Enum: "APPROVE" "REJECT"
comment
string or null

Responses

Response Schema: application/json
id
required
string
customerId
required
string
customerName
string
customerCountry
string or null
quoteId
string or null
status
required
string (OrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "FULFILLED" "CANCELLED"
orderDate
required
string <date>
required
Array of objects (Line)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

shippingMode
string or null

Shipping mode (e.g. AIR = air freight, otherwise sea freight).

note
string or null

Request samples

Content type
application/json
{
  • "approverId": "string",
  • "decision": "APPROVE",
  • "comment": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "customerId": "string",
  • "customerName": "string",
  • "customerCountry": "string",
  • "quoteId": "string",
  • "status": "CREATED",
  • "orderDate": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "total": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "approval": {
    • "required": true,
    • "approverId": "string",
    • "decision": "APPROVE",
    • "decidedOn": "2019-08-24",
    • "comment": "string"
    },
  • "shippingMode": "string",
  • "note": "string"
}

Record produced quantities (partial fulfillment)

Reports the quantities produced on a day per line; reduces remainingQuantity. The production cycle calls this after manufacturing. Once the order is thereby complete, it moves to FULFILLED.

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
required
Array of objects non-empty

Responses

Response Schema: application/json
id
required
string
customerId
required
string
customerName
string
customerCountry
string or null
quoteId
string or null
status
required
string (OrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "FULFILLED" "CANCELLED"
orderDate
required
string <date>
required
Array of objects (Line)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

shippingMode
string or null

Shipping mode (e.g. AIR = air freight, otherwise sea freight).

note
string or null

Request samples

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

Response samples

Content type
application/json
{
  • "id": "string",
  • "customerId": "string",
  • "customerName": "string",
  • "customerCountry": "string",
  • "quoteId": "string",
  • "status": "CREATED",
  • "orderDate": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "total": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "approval": {
    • "required": true,
    • "approverId": "string",
    • "decision": "APPROVE",
    • "decidedOn": "2019-08-24",
    • "comment": "string"
    },
  • "shippingMode": "string",
  • "note": "string"
}

Mark order as fully fulfilled

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
customerId
required
string
customerName
string
customerCountry
string or null
quoteId
string or null
status
required
string (OrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "FULFILLED" "CANCELLED"
orderDate
required
string <date>
required
Array of objects (Line)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

shippingMode
string or null

Shipping mode (e.g. AIR = air freight, otherwise sea freight).

note
string or null

Response samples

Content type
application/json
{
  • "id": "string",
  • "customerId": "string",
  • "customerName": "string",
  • "customerCountry": "string",
  • "quoteId": "string",
  • "status": "CREATED",
  • "orderDate": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "total": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "approval": {
    • "required": true,
    • "approverId": "string",
    • "decision": "APPROVE",
    • "decidedOn": "2019-08-24",
    • "comment": "string"
    },
  • "shippingMode": "string",
  • "note": "string"
}

Cancel order

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
customerId
required
string
customerName
string
customerCountry
string or null
quoteId
string or null
status
required
string (OrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "FULFILLED" "CANCELLED"
orderDate
required
string <date>
required
Array of objects (Line)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

shippingMode
string or null

Shipping mode (e.g. AIR = air freight, otherwise sea freight).

note
string or null

Response samples

Content type
application/json
{
  • "id": "string",
  • "customerId": "string",
  • "customerName": "string",
  • "customerCountry": "string",
  • "quoteId": "string",
  • "status": "CREATED",
  • "orderDate": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "total": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "approval": {
    • "required": true,
    • "approverId": "string",
    • "decision": "APPROVE",
    • "decidedOn": "2019-08-24",
    • "comment": "string"
    },
  • "shippingMode": "string",
  • "note": "string"
}

Contacts

People at a customer (company). A contact may be linked to one customer.

List contacts

Authorizations:
bearerAuth
query Parameters
customerId
string

Contacts of a customer.

q
string

Responses

Response Schema: application/json
Array
id
required
string
customerId
string or null

The company this contact belongs to.

name
required
string
role
string or null
email
string or null <email>
phone
string or null
primary
boolean
Default: false

Primary contact of the customer.

newsletter
boolean
Default: false

Newsletter opt-in (set by form newsletter actions).

Response samples

Content type
application/json
[
  • {
    • "id": "contact-1001",
    • "customerId": "string",
    • "name": "Sara Mena",
    • "role": "CTO",
    • "email": "user@example.com",
    • "phone": "string",
    • "primary": false,
    • "newsletter": false
    }
]

Create contact

Authorizations:
bearerAuth
Request Body schema: application/json
required
customerId
string or null
name
required
string
role
string or null
email
string or null <email>
phone
string or null
primary
boolean
newsletter
boolean

Responses

Response Schema: application/json
id
required
string
customerId
string or null

The company this contact belongs to.

name
required
string
role
string or null
email
string or null <email>
phone
string or null
primary
boolean
Default: false

Primary contact of the customer.

newsletter
boolean
Default: false

Newsletter opt-in (set by form newsletter actions).

Request samples

Content type
application/json
{
  • "customerId": "string",
  • "name": "string",
  • "role": "string",
  • "email": "user@example.com",
  • "phone": "string",
  • "primary": true,
  • "newsletter": true
}

Response samples

Content type
application/json
{
  • "id": "contact-1001",
  • "customerId": "string",
  • "name": "Sara Mena",
  • "role": "CTO",
  • "email": "user@example.com",
  • "phone": "string",
  • "primary": false,
  • "newsletter": false
}

Read contact

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
customerId
string or null

The company this contact belongs to.

name
required
string
role
string or null
email
string or null <email>
phone
string or null
primary
boolean
Default: false

Primary contact of the customer.

newsletter
boolean
Default: false

Newsletter opt-in (set by form newsletter actions).

Response samples

Content type
application/json
{
  • "id": "contact-1001",
  • "customerId": "string",
  • "name": "Sara Mena",
  • "role": "CTO",
  • "email": "user@example.com",
  • "phone": "string",
  • "primary": false,
  • "newsletter": false
}

Update contact

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
customerId
string or null
name
required
string
role
string or null
email
string or null <email>
phone
string or null
primary
boolean
newsletter
boolean

Responses

Response Schema: application/json
id
required
string
customerId
string or null

The company this contact belongs to.

name
required
string
role
string or null
email
string or null <email>
phone
string or null
primary
boolean
Default: false

Primary contact of the customer.

newsletter
boolean
Default: false

Newsletter opt-in (set by form newsletter actions).

Request samples

Content type
application/json
{
  • "customerId": "string",
  • "name": "string",
  • "role": "string",
  • "email": "user@example.com",
  • "phone": "string",
  • "primary": true,
  • "newsletter": true
}

Response samples

Content type
application/json
{
  • "id": "contact-1001",
  • "customerId": "string",
  • "name": "Sara Mena",
  • "role": "CTO",
  • "email": "user@example.com",
  • "phone": "string",
  • "primary": false,
  • "newsletter": false
}

Pipeline

Sales pipeline overlay — a stage projection over leads/quotes/orders for the CRM board, table and funnel. Read-mostly; stage is settable for drag-drop / inline edit.

List pipeline deals

The sales pipeline as a list of Deals, each projected onto one of five stages.

Status → stage derivation (for deals backed by a quote/order): quote DRAFTNEU; quote SENTQUALIFIZIERT; quote ACCEPTED or order CREATEDANGEBOT; order PENDING_APPROVALVERHANDLUNG; order APPROVED or FULFILLEDGEWONNEN. Lost deals (quote REJECTED/EXPIRED, order REJECTED/CANCELLED) are excluded by default. Bare leads (no quote yet) sit in the stage last set on them (default NEU).

Authorizations:
bearerAuth
query Parameters
stage
string (PipelineStage)
Enum: "NEU" "QUALIFIZIERT" "ANGEBOT" "VERHANDLUNG" "GEWONNEN"

Ordered sales stage. probability is derived from it: NEU 15 · QUALIFIZIERT 35 · ANGEBOT 60 · VERHANDLUNG 80 · GEWONNEN 100 (%).

owner
string

Filter by owner initials.

customerId
string

Deals of a customer.

contactId
string

Deals with a contact.

q
string

Free-text over company/contact.

Responses

Response Schema: application/json
Array
id
required
string
source
required
string (DealSource)
Enum: "LEAD" "QUOTE" "ORDER"

What the deal is currently backed by in the transactional model.

quoteId
string or null
orderId
string or null
customerId
string or null
contactId
string or null

The contact this deal is with.

company
required
string
contact
string or null
stage
required
string (PipelineStage)
Enum: "NEU" "QUALIFIZIERT" "ANGEBOT" "VERHANDLUNG" "GEWONNEN"

Ordered sales stage. probability is derived from it: NEU 15 · QUALIFIZIERT 35 · ANGEBOT 60 · VERHANDLUNG 80 · GEWONNEN 100 (%).

probability
required
integer [ 0 .. 100 ]

Derived from stage.

required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Owner)

Sales owner assigned to a deal (avatar initials + display name).

lastActivity
string or null

Human label

lastActivityAt
string or null <date-time>
ageDays
integer or null

Days since the deal entered its current stage.

Response samples

Content type
application/json
[
  • {
    • "id": "deal-1024",
    • "source": "LEAD",
    • "quoteId": "string",
    • "orderId": "string",
    • "customerId": "string",
    • "contactId": "string",
    • "company": "Nordwind Logistik",
    • "contact": "Michael Braun · CPO",
    • "stage": "NEU",
    • "probability": 100,
    • "value": {
      },
    • "owner": {
      },
    • "lastActivity": "string",
    • "lastActivityAt": "2019-08-24T14:15:22Z",
    • "ageDays": 0
    }
]

Create a pipeline deal (lead)

Adds a new deal to the pipeline. Without a customerId/backing quote it is a bare lead (enters NEU by default); the sales team later attaches a quote/order as it progresses.

Authorizations:
bearerAuth
Request Body schema: application/json
required
company
required
string
contact
string or null
customerId
string or null
contactId
string or null
stage
string (PipelineStage)
Enum: "NEU" "QUALIFIZIERT" "ANGEBOT" "VERHANDLUNG" "GEWONNEN"

Ordered sales stage. probability is derived from it: NEU 15 · QUALIFIZIERT 35 · ANGEBOT 60 · VERHANDLUNG 80 · GEWONNEN 100 (%).

object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

ownerInitials
string or null

Responses

Response Schema: application/json
id
required
string
source
required
string (DealSource)
Enum: "LEAD" "QUOTE" "ORDER"

What the deal is currently backed by in the transactional model.

quoteId
string or null
orderId
string or null
customerId
string or null
contactId
string or null

The contact this deal is with.

company
required
string
contact
string or null
stage
required
string (PipelineStage)
Enum: "NEU" "QUALIFIZIERT" "ANGEBOT" "VERHANDLUNG" "GEWONNEN"

Ordered sales stage. probability is derived from it: NEU 15 · QUALIFIZIERT 35 · ANGEBOT 60 · VERHANDLUNG 80 · GEWONNEN 100 (%).

probability
required
integer [ 0 .. 100 ]

Derived from stage.

required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Owner)

Sales owner assigned to a deal (avatar initials + display name).

lastActivity
string or null

Human label

lastActivityAt
string or null <date-time>
ageDays
integer or null

Days since the deal entered its current stage.

Request samples

Content type
application/json
{
  • "company": "string",
  • "contact": "string",
  • "customerId": "string",
  • "contactId": "string",
  • "stage": "NEU",
  • "value": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "ownerInitials": "string"
}

Response samples

Content type
application/json
{
  • "id": "deal-1024",
  • "source": "LEAD",
  • "quoteId": "string",
  • "orderId": "string",
  • "customerId": "string",
  • "contactId": "string",
  • "company": "Nordwind Logistik",
  • "contact": "Michael Braun · CPO",
  • "stage": "NEU",
  • "probability": 100,
  • "value": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "owner": {
    • "initials": "JS",
    • "name": "Jana Schmidt"
    },
  • "lastActivity": "string",
  • "lastActivityAt": "2019-08-24T14:15:22Z",
  • "ageDays": 0
}

Read a pipeline deal

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
source
required
string (DealSource)
Enum: "LEAD" "QUOTE" "ORDER"

What the deal is currently backed by in the transactional model.

quoteId
string or null
orderId
string or null
customerId
string or null
contactId
string or null

The contact this deal is with.

company
required
string
contact
string or null
stage
required
string (PipelineStage)
Enum: "NEU" "QUALIFIZIERT" "ANGEBOT" "VERHANDLUNG" "GEWONNEN"

Ordered sales stage. probability is derived from it: NEU 15 · QUALIFIZIERT 35 · ANGEBOT 60 · VERHANDLUNG 80 · GEWONNEN 100 (%).

probability
required
integer [ 0 .. 100 ]

Derived from stage.

required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Owner)

Sales owner assigned to a deal (avatar initials + display name).

lastActivity
string or null

Human label

lastActivityAt
string or null <date-time>
ageDays
integer or null

Days since the deal entered its current stage.

Response samples

Content type
application/json
{
  • "id": "deal-1024",
  • "source": "LEAD",
  • "quoteId": "string",
  • "orderId": "string",
  • "customerId": "string",
  • "contactId": "string",
  • "company": "Nordwind Logistik",
  • "contact": "Michael Braun · CPO",
  • "stage": "NEU",
  • "probability": 100,
  • "value": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "owner": {
    • "initials": "JS",
    • "name": "Jana Schmidt"
    },
  • "lastActivity": "string",
  • "lastActivityAt": "2019-08-24T14:15:22Z",
  • "ageDays": 0
}

Update a pipeline deal (stage / owner / value / contact)

Sets sales-overlay attributes. Moving stage reflects the board drag-drop / inline edit; where a deal is backed by a quote/order the server advances the underlying record along its legal transition, otherwise it records the stage on the overlay.

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
stage
string (PipelineStage)
Enum: "NEU" "QUALIFIZIERT" "ANGEBOT" "VERHANDLUNG" "GEWONNEN"

Ordered sales stage. probability is derived from it: NEU 15 · QUALIFIZIERT 35 · ANGEBOT 60 · VERHANDLUNG 80 · GEWONNEN 100 (%).

company
string
contact
string or null
contactId
string or null
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

ownerInitials
string or null

Responses

Response Schema: application/json
id
required
string
source
required
string (DealSource)
Enum: "LEAD" "QUOTE" "ORDER"

What the deal is currently backed by in the transactional model.

quoteId
string or null
orderId
string or null
customerId
string or null
contactId
string or null

The contact this deal is with.

company
required
string
contact
string or null
stage
required
string (PipelineStage)
Enum: "NEU" "QUALIFIZIERT" "ANGEBOT" "VERHANDLUNG" "GEWONNEN"

Ordered sales stage. probability is derived from it: NEU 15 · QUALIFIZIERT 35 · ANGEBOT 60 · VERHANDLUNG 80 · GEWONNEN 100 (%).

probability
required
integer [ 0 .. 100 ]

Derived from stage.

required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Owner)

Sales owner assigned to a deal (avatar initials + display name).

lastActivity
string or null

Human label

lastActivityAt
string or null <date-time>
ageDays
integer or null

Days since the deal entered its current stage.

Request samples

Content type
application/json
{
  • "stage": "NEU",
  • "company": "string",
  • "contact": "string",
  • "contactId": "string",
  • "value": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "ownerInitials": "string"
}

Response samples

Content type
application/json
{
  • "id": "deal-1024",
  • "source": "LEAD",
  • "quoteId": "string",
  • "orderId": "string",
  • "customerId": "string",
  • "contactId": "string",
  • "company": "Nordwind Logistik",
  • "contact": "Michael Braun · CPO",
  • "stage": "NEU",
  • "probability": 100,
  • "value": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "owner": {
    • "initials": "JS",
    • "name": "Jana Schmidt"
    },
  • "lastActivity": "string",
  • "lastActivityAt": "2019-08-24T14:15:22Z",
  • "ageDays": 0
}

Mail

Mail threads (correspondence) attached to a customer/contact. UI overlay — a real mail-sync backend is future work (currently mocked).

List mail threads

Correspondence attached to a customer and/or contact. Filter by either.

Authorizations:
bearerAuth
query Parameters
customerId
string
contactId
string
q
string

Responses

Response Schema: application/json
Array
id
required
string
subject
required
string
customerId
string or null
contactId
string or null
participants
Array of strings
messageCount
integer
lastMessageAt
string or null <date-time>
preview
string or null

Snippet of the latest message.

Array of objects (MailMessage)

Response samples

Content type
application/json
[
  • {
    • "id": "thread-1001",
    • "subject": "Angebot Rahmen XL",
    • "customerId": "string",
    • "contactId": "string",
    • "participants": [
      ],
    • "messageCount": 0,
    • "lastMessageAt": "2019-08-24T14:15:22Z",
    • "preview": "string",
    • "messages": [
      ]
    }
]

Read a mail thread (with messages)

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
subject
required
string
customerId
string or null
contactId
string or null
participants
Array of strings
messageCount
integer
lastMessageAt
string or null <date-time>
preview
string or null

Snippet of the latest message.

Array of objects (MailMessage)

Response samples

Content type
application/json
{
  • "id": "thread-1001",
  • "subject": "Angebot Rahmen XL",
  • "customerId": "string",
  • "contactId": "string",
  • "participants": [
    • "string"
    ],
  • "messageCount": 0,
  • "lastMessageAt": "2019-08-24T14:15:22Z",
  • "preview": "string",
  • "messages": [
    • {
      }
    ]
}

Forms

Web forms / newsletter signups. Layout and trigger actions are configured in Admin; POST /forms/{id}/submit is the public submission tool (validate → store → trigger).

List web forms

Configured web forms / newsletter signups (definition maintained in Admin).

Authorizations:
bearerAuth

Responses

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

Public identifier used to embed the form.

description
string or null
enabled
boolean
Default: true
required
Array of objects (FormField)
Array of objects (FormAction)

Triggered on a valid submission.

createdOn
string or null <date>

Response samples

Content type
application/json
[
  • {
    • "id": "form-lead",
    • "name": "Kontaktformular",
    • "slug": "kontakt",
    • "description": "string",
    • "enabled": true,
    • "fields": [
      ],
    • "actions": [
      ],
    • "createdOn": "2019-08-24"
    }
]

Create a web form (Admin)

Authorizations:
bearerAuth
Request Body schema: application/json
required
name
required
string
slug
required
string
description
string or null
enabled
boolean
required
Array of objects (FormField)
Array of objects (FormAction)

Responses

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

Public identifier used to embed the form.

description
string or null
enabled
boolean
Default: true
required
Array of objects (FormField)
Array of objects (FormAction)

Triggered on a valid submission.

createdOn
string or null <date>

Request samples

Content type
application/json
{
  • "name": "string",
  • "slug": "string",
  • "description": "string",
  • "enabled": true,
  • "fields": [
    • {
      }
    ],
  • "actions": [
    • {
      }
    ]
}

Response samples

Content type
application/json
{
  • "id": "form-lead",
  • "name": "Kontaktformular",
  • "slug": "kontakt",
  • "description": "string",
  • "enabled": true,
  • "fields": [
    • {
      }
    ],
  • "actions": [
    • {
      }
    ],
  • "createdOn": "2019-08-24"
}

Read a web form (definition)

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

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

Public identifier used to embed the form.

description
string or null
enabled
boolean
Default: true
required
Array of objects (FormField)
Array of objects (FormAction)

Triggered on a valid submission.

createdOn
string or null <date>

Response samples

Content type
application/json
{
  • "id": "form-lead",
  • "name": "Kontaktformular",
  • "slug": "kontakt",
  • "description": "string",
  • "enabled": true,
  • "fields": [
    • {
      }
    ],
  • "actions": [
    • {
      }
    ],
  • "createdOn": "2019-08-24"
}

Update a web form (Admin — fields, required flags, trigger actions)

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
name
required
string
slug
required
string
description
string or null
enabled
boolean
required
Array of objects (FormField)
Array of objects (FormAction)

Responses

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

Public identifier used to embed the form.

description
string or null
enabled
boolean
Default: true
required
Array of objects (FormField)
Array of objects (FormAction)

Triggered on a valid submission.

createdOn
string or null <date>

Request samples

Content type
application/json
{
  • "name": "string",
  • "slug": "string",
  • "description": "string",
  • "enabled": true,
  • "fields": [
    • {
      }
    ],
  • "actions": [
    • {
      }
    ]
}

Response samples

Content type
application/json
{
  • "id": "form-lead",
  • "name": "Kontaktformular",
  • "slug": "kontakt",
  • "description": "string",
  • "enabled": true,
  • "fields": [
    • {
      }
    ],
  • "actions": [
    • {
      }
    ],
  • "createdOn": "2019-08-24"
}

Submit a web form (public)

Public submission tool for the embedded web form / newsletter signup — no auth (overrides the global bearer security). Validates the submitted values against the form's required fields (422 listing the offending fields on failure); on success stores the submission and runs the configured trigger actions (send email, create contact/opportunity, schedule appointment, newsletter subscribe/unsubscribe). Returns the stored submission incl. which actions were triggered.

path Parameters
id
required
string
Request Body schema: application/json
required
required
object

Responses

Response Schema: application/json
id
required
string
formId
required
string
required
object
submittedAt
required
string <date-time>
Array of objects (TriggeredAction)

Request samples

Content type
application/json
{
  • "values": {
    • "name": "Sara Mena",
    • "email": "sara@example.com",
    • "newsletter": true
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "formId": "string",
  • "values": { },
  • "submittedAt": "2019-08-24T14:15:22Z",
  • "triggered": [
    • {
      }
    ]
}

List captured submissions of a form

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
Array
id
required
string
formId
required
string
required
object
submittedAt
required
string <date-time>
Array of objects (TriggeredAction)

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "formId": "string",
    • "values": { },
    • "submittedAt": "2019-08-24T14:15:22Z",
    • "triggered": [
      ]
    }
]

Suppliers

Suppliers.

List suppliers

Authorizations:
bearerAuth
query Parameters
status
string (SupplierStatus)
Enum: "PROSPECT" "ACTIVE" "BLOCKED"
q
string

Responses

Response Schema: application/json
Array
id
required
string
name
required
string
status
required
string (SupplierStatus)
Enum: "PROSPECT" "ACTIVE" "BLOCKED"
email
string or null <email>
country
string or null

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "name": "Rohstoff Handels AG",
    • "status": "PROSPECT",
    • "email": "user@example.com",
    • "country": "DE"
    }
]

Create supplier

Authorizations:
bearerAuth
Request Body schema: application/json
required
name
required
string
status
string (SupplierStatus)
Enum: "PROSPECT" "ACTIVE" "BLOCKED"
email
string <email>
country
string

Responses

Response Schema: application/json
id
required
string
name
required
string
status
required
string (SupplierStatus)
Enum: "PROSPECT" "ACTIVE" "BLOCKED"
email
string or null <email>
country
string or null

Request samples

Content type
application/json
{
  • "name": "string",
  • "status": "PROSPECT",
  • "email": "user@example.com",
  • "country": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "Rohstoff Handels AG",
  • "status": "PROSPECT",
  • "email": "user@example.com",
  • "country": "DE"
}

Read supplier

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
name
required
string
status
required
string (SupplierStatus)
Enum: "PROSPECT" "ACTIVE" "BLOCKED"
email
string or null <email>
country
string or null

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "Rohstoff Handels AG",
  • "status": "PROSPECT",
  • "email": "user@example.com",
  • "country": "DE"
}

Update supplier

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
name
required
string
status
string (SupplierStatus)
Enum: "PROSPECT" "ACTIVE" "BLOCKED"
email
string <email>
country
string

Responses

Response Schema: application/json
id
required
string
name
required
string
status
required
string (SupplierStatus)
Enum: "PROSPECT" "ACTIVE" "BLOCKED"
email
string or null <email>
country
string or null

Request samples

Content type
application/json
{
  • "name": "string",
  • "status": "PROSPECT",
  • "email": "user@example.com",
  • "country": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "Rohstoff Handels AG",
  • "status": "PROSPECT",
  • "email": "user@example.com",
  • "country": "DE"
}

Materials

Raw materials and energy.

List raw materials/energy

Authorizations:
bearerAuth
query Parameters
kind
string (MaterialKind)
Enum: "RAW_MATERIAL" "ENERGY"
q
string

Responses

Response Schema: application/json
Array
id
required
string
code
required
string
name
required
string
kind
required
string (MaterialKind)
Enum: "RAW_MATERIAL" "ENERGY"
unit
required
string

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "code": "STAHL",
    • "name": "Stahlblech",
    • "kind": "RAW_MATERIAL",
    • "unit": "kg"
    }
]

Create material (master data)

Authorizations:
bearerAuth
Request Body schema: application/json
required
code
required
string
name
required
string
kind
required
string (MaterialKind)
Enum: "RAW_MATERIAL" "ENERGY"
unit
string

Responses

Response Schema: application/json
id
required
string
code
required
string
name
required
string
kind
required
string (MaterialKind)
Enum: "RAW_MATERIAL" "ENERGY"
unit
required
string

Request samples

Content type
application/json
{
  • "code": "string",
  • "name": "string",
  • "kind": "RAW_MATERIAL",
  • "unit": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "code": "STAHL",
  • "name": "Stahlblech",
  • "kind": "RAW_MATERIAL",
  • "unit": "kg"
}

Read material

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
code
required
string
name
required
string
kind
required
string (MaterialKind)
Enum: "RAW_MATERIAL" "ENERGY"
unit
required
string

Response samples

Content type
application/json
{
  • "id": "string",
  • "code": "STAHL",
  • "name": "Stahlblech",
  • "kind": "RAW_MATERIAL",
  • "unit": "kg"
}

Update material (master data)

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
code
required
string
name
required
string
kind
required
string (MaterialKind)
Enum: "RAW_MATERIAL" "ENERGY"
unit
string

Responses

Response Schema: application/json
id
required
string
code
required
string
name
required
string
kind
required
string (MaterialKind)
Enum: "RAW_MATERIAL" "ENERGY"
unit
required
string

Request samples

Content type
application/json
{
  • "code": "string",
  • "name": "string",
  • "kind": "RAW_MATERIAL",
  • "unit": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "code": "STAHL",
  • "name": "Stahlblech",
  • "kind": "RAW_MATERIAL",
  • "unit": "kg"
}

SupplyContracts

Supply contracts — tiered prices + lead times, price resolution.

List supply contracts

Authorizations:
bearerAuth
query Parameters
supplierId
string
materialId
string

Responses

Response Schema: application/json
Array
id
required
string
supplierId
required
string
supplierName
string
materialId
required
string
materialName
string
currency
required
string = 3 characters
leadTimeDays
required
integer

Lead time in days.

object (DateRange)

Validity period. until=null = open-ended.

required
Array of objects (Tier)

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "supplierId": "string",
    • "supplierName": "string",
    • "materialId": "string",
    • "materialName": "string",
    • "currency": "EUR",
    • "leadTimeDays": 0,
    • "validity": {
      },
    • "tiers": [
      ]
    }
]

Create supply contract

Authorizations:
bearerAuth
Request Body schema: application/json
required
supplierId
required
string
materialId
required
string
currency
required
string = 3 characters
leadTimeDays
required
integer
validFrom
string <date>
validUntil
string or null <date>
required
Array of objects (Tier) non-empty

Responses

Response Schema: application/json
id
required
string
supplierId
required
string
supplierName
string
materialId
required
string
materialName
string
currency
required
string = 3 characters
leadTimeDays
required
integer

Lead time in days.

object (DateRange)

Validity period. until=null = open-ended.

required
Array of objects (Tier)

Request samples

Content type
application/json
{
  • "supplierId": "string",
  • "materialId": "string",
  • "currency": "str",
  • "leadTimeDays": 0,
  • "validFrom": "2019-08-24",
  • "validUntil": "2019-08-24",
  • "tiers": [
    • {
      }
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "supplierId": "string",
  • "supplierName": "string",
  • "materialId": "string",
  • "materialName": "string",
  • "currency": "EUR",
  • "leadTimeDays": 0,
  • "validity": {
    • "from": "2019-08-24",
    • "until": "2019-08-24"
    },
  • "tiers": [
    • {
      }
    ]
}

Read supply contract

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
supplierId
required
string
supplierName
string
materialId
required
string
materialName
string
currency
required
string = 3 characters
leadTimeDays
required
integer

Lead time in days.

object (DateRange)

Validity period. until=null = open-ended.

required
Array of objects (Tier)

Response samples

Content type
application/json
{
  • "id": "string",
  • "supplierId": "string",
  • "supplierName": "string",
  • "materialId": "string",
  • "materialName": "string",
  • "currency": "EUR",
  • "leadTimeDays": 0,
  • "validity": {
    • "from": "2019-08-24",
    • "until": "2019-08-24"
    },
  • "tiers": [
    • {
      }
    ]
}

Resolve procurement price + lead time

Returns the unit price applicable for supplier + material + quantity (best tier) and the lead time.

Authorizations:
bearerAuth
query Parameters
supplierId
required
string
materialId
required
string
quantity
integer >= 1
Default: 1

Responses

Response Schema: application/json
supplierId
required
string
materialId
required
string
quantity
required
integer
unitPrice
required
number
currency
string
leadTimeDays
required
integer
contractId
string or null

Response samples

Content type
application/json
{
  • "supplierId": "string",
  • "materialId": "string",
  • "quantity": 0,
  • "unitPrice": 0,
  • "currency": "string",
  • "leadTimeDays": 0,
  • "contractId": "string"
}

SupplyOrders

Procurements incl. approval (submission, approval/rejection, goods receipt).

List procurements

Authorizations:
bearerAuth
query Parameters
supplierId
string
status
string (SupplyOrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "RECEIVED" "CANCELLED"

Responses

Response Schema: application/json
Array
id
required
string
supplierId
required
string
supplierName
string
status
required
string (SupplyOrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "RECEIVED" "CANCELLED"
orderDate
required
string <date>
expectedDeliveryDate
string or null <date>

orderDate + max. lead time.

required
Array of objects (Line1)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

note
string or null

Response samples

Content type
application/json
[
  • {
    • "id": "string",
    • "supplierId": "string",
    • "supplierName": "string",
    • "status": "CREATED",
    • "orderDate": "2019-08-24",
    • "expectedDeliveryDate": "2019-08-24",
    • "lines": [
      ],
    • "total": {
      },
    • "approval": {
      },
    • "note": "string"
    }
]

Create procurement

Authorizations:
bearerAuth
Request Body schema: application/json
required
supplierId
required
string
required
Array of objects (LineWrite1) non-empty
note
string or null

Responses

Response Schema: application/json
id
required
string
supplierId
required
string
supplierName
string
status
required
string (SupplyOrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "RECEIVED" "CANCELLED"
orderDate
required
string <date>
expectedDeliveryDate
string or null <date>

orderDate + max. lead time.

required
Array of objects (Line1)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

note
string or null

Request samples

Content type
application/json
{
  • "supplierId": "string",
  • "lines": [
    • {
      }
    ],
  • "note": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "supplierId": "string",
  • "supplierName": "string",
  • "status": "CREATED",
  • "orderDate": "2019-08-24",
  • "expectedDeliveryDate": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "total": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "approval": {
    • "required": true,
    • "approverId": "string",
    • "decision": "APPROVE",
    • "decidedOn": "2019-08-24",
    • "comment": "string"
    },
  • "note": "string"
}

Read procurement

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
supplierId
required
string
supplierName
string
status
required
string (SupplyOrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "RECEIVED" "CANCELLED"
orderDate
required
string <date>
expectedDeliveryDate
string or null <date>

orderDate + max. lead time.

required
Array of objects (Line1)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

note
string or null

Response samples

Content type
application/json
{
  • "id": "string",
  • "supplierId": "string",
  • "supplierName": "string",
  • "status": "CREATED",
  • "orderDate": "2019-08-24",
  • "expectedDeliveryDate": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "total": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "approval": {
    • "required": true,
    • "approverId": "string",
    • "decision": "APPROVE",
    • "decidedOn": "2019-08-24",
    • "comment": "string"
    },
  • "note": "string"
}

Submit procurement for approval

Above the threshold → PENDING_APPROVAL, otherwise APPROVED.

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
supplierId
required
string
supplierName
string
status
required
string (SupplyOrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "RECEIVED" "CANCELLED"
orderDate
required
string <date>
expectedDeliveryDate
string or null <date>

orderDate + max. lead time.

required
Array of objects (Line1)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

note
string or null

Response samples

Content type
application/json
{
  • "id": "string",
  • "supplierId": "string",
  • "supplierName": "string",
  • "status": "CREATED",
  • "orderDate": "2019-08-24",
  • "expectedDeliveryDate": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "total": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "approval": {
    • "required": true,
    • "approverId": "string",
    • "decision": "APPROVE",
    • "decidedOn": "2019-08-24",
    • "comment": "string"
    },
  • "note": "string"
}

Approval decision

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
approverId
required
string

Person (ACMEhr) making the decision.

decision
required
string
Enum: "APPROVE" "REJECT"
comment
string or null

Responses

Response Schema: application/json
id
required
string
supplierId
required
string
supplierName
string
status
required
string (SupplyOrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "RECEIVED" "CANCELLED"
orderDate
required
string <date>
expectedDeliveryDate
string or null <date>

orderDate + max. lead time.

required
Array of objects (Line1)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

note
string or null

Request samples

Content type
application/json
{
  • "approverId": "string",
  • "decision": "APPROVE",
  • "comment": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "supplierId": "string",
  • "supplierName": "string",
  • "status": "CREATED",
  • "orderDate": "2019-08-24",
  • "expectedDeliveryDate": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "total": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "approval": {
    • "required": true,
    • "approverId": "string",
    • "decision": "APPROVE",
    • "decidedOn": "2019-08-24",
    • "comment": "string"
    },
  • "note": "string"
}

Book goods receipt (delivered)

Books the goods receipt and increases the material stock.

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
supplierId
required
string
supplierName
string
status
required
string (SupplyOrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "RECEIVED" "CANCELLED"
orderDate
required
string <date>
expectedDeliveryDate
string or null <date>

orderDate + max. lead time.

required
Array of objects (Line1)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

note
string or null

Response samples

Content type
application/json
{
  • "id": "string",
  • "supplierId": "string",
  • "supplierName": "string",
  • "status": "CREATED",
  • "orderDate": "2019-08-24",
  • "expectedDeliveryDate": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "total": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "approval": {
    • "required": true,
    • "approverId": "string",
    • "decision": "APPROVE",
    • "decidedOn": "2019-08-24",
    • "comment": "string"
    },
  • "note": "string"
}

Cancel procurement

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
id
required
string
supplierId
required
string
supplierName
string
status
required
string (SupplyOrderStatus)
Enum: "CREATED" "PENDING_APPROVAL" "APPROVED" "REJECTED" "RECEIVED" "CANCELLED"
orderDate
required
string <date>
expectedDeliveryDate
string or null <date>

orderDate + max. lead time.

required
Array of objects (Line1)
required
object (Money)

Monetary amount. unlimited=true → no amount limit (then amount/currency are empty).

object (Approval)

E-approval status of an order/procurement.

note
string or null

Response samples

Content type
application/json
{
  • "id": "string",
  • "supplierId": "string",
  • "supplierName": "string",
  • "status": "CREATED",
  • "orderDate": "2019-08-24",
  • "expectedDeliveryDate": "2019-08-24",
  • "lines": [
    • {
      }
    ],
  • "total": {
    • "amount": 50000,
    • "currency": "EUR",
    • "unlimited": false
    },
  • "approval": {
    • "required": true,
    • "approverId": "string",
    • "decision": "APPROVE",
    • "decidedOn": "2019-08-24",
    • "comment": "string"
    },
  • "note": "string"
}

Stock

Material stock — read, consumption (production), reset.

Read available stock of a material

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Response Schema: application/json
materialId
required
string
available
required
number

Available quantity in the material's unit.

Response samples

Content type
application/json
{
  • "materialId": "string",
  • "available": 0
}

Consume stock (production)

Reduces available stock by the produced quantity. Called by the production cycle.

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
required
quantity
required
number >= 0

Quantity to consume.

Responses

Response Schema: application/json
materialId
required
string
available
required
number

Available quantity in the material's unit.

Request samples

Content type
application/json
{
  • "quantity": 0
}

Response samples

Content type
application/json
{
  • "materialId": "string",
  • "available": 0
}

Reset all stock (data reset)

Resets the warehouse stock — only for the data/economy reset, hence ADMIN. Not for normal operation.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/problem+json
{
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

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"
    }
]