Function:
def searchCVE(cpeName: str = None, cveId: str = None, cvssV2Metrics: str = None, cvssV2Severity: str = None, cvssV3Metrics: str = None, cvssV3Severity: str = None, cweId: str = None, hasCertAlerts: bool = None, hasCertNotes: bool = None, hasOval: bool = None, isVulnerable: bool = None, keywordExactMatch: bool = None, keywordSearch: str = None, lastModStartDate: str = None, lastModEndDate: str = None, noRejected: bool = None, pubStartDate: str = None, pubEndDate: str = None, sourceIdentifier: str = None, versionEnd: str = None, versionEndType: str = None, versionStart: str = None, versionStartType: str = None, virtualMatchString: str = None, limit: int = None, delay: int = None, key: str = None, verbose: bool = None):
    """
    Build and send GET request then return list of objects containing a collection of CVEs. For more information on the parameters available, please visit https://nvd.nist.gov/developers/vulnerabilities
    
    When providing ANY date time strings, please also specify the time. Such as: "00:00" suffix to the end of every datetime string. So, if you're generating a date, make sure to say '2023-03-01 00:00'.

    Parameters:
    - cpeName (str): Please do not confuse this with keywordSearch; this requires the argument to start with "cpe", whereas the keywordSearch argument allows for arbitrary keywords. This value will be compared agains the CPE Match Criteria within a CVE applicability statement. (i.e. find the vulnerabilities attached to that CPE). Partial match strings are allowed. Default value: None. (Optional)
    - cveId (str): Please pass in a string integer, like "1" or "30". Returns a single CVE that already exists in the NVD. Default value: None. (Optional)
    - cvssV2Metrics (str): This parameter returns only the CVEs that match the provided CVSSv2 vector string. Either full or partial vector strings may be used. This parameter cannot be used in requests that include cvssV3Metrics. Default value: None. (Optional)
    - cvssV2Severity (str): Find vulnerabilities having a LOW, MEDIUM, or HIGH version 2 severity. Default value: None. (Optional)
    - cvssV3Metrics (str): This parameter returns only the CVEs that match the provided CVSSv3 vector string. Either full or partial vector strings may be used. This parameter cannot be used in requests that include cvssV2Metrics. Default value: None. (Optional)
    - cvssV3Severity (str): Find vulnerabilities having a LOW, MEDIUM, HIGH, or CRITICAL version 3 severity. Default value: None. (Optional)
    - cweId (str): Filter collection by CWE (Common Weakness Enumeration) ID. You can find a list at https://cwe.mitre.org/. A CVE can have multiple CWE IDs assigned to it. Examples include "CVE-34". Default value: None. (Optional)
    - hasCertAlerts (bool): Returns CVE that contain a Technical Alert from US-CERT. Default value: None. (Optional)
    - hasCertNotes (bool): Returns CVE that contain a Vulnerability Note from CERT/CC. Default value: None. (Optional)
    - hasOval (bool): Returns CVE that contain information from MITRE's Open Vulnerability and Assessment Language (OVAL) before this transitioned to the Center for Internet Security (CIS). Default value: None. (Optional)
    - isVulnerable (bool): Returns CVE associated with a specific CPE, where the CPE is also considered vulnerable. REQUIRES cpeName parameter. isVulnerable is not compatible with virtualMatchString parameter. Default value: None. (Optional)
    - keywordExactMatch (bool): When keywordSearch is used along with keywordExactmatch, it will search the NVD for CVEs containing exactly what was passed to keywordSearch. REQUIRES keywordSearch. Default value: None. (Optional)
    - keywordSearch (str): Searches CVEs where a word or phrase is found in the current description. If passing multiple keywords with a space character in between then each word must exist somewhere in the description, not necessarily together unless keywordExactMatch=True is passedto searchCVE. Default value: None. (Optional)
    - lastModStartDate (str): Include the time, such as "2023-03-01 00:00". These parameters return only the CVEs that were last modified during the specified period. If a CVE has been modified more recently than the specified period, it will not be included in the response. If filtering by the last modified date, both lastModStartDate and lastModEndDate are REQUIRED. The maximum allowable range when using any date range parameters is 120 consecutive days. Example includes "2023-03-01 00:00". Default value: None. (Optional)
    - lastModEndDate (str): Include the time, such as "2023-03-01 00:00". Required if using lastModStartDate. Example includes "2023-03-01 00:00". Default value: None. (Optional)
    - noRejected (bool): Filters out all CVEs that are in a reject or rejected status. Searches without this parameter include rejected CVEs. Default value: None. (Optional)
    - pubStartDate (str): Include the time, such as "2023-03-01 00:00". These parameters return only the CVEs that were added to the NVD (i.e., published) during the specified period. If filtering by the published date, both pubStartDate and pubEndDate are REQUIRED. The maximum allowable range when using any date range parameters is 120 consecutive days. Example includes "2023-03-01 00:00". Default value: None. (Optional)
    - pubEndDate (str): Include the time, such as "2023-03-01 00:00". Required if using pubStartDate. Examples include "2023-03-01 00:00". Default value: None. (Optional)
    - sourceIdentifier (str): Returns CVE where the data source of the CVE is the value that is passed to sourceIdentifier. Default value: None. (Optional)
    - versionEnd (str): Must be combined with versionEndType and virtualMatchString. Returns only the CVEs associated with CPEs in specific version ranges. Default value: None. (Optional)
    - versionEndType (str): Must be combined with versionEnd and virtualMatchString. Valid values are including or excluding. Denotes to include the specified version in versionEnd, or exclude it. Default value: None. (Optional)
    - versionStart (str): Must be combined with versionStartType and virtualMatchString. Returns only CVEs with specific versions. Requests that include versionStart cannot include a version component in the virtualMatchString. Default value: None. (Optional)
    - versionStartType (str): Must be combined with versionStart and virtualMatchString. Valid values are including or excluding. Denotes to include the specified version in versionStart, or exclude it. Default value: None. (Optional)
    - virtualMatchString (str): A more broad filter compared to cpeName. The cpe match string that is passed to virtualMatchString is compared against the CPE Match Criteria present on CVE applicability statements. Default value: None. (Optional)
    - limit (int): Custom argument to limit the number of results of the search. Allowed any number between 1 and 2000. Default value: None. (Optional)
    - delay (int): Can only be used if an API key is provided. This allows the user to define a delay. The delay must be greater than 0.6 seconds. The NVD API recommends scripts sleep for atleast 6 seconds in between requests. Default value: None. (Optional)
    - key (str): NVD API Key. Allows for the user to define a delay. NVD recommends scripts sleep 6 seconds in between requests. If no valid API key is provided, requests are sent with a 6 second delay. Default value: None. (Optional)
    - verbose (bool): Prints the URL request for debugging purposes. Default value: None. (Optional)
    """

