resources/object.ps1

function Get-QlikObject {
  [CmdletBinding(DefaultParameterSetName="Multi")]
  param (
    [parameter(ParameterSetName="Single",Mandatory=$false,Position=0)]
    [string]$id,

    [parameter(ParameterSetName="Multi",Mandatory=$false)]
    [string]$filter,

    [parameter(ParameterSetName="Multi",Mandatory=$false)]
    [switch]$full,

    [switch]$raw
  )

  PROCESS {
    $path = "/qrs/app/object"
    If( $id ) { $path += "/$id" }
    If( $full ) { $path += "/full" }
    If( $raw ) { $rawOutput = $true }
    return Invoke-QlikGet $path $filter
  }
}

function Publish-QlikObject {
  [CmdletBinding()]
  param (
    [parameter(Mandatory=$true,Position=0,ValueFromPipelinebyPropertyName=$True)]
    [string]$id
  )

  PROCESS {
    $path = "/qrs/app/object/$id/publish"

    return Invoke-QlikPut $path
  }
}

function Remove-QlikObject {
  [CmdletBinding()]
  param (
    [parameter(Mandatory=$true,Position=0,ValueFromPipelinebyPropertyName=$true)]
    [string]$id
  )

  PROCESS {
    return Invoke-QlikDelete "/qrs/app/object/$id"
  }
}

function Unpublish-QlikObject {
  [CmdletBinding()]
  param (
    [parameter(Mandatory=$true,Position=0,ValueFromPipelinebyPropertyName=$True)]
    [string]$id
  )

  PROCESS {
    $path = "/qrs/app/object/$id/unpublish"

    return Invoke-QlikPut $path
  }
}

function Update-QlikObject {
  [CmdletBinding()]
  param (
    [parameter(Mandatory=$true,ValueFromPipelinebyPropertyName=$True,Position=0)]
    [string]$id,

    [string]$owner,
    [bool]$approved
  )

  PROCESS {
    $obj = Get-QlikObject $id -raw
    If( $owner ) { $obj.owner = @{id=$owner} }
    If( $psBoundParameters.ContainsKey("approved") ) { $obj.approved = $approved }

    $json = $obj | ConvertTo-Json -Compress -Depth 10
    return Invoke-QlikPut "/qrs/app/object/$id" $json
  }
}