endpoints/CustomValues.ps1


<#
  .Synopsis
  Get a list of all custom fields in Atera

  .Example
  Get-AteraCustomValues
  # Get a list of all custom fields
#>

function Get-AteraCustomValues {
  [CmdletBinding()]
  $uri = "/customvalues/customfields"
  New-AteraGetRequest -Endpoint $uri -Paginate $false
}

<#
  .Synopsis
  Get the value from a custom field in Atera

  .Parameter ObjectType
  The type of object to query against. Options: Ticket, Customer, Contact, Contract, SLA, Agent, SNMP, TCP, HTTP, Generic

  .Parameter ObjectID
  The ID of the object to query (ex. Ticket ID)

  .Parameter FieldName
  The name of the custom field

  .Example
  Get-AteraCustomValue -ObjectType Ticket -ObjectID 1234 -FieldName "Scheduled For"
  # Get the "Scheduled For" field for Ticket 1234
#>

function Get-AteraCustomValue {
  [CmdletBinding()]
  param (
    [Parameter(Mandatory)]
    [ValidateSet("Ticket", "Customer", "Contact", "Contract", "SLA", "Agent", "SNMP", "TCP", "HTTP", "Generic")]
    [string] $ObjectType,
    [Parameter(Mandatory)]
    [int] $ObjectID,
    [Parameter(Mandatory)]
    [string] $FieldName
  )
  $FieldName = [uri]::EscapeDataString($FieldName)
  $uri = "/customvalues/$($ObjectType.ToLower())field/$ObjectID/$FieldName"
  New-AteraGetRequest -Endpoint $uri -Paginate $false
}

<#
  .Synopsis
  Get the value from a custom field in Atera

  .Parameter ObjectType
  The type of object to query against. Options: Ticket, Customer, Contact, Contract, SLA, Agent, SNMP, TCP, HTTP, Generic

  .Parameter ObjectID
  The ID of the object to query (ex. Ticket ID)

  .Parameter FieldName
  The name of the custom field

  .Parameter Value
  The value of the custom field

  .Example
  Set-AteraCustomValue -ObjectType Ticket -ObjectID 1234 -FieldName "Scheduled For" -Value "2021-02-03"
  # Get the "Scheduled For" field for Ticket 1234
#>

function Set-AteraCustomValue {
  [CmdletBinding()]
  param (
    [Parameter(Mandatory)]
    [ValidateSet("Ticket", "Customer", "Contact", "Contract", "SLA", "Agent", "SNMP", "TCP", "HTTP", "Generic")]
    [string] $ObjectType,
    [Parameter(Mandatory)]
    [int] $ObjectID,
    [Parameter(Mandatory)]
    [string] $FieldName,
    [Parameter()]
    [string] $Value=""
  )
  $FieldName = [uri]::EscapeDataString($FieldName)
  $uri = "/customvalues/$($ObjectType.ToLower())field/$ObjectID/$FieldName"
  New-AteraPutRequest -Endpoint $uri -Body @{Value=$Value}
}

<#
  .Synopsis
  Get all custom values for a specific object.
#>

function Get-AteraCustomValuesForObject {
  [CmdletBinding()]
  param (
    [Parameter(Mandatory)]
    [ValidateSet("Ticket", "Customer", "Contact", "Contract", "SLA", "Agent", "SNMP", "TCP", "HTTP", "Generic")]
    [string] $ObjectType,
    [Parameter(Mandatory)]
    [int] $ObjectID
  )
  $uri = "/customvalues/$($ObjectType.ToLower())fields/$ObjectID"
  New-AteraGetRequest -Endpoint $uri -Paginate $false
}

<#
  .Synopsis
  Create a value for a custom field.
#>

function New-AteraCustomValue {
  [CmdletBinding()]
  param (
    [Parameter(Mandatory)]
    [ValidateSet("Ticket", "Customer", "Contact", "Contract", "SLA", "Agent", "SNMP", "TCP", "HTTP", "Generic")]
    [string] $ObjectType,
    [Parameter(Mandatory)]
    [int] $ObjectID,
    [Parameter(Mandatory)]
    [string] $FieldName,
    [Parameter()]
    [string] $Value = ""
  )
  $FieldName = [uri]::EscapeDataString($FieldName)
  $uri = "/customvalues/$($ObjectType.ToLower())field/$ObjectID/$FieldName"
  New-AteraPostRequest -Endpoint $uri -Body @{ Value = $Value }
}

<#
  .Synopsis
  Get custom value records by custom value ID.
#>

function Get-AteraCustomValueById {
  [CmdletBinding()]
  param (
    [Parameter(Mandatory)]
    [string] $CustomValueID
  )
  New-AteraGetRequest -Endpoint "/customvalues/$CustomValueID" -Paginate $false
}