openmeter 1.0.0b121__py3-none-any.whl → 1.0.0b122__py3-none-any.whl

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.

Potentially problematic release.


This version of openmeter might be problematic. Click here for more details.

@@ -797,6 +797,280 @@ def build_get_debug_metrics_request(**kwargs: Any) -> HttpRequest:
797
797
  return HttpRequest(method="GET", url=_url, headers=_headers, **kwargs)
798
798
 
799
799
 
800
+ def build_list_notification_channels_request(
801
+ *, limit: int = 1000, offset: int = 0, order_by: str = "id", include_disabled: bool = False, **kwargs: Any
802
+ ) -> HttpRequest:
803
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
804
+ _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
805
+
806
+ accept = _headers.pop("Accept", "application/json, application/problem+json")
807
+
808
+ # Construct URL
809
+ _url = "/api/v1/notification/channels"
810
+
811
+ # Construct parameters
812
+ if limit is not None:
813
+ _params["limit"] = _SERIALIZER.query("limit", limit, "int", maximum=1000, minimum=1)
814
+ if offset is not None:
815
+ _params["offset"] = _SERIALIZER.query("offset", offset, "int", minimum=0)
816
+ if order_by is not None:
817
+ _params["orderBy"] = _SERIALIZER.query("order_by", order_by, "str")
818
+ if include_disabled is not None:
819
+ _params["includeDisabled"] = _SERIALIZER.query("include_disabled", include_disabled, "bool")
820
+
821
+ # Construct headers
822
+ _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
823
+
824
+ return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
825
+
826
+
827
+ def build_create_notification_channel_request(**kwargs: Any) -> HttpRequest: # pylint: disable=name-too-long
828
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
829
+
830
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
831
+ accept = _headers.pop("Accept", "application/json, application/problem+json")
832
+
833
+ # Construct URL
834
+ _url = "/api/v1/notification/channels"
835
+
836
+ # Construct headers
837
+ if content_type is not None:
838
+ _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
839
+ _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
840
+
841
+ return HttpRequest(method="POST", url=_url, headers=_headers, **kwargs)
842
+
843
+
844
+ def build_get_notification_channel_request(channel_id: str, **kwargs: Any) -> HttpRequest:
845
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
846
+
847
+ accept = _headers.pop("Accept", "application/json, application/problem+json")
848
+
849
+ # Construct URL
850
+ _url = "/api/v1/notification/channels/{channelId}"
851
+ path_format_arguments = {
852
+ "channelId": _SERIALIZER.url("channel_id", channel_id, "str"),
853
+ }
854
+
855
+ _url: str = _url.format(**path_format_arguments) # type: ignore
856
+
857
+ # Construct headers
858
+ _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
859
+
860
+ return HttpRequest(method="GET", url=_url, headers=_headers, **kwargs)
861
+
862
+
863
+ def build_delete_notification_channel_request( # pylint: disable=name-too-long
864
+ channel_id: str, **kwargs: Any
865
+ ) -> HttpRequest:
866
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
867
+
868
+ accept = _headers.pop("Accept", "application/problem+json")
869
+
870
+ # Construct URL
871
+ _url = "/api/v1/notification/channels/{channelId}"
872
+ path_format_arguments = {
873
+ "channelId": _SERIALIZER.url("channel_id", channel_id, "str"),
874
+ }
875
+
876
+ _url: str = _url.format(**path_format_arguments) # type: ignore
877
+
878
+ # Construct headers
879
+ _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
880
+
881
+ return HttpRequest(method="DELETE", url=_url, headers=_headers, **kwargs)
882
+
883
+
884
+ def build_update_notification_channel_request( # pylint: disable=name-too-long
885
+ channel_id: str, **kwargs: Any
886
+ ) -> HttpRequest:
887
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
888
+
889
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
890
+ accept = _headers.pop("Accept", "application/json, application/problem+json")
891
+
892
+ # Construct URL
893
+ _url = "/api/v1/notification/channels/{channelId}"
894
+ path_format_arguments = {
895
+ "channelId": _SERIALIZER.url("channel_id", channel_id, "str"),
896
+ }
897
+
898
+ _url: str = _url.format(**path_format_arguments) # type: ignore
899
+
900
+ # Construct headers
901
+ if content_type is not None:
902
+ _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
903
+ _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
904
+
905
+ return HttpRequest(method="PUT", url=_url, headers=_headers, **kwargs)
906
+
907
+
908
+ def build_list_notification_rules_request(
909
+ *,
910
+ limit: int = 1000,
911
+ offset: int = 0,
912
+ order_by: str = "id",
913
+ include_disabled: bool = False,
914
+ feature: Optional[List[str]] = None,
915
+ **kwargs: Any
916
+ ) -> HttpRequest:
917
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
918
+ _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
919
+
920
+ accept = _headers.pop("Accept", "application/json, application/problem+json")
921
+
922
+ # Construct URL
923
+ _url = "/api/v1/notification/rules"
924
+
925
+ # Construct parameters
926
+ if limit is not None:
927
+ _params["limit"] = _SERIALIZER.query("limit", limit, "int", maximum=1000, minimum=1)
928
+ if offset is not None:
929
+ _params["offset"] = _SERIALIZER.query("offset", offset, "int", minimum=0)
930
+ if order_by is not None:
931
+ _params["orderBy"] = _SERIALIZER.query("order_by", order_by, "str")
932
+ if include_disabled is not None:
933
+ _params["includeDisabled"] = _SERIALIZER.query("include_disabled", include_disabled, "bool")
934
+ if feature is not None:
935
+ _params["feature"] = _SERIALIZER.query("feature", feature, "[str]")
936
+
937
+ # Construct headers
938
+ _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
939
+
940
+ return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
941
+
942
+
943
+ def build_create_notification_rule_request(**kwargs: Any) -> HttpRequest:
944
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
945
+
946
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
947
+ accept = _headers.pop("Accept", "application/json, application/problem+json")
948
+
949
+ # Construct URL
950
+ _url = "/api/v1/notification/rules"
951
+
952
+ # Construct headers
953
+ if content_type is not None:
954
+ _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
955
+ _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
956
+
957
+ return HttpRequest(method="POST", url=_url, headers=_headers, **kwargs)
958
+
959
+
960
+ def build_get_notification_rule_request(rule_id: str, **kwargs: Any) -> HttpRequest:
961
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
962
+
963
+ accept = _headers.pop("Accept", "application/json, application/problem+json")
964
+
965
+ # Construct URL
966
+ _url = "/api/v1/notification/rules/{ruleId}"
967
+ path_format_arguments = {
968
+ "ruleId": _SERIALIZER.url("rule_id", rule_id, "str"),
969
+ }
970
+
971
+ _url: str = _url.format(**path_format_arguments) # type: ignore
972
+
973
+ # Construct headers
974
+ _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
975
+
976
+ return HttpRequest(method="GET", url=_url, headers=_headers, **kwargs)
977
+
978
+
979
+ def build_delete_notification_rule_request(rule_id: str, **kwargs: Any) -> HttpRequest:
980
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
981
+
982
+ accept = _headers.pop("Accept", "application/problem+json")
983
+
984
+ # Construct URL
985
+ _url = "/api/v1/notification/rules/{ruleId}"
986
+ path_format_arguments = {
987
+ "ruleId": _SERIALIZER.url("rule_id", rule_id, "str"),
988
+ }
989
+
990
+ _url: str = _url.format(**path_format_arguments) # type: ignore
991
+
992
+ # Construct headers
993
+ _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
994
+
995
+ return HttpRequest(method="DELETE", url=_url, headers=_headers, **kwargs)
996
+
997
+
998
+ def build_update_notification_rule_request(rule_id: str, **kwargs: Any) -> HttpRequest:
999
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
1000
+
1001
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
1002
+ accept = _headers.pop("Accept", "application/json, application/problem+json")
1003
+
1004
+ # Construct URL
1005
+ _url = "/api/v1/notification/rules/{ruleId}"
1006
+ path_format_arguments = {
1007
+ "ruleId": _SERIALIZER.url("rule_id", rule_id, "str"),
1008
+ }
1009
+
1010
+ _url: str = _url.format(**path_format_arguments) # type: ignore
1011
+
1012
+ # Construct headers
1013
+ if content_type is not None:
1014
+ _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str")
1015
+ _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
1016
+
1017
+ return HttpRequest(method="PUT", url=_url, headers=_headers, **kwargs)
1018
+
1019
+
1020
+ def build_list_notification_events_request(
1021
+ *,
1022
+ limit: int = 1000,
1023
+ offset: int = 0,
1024
+ order_by: str = "id",
1025
+ feature: Optional[List[str]] = None,
1026
+ subject: Optional[List[str]] = None,
1027
+ **kwargs: Any
1028
+ ) -> HttpRequest:
1029
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
1030
+ _params = case_insensitive_dict(kwargs.pop("params", {}) or {})
1031
+
1032
+ accept = _headers.pop("Accept", "application/json, application/problem+json")
1033
+
1034
+ # Construct URL
1035
+ _url = "/api/v1/notification/events"
1036
+
1037
+ # Construct parameters
1038
+ if limit is not None:
1039
+ _params["limit"] = _SERIALIZER.query("limit", limit, "int", maximum=1000, minimum=1)
1040
+ if offset is not None:
1041
+ _params["offset"] = _SERIALIZER.query("offset", offset, "int", minimum=0)
1042
+ if order_by is not None:
1043
+ _params["orderBy"] = _SERIALIZER.query("order_by", order_by, "str")
1044
+ if feature is not None:
1045
+ _params["feature"] = _SERIALIZER.query("feature", feature, "[str]")
1046
+ if subject is not None:
1047
+ _params["subject"] = _SERIALIZER.query("subject", subject, "[str]")
1048
+
1049
+ # Construct headers
1050
+ _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
1051
+
1052
+ return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)
1053
+
1054
+
1055
+ def build_get_notification_event_request(event_id: str, **kwargs: Any) -> HttpRequest:
1056
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
1057
+
1058
+ accept = _headers.pop("Accept", "application/json, application/problem+json")
1059
+
1060
+ # Construct URL
1061
+ _url = "/api/v1/notification/events/{eventId}"
1062
+ path_format_arguments = {
1063
+ "eventId": _SERIALIZER.url("event_id", event_id, "str"),
1064
+ }
1065
+
1066
+ _url: str = _url.format(**path_format_arguments) # type: ignore
1067
+
1068
+ # Construct headers
1069
+ _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")
1070
+
1071
+ return HttpRequest(method="GET", url=_url, headers=_headers, **kwargs)
1072
+
1073
+
800
1074
  class ClientOperationsMixin(ClientMixinABC): # pylint: disable=too-many-public-methods
