# coding: utf-8

"""
    Pulp 3 API

    Fetch, Upload, Organize, and Distribute Software Packages

    The version of the OpenAPI document: v3
    Contact: pulp-list@redhat.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, StrictBytes, StrictStr
from typing import Optional, Tuple, Union
from typing_extensions import Annotated
from pulpcore.client.pulp_ansible.models.async_operation_response import AsyncOperationResponse

from pulpcore.client.pulp_ansible.api_client import ApiClient, RequestSerialized
from pulpcore.client.pulp_ansible.api_response import ApiResponse
from pulpcore.client.pulp_ansible.rest import RESTResponseType


class PulpAnsibleArtifactsCollectionsV3Api:
    """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 create(
        self,
        path: StrictStr,
        file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="The Collection tarball.")],
        sha256: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="An optional sha256 checksum of the uploaded file.")] = None,
        expected_namespace: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'namespace' of the Collection to be verified against the metadata during import.")] = None,
        expected_name: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'name' of the Collection to be verified against the metadata during import.")] = None,
        expected_version: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected version of the Collection to be verified against the metadata during import.")] = 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,
    ) -> AsyncOperationResponse:
        """(Deprecated) Upload a collection

        Create an artifact and trigger an asynchronous task to create Collection content from it.

        :param path: (required)
        :type path: str
        :param file: The Collection tarball. (required)
        :type file: bytearray
        :param sha256: An optional sha256 checksum of the uploaded file.
        :type sha256: str
        :param expected_namespace: The expected 'namespace' of the Collection to be verified against the metadata during import.
        :type expected_namespace: str
        :param expected_name: The expected 'name' of the Collection to be verified against the metadata during import.
        :type expected_name: str
        :param expected_version: The expected version of the Collection to be verified against the metadata during import.
        :type expected_version: 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
        warnings.warn("POST /pulp_ansible/galaxy/{path}/api/v3/artifacts/collections/ is deprecated.", DeprecationWarning)

        _param = self._create_serialize(
            path=path,
            file=file,
            sha256=sha256,
            expected_namespace=expected_namespace,
            expected_name=expected_name,
            expected_version=expected_version,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '202': "AsyncOperationResponse",
        }
        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 create_with_http_info(
        self,
        path: StrictStr,
        file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="The Collection tarball.")],
        sha256: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="An optional sha256 checksum of the uploaded file.")] = None,
        expected_namespace: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'namespace' of the Collection to be verified against the metadata during import.")] = None,
        expected_name: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'name' of the Collection to be verified against the metadata during import.")] = None,
        expected_version: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected version of the Collection to be verified against the metadata during import.")] = 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[AsyncOperationResponse]:
        """(Deprecated) Upload a collection

        Create an artifact and trigger an asynchronous task to create Collection content from it.

        :param path: (required)
        :type path: str
        :param file: The Collection tarball. (required)
        :type file: bytearray
        :param sha256: An optional sha256 checksum of the uploaded file.
        :type sha256: str
        :param expected_namespace: The expected 'namespace' of the Collection to be verified against the metadata during import.
        :type expected_namespace: str
        :param expected_name: The expected 'name' of the Collection to be verified against the metadata during import.
        :type expected_name: str
        :param expected_version: The expected version of the Collection to be verified against the metadata during import.
        :type expected_version: 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
        warnings.warn("POST /pulp_ansible/galaxy/{path}/api/v3/artifacts/collections/ is deprecated.", DeprecationWarning)

        _param = self._create_serialize(
            path=path,
            file=file,
            sha256=sha256,
            expected_namespace=expected_namespace,
            expected_name=expected_name,
            expected_version=expected_version,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '202': "AsyncOperationResponse",
        }
        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 create_without_preload_content(
        self,
        path: StrictStr,
        file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="The Collection tarball.")],
        sha256: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="An optional sha256 checksum of the uploaded file.")] = None,
        expected_namespace: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'namespace' of the Collection to be verified against the metadata during import.")] = None,
        expected_name: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'name' of the Collection to be verified against the metadata during import.")] = None,
        expected_version: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected version of the Collection to be verified against the metadata during import.")] = 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:
        """(Deprecated) Upload a collection

        Create an artifact and trigger an asynchronous task to create Collection content from it.

        :param path: (required)
        :type path: str
        :param file: The Collection tarball. (required)
        :type file: bytearray
        :param sha256: An optional sha256 checksum of the uploaded file.
        :type sha256: str
        :param expected_namespace: The expected 'namespace' of the Collection to be verified against the metadata during import.
        :type expected_namespace: str
        :param expected_name: The expected 'name' of the Collection to be verified against the metadata during import.
        :type expected_name: str
        :param expected_version: The expected version of the Collection to be verified against the metadata during import.
        :type expected_version: 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
        warnings.warn("POST /pulp_ansible/galaxy/{path}/api/v3/artifacts/collections/ is deprecated.", DeprecationWarning)

        _param = self._create_serialize(
            path=path,
            file=file,
            sha256=sha256,
            expected_namespace=expected_namespace,
            expected_name=expected_name,
            expected_version=expected_version,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

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


    def _create_serialize(
        self,
        path,
        file,
        sha256,
        expected_namespace,
        expected_name,
        expected_version,
        _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
        if path is not None:
            _path_params['path'] = path
        # process the query parameters
        # process the header parameters
        # process the form parameters
        if file is not None:
            _files['file'] = file
        if sha256 is not None:
            _form_params.append(('sha256', sha256))
        if expected_namespace is not None:
            _form_params.append(('expected_namespace', expected_namespace))
        if expected_name is not None:
            _form_params.append(('expected_name', expected_name))
        if expected_version is not None:
            _form_params.append(('expected_version', expected_version))
        # 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'
                ]
            )

        # set the HTTP header `Content-Type`
        if _content_type:
            _header_params['Content-Type'] = _content_type
        else:
            _default_content_type = (
                self.api_client.select_header_content_type(
                    [
                        'multipart/form-data', 
                        'application/x-www-form-urlencoded'
                    ]
                )
            )
            if _default_content_type is not None:
                _header_params['Content-Type'] = _default_content_type

        # authentication setting
        _auth_settings: List[str] = [
            'basicAuth', 
            'cookieAuth'
        ]

        return self.api_client.param_serialize(
            method='POST',
            resource_path='/pulp_ansible/galaxy/{path}/api/v3/artifacts/collections/',
            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 create_0(
        self,
        distro_base_path: StrictStr,
        path: StrictStr,
        file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="The Collection tarball.")],
        sha256: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="An optional sha256 checksum of the uploaded file.")] = None,
        expected_namespace: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'namespace' of the Collection to be verified against the metadata during import.")] = None,
        expected_name: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'name' of the Collection to be verified against the metadata during import.")] = None,
        expected_version: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected version of the Collection to be verified against the metadata during import.")] = 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,
    ) -> AsyncOperationResponse:
        """Upload a collection

        Create an artifact and trigger an asynchronous task to create Collection content from it.

        :param distro_base_path: (required)
        :type distro_base_path: str
        :param path: (required)
        :type path: str
        :param file: The Collection tarball. (required)
        :type file: bytearray
        :param sha256: An optional sha256 checksum of the uploaded file.
        :type sha256: str
        :param expected_namespace: The expected 'namespace' of the Collection to be verified against the metadata during import.
        :type expected_namespace: str
        :param expected_name: The expected 'name' of the Collection to be verified against the metadata during import.
        :type expected_name: str
        :param expected_version: The expected version of the Collection to be verified against the metadata during import.
        :type expected_version: 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._create_0_serialize(
            distro_base_path=distro_base_path,
            path=path,
            file=file,
            sha256=sha256,
            expected_namespace=expected_namespace,
            expected_name=expected_name,
            expected_version=expected_version,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '202': "AsyncOperationResponse",
        }
        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 create_0_with_http_info(
        self,
        distro_base_path: StrictStr,
        path: StrictStr,
        file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="The Collection tarball.")],
        sha256: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="An optional sha256 checksum of the uploaded file.")] = None,
        expected_namespace: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'namespace' of the Collection to be verified against the metadata during import.")] = None,
        expected_name: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'name' of the Collection to be verified against the metadata during import.")] = None,
        expected_version: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected version of the Collection to be verified against the metadata during import.")] = 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[AsyncOperationResponse]:
        """Upload a collection

        Create an artifact and trigger an asynchronous task to create Collection content from it.

        :param distro_base_path: (required)
        :type distro_base_path: str
        :param path: (required)
        :type path: str
        :param file: The Collection tarball. (required)
        :type file: bytearray
        :param sha256: An optional sha256 checksum of the uploaded file.
        :type sha256: str
        :param expected_namespace: The expected 'namespace' of the Collection to be verified against the metadata during import.
        :type expected_namespace: str
        :param expected_name: The expected 'name' of the Collection to be verified against the metadata during import.
        :type expected_name: str
        :param expected_version: The expected version of the Collection to be verified against the metadata during import.
        :type expected_version: 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._create_0_serialize(
            distro_base_path=distro_base_path,
            path=path,
            file=file,
            sha256=sha256,
            expected_namespace=expected_namespace,
            expected_name=expected_name,
            expected_version=expected_version,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '202': "AsyncOperationResponse",
        }
        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 create_0_without_preload_content(
        self,
        distro_base_path: StrictStr,
        path: StrictStr,
        file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="The Collection tarball.")],
        sha256: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="An optional sha256 checksum of the uploaded file.")] = None,
        expected_namespace: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'namespace' of the Collection to be verified against the metadata during import.")] = None,
        expected_name: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'name' of the Collection to be verified against the metadata during import.")] = None,
        expected_version: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected version of the Collection to be verified against the metadata during import.")] = 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:
        """Upload a collection

        Create an artifact and trigger an asynchronous task to create Collection content from it.

        :param distro_base_path: (required)
        :type distro_base_path: str
        :param path: (required)
        :type path: str
        :param file: The Collection tarball. (required)
        :type file: bytearray
        :param sha256: An optional sha256 checksum of the uploaded file.
        :type sha256: str
        :param expected_namespace: The expected 'namespace' of the Collection to be verified against the metadata during import.
        :type expected_namespace: str
        :param expected_name: The expected 'name' of the Collection to be verified against the metadata during import.
        :type expected_name: str
        :param expected_version: The expected version of the Collection to be verified against the metadata during import.
        :type expected_version: 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._create_0_serialize(
            distro_base_path=distro_base_path,
            path=path,
            file=file,
            sha256=sha256,
            expected_namespace=expected_namespace,
            expected_name=expected_name,
            expected_version=expected_version,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

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


    def _create_0_serialize(
        self,
        distro_base_path,
        path,
        file,
        sha256,
        expected_namespace,
        expected_name,
        expected_version,
        _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
        if distro_base_path is not None:
            _path_params['distro_base_path'] = distro_base_path
        if path is not None:
            _path_params['path'] = path
        # process the query parameters
        # process the header parameters
        # process the form parameters
        if file is not None:
            _files['file'] = file
        if sha256 is not None:
            _form_params.append(('sha256', sha256))
        if expected_namespace is not None:
            _form_params.append(('expected_namespace', expected_namespace))
        if expected_name is not None:
            _form_params.append(('expected_name', expected_name))
        if expected_version is not None:
            _form_params.append(('expected_version', expected_version))
        # 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'
                ]
            )

        # set the HTTP header `Content-Type`
        if _content_type:
            _header_params['Content-Type'] = _content_type
        else:
            _default_content_type = (
                self.api_client.select_header_content_type(
                    [
                        'multipart/form-data', 
                        'application/x-www-form-urlencoded'
                    ]
                )
            )
            if _default_content_type is not None:
                _header_params['Content-Type'] = _default_content_type

        # authentication setting
        _auth_settings: List[str] = [
            'basicAuth', 
            'cookieAuth'
        ]

        return self.api_client.param_serialize(
            method='POST',
            resource_path='/pulp_ansible/galaxy/{path}/api/v3/plugin/ansible/content/{distro_base_path}/collections/artifacts/',
            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 create_1(
        self,
        file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="The Collection tarball.")],
        sha256: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="An optional sha256 checksum of the uploaded file.")] = None,
        expected_namespace: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'namespace' of the Collection to be verified against the metadata during import.")] = None,
        expected_name: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'name' of the Collection to be verified against the metadata during import.")] = None,
        expected_version: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected version of the Collection to be verified against the metadata during import.")] = 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,
    ) -> AsyncOperationResponse:
        """(Deprecated) Upload a collection

        Create an artifact and trigger an asynchronous task to create Collection content from it.

        :param file: The Collection tarball. (required)
        :type file: bytearray
        :param sha256: An optional sha256 checksum of the uploaded file.
        :type sha256: str
        :param expected_namespace: The expected 'namespace' of the Collection to be verified against the metadata during import.
        :type expected_namespace: str
        :param expected_name: The expected 'name' of the Collection to be verified against the metadata during import.
        :type expected_name: str
        :param expected_version: The expected version of the Collection to be verified against the metadata during import.
        :type expected_version: 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
        warnings.warn("POST /pulp_ansible/galaxy/default/api/v3/artifacts/collections/ is deprecated.", DeprecationWarning)

        _param = self._create_1_serialize(
            file=file,
            sha256=sha256,
            expected_namespace=expected_namespace,
            expected_name=expected_name,
            expected_version=expected_version,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '202': "AsyncOperationResponse",
        }
        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 create_1_with_http_info(
        self,
        file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="The Collection tarball.")],
        sha256: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="An optional sha256 checksum of the uploaded file.")] = None,
        expected_namespace: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'namespace' of the Collection to be verified against the metadata during import.")] = None,
        expected_name: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'name' of the Collection to be verified against the metadata during import.")] = None,
        expected_version: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected version of the Collection to be verified against the metadata during import.")] = 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[AsyncOperationResponse]:
        """(Deprecated) Upload a collection

        Create an artifact and trigger an asynchronous task to create Collection content from it.

        :param file: The Collection tarball. (required)
        :type file: bytearray
        :param sha256: An optional sha256 checksum of the uploaded file.
        :type sha256: str
        :param expected_namespace: The expected 'namespace' of the Collection to be verified against the metadata during import.
        :type expected_namespace: str
        :param expected_name: The expected 'name' of the Collection to be verified against the metadata during import.
        :type expected_name: str
        :param expected_version: The expected version of the Collection to be verified against the metadata during import.
        :type expected_version: 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
        warnings.warn("POST /pulp_ansible/galaxy/default/api/v3/artifacts/collections/ is deprecated.", DeprecationWarning)

        _param = self._create_1_serialize(
            file=file,
            sha256=sha256,
            expected_namespace=expected_namespace,
            expected_name=expected_name,
            expected_version=expected_version,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '202': "AsyncOperationResponse",
        }
        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 create_1_without_preload_content(
        self,
        file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="The Collection tarball.")],
        sha256: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="An optional sha256 checksum of the uploaded file.")] = None,
        expected_namespace: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'namespace' of the Collection to be verified against the metadata during import.")] = None,
        expected_name: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'name' of the Collection to be verified against the metadata during import.")] = None,
        expected_version: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected version of the Collection to be verified against the metadata during import.")] = 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:
        """(Deprecated) Upload a collection

        Create an artifact and trigger an asynchronous task to create Collection content from it.

        :param file: The Collection tarball. (required)
        :type file: bytearray
        :param sha256: An optional sha256 checksum of the uploaded file.
        :type sha256: str
        :param expected_namespace: The expected 'namespace' of the Collection to be verified against the metadata during import.
        :type expected_namespace: str
        :param expected_name: The expected 'name' of the Collection to be verified against the metadata during import.
        :type expected_name: str
        :param expected_version: The expected version of the Collection to be verified against the metadata during import.
        :type expected_version: 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
        warnings.warn("POST /pulp_ansible/galaxy/default/api/v3/artifacts/collections/ is deprecated.", DeprecationWarning)

        _param = self._create_1_serialize(
            file=file,
            sha256=sha256,
            expected_namespace=expected_namespace,
            expected_name=expected_name,
            expected_version=expected_version,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

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


    def _create_1_serialize(
        self,
        file,
        sha256,
        expected_namespace,
        expected_name,
        expected_version,
        _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
        # process the header parameters
        # process the form parameters
        if file is not None:
            _files['file'] = file
        if sha256 is not None:
            _form_params.append(('sha256', sha256))
        if expected_namespace is not None:
            _form_params.append(('expected_namespace', expected_namespace))
        if expected_name is not None:
            _form_params.append(('expected_name', expected_name))
        if expected_version is not None:
            _form_params.append(('expected_version', expected_version))
        # 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'
                ]
            )

        # set the HTTP header `Content-Type`
        if _content_type:
            _header_params['Content-Type'] = _content_type
        else:
            _default_content_type = (
                self.api_client.select_header_content_type(
                    [
                        'multipart/form-data', 
                        'application/x-www-form-urlencoded'
                    ]
                )
            )
            if _default_content_type is not None:
                _header_params['Content-Type'] = _default_content_type

        # authentication setting
        _auth_settings: List[str] = [
            'basicAuth', 
            'cookieAuth'
        ]

        return self.api_client.param_serialize(
            method='POST',
            resource_path='/pulp_ansible/galaxy/default/api/v3/artifacts/collections/',
            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 create_2(
        self,
        distro_base_path: StrictStr,
        file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="The Collection tarball.")],
        sha256: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="An optional sha256 checksum of the uploaded file.")] = None,
        expected_namespace: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'namespace' of the Collection to be verified against the metadata during import.")] = None,
        expected_name: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'name' of the Collection to be verified against the metadata during import.")] = None,
        expected_version: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected version of the Collection to be verified against the metadata during import.")] = 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,
    ) -> AsyncOperationResponse:
        """Upload a collection

        Create an artifact and trigger an asynchronous task to create Collection content from it.

        :param distro_base_path: (required)
        :type distro_base_path: str
        :param file: The Collection tarball. (required)
        :type file: bytearray
        :param sha256: An optional sha256 checksum of the uploaded file.
        :type sha256: str
        :param expected_namespace: The expected 'namespace' of the Collection to be verified against the metadata during import.
        :type expected_namespace: str
        :param expected_name: The expected 'name' of the Collection to be verified against the metadata during import.
        :type expected_name: str
        :param expected_version: The expected version of the Collection to be verified against the metadata during import.
        :type expected_version: 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._create_2_serialize(
            distro_base_path=distro_base_path,
            file=file,
            sha256=sha256,
            expected_namespace=expected_namespace,
            expected_name=expected_name,
            expected_version=expected_version,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '202': "AsyncOperationResponse",
        }
        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 create_2_with_http_info(
        self,
        distro_base_path: StrictStr,
        file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="The Collection tarball.")],
        sha256: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="An optional sha256 checksum of the uploaded file.")] = None,
        expected_namespace: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'namespace' of the Collection to be verified against the metadata during import.")] = None,
        expected_name: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'name' of the Collection to be verified against the metadata during import.")] = None,
        expected_version: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected version of the Collection to be verified against the metadata during import.")] = 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[AsyncOperationResponse]:
        """Upload a collection

        Create an artifact and trigger an asynchronous task to create Collection content from it.

        :param distro_base_path: (required)
        :type distro_base_path: str
        :param file: The Collection tarball. (required)
        :type file: bytearray
        :param sha256: An optional sha256 checksum of the uploaded file.
        :type sha256: str
        :param expected_namespace: The expected 'namespace' of the Collection to be verified against the metadata during import.
        :type expected_namespace: str
        :param expected_name: The expected 'name' of the Collection to be verified against the metadata during import.
        :type expected_name: str
        :param expected_version: The expected version of the Collection to be verified against the metadata during import.
        :type expected_version: 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._create_2_serialize(
            distro_base_path=distro_base_path,
            file=file,
            sha256=sha256,
            expected_namespace=expected_namespace,
            expected_name=expected_name,
            expected_version=expected_version,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

        _response_types_map: Dict[str, Optional[str]] = {
            '202': "AsyncOperationResponse",
        }
        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 create_2_without_preload_content(
        self,
        distro_base_path: StrictStr,
        file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="The Collection tarball.")],
        sha256: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="An optional sha256 checksum of the uploaded file.")] = None,
        expected_namespace: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'namespace' of the Collection to be verified against the metadata during import.")] = None,
        expected_name: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected 'name' of the Collection to be verified against the metadata during import.")] = None,
        expected_version: Annotated[Optional[Annotated[str, Field(min_length=1, strict=True)]], Field(description="The expected version of the Collection to be verified against the metadata during import.")] = 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:
        """Upload a collection

        Create an artifact and trigger an asynchronous task to create Collection content from it.

        :param distro_base_path: (required)
        :type distro_base_path: str
        :param file: The Collection tarball. (required)
        :type file: bytearray
        :param sha256: An optional sha256 checksum of the uploaded file.
        :type sha256: str
        :param expected_namespace: The expected 'namespace' of the Collection to be verified against the metadata during import.
        :type expected_namespace: str
        :param expected_name: The expected 'name' of the Collection to be verified against the metadata during import.
        :type expected_name: str
        :param expected_version: The expected version of the Collection to be verified against the metadata during import.
        :type expected_version: 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._create_2_serialize(
            distro_base_path=distro_base_path,
            file=file,
            sha256=sha256,
            expected_namespace=expected_namespace,
            expected_name=expected_name,
            expected_version=expected_version,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index
        )

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


    def _create_2_serialize(
        self,
        distro_base_path,
        file,
        sha256,
        expected_namespace,
        expected_name,
        expected_version,
        _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
        if distro_base_path is not None:
            _path_params['distro_base_path'] = distro_base_path
        # process the query parameters
        # process the header parameters
        # process the form parameters
        if file is not None:
            _files['file'] = file
        if sha256 is not None:
            _form_params.append(('sha256', sha256))
        if expected_namespace is not None:
            _form_params.append(('expected_namespace', expected_namespace))
        if expected_name is not None:
            _form_params.append(('expected_name', expected_name))
        if expected_version is not None:
            _form_params.append(('expected_version', expected_version))
        # 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'
                ]
            )

        # set the HTTP header `Content-Type`
        if _content_type:
            _header_params['Content-Type'] = _content_type
        else:
            _default_content_type = (
                self.api_client.select_header_content_type(
                    [
                        'multipart/form-data', 
                        'application/x-www-form-urlencoded'
                    ]
                )
            )
            if _default_content_type is not None:
                _header_params['Content-Type'] = _default_content_type

        # authentication setting
        _auth_settings: List[str] = [
            'basicAuth', 
            'cookieAuth'
        ]

        return self.api_client.param_serialize(
            method='POST',
            resource_path='/pulp_ansible/galaxy/default/api/v3/plugin/ansible/content/{distro_base_path}/collections/artifacts/',
            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
        )