Function:
def searchCPE(cpeNameId: str = None, cpeMatchString: str = None, keywordExactMatch: bool = None, keywordSearch: str = None, lastModStartDate: str = None, lastModEndDate: str = None, limit: int = None, key: str = None, delay: int = None, verbose: bool = None):
    """
    Build and send GET request then return list of objects containing a collection of CPEs.
    
    When providing ANY date time strings, please also specify the time. Such as: "00:00" suffix to the end of every datetime string. So, if you're generating a date, make sure to say "2023-03-01 00:00".

    Parameters:
    - cpeNameId (str): Returns a specific CPE record using its UUID. If a correctly formatted UUID is passed but it does not exist, it will return empty results. The UUID is the cpeNameId value when searching CPE. Default value: None. (Optional)
    - cpeMatchString (str): Use a partial CPE name to search for other CPE names. Default value: None. (Optional)
    - keywordExactMatch (bool): Searches metadata within CPE title and reference links for an exact match of the phrase or word passed to it. Must be included with keywordSearch. Default value: None. (Optional)
    - keywordSearch (str): Returns CPE records where a word or phrase is found in the metadata title or reference links. Space characters act as an AND statement. Default value: None. (Optional)
    - lastModStartDate (str): Include the time!! CPE last modification start date. Maximum 120 day range. A start and end date is required. All times are in UTC 00:00. A datetime object or string can be passed as a date. NVDLib will automatically parse the datetime object into the correct format. String Example: ‘2020-06-28 00:00’. Default value: None. (Optional)
    - lastModEndDate (str): Include the time!! CPE last modification end date. Maximum 120 day range. Must be included with lastModStartDate. String Example: ‘2020-06-28 00:00’. Default value: None. (Optional)
    - limit (int): Limits the number of results of the search. Default value: None. (Optional)
    - key (str): NVD API Key. Allows for a request every 0.6 seconds instead of 6 seconds. Default value: None. (Optional)
    - delay (int): Can only be used if an API key is provided. The amount of time to sleep in between requests. Must be a value above 0.6 seconds if an API key is present. delay is set to 6 seconds if no API key is passed. Default value: None. (Optional)
    - verbose (bool): Prints the URL request for debugging purposes. Default value: None. (Optional)
    """

Current Turn:
User Query: Filter for CVE names modfied between 2020-01-01 and 2020-02-01 with the keyword of PHP. <human_end>

Call: