stackit-objectstorage 1.5.0__tar.gz → 1.7.0__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.
Files changed (47) hide show
  1. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/PKG-INFO +2 -2
  2. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/pyproject.toml +1 -1
  3. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/__init__.py +8 -0
  4. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/api/default_api.py +322 -0
  5. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/__init__.py +2 -0
  6. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/access_key.py +6 -1
  7. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/create_access_key_payload.py +5 -0
  8. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/project_status.py +5 -2
  9. stackit_objectstorage-1.7.0/src/stackit/objectstorage/models/rate_limit_error.py +109 -0
  10. stackit_objectstorage-1.7.0/src/stackit/objectstorage/models/update_service_payload.py +82 -0
  11. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/.gitignore +0 -0
  12. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/LICENSE.md +0 -0
  13. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/NOTICE.txt +0 -0
  14. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/README.md +0 -0
  15. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/api/__init__.py +0 -0
  16. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/api_client.py +0 -0
  17. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/api_response.py +0 -0
  18. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/configuration.py +0 -0
  19. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/exceptions.py +0 -0
  20. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/bucket.py +0 -0
  21. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/compliance_lock_response.py +0 -0
  22. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/create_access_key_response.py +0 -0
  23. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/create_bucket_response.py +0 -0
  24. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/create_credentials_group_payload.py +0 -0
  25. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/create_credentials_group_response.py +0 -0
  26. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/credentials_group.py +0 -0
  27. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/credentials_group_extended.py +0 -0
  28. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/default_retention_response.py +0 -0
  29. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/delete_access_key_response.py +0 -0
  30. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/delete_bucket_response.py +0 -0
  31. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/delete_credentials_group_response.py +0 -0
  32. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/delete_default_retention_response.py +0 -0
  33. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/detailed_error.py +0 -0
  34. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/error_message.py +0 -0
  35. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/get_bucket_response.py +0 -0
  36. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/get_credentials_group_response.py +0 -0
  37. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/http_validation_error.py +0 -0
  38. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/list_access_keys_response.py +0 -0
  39. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/list_buckets_response.py +0 -0
  40. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/list_credentials_groups_response.py +0 -0
  41. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/location_inner.py +0 -0
  42. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/project_scope.py +0 -0
  43. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/retention_mode.py +0 -0
  44. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/set_default_retention_payload.py +0 -0
  45. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/models/validation_error.py +0 -0
  46. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/py.typed +0 -0
  47. {stackit_objectstorage-1.5.0 → stackit_objectstorage-1.7.0}/src/stackit/objectstorage/rest.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: stackit-objectstorage
3
- Version: 1.5.0
3
+ Version: v1.7.0
4
4
  Summary: STACKIT Object Storage API
5
5
  Project-URL: Homepage, https://github.com/stackitcloud/stackit-sdk-python
6
6
  Project-URL: Issues, https://github.com/stackitcloud/stackit-sdk-python/issues
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "stackit-objectstorage"
3
- version = "v1.5.0"
3
+ version = "v1.7.0"
4
4
  description = "STACKIT Object Storage API"
5
5
  authors = [{ name = "STACKIT Developer Tools", email = "developer-tools@stackit.cloud" }]
6
6
  requires-python = ">=3.10,<4.0"
@@ -53,8 +53,10 @@ __all__ = [
53
53
  "LocationInner",
54
54
  "ProjectScope",
55
55
  "ProjectStatus",
56
+ "RateLimitError",
56
57
  "RetentionMode",
57
58
  "SetDefaultRetentionPayload",
59
+ "UpdateServicePayload",
58
60
  "ValidationError",
59
61
  ]
60
62
 
@@ -137,10 +139,16 @@ from stackit.objectstorage.models.list_credentials_groups_response import (
137
139
  from stackit.objectstorage.models.location_inner import LocationInner as LocationInner
138
140
  from stackit.objectstorage.models.project_scope import ProjectScope as ProjectScope
139
141
  from stackit.objectstorage.models.project_status import ProjectStatus as ProjectStatus
142
+ from stackit.objectstorage.models.rate_limit_error import (
143
+ RateLimitError as RateLimitError,
144
+ )
140
145
  from stackit.objectstorage.models.retention_mode import RetentionMode as RetentionMode
141
146
  from stackit.objectstorage.models.set_default_retention_payload import (
142
147
  SetDefaultRetentionPayload as SetDefaultRetentionPayload,
143
148
  )
149
+ from stackit.objectstorage.models.update_service_payload import (
150
+ UpdateServicePayload as UpdateServicePayload,
151
+ )
144
152
  from stackit.objectstorage.models.validation_error import (
145
153
  ValidationError as ValidationError,
146
154
  )
@@ -61,6 +61,7 @@ from stackit.objectstorage.models.project_status import ProjectStatus
61
61
  from stackit.objectstorage.models.set_default_retention_payload import (
62
62
  SetDefaultRetentionPayload,
63
63
  )
64
+ from stackit.objectstorage.models.update_service_payload import UpdateServicePayload
64
65
  from stackit.objectstorage.rest import RESTResponseType
65
66
 
66
67
 
@@ -145,6 +146,7 @@ class DefaultApi:
145
146
  "403": "ErrorMessage",
146
147
  "404": "ErrorMessage",
147
148
  "422": "HTTPValidationError",
149
+ "429": "RateLimitError",
148
150
  "500": "ErrorMessage",
149
151
  }
