# coding: utf-8

"""
    Wrk Automation Platform - API v1

    The Wrk API is organized around REST. Our API has predictable resource-oriented URLs, accepts and returns JSON-encoded requests and responses. It uses standard HTTP response codes, authentication, and verbs.  Please note you need will an API key with the appropriate access to use the following APIs. The API key can be obtained from [this page](https://account.wrk.com/api-key) in your Wrk account. To elevate access to your account, please [contact your Sales team](https://www.wrk.com/meet-automation-expert).

    The version of the OpenAPI document: 2.6.0
    Contact: support@wrk.com
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501

import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated

from pydantic import Field, StrictStr
from typing import Optional
from typing_extensions import Annotated
from wrk_platform_sdk.models.get_action_applications200_response import GetActionApplications200Response
from wrk_platform_sdk.models.get_credentials200_response import GetCredentials200Response
from wrk_platform_sdk.models.get_outcomes200_response import GetOutcomes200Response
from wrk_platform_sdk.models.get_wrk_actions200_response import GetWrkActions200Response

from wrk_platform_sdk.api_client import ApiClient, RequestSerialized
from wrk_platform_sdk.api_response import ApiResponse
from wrk_platform_sdk.rest import RESTResponseType


class WrkActionResourcesApi:
    """NOTE: This class is auto generated by OpenAPI Generator
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    def __init__(self, api_client=None) -> None:
        if api_client is None:
            api_client = ApiClient.get_default()
        self.api_client = api_client


    @validate_call
    def get_action_applications(
        self,
        organization: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.")] = None,
        library: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.")] = None,
        name: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> GetActionApplications200Response:
        """Fetch Action Applications

        Retrieves one or more Action Application resources.

        :param organization: Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.
        :type organization: str
        :param library: Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.
        :type library: str
        :param name: Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.
        :type name: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._get_action_applications_serialize(
            organization=organization,
            library=library,
            name=name,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "GetActionApplications200Response",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def get_action_applications_with_http_info(
        self,
        organization: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.")] = None,
        library: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.")] = None,
        name: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[GetActionApplications200Response]:
        """Fetch Action Applications

        Retrieves one or more Action Application resources.

        :param organization: Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.
        :type organization: str
        :param library: Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.
        :type library: str
        :param name: Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.
        :type name: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._get_action_applications_serialize(
            organization=organization,
            library=library,
            name=name,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "GetActionApplications200Response",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def get_action_applications_without_preload_content(
        self,
        organization: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.")] = None,
        library: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.")] = None,
        name: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """Fetch Action Applications

        Retrieves one or more Action Application resources.

        :param organization: Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.
        :type organization: str
        :param library: Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.
        :type library: str
        :param name: Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.
        :type name: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._get_action_applications_serialize(
            organization=organization,
            library=library,
            name=name,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "GetActionApplications200Response",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _get_action_applications_serialize(
        self,
        organization,
        library,
        name,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        # process the query parameters
        if organization is not None:
            
            _query_params.append(('organization', organization))
            
        if library is not None:
            
            _query_params.append(('library', library))
            
        if name is not None:
            
            _query_params.append(('name', name))
            
        # process the header parameters
        # process the form parameters
        # process the body parameter


        # set the HTTP header `Accept`
        if 'Accept' not in _header_params:
            _header_params['Accept'] = self.api_client.select_header_accept(
                [
                    'application/json'
                ]
            )


        # authentication setting
        _auth_settings: List[str] = [
            'ApiKeyAuth'
        ]

        return self.api_client.param_serialize(
            method='GET',
            resource_path='/action-application',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )




    @validate_call
    def get_credentials(
        self,
        organization: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.")] = None,
        library: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.")] = None,
        name: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> GetCredentials200Response:
        """Fetch Credentials

        Retrieves one or more Credential resources.

        :param organization: Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.
        :type organization: str
        :param library: Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.
        :type library: str
        :param name: Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.
        :type name: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._get_credentials_serialize(
            organization=organization,
            library=library,
            name=name,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "GetCredentials200Response",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def get_credentials_with_http_info(
        self,
        organization: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.")] = None,
        library: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.")] = None,
        name: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[GetCredentials200Response]:
        """Fetch Credentials

        Retrieves one or more Credential resources.

        :param organization: Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.
        :type organization: str
        :param library: Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.
        :type library: str
        :param name: Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.
        :type name: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._get_credentials_serialize(
            organization=organization,
            library=library,
            name=name,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "GetCredentials200Response",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def get_credentials_without_preload_content(
        self,
        organization: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.")] = None,
        library: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.")] = None,
        name: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """Fetch Credentials

        Retrieves one or more Credential resources.

        :param organization: Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.
        :type organization: str
        :param library: Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.
        :type library: str
        :param name: Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.
        :type name: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._get_credentials_serialize(
            organization=organization,
            library=library,
            name=name,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "GetCredentials200Response",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _get_credentials_serialize(
        self,
        organization,
        library,
        name,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        # process the query parameters
        if organization is not None:
            
            _query_params.append(('organization', organization))
            
        if library is not None:
            
            _query_params.append(('library', library))
            
        if name is not None:
            
            _query_params.append(('name', name))
            
        # process the header parameters
        # process the form parameters
        # process the body parameter


        # set the HTTP header `Accept`
        if 'Accept' not in _header_params:
            _header_params['Accept'] = self.api_client.select_header_accept(
                [
                    'application/json'
                ]
            )


        # authentication setting
        _auth_settings: List[str] = [
            'ApiKeyAuth'
        ]

        return self.api_client.param_serialize(
            method='GET',
            resource_path='/credential',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )




    @validate_call
    def get_outcomes(
        self,
        organization: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.")] = None,
        library: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.")] = None,
        name: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> GetOutcomes200Response:
        """Fetch Outcomes

        Retrieves one or more Outcome resources.

        :param organization: Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.
        :type organization: str
        :param library: Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.
        :type library: str
        :param name: Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.
        :type name: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._get_outcomes_serialize(
            organization=organization,
            library=library,
            name=name,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "GetOutcomes200Response",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def get_outcomes_with_http_info(
        self,
        organization: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.")] = None,
        library: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.")] = None,
        name: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[GetOutcomes200Response]:
        """Fetch Outcomes

        Retrieves one or more Outcome resources.

        :param organization: Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.
        :type organization: str
        :param library: Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.
        :type library: str
        :param name: Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.
        :type name: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._get_outcomes_serialize(
            organization=organization,
            library=library,
            name=name,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "GetOutcomes200Response",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def get_outcomes_without_preload_content(
        self,
        organization: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.")] = None,
        library: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.")] = None,
        name: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """Fetch Outcomes

        Retrieves one or more Outcome resources.

        :param organization: Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.
        :type organization: str
        :param library: Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.
        :type library: str
        :param name: Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.
        :type name: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._get_outcomes_serialize(
            organization=organization,
            library=library,
            name=name,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "GetOutcomes200Response",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _get_outcomes_serialize(
        self,
        organization,
        library,
        name,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        # process the query parameters
        if organization is not None:
            
            _query_params.append(('organization', organization))
            
        if library is not None:
            
            _query_params.append(('library', library))
            
        if name is not None:
            
            _query_params.append(('name', name))
            
        # process the header parameters
        # process the form parameters
        # process the body parameter


        # set the HTTP header `Accept`
        if 'Accept' not in _header_params:
            _header_params['Accept'] = self.api_client.select_header_accept(
                [
                    'application/json'
                ]
            )


        # authentication setting
        _auth_settings: List[str] = [
            'ApiKeyAuth'
        ]

        return self.api_client.param_serialize(
            method='GET',
            resource_path='/outcome',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )




    @validate_call
    def get_wrk_actions(
        self,
        organization: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.")] = None,
        library: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.")] = None,
        name: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> GetWrkActions200Response:
        """Fetch Wrk Actions

        Retrieves one or more Wrk Action resources.

        :param organization: Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.
        :type organization: str
        :param library: Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.
        :type library: str
        :param name: Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.
        :type name: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._get_wrk_actions_serialize(
            organization=organization,
            library=library,
            name=name,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "GetWrkActions200Response",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data


    @validate_call
    def get_wrk_actions_with_http_info(
        self,
        organization: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.")] = None,
        library: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.")] = None,
        name: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[GetWrkActions200Response]:
        """Fetch Wrk Actions

        Retrieves one or more Wrk Action resources.

        :param organization: Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.
        :type organization: str
        :param library: Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.
        :type library: str
        :param name: Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.
        :type name: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._get_wrk_actions_serialize(
            organization=organization,
            library=library,
            name=name,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "GetWrkActions200Response",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )


    @validate_call
    def get_wrk_actions_without_preload_content(
        self,
        organization: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.")] = None,
        library: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.")] = None,
        name: Annotated[Optional[StrictStr], Field(description="Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.")] = None,
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)],
                Annotated[StrictFloat, Field(gt=0)]
            ]
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """Fetch Wrk Actions

        Retrieves one or more Wrk Action resources.

        :param organization: Optional parameter to filter resources by organization. Supports multiple values as a comma-delimited list.
        :type organization: str
        :param library: Optional parameter to filter resources by library. Supports multiple values as a comma-delimited list. If provided, the organization parameter becomes mandatory.
        :type library: str
        :param name: Optional parameter to filter resources by name. Supports multiple values as a comma-delimited list. If provided, the organization and library parameters become mandatory.
        :type name: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """ # noqa: E501

        _param = self._get_wrk_actions_serialize(
            organization=organization,
            library=library,
            name=name,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '200': "GetWrkActions200Response",
        }
        response_data = self.api_client.call_api(
            *_param,
            _request_timeout=_request_timeout
        )
        return response_data.response


    def _get_wrk_actions_serialize(
        self,
        organization,
        library,
        name,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {
        }

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        # process the query parameters
        if organization is not None:
            
            _query_params.append(('organization', organization))
            
        if library is not None:
            
            _query_params.append(('library', library))
            
        if name is not None:
            
            _query_params.append(('name', name))
            
        # process the header parameters
        # process the form parameters
        # process the body parameter


        # set the HTTP header `Accept`
        if 'Accept' not in _header_params:
            _header_params['Accept'] = self.api_client.select_header_accept(
                [
                    'application/json'
                ]
            )


        # authentication setting
        _auth_settings: List[str] = [
            'ApiKeyAuth'
        ]

        return self.api_client.param_serialize(
            method='GET',
            resource_path='/wrk-action',
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth
        )


