geoserver-acl-client 3.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- geoserver_acl_client-3.0.2/PKG-INFO +208 -0
- geoserver_acl_client-3.0.2/README.md +190 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/__init__.py +103 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/api/__init__.py +7 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/api/authorization_api.py +1147 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/api/data_rules_api.py +4726 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/api/workspace_admin_rules_api.py +3860 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/api_client.py +834 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/api_response.py +21 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/configuration.py +671 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/exceptions.py +219 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/__init__.py +42 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/access_info.py +133 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/access_request.py +108 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/access_summary.py +96 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/access_summary_request.py +91 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/address_range_filter.py +112 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/admin_access_info.py +93 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/admin_access_request.py +100 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/admin_grant_type.py +38 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/admin_rule.py +159 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/admin_rule_filter.py +133 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/catalog_mode.py +39 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/geom.py +135 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/grant_type.py +39 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/insert_position.py +39 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/layer_attribute.py +113 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/layer_details.py +168 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/rule.py +198 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/rule_filter.py +170 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/rule_limits.py +109 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/set_filter.py +101 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/spatial_filter_type.py +38 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/text_filter.py +101 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/wkb.py +89 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/wkt.py +89 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/models/workspace_access_summary.py +106 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/py.typed +0 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client/rest.py +335 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client.egg-info/PKG-INFO +208 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client.egg-info/SOURCES.txt +74 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client.egg-info/dependency_links.txt +1 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client.egg-info/requires.txt +4 -0
- geoserver_acl_client-3.0.2/geoserver_acl_client.egg-info/top_level.txt +1 -0
- geoserver_acl_client-3.0.2/pyproject.toml +95 -0
- geoserver_acl_client-3.0.2/setup.cfg +7 -0
- geoserver_acl_client-3.0.2/setup.py +49 -0
- geoserver_acl_client-3.0.2/test/test_access_info.py +69 -0
- geoserver_acl_client-3.0.2/test/test_access_request.py +59 -0
- geoserver_acl_client-3.0.2/test/test_access_summary.py +58 -0
- geoserver_acl_client-3.0.2/test/test_access_summary_request.py +55 -0
- geoserver_acl_client-3.0.2/test/test_address_range_filter.py +53 -0
- geoserver_acl_client-3.0.2/test/test_admin_access_info.py +55 -0
- geoserver_acl_client-3.0.2/test/test_admin_access_request.py +55 -0
- geoserver_acl_client-3.0.2/test/test_admin_grant_type.py +34 -0
- geoserver_acl_client-3.0.2/test/test_admin_rule.py +63 -0
- geoserver_acl_client-3.0.2/test/test_admin_rule_filter.py +64 -0
- geoserver_acl_client-3.0.2/test/test_authorization_api.py +60 -0
- geoserver_acl_client-3.0.2/test/test_catalog_mode.py +34 -0
- geoserver_acl_client-3.0.2/test/test_data_rules_api.py +145 -0
- geoserver_acl_client-3.0.2/test/test_geom.py +53 -0
- geoserver_acl_client-3.0.2/test/test_grant_type.py +34 -0
- geoserver_acl_client-3.0.2/test/test_insert_position.py +34 -0
- geoserver_acl_client-3.0.2/test/test_layer_attribute.py +55 -0
- geoserver_acl_client-3.0.2/test/test_layer_details.py +67 -0
- geoserver_acl_client-3.0.2/test/test_rule.py +71 -0
- geoserver_acl_client-3.0.2/test/test_rule_filter.py +75 -0
- geoserver_acl_client-3.0.2/test/test_rule_limits.py +54 -0
- geoserver_acl_client-3.0.2/test/test_set_filter.py +53 -0
- geoserver_acl_client-3.0.2/test/test_spatial_filter_type.py +34 -0
- geoserver_acl_client-3.0.2/test/test_text_filter.py +53 -0
- geoserver_acl_client-3.0.2/test/test_wkb.py +52 -0
- geoserver_acl_client-3.0.2/test/test_wkt.py +52 -0
- geoserver_acl_client-3.0.2/test/test_workspace_access_summary.py +55 -0
- geoserver_acl_client-3.0.2/test/test_workspace_admin_rules_api.py +116 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: geoserver_acl_client
|
|
3
|
+
Version: 3.0.2
|
|
4
|
+
Summary: GeoServer Access Control List (ACL) API
|
|
5
|
+
Home-page:
|
|
6
|
+
Author: GeoServer ACL
|
|
7
|
+
Author-email: GeoServer ACL <geoserver-user@discourse.osgeo.org>
|
|
8
|
+
License: GPL-2.0
|
|
9
|
+
Project-URL: Repository, https://github.com/geoserver/geoserver-acl
|
|
10
|
+
Keywords: OpenAPI,OpenAPI-Generator,GeoServer Access Control List (ACL) API
|
|
11
|
+
Requires-Python: >=3.10
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
Requires-Dist: urllib3<3.0.0,>=2.7.0
|
|
14
|
+
Requires-Dist: python-dateutil>=2.8.2
|
|
15
|
+
Requires-Dist: pydantic>=2.11
|
|
16
|
+
Requires-Dist: typing-extensions>=4.7.1
|
|
17
|
+
Dynamic: author
|
|
18
|
+
|
|
19
|
+
# geoserver-acl-client
|
|
20
|
+
This API provides comprehensive control over the GeoServer Access Control List (ACL) system.
|
|
21
|
+
It allows for the management of fine-grained access rules and provides endpoints to query authorization decisions.
|
|
22
|
+
|
|
23
|
+
The API is divided into three main areas:
|
|
24
|
+
1. **Data Rules:** For managing access to specific GeoServer resources (layers, services, etc.).
|
|
25
|
+
2. **Workspace Admin Rules:** For managing administrative privileges on a per-workspace basis.
|
|
26
|
+
3. **Authorization:** For querying the ACL system to determine access rights for a given request.
|
|
27
|
+
|
|
28
|
+
Rules are evaluated in priority order (lower numbers = higher priority) to determine whether a request should be allowed, denied, or limited.
|
|
29
|
+
The API also provides authorization endpoints that evaluate these rules for specific access requests.
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
|
33
|
+
|
|
34
|
+
- API version: 1.0.0
|
|
35
|
+
- Package version: 3.0.2
|
|
36
|
+
- Generator version: 7.25.0
|
|
37
|
+
- Build package: org.openapitools.codegen.languages.PythonClientCodegen
|
|
38
|
+
For more information, please visit [https://github.com/geoserver/geoserver-acl](https://github.com/geoserver/geoserver-acl)
|
|
39
|
+
|
|
40
|
+
## Requirements.
|
|
41
|
+
|
|
42
|
+
Python 3.10+
|
|
43
|
+
|
|
44
|
+
## Installation & Usage
|
|
45
|
+
### pip install
|
|
46
|
+
|
|
47
|
+
If the python package is hosted on a repository, you can install directly using:
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
pip install git+https://github.com/geoserver/geoserver-acl.git
|
|
51
|
+
```
|
|
52
|
+
(you may need to run `pip` with root permission: `sudo pip install git+https://github.com/geoserver/geoserver-acl.git`)
|
|
53
|
+
|
|
54
|
+
Then import the package:
|
|
55
|
+
```python
|
|
56
|
+
import geoserver_acl_client
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Setuptools
|
|
60
|
+
|
|
61
|
+
Install via [Setuptools](http://pypi.python.org/pypi/setuptools).
|
|
62
|
+
|
|
63
|
+
```sh
|
|
64
|
+
python setup.py install --user
|
|
65
|
+
```
|
|
66
|
+
(or `sudo python setup.py install` to install the package for all users)
|
|
67
|
+
|
|
68
|
+
Then import the package:
|
|
69
|
+
```python
|
|
70
|
+
import geoserver_acl_client
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Tests
|
|
74
|
+
|
|
75
|
+
Execute `pytest` to run the tests.
|
|
76
|
+
|
|
77
|
+
## Getting Started
|
|
78
|
+
|
|
79
|
+
Please follow the [installation procedure](#installation--usage) and then run the following:
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
|
|
83
|
+
import geoserver_acl_client
|
|
84
|
+
from geoserver_acl_client.rest import ApiException
|
|
85
|
+
from pprint import pprint
|
|
86
|
+
|
|
87
|
+
# Defining the host is optional and defaults to /api
|
|
88
|
+
# See configuration.py for a list of all supported configuration parameters.
|
|
89
|
+
configuration = geoserver_acl_client.Configuration(
|
|
90
|
+
host = "/api"
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
# The client must configure the authentication and authorization parameters
|
|
94
|
+
# in accordance with the API server security policy.
|
|
95
|
+
# Examples for each auth method are provided below, use the example that
|
|
96
|
+
# satisfies your auth use case.
|
|
97
|
+
|
|
98
|
+
# Configure HTTP basic authorization: basicAuth
|
|
99
|
+
configuration = geoserver_acl_client.Configuration(
|
|
100
|
+
username = os.environ["USERNAME"],
|
|
101
|
+
password = os.environ["PASSWORD"]
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
# Enter a context with an instance of the API client
|
|
106
|
+
with geoserver_acl_client.ApiClient(configuration) as api_client:
|
|
107
|
+
# Create an instance of the API class
|
|
108
|
+
api_instance = geoserver_acl_client.AuthorizationApi(api_client)
|
|
109
|
+
access_request = geoserver_acl_client.AccessRequest() # AccessRequest |
|
|
110
|
+
|
|
111
|
+
try:
|
|
112
|
+
# Evaluate resource access permissions
|
|
113
|
+
api_response = api_instance.get_access_info(access_request)
|
|
114
|
+
print("The response of AuthorizationApi->get_access_info:\n")
|
|
115
|
+
pprint(api_response)
|
|
116
|
+
except ApiException as e:
|
|
117
|
+
print("Exception when calling AuthorizationApi->get_access_info: %s\n" % e)
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Documentation for API Endpoints
|
|
122
|
+
|
|
123
|
+
All URIs are relative to */api*
|
|
124
|
+
|
|
125
|
+
Class | Method | HTTP request | Description
|
|
126
|
+
------------ | ------------- | ------------- | -------------
|
|
127
|
+
*AuthorizationApi* | [**get_access_info**](docs/AuthorizationApi.md#get_access_info) | **POST** /authorization/resources | Evaluate resource access permissions
|
|
128
|
+
*AuthorizationApi* | [**get_admin_authorization**](docs/AuthorizationApi.md#get_admin_authorization) | **POST** /authorization/admin | Evaluate workspace administration access
|
|
129
|
+
*AuthorizationApi* | [**get_matching_rules**](docs/AuthorizationApi.md#get_matching_rules) | **POST** /authorization/resources/matchingrules | Get rules that match an access request
|
|
130
|
+
*AuthorizationApi* | [**get_user_access_summary**](docs/AuthorizationApi.md#get_user_access_summary) | **POST** /authorization/accesssummary | Get user access summary across workspaces
|
|
131
|
+
*DataRulesApi* | [**count_all_rules**](docs/DataRulesApi.md#count_all_rules) | **GET** /rules/query/count | Count all data rules
|
|
132
|
+
*DataRulesApi* | [**count_rules**](docs/DataRulesApi.md#count_rules) | **POST** /rules/query/count | Count rules matching filter criteria
|
|
133
|
+
*DataRulesApi* | [**create_rule**](docs/DataRulesApi.md#create_rule) | **POST** /rules | Create a new data rule
|
|
134
|
+
*DataRulesApi* | [**delete_all_rules**](docs/DataRulesApi.md#delete_all_rules) | **DELETE** /rules | Delete all data rules
|
|
135
|
+
*DataRulesApi* | [**delete_rule_by_id**](docs/DataRulesApi.md#delete_rule_by_id) | **DELETE** /rules/id/{id} | Delete a data rule
|
|
136
|
+
*DataRulesApi* | [**find_one_rule_by_priority**](docs/DataRulesApi.md#find_one_rule_by_priority) | **GET** /rules/query/one/priority/{priority} | Find rule by priority value
|
|
137
|
+
*DataRulesApi* | [**get_layer_details_by_rule_id**](docs/DataRulesApi.md#get_layer_details_by_rule_id) | **GET** /rules/id/{id}/layer-details |
|
|
138
|
+
*DataRulesApi* | [**get_rule_by_id**](docs/DataRulesApi.md#get_rule_by_id) | **GET** /rules/id/{id} | Get rule by ID
|
|
139
|
+
*DataRulesApi* | [**get_rules**](docs/DataRulesApi.md#get_rules) | **GET** /rules | List all data rules
|
|
140
|
+
*DataRulesApi* | [**query_rules**](docs/DataRulesApi.md#query_rules) | **POST** /rules/query | Query data rules with filters
|
|
141
|
+
*DataRulesApi* | [**rule_exists_by_id**](docs/DataRulesApi.md#rule_exists_by_id) | **GET** /rules/id/{id}/exists | Check if rule exists
|
|
142
|
+
*DataRulesApi* | [**set_rule_allowed_styles**](docs/DataRulesApi.md#set_rule_allowed_styles) | **PUT** /rules/id/{id}/styles |
|
|
143
|
+
*DataRulesApi* | [**set_rule_layer_details**](docs/DataRulesApi.md#set_rule_layer_details) | **PUT** /rules/id/{id}/layer-details |
|
|
144
|
+
*DataRulesApi* | [**set_rule_limits**](docs/DataRulesApi.md#set_rule_limits) | **PUT** /rules/id/{id}/limits |
|
|
145
|
+
*DataRulesApi* | [**shift_rules_by_priority**](docs/DataRulesApi.md#shift_rules_by_priority) | **POST** /rules/shift |
|
|
146
|
+
*DataRulesApi* | [**swap_rules**](docs/DataRulesApi.md#swap_rules) | **POST** /rules/id/{id}/swapwith/{id2} |
|
|
147
|
+
*DataRulesApi* | [**update_rule_by_id**](docs/DataRulesApi.md#update_rule_by_id) | **PATCH** /rules/id/{id} | Update an existing data rule
|
|
148
|
+
*WorkspaceAdminRulesApi* | [**admin_rule_exists_by_id**](docs/WorkspaceAdminRulesApi.md#admin_rule_exists_by_id) | **GET** /adminrules/id/{id}/exists |
|
|
149
|
+
*WorkspaceAdminRulesApi* | [**count_admin_rules**](docs/WorkspaceAdminRulesApi.md#count_admin_rules) | **POST** /adminrules/query/count |
|
|
150
|
+
*WorkspaceAdminRulesApi* | [**count_all_admin_rules**](docs/WorkspaceAdminRulesApi.md#count_all_admin_rules) | **GET** /adminrules/query/count |
|
|
151
|
+
*WorkspaceAdminRulesApi* | [**create_admin_rule**](docs/WorkspaceAdminRulesApi.md#create_admin_rule) | **POST** /adminrules |
|
|
152
|
+
*WorkspaceAdminRulesApi* | [**delete_admin_rule_by_id**](docs/WorkspaceAdminRulesApi.md#delete_admin_rule_by_id) | **DELETE** /adminrules/id/{id} |
|
|
153
|
+
*WorkspaceAdminRulesApi* | [**delete_all_admin_rules**](docs/WorkspaceAdminRulesApi.md#delete_all_admin_rules) | **DELETE** /adminrules |
|
|
154
|
+
*WorkspaceAdminRulesApi* | [**find_admin_rules**](docs/WorkspaceAdminRulesApi.md#find_admin_rules) | **POST** /adminrules/query |
|
|
155
|
+
*WorkspaceAdminRulesApi* | [**find_all_admin_rules**](docs/WorkspaceAdminRulesApi.md#find_all_admin_rules) | **GET** /adminrules |
|
|
156
|
+
*WorkspaceAdminRulesApi* | [**find_first_admin_rule**](docs/WorkspaceAdminRulesApi.md#find_first_admin_rule) | **POST** /adminrules/query/first |
|
|
157
|
+
*WorkspaceAdminRulesApi* | [**find_one_admin_rule_by_priority**](docs/WorkspaceAdminRulesApi.md#find_one_admin_rule_by_priority) | **GET** /adminrules/query/one/priority/{priority} |
|
|
158
|
+
*WorkspaceAdminRulesApi* | [**get_admin_rule_by_id**](docs/WorkspaceAdminRulesApi.md#get_admin_rule_by_id) | **GET** /adminrules/id/{id} |
|
|
159
|
+
*WorkspaceAdminRulesApi* | [**shift_admin_rules_by_priority**](docs/WorkspaceAdminRulesApi.md#shift_admin_rules_by_priority) | **POST** /adminrules/shift |
|
|
160
|
+
*WorkspaceAdminRulesApi* | [**swap_admin_rules**](docs/WorkspaceAdminRulesApi.md#swap_admin_rules) | **POST** /adminrules/id/{id}/swapwith/{id2} |
|
|
161
|
+
*WorkspaceAdminRulesApi* | [**update_admin_rule**](docs/WorkspaceAdminRulesApi.md#update_admin_rule) | **PATCH** /adminrules/id/{id} |
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
## Documentation For Models
|
|
165
|
+
|
|
166
|
+
- [AccessInfo](docs/AccessInfo.md)
|
|
167
|
+
- [AccessRequest](docs/AccessRequest.md)
|
|
168
|
+
- [AccessSummary](docs/AccessSummary.md)
|
|
169
|
+
- [AccessSummaryRequest](docs/AccessSummaryRequest.md)
|
|
170
|
+
- [AddressRangeFilter](docs/AddressRangeFilter.md)
|
|
171
|
+
- [AdminAccessInfo](docs/AdminAccessInfo.md)
|
|
172
|
+
- [AdminAccessRequest](docs/AdminAccessRequest.md)
|
|
173
|
+
- [AdminGrantType](docs/AdminGrantType.md)
|
|
174
|
+
- [AdminRule](docs/AdminRule.md)
|
|
175
|
+
- [AdminRuleFilter](docs/AdminRuleFilter.md)
|
|
176
|
+
- [CatalogMode](docs/CatalogMode.md)
|
|
177
|
+
- [Geom](docs/Geom.md)
|
|
178
|
+
- [GrantType](docs/GrantType.md)
|
|
179
|
+
- [InsertPosition](docs/InsertPosition.md)
|
|
180
|
+
- [LayerAttribute](docs/LayerAttribute.md)
|
|
181
|
+
- [LayerDetails](docs/LayerDetails.md)
|
|
182
|
+
- [Rule](docs/Rule.md)
|
|
183
|
+
- [RuleFilter](docs/RuleFilter.md)
|
|
184
|
+
- [RuleLimits](docs/RuleLimits.md)
|
|
185
|
+
- [SetFilter](docs/SetFilter.md)
|
|
186
|
+
- [SpatialFilterType](docs/SpatialFilterType.md)
|
|
187
|
+
- [TextFilter](docs/TextFilter.md)
|
|
188
|
+
- [Wkb](docs/Wkb.md)
|
|
189
|
+
- [Wkt](docs/Wkt.md)
|
|
190
|
+
- [WorkspaceAccessSummary](docs/WorkspaceAccessSummary.md)
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
<a id="documentation-for-authorization"></a>
|
|
194
|
+
## Documentation For Authorization
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
Authentication schemes defined for the API:
|
|
198
|
+
<a id="basicAuth"></a>
|
|
199
|
+
### basicAuth
|
|
200
|
+
|
|
201
|
+
- **Type**: HTTP basic authentication
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
## Author
|
|
205
|
+
|
|
206
|
+
geoserver-user@discourse.osgeo.org
|
|
207
|
+
|
|
208
|
+
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# geoserver-acl-client
|
|
2
|
+
This API provides comprehensive control over the GeoServer Access Control List (ACL) system.
|
|
3
|
+
It allows for the management of fine-grained access rules and provides endpoints to query authorization decisions.
|
|
4
|
+
|
|
5
|
+
The API is divided into three main areas:
|
|
6
|
+
1. **Data Rules:** For managing access to specific GeoServer resources (layers, services, etc.).
|
|
7
|
+
2. **Workspace Admin Rules:** For managing administrative privileges on a per-workspace basis.
|
|
8
|
+
3. **Authorization:** For querying the ACL system to determine access rights for a given request.
|
|
9
|
+
|
|
10
|
+
Rules are evaluated in priority order (lower numbers = higher priority) to determine whether a request should be allowed, denied, or limited.
|
|
11
|
+
The API also provides authorization endpoints that evaluate these rules for specific access requests.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
|
15
|
+
|
|
16
|
+
- API version: 1.0.0
|
|
17
|
+
- Package version: 3.0.2
|
|
18
|
+
- Generator version: 7.25.0
|
|
19
|
+
- Build package: org.openapitools.codegen.languages.PythonClientCodegen
|
|
20
|
+
For more information, please visit [https://github.com/geoserver/geoserver-acl](https://github.com/geoserver/geoserver-acl)
|
|
21
|
+
|
|
22
|
+
## Requirements.
|
|
23
|
+
|
|
24
|
+
Python 3.10+
|
|
25
|
+
|
|
26
|
+
## Installation & Usage
|
|
27
|
+
### pip install
|
|
28
|
+
|
|
29
|
+
If the python package is hosted on a repository, you can install directly using:
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
pip install git+https://github.com/geoserver/geoserver-acl.git
|
|
33
|
+
```
|
|
34
|
+
(you may need to run `pip` with root permission: `sudo pip install git+https://github.com/geoserver/geoserver-acl.git`)
|
|
35
|
+
|
|
36
|
+
Then import the package:
|
|
37
|
+
```python
|
|
38
|
+
import geoserver_acl_client
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Setuptools
|
|
42
|
+
|
|
43
|
+
Install via [Setuptools](http://pypi.python.org/pypi/setuptools).
|
|
44
|
+
|
|
45
|
+
```sh
|
|
46
|
+
python setup.py install --user
|
|
47
|
+
```
|
|
48
|
+
(or `sudo python setup.py install` to install the package for all users)
|
|
49
|
+
|
|
50
|
+
Then import the package:
|
|
51
|
+
```python
|
|
52
|
+
import geoserver_acl_client
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Tests
|
|
56
|
+
|
|
57
|
+
Execute `pytest` to run the tests.
|
|
58
|
+
|
|
59
|
+
## Getting Started
|
|
60
|
+
|
|
61
|
+
Please follow the [installation procedure](#installation--usage) and then run the following:
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
|
|
65
|
+
import geoserver_acl_client
|
|
66
|
+
from geoserver_acl_client.rest import ApiException
|
|
67
|
+
from pprint import pprint
|
|
68
|
+
|
|
69
|
+
# Defining the host is optional and defaults to /api
|
|
70
|
+
# See configuration.py for a list of all supported configuration parameters.
|
|
71
|
+
configuration = geoserver_acl_client.Configuration(
|
|
72
|
+
host = "/api"
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
# The client must configure the authentication and authorization parameters
|
|
76
|
+
# in accordance with the API server security policy.
|
|
77
|
+
# Examples for each auth method are provided below, use the example that
|
|
78
|
+
# satisfies your auth use case.
|
|
79
|
+
|
|
80
|
+
# Configure HTTP basic authorization: basicAuth
|
|
81
|
+
configuration = geoserver_acl_client.Configuration(
|
|
82
|
+
username = os.environ["USERNAME"],
|
|
83
|
+
password = os.environ["PASSWORD"]
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
# Enter a context with an instance of the API client
|
|
88
|
+
with geoserver_acl_client.ApiClient(configuration) as api_client:
|
|
89
|
+
# Create an instance of the API class
|
|
90
|
+
api_instance = geoserver_acl_client.AuthorizationApi(api_client)
|
|
91
|
+
access_request = geoserver_acl_client.AccessRequest() # AccessRequest |
|
|
92
|
+
|
|
93
|
+
try:
|
|
94
|
+
# Evaluate resource access permissions
|
|
95
|
+
api_response = api_instance.get_access_info(access_request)
|
|
96
|
+
print("The response of AuthorizationApi->get_access_info:\n")
|
|
97
|
+
pprint(api_response)
|
|
98
|
+
except ApiException as e:
|
|
99
|
+
print("Exception when calling AuthorizationApi->get_access_info: %s\n" % e)
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Documentation for API Endpoints
|
|
104
|
+
|
|
105
|
+
All URIs are relative to */api*
|
|
106
|
+
|
|
107
|
+
Class | Method | HTTP request | Description
|
|
108
|
+
------------ | ------------- | ------------- | -------------
|
|
109
|
+
*AuthorizationApi* | [**get_access_info**](docs/AuthorizationApi.md#get_access_info) | **POST** /authorization/resources | Evaluate resource access permissions
|
|
110
|
+
*AuthorizationApi* | [**get_admin_authorization**](docs/AuthorizationApi.md#get_admin_authorization) | **POST** /authorization/admin | Evaluate workspace administration access
|
|
111
|
+
*AuthorizationApi* | [**get_matching_rules**](docs/AuthorizationApi.md#get_matching_rules) | **POST** /authorization/resources/matchingrules | Get rules that match an access request
|
|
112
|
+
*AuthorizationApi* | [**get_user_access_summary**](docs/AuthorizationApi.md#get_user_access_summary) | **POST** /authorization/accesssummary | Get user access summary across workspaces
|
|
113
|
+
*DataRulesApi* | [**count_all_rules**](docs/DataRulesApi.md#count_all_rules) | **GET** /rules/query/count | Count all data rules
|
|
114
|
+
*DataRulesApi* | [**count_rules**](docs/DataRulesApi.md#count_rules) | **POST** /rules/query/count | Count rules matching filter criteria
|
|
115
|
+
*DataRulesApi* | [**create_rule**](docs/DataRulesApi.md#create_rule) | **POST** /rules | Create a new data rule
|
|
116
|
+
*DataRulesApi* | [**delete_all_rules**](docs/DataRulesApi.md#delete_all_rules) | **DELETE** /rules | Delete all data rules
|
|
117
|
+
*DataRulesApi* | [**delete_rule_by_id**](docs/DataRulesApi.md#delete_rule_by_id) | **DELETE** /rules/id/{id} | Delete a data rule
|
|
118
|
+
*DataRulesApi* | [**find_one_rule_by_priority**](docs/DataRulesApi.md#find_one_rule_by_priority) | **GET** /rules/query/one/priority/{priority} | Find rule by priority value
|
|
119
|
+
*DataRulesApi* | [**get_layer_details_by_rule_id**](docs/DataRulesApi.md#get_layer_details_by_rule_id) | **GET** /rules/id/{id}/layer-details |
|
|
120
|
+
*DataRulesApi* | [**get_rule_by_id**](docs/DataRulesApi.md#get_rule_by_id) | **GET** /rules/id/{id} | Get rule by ID
|
|
121
|
+
*DataRulesApi* | [**get_rules**](docs/DataRulesApi.md#get_rules) | **GET** /rules | List all data rules
|
|
122
|
+
*DataRulesApi* | [**query_rules**](docs/DataRulesApi.md#query_rules) | **POST** /rules/query | Query data rules with filters
|
|
123
|
+
*DataRulesApi* | [**rule_exists_by_id**](docs/DataRulesApi.md#rule_exists_by_id) | **GET** /rules/id/{id}/exists | Check if rule exists
|
|
124
|
+
*DataRulesApi* | [**set_rule_allowed_styles**](docs/DataRulesApi.md#set_rule_allowed_styles) | **PUT** /rules/id/{id}/styles |
|
|
125
|
+
*DataRulesApi* | [**set_rule_layer_details**](docs/DataRulesApi.md#set_rule_layer_details) | **PUT** /rules/id/{id}/layer-details |
|
|
126
|
+
*DataRulesApi* | [**set_rule_limits**](docs/DataRulesApi.md#set_rule_limits) | **PUT** /rules/id/{id}/limits |
|
|
127
|
+
*DataRulesApi* | [**shift_rules_by_priority**](docs/DataRulesApi.md#shift_rules_by_priority) | **POST** /rules/shift |
|
|
128
|
+
*DataRulesApi* | [**swap_rules**](docs/DataRulesApi.md#swap_rules) | **POST** /rules/id/{id}/swapwith/{id2} |
|
|
129
|
+
*DataRulesApi* | [**update_rule_by_id**](docs/DataRulesApi.md#update_rule_by_id) | **PATCH** /rules/id/{id} | Update an existing data rule
|
|
130
|
+
*WorkspaceAdminRulesApi* | [**admin_rule_exists_by_id**](docs/WorkspaceAdminRulesApi.md#admin_rule_exists_by_id) | **GET** /adminrules/id/{id}/exists |
|
|
131
|
+
*WorkspaceAdminRulesApi* | [**count_admin_rules**](docs/WorkspaceAdminRulesApi.md#count_admin_rules) | **POST** /adminrules/query/count |
|
|
132
|
+
*WorkspaceAdminRulesApi* | [**count_all_admin_rules**](docs/WorkspaceAdminRulesApi.md#count_all_admin_rules) | **GET** /adminrules/query/count |
|
|
133
|
+
*WorkspaceAdminRulesApi* | [**create_admin_rule**](docs/WorkspaceAdminRulesApi.md#create_admin_rule) | **POST** /adminrules |
|
|
134
|
+
*WorkspaceAdminRulesApi* | [**delete_admin_rule_by_id**](docs/WorkspaceAdminRulesApi.md#delete_admin_rule_by_id) | **DELETE** /adminrules/id/{id} |
|
|
135
|
+
*WorkspaceAdminRulesApi* | [**delete_all_admin_rules**](docs/WorkspaceAdminRulesApi.md#delete_all_admin_rules) | **DELETE** /adminrules |
|
|
136
|
+
*WorkspaceAdminRulesApi* | [**find_admin_rules**](docs/WorkspaceAdminRulesApi.md#find_admin_rules) | **POST** /adminrules/query |
|
|
137
|
+
*WorkspaceAdminRulesApi* | [**find_all_admin_rules**](docs/WorkspaceAdminRulesApi.md#find_all_admin_rules) | **GET** /adminrules |
|
|
138
|
+
*WorkspaceAdminRulesApi* | [**find_first_admin_rule**](docs/WorkspaceAdminRulesApi.md#find_first_admin_rule) | **POST** /adminrules/query/first |
|
|
139
|
+
*WorkspaceAdminRulesApi* | [**find_one_admin_rule_by_priority**](docs/WorkspaceAdminRulesApi.md#find_one_admin_rule_by_priority) | **GET** /adminrules/query/one/priority/{priority} |
|
|
140
|
+
*WorkspaceAdminRulesApi* | [**get_admin_rule_by_id**](docs/WorkspaceAdminRulesApi.md#get_admin_rule_by_id) | **GET** /adminrules/id/{id} |
|
|
141
|
+
*WorkspaceAdminRulesApi* | [**shift_admin_rules_by_priority**](docs/WorkspaceAdminRulesApi.md#shift_admin_rules_by_priority) | **POST** /adminrules/shift |
|
|
142
|
+
*WorkspaceAdminRulesApi* | [**swap_admin_rules**](docs/WorkspaceAdminRulesApi.md#swap_admin_rules) | **POST** /adminrules/id/{id}/swapwith/{id2} |
|
|
143
|
+
*WorkspaceAdminRulesApi* | [**update_admin_rule**](docs/WorkspaceAdminRulesApi.md#update_admin_rule) | **PATCH** /adminrules/id/{id} |
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
## Documentation For Models
|
|
147
|
+
|
|
148
|
+
- [AccessInfo](docs/AccessInfo.md)
|
|
149
|
+
- [AccessRequest](docs/AccessRequest.md)
|
|
150
|
+
- [AccessSummary](docs/AccessSummary.md)
|
|
151
|
+
- [AccessSummaryRequest](docs/AccessSummaryRequest.md)
|
|
152
|
+
- [AddressRangeFilter](docs/AddressRangeFilter.md)
|
|
153
|
+
- [AdminAccessInfo](docs/AdminAccessInfo.md)
|
|
154
|
+
- [AdminAccessRequest](docs/AdminAccessRequest.md)
|
|
155
|
+
- [AdminGrantType](docs/AdminGrantType.md)
|
|
156
|
+
- [AdminRule](docs/AdminRule.md)
|
|
157
|
+
- [AdminRuleFilter](docs/AdminRuleFilter.md)
|
|
158
|
+
- [CatalogMode](docs/CatalogMode.md)
|
|
159
|
+
- [Geom](docs/Geom.md)
|
|
160
|
+
- [GrantType](docs/GrantType.md)
|
|
161
|
+
- [InsertPosition](docs/InsertPosition.md)
|
|
162
|
+
- [LayerAttribute](docs/LayerAttribute.md)
|
|
163
|
+
- [LayerDetails](docs/LayerDetails.md)
|
|
164
|
+
- [Rule](docs/Rule.md)
|
|
165
|
+
- [RuleFilter](docs/RuleFilter.md)
|
|
166
|
+
- [RuleLimits](docs/RuleLimits.md)
|
|
167
|
+
- [SetFilter](docs/SetFilter.md)
|
|
168
|
+
- [SpatialFilterType](docs/SpatialFilterType.md)
|
|
169
|
+
- [TextFilter](docs/TextFilter.md)
|
|
170
|
+
- [Wkb](docs/Wkb.md)
|
|
171
|
+
- [Wkt](docs/Wkt.md)
|
|
172
|
+
- [WorkspaceAccessSummary](docs/WorkspaceAccessSummary.md)
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
<a id="documentation-for-authorization"></a>
|
|
176
|
+
## Documentation For Authorization
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
Authentication schemes defined for the API:
|
|
180
|
+
<a id="basicAuth"></a>
|
|
181
|
+
### basicAuth
|
|
182
|
+
|
|
183
|
+
- **Type**: HTTP basic authentication
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
## Author
|
|
187
|
+
|
|
188
|
+
geoserver-user@discourse.osgeo.org
|
|
189
|
+
|
|
190
|
+
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
# flake8: noqa
|
|
4
|
+
|
|
5
|
+
"""
|
|
6
|
+
GeoServer Access Control List (ACL) API
|
|
7
|
+
|
|
8
|
+
This API provides comprehensive control over the GeoServer Access Control List (ACL) system. It allows for the management of fine-grained access rules and provides endpoints to query authorization decisions. The API is divided into three main areas: 1. **Data Rules:** For managing access to specific GeoServer resources (layers, services, etc.). 2. **Workspace Admin Rules:** For managing administrative privileges on a per-workspace basis. 3. **Authorization:** For querying the ACL system to determine access rights for a given request. Rules are evaluated in priority order (lower numbers = higher priority) to determine whether a request should be allowed, denied, or limited. The API also provides authorization endpoints that evaluate these rules for specific access requests.
|
|
9
|
+
|
|
10
|
+
The version of the OpenAPI document: 1.0.0
|
|
11
|
+
Contact: geoserver-user@discourse.osgeo.org
|
|
12
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
13
|
+
|
|
14
|
+
Do not edit the class manually.
|
|
15
|
+
""" # noqa: E501
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
__version__ = "3.0.2"
|
|
19
|
+
|
|
20
|
+
# Define package exports
|
|
21
|
+
__all__ = [
|
|
22
|
+
"AuthorizationApi",
|
|
23
|
+
"DataRulesApi",
|
|
24
|
+
"WorkspaceAdminRulesApi",
|
|
25
|
+
"ApiResponse",
|
|
26
|
+
"ApiClient",
|
|
27
|
+
"Configuration",
|
|
28
|
+
"OpenApiException",
|
|
29
|
+
"ApiTypeError",
|
|
30
|
+
"ApiValueError",
|
|
31
|
+
"ApiKeyError",
|
|
32
|
+
"ApiAttributeError",
|
|
33
|
+
"ApiException",
|
|
34
|
+
"AccessInfo",
|
|
35
|
+
"AccessRequest",
|
|
36
|
+
"AccessSummary",
|
|
37
|
+
"AccessSummaryRequest",
|
|
38
|
+
"AddressRangeFilter",
|
|
39
|
+
"AdminAccessInfo",
|
|
40
|
+
"AdminAccessRequest",
|
|
41
|
+
"AdminGrantType",
|
|
42
|
+
"AdminRule",
|
|
43
|
+
"AdminRuleFilter",
|
|
44
|
+
"CatalogMode",
|
|
45
|
+
"Geom",
|
|
46
|
+
"GrantType",
|
|
47
|
+
"InsertPosition",
|
|
48
|
+
"LayerAttribute",
|
|
49
|
+
"LayerDetails",
|
|
50
|
+
"Rule",
|
|
51
|
+
"RuleFilter",
|
|
52
|
+
"RuleLimits",
|
|
53
|
+
"SetFilter",
|
|
54
|
+
"SpatialFilterType",
|
|
55
|
+
"TextFilter",
|
|
56
|
+
"Wkb",
|
|
57
|
+
"Wkt",
|
|
58
|
+
"WorkspaceAccessSummary",
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
# import apis into sdk package
|
|
62
|
+
from geoserver_acl_client.api.authorization_api import AuthorizationApi as AuthorizationApi
|
|
63
|
+
from geoserver_acl_client.api.data_rules_api import DataRulesApi as DataRulesApi
|
|
64
|
+
from geoserver_acl_client.api.workspace_admin_rules_api import WorkspaceAdminRulesApi as WorkspaceAdminRulesApi
|
|
65
|
+
|
|
66
|
+
# import ApiClient
|
|
67
|
+
from geoserver_acl_client.api_response import ApiResponse as ApiResponse
|
|
68
|
+
from geoserver_acl_client.api_client import ApiClient as ApiClient
|
|
69
|
+
from geoserver_acl_client.configuration import Configuration as Configuration
|
|
70
|
+
from geoserver_acl_client.exceptions import OpenApiException as OpenApiException
|
|
71
|
+
from geoserver_acl_client.exceptions import ApiTypeError as ApiTypeError
|
|
72
|
+
from geoserver_acl_client.exceptions import ApiValueError as ApiValueError
|
|
73
|
+
from geoserver_acl_client.exceptions import ApiKeyError as ApiKeyError
|
|
74
|
+
from geoserver_acl_client.exceptions import ApiAttributeError as ApiAttributeError
|
|
75
|
+
from geoserver_acl_client.exceptions import ApiException as ApiException
|
|
76
|
+
|
|
77
|
+
# import models into sdk package
|
|
78
|
+
from geoserver_acl_client.models.access_info import AccessInfo as AccessInfo
|
|
79
|
+
from geoserver_acl_client.models.access_request import AccessRequest as AccessRequest
|
|
80
|
+
from geoserver_acl_client.models.access_summary import AccessSummary as AccessSummary
|
|
81
|
+
from geoserver_acl_client.models.access_summary_request import AccessSummaryRequest as AccessSummaryRequest
|
|
82
|
+
from geoserver_acl_client.models.address_range_filter import AddressRangeFilter as AddressRangeFilter
|
|
83
|
+
from geoserver_acl_client.models.admin_access_info import AdminAccessInfo as AdminAccessInfo
|
|
84
|
+
from geoserver_acl_client.models.admin_access_request import AdminAccessRequest as AdminAccessRequest
|
|
85
|
+
from geoserver_acl_client.models.admin_grant_type import AdminGrantType as AdminGrantType
|
|
86
|
+
from geoserver_acl_client.models.admin_rule import AdminRule as AdminRule
|
|
87
|
+
from geoserver_acl_client.models.admin_rule_filter import AdminRuleFilter as AdminRuleFilter
|
|
88
|
+
from geoserver_acl_client.models.catalog_mode import CatalogMode as CatalogMode
|
|
89
|
+
from geoserver_acl_client.models.geom import Geom as Geom
|
|
90
|
+
from geoserver_acl_client.models.grant_type import GrantType as GrantType
|
|
91
|
+
from geoserver_acl_client.models.insert_position import InsertPosition as InsertPosition
|
|
92
|
+
from geoserver_acl_client.models.layer_attribute import LayerAttribute as LayerAttribute
|
|
93
|
+
from geoserver_acl_client.models.layer_details import LayerDetails as LayerDetails
|
|
94
|
+
from geoserver_acl_client.models.rule import Rule as Rule
|
|
95
|
+
from geoserver_acl_client.models.rule_filter import RuleFilter as RuleFilter
|
|
96
|
+
from geoserver_acl_client.models.rule_limits import RuleLimits as RuleLimits
|
|
97
|
+
from geoserver_acl_client.models.set_filter import SetFilter as SetFilter
|
|
98
|
+
from geoserver_acl_client.models.spatial_filter_type import SpatialFilterType as SpatialFilterType
|
|
99
|
+
from geoserver_acl_client.models.text_filter import TextFilter as TextFilter
|
|
100
|
+
from geoserver_acl_client.models.wkb import Wkb as Wkb
|
|
101
|
+
from geoserver_acl_client.models.wkt import Wkt as Wkt
|
|
102
|
+
from geoserver_acl_client.models.workspace_access_summary import WorkspaceAccessSummary as WorkspaceAccessSummary
|
|
103
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# flake8: noqa
|
|
2
|
+
|
|
3
|
+
# import apis into api package
|
|
4
|
+
from geoserver_acl_client.api.authorization_api import AuthorizationApi
|
|
5
|
+
from geoserver_acl_client.api.data_rules_api import DataRulesApi
|
|
6
|
+
from geoserver_acl_client.api.workspace_admin_rules_api import WorkspaceAdminRulesApi
|
|
7
|
+
|