diff --git a/pyproject.toml b/pyproject.toml index c8966ba..4583e89 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "qcs-api-client" -version = "0.25.5" +version = "0.26.2-dev.20" description = "A client library for accessing the Rigetti QCS API" license = "Apache-2.0" repository = "https://github.com/rigetti/qcs-api-client-python" diff --git a/qcs_api_client/api/account/activate_user.py b/qcs_api_client/api/account/activate_user.py new file mode 100644 index 0000000..338732c --- /dev/null +++ b/qcs_api_client/api/account/activate_user.py @@ -0,0 +1,147 @@ +from http import HTTPStatus +from typing import Any, Dict, Union + +import httpx +from tenacity import retry + +from ...types import Response +from ...util.errors import QCSHTTPStatusError +from ...util.retry import DEFAULT_RETRY_ARGUMENTS + +from ...models.user import User +from ...models.activate_user_request import ActivateUserRequest +from ...models.error import Error + + +def _get_kwargs( + *, + body: ActivateUserRequest, +) -> Dict[str, Any]: + headers: Dict[str, Any] = {} + + _kwargs: Dict[str, Any] = { + "method": "post", + "url": "/v1/users:activate", + } + + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response(*, response: httpx.Response) -> Union[Error, User]: + if response.status_code == HTTPStatus.NO_CONTENT: + response_204 = User.from_dict(response.json()) + + return response_204 + else: + raise QCSHTTPStatusError(f"Unexpected response: status code {response.status_code}") + + +def _build_response(*, response: httpx.Response) -> Response[Union[Error, User]]: + """Construct the Response class from the raw ``httpx.Response``.""" + return Response.build_from_httpx_response(response=response, parse_function=_parse_response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync( + *, + client: httpx.Client, + body: ActivateUserRequest, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, User]]: + """Activate User + + Activate a user, completing an invitation request. + + Args: + body (ActivateUserRequest): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[Error, User]] + """ + + kwargs = _get_kwargs( + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync_from_dict( + *, + client: httpx.Client, + body: Dict, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, User]]: + kwargs = _get_kwargs( + client=client, + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio( + *, + client: httpx.AsyncClient, + body: ActivateUserRequest, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, User]]: + """Activate User + + Activate a user, completing an invitation request. + + Args: + body (ActivateUserRequest): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[Error, User]] + """ + + kwargs = _get_kwargs( + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request(**kwargs) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio_from_dict( + *, + client: httpx.AsyncClient, + body: Dict, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, User]]: + kwargs = _get_kwargs( + client=client, + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request( + **kwargs, + ) + + return _build_response(response=response) diff --git a/qcs_api_client/api/account/dismiss_viewer_announcement.py b/qcs_api_client/api/account/dismiss_viewer_announcement.py new file mode 100644 index 0000000..39c2fb6 --- /dev/null +++ b/qcs_api_client/api/account/dismiss_viewer_announcement.py @@ -0,0 +1,135 @@ +from http import HTTPStatus +from typing import Any, Dict, Union, cast + +import httpx +from tenacity import retry + +from ...types import Response +from ...util.errors import QCSHTTPStatusError +from ...util.retry import DEFAULT_RETRY_ARGUMENTS + +from ...models.error import Error + + +def _get_kwargs( + announcement_id: int, +) -> Dict[str, Any]: + _kwargs: Dict[str, Any] = { + "method": "delete", + "url": "/v1/viewer/announcements/{announcement_id}".format( + announcement_id=announcement_id, + ), + } + + return _kwargs + + +def _parse_response(*, response: httpx.Response) -> Union[Any, Error]: + if response.status_code == HTTPStatus.OK: + response_200 = cast(Any, None) + return response_200 + else: + raise QCSHTTPStatusError(f"Unexpected response: status code {response.status_code}") + + +def _build_response(*, response: httpx.Response) -> Response[Union[Any, Error]]: + """Construct the Response class from the raw ``httpx.Response``.""" + return Response.build_from_httpx_response(response=response, parse_function=_parse_response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync( + announcement_id: int, + *, + client: httpx.Client, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Any, Error]]: + """Dismiss an announcement for an authenticating user, indicating that they do not want to see it + again. + + Args: + announcement_id (int): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[Any, Error]] + """ + + kwargs = _get_kwargs( + announcement_id=announcement_id, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync_from_dict( + announcement_id: int, + *, + client: httpx.Client, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Any, Error]]: + kwargs = _get_kwargs( + announcement_id=announcement_id, + client=client, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio( + announcement_id: int, + *, + client: httpx.AsyncClient, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Any, Error]]: + """Dismiss an announcement for an authenticating user, indicating that they do not want to see it + again. + + Args: + announcement_id (int): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[Any, Error]] + """ + + kwargs = _get_kwargs( + announcement_id=announcement_id, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request(**kwargs) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio_from_dict( + announcement_id: int, + *, + client: httpx.AsyncClient, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Any, Error]]: + kwargs = _get_kwargs( + announcement_id=announcement_id, + client=client, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request( + **kwargs, + ) + + return _build_response(response=response) diff --git a/qcs_api_client/api/account/get_user_event_billing_price.py b/qcs_api_client/api/account/get_user_event_billing_price.py new file mode 100644 index 0000000..29a34a1 --- /dev/null +++ b/qcs_api_client/api/account/get_user_event_billing_price.py @@ -0,0 +1,164 @@ +from http import HTTPStatus +from typing import Any, Dict, Union + +import httpx +from tenacity import retry + +from ...types import Response +from ...util.errors import QCSHTTPStatusError +from ...util.retry import DEFAULT_RETRY_ARGUMENTS + +from ...models.event_billing_price_rate import EventBillingPriceRate +from ...models.get_account_event_billing_price_request import ( + GetAccountEventBillingPriceRequest, +) +from ...models.error import Error + + +def _get_kwargs( + user_id: str, + *, + body: GetAccountEventBillingPriceRequest, +) -> Dict[str, Any]: + headers: Dict[str, Any] = {} + + _kwargs: Dict[str, Any] = { + "method": "post", + "url": "/v1/users/{user_id}/eventBillingPrices:get".format( + user_id=user_id, + ), + } + + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response(*, response: httpx.Response) -> Union[Error, EventBillingPriceRate]: + if response.status_code == HTTPStatus.OK: + response_200 = EventBillingPriceRate.from_dict(response.json()) + + return response_200 + else: + raise QCSHTTPStatusError(f"Unexpected response: status code {response.status_code}") + + +def _build_response(*, response: httpx.Response) -> Response[Union[Error, EventBillingPriceRate]]: + """Construct the Response class from the raw ``httpx.Response``.""" + return Response.build_from_httpx_response(response=response, parse_function=_parse_response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync( + user_id: str, + *, + client: httpx.Client, + body: GetAccountEventBillingPriceRequest, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, EventBillingPriceRate]]: + """Retrieve `EventBillingPrice` for a user for a specific event. If no price is configured this + operation will return a default `EventBillingPrice` for the specified `product`. + + Args: + user_id (str): + body (GetAccountEventBillingPriceRequest): Property `quantumProcessorId` is currently + required for all `product`s, however in the future there may be `product`s that do not + require a `quantumProcessorId`. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[Error, EventBillingPriceRate]] + """ + + kwargs = _get_kwargs( + user_id=user_id, + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync_from_dict( + user_id: str, + *, + client: httpx.Client, + body: Dict, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, EventBillingPriceRate]]: + kwargs = _get_kwargs( + user_id=user_id, + client=client, + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio( + user_id: str, + *, + client: httpx.AsyncClient, + body: GetAccountEventBillingPriceRequest, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, EventBillingPriceRate]]: + """Retrieve `EventBillingPrice` for a user for a specific event. If no price is configured this + operation will return a default `EventBillingPrice` for the specified `product`. + + Args: + user_id (str): + body (GetAccountEventBillingPriceRequest): Property `quantumProcessorId` is currently + required for all `product`s, however in the future there may be `product`s that do not + require a `quantumProcessorId`. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[Error, EventBillingPriceRate]] + """ + + kwargs = _get_kwargs( + user_id=user_id, + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request(**kwargs) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio_from_dict( + user_id: str, + *, + client: httpx.AsyncClient, + body: Dict, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, EventBillingPriceRate]]: + kwargs = _get_kwargs( + user_id=user_id, + client=client, + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request( + **kwargs, + ) + + return _build_response(response=response) diff --git a/qcs_api_client/api/account/get_viewer_user_onboarding_completed.py b/qcs_api_client/api/account/get_viewer_user_onboarding_completed.py new file mode 100644 index 0000000..5528b2f --- /dev/null +++ b/qcs_api_client/api/account/get_viewer_user_onboarding_completed.py @@ -0,0 +1,115 @@ +from http import HTTPStatus +from typing import Any, Dict, Union + +import httpx +from tenacity import retry + +from ...types import Response +from ...util.errors import QCSHTTPStatusError +from ...util.retry import DEFAULT_RETRY_ARGUMENTS + +from ...models.viewer_user_onboarding_completed import ViewerUserOnboardingCompleted +from ...models.error import Error + + +def _get_kwargs() -> Dict[str, Any]: + _kwargs: Dict[str, Any] = { + "method": "get", + "url": "/v1/viewer/onboardingCompleted", + } + + return _kwargs + + +def _parse_response(*, response: httpx.Response) -> Union[Error, ViewerUserOnboardingCompleted]: + if response.status_code == HTTPStatus.OK: + response_200 = ViewerUserOnboardingCompleted.from_dict(response.json()) + + return response_200 + else: + raise QCSHTTPStatusError(f"Unexpected response: status code {response.status_code}") + + +def _build_response(*, response: httpx.Response) -> Response[Union[Error, ViewerUserOnboardingCompleted]]: + """Construct the Response class from the raw ``httpx.Response``.""" + return Response.build_from_httpx_response(response=response, parse_function=_parse_response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync( + *, + client: httpx.Client, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, ViewerUserOnboardingCompleted]]: + """Get the onboarding status of the authenticated user. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[Error, ViewerUserOnboardingCompleted]] + """ + + kwargs = _get_kwargs() + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync_from_dict( + *, + client: httpx.Client, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, ViewerUserOnboardingCompleted]]: + kwargs = _get_kwargs( + client=client, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio( + *, + client: httpx.AsyncClient, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, ViewerUserOnboardingCompleted]]: + """Get the onboarding status of the authenticated user. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[Error, ViewerUserOnboardingCompleted]] + """ + + kwargs = _get_kwargs() + kwargs.update(httpx_request_kwargs) + response = await client.request(**kwargs) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio_from_dict( + *, + client: httpx.AsyncClient, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, ViewerUserOnboardingCompleted]]: + kwargs = _get_kwargs( + client=client, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request( + **kwargs, + ) + + return _build_response(response=response) diff --git a/qcs_api_client/api/account/list_group_billing_invoice_lines.py b/qcs_api_client/api/account/list_group_billing_invoice_lines.py index b5e8eeb..08bf31a 100644 --- a/qcs_api_client/api/account/list_group_billing_invoice_lines.py +++ b/qcs_api_client/api/account/list_group_billing_invoice_lines.py @@ -8,11 +8,11 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS -from ...models.error import Error from ...models.list_account_billing_invoice_lines_response import ( ListAccountBillingInvoiceLinesResponse, ) from ...types import Unset +from ...models.error import Error def _get_kwargs( diff --git a/qcs_api_client/api/account/list_group_billing_invoices.py b/qcs_api_client/api/account/list_group_billing_invoices.py index 6a71e3e..5dc173a 100644 --- a/qcs_api_client/api/account/list_group_billing_invoices.py +++ b/qcs_api_client/api/account/list_group_billing_invoices.py @@ -8,11 +8,11 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS +from ...types import Unset +from ...models.error import Error from ...models.list_account_billing_invoices_response import ( ListAccountBillingInvoicesResponse, ) -from ...models.error import Error -from ...types import Unset def _get_kwargs( diff --git a/qcs_api_client/api/account/list_group_upcoming_billing_invoice_lines.py b/qcs_api_client/api/account/list_group_upcoming_billing_invoice_lines.py index 37d4663..b41e1f7 100644 --- a/qcs_api_client/api/account/list_group_upcoming_billing_invoice_lines.py +++ b/qcs_api_client/api/account/list_group_upcoming_billing_invoice_lines.py @@ -8,11 +8,11 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS -from ...models.error import Error from ...models.list_account_billing_invoice_lines_response import ( ListAccountBillingInvoiceLinesResponse, ) from ...types import Unset +from ...models.error import Error def _get_kwargs( diff --git a/qcs_api_client/api/account/list_group_users.py b/qcs_api_client/api/account/list_group_users.py index 203ec6b..461a1c3 100644 --- a/qcs_api_client/api/account/list_group_users.py +++ b/qcs_api_client/api/account/list_group_users.py @@ -8,9 +8,9 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS -from ...models.list_group_users_response import ListGroupUsersResponse -from ...models.error import Error from ...types import Unset +from ...models.error import Error +from ...models.list_group_users_response import ListGroupUsersResponse def _get_kwargs( diff --git a/qcs_api_client/api/account/list_user_billing_invoice_lines.py b/qcs_api_client/api/account/list_user_billing_invoice_lines.py index 43346fb..bfb2f6d 100644 --- a/qcs_api_client/api/account/list_user_billing_invoice_lines.py +++ b/qcs_api_client/api/account/list_user_billing_invoice_lines.py @@ -8,11 +8,11 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS -from ...models.error import Error from ...models.list_account_billing_invoice_lines_response import ( ListAccountBillingInvoiceLinesResponse, ) from ...types import Unset +from ...models.error import Error def _get_kwargs( diff --git a/qcs_api_client/api/account/list_user_billing_invoices.py b/qcs_api_client/api/account/list_user_billing_invoices.py index b6b0acf..23e49e5 100644 --- a/qcs_api_client/api/account/list_user_billing_invoices.py +++ b/qcs_api_client/api/account/list_user_billing_invoices.py @@ -8,11 +8,11 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS +from ...types import Unset +from ...models.error import Error from ...models.list_account_billing_invoices_response import ( ListAccountBillingInvoicesResponse, ) -from ...models.error import Error -from ...types import Unset def _get_kwargs( diff --git a/qcs_api_client/api/account/list_user_groups.py b/qcs_api_client/api/account/list_user_groups.py index 1ebbee2..61d16c8 100644 --- a/qcs_api_client/api/account/list_user_groups.py +++ b/qcs_api_client/api/account/list_user_groups.py @@ -9,8 +9,8 @@ from ...util.retry import DEFAULT_RETRY_ARGUMENTS from ...models.list_groups_response import ListGroupsResponse -from ...models.error import Error from ...types import Unset +from ...models.error import Error def _get_kwargs( diff --git a/qcs_api_client/api/account/list_user_upcoming_billing_invoice_lines.py b/qcs_api_client/api/account/list_user_upcoming_billing_invoice_lines.py index b637fea..4d22e7f 100644 --- a/qcs_api_client/api/account/list_user_upcoming_billing_invoice_lines.py +++ b/qcs_api_client/api/account/list_user_upcoming_billing_invoice_lines.py @@ -8,11 +8,11 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS -from ...models.error import Error from ...models.list_account_billing_invoice_lines_response import ( ListAccountBillingInvoiceLinesResponse, ) from ...types import Unset +from ...models.error import Error def _get_kwargs( diff --git a/qcs_api_client/api/account/list_viewer_announcements.py b/qcs_api_client/api/account/list_viewer_announcements.py new file mode 100644 index 0000000..3ee7524 --- /dev/null +++ b/qcs_api_client/api/account/list_viewer_announcements.py @@ -0,0 +1,170 @@ +from http import HTTPStatus +from typing import Any, Dict, Union + +import httpx +from tenacity import retry + +from ...types import Response, UNSET +from ...util.errors import QCSHTTPStatusError +from ...util.retry import DEFAULT_RETRY_ARGUMENTS + +from ...types import Unset +from ...models.announcements_response import AnnouncementsResponse +from ...models.error import Error + + +def _get_kwargs( + *, + page_size: Union[Unset, int] = UNSET, + page_token: Union[Unset, str] = UNSET, + include_dismissed: Union[Unset, bool] = False, +) -> Dict[str, Any]: + params: Dict[str, Any] = {} + + params["pageSize"] = page_size + + params["pageToken"] = page_token + + params["includeDismissed"] = include_dismissed + + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} + + _kwargs: Dict[str, Any] = { + "method": "get", + "url": "/v1/viewer/announcements", + "params": params, + } + + return _kwargs + + +def _parse_response(*, response: httpx.Response) -> Union[AnnouncementsResponse, Error]: + if response.status_code == HTTPStatus.OK: + response_200 = AnnouncementsResponse.from_dict(response.json()) + + return response_200 + else: + raise QCSHTTPStatusError(f"Unexpected response: status code {response.status_code}") + + +def _build_response(*, response: httpx.Response) -> Response[Union[AnnouncementsResponse, Error]]: + """Construct the Response class from the raw ``httpx.Response``.""" + return Response.build_from_httpx_response(response=response, parse_function=_parse_response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync( + *, + client: httpx.Client, + page_size: Union[Unset, int] = UNSET, + page_token: Union[Unset, str] = UNSET, + include_dismissed: Union[Unset, bool] = False, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[AnnouncementsResponse, Error]]: + """List all announcements relevant to the authenticating user. By default, does not include dismissed + announcements. + + Args: + page_size (Union[Unset, int]): + page_token (Union[Unset, str]): + include_dismissed (Union[Unset, bool]): Default: False. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[AnnouncementsResponse, Error]] + """ + + kwargs = _get_kwargs( + page_size=page_size, + page_token=page_token, + include_dismissed=include_dismissed, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync_from_dict( + *, + client: httpx.Client, + page_size: Union[Unset, int] = UNSET, + page_token: Union[Unset, str] = UNSET, + include_dismissed: Union[Unset, bool] = False, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[AnnouncementsResponse, Error]]: + kwargs = _get_kwargs( + client=client, + page_size=page_size, + page_token=page_token, + include_dismissed=include_dismissed, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio( + *, + client: httpx.AsyncClient, + page_size: Union[Unset, int] = UNSET, + page_token: Union[Unset, str] = UNSET, + include_dismissed: Union[Unset, bool] = False, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[AnnouncementsResponse, Error]]: + """List all announcements relevant to the authenticating user. By default, does not include dismissed + announcements. + + Args: + page_size (Union[Unset, int]): + page_token (Union[Unset, str]): + include_dismissed (Union[Unset, bool]): Default: False. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[AnnouncementsResponse, Error]] + """ + + kwargs = _get_kwargs( + page_size=page_size, + page_token=page_token, + include_dismissed=include_dismissed, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request(**kwargs) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio_from_dict( + *, + client: httpx.AsyncClient, + page_size: Union[Unset, int] = UNSET, + page_token: Union[Unset, str] = UNSET, + include_dismissed: Union[Unset, bool] = False, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[AnnouncementsResponse, Error]]: + kwargs = _get_kwargs( + client=client, + page_size=page_size, + page_token=page_token, + include_dismissed=include_dismissed, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request( + **kwargs, + ) + + return _build_response(response=response) diff --git a/qcs_api_client/api/account/put_viewer_user_onboarding_completed.py b/qcs_api_client/api/account/put_viewer_user_onboarding_completed.py new file mode 100644 index 0000000..0f2352d --- /dev/null +++ b/qcs_api_client/api/account/put_viewer_user_onboarding_completed.py @@ -0,0 +1,142 @@ +from http import HTTPStatus +from typing import Any, Dict, Union + +import httpx +from tenacity import retry + +from ...types import Response +from ...util.errors import QCSHTTPStatusError +from ...util.retry import DEFAULT_RETRY_ARGUMENTS + +from ...models.viewer_user_onboarding_completed import ViewerUserOnboardingCompleted +from ...models.error import Error + + +def _get_kwargs( + *, + body: ViewerUserOnboardingCompleted, +) -> Dict[str, Any]: + headers: Dict[str, Any] = {} + + _kwargs: Dict[str, Any] = { + "method": "put", + "url": "/v1/viewer/onboardingCompleted", + } + + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response(*, response: httpx.Response) -> Union[Error, ViewerUserOnboardingCompleted]: + if response.status_code == HTTPStatus.OK: + response_200 = ViewerUserOnboardingCompleted.from_dict(response.json()) + + return response_200 + else: + raise QCSHTTPStatusError(f"Unexpected response: status code {response.status_code}") + + +def _build_response(*, response: httpx.Response) -> Response[Union[Error, ViewerUserOnboardingCompleted]]: + """Construct the Response class from the raw ``httpx.Response``.""" + return Response.build_from_httpx_response(response=response, parse_function=_parse_response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync( + *, + client: httpx.Client, + body: ViewerUserOnboardingCompleted, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, ViewerUserOnboardingCompleted]]: + """Update the onboarding status of the authenticated user. + + Args: + body (ViewerUserOnboardingCompleted): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[Error, ViewerUserOnboardingCompleted]] + """ + + kwargs = _get_kwargs( + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync_from_dict( + *, + client: httpx.Client, + body: Dict, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, ViewerUserOnboardingCompleted]]: + kwargs = _get_kwargs( + client=client, + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio( + *, + client: httpx.AsyncClient, + body: ViewerUserOnboardingCompleted, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, ViewerUserOnboardingCompleted]]: + """Update the onboarding status of the authenticated user. + + Args: + body (ViewerUserOnboardingCompleted): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[Error, ViewerUserOnboardingCompleted]] + """ + + kwargs = _get_kwargs( + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request(**kwargs) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio_from_dict( + *, + client: httpx.AsyncClient, + body: Dict, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, ViewerUserOnboardingCompleted]]: + kwargs = _get_kwargs( + client=client, + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request( + **kwargs, + ) + + return _build_response(response=response) diff --git a/qcs_api_client/api/account/remove_group_user.py b/qcs_api_client/api/account/remove_group_user.py index 2226f42..ddf76d5 100644 --- a/qcs_api_client/api/account/remove_group_user.py +++ b/qcs_api_client/api/account/remove_group_user.py @@ -8,8 +8,8 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS -from ...models.error import Error from ...models.remove_group_user_request import RemoveGroupUserRequest +from ...models.error import Error def _get_kwargs( diff --git a/qcs_api_client/api/account/update_viewer_user_profile.py b/qcs_api_client/api/account/update_viewer_user_profile.py new file mode 100644 index 0000000..2be85e3 --- /dev/null +++ b/qcs_api_client/api/account/update_viewer_user_profile.py @@ -0,0 +1,143 @@ +from http import HTTPStatus +from typing import Any, Dict, Union + +import httpx +from tenacity import retry + +from ...types import Response +from ...util.errors import QCSHTTPStatusError +from ...util.retry import DEFAULT_RETRY_ARGUMENTS + +from ...models.update_viewer_user_profile_request import UpdateViewerUserProfileRequest +from ...models.user import User +from ...models.error import Error + + +def _get_kwargs( + *, + body: UpdateViewerUserProfileRequest, +) -> Dict[str, Any]: + headers: Dict[str, Any] = {} + + _kwargs: Dict[str, Any] = { + "method": "put", + "url": "/v1/viewer/userProfile", + } + + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response(*, response: httpx.Response) -> Union[Error, User]: + if response.status_code == HTTPStatus.OK: + response_200 = User.from_dict(response.json()) + + return response_200 + else: + raise QCSHTTPStatusError(f"Unexpected response: status code {response.status_code}") + + +def _build_response(*, response: httpx.Response) -> Response[Union[Error, User]]: + """Construct the Response class from the raw ``httpx.Response``.""" + return Response.build_from_httpx_response(response=response, parse_function=_parse_response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync( + *, + client: httpx.Client, + body: UpdateViewerUserProfileRequest, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, User]]: + """Update the profile of the authenticated user. + + Args: + body (UpdateViewerUserProfileRequest): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[Error, User]] + """ + + kwargs = _get_kwargs( + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync_from_dict( + *, + client: httpx.Client, + body: Dict, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, User]]: + kwargs = _get_kwargs( + client=client, + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio( + *, + client: httpx.AsyncClient, + body: UpdateViewerUserProfileRequest, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, User]]: + """Update the profile of the authenticated user. + + Args: + body (UpdateViewerUserProfileRequest): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[Error, User]] + """ + + kwargs = _get_kwargs( + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request(**kwargs) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio_from_dict( + *, + client: httpx.AsyncClient, + body: Dict, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, User]]: + kwargs = _get_kwargs( + client=client, + body=body, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request( + **kwargs, + ) + + return _build_response(response=response) diff --git a/qcs_api_client/api/authentication/auth_get_user.py b/qcs_api_client/api/authentication/auth_get_user.py index d4c6da5..06aff6d 100644 --- a/qcs_api_client/api/authentication/auth_get_user.py +++ b/qcs_api_client/api/authentication/auth_get_user.py @@ -8,8 +8,8 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS -from ...models.user import User from ...models.error import Error +from ...models.user import User def _get_kwargs() -> Dict[str, Any]: diff --git a/qcs_api_client/api/authentication/auth_reset_password.py b/qcs_api_client/api/authentication/auth_reset_password.py index 853f483..e4988ac 100644 --- a/qcs_api_client/api/authentication/auth_reset_password.py +++ b/qcs_api_client/api/authentication/auth_reset_password.py @@ -8,8 +8,8 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS -from ...models.auth_reset_password_request import AuthResetPasswordRequest from ...models.error import Error +from ...models.auth_reset_password_request import AuthResetPasswordRequest def _get_kwargs( diff --git a/qcs_api_client/api/endpoints/create_endpoint.py b/qcs_api_client/api/endpoints/create_endpoint.py index f41a123..2cfa024 100644 --- a/qcs_api_client/api/endpoints/create_endpoint.py +++ b/qcs_api_client/api/endpoints/create_endpoint.py @@ -8,10 +8,10 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS -from ...models.validation_error import ValidationError from ...models.create_endpoint_parameters import CreateEndpointParameters -from ...models.endpoint import Endpoint +from ...models.validation_error import ValidationError from ...models.error import Error +from ...models.endpoint import Endpoint def _get_kwargs( diff --git a/qcs_api_client/api/endpoints/get_default_endpoint.py b/qcs_api_client/api/endpoints/get_default_endpoint.py index c5c3319..75d0b97 100644 --- a/qcs_api_client/api/endpoints/get_default_endpoint.py +++ b/qcs_api_client/api/endpoints/get_default_endpoint.py @@ -9,8 +9,8 @@ from ...util.retry import DEFAULT_RETRY_ARGUMENTS from ...models.validation_error import ValidationError -from ...models.endpoint import Endpoint from ...models.error import Error +from ...models.endpoint import Endpoint def _get_kwargs( diff --git a/qcs_api_client/api/endpoints/get_endpoint.py b/qcs_api_client/api/endpoints/get_endpoint.py index e93cdfc..19fd189 100644 --- a/qcs_api_client/api/endpoints/get_endpoint.py +++ b/qcs_api_client/api/endpoints/get_endpoint.py @@ -9,8 +9,8 @@ from ...util.retry import DEFAULT_RETRY_ARGUMENTS from ...models.validation_error import ValidationError -from ...models.endpoint import Endpoint from ...models.error import Error +from ...models.endpoint import Endpoint def _get_kwargs( diff --git a/qcs_api_client/api/endpoints/list_endpoints.py b/qcs_api_client/api/endpoints/list_endpoints.py index f5ffb9e..6b6ad53 100644 --- a/qcs_api_client/api/endpoints/list_endpoints.py +++ b/qcs_api_client/api/endpoints/list_endpoints.py @@ -8,9 +8,9 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS -from ...models.list_endpoints_response import ListEndpointsResponse from ...models.validation_error import ValidationError from ...types import Unset +from ...models.list_endpoints_response import ListEndpointsResponse def _get_kwargs( diff --git a/qcs_api_client/api/endpoints/restart_endpoint.py b/qcs_api_client/api/endpoints/restart_endpoint.py index 31aa007..149c4dc 100644 --- a/qcs_api_client/api/endpoints/restart_endpoint.py +++ b/qcs_api_client/api/endpoints/restart_endpoint.py @@ -9,8 +9,8 @@ from ...util.retry import DEFAULT_RETRY_ARGUMENTS from ...models.validation_error import ValidationError -from ...models.error import Error from ...models.restart_endpoint_request import RestartEndpointRequest +from ...models.error import Error def _get_kwargs( diff --git a/qcs_api_client/api/engagements/create_engagement.py b/qcs_api_client/api/engagements/create_engagement.py index a12365c..0f079f3 100644 --- a/qcs_api_client/api/engagements/create_engagement.py +++ b/qcs_api_client/api/engagements/create_engagement.py @@ -8,11 +8,11 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS +from ...models.account_type import AccountType +from ...types import Unset from ...models.create_engagement_request import CreateEngagementRequest -from ...models.engagement_with_credentials import EngagementWithCredentials from ...models.error import Error -from ...types import Unset -from ...models.account_type import AccountType +from ...models.engagement_with_credentials import EngagementWithCredentials def _get_kwargs( diff --git a/qcs_api_client/api/quantum_processors/get_quantum_processor.py b/qcs_api_client/api/quantum_processors/get_quantum_processor.py index f7287ea..982bb8e 100644 --- a/qcs_api_client/api/quantum_processors/get_quantum_processor.py +++ b/qcs_api_client/api/quantum_processors/get_quantum_processor.py @@ -8,9 +8,9 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS +from ...models.quantum_processor import QuantumProcessor from ...models.validation_error import ValidationError from ...models.error import Error -from ...models.quantum_processor import QuantumProcessor def _get_kwargs( diff --git a/qcs_api_client/api/quantum_processors/list_instruction_set_architectures.py b/qcs_api_client/api/quantum_processors/list_instruction_set_architectures.py new file mode 100644 index 0000000..76c21ca --- /dev/null +++ b/qcs_api_client/api/quantum_processors/list_instruction_set_architectures.py @@ -0,0 +1,163 @@ +from http import HTTPStatus +from typing import Any, Dict, Union + +import httpx +from tenacity import retry + +from ...types import Response, UNSET +from ...util.errors import QCSHTTPStatusError +from ...util.retry import DEFAULT_RETRY_ARGUMENTS + +from ...models.list_instruction_set_architecture_response import ( + ListInstructionSetArchitectureResponse, +) +from ...models.validation_error import ValidationError +from ...types import Unset + + +def _get_kwargs( + *, + page_size: Union[Unset, int] = 5, + page_token: Union[Unset, str] = UNSET, +) -> Dict[str, Any]: + params: Dict[str, Any] = {} + + params["pageSize"] = page_size + + params["pageToken"] = page_token + + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} + + _kwargs: Dict[str, Any] = { + "method": "get", + "url": "/v1/instructionSetArchitectures", + "params": params, + } + + return _kwargs + + +def _parse_response(*, response: httpx.Response) -> Union[ListInstructionSetArchitectureResponse, ValidationError]: + if response.status_code == HTTPStatus.OK: + response_200 = ListInstructionSetArchitectureResponse.from_dict(response.json()) + + return response_200 + else: + raise QCSHTTPStatusError(f"Unexpected response: status code {response.status_code}") + + +def _build_response( + *, response: httpx.Response +) -> Response[Union[ListInstructionSetArchitectureResponse, ValidationError]]: + """Construct the Response class from the raw ``httpx.Response``.""" + return Response.build_from_httpx_response(response=response, parse_function=_parse_response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync( + *, + client: httpx.Client, + page_size: Union[Unset, int] = 5, + page_token: Union[Unset, str] = UNSET, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[ListInstructionSetArchitectureResponse, ValidationError]]: + """List Instruction Set Architectures + + Retrieve all Instruction Set Architectures available to the user. + + Args: + page_size (Union[Unset, int]): Default: 5. + page_token (Union[Unset, str]): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[ListInstructionSetArchitectureResponse, ValidationError]] + """ + + kwargs = _get_kwargs( + page_size=page_size, + page_token=page_token, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync_from_dict( + *, + client: httpx.Client, + page_size: Union[Unset, int] = 5, + page_token: Union[Unset, str] = UNSET, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[ListInstructionSetArchitectureResponse, ValidationError]]: + kwargs = _get_kwargs( + client=client, + page_size=page_size, + page_token=page_token, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio( + *, + client: httpx.AsyncClient, + page_size: Union[Unset, int] = 5, + page_token: Union[Unset, str] = UNSET, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[ListInstructionSetArchitectureResponse, ValidationError]]: + """List Instruction Set Architectures + + Retrieve all Instruction Set Architectures available to the user. + + Args: + page_size (Union[Unset, int]): Default: 5. + page_token (Union[Unset, str]): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[ListInstructionSetArchitectureResponse, ValidationError]] + """ + + kwargs = _get_kwargs( + page_size=page_size, + page_token=page_token, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request(**kwargs) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio_from_dict( + *, + client: httpx.AsyncClient, + page_size: Union[Unset, int] = 5, + page_token: Union[Unset, str] = UNSET, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[ListInstructionSetArchitectureResponse, ValidationError]]: + kwargs = _get_kwargs( + client=client, + page_size=page_size, + page_token=page_token, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request( + **kwargs, + ) + + return _build_response(response=response) diff --git a/qcs_api_client/api/quantum_processors/list_quantum_processor_accessors.py b/qcs_api_client/api/quantum_processors/list_quantum_processor_accessors.py index 2d748d7..7fbef79 100644 --- a/qcs_api_client/api/quantum_processors/list_quantum_processor_accessors.py +++ b/qcs_api_client/api/quantum_processors/list_quantum_processor_accessors.py @@ -8,10 +8,10 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS -from ...models.validation_error import ValidationError from ...models.list_quantum_processor_accessors_response import ( ListQuantumProcessorAccessorsResponse, ) +from ...models.validation_error import ValidationError from ...types import Unset diff --git a/qcs_api_client/api/reservations/create_reservation.py b/qcs_api_client/api/reservations/create_reservation.py index fd0f6b0..119b2a7 100644 --- a/qcs_api_client/api/reservations/create_reservation.py +++ b/qcs_api_client/api/reservations/create_reservation.py @@ -8,11 +8,11 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS -from ...models.reservation import Reservation -from ...models.error import Error +from ...models.account_type import AccountType from ...models.create_reservation_request import CreateReservationRequest +from ...models.reservation import Reservation from ...types import Unset -from ...models.account_type import AccountType +from ...models.error import Error def _get_kwargs( diff --git a/qcs_api_client/api/reservations/delete_reservation.py b/qcs_api_client/api/reservations/delete_reservation.py index 65ff165..8d9b864 100644 --- a/qcs_api_client/api/reservations/delete_reservation.py +++ b/qcs_api_client/api/reservations/delete_reservation.py @@ -8,8 +8,8 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS -from ...models.error import Error from ...models.reservation import Reservation +from ...models.error import Error def _get_kwargs( diff --git a/qcs_api_client/api/reservations/find_available_reservations.py b/qcs_api_client/api/reservations/find_available_reservations.py index 8cbd90e..d72c24c 100644 --- a/qcs_api_client/api/reservations/find_available_reservations.py +++ b/qcs_api_client/api/reservations/find_available_reservations.py @@ -12,9 +12,9 @@ from ...models.find_available_reservations_response import ( FindAvailableReservationsResponse, ) -from ...models.error import Error from ...types import Unset import datetime +from ...models.error import Error def _get_kwargs( diff --git a/qcs_api_client/api/reservations/get_quantum_processor_calendar.py b/qcs_api_client/api/reservations/get_quantum_processor_calendar.py new file mode 100644 index 0000000..5901a63 --- /dev/null +++ b/qcs_api_client/api/reservations/get_quantum_processor_calendar.py @@ -0,0 +1,139 @@ +from http import HTTPStatus +from typing import Any, Dict, Union + +import httpx +from tenacity import retry + +from ...types import Response +from ...util.errors import QCSHTTPStatusError +from ...util.retry import DEFAULT_RETRY_ARGUMENTS + +from ...models.quantum_processor_calendar import QuantumProcessorCalendar +from ...models.error import Error + + +def _get_kwargs( + quantum_processor_id: str, +) -> Dict[str, Any]: + _kwargs: Dict[str, Any] = { + "method": "get", + "url": "/v1/calendars/{quantum_processor_id}".format( + quantum_processor_id=quantum_processor_id, + ), + } + + return _kwargs + + +def _parse_response(*, response: httpx.Response) -> Union[Error, QuantumProcessorCalendar]: + if response.status_code == HTTPStatus.OK: + response_200 = QuantumProcessorCalendar.from_dict(response.json()) + + return response_200 + else: + raise QCSHTTPStatusError(f"Unexpected response: status code {response.status_code}") + + +def _build_response(*, response: httpx.Response) -> Response[Union[Error, QuantumProcessorCalendar]]: + """Construct the Response class from the raw ``httpx.Response``.""" + return Response.build_from_httpx_response(response=response, parse_function=_parse_response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync( + quantum_processor_id: str, + *, + client: httpx.Client, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, QuantumProcessorCalendar]]: + """Get Quantum Processor Calendar + + Get calendar details for the requested quantum processor. + + Args: + quantum_processor_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[Error, QuantumProcessorCalendar]] + """ + + kwargs = _get_kwargs( + quantum_processor_id=quantum_processor_id, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +def sync_from_dict( + quantum_processor_id: str, + *, + client: httpx.Client, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, QuantumProcessorCalendar]]: + kwargs = _get_kwargs( + quantum_processor_id=quantum_processor_id, + client=client, + ) + kwargs.update(httpx_request_kwargs) + response = client.request( + **kwargs, + ) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio( + quantum_processor_id: str, + *, + client: httpx.AsyncClient, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, QuantumProcessorCalendar]]: + """Get Quantum Processor Calendar + + Get calendar details for the requested quantum processor. + + Args: + quantum_processor_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Union[Error, QuantumProcessorCalendar]] + """ + + kwargs = _get_kwargs( + quantum_processor_id=quantum_processor_id, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request(**kwargs) + return _build_response(response=response) + + +@retry(**DEFAULT_RETRY_ARGUMENTS) +async def asyncio_from_dict( + quantum_processor_id: str, + *, + client: httpx.AsyncClient, + httpx_request_kwargs: Dict[str, Any] = {}, +) -> Response[Union[Error, QuantumProcessorCalendar]]: + kwargs = _get_kwargs( + quantum_processor_id=quantum_processor_id, + client=client, + ) + kwargs.update(httpx_request_kwargs) + response = await client.request( + **kwargs, + ) + + return _build_response(response=response) diff --git a/qcs_api_client/api/reservations/list_group_reservations.py b/qcs_api_client/api/reservations/list_group_reservations.py index 2e9427e..7728aac 100644 --- a/qcs_api_client/api/reservations/list_group_reservations.py +++ b/qcs_api_client/api/reservations/list_group_reservations.py @@ -8,12 +8,12 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS +from ...models.list_reservations_response import ListReservationsResponse from ...models.list_group_reservations_show_deleted import ( ListGroupReservationsShowDeleted, ) -from ...models.list_reservations_response import ListReservationsResponse -from ...models.error import Error from ...types import Unset +from ...models.error import Error def _get_kwargs( diff --git a/qcs_api_client/api/reservations/list_reservations.py b/qcs_api_client/api/reservations/list_reservations.py index a99675f..3025106 100644 --- a/qcs_api_client/api/reservations/list_reservations.py +++ b/qcs_api_client/api/reservations/list_reservations.py @@ -9,10 +9,10 @@ from ...util.retry import DEFAULT_RETRY_ARGUMENTS from ...models.list_reservations_show_deleted import ListReservationsShowDeleted +from ...models.account_type import AccountType from ...models.list_reservations_response import ListReservationsResponse -from ...models.error import Error from ...types import Unset -from ...models.account_type import AccountType +from ...models.error import Error def _get_kwargs( diff --git a/qcs_api_client/api/translation/translate_native_quil_to_encrypted_binary.py b/qcs_api_client/api/translation/translate_native_quil_to_encrypted_binary.py index 4ce6a4b..caa7cff 100644 --- a/qcs_api_client/api/translation/translate_native_quil_to_encrypted_binary.py +++ b/qcs_api_client/api/translation/translate_native_quil_to_encrypted_binary.py @@ -8,14 +8,14 @@ from ...util.errors import QCSHTTPStatusError from ...util.retry import DEFAULT_RETRY_ARGUMENTS -from ...models.validation_error import ValidationError +from ...models.translate_native_quil_to_encrypted_binary_request import ( + TranslateNativeQuilToEncryptedBinaryRequest, +) from ...models.translate_native_quil_to_encrypted_binary_response import ( TranslateNativeQuilToEncryptedBinaryResponse, ) +from ...models.validation_error import ValidationError from ...models.error import Error -from ...models.translate_native_quil_to_encrypted_binary_request import ( - TranslateNativeQuilToEncryptedBinaryRequest, -) def _get_kwargs( diff --git a/qcs_api_client/models/__init__.py b/qcs_api_client/models/__init__.py index e49b8c3..85e85fd 100644 --- a/qcs_api_client/models/__init__.py +++ b/qcs_api_client/models/__init__.py @@ -2,7 +2,10 @@ from .account_balance import AccountBalance from .account_type import AccountType +from .activate_user_request import ActivateUserRequest from .add_group_user_request import AddGroupUserRequest +from .announcement import Announcement +from .announcements_response import AnnouncementsResponse from .architecture import Architecture from .auth_email_password_reset_token_request import AuthEmailPasswordResetTokenRequest from .auth_reset_password_request import AuthResetPasswordRequest @@ -45,8 +48,10 @@ from .engagement_credentials import EngagementCredentials from .engagement_with_credentials import EngagementWithCredentials from .error import Error +from .event_billing_price_rate import EventBillingPriceRate from .family import Family from .find_available_reservations_response import FindAvailableReservationsResponse +from .get_account_event_billing_price_request import GetAccountEventBillingPriceRequest from .get_quilt_calibrations_response import GetQuiltCalibrationsResponse from .group import Group from .health import Health @@ -61,6 +66,9 @@ from .list_group_reservations_show_deleted import ListGroupReservationsShowDeleted from .list_group_users_response import ListGroupUsersResponse from .list_groups_response import ListGroupsResponse +from .list_instruction_set_architecture_response import ( + ListInstructionSetArchitectureResponse, +) from .list_quantum_processor_accessors_response import ( ListQuantumProcessorAccessorsResponse, ) @@ -73,9 +81,11 @@ from .operation_site import OperationSite from .parameter import Parameter from .parameter_spec import ParameterSpec +from .product import Product from .quantum_processor import QuantumProcessor from .quantum_processor_accessor import QuantumProcessorAccessor from .quantum_processor_accessor_type import QuantumProcessorAccessorType +from .quantum_processor_calendar import QuantumProcessorCalendar from .remove_group_user_request import RemoveGroupUserRequest from .reservation import Reservation from .restart_endpoint_request import RestartEndpointRequest @@ -89,17 +99,22 @@ from .translate_native_quil_to_encrypted_binary_response_memory_descriptors import ( TranslateNativeQuilToEncryptedBinaryResponseMemoryDescriptors, ) +from .update_viewer_user_profile_request import UpdateViewerUserProfileRequest from .user import User from .user_credentials import UserCredentials from .user_credentials_password import UserCredentialsPassword from .user_profile import UserProfile from .validation_error import ValidationError from .validation_error_in import ValidationErrorIn +from .viewer_user_onboarding_completed import ViewerUserOnboardingCompleted __all__ = ( "AccountBalance", "AccountType", + "ActivateUserRequest", "AddGroupUserRequest", + "Announcement", + "AnnouncementsResponse", "Architecture", "AuthEmailPasswordResetTokenRequest", "AuthResetPasswordRequest", @@ -140,8 +155,10 @@ "EngagementCredentials", "EngagementWithCredentials", "Error", + "EventBillingPriceRate", "Family", "FindAvailableReservationsResponse", + "GetAccountEventBillingPriceRequest", "GetQuiltCalibrationsResponse", "Group", "Health", @@ -154,6 +171,7 @@ "ListGroupReservationsShowDeleted", "ListGroupsResponse", "ListGroupUsersResponse", + "ListInstructionSetArchitectureResponse", "ListQuantumProcessorAccessorsResponse", "ListQuantumProcessorsResponse", "ListReservationsResponse", @@ -164,9 +182,11 @@ "OperationSite", "Parameter", "ParameterSpec", + "Product", "QuantumProcessor", "QuantumProcessorAccessor", "QuantumProcessorAccessorType", + "QuantumProcessorCalendar", "RemoveGroupUserRequest", "Reservation", "RestartEndpointRequest", @@ -174,10 +194,12 @@ "TranslateNativeQuilToEncryptedBinaryRequest", "TranslateNativeQuilToEncryptedBinaryResponse", "TranslateNativeQuilToEncryptedBinaryResponseMemoryDescriptors", + "UpdateViewerUserProfileRequest", "User", "UserCredentials", "UserCredentialsPassword", "UserProfile", "ValidationError", "ValidationErrorIn", + "ViewerUserOnboardingCompleted", ) diff --git a/qcs_api_client/models/activate_user_request.py b/qcs_api_client/models/activate_user_request.py new file mode 100644 index 0000000..a897aed --- /dev/null +++ b/qcs_api_client/models/activate_user_request.py @@ -0,0 +1,93 @@ +from typing import Any, Callable, Dict, Type, TypeVar, Optional, TYPE_CHECKING + +from typing import List + + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET +from ..util.serialization import is_not_none + + +if TYPE_CHECKING: + from ..models.user_profile import UserProfile + from ..models.user_credentials import UserCredentials + + +T = TypeVar("T", bound="ActivateUserRequest") + + +@_attrs_define +class ActivateUserRequest: + """ + Attributes: + credentials (UserCredentials): + profile (UserProfile): + token (str): Verification token provided in invitation email. + """ + + credentials: "UserCredentials" + profile: "UserProfile" + token: str + additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_none) -> Dict[str, Any]: + credentials = self.credentials.to_dict() + + profile = self.profile.to_dict() + + token = self.token + + field_dict: Dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "credentials": credentials, + "profile": profile, + "token": token, + } + ) + + field_dict = {k: v for k, v in field_dict.items() if v != UNSET} + if pick_by_predicate is not None: + field_dict = {k: v for k, v in field_dict.items() if pick_by_predicate(v)} + + return field_dict + + @classmethod + def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + from ..models.user_profile import UserProfile + from ..models.user_credentials import UserCredentials + + d = src_dict.copy() + credentials = UserCredentials.from_dict(d.pop("credentials")) + + profile = UserProfile.from_dict(d.pop("profile")) + + token = d.pop("token") + + activate_user_request = cls( + credentials=credentials, + profile=profile, + token=token, + ) + + activate_user_request.additional_properties = d + return activate_user_request + + @property + def additional_keys(self) -> List[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/qcs_api_client/models/announcement.py b/qcs_api_client/models/announcement.py new file mode 100644 index 0000000..4617147 --- /dev/null +++ b/qcs_api_client/models/announcement.py @@ -0,0 +1,100 @@ +from typing import Any, Callable, Dict, Type, TypeVar, Optional + +from typing import List + + +from attrs import define as _attrs_define +from attrs import field as _attrs_field +from rfc3339 import rfc3339 + +from ..types import UNSET +from ..util.serialization import is_not_none + + +from dateutil.parser import isoparse +import datetime + + +T = TypeVar("T", bound="Announcement") + + +@_attrs_define +class Announcement: + """An announcement to be displayed to users. + + Attributes: + active (bool): Whether the announcement is currently active. + content_html (str): The HTML content of the announcement to be displayed. + created_at (datetime.datetime): The RFC3339-format time the announcement was created. + id (int): + """ + + active: bool + content_html: str + created_at: datetime.datetime + id: int + additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_none) -> Dict[str, Any]: + active = self.active + + content_html = self.content_html + + assert self.created_at.tzinfo is not None, "Datetime must have timezone information" + created_at = rfc3339(self.created_at) + + id = self.id + + field_dict: Dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "active": active, + "contentHtml": content_html, + "createdAt": created_at, + "id": id, + } + ) + + field_dict = {k: v for k, v in field_dict.items() if v != UNSET} + if pick_by_predicate is not None: + field_dict = {k: v for k, v in field_dict.items() if pick_by_predicate(v)} + + return field_dict + + @classmethod + def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + d = src_dict.copy() + active = d.pop("active") + + content_html = d.pop("contentHtml") + + created_at = isoparse(d.pop("createdAt")) + + id = d.pop("id") + + announcement = cls( + active=active, + content_html=content_html, + created_at=created_at, + id=id, + ) + + announcement.additional_properties = d + return announcement + + @property + def additional_keys(self) -> List[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/qcs_api_client/models/announcements_response.py b/qcs_api_client/models/announcements_response.py new file mode 100644 index 0000000..a37e755 --- /dev/null +++ b/qcs_api_client/models/announcements_response.py @@ -0,0 +1,95 @@ +from typing import Any, Callable, Dict, Type, TypeVar, Optional, TYPE_CHECKING + +from typing import List + + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset +from ..util.serialization import is_not_none + + +from typing import Union + +if TYPE_CHECKING: + from ..models.announcement import Announcement + + +T = TypeVar("T", bound="AnnouncementsResponse") + + +@_attrs_define +class AnnouncementsResponse: + """A page of announcements. + + Attributes: + announcements (List['Announcement']): + next_page_token (Union[Unset, str]): + """ + + announcements: List["Announcement"] + next_page_token: Union[Unset, str] = UNSET + additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_none) -> Dict[str, Any]: + announcements = [] + for announcements_item_data in self.announcements: + announcements_item = announcements_item_data.to_dict() + announcements.append(announcements_item) + + next_page_token = self.next_page_token + + field_dict: Dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "announcements": announcements, + } + ) + if next_page_token is not UNSET: + field_dict["nextPageToken"] = next_page_token + + field_dict = {k: v for k, v in field_dict.items() if v != UNSET} + if pick_by_predicate is not None: + field_dict = {k: v for k, v in field_dict.items() if pick_by_predicate(v)} + + return field_dict + + @classmethod + def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + from ..models.announcement import Announcement + + d = src_dict.copy() + announcements = [] + _announcements = d.pop("announcements") + for announcements_item_data in _announcements: + announcements_item = Announcement.from_dict(announcements_item_data) + + announcements.append(announcements_item) + + next_page_token = d.pop("nextPageToken", UNSET) + + announcements_response = cls( + announcements=announcements, + next_page_token=next_page_token, + ) + + announcements_response.additional_properties = d + return announcements_response + + @property + def additional_keys(self) -> List[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/qcs_api_client/models/billing_customer.py b/qcs_api_client/models/billing_customer.py index ac7403f..163f41d 100644 --- a/qcs_api_client/models/billing_customer.py +++ b/qcs_api_client/models/billing_customer.py @@ -15,7 +15,7 @@ @_attrs_define class BillingCustomer: - """A representation of a QCS's account billing customer. Note, `balance` does not account for the upcoming invoice. + """Billing account information of a particular QCS account. Attributes: email (str): diff --git a/qcs_api_client/models/billing_invoice_line.py b/qcs_api_client/models/billing_invoice_line.py index e5e33ac..082c392 100644 --- a/qcs_api_client/models/billing_invoice_line.py +++ b/qcs_api_client/models/billing_invoice_line.py @@ -10,12 +10,12 @@ from ..util.serialization import is_not_none -from typing import Union from ..models.billing_invoice_line_line_item_type import BillingInvoiceLineLineItemType +from typing import Union if TYPE_CHECKING: - from ..models.billing_invoice_line_metadata import BillingInvoiceLineMetadata from ..models.billing_price import BillingPrice + from ..models.billing_invoice_line_metadata import BillingInvoiceLineMetadata T = TypeVar("T", bound="BillingInvoiceLine") @@ -34,7 +34,9 @@ class BillingInvoiceLine: metadata (BillingInvoiceLineMetadata): quantity (int): invoice_item (Union[Unset, str]): - price (Union[Unset, BillingPrice]): The price schedule for a particular service applied to an invoice line item. + price (Union[Unset, BillingPrice]): A configuration for calculating the cost of `BillingProduct` usage + based on quantity, + and when that cost should be added as an invoice item. subscription (Union[Unset, str]): subscription_item (Union[Unset, str]): """ @@ -103,8 +105,8 @@ def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_no @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - from ..models.billing_invoice_line_metadata import BillingInvoiceLineMetadata from ..models.billing_price import BillingPrice + from ..models.billing_invoice_line_metadata import BillingInvoiceLineMetadata d = src_dict.copy() amount = d.pop("amount") diff --git a/qcs_api_client/models/billing_price.py b/qcs_api_client/models/billing_price.py index f8b005d..f4b64a1 100644 --- a/qcs_api_client/models/billing_price.py +++ b/qcs_api_client/models/billing_price.py @@ -10,16 +10,16 @@ from ..util.serialization import is_not_none -from ..models.billing_price_tiers_mode import BillingPriceTiersMode from typing import Union -from ..models.billing_price_scheme import BillingPriceScheme from ..models.billing_price_object import BillingPriceObject +from ..models.billing_price_scheme import BillingPriceScheme from ..models.billing_price_price_type import BillingPricePriceType +from ..models.billing_price_tiers_mode import BillingPriceTiersMode if TYPE_CHECKING: from ..models.billing_product import BillingProduct - from ..models.tier import Tier from ..models.billing_price_recurrence import BillingPriceRecurrence + from ..models.tier import Tier T = TypeVar("T", bound="BillingPrice") @@ -27,31 +27,35 @@ @_attrs_define class BillingPrice: - """The price schedule for a particular service applied to an invoice line item. - - Attributes: - id (str): Unique identifier for the object. - active (Union[Unset, bool]): Whether the price can be used for new purchases. - billing_scheme (Union[Unset, BillingPriceScheme]): Describes how to compute the price per period. Either - `per_unit` or `tiered`. `per_unit` indicates that the fixed amount (specified in `unitAmount` or - `unitAmountDecimal`) will be charged per unit in `quantity` (for prices with `usageType=licensed`), or per unit - of total usage (for prices with `usageType=metered`). `tiered` indicates that the unit pricing will be computed - using a tiering strategy as defined using the `tiers` and `tiersMode` attributes. - object_ (Union[Unset, BillingPriceObject]): String representing the object's type. Objects of the same type - share the same value. - price_type (Union[Unset, BillingPricePriceType]): One of `one_time` or `recurring` depending on whether the - price is for a one-time purchase or a recurring (subscription) purchase. - product (Union[Unset, BillingProduct]): A QCS service product. This may represent one time (such as - reservations) or metered services. - recurring (Union[Unset, BillingPriceRecurrence]): The recurring components of a price such as `interval` and - `usageType`. - tiers (Union[Unset, List['Tier']]): Each element represents a pricing tier. This parameter requires - `billingScheme` to be set to `tiered`. See also the documentation for `billingScheme`. - tiers_mode (Union[Unset, BillingPriceTiersMode]): Defines if the tiering price should be `graduated` or `volume` - based. In `volume`-based tiering, the maximum quantity within a period determines the per unit price, in - `graduated` tiering pricing can successively change as the quantity grows. - unit_amount_decimal (Union[Unset, float]): The unit amount in `currency` to be charged. Only set if - `billingScheme=per_unit`. + """A configuration for calculating the cost of `BillingProduct` usage + based on quantity, + and when that cost should be added as an invoice item. + + Attributes: + id (str): Unique identifier for the object. + active (Union[Unset, bool]): Whether the price can be used for new purchases. + billing_scheme (Union[Unset, BillingPriceScheme]): Use `per_unit` to charge a linear rate per quantity + (recommended). + Use `tiered` to charge a dynamic rate based on quantity as defined in the + `tiers` of a `BillingPice`. + object_ (Union[Unset, BillingPriceObject]): This object's type, which is always `price`. + price_type (Union[Unset, BillingPricePriceType]): Use `one_time` to invoice immediately based on a single usage + report, e.g. purchasing a QPU reservation. + Use `recurring` to aggregate usage reports over an interval and then invoice + once based on `BillingPriceRecurrence`, e.g. on-demand QPU usage. + product (Union[Unset, BillingProduct]): A QCS service product, such as reservation time or on-demand execution. + One product can be associated with multiple prices, which may be associated + to particular resources or customers. + recurring (Union[Unset, BillingPriceRecurrence]): How to invoice for the usage of a product that has a recurring + (subscription) price. + tiers (Union[Unset, List['Tier']]): Configure how price should be calculated based on quantity + when `billingScheme=tiered`. + Requires at least two tiers. + tiers_mode (Union[Unset, BillingPriceTiersMode]): Use `graduated` to apply each tier calculation to the portion + of relevant quantity, e.g. how US federal tax brackets work. + Use `volume` to apply the highest relevant tier to the entire quantity. + unit_amount_decimal (Union[Unset, float]): The amount of `currency` to charge per quantity used. + Requires that `billingScheme=per_unit`. """ id: str @@ -139,8 +143,8 @@ def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_no @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: from ..models.billing_product import BillingProduct - from ..models.tier import Tier from ..models.billing_price_recurrence import BillingPriceRecurrence + from ..models.tier import Tier d = src_dict.copy() id = d.pop("id") diff --git a/qcs_api_client/models/billing_price_recurrence.py b/qcs_api_client/models/billing_price_recurrence.py index abadd67..691d763 100644 --- a/qcs_api_client/models/billing_price_recurrence.py +++ b/qcs_api_client/models/billing_price_recurrence.py @@ -10,12 +10,12 @@ from ..util.serialization import is_not_none -from typing import Union -from ..models.billing_price_recurrence_interval import BillingPriceRecurrenceInterval from ..models.billing_price_recurrence_usage_type import BillingPriceRecurrenceUsageType from ..models.billing_price_recurrence_aggregate_usage import ( BillingPriceRecurrenceAggregateUsage, ) +from typing import Union +from ..models.billing_price_recurrence_interval import BillingPriceRecurrenceInterval T = TypeVar("T", bound="BillingPriceRecurrence") @@ -23,13 +23,23 @@ @_attrs_define class BillingPriceRecurrence: - """The recurring components of a price such as `interval` and `usageType`. - - Attributes: - interval (BillingPriceRecurrenceInterval): - aggregate_usage (Union[Unset, BillingPriceRecurrenceAggregateUsage]): - interval_count (Union[Unset, int]): - usage_type (Union[Unset, BillingPriceRecurrenceUsageType]): + """How to invoice for the usage of a product that has a recurring + (subscription) price. + + Attributes: + interval (BillingPriceRecurrenceInterval): The frequency at which recurring usage should be billed. + Using `month` is recommended. + aggregate_usage (Union[Unset, BillingPriceRecurrenceAggregateUsage]): How to determine the aggregate usage over + the `interval` when + `usageType=metered`. + Using `sum` is recommended. + interval_count (Union[Unset, int]): The number of `interval` units between each billing cycle. + For example, `interval=month` and `intervalCount=1` means every month + (recommended). + usage_type (Union[Unset, BillingPriceRecurrenceUsageType]): Use `metered` to calculate a dynamic quantity based + on reported + usage records (recommended). + Use `licensed` when you provide a fixed quantity, e.g. a TV subscription. """ interval: BillingPriceRecurrenceInterval diff --git a/qcs_api_client/models/billing_product.py b/qcs_api_client/models/billing_product.py index a6702fb..f8b4a3e 100644 --- a/qcs_api_client/models/billing_product.py +++ b/qcs_api_client/models/billing_product.py @@ -19,16 +19,18 @@ @_attrs_define class BillingProduct: - """A QCS service product. This may represent one time (such as reservations) or metered services. - - Attributes: - id (str): Unique identifier for the object. - name (str): This name will show up on associated invoice line item descriptions. - object_ (BillingProductObject): String representing the object's type. Objects of the same type share the same - value. - description (Union[Unset, str]): - unit_label (Union[Unset, str]): A label that represents units of this product. When set, this will be included - in associated invoice line item descriptions. + """A QCS service product, such as reservation time or on-demand execution. + One product can be associated with multiple prices, which may be associated + to particular resources or customers. + + Attributes: + id (str): Unique identifier for the object. + name (str): This name will show up on associated invoice line item descriptions. + object_ (BillingProductObject): This object's type, which is always `product`. + description (Union[Unset, str]): + unit_label (Union[Unset, str]): A label for units of this product which appears on customer + invoices, e.g. "microseconds" for on-demand execution or "minutes" for + qpu reservations. """ id: str diff --git a/qcs_api_client/models/characteristic.py b/qcs_api_client/models/characteristic.py index 1707d68..a7366c1 100644 --- a/qcs_api_client/models/characteristic.py +++ b/qcs_api_client/models/characteristic.py @@ -8,11 +8,10 @@ from ..util.serialization import is_not_none +from typing import cast, List from typing import Union -from dateutil.parser import isoparse -from typing import cast -from typing import List import datetime +from dateutil.parser import isoparse T = TypeVar("T", bound="Characteristic") diff --git a/qcs_api_client/models/create_endpoint_parameters.py b/qcs_api_client/models/create_endpoint_parameters.py index 81179eb..e2a1c69 100644 --- a/qcs_api_client/models/create_endpoint_parameters.py +++ b/qcs_api_client/models/create_endpoint_parameters.py @@ -11,8 +11,8 @@ from typing import Union -from typing import cast from ..models.nomad_job_datacenters import NomadJobDatacenters +from typing import cast T = TypeVar("T", bound="CreateEndpointParameters") diff --git a/qcs_api_client/models/create_engagement_request.py b/qcs_api_client/models/create_engagement_request.py index 2f586c9..480abcc 100644 --- a/qcs_api_client/models/create_engagement_request.py +++ b/qcs_api_client/models/create_engagement_request.py @@ -10,9 +10,9 @@ from ..util.serialization import is_not_none -from typing import cast from typing import Union from ..models.account_type import AccountType +from typing import cast T = TypeVar("T", bound="CreateEngagementRequest") diff --git a/qcs_api_client/models/create_reservation_request.py b/qcs_api_client/models/create_reservation_request.py index 0079480..262e3b4 100644 --- a/qcs_api_client/models/create_reservation_request.py +++ b/qcs_api_client/models/create_reservation_request.py @@ -12,9 +12,9 @@ from typing import Union -from dateutil.parser import isoparse -from ..models.account_type import AccountType import datetime +from ..models.account_type import AccountType +from dateutil.parser import isoparse T = TypeVar("T", bound="CreateReservationRequest") diff --git a/qcs_api_client/models/endpoint.py b/qcs_api_client/models/endpoint.py index d359b0f..1cc9390 100644 --- a/qcs_api_client/models/endpoint.py +++ b/qcs_api_client/models/endpoint.py @@ -10,7 +10,8 @@ from ..util.serialization import is_not_none -from typing import cast, Union +from typing import cast +from typing import Union if TYPE_CHECKING: from ..models.endpoint_addresses import EndpointAddresses diff --git a/qcs_api_client/models/engagement_with_credentials.py b/qcs_api_client/models/engagement_with_credentials.py index d43fc5f..e41a06a 100644 --- a/qcs_api_client/models/engagement_with_credentials.py +++ b/qcs_api_client/models/engagement_with_credentials.py @@ -10,8 +10,8 @@ from ..util.serialization import is_not_none -from typing import Union from typing import cast +from typing import Union from ..models.account_type import AccountType if TYPE_CHECKING: diff --git a/qcs_api_client/models/event_billing_price_rate.py b/qcs_api_client/models/event_billing_price_rate.py new file mode 100644 index 0000000..3c597dc --- /dev/null +++ b/qcs_api_client/models/event_billing_price_rate.py @@ -0,0 +1,110 @@ +from typing import Any, Callable, Dict, Type, TypeVar, Optional + +from typing import List + + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset +from ..util.serialization import is_not_none + + +from typing import Union +from ..models.product import Product + + +T = TypeVar("T", bound="EventBillingPriceRate") + + +@_attrs_define +class EventBillingPriceRate: + """The per-unit price associated with a particular QCS service product, + and (optionally) with a particular quantum processor. + + Attributes: + id (int): + product (Product): The set of known QCS service products. + quantum_processor_id (Union[Unset, str]): If unset, this per-unit price applies to any quantum processor. + unit_amount_decimal (Union[Unset, float]): The unit amount in currency to be charged. + unit_label (Union[Unset, str]): Human-readable unit label infomation. + """ + + id: int + product: Product + quantum_processor_id: Union[Unset, str] = UNSET + unit_amount_decimal: Union[Unset, float] = UNSET + unit_label: Union[Unset, str] = UNSET + additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_none) -> Dict[str, Any]: + id = self.id + + product = self.product.value + + quantum_processor_id = self.quantum_processor_id + + unit_amount_decimal = self.unit_amount_decimal + + unit_label = self.unit_label + + field_dict: Dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "id": id, + "product": product, + } + ) + if quantum_processor_id is not UNSET: + field_dict["quantumProcessorId"] = quantum_processor_id + if unit_amount_decimal is not UNSET: + field_dict["unitAmountDecimal"] = unit_amount_decimal + if unit_label is not UNSET: + field_dict["unitLabel"] = unit_label + + field_dict = {k: v for k, v in field_dict.items() if v != UNSET} + if pick_by_predicate is not None: + field_dict = {k: v for k, v in field_dict.items() if pick_by_predicate(v)} + + return field_dict + + @classmethod + def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + d = src_dict.copy() + id = d.pop("id") + + product = Product(d.pop("product")) + + quantum_processor_id = d.pop("quantumProcessorId", UNSET) + + unit_amount_decimal = d.pop("unitAmountDecimal", UNSET) + + unit_label = d.pop("unitLabel", UNSET) + + event_billing_price_rate = cls( + id=id, + product=product, + quantum_processor_id=quantum_processor_id, + unit_amount_decimal=unit_amount_decimal, + unit_label=unit_label, + ) + + event_billing_price_rate.additional_properties = d + return event_billing_price_rate + + @property + def additional_keys(self) -> List[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/qcs_api_client/models/get_account_event_billing_price_request.py b/qcs_api_client/models/get_account_event_billing_price_request.py new file mode 100644 index 0000000..3012bab --- /dev/null +++ b/qcs_api_client/models/get_account_event_billing_price_request.py @@ -0,0 +1,84 @@ +from typing import Any, Callable, Dict, Type, TypeVar, Optional + +from typing import List + + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset +from ..util.serialization import is_not_none + + +from typing import Union +from ..models.product import Product + + +T = TypeVar("T", bound="GetAccountEventBillingPriceRequest") + + +@_attrs_define +class GetAccountEventBillingPriceRequest: + """Property `quantumProcessorId` is currently required for all `product`s, however in the future there may be + `product`s that do not require a `quantumProcessorId`. + + Attributes: + product (Product): The set of known QCS service products. + quantum_processor_id (Union[Unset, str]): + """ + + product: Product + quantum_processor_id: Union[Unset, str] = UNSET + additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_none) -> Dict[str, Any]: + product = self.product.value + + quantum_processor_id = self.quantum_processor_id + + field_dict: Dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "product": product, + } + ) + if quantum_processor_id is not UNSET: + field_dict["quantumProcessorId"] = quantum_processor_id + + field_dict = {k: v for k, v in field_dict.items() if v != UNSET} + if pick_by_predicate is not None: + field_dict = {k: v for k, v in field_dict.items() if pick_by_predicate(v)} + + return field_dict + + @classmethod + def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + d = src_dict.copy() + product = Product(d.pop("product")) + + quantum_processor_id = d.pop("quantumProcessorId", UNSET) + + get_account_event_billing_price_request = cls( + product=product, + quantum_processor_id=quantum_processor_id, + ) + + get_account_event_billing_price_request.additional_properties = d + return get_account_event_billing_price_request + + @property + def additional_keys(self) -> List[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/qcs_api_client/models/instruction_set_architecture.py b/qcs_api_client/models/instruction_set_architecture.py index 3ca0f9d..2cc2c53 100644 --- a/qcs_api_client/models/instruction_set_architecture.py +++ b/qcs_api_client/models/instruction_set_architecture.py @@ -10,8 +10,8 @@ from typing import List if TYPE_CHECKING: - from ..models.architecture import Architecture from ..models.operation import Operation + from ..models.architecture import Architecture T = TypeVar("T", bound="InstructionSetArchitecture") @@ -90,8 +90,8 @@ def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_no @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - from ..models.architecture import Architecture from ..models.operation import Operation + from ..models.architecture import Architecture d = src_dict.copy() architecture = Architecture.from_dict(d.pop("architecture")) diff --git a/qcs_api_client/models/invite_user_request.py b/qcs_api_client/models/invite_user_request.py index 919a968..f748a82 100644 --- a/qcs_api_client/models/invite_user_request.py +++ b/qcs_api_client/models/invite_user_request.py @@ -21,16 +21,20 @@ class InviteUserRequest: """ Attributes: email (str): + billing_organization_id (Union[Unset, int]): group_name (Union[Unset, str]): """ email: str + billing_organization_id: Union[Unset, int] = UNSET group_name: Union[Unset, str] = UNSET additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_none) -> Dict[str, Any]: email = self.email + billing_organization_id = self.billing_organization_id + group_name = self.group_name field_dict: Dict[str, Any] = {} @@ -40,6 +44,8 @@ def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_no "email": email, } ) + if billing_organization_id is not UNSET: + field_dict["billingOrganizationId"] = billing_organization_id if group_name is not UNSET: field_dict["groupName"] = group_name @@ -54,10 +60,13 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: d = src_dict.copy() email = d.pop("email") + billing_organization_id = d.pop("billingOrganizationId", UNSET) + group_name = d.pop("groupName", UNSET) invite_user_request = cls( email=email, + billing_organization_id=billing_organization_id, group_name=group_name, ) diff --git a/qcs_api_client/models/list_instruction_set_architecture_response.py b/qcs_api_client/models/list_instruction_set_architecture_response.py new file mode 100644 index 0000000..8c72778 --- /dev/null +++ b/qcs_api_client/models/list_instruction_set_architecture_response.py @@ -0,0 +1,96 @@ +from typing import Any, Callable, Dict, Type, TypeVar, Optional, TYPE_CHECKING + +from typing import List + + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset +from ..util.serialization import is_not_none + + +from typing import Union + +if TYPE_CHECKING: + from ..models.instruction_set_architecture import InstructionSetArchitecture + + +T = TypeVar("T", bound="ListInstructionSetArchitectureResponse") + + +@_attrs_define +class ListInstructionSetArchitectureResponse: + """ + Attributes: + instruction_set_architectures (List['InstructionSetArchitecture']): + next_page_token (Union[Unset, str]): Send an opaque page token returned from a prior request + """ + + instruction_set_architectures: List["InstructionSetArchitecture"] + next_page_token: Union[Unset, str] = UNSET + additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_none) -> Dict[str, Any]: + instruction_set_architectures = [] + for instruction_set_architectures_item_data in self.instruction_set_architectures: + instruction_set_architectures_item = instruction_set_architectures_item_data.to_dict() + instruction_set_architectures.append(instruction_set_architectures_item) + + next_page_token = self.next_page_token + + field_dict: Dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "instructionSetArchitectures": instruction_set_architectures, + } + ) + if next_page_token is not UNSET: + field_dict["nextPageToken"] = next_page_token + + field_dict = {k: v for k, v in field_dict.items() if v != UNSET} + if pick_by_predicate is not None: + field_dict = {k: v for k, v in field_dict.items() if pick_by_predicate(v)} + + return field_dict + + @classmethod + def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + from ..models.instruction_set_architecture import InstructionSetArchitecture + + d = src_dict.copy() + instruction_set_architectures = [] + _instruction_set_architectures = d.pop("instructionSetArchitectures") + for instruction_set_architectures_item_data in _instruction_set_architectures: + instruction_set_architectures_item = InstructionSetArchitecture.from_dict( + instruction_set_architectures_item_data + ) + + instruction_set_architectures.append(instruction_set_architectures_item) + + next_page_token = d.pop("nextPageToken", UNSET) + + list_instruction_set_architecture_response = cls( + instruction_set_architectures=instruction_set_architectures, + next_page_token=next_page_token, + ) + + list_instruction_set_architecture_response.additional_properties = d + return list_instruction_set_architecture_response + + @property + def additional_keys(self) -> List[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/qcs_api_client/models/nomad_job_datacenters.py b/qcs_api_client/models/nomad_job_datacenters.py index 22ebf52..1eaafde 100644 --- a/qcs_api_client/models/nomad_job_datacenters.py +++ b/qcs_api_client/models/nomad_job_datacenters.py @@ -4,6 +4,7 @@ class NomadJobDatacenters(str, Enum): BERKELEY_775 = "berkeley-775" FREMONT_FAB = "fremont-fab" + RIGETTI_GB_1 = "rigetti-gb-1" def __str__(self) -> str: return str(self.value) diff --git a/qcs_api_client/models/operation.py b/qcs_api_client/models/operation.py index 9915d54..fffbe64 100644 --- a/qcs_api_client/models/operation.py +++ b/qcs_api_client/models/operation.py @@ -7,13 +7,13 @@ from ..util.serialization import is_not_none -from typing import Union from typing import List +from typing import Union if TYPE_CHECKING: from ..models.characteristic import Characteristic - from ..models.operation_site import OperationSite from ..models.parameter import Parameter + from ..models.operation_site import OperationSite T = TypeVar("T", bound="Operation") @@ -79,8 +79,8 @@ def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_no @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: from ..models.characteristic import Characteristic - from ..models.operation_site import OperationSite from ..models.parameter import Parameter + from ..models.operation_site import OperationSite d = src_dict.copy() characteristics = [] diff --git a/qcs_api_client/models/product.py b/qcs_api_client/models/product.py new file mode 100644 index 0000000..f1871fb --- /dev/null +++ b/qcs_api_client/models/product.py @@ -0,0 +1,10 @@ +from enum import Enum + + +class Product(str, Enum): + QPUJOBCOMPLETION = "qpuJobCompletion" + QPUJOBTIME = "qpuJobTime" + RESERVATIONCREATION = "reservationCreation" + + def __str__(self) -> str: + return str(self.value) diff --git a/qcs_api_client/models/quantum_processor_calendar.py b/qcs_api_client/models/quantum_processor_calendar.py new file mode 100644 index 0000000..3ce9b9d --- /dev/null +++ b/qcs_api_client/models/quantum_processor_calendar.py @@ -0,0 +1,72 @@ +from typing import Any, Callable, Dict, Type, TypeVar, Optional + +from typing import List + + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset +from ..util.serialization import is_not_none + + +from typing import Union + + +T = TypeVar("T", bound="QuantumProcessorCalendar") + + +@_attrs_define +class QuantumProcessorCalendar: + """Details about calendars related to a quantum processor. + + Attributes: + maintenance_i_cal (Union[Unset, str]): This calendar's schedule contains maintenance events for the QPU, during + which execution is not available. + """ + + maintenance_i_cal: Union[Unset, str] = UNSET + additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_none) -> Dict[str, Any]: + maintenance_i_cal = self.maintenance_i_cal + + field_dict: Dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({}) + if maintenance_i_cal is not UNSET: + field_dict["maintenanceICal"] = maintenance_i_cal + + field_dict = {k: v for k, v in field_dict.items() if v != UNSET} + if pick_by_predicate is not None: + field_dict = {k: v for k, v in field_dict.items() if pick_by_predicate(v)} + + return field_dict + + @classmethod + def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + d = src_dict.copy() + maintenance_i_cal = d.pop("maintenanceICal", UNSET) + + quantum_processor_calendar = cls( + maintenance_i_cal=maintenance_i_cal, + ) + + quantum_processor_calendar.additional_properties = d + return quantum_processor_calendar + + @property + def additional_keys(self) -> List[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/qcs_api_client/models/reservation.py b/qcs_api_client/models/reservation.py index 5839dee..291cc2c 100644 --- a/qcs_api_client/models/reservation.py +++ b/qcs_api_client/models/reservation.py @@ -12,9 +12,9 @@ from typing import Union -from dateutil.parser import isoparse -from ..models.account_type import AccountType import datetime +from ..models.account_type import AccountType +from dateutil.parser import isoparse T = TypeVar("T", bound="Reservation") diff --git a/qcs_api_client/models/tier.py b/qcs_api_client/models/tier.py index 873d356..aaf8e69 100644 --- a/qcs_api_client/models/tier.py +++ b/qcs_api_client/models/tier.py @@ -18,13 +18,21 @@ @_attrs_define class Tier: - """ - Attributes: - up_to (int): A value of `-1` will imply that this tier is up to Infinity. - flat_amount (Union[Unset, int]): - flat_amount_decimal (Union[Unset, float]): - unit_amount (Union[Unset, int]): - unit_amount_decimal (Union[Unset, float]): + """Use `flatAmount` to charge a fixed amount for the quantity relevant + to the tier. + Use `unitAmount` to charge a linear rate for the quantity relevant to the + tier. + Only one field between `flatAmount`, `flatAmountDecimal`, `unitAmount`, or + `unitAmountDecimal` should be set. + + Attributes: + up_to (int): The upper bound of product quantity relevant to this tier. + The highest tier should be open ended, represented by an `upTo` value + of `-1`. + flat_amount (Union[Unset, int]): + flat_amount_decimal (Union[Unset, float]): + unit_amount (Union[Unset, int]): + unit_amount_decimal (Union[Unset, float]): """ up_to: int diff --git a/qcs_api_client/models/translate_native_quil_to_encrypted_binary_response.py b/qcs_api_client/models/translate_native_quil_to_encrypted_binary_response.py index d13c4af..e0d4944 100644 --- a/qcs_api_client/models/translate_native_quil_to_encrypted_binary_response.py +++ b/qcs_api_client/models/translate_native_quil_to_encrypted_binary_response.py @@ -10,8 +10,8 @@ from ..util.serialization import is_not_none -from typing import Union from typing import cast +from typing import Union if TYPE_CHECKING: from ..models.translate_native_quil_to_encrypted_binary_response_memory_descriptors import ( diff --git a/qcs_api_client/models/update_viewer_user_profile_request.py b/qcs_api_client/models/update_viewer_user_profile_request.py new file mode 100644 index 0000000..0f9403a --- /dev/null +++ b/qcs_api_client/models/update_viewer_user_profile_request.py @@ -0,0 +1,85 @@ +from typing import Any, Callable, Dict, Type, TypeVar, Optional + +from typing import List + + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET +from ..util.serialization import is_not_none + + +T = TypeVar("T", bound="UpdateViewerUserProfileRequest") + + +@_attrs_define +class UpdateViewerUserProfileRequest: + """ + Attributes: + first_name (str): + last_name (str): + organization (str): + """ + + first_name: str + last_name: str + organization: str + additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_none) -> Dict[str, Any]: + first_name = self.first_name + + last_name = self.last_name + + organization = self.organization + + field_dict: Dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "firstName": first_name, + "lastName": last_name, + "organization": organization, + } + ) + + field_dict = {k: v for k, v in field_dict.items() if v != UNSET} + if pick_by_predicate is not None: + field_dict = {k: v for k, v in field_dict.items() if pick_by_predicate(v)} + + return field_dict + + @classmethod + def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + d = src_dict.copy() + first_name = d.pop("firstName") + + last_name = d.pop("lastName") + + organization = d.pop("organization") + + update_viewer_user_profile_request = cls( + first_name=first_name, + last_name=last_name, + organization=organization, + ) + + update_viewer_user_profile_request.additional_properties = d + return update_viewer_user_profile_request + + @property + def additional_keys(self) -> List[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/qcs_api_client/models/user.py b/qcs_api_client/models/user.py index f8a2794..35ff0e5 100644 --- a/qcs_api_client/models/user.py +++ b/qcs_api_client/models/user.py @@ -12,8 +12,8 @@ from typing import Union -from dateutil.parser import isoparse import datetime +from dateutil.parser import isoparse if TYPE_CHECKING: from ..models.user_profile import UserProfile diff --git a/qcs_api_client/models/validation_error.py b/qcs_api_client/models/validation_error.py index c40e9ff..5716641 100644 --- a/qcs_api_client/models/validation_error.py +++ b/qcs_api_client/models/validation_error.py @@ -10,9 +10,9 @@ from ..util.serialization import is_not_none -from typing import cast from typing import Union from ..models.validation_error_in import ValidationErrorIn +from typing import cast T = TypeVar("T", bound="ValidationError") diff --git a/qcs_api_client/models/viewer_user_onboarding_completed.py b/qcs_api_client/models/viewer_user_onboarding_completed.py new file mode 100644 index 0000000..347dc9d --- /dev/null +++ b/qcs_api_client/models/viewer_user_onboarding_completed.py @@ -0,0 +1,69 @@ +from typing import Any, Callable, Dict, Type, TypeVar, Optional + +from typing import List + + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET +from ..util.serialization import is_not_none + + +T = TypeVar("T", bound="ViewerUserOnboardingCompleted") + + +@_attrs_define +class ViewerUserOnboardingCompleted: + """ + Attributes: + onboarding_completed (bool): + """ + + onboarding_completed: bool + additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self, pick_by_predicate: Optional[Callable[[Any], bool]] = is_not_none) -> Dict[str, Any]: + onboarding_completed = self.onboarding_completed + + field_dict: Dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "onboardingCompleted": onboarding_completed, + } + ) + + field_dict = {k: v for k, v in field_dict.items() if v != UNSET} + if pick_by_predicate is not None: + field_dict = {k: v for k, v in field_dict.items() if pick_by_predicate(v)} + + return field_dict + + @classmethod + def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + d = src_dict.copy() + onboarding_completed = d.pop("onboardingCompleted") + + viewer_user_onboarding_completed = cls( + onboarding_completed=onboarding_completed, + ) + + viewer_user_onboarding_completed.additional_properties = d + return viewer_user_onboarding_completed + + @property + def additional_keys(self) -> List[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/qcs_api_client/operations/asyncio/__init__.py b/qcs_api_client/operations/asyncio/__init__.py index b0623ba..5cf21d3 100644 --- a/qcs_api_client/operations/asyncio/__init__.py +++ b/qcs_api_client/operations/asyncio/__init__.py @@ -1,10 +1,16 @@ +from qcs_api_client.api.account.activate_user import asyncio as activate_user from qcs_api_client.api.account.add_group_user import asyncio as add_group_user +from qcs_api_client.api.account.dismiss_viewer_announcement import asyncio as dismiss_viewer_announcement from qcs_api_client.api.account.get_group_balance import asyncio as get_group_balance from qcs_api_client.api.account.get_group_billing_customer import asyncio as get_group_billing_customer from qcs_api_client.api.account.get_group_upcoming_billing_invoice import asyncio as get_group_upcoming_billing_invoice from qcs_api_client.api.account.get_user_balance import asyncio as get_user_balance from qcs_api_client.api.account.get_user_billing_customer import asyncio as get_user_billing_customer +from qcs_api_client.api.account.get_user_event_billing_price import asyncio as get_user_event_billing_price from qcs_api_client.api.account.get_user_upcoming_billing_invoice import asyncio as get_user_upcoming_billing_invoice +from qcs_api_client.api.account.get_viewer_user_onboarding_completed import ( + asyncio as get_viewer_user_onboarding_completed, +) from qcs_api_client.api.account.list_group_billing_invoice_lines import asyncio as list_group_billing_invoice_lines from qcs_api_client.api.account.list_group_billing_invoices import asyncio as list_group_billing_invoices from qcs_api_client.api.account.list_group_upcoming_billing_invoice_lines import ( @@ -17,7 +23,12 @@ from qcs_api_client.api.account.list_user_upcoming_billing_invoice_lines import ( asyncio as list_user_upcoming_billing_invoice_lines, ) +from qcs_api_client.api.account.list_viewer_announcements import asyncio as list_viewer_announcements +from qcs_api_client.api.account.put_viewer_user_onboarding_completed import ( + asyncio as put_viewer_user_onboarding_completed, +) from qcs_api_client.api.account.remove_group_user import asyncio as remove_group_user +from qcs_api_client.api.account.update_viewer_user_profile import asyncio as update_viewer_user_profile from qcs_api_client.api.authentication.auth_email_password_reset_token import asyncio as auth_email_password_reset_token from qcs_api_client.api.authentication.auth_get_user import asyncio as auth_get_user from qcs_api_client.api.authentication.auth_reset_password import asyncio as auth_reset_password @@ -39,6 +50,9 @@ asyncio as get_instruction_set_architecture, ) from qcs_api_client.api.quantum_processors.get_quantum_processor import asyncio as get_quantum_processor +from qcs_api_client.api.quantum_processors.list_instruction_set_architectures import ( + asyncio as list_instruction_set_architectures, +) from qcs_api_client.api.quantum_processors.list_quantum_processor_accessors import ( asyncio as list_quantum_processor_accessors, ) @@ -46,6 +60,7 @@ from qcs_api_client.api.reservations.create_reservation import asyncio as create_reservation from qcs_api_client.api.reservations.delete_reservation import asyncio as delete_reservation from qcs_api_client.api.reservations.find_available_reservations import asyncio as find_available_reservations +from qcs_api_client.api.reservations.get_quantum_processor_calendar import asyncio as get_quantum_processor_calendar from qcs_api_client.api.reservations.list_group_reservations import asyncio as list_group_reservations from qcs_api_client.api.reservations.list_reservations import asyncio as list_reservations from qcs_api_client.api.translation.get_quilt_calibrations import asyncio as get_quilt_calibrations diff --git a/qcs_api_client/operations/asyncio_from_dict/__init__.py b/qcs_api_client/operations/asyncio_from_dict/__init__.py index e9d7779..c2dabc7 100644 --- a/qcs_api_client/operations/asyncio_from_dict/__init__.py +++ b/qcs_api_client/operations/asyncio_from_dict/__init__.py @@ -1,4 +1,6 @@ +from qcs_api_client.api.account.activate_user import asyncio_from_dict as activate_user from qcs_api_client.api.account.add_group_user import asyncio_from_dict as add_group_user +from qcs_api_client.api.account.dismiss_viewer_announcement import asyncio_from_dict as dismiss_viewer_announcement from qcs_api_client.api.account.get_group_balance import asyncio_from_dict as get_group_balance from qcs_api_client.api.account.get_group_billing_customer import asyncio_from_dict as get_group_billing_customer from qcs_api_client.api.account.get_group_upcoming_billing_invoice import ( @@ -6,9 +8,13 @@ ) from qcs_api_client.api.account.get_user_balance import asyncio_from_dict as get_user_balance from qcs_api_client.api.account.get_user_billing_customer import asyncio_from_dict as get_user_billing_customer +from qcs_api_client.api.account.get_user_event_billing_price import asyncio_from_dict as get_user_event_billing_price from qcs_api_client.api.account.get_user_upcoming_billing_invoice import ( asyncio_from_dict as get_user_upcoming_billing_invoice, ) +from qcs_api_client.api.account.get_viewer_user_onboarding_completed import ( + asyncio_from_dict as get_viewer_user_onboarding_completed, +) from qcs_api_client.api.account.list_group_billing_invoice_lines import ( asyncio_from_dict as list_group_billing_invoice_lines, ) @@ -25,7 +31,12 @@ from qcs_api_client.api.account.list_user_upcoming_billing_invoice_lines import ( asyncio_from_dict as list_user_upcoming_billing_invoice_lines, ) +from qcs_api_client.api.account.list_viewer_announcements import asyncio_from_dict as list_viewer_announcements +from qcs_api_client.api.account.put_viewer_user_onboarding_completed import ( + asyncio_from_dict as put_viewer_user_onboarding_completed, +) from qcs_api_client.api.account.remove_group_user import asyncio_from_dict as remove_group_user +from qcs_api_client.api.account.update_viewer_user_profile import asyncio_from_dict as update_viewer_user_profile from qcs_api_client.api.authentication.auth_email_password_reset_token import ( asyncio_from_dict as auth_email_password_reset_token, ) @@ -55,6 +66,9 @@ asyncio_from_dict as get_instruction_set_architecture, ) from qcs_api_client.api.quantum_processors.get_quantum_processor import asyncio_from_dict as get_quantum_processor +from qcs_api_client.api.quantum_processors.list_instruction_set_architectures import ( + asyncio_from_dict as list_instruction_set_architectures, +) from qcs_api_client.api.quantum_processors.list_quantum_processor_accessors import ( asyncio_from_dict as list_quantum_processor_accessors, ) @@ -62,6 +76,9 @@ from qcs_api_client.api.reservations.create_reservation import asyncio_from_dict as create_reservation from qcs_api_client.api.reservations.delete_reservation import asyncio_from_dict as delete_reservation from qcs_api_client.api.reservations.find_available_reservations import asyncio_from_dict as find_available_reservations +from qcs_api_client.api.reservations.get_quantum_processor_calendar import ( + asyncio_from_dict as get_quantum_processor_calendar, +) from qcs_api_client.api.reservations.list_group_reservations import asyncio_from_dict as list_group_reservations from qcs_api_client.api.reservations.list_reservations import asyncio_from_dict as list_reservations from qcs_api_client.api.translation.get_quilt_calibrations import asyncio_from_dict as get_quilt_calibrations diff --git a/qcs_api_client/operations/sync/__init__.py b/qcs_api_client/operations/sync/__init__.py index 079a736..2325158 100644 --- a/qcs_api_client/operations/sync/__init__.py +++ b/qcs_api_client/operations/sync/__init__.py @@ -1,10 +1,14 @@ +from qcs_api_client.api.account.activate_user import sync as activate_user from qcs_api_client.api.account.add_group_user import sync as add_group_user +from qcs_api_client.api.account.dismiss_viewer_announcement import sync as dismiss_viewer_announcement from qcs_api_client.api.account.get_group_balance import sync as get_group_balance from qcs_api_client.api.account.get_group_billing_customer import sync as get_group_billing_customer from qcs_api_client.api.account.get_group_upcoming_billing_invoice import sync as get_group_upcoming_billing_invoice from qcs_api_client.api.account.get_user_balance import sync as get_user_balance from qcs_api_client.api.account.get_user_billing_customer import sync as get_user_billing_customer +from qcs_api_client.api.account.get_user_event_billing_price import sync as get_user_event_billing_price from qcs_api_client.api.account.get_user_upcoming_billing_invoice import sync as get_user_upcoming_billing_invoice +from qcs_api_client.api.account.get_viewer_user_onboarding_completed import sync as get_viewer_user_onboarding_completed from qcs_api_client.api.account.list_group_billing_invoice_lines import sync as list_group_billing_invoice_lines from qcs_api_client.api.account.list_group_billing_invoices import sync as list_group_billing_invoices from qcs_api_client.api.account.list_group_upcoming_billing_invoice_lines import ( @@ -17,7 +21,10 @@ from qcs_api_client.api.account.list_user_upcoming_billing_invoice_lines import ( sync as list_user_upcoming_billing_invoice_lines, ) +from qcs_api_client.api.account.list_viewer_announcements import sync as list_viewer_announcements +from qcs_api_client.api.account.put_viewer_user_onboarding_completed import sync as put_viewer_user_onboarding_completed from qcs_api_client.api.account.remove_group_user import sync as remove_group_user +from qcs_api_client.api.account.update_viewer_user_profile import sync as update_viewer_user_profile from qcs_api_client.api.authentication.auth_email_password_reset_token import sync as auth_email_password_reset_token from qcs_api_client.api.authentication.auth_get_user import sync as auth_get_user from qcs_api_client.api.authentication.auth_reset_password import sync as auth_reset_password @@ -39,6 +46,9 @@ sync as get_instruction_set_architecture, ) from qcs_api_client.api.quantum_processors.get_quantum_processor import sync as get_quantum_processor +from qcs_api_client.api.quantum_processors.list_instruction_set_architectures import ( + sync as list_instruction_set_architectures, +) from qcs_api_client.api.quantum_processors.list_quantum_processor_accessors import ( sync as list_quantum_processor_accessors, ) @@ -46,6 +56,7 @@ from qcs_api_client.api.reservations.create_reservation import sync as create_reservation from qcs_api_client.api.reservations.delete_reservation import sync as delete_reservation from qcs_api_client.api.reservations.find_available_reservations import sync as find_available_reservations +from qcs_api_client.api.reservations.get_quantum_processor_calendar import sync as get_quantum_processor_calendar from qcs_api_client.api.reservations.list_group_reservations import sync as list_group_reservations from qcs_api_client.api.reservations.list_reservations import sync as list_reservations from qcs_api_client.api.translation.get_quilt_calibrations import sync as get_quilt_calibrations diff --git a/qcs_api_client/operations/sync_from_dict/__init__.py b/qcs_api_client/operations/sync_from_dict/__init__.py index 56b4431..c918584 100644 --- a/qcs_api_client/operations/sync_from_dict/__init__.py +++ b/qcs_api_client/operations/sync_from_dict/__init__.py @@ -1,4 +1,6 @@ +from qcs_api_client.api.account.activate_user import sync_from_dict as activate_user from qcs_api_client.api.account.add_group_user import sync_from_dict as add_group_user +from qcs_api_client.api.account.dismiss_viewer_announcement import sync_from_dict as dismiss_viewer_announcement from qcs_api_client.api.account.get_group_balance import sync_from_dict as get_group_balance from qcs_api_client.api.account.get_group_billing_customer import sync_from_dict as get_group_billing_customer from qcs_api_client.api.account.get_group_upcoming_billing_invoice import ( @@ -6,9 +8,13 @@ ) from qcs_api_client.api.account.get_user_balance import sync_from_dict as get_user_balance from qcs_api_client.api.account.get_user_billing_customer import sync_from_dict as get_user_billing_customer +from qcs_api_client.api.account.get_user_event_billing_price import sync_from_dict as get_user_event_billing_price from qcs_api_client.api.account.get_user_upcoming_billing_invoice import ( sync_from_dict as get_user_upcoming_billing_invoice, ) +from qcs_api_client.api.account.get_viewer_user_onboarding_completed import ( + sync_from_dict as get_viewer_user_onboarding_completed, +) from qcs_api_client.api.account.list_group_billing_invoice_lines import ( sync_from_dict as list_group_billing_invoice_lines, ) @@ -23,7 +29,12 @@ from qcs_api_client.api.account.list_user_upcoming_billing_invoice_lines import ( sync_from_dict as list_user_upcoming_billing_invoice_lines, ) +from qcs_api_client.api.account.list_viewer_announcements import sync_from_dict as list_viewer_announcements +from qcs_api_client.api.account.put_viewer_user_onboarding_completed import ( + sync_from_dict as put_viewer_user_onboarding_completed, +) from qcs_api_client.api.account.remove_group_user import sync_from_dict as remove_group_user +from qcs_api_client.api.account.update_viewer_user_profile import sync_from_dict as update_viewer_user_profile from qcs_api_client.api.authentication.auth_email_password_reset_token import ( sync_from_dict as auth_email_password_reset_token, ) @@ -49,6 +60,9 @@ sync_from_dict as get_instruction_set_architecture, ) from qcs_api_client.api.quantum_processors.get_quantum_processor import sync_from_dict as get_quantum_processor +from qcs_api_client.api.quantum_processors.list_instruction_set_architectures import ( + sync_from_dict as list_instruction_set_architectures, +) from qcs_api_client.api.quantum_processors.list_quantum_processor_accessors import ( sync_from_dict as list_quantum_processor_accessors, ) @@ -56,6 +70,9 @@ from qcs_api_client.api.reservations.create_reservation import sync_from_dict as create_reservation from qcs_api_client.api.reservations.delete_reservation import sync_from_dict as delete_reservation from qcs_api_client.api.reservations.find_available_reservations import sync_from_dict as find_available_reservations +from qcs_api_client.api.reservations.get_quantum_processor_calendar import ( + sync_from_dict as get_quantum_processor_calendar, +) from qcs_api_client.api.reservations.list_group_reservations import sync_from_dict as list_group_reservations from qcs_api_client.api.reservations.list_reservations import sync_from_dict as list_reservations from qcs_api_client.api.translation.get_quilt_calibrations import sync_from_dict as get_quilt_calibrations