801
1075
  @distributed_trace
802
1076
  def list_events(
@@ -1573,7 +1847,7 @@ class ClientOperationsMixin(ClientMixinABC): # pylint: disable=too-many-public-
1573
1847
  :paramtype window_time_zone: str
1574
1848
  :keyword subject: Filtering by multiple subjects.
1575
1849
 
1576
- Usage: ?subject=customer-1&subject=customer-2. Default value is None.
1850
+ Usage: ``?subject=customer-1&subject=customer-2``. Default value is None.
1577
1851
  :paramtype subject: list[str]
1578
1852
  :keyword filter_group_by: Default value is None.
1579
1853
  :paramtype filter_group_by: dict[str, str]
@@ -4966,3 +5240,1147 @@ class ClientOperationsMixin(ClientMixinABC): # pylint: disable=too-many-public-
4966
5240
  return cls(pipeline_response, cast(str, deserialized), {}) # type: ignore
4967
5241
 
4968
5242
  return cast(str, deserialized) # type: ignore
5243
+
5244
+ @distributed_trace
5245
+ def list_notification_channels(
5246
+ self, *, limit: int = 1000, offset: int = 0, order_by: str = "id", include_disabled: bool = False, **kwargs: Any
5247
+ ) -> List[JSON]:
5248
+ """List notification channels.
5249
+
5250
+ List all notification channels.
5251
+
5252
+ :keyword limit: Number of entries to return. Default value is 1000.
5253
+ :paramtype limit: int
5254
+ :keyword offset: Number of entries to skip. Default value is 0.
5255
+ :paramtype offset: int
5256
+ :keyword order_by: Order by field. Known values are: "id", "type", "createdAt", and
5257
+ "updatedAt". Default value is "id".
5258
+ :paramtype order_by: str
5259
+ :keyword include_disabled: Include disabled entries. Default value is False.
5260
+ :paramtype include_disabled: bool
5261
+ :return: list of JSON object
5262
+ :rtype: list[JSON]
5263
+ :raises ~azure.core.exceptions.HttpResponseError:
5264
+
5265
+ Example:
5266
+ .. code-block:: python
5267
+
5268
+ # response body for status code(s): 200
5269
+ response == [
5270
+ {}
5271
+ ]
5272
+ """
5273
+ error_map = {
5274
+ 404: ResourceNotFoundError,
5275
+ 409: ResourceExistsError,
5276
+ 304: ResourceNotModifiedError,
5277
+ 400: HttpResponseError,
5278
+ 401: lambda response: ClientAuthenticationError(response=response),
5279
+ }
5280
+ error_map.update(kwargs.pop("error_map", {}) or {})
5281
+
5282
+ _headers = kwargs.pop("headers", {}) or {}
5283
+ _params = kwargs.pop("params", {}) or {}
5284
+
5285
+ cls: ClsType[List[JSON]] = kwargs.pop("cls", None)
5286
+
5287
+ _request = build_list_notification_channels_request(
5288
+ limit=limit,
5289
+ offset=offset,
5290
+ order_by=order_by,
5291
+ include_disabled=include_disabled,
5292
+ headers=_headers,
5293
+ params=_params,
5294
+ )
5295
+ _request.url = self._client.format_url(_request.url)
5296
+
5297
+ _stream = False
5298
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
5299
+ _request, stream=_stream, **kwargs
5300
+ )
5301
+
5302
+ response = pipeline_response.http_response
5303
+
5304
+ if response.status_code not in [200]:
5305
+ if _stream:
5306
+ response.read() # Load the body in memory and close the socket
5307
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
5308
+ raise HttpResponseError(response=response)
5309
+
5310
+ if response.content:
5311
+ deserialized = response.json()
5312
+ else:
5313
+ deserialized = None
5314
+
5315
+ if cls:
5316
+ return cls(pipeline_response, cast(List[JSON], deserialized), {}) # type: ignore
5317
+
5318
+ return cast(List[JSON], deserialized) # type: ignore
5319
+
5320
+ @overload
5321
+ def create_notification_channel(self, body: JSON, *, content_type: str = "application/json", **kwargs: Any) -> JSON:
5322
+ """Create a notification channel.
5323
+
5324
+ Create a new notification channel.
5325
+
5326
+ :param body: The notification channel to create. Required.
5327
+ :type body: JSON
5328
+ :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
5329
+ Default value is "application/json".
5330
+ :paramtype content_type: str
5331
+ :return: JSON object
5332
+ :rtype: JSON
5333
+ :raises ~azure.core.exceptions.HttpResponseError:
5334
+
5335
+ Example:
5336
+ .. code-block:: python
5337
+
5338
+ # JSON input template you can fill out and use as your body input.
5339
+ body = {}
5340
+
5341
+ # response body for status code(s): 409
5342
+ response == {
5343
+ "detail": "str", # A human-readable explanation specific to this occurrence
5344
+ of the problem. Required.
5345
+ "status": 0, # The HTTP status code generated by the origin server for this
5346
+ occurrence of the problem. Required.
5347
+ "title": "str", # A a short, human-readable summary of the problem type.
5348
+ Required.
5349
+ "type": "str", # Type contains a URI that identifies the problem type.
5350
+ Required.
5351
+ "extensions": {
5352
+ "conflictingEntityId": "str" # The id of the conflicting entity.
5353
+ Required.
5354
+ },
5355
+ "instance": "str" # Optional. A URI reference that identifies the specific
5356
+ occurrence of the problem.
5357
+ }
5358
+ """
5359
+
5360
+ @overload
5361
+ def create_notification_channel(
5362
+ self, body: IO[bytes], *, content_type: str = "application/json", **kwargs: Any
5363
+ ) -> JSON:
5364
+ """Create a notification channel.
5365
+
5366
+ Create a new notification channel.
5367
+
5368
+ :param body: The notification channel to create. Required.
5369
+ :type body: IO[bytes]
5370
+ :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
5371
+ Default value is "application/json".
5372
+ :paramtype content_type: str
5373
+ :return: JSON object
5374
+ :rtype: JSON
5375
+ :raises ~azure.core.exceptions.HttpResponseError:
5376
+
5377
+ Example:
5378
+ .. code-block:: python
5379
+
5380
+ # response body for status code(s): 409
5381
+ response == {
5382
+ "detail": "str", # A human-readable explanation specific to this occurrence
5383
+ of the problem. Required.
5384
+ "status": 0, # The HTTP status code generated by the origin server for this
5385
+ occurrence of the problem. Required.
5386
+ "title": "str", # A a short, human-readable summary of the problem type.
5387
+ Required.
5388
+ "type": "str", # Type contains a URI that identifies the problem type.
5389
+ Required.
5390
+ "extensions": {
5391
+ "conflictingEntityId": "str" # The id of the conflicting entity.
5392
+ Required.
5393
+ },
5394
+ "instance": "str" # Optional. A URI reference that identifies the specific
5395
+ occurrence of the problem.
5396
+ }
5397
+ """
5398
+
5399
+ @distributed_trace
5400
+ def create_notification_channel(self, body: Union[JSON, IO[bytes]], **kwargs: Any) -> JSON:
5401
+ """Create a notification channel.
5402
+
5403
+ Create a new notification channel.
5404
+
5405
+ :param body: The notification channel to create. Is either a JSON type or a IO[bytes] type.
5406
+ Required.
5407
+ :type body: JSON or IO[bytes]
5408
+ :return: JSON object
5409
+ :rtype: JSON
5410
+ :raises ~azure.core.exceptions.HttpResponseError:
5411
+
5412
+ Example:
5413
+ .. code-block:: python
5414
+
5415
+ # JSON input template you can fill out and use as your body input.
5416
+ body = {}
5417
+
5418
+ # response body for status code(s): 409
5419
+ response == {
5420
+ "detail": "str", # A human-readable explanation specific to this occurrence
5421
+ of the problem. Required.
5422
+ "status": 0, # The HTTP status code generated by the origin server for this
5423
+ occurrence of the problem. Required.
5424
+ "title": "str", # A a short, human-readable summary of the problem type.
5425
+ Required.
5426
+ "type": "str", # Type contains a URI that identifies the problem type.
5427
+ Required.
5428
+ "extensions": {
5429
+ "conflictingEntityId": "str" # The id of the conflicting entity.
5430
+ Required.
5431
+ },
5432
+ "instance": "str" # Optional. A URI reference that identifies the specific
5433
+ occurrence of the problem.
5434
+ }
5435
+ """
5436
+ error_map = {
5437
+ 404: ResourceNotFoundError,
5438
+ 409: ResourceExistsError,
5439
+ 304: ResourceNotModifiedError,
5440
+ 400: HttpResponseError,
5441
+ 401: lambda response: ClientAuthenticationError(response=response),
5442
+ }
5443
+ error_map.update(kwargs.pop("error_map", {}) or {})
5444
+
5445
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
5446
+ _params = kwargs.pop("params", {}) or {}
5447
+
5448
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
5449
+ cls: ClsType[JSON] = kwargs.pop("cls", None)
5450
+
5451
+ content_type = content_type or "application/json"
5452
+ _json = None
5453
+ _content = None
5454
+ if isinstance(body, (IOBase, bytes)):
5455
+ _content = body
5456
+ else:
5457
+ _json = body
5458
+
5459
+ _request = build_create_notification_channel_request(
5460
+ content_type=content_type,
5461
+ json=_json,
5462
+ content=_content,
5463
+ headers=_headers,
5464
+ params=_params,
5465
+ )
5466
+ _request.url = self._client.format_url(_request.url)
5467
+
5468
+ _stream = False
5469
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
5470
+ _request, stream=_stream, **kwargs
5471
+ )
5472
+
5473
+ response = pipeline_response.http_response
5474
+
5475
+ if response.status_code not in [201, 409]:
5476
+ if _stream:
5477
+ response.read() # Load the body in memory and close the socket
5478
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
5479
+ raise HttpResponseError(response=response)
5480
+
5481
+ if response.status_code == 201:
5482
+ if response.content:
5483
+ deserialized = response.json()
5484
+ else:
5485
+ deserialized = None
5486
+
5487
+ if response.status_code == 409:
5488
+ if response.content:
5489
+ deserialized = response.json()
5490
+ else:
5491
+ deserialized = None
5492
+
5493
+ if cls:
5494
+ return cls(pipeline_response, cast(JSON, deserialized), {}) # type: ignore
5495
+
5496
+ return cast(JSON, deserialized) # type: ignore
5497
+
5498
+ @distributed_trace
5499
+ def get_notification_channel(self, channel_id: str, **kwargs: Any) -> JSON:
5500
+ """Get notification channel.
5501
+
5502
+ Get a notification channel by id.
5503
+
5504
+ :param channel_id: A unique ULID identifier for a notification channel. Required.
5505
+ :type channel_id: str
5506
+ :return: JSON object
5507
+ :rtype: JSON
5508
+ :raises ~azure.core.exceptions.HttpResponseError:
5509
+ """
5510
+ error_map = {
5511
+ 409: ResourceExistsError,
5512
+ 304: ResourceNotModifiedError,
5513
+ 401: lambda response: ClientAuthenticationError(response=response),
5514
+ 404: lambda response: ResourceNotFoundError(response=response),
5515
+ }
5516
+ error_map.update(kwargs.pop("error_map", {}) or {})
5517
+
5518
+ _headers = kwargs.pop("headers", {}) or {}
5519
+ _params = kwargs.pop("params", {}) or {}
5520
+
5521
+ cls: ClsType[JSON] = kwargs.pop("cls", None)
5522
+
5523
+ _request = build_get_notification_channel_request(
5524
+ channel_id=channel_id,
5525
+ headers=_headers,
5526
+ params=_params,
5527
+ )
5528
+ _request.url = self._client.format_url(_request.url)
5529
+
5530
+ _stream = False
5531
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
5532
+ _request, stream=_stream, **kwargs
5533
+ )
5534
+
5535
+ response = pipeline_response.http_response
5536
+
5537
+ if response.status_code not in [200]:
5538
+ if _stream:
5539
+ response.read() # Load the body in memory and close the socket
5540
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
5541
+ raise HttpResponseError(response=response)
5542
+
5543
+ if response.content:
5544
+ deserialized = response.json()
5545
+ else:
5546
+ deserialized = None
5547
+
5548
+ if cls:
5549
+ return cls(pipeline_response, cast(JSON, deserialized), {}) # type: ignore
5550
+
5551
+ return cast(JSON, deserialized) # type: ignore
5552
+
5553
+ @distributed_trace
5554
+ def delete_notification_channel( # pylint: disable=inconsistent-return-statements
5555
+ self, channel_id: str, **kwargs: Any
5556
+ ) -> None:
5557
+ """Delete a notification channel.
5558
+
5559
+ Delete notification channel by id.
5560
+
5561
+ :param channel_id: A unique ULID identifier for a notification channel. Required.
5562
+ :type channel_id: str
5563
+ :return: None
5564
+ :rtype: None
5565
+ :raises ~azure.core.exceptions.HttpResponseError:
5566
+ """
5567
+ error_map = {
5568
+ 409: ResourceExistsError,
5569
+ 304: ResourceNotModifiedError,
5570
+ 401: lambda response: ClientAuthenticationError(response=response),
5571
+ 404: lambda response: ResourceNotFoundError(response=response),
5572
+ }
5573
+ error_map.update(kwargs.pop("error_map", {}) or {})
5574
+
5575
+ _headers = kwargs.pop("headers", {}) or {}
5576
+ _params = kwargs.pop("params", {}) or {}
5577
+
5578
+ cls: ClsType[None] = kwargs.pop("cls", None)
5579
+
5580
+ _request = build_delete_notification_channel_request(
5581
+ channel_id=channel_id,
5582
+ headers=_headers,
5583
+ params=_params,
5584
+ )
5585
+ _request.url = self._client.format_url(_request.url)
5586
+
5587
+ _stream = False
5588
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
5589
+ _request, stream=_stream, **kwargs
5590
+ )
5591
+
5592
+ response = pipeline_response.http_response
5593
+
5594
+ if response.status_code not in [204]:
5595
+ if _stream:
5596
+ response.read() # Load the body in memory and close the socket
5597
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
5598
+ raise HttpResponseError(response=response)
5599
+
5600
+ if cls:
5601
+ return cls(pipeline_response, None, {}) # type: ignore
5602
+
5603
+ @overload
5604
+ def update_notification_channel(
5605
+ self, channel_id: str, body: JSON, *, content_type: str = "application/json", **kwargs: Any
5606
+ ) -> JSON:
5607
+ """Update notification channel.
5608
+
5609
+ Update a notification channel by id.
5610
+
5611
+ :param channel_id: A unique ULID identifier for a notification channel. Required.
5612
+ :type channel_id: str
5613
+ :param body: The notification channel to update. Required.
5614
+ :type body: JSON
5615
+ :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
5616
+ Default value is "application/json".
5617
+ :paramtype content_type: str
5618
+ :return: JSON object
5619
+ :rtype: JSON
5620
+ :raises ~azure.core.exceptions.HttpResponseError:
5621
+
5622
+ Example:
5623
+ .. code-block:: python
5624
+
5625
+ # JSON input template you can fill out and use as your body input.
5626
+ body = {}
5627
+ """
5628
+
5629
+ @overload
5630
+ def update_notification_channel(
5631
+ self, channel_id: str, body: IO[bytes], *, content_type: str = "application/json", **kwargs: Any
5632
+ ) -> JSON:
5633
+ """Update notification channel.
5634
+
5635
+ Update a notification channel by id.
5636
+
5637
+ :param channel_id: A unique ULID identifier for a notification channel. Required.
5638
+ :type channel_id: str
5639
+ :param body: The notification channel to update. Required.
5640
+ :type body: IO[bytes]
5641
+ :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
5642
+ Default value is "application/json".
5643
+ :paramtype content_type: str
5644
+ :return: JSON object
5645
+ :rtype: JSON
5646
+ :raises ~azure.core.exceptions.HttpResponseError:
5647
+ """
5648
+
5649
+ @distributed_trace
5650
+ def update_notification_channel(self, channel_id: str, body: Union[JSON, IO[bytes]], **kwargs: Any) -> JSON:
5651
+ """Update notification channel.
5652
+
5653
+ Update a notification channel by id.
5654
+
5655
+ :param channel_id: A unique ULID identifier for a notification channel. Required.
5656
+ :type channel_id: str
5657
+ :param body: The notification channel to update. Is either a JSON type or a IO[bytes] type.
5658
+ Required.
5659
+ :type body: JSON or IO[bytes]
5660
+ :return: JSON object
5661
+ :rtype: JSON
5662
+ :raises ~azure.core.exceptions.HttpResponseError:
5663
+
5664
+ Example:
5665
+ .. code-block:: python
5666
+
5667
+ # JSON input template you can fill out and use as your body input.
5668
+ body = {}
5669
+ """
5670
+ error_map = {
5671
+ 409: ResourceExistsError,
5672
+ 304: ResourceNotModifiedError,
5673
+ 401: lambda response: ClientAuthenticationError(response=response),
5674
+ 404: lambda response: ResourceNotFoundError(response=response),
5675
+ }
5676
+ error_map.update(kwargs.pop("error_map", {}) or {})
5677
+
5678
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
5679
+ _params = kwargs.pop("params", {}) or {}
5680
+
5681
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
5682
+ cls: ClsType[JSON] = kwargs.pop("cls", None)
5683
+
5684
+ content_type = content_type or "application/json"
5685
+ _json = None
5686
+ _content = None
5687
+ if isinstance(body, (IOBase, bytes)):
5688
+ _content = body
5689
+ else:
5690
+ _json = body
5691
+
5692
+ _request = build_update_notification_channel_request(
5693
+ channel_id=channel_id,
5694
+ content_type=content_type,
5695
+ json=_json,
5696
+ content=_content,
5697
+ headers=_headers,
5698
+ params=_params,
5699
+ )
5700
+ _request.url = self._client.format_url(_request.url)
5701
+
5702
+ _stream = False
5703
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
5704
+ _request, stream=_stream, **kwargs
5705
+ )
5706
+
5707
+ response = pipeline_response.http_response
5708
+
5709
+ if response.status_code not in [200]:
5710
+ if _stream:
5711
+ response.read() # Load the body in memory and close the socket
5712
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
5713
+ raise HttpResponseError(response=response)
5714
+
5715
+ if response.content:
5716
+ deserialized = response.json()
5717
+ else:
5718
+ deserialized = None
5719
+
5720
+ if cls:
5721
+ return cls(pipeline_response, cast(JSON, deserialized), {}) # type: ignore
5722
+
5723
+ return cast(JSON, deserialized) # type: ignore
5724
+
5725
+ @distributed_trace
5726
+ def list_notification_rules(
5727
+ self,
5728
+ *,
5729
+ limit: int = 1000,
5730
+ offset: int = 0,
5731
+ order_by: str = "id",
5732
+ include_disabled: bool = False,
5733
+ feature: Optional[List[str]] = None,
5734
+ **kwargs: Any
5735
+ ) -> List[JSON]:
5736
+ """List notification rules.
5737
+
5738
+ List all notification rules.
5739
+
5740
+ :keyword limit: Number of entries to return. Default value is 1000.
5741
+ :paramtype limit: int
5742
+ :keyword offset: Number of entries to skip. Default value is 0.
5743
+ :paramtype offset: int
5744
+ :keyword order_by: Order by field. Known values are: "id", "type", "createdAt", and
5745
+ "updatedAt". Default value is "id".
5746
+ :paramtype order_by: str
5747
+ :keyword include_disabled: Include disabled entries. Default value is False.
5748
+ :paramtype include_disabled: bool
5749
+ :keyword feature: Filtering by multiple features.
5750
+
5751
+ Usage: ``?feature=feature-1&feature=feature-2``. Default value is None.
5752
+ :paramtype feature: list[str]
5753
+ :return: list of JSON object
5754
+ :rtype: list[JSON]
5755
+ :raises ~azure.core.exceptions.HttpResponseError:
5756
+
5757
+ Example:
5758
+ .. code-block:: python
5759
+
5760
+ # response body for status code(s): 200
5761
+ response == [
5762
+ {}
5763
+ ]
5764
+ """
5765
+ error_map = {
5766
+ 404: ResourceNotFoundError,
5767
+ 409: ResourceExistsError,
5768
+ 304: ResourceNotModifiedError,
5769
+ 400: HttpResponseError,
5770
+ 401: lambda response: ClientAuthenticationError(response=response),
5771
+ }
5772
+ error_map.update(kwargs.pop("error_map", {}) or {})
5773
+
5774
+ _headers = kwargs.pop("headers", {}) or {}
5775
+ _params = kwargs.pop("params", {}) or {}
5776
+
5777
+ cls: ClsType[List[JSON]] = kwargs.pop("cls", None)
5778
+
5779
+ _request = build_list_notification_rules_request(
5780
+ limit=limit,
5781
+ offset=offset,
5782
+ order_by=order_by,
5783
+ include_disabled=include_disabled,
5784
+ feature=feature,
5785
+ headers=_headers,
5786
+ params=_params,
5787
+ )
5788
+ _request.url = self._client.format_url(_request.url)
5789
+
5790
+ _stream = False
5791
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
5792
+ _request, stream=_stream, **kwargs
5793
+ )
5794
+
5795
+ response = pipeline_response.http_response
5796
+
5797
+ if response.status_code not in [200]:
5798
+ if _stream:
5799
+ response.read() # Load the body in memory and close the socket
5800
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
5801
+ raise HttpResponseError(response=response)
5802
+
5803
+ if response.content:
5804
+ deserialized = response.json()
5805
+ else:
5806
+ deserialized = None
5807
+
5808
+ if cls:
5809
+ return cls(pipeline_response, cast(List[JSON], deserialized), {}) # type: ignore
5810
+
5811
+ return cast(List[JSON], deserialized) # type: ignore
5812
+
5813
+ @overload
5814
+ def create_notification_rule(self, body: JSON, *, content_type: str = "application/json", **kwargs: Any) -> JSON:
5815
+ """Create a notification rule.
5816
+
5817
+ Create a new notification rule.
5818
+
5819
+ :param body: The notification rule to create. Required.
5820
+ :type body: JSON
5821
+ :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
5822
+ Default value is "application/json".
5823
+ :paramtype content_type: str
5824
+ :return: JSON object
5825
+ :rtype: JSON
5826
+ :raises ~azure.core.exceptions.HttpResponseError:
5827
+
5828
+ Example:
5829
+ .. code-block:: python
5830
+
5831
+ # JSON input template you can fill out and use as your body input.
5832
+ body = {}
5833
+
5834
+ # response body for status code(s): 409
5835
+ response == {
5836
+ "detail": "str", # A human-readable explanation specific to this occurrence
5837
+ of the problem. Required.
5838
+ "status": 0, # The HTTP status code generated by the origin server for this
5839
+ occurrence of the problem. Required.
5840
+ "title": "str", # A a short, human-readable summary of the problem type.
5841
+ Required.
5842
+ "type": "str", # Type contains a URI that identifies the problem type.
5843
+ Required.
5844
+ "extensions": {
5845
+ "conflictingEntityId": "str" # The id of the conflicting entity.
5846
+ Required.
5847
+ },
5848
+ "instance": "str" # Optional. A URI reference that identifies the specific
5849
+ occurrence of the problem.
5850
+ }
5851
+ """
5852
+
5853
+ @overload
5854
+ def create_notification_rule(
5855
+ self, body: IO[bytes], *, content_type: str = "application/json", **kwargs: Any
5856
+ ) -> JSON:
5857
+ """Create a notification rule.
5858
+
5859
+ Create a new notification rule.
5860
+
5861
+ :param body: The notification rule to create. Required.
5862
+ :type body: IO[bytes]
5863
+ :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
5864
+ Default value is "application/json".
5865
+ :paramtype content_type: str
5866
+ :return: JSON object
5867
+ :rtype: JSON
5868
+ :raises ~azure.core.exceptions.HttpResponseError:
5869
+
5870
+ Example:
5871
+ .. code-block:: python
5872
+
5873
+ # response body for status code(s): 409
5874
+ response == {
5875
+ "detail": "str", # A human-readable explanation specific to this occurrence
5876
+ of the problem. Required.
5877
+ "status": 0, # The HTTP status code generated by the origin server for this
5878
+ occurrence of the problem. Required.
5879
+ "title": "str", # A a short, human-readable summary of the problem type.
5880
+ Required.
5881
+ "type": "str", # Type contains a URI that identifies the problem type.
5882
+ Required.
5883
+ "extensions": {
5884
+ "conflictingEntityId": "str" # The id of the conflicting entity.
5885
+ Required.
5886
+ },
5887
+ "instance": "str" # Optional. A URI reference that identifies the specific
5888
+ occurrence of the problem.
5889
+ }
5890
+ """
5891
+
5892
+ @distributed_trace
5893
+ def create_notification_rule(self, body: Union[JSON, IO[bytes]], **kwargs: Any) -> JSON:
5894
+ """Create a notification rule.
5895
+
5896
+ Create a new notification rule.
5897
+
5898
+ :param body: The notification rule to create. Is either a JSON type or a IO[bytes] type.
5899
+ Required.
5900
+ :type body: JSON or IO[bytes]
5901
+ :return: JSON object
5902
+ :rtype: JSON
5903
+ :raises ~azure.core.exceptions.HttpResponseError:
5904
+
5905
+ Example:
5906
+ .. code-block:: python
5907
+
5908
+ # JSON input template you can fill out and use as your body input.
5909
+ body = {}
5910
+
5911
+ # response body for status code(s): 409
5912
+ response == {
5913
+ "detail": "str", # A human-readable explanation specific to this occurrence
5914
+ of the problem. Required.
5915
+ "status": 0, # The HTTP status code generated by the origin server for this
5916
+ occurrence of the problem. Required.
5917
+ "title": "str", # A a short, human-readable summary of the problem type.
5918
+ Required.
5919
+ "type": "str", # Type contains a URI that identifies the problem type.
5920
+ Required.
5921
+ "extensions": {
5922
+ "conflictingEntityId": "str" # The id of the conflicting entity.
5923
+ Required.
5924
+ },
5925
+ "instance": "str" # Optional. A URI reference that identifies the specific
5926
+ occurrence of the problem.
5927
+ }
5928
+ """
5929
+ error_map = {
5930
+ 404: ResourceNotFoundError,
5931
+ 409: ResourceExistsError,
5932
+ 304: ResourceNotModifiedError,
5933
+ 400: HttpResponseError,
5934
+ 401: lambda response: ClientAuthenticationError(response=response),
5935
+ }
5936
+ error_map.update(kwargs.pop("error_map", {}) or {})
5937
+
5938
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
5939
+ _params = kwargs.pop("params", {}) or {}
5940
+
5941
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
5942
+ cls: ClsType[JSON] = kwargs.pop("cls", None)
5943
+
5944
+ content_type = content_type or "application/json"
5945
+ _json = None
5946
+ _content = None
5947
+ if isinstance(body, (IOBase, bytes)):
5948
+ _content = body
5949
+ else:
5950
+ _json = body
5951
+
5952
+ _request = build_create_notification_rule_request(
5953
+ content_type=content_type,
5954
+ json=_json,
5955
+ content=_content,
5956
+ headers=_headers,
5957
+ params=_params,
5958
+ )
5959
+ _request.url = self._client.format_url(_request.url)
5960
+
5961
+ _stream = False
5962
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
5963
+ _request, stream=_stream, **kwargs
5964
+ )
5965
+
5966
+ response = pipeline_response.http_response
5967
+
5968
+ if response.status_code not in [201, 409]:
5969
+ if _stream:
5970
+ response.read() # Load the body in memory and close the socket
5971
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
5972
+ raise HttpResponseError(response=response)
5973
+
5974
+ if response.status_code == 201:
5975
+ if response.content:
5976
+ deserialized = response.json()
5977
+ else:
5978
+ deserialized = None
5979
+
5980
+ if response.status_code == 409:
5981
+ if response.content:
5982
+ deserialized = response.json()
5983
+ else:
5984
+ deserialized = None
5985
+
5986
+ if cls:
5987
+ return cls(pipeline_response, cast(JSON, deserialized), {}) # type: ignore
5988
+
5989
+ return cast(JSON, deserialized) # type: ignore
5990
+
5991
+ @distributed_trace
5992
+ def get_notification_rule(self, rule_id: str, **kwargs: Any) -> JSON:
5993
+ """Get notification rule.
5994
+
5995
+ Get a notification rule by id.
5996
+
5997
+ :param rule_id: A unique ULID identifier for a notification rule. Required.
5998
+ :type rule_id: str
5999
+ :return: JSON object
6000
+ :rtype: JSON
6001
+ :raises ~azure.core.exceptions.HttpResponseError:
6002
+ """
6003
+ error_map = {
6004
+ 409: ResourceExistsError,
6005
+ 304: ResourceNotModifiedError,
6006
+ 401: lambda response: ClientAuthenticationError(response=response),
6007
+ 404: lambda response: ResourceNotFoundError(response=response),
6008
+ }
6009
+ error_map.update(kwargs.pop("error_map", {}) or {})
6010
+
6011
+ _headers = kwargs.pop("headers", {}) or {}
6012
+ _params = kwargs.pop("params", {}) or {}
6013
+
6014
+ cls: ClsType[JSON] = kwargs.pop("cls", None)
6015
+
6016
+ _request = build_get_notification_rule_request(
6017
+ rule_id=rule_id,
6018
+ headers=_headers,
6019
+ params=_params,
6020
+ )
6021
+ _request.url = self._client.format_url(_request.url)
6022
+
6023
+ _stream = False
6024
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
6025
+ _request, stream=_stream, **kwargs
6026
+ )
6027
+
6028
+ response = pipeline_response.http_response
6029
+
6030
+ if response.status_code not in [200]:
6031
+ if _stream:
6032
+ response.read() # Load the body in memory and close the socket
6033
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
6034
+ raise HttpResponseError(response=response)
6035
+
6036
+ if response.content:
6037
+ deserialized = response.json()
6038
+ else:
6039
+ deserialized = None
6040
+
6041
+ if cls:
6042
+ return cls(pipeline_response, cast(JSON, deserialized), {}) # type: ignore
6043
+
6044
+ return cast(JSON, deserialized) # type: ignore
6045
+
6046
+ @distributed_trace
6047
+ def delete_notification_rule( # pylint: disable=inconsistent-return-statements
6048
+ self, rule_id: str, **kwargs: Any
6049
+ ) -> None:
6050
+ """Delete a notification rule.
6051
+
6052
+ Delete notification rule by id.
6053
+
6054
+ :param rule_id: A unique ULID identifier for a notification rule. Required.
6055
+ :type rule_id: str
6056
+ :return: None
6057
+ :rtype: None
6058
+ :raises ~azure.core.exceptions.HttpResponseError:
6059
+ """
6060
+ error_map = {
6061
+ 409: ResourceExistsError,
6062
+ 304: ResourceNotModifiedError,
6063
+ 401: lambda response: ClientAuthenticationError(response=response),
6064
+ 404: lambda response: ResourceNotFoundError(response=response),
6065
+ }
6066
+ error_map.update(kwargs.pop("error_map", {}) or {})
6067
+
6068
+ _headers = kwargs.pop("headers", {}) or {}
6069
+ _params = kwargs.pop("params", {}) or {}
6070
+
6071
+ cls: ClsType[None] = kwargs.pop("cls", None)
6072
+
6073
+ _request = build_delete_notification_rule_request(
6074
+ rule_id=rule_id,
6075
+ headers=_headers,
6076
+ params=_params,
6077
+ )
6078
+ _request.url = self._client.format_url(_request.url)
6079
+
6080
+ _stream = False
6081
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
6082
+ _request, stream=_stream, **kwargs
6083
+ )
6084
+
6085
+ response = pipeline_response.http_response
6086
+
6087
+ if response.status_code not in [204]:
6088
+ if _stream:
6089
+ response.read() # Load the body in memory and close the socket
6090
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
6091
+ raise HttpResponseError(response=response)
6092
+
6093
+ if cls:
6094
+ return cls(pipeline_response, None, {}) # type: ignore
6095
+
6096
+ @overload
6097
+ def update_notification_rule(
6098
+ self, rule_id: str, body: JSON, *, content_type: str = "application/json", **kwargs: Any
6099
+ ) -> JSON:
6100
+ """Update a notification rule.
6101
+
6102
+ Update a notification rule by id.
6103
+
6104
+ :param rule_id: A unique ULID identifier for a notification rule. Required.
6105
+ :type rule_id: str
6106
+ :param body: The notification rule to update. Required.
6107
+ :type body: JSON
6108
+ :keyword content_type: Body Parameter content-type. Content type parameter for JSON body.
6109
+ Default value is "application/json".
6110
+ :paramtype content_type: str
6111
+ :return: JSON object
6112
+ :rtype: JSON
6113
+ :raises ~azure.core.exceptions.HttpResponseError:
6114
+
6115
+ Example:
6116
+ .. code-block:: python
6117
+
6118
+ # JSON input template you can fill out and use as your body input.
6119
+ body = {}
6120
+ """
6121
+
6122
+ @overload
6123
+ def update_notification_rule(
6124
+ self, rule_id: str, body: IO[bytes], *, content_type: str = "application/json", **kwargs: Any
6125
+ ) -> JSON:
6126
+ """Update a notification rule.
6127
+
6128
+ Update a notification rule by id.
6129
+
6130
+ :param rule_id: A unique ULID identifier for a notification rule. Required.
6131
+ :type rule_id: str
6132
+ :param body: The notification rule to update. Required.
6133
+ :type body: IO[bytes]
6134
+ :keyword content_type: Body Parameter content-type. Content type parameter for binary body.
6135
+ Default value is "application/json".
6136
+ :paramtype content_type: str
6137
+ :return: JSON object
6138
+ :rtype: JSON
6139
+ :raises ~azure.core.exceptions.HttpResponseError:
6140
+ """
6141
+
6142
+ @distributed_trace
6143
+ def update_notification_rule(self, rule_id: str, body: Union[JSON, IO[bytes]], **kwargs: Any) -> JSON:
6144
+ """Update a notification rule.
6145
+
6146
+ Update a notification rule by id.
6147
+
6148
+ :param rule_id: A unique ULID identifier for a notification rule. Required.
6149
+ :type rule_id: str
6150
+ :param body: The notification rule to update. Is either a JSON type or a IO[bytes] type.
6151
+ Required.
6152
+ :type body: JSON or IO[bytes]
6153
+ :return: JSON object
6154
+ :rtype: JSON
6155
+ :raises ~azure.core.exceptions.HttpResponseError:
6156
+
6157
+ Example:
6158
+ .. code-block:: python
6159
+
6160
+ # JSON input template you can fill out and use as your body input.
6161
+ body = {}
6162
+ """
6163
+ error_map = {
6164
+ 409: ResourceExistsError,
6165
+ 304: ResourceNotModifiedError,
6166
+ 401: lambda response: ClientAuthenticationError(response=response),
6167
+ 404: lambda response: ResourceNotFoundError(response=response),
6168
+ }
6169
+ error_map.update(kwargs.pop("error_map", {}) or {})
6170
+
6171
+ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
6172
+ _params = kwargs.pop("params", {}) or {}
6173
+
6174
+ content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None))
6175
+ cls: ClsType[JSON] = kwargs.pop("cls", None)
6176
+
6177
+ content_type = content_type or "application/json"
6178
+ _json = None
6179
+ _content = None
6180
+ if isinstance(body, (IOBase, bytes)):
6181
+ _content = body
6182
+ else:
6183
+ _json = body
6184
+
6185
+ _request = build_update_notification_rule_request(
6186
+ rule_id=rule_id,
6187
+ content_type=content_type,
6188
+ json=_json,
6189
+ content=_content,
6190
+ headers=_headers,
6191
+ params=_params,
6192
+ )
6193
+ _request.url = self._client.format_url(_request.url)
6194
+
6195
+ _stream = False
6196
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
6197
+ _request, stream=_stream, **kwargs
6198
+ )
6199
+
6200
+ response = pipeline_response.http_response
6201
+
6202
+ if response.status_code not in [200]:
6203
+ if _stream:
6204
+ response.read() # Load the body in memory and close the socket
6205
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
6206
+ raise HttpResponseError(response=response)
6207
+
6208
+ if response.content:
6209
+ deserialized = response.json()
6210
+ else:
6211
+ deserialized = None
6212
+
6213
+ if cls:
6214
+ return cls(pipeline_response, cast(JSON, deserialized), {}) # type: ignore
6215
+
6216
+ return cast(JSON, deserialized) # type: ignore
6217
+
6218
+ @distributed_trace
6219
+ def list_notification_events(
6220
+ self,
6221
+ *,
6222
+ limit: int = 1000,
6223
+ offset: int = 0,
6224
+ order_by: str = "id",
6225
+ feature: Optional[List[str]] = None,
6226
+ subject: Optional[List[str]] = None,
6227
+ **kwargs: Any
6228
+ ) -> List[JSON]:
6229
+ """List notification evens.
6230
+
6231
+ List all notification events.
6232
+
6233
+ :keyword limit: Number of entries to return. Default value is 1000.
6234
+ :paramtype limit: int
6235
+ :keyword offset: Number of entries to skip. Default value is 0.
6236
+ :paramtype offset: int
6237
+ :keyword order_by: Order by field. Known values are: "id" and "createdAt". Default value is
6238
+ "id".
6239
+ :paramtype order_by: str
6240
+ :keyword feature: Filtering by multiple features.
6241
+
6242
+ Usage: ``?feature=feature-1&feature=feature-2``. Default value is None.
6243
+ :paramtype feature: list[str]
6244
+ :keyword subject: Filtering by multiple subjects.
6245
+
6246
+ Usage: ``?subject=customer-1&subject=customer-2``. Default value is None.
6247
+ :paramtype subject: list[str]
6248
+ :return: list of JSON object
6249
+ :rtype: list[JSON]
6250
+ :raises ~azure.core.exceptions.HttpResponseError:
6251
+
6252
+ Example:
6253
+ .. code-block:: python
6254
+
6255
+ # response body for status code(s): 200
6256
+ response == [
6257
+ {
6258
+ "createdAt": "2020-02-20 00:00:00", # Timestamp when the
6259
+ notification event was created. Required.
6260
+ "deliveryStatus": [
6261
+ {
6262
+ "channel": {
6263
+ "id": "str", # A unique identifier for the
6264
+ notification channel. Required.
6265
+ "type": "str" # The type of the notification
6266
+ channel. Required. "WEBHOOK"
6267
+ },
6268
+ "state": "str", # Required. Known values are:
6269
+ "SUCCESS", "FAILED", and "SENDING".
6270
+ "updatedAt": "2020-02-20 00:00:00" # Required.
6271
+ }
6272
+ ],
6273
+ "id": "str", # A unique identifier for the notification event.
6274
+ Required.
6275
+ "payload": {},
6276
+ "rule": {
6277
+ "id": "str", # A unique identifier for the notification
6278
+ rule. Required.
6279
+ "type": "str" # The type of the notification event.
6280
+ Required. "entitlements.balance.threshold"
6281
+ }
6282
+ }
6283
+ ]
6284
+ """
6285
+ error_map = {
6286
+ 404: ResourceNotFoundError,
6287
+ 409: ResourceExistsError,
6288
+ 304: ResourceNotModifiedError,
6289
+ 400: HttpResponseError,
6290
+ 401: lambda response: ClientAuthenticationError(response=response),
6291
+ }
6292
+ error_map.update(kwargs.pop("error_map", {}) or {})
6293
+
6294
+ _headers = kwargs.pop("headers", {}) or {}
6295
+ _params = kwargs.pop("params", {}) or {}
6296
+
6297
+ cls: ClsType[List[JSON]] = kwargs.pop("cls", None)
6298
+
6299
+ _request = build_list_notification_events_request(
6300
+ limit=limit,
6301
+ offset=offset,
6302
+ order_by=order_by,
6303
+ feature=feature,
6304
+ subject=subject,
6305
+ headers=_headers,
6306
+ params=_params,
6307
+ )
6308
+ _request.url = self._client.format_url(_request.url)
6309
+
6310
+ _stream = False
6311
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
6312
+ _request, stream=_stream, **kwargs
6313
+ )
6314
+
6315
+ response = pipeline_response.http_response
6316
+
6317
+ if response.status_code not in [200]:
6318
+ if _stream:
6319
+ response.read() # Load the body in memory and close the socket
6320
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
6321
+ raise HttpResponseError(response=response)
6322
+
6323
+ if response.content:
6324
+ deserialized = response.json()
6325
+ else:
6326
+ deserialized = None
6327
+
6328
+ if cls:
6329
+ return cls(pipeline_response, cast(List[JSON], deserialized), {}) # type: ignore
6330
+
6331
+ return cast(List[JSON], deserialized) # type: ignore
6332
+
6333
+ @distributed_trace
6334
+ def get_notification_event(self, event_id: str, **kwargs: Any) -> JSON:
6335
+ """Get notification event.
6336
+
6337
+ Get a notification event by id.
6338
+
6339
+ :param event_id: A unique ULID identifier for a notification event. Required.
6340
+ :type event_id: str
6341
+ :return: JSON object
6342
+ :rtype: JSON
6343
+ :raises ~azure.core.exceptions.HttpResponseError:
6344
+ """
6345
+ error_map = {
6346
+ 409: ResourceExistsError,
6347
+ 304: ResourceNotModifiedError,
6348
+ 401: lambda response: ClientAuthenticationError(response=response),
6349
+ 404: lambda response: ResourceNotFoundError(response=response),
6350
+ }
6351
+ error_map.update(kwargs.pop("error_map", {}) or {})
6352
+
6353
+ _headers = kwargs.pop("headers", {}) or {}
6354
+ _params = kwargs.pop("params", {}) or {}
6355
+
6356
+ cls: ClsType[JSON] = kwargs.pop("cls", None)
6357
+
6358
+ _request = build_get_notification_event_request(
6359
+ event_id=event_id,
6360
+ headers=_headers,
6361
+ params=_params,
6362
+ )
6363
+ _request.url = self._client.format_url(_request.url)
6364
+
6365
+ _stream = False
6366
+ pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access
6367
+ _request, stream=_stream, **kwargs
6368
+ )
6369
+
6370
+ response = pipeline_response.http_response
6371
+
6372
+ if response.status_code not in [200]:
6373
+ if _stream:
6374
+ response.read() # Load the body in memory and close the socket
6375
+ map_error(status_code=response.status_code, response=response, error_map=error_map) # type: ignore
6376
+ raise HttpResponseError(response=response)
6377
+
6378
+ if response.content:
6379
+ deserialized = response.json()
6380
+ else:
6381
+ deserialized = None
6382
+
6383
+ if cls:
6384
+ return cls(pipeline_response, cast(JSON, deserialized), {}) # type: ignore
6385
+
6386
+ return cast(JSON, deserialized) # type: ignore