wxc_sdk.as_rest module
REST session for Webex API requests
- class wxc_sdk.as_rest.AsErrorMessage(*, description: str, code: int | None = None, errorCode: int | None = None)[source]
Bases:
ApiModel
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
__init__ uses __pydantic_self__ instead of the more common self for the first arg to allow self as a field name.
- description: str
- code: int | None
- error_code: int | None
- model_config: ClassVar[ConfigDict] = {'alias_generator': <function to_camel>, 'extra': 'forbid', 'populate_by_name': True, 'use_enum_values': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'code': FieldInfo(annotation=Union[int, NoneType], required=False, alias='code', alias_priority=1), 'description': FieldInfo(annotation=str, required=True, alias='description', alias_priority=1), 'error_code': FieldInfo(annotation=Union[int, NoneType], required=False, alias='errorCode', alias_priority=1)}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- class wxc_sdk.as_rest.AsSingleError(*, key: str | None = None, message: list[AsErrorMessage])[source]
Bases:
ApiModel
Representation of single error in the body of an HTTP error response from Webex
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
__init__ uses __pydantic_self__ instead of the more common self for the first arg to allow self as a field name.
- key: str | None
- message: list[AsErrorMessage]
- property code: int | None
Error code or None
- Returns:
error code
- property description: int | None
Description or None
- Returns:
description
- model_config: ClassVar[ConfigDict] = {'alias_generator': <function to_camel>, 'extra': 'forbid', 'populate_by_name': True, 'use_enum_values': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'key': FieldInfo(annotation=Union[str, NoneType], required=False, alias='key', alias_priority=1), 'message': FieldInfo(annotation=list[AsErrorMessage], required=True, alias='message', alias_priority=1)}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- class wxc_sdk.as_rest.AsErrorDetail(*, error: list[AsSingleError] | None = None, errorCode: int | None = None, trackingId: str | None = None, message: str | None = None, errors: list[AsErrorMessage] | None = None)[source]
Bases:
ApiModel
Representation of error details in the body of an HTTP error response from Webex. There are several variants of error responses. This model tries to generalize them
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
__init__ uses __pydantic_self__ instead of the more common self for the first arg to allow self as a field name.
- error: list[AsSingleError] | None
- error_code: int | None
- tracking_id: str | None
- message: str | None
- errors: list[AsErrorMessage] | None
- property description: str
error description
- property code: int | None
error code
- model_config: ClassVar[ConfigDict] = {'alias_generator': <function to_camel>, 'extra': 'forbid', 'populate_by_name': True, 'use_enum_values': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'error': FieldInfo(annotation=Union[list[AsSingleError], NoneType], required=False, alias='error', alias_priority=1), 'error_code': FieldInfo(annotation=Union[int, NoneType], required=False, alias='errorCode', alias_priority=1), 'errors': FieldInfo(annotation=Union[list[AsErrorMessage], NoneType], required=False, alias='errors', alias_priority=1), 'message': FieldInfo(annotation=Union[str, NoneType], required=False, alias='message', alias_priority=1), 'tracking_id': FieldInfo(annotation=Union[str, NoneType], required=False, alias='trackingId', alias_priority=1)}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- exception wxc_sdk.as_rest.AsRestError(request_info: RequestInfo, history: Tuple[ClientResponse, ...], *, code: int | None = None, status: int | None = None, message: str = '', headers: Mapping[str | istr, str] | CIMultiDict | CIMultiDictProxy | None = None, detail: Any | None = None)[source]
Bases:
ClientResponseError
A REST error
- wxc_sdk.as_rest.as_dump_response(*, response: ClientResponse, response_data=None, data=None, json=None, file: TextIOBase | None = None, dump_log: Logger | None = None, diff_ns: int | None = None)[source]
Dump response object to log file
- Parameters:
response – HTTP request response
response_data –
data –
json –
file (TextIOBase) – stream to dump to
dump_log (logging.Logger) – logger to dump to
diff_ns (int) – time the request took (in ns)
- class wxc_sdk.as_rest.AsRestSession(*, tokens: Tokens, concurrent_requests: int, retry_429: bool = True)[source]
Bases:
ClientSession
- REST session used for API requests:
includes an Authorization header in reach request
implements retries on 429
loads deserializes JSON data if needed
- BASE = 'https://webexapis.com/v1'
base URL for all Webex API requests
- property access_token: str
access token used for all requests
- Returns:
access token
- Return type:
str
- async rest_get(*args, **kwargs) str | dict [source]
GET request
- Parameters:
args –
kwargs –
- Returns:
deserialized JSON content or body text
- async rest_post(*args, **kwargs) str | dict [source]
POST request
- Parameters:
args –
kwargs –
- Returns:
deserialized JSON content or body text
- async rest_put(*args, **kwargs) str | dict [source]
PUT request
- Parameters:
args –
kwargs –
- Returns:
deserialized JSON content or body text
- async follow_pagination(url: str, model: Type[ApiModel] | None = None, params: dict | None = None, item_key: str | None = None, **kwargs) AsyncGenerator[ApiModel, None, None] [source]
Handling RFC5988 pagination of list requests. Generator of parsed objects
- Parameters:
url (str) – start url for 1st GET
model (ApiModel) – data type to return
params (Optional[dict]) – URL parameters, optional
item_key (str) – key to list of values
- Returns:
yields parsed objects