Skip to content

Commit c87c8d2

Browse files
authored
release: v0.9.5 (#200)
1 parent 82fb7d1 commit c87c8d2

22 files changed

+91
-55
lines changed

.openapi-generator/FILES

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
.codecov.yml
22
.fossa.yml
33
.github/CODEOWNERS
4+
.github/dependabot.yaml
45
.github/ISSUE_TEMPLATE/bug_report.yaml
56
.github/ISSUE_TEMPLATE/config.yaml
67
.github/ISSUE_TEMPLATE/feature_request.yaml
7-
.github/dependabot.yaml
88
.gitignore
99
.snyk
1010
CHANGELOG.md
1111
CONTRIBUTING.md
12-
LICENSE
13-
NOTICE.txt
14-
README.md
15-
VERSION.txt
1612
docs/AbortedMessageResponse.md
1713
docs/Any.md
1814
docs/Assertion.md
@@ -58,6 +54,7 @@ docs/NotFoundErrorCode.md
5854
docs/NullValue.md
5955
docs/ObjectRelation.md
6056
docs/OpenFgaApi.md
57+
docs/opentelemetry.md
6158
docs/PathUnknownErrorMessageResponse.md
6259
docs/ReadAssertionsResponse.md
6360
docs/ReadAuthorizationModelResponse.md
@@ -72,58 +69,59 @@ docs/RelationshipCondition.md
7269
docs/SourceInfo.md
7370
docs/Status.md
7471
docs/Store.md
75-
docs/StreamResultOfStreamedListObjectsResponse.md
7672
docs/StreamedListObjectsResponse.md
73+
docs/StreamResultOfStreamedListObjectsResponse.md
7774
docs/Tuple.md
7875
docs/TupleChange.md
7976
docs/TupleKey.md
8077
docs/TupleKeyWithoutCondition.md
8178
docs/TupleOperation.md
8279
docs/TupleToUserset.md
8380
docs/TypeDefinition.md
84-
docs/TypeName.md
8581
docs/TypedWildcard.md
82+
docs/TypeName.md
8683
docs/UnauthenticatedResponse.md
8784
docs/UnprocessableContentErrorCode.md
8885
docs/UnprocessableContentMessageResponse.md
8986
docs/User.md
90-
docs/UserTypeFilter.md
9187
docs/Users.md
9288
docs/Userset.md
89+
docs/Usersets.md
9390
docs/UsersetTree.md
9491
docs/UsersetTreeDifference.md
9592
docs/UsersetTreeTupleToUserset.md
9693
docs/UsersetUser.md
97-
docs/Usersets.md
94+
docs/UserTypeFilter.md
9895
docs/ValidationErrorMessageResponse.md
9996
docs/WriteAssertionsRequest.md
10097
docs/WriteAuthorizationModelRequest.md
10198
docs/WriteAuthorizationModelResponse.md
10299
docs/WriteRequest.md
103100
docs/WriteRequestDeletes.md
104101
docs/WriteRequestWrites.md
105-
docs/opentelemetry.md
106-
example/Makefile
107-
example/README.md
108102
example/example1/example1.py
109103
example/example1/requirements.txt
110104
example/example1/setup.cfg
111105
example/example1/setup.py
106+
example/Makefile
112107
example/opentelemetry/.env.example
113108
example/opentelemetry/.gitignore
114-
example/opentelemetry/README.md
115109
example/opentelemetry/main.py
110+
example/opentelemetry/README.md
116111
example/opentelemetry/requirements.txt
117112
example/opentelemetry/setup.cfg
118113
example/opentelemetry/setup.py
119-
example/streamed-list-objects/README.md
114+
example/README.md
120115
example/streamed-list-objects/example.py
121116
example/streamed-list-objects/model.json
117+
example/streamed-list-objects/README.md
118+
LICENSE
119+
NOTICE.txt
122120
openfga_sdk/__init__.py
121+
openfga_sdk/api_client.py
123122
openfga_sdk/api/__init__.py
124-
openfga_sdk/api/open_fga_api.py
125123
openfga_sdk/api/open_fga_api_sync.py
126-
openfga_sdk/api_client.py
124+
openfga_sdk/api/open_fga_api.py
127125
openfga_sdk/client/__init__.py
128126
openfga_sdk/client/client.py
129127
openfga_sdk/client/configuration.py
@@ -152,30 +150,30 @@ openfga_sdk/help.py
152150
openfga_sdk/models/__init__.py
153151
openfga_sdk/models/aborted_message_response.py
154152
openfga_sdk/models/any.py
155-
openfga_sdk/models/assertion.py
156153
openfga_sdk/models/assertion_tuple_key.py
154+
openfga_sdk/models/assertion.py
157155
openfga_sdk/models/auth_error_code.py
158156
openfga_sdk/models/authorization_model.py
159157
openfga_sdk/models/batch_check_item.py
160158
openfga_sdk/models/batch_check_request.py
161159
openfga_sdk/models/batch_check_response.py
162160
openfga_sdk/models/batch_check_single_result.py
163161
openfga_sdk/models/check_error.py
164-
openfga_sdk/models/check_request.py
165162
openfga_sdk/models/check_request_tuple_key.py
163+
openfga_sdk/models/check_request.py
166164
openfga_sdk/models/check_response.py
167165
openfga_sdk/models/computed.py
168-
openfga_sdk/models/condition.py
169166
openfga_sdk/models/condition_metadata.py
170167
openfga_sdk/models/condition_param_type_ref.py
168+
openfga_sdk/models/condition.py
171169
openfga_sdk/models/consistency_preference.py
172170
openfga_sdk/models/contextual_tuple_keys.py
173171
openfga_sdk/models/create_store_request.py
174172
openfga_sdk/models/create_store_response.py
175173
openfga_sdk/models/difference.py
176174
openfga_sdk/models/error_code.py
177-
openfga_sdk/models/expand_request.py
178175
openfga_sdk/models/expand_request_tuple_key.py
176+
openfga_sdk/models/expand_request.py
179177
openfga_sdk/models/expand_response.py
180178
openfga_sdk/models/fga_object.py
181179
openfga_sdk/models/forbidden_response.py
@@ -199,8 +197,8 @@ openfga_sdk/models/read_assertions_response.py
199197
openfga_sdk/models/read_authorization_model_response.py
200198
openfga_sdk/models/read_authorization_models_response.py
201199
openfga_sdk/models/read_changes_response.py
202-
openfga_sdk/models/read_request.py
203200
openfga_sdk/models/read_request_tuple_key.py
201+
openfga_sdk/models/read_request.py
204202
openfga_sdk/models/read_response.py
205203
openfga_sdk/models/relation_metadata.py
206204
openfga_sdk/models/relation_reference.py
@@ -210,34 +208,34 @@ openfga_sdk/models/status.py
210208
openfga_sdk/models/store.py
211209
openfga_sdk/models/stream_result_of_streamed_list_objects_response.py
212210
openfga_sdk/models/streamed_list_objects_response.py
213-
openfga_sdk/models/tuple.py
214211
openfga_sdk/models/tuple_change.py
215-
openfga_sdk/models/tuple_key.py
216212
openfga_sdk/models/tuple_key_without_condition.py
213+
openfga_sdk/models/tuple_key.py
217214
openfga_sdk/models/tuple_operation.py
218215
openfga_sdk/models/tuple_to_userset.py
216+
openfga_sdk/models/tuple.py
219217
openfga_sdk/models/type_definition.py
220218
openfga_sdk/models/type_name.py
221219
openfga_sdk/models/typed_wildcard.py
222220
openfga_sdk/models/unauthenticated_response.py
223221
openfga_sdk/models/unprocessable_content_error_code.py
224222
openfga_sdk/models/unprocessable_content_message_response.py
225-
openfga_sdk/models/user.py
226223
openfga_sdk/models/user_type_filter.py
224+
openfga_sdk/models/user.py
227225
openfga_sdk/models/users.py
228-
openfga_sdk/models/userset.py
229-
openfga_sdk/models/userset_tree.py
230226
openfga_sdk/models/userset_tree_difference.py
231227
openfga_sdk/models/userset_tree_tuple_to_userset.py
228+
openfga_sdk/models/userset_tree.py
232229
openfga_sdk/models/userset_user.py
230+
openfga_sdk/models/userset.py
233231
openfga_sdk/models/usersets.py
234232
openfga_sdk/models/validation_error_message_response.py
235233
openfga_sdk/models/write_assertions_request.py
236234
openfga_sdk/models/write_authorization_model_request.py
237235
openfga_sdk/models/write_authorization_model_response.py
238-
openfga_sdk/models/write_request.py
239236
openfga_sdk/models/write_request_deletes.py
240237
openfga_sdk/models/write_request_writes.py
238+
openfga_sdk/models/write_request.py
241239
openfga_sdk/oauth2.py
242240
openfga_sdk/rest.py
243241
openfga_sdk/sync/__init__.py
@@ -255,15 +253,16 @@ openfga_sdk/telemetry/metrics.py
255253
openfga_sdk/telemetry/telemetry.py
256254
openfga_sdk/validation.py
257255
pyproject.toml
256+
README.md
258257
requirements.txt
259258
setup.py
260259
test-requirements.txt
260+
test/__init__.py
261261
test/_/configuration_test.py
262262
test/_/credentials_test.py
263263
test/_/oauth2_test.py
264264
test/_/rest_test.py
265265
test/_/validation_test.py
266-
test/__init__.py
267266
test/api/__init__.py
268267
test/client/__init__.py
269268
test/client/client_test.py
@@ -280,3 +279,4 @@ test/telemetry/histograms_test.py
280279
test/telemetry/metrics_test.py
281280
test/telemetry/telemetry_test.py
282281
test/test_open_fga_api.py
282+
VERSION.txt

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# Changelog
22

3-
## [Unreleased](https://github.com/openfga/python-sdk/compare/v0.9.4...HEAD)
3+
## [Unreleased](https://github.com/openfga/python-sdk/compare/v0.9.5...HEAD)
4+
5+
### [0.9.5](https://github.com/openfga/python-sdk/compare/v0.9.4...0.9.5) (2025-07-09)
6+
7+
- fix: aiohttp.ClientResponse.data should be awaited (#197) - thanks @cmbernard333
48

59
### [0.9.4](https://github.com/openfga/python-sdk/compare/v0.9.3...0.9.4) (2025-04-30)
610

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -724,6 +724,8 @@ Similar to [check](#check), but instead of checking a single user-object relatio
724724

725725
[API Documentation](https://openfga.dev/api/service#/Relationship%20Queries/BatchCheck)
726726

727+
> **Note**: The order of `batch_check` results is not guaranteed to match the order of the checks provided. Use `correlation_id` to pair responses with requests.
728+
727729
```python
728730
# from openfga_sdk import OpenFgaClient
729731
# from openfga_sdk.client.models import (

VERSION.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.9.4
1+
0.9.5

docs/OpenFgaApi.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,7 @@ No authorization required
779779
780780
Get tuples from the store that matches a query, without following userset rewrite rules
781781

782-
The Read API will return the tuples for a certain store that match a query filter specified in the body of the request. The API doesn't guarantee order by any field. It is different from the `/stores/{store_id}/expand` API in that it only returns relationship tuples that are stored in the system and satisfy the query. In the body: 1. `tuple_key` is optional. If not specified, it will return all tuples in the store. 2. `tuple_key.object` is mandatory if `tuple_key` is specified. It can be a full object (e.g., `type:object_id`) or type only (e.g., `type:`). 3. `tuple_key.user` is mandatory if tuple_key is specified in the case the `tuple_key.object` is a type only. If tuple_key.user is specified, it needs to be a full object (e.g., `type:user_id`). ## Examples ### Query for all objects in a type definition To query for all objects that `user:bob` has `reader` relationship in the `document` type definition, call read API with body of ```json { \"tuple_key\": { \"user\": \"user:bob\", \"relation\": \"reader\", \"object\": \"document:\" } } ``` The API will return tuples and a continuation token, something like ```json { \"tuples\": [ { \"key\": { \"user\": \"user:bob\", \"relation\": \"reader\", \"object\": \"document:2021-budget\" }, \"timestamp\": \"2021-10-06T15:32:11.128Z\" } ], \"continuation_token\": \"eyJwayI6IkxBVEVTVF9OU0NPTkZJR19hdXRoMHN0b3JlIiwic2siOiIxem1qbXF3MWZLZExTcUoyN01MdTdqTjh0cWgifQ==\" } ``` This means that `user:bob` has a `reader` relationship with 1 document `document:2021-budget`. Note that this API, unlike the List Objects API, does not evaluate the tuples in the store. The continuation token will be empty if there are no more tuples to query. ### Query for all stored relationship tuples that have a particular relation and object To query for all users that have `reader` relationship with `document:2021-budget`, call read API with body of ```json { \"tuple_key\": { \"object\": \"document:2021-budget\", \"relation\": \"reader\" } } ``` The API will return something like ```json { \"tuples\": [ { \"key\": { \"user\": \"user:bob\", \"relation\": \"reader\", \"object\": \"document:2021-budget\" }, \"timestamp\": \"2021-10-06T15:32:11.128Z\" } ], \"continuation_token\": \"eyJwayI6IkxBVEVTVF9OU0NPTkZJR19hdXRoMHN0b3JlIiwic2siOiIxem1qbXF3MWZLZExTcUoyN01MdTdqTjh0cWgifQ==\" } ``` This means that `document:2021-budget` has 1 `reader` (`user:bob`). Note that, even if the model said that all `writers` are also `readers`, the API will not return writers such as `user:anne` because it only returns tuples and does not evaluate them. ### Query for all users with all relationships for a particular document To query for all users that have any relationship with `document:2021-budget`, call read API with body of ```json { \"tuple_key\": { \"object\": \"document:2021-budget\" } } ``` The API will return something like ```json { \"tuples\": [ { \"key\": { \"user\": \"user:anne\", \"relation\": \"writer\", \"object\": \"document:2021-budget\" }, \"timestamp\": \"2021-10-05T13:42:12.356Z\" }, { \"key\": { \"user\": \"user:bob\", \"relation\": \"reader\", \"object\": \"document:2021-budget\" }, \"timestamp\": \"2021-10-06T15:32:11.128Z\" } ], \"continuation_token\": \"eyJwayI6IkxBVEVTVF9OU0NPTkZJR19hdXRoMHN0b3JlIiwic2siOiIxem1qbXF3MWZLZExTcUoyN01MdTdqTjh0cWgifQ==\" } ``` This means that `document:2021-budget` has 1 `reader` (`user:bob`) and 1 `writer` (`user:anne`).
782+
The Read API will return the tuples for a certain store that match a query filter specified in the body of the request. The API doesn't guarantee order by any field. It is different from the `/stores/{store_id}/expand` API in that it only returns relationship tuples that are stored in the system and satisfy the query. In the body: 1. `tuple_key` is optional. If not specified, it will return all tuples in the store. 2. `tuple_key.object` is mandatory if `tuple_key` is specified. It can be a full object (e.g., `type:object_id`) or type only (e.g., `type:`). 3. `tuple_key.user` is mandatory if tuple_key is specified in the case the `tuple_key.object` is a type only. ## Examples ### Query for all objects in a type definition To query for all objects that `user:bob` has `reader` relationship in the `document` type definition, call read API with body of ```json { \"tuple_key\": { \"user\": \"user:bob\", \"relation\": \"reader\", \"object\": \"document:\" } } ``` The API will return tuples and a continuation token, something like ```json { \"tuples\": [ { \"key\": { \"user\": \"user:bob\", \"relation\": \"reader\", \"object\": \"document:2021-budget\" }, \"timestamp\": \"2021-10-06T15:32:11.128Z\" } ], \"continuation_token\": \"eyJwayI6IkxBVEVTVF9OU0NPTkZJR19hdXRoMHN0b3JlIiwic2siOiIxem1qbXF3MWZLZExTcUoyN01MdTdqTjh0cWgifQ==\" } ``` This means that `user:bob` has a `reader` relationship with 1 document `document:2021-budget`. Note that this API, unlike the List Objects API, does not evaluate the tuples in the store. The continuation token will be empty if there are no more tuples to query. ### Query for all stored relationship tuples that have a particular relation and object To query for all users that have `reader` relationship with `document:2021-budget`, call read API with body of ```json { \"tuple_key\": { \"object\": \"document:2021-budget\", \"relation\": \"reader\" } } ``` The API will return something like ```json { \"tuples\": [ { \"key\": { \"user\": \"user:bob\", \"relation\": \"reader\", \"object\": \"document:2021-budget\" }, \"timestamp\": \"2021-10-06T15:32:11.128Z\" } ], \"continuation_token\": \"eyJwayI6IkxBVEVTVF9OU0NPTkZJR19hdXRoMHN0b3JlIiwic2siOiIxem1qbXF3MWZLZExTcUoyN01MdTdqTjh0cWgifQ==\" } ``` This means that `document:2021-budget` has 1 `reader` (`user:bob`). Note that, even if the model said that all `writers` are also `readers`, the API will not return writers such as `user:anne` because it only returns tuples and does not evaluate them. ### Query for all users with all relationships for a particular document To query for all users that have any relationship with `document:2021-budget`, call read API with body of ```json { \"tuple_key\": { \"object\": \"document:2021-budget\" } } ``` The API will return something like ```json { \"tuples\": [ { \"key\": { \"user\": \"user:anne\", \"relation\": \"writer\", \"object\": \"document:2021-budget\" }, \"timestamp\": \"2021-10-05T13:42:12.356Z\" }, { \"key\": { \"user\": \"user:bob\", \"relation\": \"reader\", \"object\": \"document:2021-budget\" }, \"timestamp\": \"2021-10-06T15:32:11.128Z\" } ], \"continuation_token\": \"eyJwayI6IkxBVEVTVF9OU0NPTkZJR19hdXRoMHN0b3JlIiwic2siOiIxem1qbXF3MWZLZExTcUoyN01MdTdqTjh0cWgifQ==\" } ``` This means that `document:2021-budget` has 1 `reader` (`user:bob`) and 1 `writer` (`user:anne`).
783783

784784
### Example
785785

example/example1/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ attrs >= 23.1.0
44
frozenlist >= 1.4.1
55
idna >= 3.6
66
multidict >= 6.0.4
7-
openfga-sdk >= 0.9.4
7+
openfga-sdk >= 0.9.5
88
python-dateutil >= 2.8.2
99
urllib3 >= 2.1.0
1010
yarl >= 1.9.4

example/example1/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
NAME = "example1"
1717
VERSION = "0.0.1"
18-
REQUIRES = ["openfga-sdk >= 0.9.4"]
18+
REQUIRES = ["openfga-sdk >= 0.9.5"]
1919

2020
setup(
2121
name=NAME,

openfga_sdk/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
NOTE: This file was auto generated by OpenAPI Generator (https://openapi-generator.tech). DO NOT EDIT.
1111
"""
1212

13-
__version__ = "0.9.4"
13+
__version__ = "0.9.5"
1414

1515
from openfga_sdk.api.open_fga_api import OpenFgaApi
1616
from openfga_sdk.api_client import ApiClient

0 commit comments

Comments
 (0)