150
152
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -222,6 +224,7 @@ class DefaultApi:
222
224
  "403": "ErrorMessage",
223
225
  "404": "ErrorMessage",
224
226
  "422": "HTTPValidationError",
227
+ "429": "RateLimitError",
225
228
  "500": "ErrorMessage",
226
229
  }
227
230
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -299,6 +302,7 @@ class DefaultApi:
299
302
  "403": "ErrorMessage",
300
303
  "404": "ErrorMessage",
301
304
  "422": "HTTPValidationError",
305
+ "429": "RateLimitError",
302
306
  "500": "ErrorMessage",
303
307
  }
304
308
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -448,6 +452,7 @@ class DefaultApi:
448
452
  "404": "ErrorMessage",
449
453
  "409": "ErrorMessage",
450
454
  "422": "ErrorMessage",
455
+ "429": "RateLimitError",
451
456
  "500": "ErrorMessage",
452
457
  }
453
458
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -532,6 +537,7 @@ class DefaultApi:
532
537
  "404": "ErrorMessage",
533
538
  "409": "ErrorMessage",
534
539
  "422": "ErrorMessage",
540
+ "429": "RateLimitError",
535
541
  "500": "ErrorMessage",
536
542
  }
537
543
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -616,6 +622,7 @@ class DefaultApi:
616
622
  "404": "ErrorMessage",
617
623
  "409": "ErrorMessage",
618
624
  "422": "ErrorMessage",
625
+ "429": "RateLimitError",
619
626
  "500": "ErrorMessage",
620
627
  }
621
628
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -996,6 +1003,7 @@ class DefaultApi:
996
1003
  "404": "ErrorMessage",
997
1004
  "409": "ErrorMessage",
998
1005
  "422": "HTTPValidationError",
1006
+ "429": "RateLimitError",
999
1007
  "500": "ErrorMessage",
1000
1008
  }
1001
1009
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -1069,6 +1077,7 @@ class DefaultApi:
1069
1077
  "404": "ErrorMessage",
1070
1078
  "409": "ErrorMessage",
1071
1079
  "422": "HTTPValidationError",
1080
+ "429": "RateLimitError",
1072
1081
  "500": "ErrorMessage",
1073
1082
  }
1074
1083
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -1142,6 +1151,7 @@ class DefaultApi:
1142
1151
  "404": "ErrorMessage",
1143
1152
  "409": "ErrorMessage",
1144
1153
  "422": "HTTPValidationError",
1154
+ "429": "RateLimitError",
1145
1155
  "500": "ErrorMessage",
1146
1156
  }
1147
1157
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -1280,6 +1290,7 @@ class DefaultApi:
1280
1290
  "403": "ErrorMessage",
1281
1291
  "404": "ErrorMessage",
1282
1292
  "422": "HTTPValidationError",
1293
+ "429": "RateLimitError",
1283
1294
  "500": "ErrorMessage",
1284
1295
  }
1285
1296
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -1358,6 +1369,7 @@ class DefaultApi:
1358
1369
  "403": "ErrorMessage",
1359
1370
  "404": "ErrorMessage",
1360
1371
  "422": "HTTPValidationError",
1372
+ "429": "RateLimitError",
1361
1373
  "500": "ErrorMessage",
1362
1374
  }
1363
1375
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -1436,6 +1448,7 @@ class DefaultApi:
1436
1448
  "403": "ErrorMessage",
1437
1449
  "404": "ErrorMessage",
1438
1450
  "422": "HTTPValidationError",
1451
+ "429": "RateLimitError",
1439
1452
  "500": "ErrorMessage",
1440
1453
  }
1441
1454
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -1567,6 +1580,7 @@ class DefaultApi:
1567
1580
  "401": "ErrorMessage",
1568
1581
  "404": "ErrorMessage",
1569
1582
  "422": "ErrorMessage",
1583
+ "429": "RateLimitError",
1570
1584
  "500": "ErrorMessage",
1571
1585
  }
1572
1586
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -1641,6 +1655,7 @@ class DefaultApi:
1641
1655
  "401": "ErrorMessage",
1642
1656
  "404": "ErrorMessage",
1643
1657
  "422": "ErrorMessage",
1658
+ "429": "RateLimitError",
1644
1659
  "500": "ErrorMessage",
1645
1660
  }
1646
1661
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -1715,6 +1730,7 @@ class DefaultApi:
1715
1730
  "401": "ErrorMessage",
1716
1731
  "404": "ErrorMessage",
1717
1732
  "422": "ErrorMessage",
