Przejdź do treści

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"
}
Wynik: Alice, jako Party, posiada Duty "HR Manager" w zakresie Wydziału HR, przez pełny 2026, na podstawie umowy zatrudnienia.


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"
}
Wynik: Bob posiada Duty "Finance Manager (Fakturowanie)" + Capability "approve-payment" dla Wydziału Finansów, bezterminowo, na podstawie decyzji awansu.


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"
}
Wynik: Charlie, w roli „warehouse-supervisor", jest delegowany jako Kierownik Magazynu, obowiązujące Q1 2026, na podstawie pisma delegacji.


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"
}
Wynik: Frank może potwierdzać przyjęcia towarów i czytać poziomy zapasów w Warehouse Zone A.


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"
}
Wynik: Grace (Finance Manager) czasowo zatwierdzona do obsługi faktur €50k z powodu nieobecności CFO.


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