191 lines
5.9 KiB
YAML
191 lines
5.9 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: Filament Table State Standardization Contract
|
|
version: 1.0.0
|
|
description: |
|
|
Page-level contract for standardized Filament list surfaces affected by Spec 125.
|
|
This feature does not add public APIs. It formalizes the expected query-state
|
|
parameters and page behaviors for resource, tenant-scoped, and system-scoped
|
|
list surfaces that use native Filament tables.
|
|
paths:
|
|
/admin/{listSlug}:
|
|
get:
|
|
summary: Render a standardized workspace-scoped Filament list surface
|
|
operationId: getWorkspaceScopedListSurface
|
|
tags:
|
|
- Filament Table UX
|
|
parameters:
|
|
- $ref: '#/components/parameters/ListSlug'
|
|
- $ref: '#/components/parameters/TableSearch'
|
|
- $ref: '#/components/parameters/TableSortColumn'
|
|
- $ref: '#/components/parameters/TableSortDirection'
|
|
- $ref: '#/components/parameters/TableRecordsPerPage'
|
|
- $ref: '#/components/parameters/Page'
|
|
responses:
|
|
'200':
|
|
description: Standardized list page rendered successfully
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
'403':
|
|
description: Actor is a member of the scope but lacks the required capability for the page or exposed action
|
|
'404':
|
|
description: Workspace scope is unavailable or the actor is not entitled to the requested scope
|
|
/admin/t/{tenant}/{listSlug}:
|
|
get:
|
|
summary: Render a standardized tenant-scoped Filament list surface
|
|
operationId: getTenantScopedListSurface
|
|
tags:
|
|
- Filament Table UX
|
|
parameters:
|
|
- name: tenant
|
|
in: path
|
|
required: true
|
|
description: Tenant identifier resolved by the existing Filament tenant route binding
|
|
schema:
|
|
type: string
|
|
- $ref: '#/components/parameters/ListSlug'
|
|
- $ref: '#/components/parameters/TableSearch'
|
|
- $ref: '#/components/parameters/TableSortColumn'
|
|
- $ref: '#/components/parameters/TableSortDirection'
|
|
- $ref: '#/components/parameters/TableRecordsPerPage'
|
|
- $ref: '#/components/parameters/Page'
|
|
responses:
|
|
'200':
|
|
description: Standardized tenant-scoped list page rendered successfully
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
'403':
|
|
description: Tenant member lacks the capability required for the page or exposed action
|
|
'404':
|
|
description: Tenant or workspace context is unavailable or the actor is not entitled to the tenant scope
|
|
/system/{listSlug}:
|
|
get:
|
|
summary: Render a standardized platform-scoped Filament list surface
|
|
operationId: getSystemScopedListSurface
|
|
tags:
|
|
- Filament Table UX
|
|
parameters:
|
|
- $ref: '#/components/parameters/ListSlug'
|
|
- $ref: '#/components/parameters/TableSearch'
|
|
- $ref: '#/components/parameters/TableSortColumn'
|
|
- $ref: '#/components/parameters/TableSortDirection'
|
|
- $ref: '#/components/parameters/TableRecordsPerPage'
|
|
- $ref: '#/components/parameters/Page'
|
|
responses:
|
|
'200':
|
|
description: Standardized platform list page rendered successfully
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
'403':
|
|
description: Platform user lacks the capability required for the page or exposed action
|
|
'404':
|
|
description: The actor is not entitled to the platform scope
|
|
components:
|
|
parameters:
|
|
ListSlug:
|
|
name: listSlug
|
|
in: path
|
|
required: true
|
|
description: |
|
|
Logical list-surface identifier. Examples include resource list pages,
|
|
system directory tables, operations pages, or custom picker tables.
|
|
schema:
|
|
type: string
|
|
TableSearch:
|
|
name: tableSearch
|
|
in: query
|
|
required: false
|
|
description: Free-text search across the table's approved searchable fields
|
|
schema:
|
|
type: string
|
|
TableSortColumn:
|
|
name: tableSortColumn
|
|
in: query
|
|
required: false
|
|
description: Active sortable column for the table surface
|
|
schema:
|
|
type: string
|
|
TableSortDirection:
|
|
name: tableSortDirection
|
|
in: query
|
|
required: false
|
|
description: Active table sort direction
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- asc
|
|
- desc
|
|
TableRecordsPerPage:
|
|
name: tableRecordsPerPage
|
|
in: query
|
|
required: false
|
|
description: Selected page-size option from the surface's pagination profile
|
|
schema:
|
|
oneOf:
|
|
- type: integer
|
|
minimum: 5
|
|
- type: string
|
|
enum:
|
|
- all
|
|
Page:
|
|
name: page
|
|
in: query
|
|
required: false
|
|
description: Current paginator page for the table surface
|
|
schema:
|
|
type: integer
|
|
minimum: 1
|
|
schemas:
|
|
StandardizedTableBehavior:
|
|
type: object
|
|
required:
|
|
- defaultSort
|
|
- emptyState
|
|
- paginationProfile
|
|
properties:
|
|
defaultSort:
|
|
type: object
|
|
properties:
|
|
column:
|
|
type: string
|
|
direction:
|
|
type: string
|
|
enum:
|
|
- asc
|
|
- desc
|
|
persistence:
|
|
type: object
|
|
properties:
|
|
search:
|
|
type: boolean
|
|
sort:
|
|
type: boolean
|
|
filters:
|
|
type: boolean
|
|
emptyState:
|
|
type: object
|
|
required:
|
|
- heading
|
|
- description
|
|
properties:
|
|
heading:
|
|
type: string
|
|
description:
|
|
type: string
|
|
hasAuthorizedAction:
|
|
type: boolean
|
|
paginationProfile:
|
|
type: string
|
|
enum:
|
|
- resource
|
|
- relation_manager
|
|
- widget
|
|
- picker
|
|
- custom_page
|