1733
+ "429": "RateLimitError",
1718
1734
  "500": "ErrorMessage",
1719
1735
  }
1720
1736
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -2089,6 +2105,7 @@ class DefaultApi:
2089
2105
  "401": "ErrorMessage",
2090
2106
  "404": "ErrorMessage",
2091
2107
  "422": "HTTPValidationError",
2108
+ "429": "RateLimitError",
2092
2109
  "500": "ErrorMessage",
2093
2110
  }
2094
2111
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -2161,6 +2178,7 @@ class DefaultApi:
2161
2178
  "401": "ErrorMessage",
2162
2179
  "404": "ErrorMessage",
2163
2180
  "422": "HTTPValidationError",
2181
+ "429": "RateLimitError",
2164
2182
  "500": "ErrorMessage",
2165
2183
  }
2166
2184
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -2233,6 +2251,7 @@ class DefaultApi:
2233
2251
  "401": "ErrorMessage",
2234
2252
  "404": "ErrorMessage",
2235
2253
  "422": "HTTPValidationError",
2254
+ "429": "RateLimitError",
2236
2255
  "500": "ErrorMessage",
2237
2256
  }
2238
2257
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -2627,6 +2646,7 @@ class DefaultApi:
2627
2646
  "404": "ErrorMessage",
2628
2647
  "409": "ErrorMessage",
2629
2648
  "422": "ErrorMessage",
2649
+ "429": "RateLimitError",
2630
2650
  "500": "ErrorMessage",
2631
2651
  }
2632
2652
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -2698,6 +2718,7 @@ class DefaultApi:
2698
2718
  "404": "ErrorMessage",
2699
2719
  "409": "ErrorMessage",
2700
2720
  "422": "ErrorMessage",
2721
+ "429": "RateLimitError",
2701
2722
  "500": "ErrorMessage",
2702
2723
  }
2703
2724
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -2769,6 +2790,7 @@ class DefaultApi:
2769
2790
  "404": "ErrorMessage",
2770
2791
  "409": "ErrorMessage",
2771
2792
  "422": "ErrorMessage",
2793
+ "429": "RateLimitError",
2772
2794
  "500": "ErrorMessage",
2773
2795
  }
2774
2796
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -2888,6 +2910,7 @@ class DefaultApi:
2888
2910
  "403": "ErrorMessage",
2889
2911
  "409": "ErrorMessage",
2890
2912
  "422": "HTTPValidationError",
2913
+ "429": "RateLimitError",
2891
2914
  "500": "ErrorMessage",
2892
2915
  }
2893
2916
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -2958,6 +2981,7 @@ class DefaultApi:
2958
2981
  "403": "ErrorMessage",
2959
2982
  "409": "ErrorMessage",
2960
2983
  "422": "HTTPValidationError",
2984
+ "429": "RateLimitError",
2961
2985
  "500": "ErrorMessage",
2962
2986
  }
2963
2987
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -3028,6 +3052,7 @@ class DefaultApi:
3028
3052
  "403": "ErrorMessage",
3029
3053
  "409": "ErrorMessage",
3030
3054
  "422": "HTTPValidationError",
3055
+ "429": "RateLimitError",
3031
3056
  "500": "ErrorMessage",
3032
3057
  }
3033
3058
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -3152,6 +3177,7 @@ class DefaultApi:
3152
3177
  "403": "ErrorMessage",
3153
3178
  "404": "ErrorMessage",
3154
3179
  "422": "HTTPValidationError",
3180
+ "429": "RateLimitError",
3155
3181
  "500": "ErrorMessage",
3156
3182
  }
3157
3183
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -3227,6 +3253,7 @@ class DefaultApi:
3227
3253
  "403": "ErrorMessage",
3228
3254
  "404": "ErrorMessage",
3229
3255
  "422": "HTTPValidationError",
3256
+ "429": "RateLimitError",
3230
3257
  "500": "ErrorMessage",
3231
3258
  }
3232
3259
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -3302,6 +3329,7 @@ class DefaultApi:
3302
3329
  "403": "ErrorMessage",
3303
3330
  "404": "ErrorMessage",
3304
3331
  "422": "HTTPValidationError",
3332
+ "429": "RateLimitError",
3305
3333
  "500": "ErrorMessage",
3306
3334
  }
3307
3335
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -4206,6 +4234,7 @@ class DefaultApi:
4206
4234
  "403": "ErrorMessage",
4207
4235
  "404": "ErrorMessage",
4208
4236
  "422": "HTTPValidationError",
4237
+ "429": "RateLimitError",
4209
4238
  "500": "ErrorMessage",
4210
4239
  }
4211
4240
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -4275,6 +4304,7 @@ class DefaultApi:
4275
4304
  "403": "ErrorMessage",
4276
4305
  "404": "ErrorMessage",
4277
4306
  "422": "HTTPValidationError",
4307
+ "429": "RateLimitError",
4278
4308
  "500": "ErrorMessage",
4279
4309
  }
