import datetime
from typing import Any , Dict , List , Type , TypeVar , Union
import attr
from dateutil.parser import isoparse
from ..models.method import Method
from ..models.uuid import Uuid
from ..types import UNSET , Unset
S = TypeVar ( "S" , bound = "ApiCallWithPrice" )
[docs] @attr . s ( auto_attribs = True )
class ApiCallWithPrice :
"""An API call with the price.
This is a join of the `ApiCall` and `ApiCallPrice` tables.""" # noqa: E501
completed_at : Union [ Unset , datetime . datetime ] = UNSET
created_at : Union [ Unset , datetime . datetime ] = UNSET
duration : Union [ Unset , int ] = UNSET
email : Union [ Unset , str ] = UNSET
endpoint : Union [ Unset , str ] = UNSET
id : Union [ Unset , str ] = UNSET
ip_address : Union [ Unset , str ] = UNSET
litterbox : Union [ Unset , bool ] = False
method : Union [ Unset , Method ] = UNSET
minutes : Union [ Unset , int ] = UNSET
origin : Union [ Unset , str ] = UNSET
price : Union [ Unset , float ] = UNSET
request_body : Union [ Unset , str ] = UNSET
request_query_params : Union [ Unset , str ] = UNSET
response_body : Union [ Unset , str ] = UNSET
started_at : Union [ Unset , datetime . datetime ] = UNSET
status_code : Union [ Unset , int ] = UNSET
stripe_invoice_item_id : Union [ Unset , str ] = UNSET
token : Union [ Unset , str ] = UNSET
updated_at : Union [ Unset , datetime . datetime ] = UNSET
user_agent : Union [ Unset , str ] = UNSET
user_id : Union [ Unset , str ] = UNSET
additional_properties : Dict [ str , Any ] = attr . ib ( init = False , factory = dict )
[docs] def to_dict ( self ) -> Dict [ str , Any ]:
completed_at : Union [ Unset , str ] = UNSET
if not isinstance ( self . completed_at , Unset ):
completed_at = self . completed_at . isoformat ()
created_at : Union [ Unset , str ] = UNSET
if not isinstance ( self . created_at , Unset ):
created_at = self . created_at . isoformat ()
duration = self . duration
email = self . email
endpoint = self . endpoint
id = self . id
ip_address = self . ip_address
litterbox = self . litterbox
if not isinstance ( self . method , Unset ):
method = self . method
minutes = self . minutes
origin = self . origin
price = self . price
request_body = self . request_body
request_query_params = self . request_query_params
response_body = self . response_body
started_at : Union [ Unset , str ] = UNSET
if not isinstance ( self . started_at , Unset ):
started_at = self . started_at . isoformat ()
status_code = self . status_code
stripe_invoice_item_id = self . stripe_invoice_item_id
token = self . token
updated_at : Union [ Unset , str ] = UNSET
if not isinstance ( self . updated_at , Unset ):
updated_at = self . updated_at . isoformat ()
user_agent = self . user_agent
user_id = self . user_id
field_dict : Dict [ str , Any ] = {}
field_dict . update ( self . additional_properties )
field_dict . update ({})
if completed_at is not UNSET :
field_dict [ "completed_at" ] = completed_at
if created_at is not UNSET :
field_dict [ "created_at" ] = created_at
if duration is not UNSET :
field_dict [ "duration" ] = duration
if email is not UNSET :
field_dict [ "email" ] = email
if endpoint is not UNSET :
field_dict [ "endpoint" ] = endpoint
if id is not UNSET :
field_dict [ "id" ] = id
if ip_address is not UNSET :
field_dict [ "ip_address" ] = ip_address
if litterbox is not UNSET :
field_dict [ "litterbox" ] = litterbox
if method is not UNSET :
field_dict [ "method" ] = method
if minutes is not UNSET :
field_dict [ "minutes" ] = minutes
if origin is not UNSET :
field_dict [ "origin" ] = origin
if price is not UNSET :
field_dict [ "price" ] = price
if request_body is not UNSET :
field_dict [ "request_body" ] = request_body
if request_query_params is not UNSET :
field_dict [ "request_query_params" ] = request_query_params
if response_body is not UNSET :
field_dict [ "response_body" ] = response_body
if started_at is not UNSET :
field_dict [ "started_at" ] = started_at
if status_code is not UNSET :
field_dict [ "status_code" ] = status_code
if stripe_invoice_item_id is not UNSET :
field_dict [ "stripe_invoice_item_id" ] = stripe_invoice_item_id
if token is not UNSET :
field_dict [ "token" ] = token
if updated_at is not UNSET :
field_dict [ "updated_at" ] = updated_at
if user_agent is not UNSET :
field_dict [ "user_agent" ] = user_agent
if user_id is not UNSET :
field_dict [ "user_id" ] = user_id
return field_dict
[docs] @classmethod
def from_dict ( cls : Type [ S ], src_dict : Dict [ str , Any ]) -> S :
d = src_dict . copy ()
_completed_at = d . pop ( "completed_at" , UNSET )
completed_at : Union [ Unset , datetime . datetime ]
if isinstance ( _completed_at , Unset ):
completed_at = UNSET
else :
completed_at = isoparse ( _completed_at )
_created_at = d . pop ( "created_at" , UNSET )
created_at : Union [ Unset , datetime . datetime ]
if isinstance ( _created_at , Unset ):
created_at = UNSET
else :
created_at = isoparse ( _created_at )
duration = d . pop ( "duration" , UNSET )
email = d . pop ( "email" , UNSET )
endpoint = d . pop ( "endpoint" , UNSET )
_id = d . pop ( "id" , UNSET )
id : Union [ Unset , Uuid ]
if isinstance ( _id , Unset ):
id = UNSET
else :
id = Uuid ( _id )
ip_address = d . pop ( "ip_address" , UNSET )
litterbox = d . pop ( "litterbox" , UNSET )
_method = d . pop ( "method" , UNSET )
method : Union [ Unset , Method ]
if isinstance ( _method , Unset ):
method = UNSET
else :
method = _method # type: ignore[arg-type]
minutes = d . pop ( "minutes" , UNSET )
origin = d . pop ( "origin" , UNSET )
price = d . pop ( "price" , UNSET )
request_body = d . pop ( "request_body" , UNSET )
request_query_params = d . pop ( "request_query_params" , UNSET )
response_body = d . pop ( "response_body" , UNSET )
_started_at = d . pop ( "started_at" , UNSET )
started_at : Union [ Unset , datetime . datetime ]
if isinstance ( _started_at , Unset ):
started_at = UNSET
else :
started_at = isoparse ( _started_at )
status_code = d . pop ( "status_code" , UNSET )
stripe_invoice_item_id = d . pop ( "stripe_invoice_item_id" , UNSET )
_token = d . pop ( "token" , UNSET )
token : Union [ Unset , Uuid ]
if isinstance ( _token , Unset ):
token = UNSET
else :
token = Uuid ( _token )
_updated_at = d . pop ( "updated_at" , UNSET )
updated_at : Union [ Unset , datetime . datetime ]
if isinstance ( _updated_at , Unset ):
updated_at = UNSET
else :
updated_at = isoparse ( _updated_at )
user_agent = d . pop ( "user_agent" , UNSET )
user_id = d . pop ( "user_id" , UNSET )
api_call_with_price = cls (
completed_at = completed_at ,
created_at = created_at ,
duration = duration ,
email = email ,
endpoint = endpoint ,
id = id ,
ip_address = ip_address ,
litterbox = litterbox ,
method = method ,
minutes = minutes ,
origin = origin ,
price = price ,
request_body = request_body ,
request_query_params = request_query_params ,
response_body = response_body ,
started_at = started_at ,
status_code = status_code ,
stripe_invoice_item_id = stripe_invoice_item_id ,
token = token ,
updated_at = updated_at ,
user_agent = user_agent ,
user_id = user_id ,
)
api_call_with_price . additional_properties = d
return api_call_with_price
@property
def additional_keys ( self ) -> List [ str ]:
return list ( self . additional_properties . keys ())
[docs] def __getitem__ ( self , key : str ) -> Any :
return self . additional_properties [ key ]
[docs] def __setitem__ ( self , key : str , value : Any ) -> None :
self . additional_properties [ key ] = value
[docs] def __delitem__ ( self , key : str ) -> None :
del self . additional_properties [ key ]
[docs] def __contains__ ( self , key : str ) -> bool :
return key in self . additional_properties
Copy to clipboard