GrantAssignment (Core RBAC)
GrantAssignment (nadanie uprawnień) to zasób reprezentujący przypisanie uprawnień: komu przypisane (assignedTo – Party, PartyRole, Position, or OrganizationUnit), względem kogo/czego obowiązujące (scope – kontekst organizacyjny), co nadane (granted – referencje do Capability), w jakim okresie (period) oraz na jakiej podstawie (basis, basedOn). Jest to konkretne przypisanie (grant) w czasie, nie abstrakcyjna „Permission".
Cross-module use: HR (employee role assignments), FK (approval authority grants), WMS (operational permissions), delegation across organizations, etc.
Extends DomainResource.
1. Zakres i Zastosowanie
GrantAssignment = pojedyncze przypisanie uprawnienia:
- assignedTo (1..1) – komu przypisane: Reference do Party, PartyRole, Position lub OrganizationUnit. PartyRole pozwala przypisanie osobie w konkretnej roli (np. jako manager, jako pracownik).
- scope (0..) – względem kogo/czego obowiązujące: Reference do OrganizationUnit, Party lub Position (kontekst organizacyjny lub zakres autorytetu).
- granted (1..) – co nadane: lista referencji do Capability.
- period (0..1) – okres ważności przypisania.
- basis (0..1) – podstawa przypisania (CodeableConcept, np. appointment, delegation, acting – system https://api-erp.kamsoft.pl/ns/grant-basis).
- basedOn (0..*) – reference do źródła (np. Reference Document, Employment – umowa, decyzja, dokument delegacji).
Lista granted musi zawierać co najmniej jedną referencję. status (z DomainResource) – np. active, ended, cancelled.
2. Strukturą (Pola)
Dodatkowo do DomainResource (id, meta, text, comment, category, status, type, contained, attribute):
| Nazwa | Kar. | Typ | Opis |
|---|---|---|---|
| assignedTo | 1..1 | Reference(Party | PartyRole | Position | OrganizationUnit) | komu – odbiorcy: osoba (Party), osoba w roli (PartyRole), stanowisko zawodowe lub jednostka org |
| scope | 0..* | Reference(OrganizationUnit | Party | Position) | względem kogo/czego – kontekst scope (jednostka org, party lub stanowisko) |
| granted | 1..* | Reference(Capability) | co nadane – lista referencji do uprawnień (Capability) |
| period | 0..1 | Period | Okres ważności (start, koniec); brak końca = nadal ważne |
| basis | 0..1 | CodeableConcept | Podstawa przypisania (np. appointment, delegation, acting – system https://api-erp.kamsoft.pl/ns/grant-basis) |
| basedOn | 0..* | Reference(Document, Employment, itp.) | Dokument źródłowy (np. umowa zatrudnienia, decyzja o delegacji) |
| givenBy | 0..1 | Reference(Party) | Kto nadał to przypisanie (opcjonalnie, dla audytu) |
Uwagi: - granted musi zawierać co najmniej jedną referencję (do Capability) - assignedTo = komu; scope = względem kogo/czego; granted = co jest nadane - status = active (w efekcie), ended (okres ważności wygasł), pending, cancelled (wycofane)
3. Examples Across Modules & Scenarios
Scenariusz 1: Przypisanie Roli Pracownicze (HR)
Przypisanie: Alice przypisana jako HR Manager dla Wydziału HR
{
"assignedTo": { "reference": "Party/alice-pId" },
"scope": [{ "reference": "OrganizationUnit/hr-dept" }],
"granted": [{ "reference": "Duty/hr-manager" }],
"period": {
"start": "2026-01-01",
"end": "2026-12-31"
},
"basis": {
"system": "https://api-erp.kamsoft.pl/ns/grant-basis",
"code": "appointment",
"display": "Appointment"
},
"basedOn": [{ "reference": "Employment/alice-emp-001" }],
"status": "active"
}
Scenariusz 2: Uprawnienia Zatwierdzania Faktur (FK)
Przypisanie: Bob przypisany jako Finance Manager z limitem zatwierdzenia €10k
{
"assignedTo": { "reference": "Party/bob-pId" },
"scope": [{ "reference": "OrganizationUnit/finance-dept" }],
"granted": [
{ "reference": "Duty/finance-manager-invoicing" },
{ "reference": "Capability/approve-payment" }
],
"period": {
"start": "2026-02-01",
"end": null
},
"basis": {
"system": "https://api-erp.kamsoft.pl/ns/grant-basis",
"code": "appointment",
"display": "Appointment"
},
"basedOn": [{ "reference": "Document/promotion-decision-2026-01" }],
"status": "active"
}
Scenariusz 3: Czasowa Delegacja (Cross-Module)
Przypisanie: Charlie delegowany jako Kierownik Magazynu na Q1 2026
{
"assignedTo": { "reference": "PartyRole/charlie-as-warehouse-supervisor" },
"scope": [{ "reference": "Party/central-warehouse" }],
"granted": [{ "reference": "Duty/warehouse-manager" }],
"period": {
"start": "2026-01-01",
"end": "2026-03-31"
},
"basis": {
"system": "https://api-erp.kamsoft.pl/ns/grant-basis",
"code": "delegation",
"display": "Delegation (Acting)"
},
"basedOn": [{ "reference": "Document/delegation-letter-2025-12-15" }],
"givenBy": { "reference": "Party/warehouse-director" },
"status": "active"
}
Scenariusz 4: Multi-Level Hierarchia Zatwierdzania Organizacyjnego
Struktura organizacyjna:
CEO: Alice
└── Dyrektor Finansów: Bob
├── Finance Manager: Charlie
│ └── Księgowy: Diana
└── Kierownik Wynagrodzeń: Eve
Przypisania:
1. Alice (CEO)
→ Duty "CFO" (zatwierdź wszystkie faktury, wszystkie koszty, wykonaj płatności)
→ Scope: cała firma
2. Bob (Dyrektor Finansów)
→ Duty "Finance Manager (Fakturowanie)" (zatwierdź faktury €5k–€50k)
→ Scope: Wydział Finansów
→ Basis: appointment
3. Charlie (Finance Manager)
→ Duty "Finance Manager (Fakturowanie)" (zatwierdź faktury €500–€5k)
→ Scope: zespół Rachunkowości
→ Basis: appointment
4. Diana (Księgowy)
→ Capability "approve-expense" (≤ €1k)
→ Capability "post-to-gl"
→ Scope: jej własne zatwierdzenia do company-wide GL postingu
→ Basis: appointment
5. Eve (Kierownik Wynagrodzeń)
→ Duty "Payroll Manager" (post payroll, export reports)
→ Scope: funkcja Wynagrodzeń
→ Basis: appointment
Przykład Workflow Zatwierdzania: - Alice przesyła koszt: €10.000 → Może zatwierdź sama (CFO) LUB delegować do Bob (Dyrektor Finansów) - Bob przesyła koszt: €3.000 → Kierowany do Alice (CEO); nie może zatwierdzać swoich wydatków - Charlie przesyła koszt: €2.000 → Kierowany do Bob (Finance Manager) lub Alice; Bob może zatwierdź - Diana przesyła koszt: €500 → Może zatwierdź sama (≤ €1k); lub kierowany do Charlie
Scenariusz 5: Delegacja Operacji WMS
Przypisanie: Frank delegowany jako Warehouse Operator (potwierdzenie przyjęcia towarów)
{
"assignedTo": { "reference": "Party/frank-pId" },
"scope": [{ "reference": "Location/warehouse-zone-A" }],
"granted": [
{ "reference": "Capability/confirm-goods-receipt" },
{ "reference": "Capability/view-stock-level" }
],
"period": {
"start": "2026-02-01",
"end": null
},
"basis": {
"system": "https://api-erp.kamsoft.pl/ns/grant-basis",
"code": "appointment",
"display": "Appointment"
},
"status": "active"
}
Scenariusz 6: Wyjątek/Czasowe Podwyższenie
Przypisanie: Grace otrzymana czasowa uprawnienie zatwierdzania dla faktur €50k (wyjątek)
{
"assignedTo": { "reference": "Party/grace-pId" },
"scope": [{ "reference": "OrganizationUnit/finance-dept" }],
"granted": [
{ "reference": "Capability/approve-invoice-extended" }
],
"period": {
"start": "2026-02-15",
"end": "2026-02-28"
},
"basis": {
"system": "https://api-erp.kamsoft.pl/ns/grant-basis",
"code": "emergency-authorization",
"display": "Emergency Authorization"
},
"basedOn": [{ "reference": "Document/cfo-exception-approval-2026-02-15" }],
"status": "active"
}
4. Użycie API
Endpointy (wszystkie moduły):
GET /v1/grant-assignments — Wylicz wszystkie przypisania (filtr po assignedTo, scope, granted)
POST /v1/grant-assignments — Utwórz przypisanie
GET /v1/grant-assignments/{id} — Pobierz przypisanie
PATCH /v1/grant-assignments/{id} — Zaktualizuj przypisanie (np. przedłuż okres, wycofaj)
DELETE /v1/grant-assignments/{id} — Usuń/wycofaj przypisanie
Przykłady zapytań:
GET /v1/grant-assignments?assignedTo=Party/alice&status=active
GET /v1/grant-assignments?scope=OrganizationUnit/finance-dept&granted=Duty/finance-manager
GET /v1/grant-assignments?grantExpires=2026-Q1
5. Wyrównanie do ERP
| System | Odpowiednik | Uwagi |
|---|---|---|
| SAP HCM / S/4HANA | User role assignment (PFCG), user master | GrantAssignment = użytkownik przypisany do roli z zakresam dat |
| SAP SuccessFactors | Role assignment, delegated permissions | Przypisanie z efectywną datą, scope |
| Oracle HCM Cloud | Role assignment (person, job, org) | Przypisanie z zakresem dat |
| Workday | Security assignment, delegated security, acting assignment | Worker/position/org + security group + period |
| Microsoft Dynamics 365 | Security role assignment to user, team assignment | User = assignedTo; Role = granted; Org = scope |
6. Audyt i Compliance
- givenBy – Kto nadał to przypisanie (dla ścieżki audytu)
- basedOn – Dokument źródłowy (polityka, umowa, decyzja)
- meta.createdBy / modifiedBy – Znaczniki czasowe audytu
- status – Śledź aktywne vs. wycofane przypisania; wspieraj wygaśnięcie okresu
7. Zasoby powiązane
→ Capability — Pojedyncze uprawnienie
→ Przegląd Core RBAC — Model RBAC cross-module
→ Przykłady workflow'ów RBAC: sekcje demonstracyjne w dokumentacji Core