4280
4310
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -4344,6 +4374,7 @@ class DefaultApi:
4344
4374
  "403": "ErrorMessage",
4345
4375
  "404": "ErrorMessage",
4346
4376
  "422": "HTTPValidationError",
4377
+ "429": "RateLimitError",
4347
4378
  "500": "ErrorMessage",
4348
4379
  }
4349
4380
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -4466,6 +4497,7 @@ class DefaultApi:
4466
4497
  "403": "ErrorMessage",
4467
4498
  "404": "ErrorMessage",
4468
4499
  "422": "HTTPValidationError",
4500
+ "429": "RateLimitError",
4469
4501
  "500": "ErrorMessage",
4470
4502
  }
4471
4503
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -4539,6 +4571,7 @@ class DefaultApi:
4539
4571
  "403": "ErrorMessage",
4540
4572
  "404": "ErrorMessage",
4541
4573
  "422": "HTTPValidationError",
4574
+ "429": "RateLimitError",
4542
4575
  "500": "ErrorMessage",
4543
4576
  }
4544
4577
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -4612,6 +4645,7 @@ class DefaultApi:
4612
4645
  "403": "ErrorMessage",
4613
4646
  "404": "ErrorMessage",
4614
4647
  "422": "HTTPValidationError",
4648
+ "429": "RateLimitError",
4615
4649
  "500": "ErrorMessage",
4616
4650
  }
4617
4651
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -4735,6 +4769,7 @@ class DefaultApi:
4735
4769
  "403": "ErrorMessage",
4736
4770
  "404": "ErrorMessage",
4737
4771
  "422": "HTTPValidationError",
4772
+ "429": "RateLimitError",
4738
4773
  "500": "ErrorMessage",
4739
4774
  }
4740
4775
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -4804,6 +4839,7 @@ class DefaultApi:
4804
4839
  "403": "ErrorMessage",
4805
4840
  "404": "ErrorMessage",
4806
4841
  "422": "HTTPValidationError",
4842
+ "429": "RateLimitError",
4807
4843
  "500": "ErrorMessage",
4808
4844
  }
4809
4845
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -4873,6 +4909,7 @@ class DefaultApi:
4873
4909
  "403": "ErrorMessage",
4874
4910
  "404": "ErrorMessage",
4875
4911
  "422": "HTTPValidationError",
4912
+ "429": "RateLimitError",
4876
4913
  "500": "ErrorMessage",
4877
4914
  }
4878
4915
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -4990,6 +5027,7 @@ class DefaultApi:
4990
5027
  "401": "ErrorMessage",
4991
5028
  "404": "ErrorMessage",
4992
5029
  "422": "HTTPValidationError",
5030
+ "429": "RateLimitError",
4993
5031
  "500": "ErrorMessage",
4994
5032
  }
4995
5033
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -5058,6 +5096,7 @@ class DefaultApi:
5058
5096
  "401": "ErrorMessage",
5059
5097
  "404": "ErrorMessage",
5060
5098
  "422": "HTTPValidationError",
5099
+ "429": "RateLimitError",
5061
5100
  "500": "ErrorMessage",
5062
5101
  }
5063
5102
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -5126,6 +5165,7 @@ class DefaultApi:
5126
5165
  "401": "ErrorMessage",
5127
5166
  "404": "ErrorMessage",
5128
5167
  "422": "HTTPValidationError",
5168
+ "429": "RateLimitError",
5129
5169
  "500": "ErrorMessage",
5130
5170
  }
5131
5171
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -5480,3 +5520,285 @@ class DefaultApi:
5480
5520
  _host=_host,
5481
5521
  _request_auth=_request_auth,
5482
5522
  )
