U wiO@s8dZddlmZddlZddlmZGdddeZdS)a InfluxDB OSS API Service. The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. # noqa: E501 OpenAPI spec version: 2.0.0 Generated by: https://openapi-generator.tech )absolute_importN) _BaseServicecsBeZdZdZdMfdd ZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?d@Z"dAdBZ#dCdDZ$dEdFZ%dGdHZ&dIdJZ'dKdLZ(Z)S)NNotificationEndpointsServicezNOTE: This class is auto generated by OpenAPI Generator. Ref: https://openapi-generator.tech Do not edit the class manually. Ncst|dS)z>NotificationEndpointsService - a operation defined in OpenAPI.N)super__init__)self api_client __class__g/opt/alt/python38/lib/python3.8/site-packages/influxdb_client/service/notification_endpoints_service.pyrsz%NotificationEndpointsService.__init__cKs6d|d<|dr |j|f|S|j|f|}|SdS)aNAdd a notification endpoint. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.create_notification_endpoint(post_notification_endpoint, async_req=True) >>> result = thread.get() :param async_req bool :param PostNotificationEndpoint post_notification_endpoint: Notification endpoint to create (required) :return: NotificationEndpoint If the method is called asynchronously, returns the request thread. T_return_http_data_only async_reqN)get+create_notification_endpoint_with_http_info)rpost_notification_endpointkwargsdatar r r create_notification_endpoint s  z9NotificationEndpointsService.create_notification_endpointcKsf|j|f|\}}}}}|jjdd||||gidg|d|d|dd|di|d d d S) a]Add a notification endpoint. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.create_notification_endpoint_with_http_info(post_notification_endpoint, async_req=True) >>> result = thread.get() :param async_req bool :param PostNotificationEndpoint post_notification_endpoint: Notification endpoint to create (required) :return: NotificationEndpoint If the method is called asynchronously, returns the request thread. /api/v2/notificationEndpointsPOSTNotificationEndpointrr _preload_contentT_request_timeout urlopen_kwN bodyZ post_paramsfilesZ response_typeZ auth_settingsrr rrZcollection_formatsr%_create_notification_endpoint_preparercall_apirrrrlocal_var_params path_params query_params header_params body_paramsr r r r5s(   zHNotificationEndpointsService.create_notification_endpoint_with_http_infocsl|j|f|\}}}}}|jjdd||||gidg|d|d|dd|di|d d d Id HS) axAdd a notification endpoint. This method makes an asynchronous HTTP request. :param async_req bool :param PostNotificationEndpoint post_notification_endpoint: Notification endpoint to create (required) :return: NotificationEndpoint If the method is called asynchronously, returns the request thread. rrrrr rTrrNrrr!r r r "create_notification_endpoint_asyncWs(   z?NotificationEndpointsService.create_notification_endpoint_asyncc Kst}dg}|d||d|ks.|ddkr6tdi}g}i}d}d|krV|d}|jdg|d<|jdg|d<|||||fS)NrrzgMissing the required parameter `post_notification_endpoint` when calling `create_notification_endpoint`application/jsonAccept Content-Typelocals_check_operation_params ValueErrorrselect_header_acceptZselect_header_content_type) rrrr" all_paramsr#r$r%r&r r r rvs( zBNotificationEndpointsService._create_notification_endpoint_preparecKs6d|d<|dr |j|f|S|j|f|}|SdS)aLDelete a notification endpoint. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.delete_notification_endpoints_id(endpoint_id, async_req=True) >>> result = thread.get() :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param str zap_trace_span: OpenTracing span context :return: None If the method is called asynchronously, returns the request thread. Tr rN)r/delete_notification_endpoints_id_with_http_infor endpoint_idrrr r r delete_notification_endpoints_ids  z=NotificationEndpointsService.delete_notification_endpoints_idcKsf|j|f|\}}}}}|jjdd||||gidg|d|d|dd|di|d dd S) a[Delete a notification endpoint. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.delete_notification_endpoints_id_with_http_info(endpoint_id, async_req=True) >>> result = thread.get() :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param str zap_trace_span: OpenTracing span context :return: None If the method is called asynchronously, returns the request thread. */api/v2/notificationEndpoints/{endpointID}DELETENrr rTrrr)_delete_notification_endpoints_id_preparerr rrr3rr"r#r$r%r&r r r r1s(   zLNotificationEndpointsService.delete_notification_endpoints_id_with_http_infocsl|j|f|\}}}}}|jjdd||||gidg|d|d|dd|di|d dd IdHS) aDelete a notification endpoint. This method makes an asynchronous HTTP request. :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param str zap_trace_span: OpenTracing span context :return: None If the method is called asynchronously, returns the request thread. r5r6Nrr rTrrrr7r9r r r &delete_notification_endpoints_id_asyncs(   zCNotificationEndpointsService.delete_notification_endpoints_id_asyncc Kst}ddg}|d||d|ks0|ddkr8tdi}d|krP|d|d<g}i}d|krl|d|d<d}|jdg|d<|||||fS) Nr3zap_trace_spanr4z\Missing the required parameter `endpoint_id` when calling `delete_notification_endpoints_id` endpointIDZap-Trace-Spanr(r)r,r-r.rr/ rr3rr"r0r#r$r%r&r r r r8s&   zFNotificationEndpointsService._delete_notification_endpoints_id_preparecKs:d|d<|dr"|j||f|S|j||f|}|SdS)aDelete a label from a notification endpoint. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.delete_notification_endpoints_id_labels_id(endpoint_id, label_id, async_req=True) >>> result = thread.get() :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param str label_id: The ID of the label to delete. (required) :param str zap_trace_span: OpenTracing span context :return: None If the method is called asynchronously, returns the request thread. Tr rN)r9delete_notification_endpoints_id_labels_id_with_http_info)rr3label_idrrr r r *delete_notification_endpoints_id_labels_ids  zGNotificationEndpointsService.delete_notification_endpoints_id_labels_idc Ksh|j||f|\}}}}}|jjdd||||gidg|d|d|dd|di|d dd S) aDelete a label from a notification endpoint. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.delete_notification_endpoints_id_labels_id_with_http_info(endpoint_id, label_id, async_req=True) >>> result = thread.get() :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param str label_id: The ID of the label to delete. (required) :param str zap_trace_span: OpenTracing span context :return: None If the method is called asynchronously, returns the request thread. ;/api/v2/notificationEndpoints/{endpointID}/labels/{labelID}r6Nrr rTrrr3_delete_notification_endpoints_id_labels_id_preparerr r rr3rArr"r#r$r%r&r r r r@s(   zVNotificationEndpointsService.delete_notification_endpoints_id_labels_id_with_http_infoc sn|j||f|\}}}}}|jjdd||||gidg|d|d|dd|di|d dd IdHS) aDelete a label from a notification endpoint. This method makes an asynchronous HTTP request. :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param str label_id: The ID of the label to delete. (required) :param str zap_trace_span: OpenTracing span context :return: None If the method is called asynchronously, returns the request thread. rCr6Nrr rTrrrrDrFr r r 0delete_notification_endpoints_id_labels_id_asyncBs(   zMNotificationEndpointsService.delete_notification_endpoints_id_labels_id_asyncc Kst}dddg}|d||d|ks2|ddkr:tdd|ksN|ddkrVtdi}d|krn|d|d<d|kr|d|d<g}i}d|kr|d|d <d} |jd g|d <||||| fS) Nr3rAr;rBzfMissing the required parameter `endpoint_id` when calling `delete_notification_endpoints_id_labels_id`zcMissing the required parameter `label_id` when calling `delete_notification_endpoints_id_labels_id`r<ZlabelIDr=r(r)r>) rr3rArr"r0r#r$r%r&r r r rEcs2      zPNotificationEndpointsService._delete_notification_endpoints_id_labels_id_preparecKs6d|d<|dr |j|f|S|j|f|}|SdS)aList all notification endpoints. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.get_notification_endpoints(org_id, async_req=True) >>> result = thread.get() :param async_req bool :param str org_id: Only show notification endpoints that belong to specific organization ID. (required) :param str zap_trace_span: OpenTracing span context :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). :param int limit: Limits the number of records returned. Default is `20`. :return: NotificationEndpoints If the method is called asynchronously, returns the request thread. Tr rN)r)get_notification_endpoints_with_http_info)rorg_idrrr r r get_notification_endpointss  z7NotificationEndpointsService.get_notification_endpointscKsf|j|f|\}}}}}|jjdd||||gidg|d|d|dd|di|d d d S) aList all notification endpoints. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.get_notification_endpoints_with_http_info(org_id, async_req=True) >>> result = thread.get() :param async_req bool :param str org_id: Only show notification endpoints that belong to specific organization ID. (required) :param str zap_trace_span: OpenTracing span context :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). :param int limit: Limits the number of records returned. Default is `20`. :return: NotificationEndpoints If the method is called asynchronously, returns the request thread. rGETNotificationEndpointsrr rTrrNr#_get_notification_endpoints_preparerr rrrIrr"r#r$r%r&r r r rHs(   zFNotificationEndpointsService.get_notification_endpoints_with_http_infocsl|j|f|\}}}}}|jjdd||||gidg|d|d|dd|di|d d d Id HS) aList all notification endpoints. This method makes an asynchronous HTTP request. :param async_req bool :param str org_id: Only show notification endpoints that belong to specific organization ID. (required) :param str zap_trace_span: OpenTracing span context :param int offset: The offset for pagination. The number of records to skip. For more information about pagination parameters, see [Pagination](https://docs.influxdata.com/influxdb/latest/api/#tag/Pagination). :param int limit: Limits the number of records returned. Default is `20`. :return: NotificationEndpoints If the method is called asynchronously, returns the request thread. rrKrLrr rTrrNrrMrOr r r get_notification_endpoints_asyncs(   z=NotificationEndpointsService.get_notification_endpoints_asyncc Ks"t}ddddg}|d||d|ks4|ddkr>> thread = api.get_notification_endpoints_id(endpoint_id, async_req=True) >>> result = thread.get() :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param str zap_trace_span: OpenTracing span context :return: NotificationEndpoint If the method is called asynchronously, returns the request thread. Tr rN)r,get_notification_endpoints_id_with_http_infor2r r r get_notification_endpoints_ids  z:NotificationEndpointsService.get_notification_endpoints_idcKsf|j|f|\}}}}}|jjdd||||gidg|d|d|dd|di|d d d S) ajRetrieve a notification endpoint. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.get_notification_endpoints_id_with_http_info(endpoint_id, async_req=True) >>> result = thread.get() :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param str zap_trace_span: OpenTracing span context :return: NotificationEndpoint If the method is called asynchronously, returns the request thread. r5rKrrr rTrrNr&_get_notification_endpoints_id_preparerr rr9r r r rVs(   zINotificationEndpointsService.get_notification_endpoints_id_with_http_infocsl|j|f|\}}}}}|jjdd||||gidg|d|d|dd|di|d d d Id HS) aRetrieve a notification endpoint. This method makes an asynchronous HTTP request. :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param str zap_trace_span: OpenTracing span context :return: NotificationEndpoint If the method is called asynchronously, returns the request thread. r5rKrrr rTrrNrrXr9r r r #get_notification_endpoints_id_asyncAs(   z@NotificationEndpointsService.get_notification_endpoints_id_asyncc Kst}ddg}|d||d|ks0|ddkr8tdi}d|krP|d|d<g}i}d|krl|d|d<d}|jdg|d<|||||fS) Nr3r;rWzYMissing the required parameter `endpoint_id` when calling `get_notification_endpoints_id`r<r=r(r)r>r?r r r rYas&   zCNotificationEndpointsService._get_notification_endpoints_id_preparecKs6d|d<|dr |j|f|S|j|f|}|SdS)agList all labels for a notification endpoint. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.get_notification_endpoints_id_labels(endpoint_id, async_req=True) >>> result = thread.get() :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param str zap_trace_span: OpenTracing span context :return: LabelsResponse If the method is called asynchronously, returns the request thread. Tr rN)r3get_notification_endpoints_id_labels_with_http_infor2r r r $get_notification_endpoints_id_labels|s  zANotificationEndpointsService.get_notification_endpoints_id_labelscKsf|j|f|\}}}}}|jjdd||||gidg|d|d|dd|di|d d d S) avList all labels for a notification endpoint. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.get_notification_endpoints_id_labels_with_http_info(endpoint_id, async_req=True) >>> result = thread.get() :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param str zap_trace_span: OpenTracing span context :return: LabelsResponse If the method is called asynchronously, returns the request thread. 1/api/v2/notificationEndpoints/{endpointID}/labelsrKLabelsResponserr rTrrNr-_get_notification_endpoints_id_labels_preparerr rr9r r r r[s(   zPNotificationEndpointsService.get_notification_endpoints_id_labels_with_http_infocsl|j|f|\}}}}}|jjdd||||gidg|d|d|dd|di|d d d Id HS) aList all labels for a notification endpoint. This method makes an asynchronous HTTP request. :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param str zap_trace_span: OpenTracing span context :return: LabelsResponse If the method is called asynchronously, returns the request thread. r]rKr^rr rTrrNrr_r9r r r *get_notification_endpoints_id_labels_asyncs(   zGNotificationEndpointsService.get_notification_endpoints_id_labels_asyncc Kst}ddg}|d||d|ks0|ddkr8tdi}d|krP|d|d<g}i}d|krl|d|d<d}|jdg|d<|||||fS) Nr3r;r\z`Missing the required parameter `endpoint_id` when calling `get_notification_endpoints_id_labels`r<r=r(r)r>r?r r r r`s&   zJNotificationEndpointsService._get_notification_endpoints_id_labels_preparecKs:d|d<|dr"|j||f|S|j||f|}|SdS)aUpdate a notification endpoint. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.patch_notification_endpoints_id(endpoint_id, notification_endpoint_update, async_req=True) >>> result = thread.get() :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param NotificationEndpointUpdate notification_endpoint_update: Check update to apply (required) :param str zap_trace_span: OpenTracing span context :return: NotificationEndpoint If the method is called asynchronously, returns the request thread. Tr rN)r.patch_notification_endpoints_id_with_http_info)rr3notification_endpoint_updaterrr r r patch_notification_endpoints_ids  z>> thread = api.patch_notification_endpoints_id_with_http_info(endpoint_id, notification_endpoint_update, async_req=True) >>> result = thread.get() :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param NotificationEndpointUpdate notification_endpoint_update: Check update to apply (required) :param str zap_trace_span: OpenTracing span context :return: NotificationEndpoint If the method is called asynchronously, returns the request thread. r5PATCHrrr rTrrNr(_patch_notification_endpoints_id_preparerr r rr3rcrr"r#r$r%r&r r r rbs(   zKNotificationEndpointsService.patch_notification_endpoints_id_with_http_infoc sn|j||f|\}}}}}|jjdd||||gidg|d|d|dd|di|d d d Id HS) aUpdate a notification endpoint. This method makes an asynchronous HTTP request. :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param NotificationEndpointUpdate notification_endpoint_update: Check update to apply (required) :param str zap_trace_span: OpenTracing span context :return: NotificationEndpoint If the method is called asynchronously, returns the request thread. r5rerrr rTrrNrrfrhr r r %patch_notification_endpoints_id_async+s(   zBNotificationEndpointsService.patch_notification_endpoints_id_asyncc Kst}dddg}|d||d|ks2|ddkr:tdd|ksN|ddkrVtdi}d|krn|d|d<g}i}d|kr|d|d<d} d|kr|d} |jd g|d <|jd g|d <||||| fS) Nr3rcr;rdz[Missing the required parameter `endpoint_id` when calling `patch_notification_endpoints_id`zlMissing the required parameter `notification_endpoint_update` when calling `patch_notification_endpoints_id`r<r=r(r)r*r+) rr3rcrr"r0r#r$r%r&r r r rgLs8     zENotificationEndpointsService._patch_notification_endpoints_id_preparecKs:d|d<|dr"|j||f|S|j||f|}|SdS)aAdd a label to a notification endpoint. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.post_notification_endpoint_id_labels(endpoint_id, label_mapping, async_req=True) >>> result = thread.get() :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param LabelMapping label_mapping: Label to add (required) :param str zap_trace_span: OpenTracing span context :return: LabelResponse If the method is called asynchronously, returns the request thread. Tr rN)r3post_notification_endpoint_id_labels_with_http_info)rr3 label_mappingrrr r r $post_notification_endpoint_id_labelsqs  zANotificationEndpointsService.post_notification_endpoint_id_labelsc Ksh|j||f|\}}}}}|jjdd||||gidg|d|d|dd|di|d d d S) aAdd a label to a notification endpoint. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.post_notification_endpoint_id_labels_with_http_info(endpoint_id, label_mapping, async_req=True) >>> result = thread.get() :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param LabelMapping label_mapping: Label to add (required) :param str zap_trace_span: OpenTracing span context :return: LabelResponse If the method is called asynchronously, returns the request thread. r]r LabelResponserr rTrrNr-_post_notification_endpoint_id_labels_preparerr r rr3rkrr"r#r$r%r&r r r rjs(   zPNotificationEndpointsService.post_notification_endpoint_id_labels_with_http_infoc sn|j||f|\}}}}}|jjdd||||gidg|d|d|dd|di|d d d Id HS) aAdd a label to a notification endpoint. This method makes an asynchronous HTTP request. :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param LabelMapping label_mapping: Label to add (required) :param str zap_trace_span: OpenTracing span context :return: LabelResponse If the method is called asynchronously, returns the request thread. r]rrmrr rTrrNrrnrpr r r *post_notification_endpoint_id_labels_asyncs(   zGNotificationEndpointsService.post_notification_endpoint_id_labels_asyncc Kst}dddg}|d||d|ks2|ddkr:tdd|ksN|ddkrVtdi}d|krn|d|d<g}i}d|kr|d|d<d} d|kr|d} |jd g|d <|jd g|d <||||| fS) Nr3rkr;rlz`Missing the required parameter `endpoint_id` when calling `post_notification_endpoint_id_labels`zbMissing the required parameter `label_mapping` when calling `post_notification_endpoint_id_labels`r<r=r(r)r*r+) rr3rkrr"r0r#r$r%r&r r r ros8     zJNotificationEndpointsService._post_notification_endpoint_id_labels_preparecKs:d|d<|dr"|j||f|S|j||f|}|SdS)aUpdate a notification endpoint. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.put_notification_endpoints_id(endpoint_id, notification_endpoint, async_req=True) >>> result = thread.get() :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param NotificationEndpoint notification_endpoint: A new notification endpoint to replace the existing endpoint with (required) :param str zap_trace_span: OpenTracing span context :return: NotificationEndpoint If the method is called asynchronously, returns the request thread. Tr rN)r,put_notification_endpoints_id_with_http_info)rr3notification_endpointrrr r r put_notification_endpoints_ids  z:NotificationEndpointsService.put_notification_endpoints_idc Ksh|j||f|\}}}}}|jjdd||||gidg|d|d|dd|di|d d d S) aUpdate a notification endpoint. This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.put_notification_endpoints_id_with_http_info(endpoint_id, notification_endpoint, async_req=True) >>> result = thread.get() :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param NotificationEndpoint notification_endpoint: A new notification endpoint to replace the existing endpoint with (required) :param str zap_trace_span: OpenTracing span context :return: NotificationEndpoint If the method is called asynchronously, returns the request thread. r5PUTrrr rTrrNr&_put_notification_endpoints_id_preparerr r rr3rsrr"r#r$r%r&r r r rr s(   zINotificationEndpointsService.put_notification_endpoints_id_with_http_infoc sn|j||f|\}}}}}|jjdd||||gidg|d|d|dd|di|d d d Id HS) aUpdate a notification endpoint. This method makes an asynchronous HTTP request. :param async_req bool :param str endpoint_id: The notification endpoint ID. (required) :param NotificationEndpoint notification_endpoint: A new notification endpoint to replace the existing endpoint with (required) :param str zap_trace_span: OpenTracing span context :return: NotificationEndpoint If the method is called asynchronously, returns the request thread. r5rurrr rTrrNrrvrxr r r #put_notification_endpoints_id_async-s(   z@NotificationEndpointsService.put_notification_endpoints_id_asyncc Kst}dddg}|d||d|ks2|ddkr:tdd|ksN|ddkrVtdi}d|krn|d|d<g}i}d|kr|d|d<d} d|kr|d} |jd g|d <|jd g|d <||||| fS) Nr3rsr;rtzYMissing the required parameter `endpoint_id` when calling `put_notification_endpoints_id`zcMissing the required parameter `notification_endpoint` when calling `put_notification_endpoints_id`r<r=r(r)r*r+) rr3rsrr"r0r#r$r%r&r r r rwNs8     zCNotificationEndpointsService._put_notification_endpoints_id_prepare)N)*__name__ __module__ __qualname____doc__rrrr'rr4r1r:r8rBr@rGrErJrHrPrNrWrVrZrYr\r[rar`rdrbrirgrlrjrqrortrrryrw __classcell__r r r r rsL"# $!!%"%# # $!%$!%$!r)r} __future__rreZ%influxdb_client.service._base_servicerrr r r r s