@@ -31,68 +31,68 @@ all identifiers use namespace URIs for global interoperability.
3131Key Capabilities
3232----------------
3333
34- - **OAuth 2.0 Authentication **: Client credentials flow with
35- scrypt-hashed secrets, scoped access
36- - **Consent-Based Access Control **: All reads require active consent,
37- filtered by organization type
38- - **External Identifiers Only **: Namespace URIs for lookups, vocabulary
39- IDs for coded values
40- - **Source Tracking **: Records data provenance per ADR-008
41- - **Extension Registry **: Domain modules register custom fields via
42- ``spp.api.extension ``
43- - **Batch Operations **: Create/update multiple registrants per request
34+ - **OAuth 2.0 Authentication **: Client credentials flow with
35+ scrypt-hashed secrets, scoped access
36+ - **Consent-Based Access Control **: All reads require active consent,
37+ filtered by organization type
38+ - **External Identifiers Only **: Namespace URIs for lookups, vocabulary
39+ IDs for coded values
40+ - **Source Tracking **: Records data provenance per ADR-008
41+ - **Extension Registry **: Domain modules register custom fields via
42+ ``spp.api.extension ``
43+ - **Batch Operations **: Create/update multiple registrants per request
4444
4545Key Models
4646----------
4747
48- +---------------------------+-----------------------------------------+
49- | Model | Description |
50- +===========================+=========================================+
51- | ``spp.api.client `` | OAuth 2.0 credentials, organization |
52- | | verification |
53- +---------------------------+-----------------------------------------+
54- | ``spp.api.client.scope `` | Resource/action permissions |
55- +---------------------------+-----------------------------------------+
56- | ``spp.api.path `` | Endpoint configuration and filters |
57- +---------------------------+-----------------------------------------+
58- | ``spp.api.path.filter `` | Field-level filter configurations |
59- +---------------------------+-----------------------------------------+
60- | ``spp.api.filter.preset `` | Saved filter combinations |
61- +---------------------------+-----------------------------------------+
62- | ``spp.api.extension `` | Domain field registry |
63- +---------------------------+-----------------------------------------+
64- | ``spp.consent.scope `` | Resource types per consent |
65- +---------------------------+-----------------------------------------+
48+ +---------------------------+------------------------------------------ +
49+ | Model | Description |
50+ +===========================+========================================== +
51+ | ``spp.api.client `` | OAuth 2.0 credentials, organization |
52+ | | verification |
53+ +---------------------------+------------------------------------------ +
54+ | ``spp.api.client.scope `` | Resource/action permissions |
55+ +---------------------------+------------------------------------------ +
56+ | ``spp.api.path `` | Endpoint configuration and filters |
57+ +---------------------------+------------------------------------------ +
58+ | ``spp.api.path.filter `` | Field-level filter configurations |
59+ +---------------------------+------------------------------------------ +
60+ | ``spp.api.filter.preset `` | Saved filter combinations |
61+ +---------------------------+------------------------------------------ +
62+ | ``spp.api.extension `` | Domain field registry |
63+ +---------------------------+------------------------------------------ +
64+ | ``spp.consent.scope `` | Resource types per consent |
65+ +---------------------------+------------------------------------------ +
6666
6767UI Location
6868-----------
6969
7070Navigate to **Registry > Configuration > API V2 ** for all API
7171configuration. Available submenus:
7272
73- - **API Clients ** - Manage OAuth credentials and organization
74- verification
75- - **API Extensions ** - View registered custom field extensions
76- - **API Paths ** - Configure available endpoints and static filters
77- - **API Filters ** - Define queryable field filters per path
78- - **Filter Presets ** - Create named filter combinations
73+ - **API Clients ** - Manage OAuth credentials and organization
74+ verification
75+ - **API Extensions ** - View registered custom field extensions
76+ - **API Paths ** - Configure available endpoints and static filters
77+ - **API Filters ** - Define queryable field filters per path
78+ - **Filter Presets ** - Create named filter combinations
7979
8080**API Client Form Tabs: **
8181
82- - **Consent & Security ** - Consent requirements, legal basis,
83- organization type verification
84- - **Scopes ** - Resource/action permissions and program restrictions
85- - **Description ** - Client documentation
82+ - **Consent & Security ** - Consent requirements, legal basis,
83+ organization type verification
84+ - **Scopes ** - Resource/action permissions and program restrictions
85+ - **Description ** - Client documentation
8686
8787**API Extension Form Tabs: **
8888
89- - **Fields ** - Registered custom fields from domain modules
90- - **JSON Schema ** - Auto-generated schema for extension fields
89+ - **Fields ** - Registered custom fields from domain modules
90+ - **JSON Schema ** - Auto-generated schema for extension fields
9191
9292**API Path Form Tabs: **
9393
94- - **Filters ** - Field-level filter configurations (inline editable)
95- - **Presets ** - Saved filter combinations (inline editable)
94+ - **Filters ** - Field-level filter configurations (inline editable)
95+ - **Presets ** - Saved filter combinations (inline editable)
9696
9797Configuration
9898-------------
@@ -111,27 +111,27 @@ API endpoints available at ``/api/v2/`` (token endpoint:
111111Security
112112--------
113113
114- +--------------------------+------------------------------------------+
115- | Group | Access |
116- +==========================+==========================================+
117- | ``group_api_v2_viewer `` | Read-only: all API configuration and |
118- | | consent |
119- +--------------------------+------------------------------------------+
120- | ``group_api_v2_officer `` | Read/Write: all models (no |
121- | | create/delete), full CRUD on consent |
122- | | scopes |
123- +--------------------------+------------------------------------------+
124- | ``group_api_v2_manager `` | Full CRUD: clients, scopes, paths, |
125- | | filters, presets, extensions; |
126- | | Read/Write/Create on consent (no delete) |
127- +--------------------------+------------------------------------------+
114+ +--------------------------+------------------------------------------- +
115+ | Group | Access |
116+ +==========================+=========================================== +
117+ | ``group_api_v2_viewer `` | Read-only: all API configuration and |
118+ | | consent |
119+ +--------------------------+------------------------------------------- +
120+ | ``group_api_v2_officer `` | Read/Write: all models (no |
121+ | | create/delete), full CRUD on consent |
122+ | | scopes |
123+ +--------------------------+------------------------------------------- +
124+ | ``group_api_v2_manager `` | Full CRUD: clients, scopes, paths, |
125+ | | filters, presets, extensions; |
126+ | | Read/Write/Create on consent (no delete) |
127+ +--------------------------+------------------------------------------- +
128128
129129Extension Points
130130----------------
131131
132- - Inherit ``spp.api.extension `` to register custom fields
133- - Override ``_get_fastapi_routers() `` in ``fastapi.endpoint `` for
134- custom endpoints
132+ - Inherit ``spp.api.extension `` to register custom fields
133+ - Override ``_get_fastapi_routers() `` in ``fastapi.endpoint `` for custom
134+ endpoints
135135
136136Dependencies
137137------------
0 commit comments