Download OpenAPI specification:
Foundation of the ACMEsuite (ACMEbase). Two roles in one spec:
Platform API — authentication (local login + federated provider options), the current user, self-service password, and the admin surface (user/role management + federated auth-provider configuration). Identity may be local or federated (Entra/OIDC), but the access role is always assigned locally in Base. After a successful login Base issues its own session JWT (bearer); the module APIs validate that token only and never see the external IdP.
Shared components — value types (Money, DateRange), the RFC-7807 error object, the generic error responses, the e-approval types (Approval/ApprovalDecision) and the auth scheme. The four module specs (hr/crm/build/supply) reference these via cross-file $ref (acme-base.yaml#/components/...); redocly bundle resolves them when needed.
Roles (ACMEbase auth): WATCH reads · WORK writes operationally · ADMIN maintains master data and administers the platform; hierarchy ADMIN > WORK > WATCH. Annotated per operation as x-required-role. Note: because of OpenAPI 3.0, the bearerAuth scheme must additionally be declared locally in each module spec (a security requirement cannot be resolved via cross-file $ref); the definition maintained here is the canonical template.
| username required | string |
| password required | string <password> |
| token | string Base session JWT (bearer). |
| mustSetPassword | boolean If true |
object (SessionUser) The signed-in user (also the subject of the session token). |
{- "username": "string",
- "password": "pa$$word"
}{- "token": "string",
- "mustSetPassword": true,
- "user": {
- "id": "string",
- "username": "string",
- "email": "string",
- "displayName": "string",
- "role": "WATCH",
- "status": "ACTIVE",
- "auditor": true
}
}| id | string |
| username | string or null |
string or null | |
| displayName | string or null |
| role | string (AccessRole) Enum: "WATCH" "WORK" "ADMIN" Access role; hierarchy ADMIN > WORK > WATCH. |
| status | string (UserStatus) Enum: "ACTIVE" "PENDING" "DISABLED" ACTIVE may sign in · PENDING awaits role assignment · DISABLED is blocked. |
| auditor | boolean Orthogonal AUDIT capability (ADR-0010): may view version history. Independent of the access role; granted separately by an admin. |
{- "id": "string",
- "username": "string",
- "email": "string",
- "displayName": "string",
- "role": "WATCH",
- "status": "ACTIVE",
- "auditor": true
}| newPassword required | string <password> >= 10 characters |
{- "newPassword": "pa$$word_q"
}{- "title": "string",
- "status": 0,
- "detail": "string",
- "instance": "string"
}True only when acme.base.auth.bootstrap.allow-self-claim is enabled server-side AND no admin exists yet. Only ever enabled on instances not reachable by untrusted parties before the real operator claims the account (e.g. local development) — never in a public deployment.
| needsSetup | boolean Show the self-claim screen instead of the normal login form. |
{- "needsSetup": true
}Only reachable while bootstrap-status reports needsSetup: true; 404s otherwise (same response whether the feature is disabled or already claimed, so it never leaks state to an unauthenticated caller). No forced password change — the operator chose it deliberately.
| username | string Defaults to the configured bootstrap admin username (usually "admin") if omitted. |
| password required | string <password> >= 10 characters |
| token | string Base session JWT (bearer). |
| mustSetPassword | boolean If true |
object (SessionUser) The signed-in user (also the subject of the session token). |
{- "username": "string",
- "password": "pa$$word_q"
}{- "token": "string",
- "mustSetPassword": true,
- "user": {
- "id": "string",
- "username": "string",
- "email": "string",
- "displayName": "string",
- "role": "WATCH",
- "status": "ACTIVE",
- "auditor": true
}
}| id | string |
| username | string or null |
string or null | |
| displayName | string or null |
| role | string (AccessRole) Enum: "WATCH" "WORK" "ADMIN" Access role; hierarchy ADMIN > WORK > WATCH. |
| status | string (UserStatus) Enum: "ACTIVE" "PENDING" "DISABLED" ACTIVE may sign in · PENDING awaits role assignment · DISABLED is blocked. |
| auditor | boolean Orthogonal AUDIT capability (ADR-0010): may view version history. Independent of the access role; granted separately by an admin. |
| authProvider | string 'local' or a configured provider id. |
| updatedAt | string or null <date-time> When the record was last changed. |
| updatedBy | string or null Who last changed the record. |
[- {
- "id": "string",
- "username": "string",
- "email": "string",
- "displayName": "string",
- "role": "WATCH",
- "status": "ACTIVE",
- "auditor": true,
- "authProvider": "string",
- "updatedAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string"
}
]| username required | string |
| displayName | string |
string | |
| role required | string (AccessRole) Enum: "WATCH" "WORK" "ADMIN" Access role; hierarchy ADMIN > WORK > WATCH. |
object (DirectoryUser) A user in the admin directory (adds the authenticating provider and the last-change stamp). Who/when of the last change is visible to everyone (ADR-0010); the version number is not. | |
| temporaryPassword | string One-time password; shown once |
{- "username": "string",
- "displayName": "string",
- "email": "string",
- "role": "WATCH"
}{- "user": {
- "id": "string",
- "username": "string",
- "email": "string",
- "displayName": "string",
- "role": "WATCH",
- "status": "ACTIVE",
- "auditor": true,
- "authProvider": "string",
- "updatedAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string"
}, - "temporaryPassword": "string"
}| id required | string |
| role required | string (AccessRole) Enum: "WATCH" "WORK" "ADMIN" Access role; hierarchy ADMIN > WORK > WATCH. |
| id | string |
| username | string or null |
string or null | |
| displayName | string or null |
| role | string (AccessRole) Enum: "WATCH" "WORK" "ADMIN" Access role; hierarchy ADMIN > WORK > WATCH. |
| status | string (UserStatus) Enum: "ACTIVE" "PENDING" "DISABLED" ACTIVE may sign in · PENDING awaits role assignment · DISABLED is blocked. |
| auditor | boolean Orthogonal AUDIT capability (ADR-0010): may view version history. Independent of the access role; granted separately by an admin. |
| authProvider | string 'local' or a configured provider id. |
| updatedAt | string or null <date-time> When the record was last changed. |
| updatedBy | string or null Who last changed the record. |
{- "role": "WATCH"
}{- "id": "string",
- "username": "string",
- "email": "string",
- "displayName": "string",
- "role": "WATCH",
- "status": "ACTIVE",
- "auditor": true,
- "authProvider": "string",
- "updatedAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string"
}| id required | string |
| status required | string (UserStatus) Enum: "ACTIVE" "PENDING" "DISABLED" ACTIVE may sign in · PENDING awaits role assignment · DISABLED is blocked. |
| id | string |
| username | string or null |
string or null | |
| displayName | string or null |
| role | string (AccessRole) Enum: "WATCH" "WORK" "ADMIN" Access role; hierarchy ADMIN > WORK > WATCH. |
| status | string (UserStatus) Enum: "ACTIVE" "PENDING" "DISABLED" ACTIVE may sign in · PENDING awaits role assignment · DISABLED is blocked. |
| auditor | boolean Orthogonal AUDIT capability (ADR-0010): may view version history. Independent of the access role; granted separately by an admin. |
| authProvider | string 'local' or a configured provider id. |
| updatedAt | string or null <date-time> When the record was last changed. |
| updatedBy | string or null Who last changed the record. |
{- "status": "ACTIVE"
}{- "id": "string",
- "username": "string",
- "email": "string",
- "displayName": "string",
- "role": "WATCH",
- "status": "ACTIVE",
- "auditor": true,
- "authProvider": "string",
- "updatedAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string"
}Orthogonal to the access role (ADR-0010) — may view version history.
| id required | string |
| auditor required | boolean |
| id | string |
| username | string or null |
string or null | |
| displayName | string or null |
| role | string (AccessRole) Enum: "WATCH" "WORK" "ADMIN" Access role; hierarchy ADMIN > WORK > WATCH. |
| status | string (UserStatus) Enum: "ACTIVE" "PENDING" "DISABLED" ACTIVE may sign in · PENDING awaits role assignment · DISABLED is blocked. |
| auditor | boolean Orthogonal AUDIT capability (ADR-0010): may view version history. Independent of the access role; granted separately by an admin. |
| authProvider | string 'local' or a configured provider id. |
| updatedAt | string or null <date-time> When the record was last changed. |
| updatedBy | string or null Who last changed the record. |
{- "auditor": true
}{- "id": "string",
- "username": "string",
- "email": "string",
- "displayName": "string",
- "role": "WATCH",
- "status": "ACTIVE",
- "auditor": true,
- "authProvider": "string",
- "updatedAt": "2019-08-24T14:15:22Z",
- "updatedBy": "string"
}Full versioned change history (ADR-0010). Requires the AUDIT capability — ordinary users, including ADMINs without AUDIT, cannot see version numbers or earlier versions.
| id required | string |
| revision | integer <int64> Monotonic version number. |
| changedAt | string <date-time> |
| changedBy | string or null |
| changeType | string (RevisionType) Enum: "ADD" "MOD" "DEL" How the record changed at this revision (add / modify / delete-tombstone). |
| username | string or null |
string or null | |
| displayName | string or null |
| role | string (AccessRole) Enum: "WATCH" "WORK" "ADMIN" Access role; hierarchy ADMIN > WORK > WATCH. |
| status | string (UserStatus) Enum: "ACTIVE" "PENDING" "DISABLED" ACTIVE may sign in · PENDING awaits role assignment · DISABLED is blocked. |
| auditor | boolean |
| deleted | boolean Whether this revision is a tombstone. |
[- {
- "revision": 0,
- "changedAt": "2019-08-24T14:15:22Z",
- "changedBy": "string",
- "changeType": "ADD",
- "username": "string",
- "email": "string",
- "displayName": "string",
- "role": "WATCH",
- "status": "ACTIVE",
- "auditor": true,
- "deleted": true
}
]| providerId | string |
| displayName | string |
| kind | string (ProviderKind) Enum: "LOCAL" "OIDC" |
| enabled | boolean |
| configured | boolean |
Array of objects (ProviderField) | |
object Non-secret field values. | |
| secretsSet | Array of strings Keys of secret fields that currently have a stored value. |
[- {
- "providerId": "string",
- "displayName": "string",
- "kind": "LOCAL",
- "enabled": true,
- "configured": true,
- "schema": [
- {
- "key": "string",
- "label": "string",
- "type": "TEXT",
- "required": true
}
], - "values": {
- "property1": "string",
- "property2": "string"
}, - "secretsSet": [
- "string"
]
}
]| providerId required | string |
| enabled | boolean |
object Field values; a blank secret keeps the stored one. |
| providerId | string |
| displayName | string |
| kind | string (ProviderKind) Enum: "LOCAL" "OIDC" |
| enabled | boolean |
| configured | boolean |
Array of objects (ProviderField) | |
object Non-secret field values. | |
| secretsSet | Array of strings Keys of secret fields that currently have a stored value. |
{- "enabled": true,
- "values": {
- "property1": "string",
- "property2": "string"
}
}{- "providerId": "string",
- "displayName": "string",
- "kind": "LOCAL",
- "enabled": true,
- "configured": true,
- "schema": [
- {
- "key": "string",
- "label": "string",
- "type": "TEXT",
- "required": true
}
], - "values": {
- "property1": "string",
- "property2": "string"
}, - "secretsSet": [
- "string"
]
}