Public/Get-NexosisImport.ps1

Function Get-NexosisImport {
<#
 .Synopsis
  Lists imports that have been created.

 .Description
  Gets the list of imports that have been created for the company associated with your account.
 
 .Parameter importId
  Retrieves import by ImportId. This option cannot be used with any other.

 .Parameter dataSetName
  Limits imports to those for a particular dataset. This option cannot be used with the ImportId parameter.

 .Parameter Page
  Format - int32. Zero-based page number of imports to retrieve (default page 0)
    
 .Parameter PageSize
  Format - int32. Count of imports to retrieve in each page (default 100; max 1000)

 .Example
  # Get all imports
  Get-NexosisImport

 .Example
 # Get Import by Import ID
 Get-NexosisImport -ImportId 015d7a16-8b2b-4c9c-865d-9a400e01a291

 .Example
  # Get all imports for DataSet named 'SalesData'
  Get-NexosisImport -DataSetName 'SalesData'
  
 .Example
  # Get first page and one result of imports for dataset named 'SalesData'
  Get-NexosisImport -dateSetName 'SalesData' -page 0 -pageSize 20

 .Example
  # Get all imports requested after the date 2017-07-25 UTC
  Get-NexosisImport -requestedAfterDate 2017-07-25+00:00

 .Example
  # Get all datasets that match the partial name 'Location' and Get all associated Imports
  ((Get-NexosisDataSet -partialName 'Location') | Foreach { $_.DataSetName } | Get-NexosisImport)
  
#>
[CmdletBinding()]
    Param(
        [Parameter(Mandatory=$false, ValueFromPipeline=$True)]
        [Guid]$importId,
        [Parameter(Mandatory=$false, ValueFromPipeline=$True)]
        [string]$dataSetName,
        [Parameter(Mandatory=$false, ValueFromPipelineByPropertyName=$true)]
        [DateTime]$requestedAfterDate,
        [Parameter(Mandatory=$false, ValueFromPipelineByPropertyName=$true)]
        [DateTime]$requestedBeforeDate,
        [Parameter(Mandatory=$false)]
        [int]$page=0,
        [Parameter(Mandatory=$false)]
        [int]$pageSize=$script:PSNexosisVars.DefaultPageSize
    )
    process {
        if ($importId -eq $null) {            
            if ($page -lt 0) {
                throw "Parameter '-page' must be an integer greater than or equal to 0."
            }

            if (($pageSize -gt ($script:MaxPageSize)) -or ($pageSize -lt 1)) {
                throw "Parameter '-pageSize' must be an integer between 1 and $script:MaxPageSize."
            }
            
            $params = [System.Web.HttpUtility]::ParseQueryString([String]::Empty)

            if ($dataSetName -ne $null) { 
                $params['dataSetName'] = $dataSetName
            }
            if ($requestedAfterDate -ne $null) { 
                $params['requestedAfterDate'] = $requestedAfterDate
            }
            if ($requestedBeforeDate -ne $null) {
                $params['requestedBeforeDate'] = $requestedBeforeDate
            }
            if ($page -ne 0) {
                $params['page'] = $page
            }
            if ($pageSize -ne ($script:PSNexosisVars.DefaultPageSize)) {
                $params['pageSize'] = $pageSize
            } elseif ($script:PSNexosisVars.DefaultPageSize -ne $script:ServerDefaultPageSize) {
                $params['pageSize'] = $script:PSNexosisVars.DefaultPageSize
            }    

            $response = Invoke-Http -method Get -path 'imports' -params $params    
            $hasResponseCode = $null -ne $response.StatusCode
            
            if ($hasResponseCode -eq $true) {
                $response
            } else {
                $response.items
            }
        } else {
            if (
                $dataSetName.Length -gt 0 -or
                $requestedAfterDate -ne $null -or
                $requestedBeforeDate -ne $null
            ) {
                throw "Parameter '-SessionID' is exclusive and cannot be used with any other parameters."
            }
            Invoke-Http -method Get -path "imports/$importId"
        }
    }
}