5523
+
5524
+ @validate_call
5525
+ def update_service(
5526
+ self,
5527
+ project_id: Annotated[StrictStr, Field(description="STACKIT project ID")],
5528
+ region: Annotated[StrictStr, Field(description="STACKIT Region")],
5529
+ update_service_payload: UpdateServicePayload,
5530
+ _request_timeout: Union[
5531
+ None,
5532
+ Annotated[StrictFloat, Field(gt=0)],
5533
+ Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]],
5534
+ ] = None,
5535
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
5536
+ _content_type: Optional[StrictStr] = None,
5537
+ _headers: Optional[Dict[StrictStr, Any]] = None,
5538
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
5539
+ ) -> ProjectStatus:
5540
+ """Update Project
5541
+
5542
+ Update project details.
5543
+
5544
+ :param project_id: STACKIT project ID (required)
5545
+ :type project_id: str
5546
+ :param region: STACKIT Region (required)
5547
+ :type region: str
5548
+ :param update_service_payload: (required)
5549
+ :type update_service_payload: UpdateServicePayload
5550
+ :param _request_timeout: timeout setting for this request. If one
5551
+ number provided, it will be total request
5552
+ timeout. It can also be a pair (tuple) of
5553
+ (connection, read) timeouts.
5554
+ :type _request_timeout: int, tuple(int, int), optional
5555
+ :param _request_auth: set to override the auth_settings for an a single
5556
+ request; this effectively ignores the
5557
+ authentication in the spec for a single request.
5558
+ :type _request_auth: dict, optional
5559
+ :param _content_type: force content-type for the request.
5560
+ :type _content_type: str, Optional
5561
+ :param _headers: set to override the headers for a single
5562
+ request; this effectively ignores the headers
5563
+ in the spec for a single request.
5564
+ :type _headers: dict, optional
5565
+ :param _host_index: set to override the host_index for a single
5566
+ request; this effectively ignores the host_index
5567
+ in the spec for a single request.
5568
+ :type _host_index: int, optional
5569
+ :return: Returns the result object.
5570
+ """ # noqa: E501
5571
+
5572
+ _param = self._update_service_serialize(
5573
+ project_id=project_id,
5574
+ region=region,
5575
+ update_service_payload=update_service_payload,
5576
+ _request_auth=_request_auth,
5577
+ _content_type=_content_type,
5578
+ _headers=_headers,
5579
+ _host_index=_host_index,
5580
+ )
5581
+
5582
+ _response_types_map: Dict[str, Optional[str]] = {
5583
+ "200": "ProjectStatus",
5584
+ "401": "ErrorMessage",
5585
+ "403": "ErrorMessage",
5586
+ "404": "ErrorMessage",
5587
+ "422": "HTTPValidationError",
5588
+ "429": "RateLimitError",
5589
+ "500": "ErrorMessage",
5590
+ }
5591
+ response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
5592
+ response_data.read()
5593
+ return self.api_client.response_deserialize(
5594
+ response_data=response_data,
5595
+ response_types_map=_response_types_map,
5596
+ ).data
5597
+
5598
+ @validate_call
5599
+ def update_service_with_http_info(
5600
+ self,
5601
+ project_id: Annotated[StrictStr, Field(description="STACKIT project ID")],
5602
+ region: Annotated[StrictStr, Field(description="STACKIT Region")],
5603
+ update_service_payload: UpdateServicePayload,
5604
+ _request_timeout: Union[
5605
+ None,
5606
+ Annotated[StrictFloat, Field(gt=0)],
5607
+ Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]],
5608
+ ] = None,
5609
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
5610
+ _content_type: Optional[StrictStr] = None,
5611
+ _headers: Optional[Dict[StrictStr, Any]] = None,
5612
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
5613
+ ) -> ApiResponse[ProjectStatus]:
5614
+ """Update Project
5615
+
5616
+ Update project details.
5617
+
5618
+ :param project_id: STACKIT project ID (required)
5619
+ :type project_id: str
5620
+ :param region: STACKIT Region (required)
5621
+ :type region: str
5622
+ :param update_service_payload: (required)
5623
+ :type update_service_payload: UpdateServicePayload
5624
+ :param _request_timeout: timeout setting for this request. If one
5625
+ number provided, it will be total request
5626
+ timeout. It can also be a pair (tuple) of
5627
+ (connection, read) timeouts.
5628
+ :type _request_timeout: int, tuple(int, int), optional
5629
+ :param _request_auth: set to override the auth_settings for an a single
5630
+ request; this effectively ignores the
5631
+ authentication in the spec for a single request.
5632
+ :type _request_auth: dict, optional
5633
+ :param _content_type: force content-type for the request.
5634
+ :type _content_type: str, Optional
5635
+ :param _headers: set to override the headers for a single
5636
+ request; this effectively ignores the headers
5637
+ in the spec for a single request.
5638
+ :type _headers: dict, optional
5639
+ :param _host_index: set to override the host_index for a single
5640
+ request; this effectively ignores the host_index
5641
+ in the spec for a single request.
5642
+ :type _host_index: int, optional
5643
+ :return: Returns the result object.
5644
+ """ # noqa: E501
5645
+
5646
+ _param = self._update_service_serialize(
5647
+ project_id=project_id,
5648
+ region=region,
5649
+ update_service_payload=update_service_payload,
5650
+ _request_auth=_request_auth,
5651
+ _content_type=_content_type,
5652
+ _headers=_headers,
5653
+ _host_index=_host_index,
5654
+ )
5655
+
5656
+ _response_types_map: Dict[str, Optional[str]] = {
5657
+ "200": "ProjectStatus",
5658
+ "401": "ErrorMessage",
5659
+ "403": "ErrorMessage",
5660
+ "404": "ErrorMessage",
5661
+ "422": "HTTPValidationError",
5662
+ "429": "RateLimitError",
5663
+ "500": "ErrorMessage",
5664
+ }
5665
+ response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
5666
+ response_data.read()
5667
+ return self.api_client.response_deserialize(
5668
+ response_data=response_data,
5669
+ response_types_map=_response_types_map,
5670
+ )
5671
+
5672
+ @validate_call
5673
+ def update_service_without_preload_content(
5674
+ self,
5675
+ project_id: Annotated[StrictStr, Field(description="STACKIT project ID")],
5676
+ region: Annotated[StrictStr, Field(description="STACKIT Region")],
5677
+ update_service_payload: UpdateServicePayload,
5678
+ _request_timeout: Union[
5679
+ None,
5680
+ Annotated[StrictFloat, Field(gt=0)],
5681
+ Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]],
5682
+ ] = None,
5683
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
5684
+ _content_type: Optional[StrictStr] = None,
5685
+ _headers: Optional[Dict[StrictStr, Any]] = None,
5686
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
5687
+ ) -> RESTResponseType:
5688
+ """Update Project
5689
+
5690
+ Update project details.
5691
+
5692
+ :param project_id: STACKIT project ID (required)
5693
+ :type project_id: str
5694
+ :param region: STACKIT Region (required)
5695
+ :type region: str
5696
+ :param update_service_payload: (required)
5697
+ :type update_service_payload: UpdateServicePayload
5698
+ :param _request_timeout: timeout setting for this request. If one
5699
+ number provided, it will be total request
5700
+ timeout. It can also be a pair (tuple) of
5701
+ (connection, read) timeouts.
5702
+ :type _request_timeout: int, tuple(int, int), optional
5703
+ :param _request_auth: set to override the auth_settings for an a single
5704
+ request; this effectively ignores the
5705
+ authentication in the spec for a single request.
5706
+ :type _request_auth: dict, optional
5707
+ :param _content_type: force content-type for the request.
5708
+ :type _content_type: str, Optional
5709
+ :param _headers: set to override the headers for a single
5710
+ request; this effectively ignores the headers
5711
+ in the spec for a single request.
5712
+ :type _headers: dict, optional
5713
+ :param _host_index: set to override the host_index for a single
5714
+ request; this effectively ignores the host_index
5715
+ in the spec for a single request.
5716
+ :type _host_index: int, optional
5717
+ :return: Returns the result object.
5718
+ """ # noqa: E501
5719
+
5720
+ _param = self._update_service_serialize(
5721
+ project_id=project_id,
5722
+ region=region,
5723
+ update_service_payload=update_service_payload,
5724
+ _request_auth=_request_auth,
5725
+ _content_type=_content_type,
5726
+ _headers=_headers,
5727
+ _host_index=_host_index,
5728
+ )
5729
+
5730
+ _response_types_map: Dict[str, Optional[str]] = {
5731
+ "200": "ProjectStatus",
5732
+ "401": "ErrorMessage",
5733
+ "403": "ErrorMessage",
5734
+ "404": "ErrorMessage",
5735
+ "422": "HTTPValidationError",
5736
+ "429": "RateLimitError",
5737
+ "500": "ErrorMessage",
5738
+ }
5739
+ response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
5740
+ return response_data.response
5741
+
5742
+ def _update_service_serialize(
5743
+ self,
5744
+ project_id,
5745
+ region,
5746
+ update_service_payload,
5747
+ _request_auth,
5748
+ _content_type,
5749
+ _headers,
5750
+ _host_index,
5751
+ ) -> RequestSerialized:
5752
+
5753
+ _host = None
5754
+
5755
+ _collection_formats: Dict[str, str] = {}
5756
+
5757
+ _path_params: Dict[str, str] = {}
5758
+ _query_params: List[Tuple[str, str]] = []
5759
+ _header_params: Dict[str, Optional[str]] = _headers or {}
5760
+ _form_params: List[Tuple[str, str]] = []
5761
+ _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {}
5762
+ _body_params: Optional[bytes] = None
5763
+
5764
+ # process the path parameters
5765
+ if project_id is not None:
5766
+ _path_params["projectId"] = project_id
5767
+ if region is not None:
5768
+ _path_params["region"] = region
5769
+ # process the query parameters
5770
+ # process the header parameters
5771
+ # process the form parameters
5772
+ # process the body parameter
5773
+ if update_service_payload is not None:
5774
+ _body_params = update_service_payload
5775
+
5776
+ # set the HTTP header `Accept`
5777
+ if "Accept" not in _header_params:
5778
+ _header_params["Accept"] = self.api_client.select_header_accept(["application/json"])
5779
+
5780
+ # set the HTTP header `Content-Type`
5781
+ if _content_type:
5782
+ _header_params["Content-Type"] = _content_type
5783
+ else:
5784
+ _default_content_type = self.api_client.select_header_content_type(["application/json"])
5785
+ if _default_content_type is not None:
5786
+ _header_params["Content-Type"] = _default_content_type
5787
+
5788
+ # authentication setting
5789
+ _auth_settings: List[str] = []
5790
+
5791
+ return self.api_client.param_serialize(
5792
+ method="PUT",
5793
+ resource_path="/v2/project/{projectId}/regions/{region}",
5794
+ path_params=_path_params,
5795
+ query_params=_query_params,
5796
+ header_params=_header_params,
5797
+ body=_body_params,
5798
+ post_params=_form_params,
5799
+ files=_files,
5800
+ auth_settings=_auth_settings,
5801
+ collection_formats=_collection_formats,
5802
+ _host=_host,
5803
+ _request_auth=_request_auth,
5804
+ )
@@ -63,8 +63,10 @@ from stackit.objectstorage.models.list_credentials_groups_response import (
63
63
  from stackit.objectstorage.models.location_inner import LocationInner
64
64
  from stackit.objectstorage.models.project_scope import ProjectScope
65
65
  from stackit.objectstorage.models.project_status import ProjectStatus
66
+ from stackit.objectstorage.models.rate_limit_error import RateLimitError
66
67
  from stackit.objectstorage.models.retention_mode import RetentionMode
67
68
  from stackit.objectstorage.models.set_default_retention_payload import (
68
69
  SetDefaultRetentionPayload,
69
70
  )
71
+ from stackit.objectstorage.models.update_service_payload import UpdateServicePayload
70
72
  from stackit.objectstorage.models.validation_error import ValidationError
@@ -28,7 +28,7 @@ class AccessKey(BaseModel):
28
28
  """ # noqa: E501
29
29
 
30
30
  display_name: StrictStr = Field(alias="displayName")
31
- expires: StrictStr
31
+ expires: Optional[StrictStr]
32
32
  key_id: StrictStr = Field(
33
33
  description="Identifies the pair of access key and secret access key for deletion", alias="keyId"
34
34
  )
@@ -71,6 +71,11 @@ class AccessKey(BaseModel):
71
71
  exclude=excluded_fields,
72
72
  exclude_none=True,
73
73
  )
74
+ # set to None if expires (nullable) is None
75
+ # and model_fields_set contains the field
76
+ if self.expires is None and "expires" in self.model_fields_set:
77
+ _dict["expires"] = None
78
+
74
79
  return _dict
75
80
 
76
81
  @classmethod
@@ -82,6 +82,11 @@ class CreateAccessKeyPayload(BaseModel):
82
82
  exclude=excluded_fields,
83
83
  exclude_none=True,
84
84
  )
85
+ # set to None if expires (nullable) is None
86
+ # and model_fields_set contains the field
87
+ if self.expires is None and "expires" in self.model_fields_set:
88
+ _dict["expires"] = None
89
+
85
90
  return _dict
86
91
 
87
92
  @classmethod
@@ -29,9 +29,10 @@ class ProjectStatus(BaseModel):
29
29
  ProjectStatus
30
30
  """ # noqa: E501
31
31
 
32
+ labels: Optional[Dict[str, StrictStr]] = Field(default=None, description="Project labels")
32
33
  project: StrictStr = Field(description="Project ID")
33
34
  scope: ProjectScope = Field(description="Project Scope")
34
- __properties: ClassVar[List[str]] = ["project", "scope"]
35
+ __properties: ClassVar[List[str]] = ["labels", "project", "scope"]
35
36
 
36
37
  model_config = ConfigDict(
37
38
  validate_by_name=True,
@@ -81,5 +82,7 @@ class ProjectStatus(BaseModel):
81
82
  if not isinstance(obj, dict):
82
83
  return cls.model_validate(obj)
83
84
 
84
- _obj = cls.model_validate({"project": obj.get("project"), "scope": obj.get("scope")})
85
+ _obj = cls.model_validate(
86
+ {"labels": obj.get("labels"), "project": obj.get("project"), "scope": obj.get("scope")}
87
+ )
85
88
  return _obj
@@ -0,0 +1,109 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ STACKIT Object Storage API
5
+
6
+ STACKIT API to manage the Object Storage
7
+
8
+ The version of the OpenAPI document: 2.0.1
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+ from __future__ import annotations
15
+
16
+ import json
17
+ import pprint
18
+ import re # noqa: F401
19
+ from datetime import datetime
20
+ from typing import Any, ClassVar, Dict, List, Optional, Set
21
+
22
+ from pydantic import BaseModel, ConfigDict, StrictInt, StrictStr, field_validator
23
+ from pydantic_core import to_jsonable_python
24
+ from typing_extensions import Self
25
+
26
+
27
+ class RateLimitError(BaseModel):
28
+ """
29
+ RateLimitError
30
+ """ # noqa: E501
31
+
32
+ error: Optional[StrictStr] = None
33
+ message: Optional[StrictStr] = None
34
+ path: Optional[StrictStr] = None
35
+ status: Optional[StrictInt] = None
36
+ timestamp: Optional[datetime] = None
37
+ __properties: ClassVar[List[str]] = ["error", "message", "path", "status", "timestamp"]
38
+
39
+ @field_validator("timestamp", mode="before")
40
+ def timestamp_change_year_zero_to_one(cls, value):
41
+ """Workaround which prevents year 0 issue"""
42
+ if isinstance(value, str):
43
+ # Check for year "0000" at the beginning of the string
44
+ # This assumes common date formats like YYYY-MM-DDTHH:MM:SS+00:00 or YYYY-MM-DDTHH:MM:SSZ
45
+ if value.startswith("0000-01-01T") and re.match(
46
+ r"^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\+\d{2}:\d{2}|Z)$", value
47
+ ):
48
+ # Workaround: Replace "0000" with "0001"
49
+ return "0001" + value[4:] # Take "0001" and append the rest of the string
50
+ return value
51
+
52
+ model_config = ConfigDict(
53
+ validate_by_name=True,
54
+ validate_by_alias=True,
55
+ validate_assignment=True,
56
+ protected_namespaces=(),
57
+ )
58
+
59
+ def to_str(self) -> str:
60
+ """Returns the string representation of the model using alias"""
61
+ return pprint.pformat(self.model_dump(by_alias=True))
62
+
63
+ def to_json(self) -> str:
64
+ """Returns the JSON representation of the model using alias"""
65
+ return json.dumps(to_jsonable_python(self.to_dict()))
66
+
67
+ @classmethod
68
+ def from_json(cls, json_str: str) -> Optional[Self]:
69
+ """Create an instance of RateLimitError from a JSON string"""
70
+ return cls.from_dict(json.loads(json_str))
71
+
72
+ def to_dict(self) -> Dict[str, Any]:
73
+ """Return the dictionary representation of the model using alias.
74
+
75
+ This has the following differences from calling pydantic's
76
+ `self.model_dump(by_alias=True)`:
77
+
78
+ * `None` is only added to the output dict for nullable fields that
79
+ were set at model initialization. Other fields with value `None`
80
+ are ignored.
81
+ """
82
+ excluded_fields: Set[str] = set([])
83
+
84
+ _dict = self.model_dump(
85
+ by_alias=True,
86
+ exclude=excluded_fields,
87
+ exclude_none=True,
88
+ )
89
+ return _dict
90
+
91
+ @classmethod
92
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
93
+ """Create an instance of RateLimitError from a dict"""
94
+ if obj is None:
95
+ return None
96
+
97
+ if not isinstance(obj, dict):
98
+ return cls.model_validate(obj)
99
+
100
+ _obj = cls.model_validate(
101
+ {
102
+ "error": obj.get("error"),
103
+ "message": obj.get("message"),
104
+ "path": obj.get("path"),
105
+ "status": obj.get("status"),
106
+ "timestamp": obj.get("timestamp"),
107
+ }
108
+ )
109
+ return _obj
@@ -0,0 +1,82 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ STACKIT Object Storage API
5
+
6
+ STACKIT API to manage the Object Storage
7
+
8
+ The version of the OpenAPI document: 2.0.1
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+ from __future__ import annotations
15
+
16
+ import json
17
+ import pprint
18
+ from typing import Any, ClassVar, Dict, List, Optional, Set
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
21
+ from pydantic_core import to_jsonable_python
22
+ from typing_extensions import Self
23
+
24
+
25
+ class UpdateServicePayload(BaseModel):
26
+ """
27
+ UpdateServicePayload
28
+ """ # noqa: E501
29
+
30
+ labels: Dict[str, StrictStr] = Field(description="Project labels")
31
+ __properties: ClassVar[List[str]] = ["labels"]
32
+
33
+ model_config = ConfigDict(
34
+ validate_by_name=True,
35
+ validate_by_alias=True,
36
+ validate_assignment=True,
37
+ protected_namespaces=(),
38
+ )
39
+
40
+ def to_str(self) -> str:
41
+ """Returns the string representation of the model using alias"""
42
+ return pprint.pformat(self.model_dump(by_alias=True))
43
+
44
+ def to_json(self) -> str:
45
+ """Returns the JSON representation of the model using alias"""
46
+ return json.dumps(to_jsonable_python(self.to_dict()))
47
+
48
+ @classmethod
49
+ def from_json(cls, json_str: str) -> Optional[Self]:
50
+ """Create an instance of UpdateServicePayload from a JSON string"""
51
+ return cls.from_dict(json.loads(json_str))
52
+
53
+ def to_dict(self) -> Dict[str, Any]:
54
+ """Return the dictionary representation of the model using alias.
55
+
56
+ This has the following differences from calling pydantic's
57
+ `self.model_dump(by_alias=True)`:
58
+
59
+ * `None` is only added to the output dict for nullable fields that
60
+ were set at model initialization. Other fields with value `None`
61
+ are ignored.
62
+ """
63
+ excluded_fields: Set[str] = set([])
64
+
65
+ _dict = self.model_dump(
66
+ by_alias=True,
67
+ exclude=excluded_fields,
68
+ exclude_none=True,
69
+ )
70
+ return _dict
71
+
72
+ @classmethod
73
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
74
+ """Create an instance of UpdateServicePayload from a dict"""
75
+ if obj is None:
76
+ return None
77
+
78
+ if not isinstance(obj, dict):
79
+ return cls.model_validate(obj)
80
+
81
+ _obj = cls.model_validate({"labels": obj.get("labels")})
82
+ return _obj