# coding: utf-8

"""
    Vero Public API's

    The VeRO API has methods that allow owners of an intellectual property to report eBay listings that infringe on their intellectual property rights. It contains methods to report a listing, retrieve supported VeRO reason codes, and retrieve the status of reported items.  # noqa: E501

    OpenAPI spec version: 1.0.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

from __future__ import absolute_import

import re  # noqa: F401

# python 2 and python 3 compatibility library
import six

from ...commerce_vero.api_client import ApiClient


class VeroReportItemsApi(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    Ref: https://github.com/swagger-api/swagger-codegen
    """

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

    def get_vero_report_items(self, **kwargs):  # noqa: E501
        """Retrieves status for VERO infringement reports by Brand.  # noqa: E501

        <div class=\"msgbox_important\"><p class=\"msgbox_importantInDiv\" data-mc-autonum=\"&lt;b&gt;&lt;span style=&quot;color: #dd1e31;&quot; class=&quot;mcFormatColor&quot;&gt;Important! &lt;/span&gt;&lt;/b&gt;\"><span class=\"autonumber\"><span><b><span style=\"color: #dd1e31;\" class=\"mcFormatColor\">Important!</span></b></span></span> You must be a member of the Verified Rights Owner (VeRO) Program to use this call.</p></div><br>This method can be used to retrieve status information about one or more VeRO reported items you have submitted.<br><br>Without the use of any query parameters, the default behavior of this method is to return the status of all VeRO reported items submitted by the seller during the last two years. Use the <b>itemId</b> query parameter to see a specific reported item, and use the <b>filter</b> query to retrieve the status of reported items submitted within a specific date range. Pagination is also available to limit the number of reported items that are retrieved per page of data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_vero_report_items(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str filter: This query parameter can be used to filter the result set by a date range. Only items reported within the specified time period will be returned.<br><br>This parameter will be ignored if <b>itemId</b> has been specified.<br><br><b>Format:</b> <code>YYYY-MM-DD HH:MM:SS</code><br><br><b>Example</b>: <code>reportSubmittedDate:[2024-11-14T07:47:48Z..2024-12-14T07:47:48Z]</code>.
        :param str item_id: This query parameter specifies the unique identifier of an eBay listing. Only the specified reported item will be returned.
        :param str limit: The maximum number of entries that can be returned on each page of the paginated response. Use this parameter in conjunction with the <b>offset</b> parameter to control the pagination of the output.<br><br><span class=\"tablenote\"><b>Note:</b> This feature employs a zero-based list, where the first item in the list has an offset of <code>0</code>.</span><br>For example, if <b>offset</b> is set to <code>10</code> and <b>limit</b> is set to <code>10</code>, the call retrieves entries 11 through 20 from the result set.<br><br>If this parameter is omitted, the default value is used.<br><br><b>Default:</b> 25
        :param str offset: The number of reports to skip in the result set before returning the first report in the paginated response. Combine offset with the <b>limit</b> query parameter to control the reports returned in the response. For example, if you supply an <b>offset</b> of <code>0</code> and a <b>limit</b> of <code>10</code>, the first page of the response contains the first 10 reports from the complete list of reports retrieved by the call. If this query parameter is not set, the default value is used and the first page of reports is returned.<br><br><b>Default:</b> 0
        :return: VeroReportStatusResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """
        if '_return_http_data_only' not in kwargs:  # ebay_rest patch
            kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.get_vero_report_items_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.get_vero_report_items_with_http_info(**kwargs)  # noqa: E501
            return data

    def get_vero_report_items_with_http_info(self, **kwargs):  # noqa: E501
        """Retrieves status for VERO infringement reports by Brand.  # noqa: E501

        <div class=\"msgbox_important\"><p class=\"msgbox_importantInDiv\" data-mc-autonum=\"&lt;b&gt;&lt;span style=&quot;color: #dd1e31;&quot; class=&quot;mcFormatColor&quot;&gt;Important! &lt;/span&gt;&lt;/b&gt;\"><span class=\"autonumber\"><span><b><span style=\"color: #dd1e31;\" class=\"mcFormatColor\">Important!</span></b></span></span> You must be a member of the Verified Rights Owner (VeRO) Program to use this call.</p></div><br>This method can be used to retrieve status information about one or more VeRO reported items you have submitted.<br><br>Without the use of any query parameters, the default behavior of this method is to return the status of all VeRO reported items submitted by the seller during the last two years. Use the <b>itemId</b> query parameter to see a specific reported item, and use the <b>filter</b> query to retrieve the status of reported items submitted within a specific date range. Pagination is also available to limit the number of reported items that are retrieved per page of data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_vero_report_items_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str filter: This query parameter can be used to filter the result set by a date range. Only items reported within the specified time period will be returned.<br><br>This parameter will be ignored if <b>itemId</b> has been specified.<br><br><b>Format:</b> <code>YYYY-MM-DD HH:MM:SS</code><br><br><b>Example</b>: <code>reportSubmittedDate:[2024-11-14T07:47:48Z..2024-12-14T07:47:48Z]</code>.
        :param str item_id: This query parameter specifies the unique identifier of an eBay listing. Only the specified reported item will be returned.
        :param str limit: The maximum number of entries that can be returned on each page of the paginated response. Use this parameter in conjunction with the <b>offset</b> parameter to control the pagination of the output.<br><br><span class=\"tablenote\"><b>Note:</b> This feature employs a zero-based list, where the first item in the list has an offset of <code>0</code>.</span><br>For example, if <b>offset</b> is set to <code>10</code> and <b>limit</b> is set to <code>10</code>, the call retrieves entries 11 through 20 from the result set.<br><br>If this parameter is omitted, the default value is used.<br><br><b>Default:</b> 25
        :param str offset: The number of reports to skip in the result set before returning the first report in the paginated response. Combine offset with the <b>limit</b> query parameter to control the reports returned in the response. For example, if you supply an <b>offset</b> of <code>0</code> and a <b>limit</b> of <code>10</code>, the first page of the response contains the first 10 reports from the complete list of reports retrieved by the call. If this query parameter is not set, the default value is used and the first page of reports is returned.<br><br><b>Default:</b> 0
        :return: VeroReportStatusResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['filter', 'item_id', 'limit', 'offset']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_vero_report_items" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'filter' in params:
            query_params.append(('filter', params['filter']))  # noqa: E501
        if 'item_id' in params:
            query_params.append(('itemId', params['item_id']))  # noqa: E501
        if 'limit' in params:
            query_params.append(('limit', params['limit']))  # noqa: E501
        if 'offset' in params:
            query_params.append(('offset', params['offset']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['api_auth']  # noqa: E501

        return self.api_client.call_api(
            '/vero_report_items', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='VeroReportStatusResponse',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)
