GrantAssignment (Core RBAC)
GrantAssignment (nadanie uprawnień) to zasób reprezentujący przypisanie uprawnień: komu przypisane (assignedTo – Party, PartyRole, Position lub OrganizationUnit), względem kogo/czego obowiązujące (scope – kontekst organizacyjny), co nadane (granted – referencje do Capability), w jakim okresie (period), na jakiej podstawie (basis) i kto nadał (givenBy). Jest to konkretne przypisanie (grant) w czasie, nie abstrakcyjna „Permission".
Użycie międzymodułowe: kadry (uprawnienia pracowników i przełożonych), księgowość (uprawnienia do zatwierdzania), magazyn (uprawnienia operacyjne), delegacje między jednostkami itd. Obecnie źródłem przypisań są kadry.
Rozszerza DomainResource.
1. Zakres i zastosowanie
GrantAssignment = pojedyncze przypisanie uprawnienia: - assignedTo (0..1) – komu przypisane: Reference do Party, PartyRole, Position lub OrganizationUnit. PartyRole pozwala przypisać uprawnienie osobie w konkretnej roli (np. jako pracownik). - scope (0..) – względem kogo/czego obowiązujące: Reference do strony w roli, jednostki organizacyjnej lub stanowiska (kontekst organizacyjny lub zakres autorytetu); w kadrach – PartyRole pracownika, którego dotyczy uprawnienie przełożonego. - granted (0..) – co nadane: lista referencji do Capability. - period (0..1) – okres obowiązywania przypisania. - basis (0..1) – podstawa prawna / merytoryczna przypisania (CodeableConcept; kody nadaje wdrożenie). - givenBy (0..1) – kto nadał przypisanie (Reference do PartyRole / użytkownika).
Powiązanie z zatrudnieniem (Employment) niesie attribute[] (employment-id), a filtr basedOn w zapytaniu przyjmuje identyfikator zatrudnienia. status (z DomainResource) – kody nadaje wdrożenie.
2. Struktura (pola)
Poza polami z DomainResource (id, resourceType, meta, owner, comment, category, status, type, contained, attribute):
| Nazwa | Kard. | Typ | Opis |
|---|---|---|---|
| assignedTo | 0..1 | Reference(Party | PartyRole | Position | OrganizationUnit) | komu – odbiorca: osoba (Party), osoba w roli (PartyRole), stanowisko lub jednostka org |
| scope | 0..* | Reference(PartyRole | OrganizationUnit | Position) | względem kogo/czego – zakres (kadry: strona w roli pracownika) |
| granted | 0..* | Reference(Capability) | co nadane – przyznane zdolności (referencje do Capability) |
| period | 0..1 | Period | Okres obowiązywania (start, end); brak końca = nadal ważne |
| basis | 0..1 | CodeableConcept | Podstawa prawna / merytoryczna (kody nadaje wdrożenie) |
| givenBy | 0..1 | Reference(PartyRole) | Przyznał – strona w roli / użytkownik (dla audytu) |
Uwagi:
- assignedTo = komu; scope = względem kogo/czego; granted = co jest nadane
- GrantAssignment nie ma pola identifier; przypisanie wyszukuje się po assignedTo, granted, scope, basedOn
- attribute[] w kadrach (system https://api-erp.kamsoft.pl/vs/hr/grant-assignment-attribute-type): direct-only (tylko bezpośredni podwładni), employment-id (zatrudnienie, z którego wynika uprawnienie), order-path (ścieżka w hierarchii)
3. Przykład
Przypisanie: pracownik w roli przełożonego ma uprawnienie względem podwładnego
{
"resourceType": "GrantAssignment",
"assignedTo": {
"type": "PartyRole",
"identifier": { "system": "urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz>", "value": "employee-1001" },
"display": "Employee"
},
"scope": [{
"type": "PartyRole",
"identifier": { "system": "urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz>", "value": "employee-2002" },
"display": "Employee"
}],
"granted": [{
"type": "Capability",
"identifier": { "system": "urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz>", "value": "<kod uprawnienia>" }
}],
"attribute": [
{ "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/hr/grant-assignment-attribute-type", "code": "direct-only" }] }, "value": [{ "valueString": "1" }] },
{ "code": { "coding": [{ "system": "https://api-erp.kamsoft.pl/vs/hr/grant-assignment-attribute-type", "code": "employment-id" }] }, "value": [{ "valueString": "5005" }] }
]
}
employee-1001 posiada wskazane uprawnienie względem pracownika employee-2002; przypisanie wynika z zatrudnienia 5005. Przestrzenie system są parametrem wdrożenia (deployment).
4. Operacje
Parametry filtrów mają postać system|value (attribute: code|value). Odpowiedź to koperta { "items": [...], "nextToken": null }, stronicowana parametrami count (domyślnie 20) i offset (domyślnie 0).
| Operacja | Parametry | Odpowiedź |
|---|---|---|
GET /v1/grant-assignments |
assignedTo (przestrzeń wewnętrzna Party), granted (przestrzeń wewnętrzna Capability), basedOn (przestrzeń wewnętrzna Employment), scope (przestrzeń wewnętrzna Party), attribute[] (direct-only|<wartość>), count, offset |
200 koperta z GrantAssignment[] |
Przykłady zapytań:
GET /v1/grant-assignments?assignedTo=urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz>|1001
GET /v1/grant-assignments?scope=urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz>|2002&granted=urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz>|<kod uprawnienia>
Zasób jest tylko do odczytu; brak POST/PATCH/DELETE i tras z {id}.
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 zakresem dat |
| SAP SuccessFactors | Role assignment, delegated permissions | Przypisanie z efektywną 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ł przypisanie (ścieżka audytu)
- attribute[].employment-id – zatrudnienie, z którego wynika przypisanie
- meta.lastModified / added / versionId – znaczniki czasowe i wersja (Meta)
- status – aktywne vs. wycofane przypisania (kody nadaje wdrożenie); period – wygaśnięcie
7. Zasoby powiązane
→ Capability — Pojedyncze uprawnienie
→ Przegląd Core RBAC — Model RBAC cross-module