## Summary - add the RBAC role definition diff UX upgrade as the first concrete consumer of the shared diff presentation foundation - refine managed tenant onboarding draft routing, CTA labeling, and cancellation redirect behavior - tighten related Filament and diff rendering regression coverage ## Testing - updated focused Pest coverage for onboarding draft routing and lifecycle behavior - updated focused Pest coverage for shared diff partials and RBAC finding rendering ## Notes - Livewire v4.0+ compliance is preserved within the existing Filament v5 surfaces - provider registration remains unchanged in bootstrap/providers.php - no new Filament assets were added; existing deployment practice still relies on php artisan filament:assets when assets change Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #171
135 lines
3.0 KiB
YAML
135 lines
3.0 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: RBAC Finding Diff View Contract
|
|
version: 1.0.0
|
|
description: >-
|
|
Internal presentation contract for the RBAC role definition diff consumer on the Findings
|
|
view page. This feature adds no external HTTP endpoints. The contract documents the
|
|
authoritative evidence input and the render-ready diff presentation output used by the
|
|
consumer.
|
|
paths: {}
|
|
components:
|
|
schemas:
|
|
RbacRoleDefinitionEvidence:
|
|
type: object
|
|
required:
|
|
- changed_keys
|
|
- baseline
|
|
- current
|
|
properties:
|
|
diff_kind:
|
|
type: string
|
|
diff_fingerprint:
|
|
type: string
|
|
changed_keys:
|
|
type: array
|
|
items:
|
|
type: string
|
|
metadata_keys:
|
|
type: array
|
|
items:
|
|
type: string
|
|
permission_keys:
|
|
type: array
|
|
items:
|
|
type: string
|
|
baseline:
|
|
$ref: '#/components/schemas/RbacRoleDefinitionSide'
|
|
current:
|
|
$ref: '#/components/schemas/RbacRoleDefinitionSide'
|
|
RbacRoleDefinitionSide:
|
|
type: object
|
|
properties:
|
|
normalized:
|
|
type: object
|
|
additionalProperties: true
|
|
is_built_in:
|
|
type:
|
|
- boolean
|
|
- 'null'
|
|
role_permission_count:
|
|
type:
|
|
- integer
|
|
- 'null'
|
|
DiffPresentation:
|
|
type: object
|
|
required:
|
|
- summary
|
|
- rows
|
|
properties:
|
|
summary:
|
|
$ref: '#/components/schemas/DiffSummary'
|
|
rows:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/DiffRow'
|
|
DiffSummary:
|
|
type: object
|
|
required:
|
|
- changedCount
|
|
- addedCount
|
|
- removedCount
|
|
- unchangedCount
|
|
- hasRows
|
|
properties:
|
|
changedCount:
|
|
type: integer
|
|
minimum: 0
|
|
addedCount:
|
|
type: integer
|
|
minimum: 0
|
|
removedCount:
|
|
type: integer
|
|
minimum: 0
|
|
unchangedCount:
|
|
type: integer
|
|
minimum: 0
|
|
hasRows:
|
|
type: boolean
|
|
message:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
DiffRow:
|
|
type: object
|
|
required:
|
|
- key
|
|
- label
|
|
- status
|
|
- isListLike
|
|
- addedItems
|
|
- removedItems
|
|
- unchangedItems
|
|
- meta
|
|
properties:
|
|
key:
|
|
type: string
|
|
minLength: 1
|
|
label:
|
|
type: string
|
|
minLength: 1
|
|
status:
|
|
type: string
|
|
enum:
|
|
- changed
|
|
- unchanged
|
|
- added
|
|
- removed
|
|
oldValue:
|
|
nullable: true
|
|
newValue:
|
|
nullable: true
|
|
isListLike:
|
|
type: boolean
|
|
addedItems:
|
|
type: array
|
|
items: {}
|
|
removedItems:
|
|
type: array
|
|
items: {}
|
|
unchangedItems:
|
|
type: array
|
|
items: {}
|
|
meta:
|
|
type: object
|
|
additionalProperties: true |