Public/Notes/New-AffinityNote.ps1
<#
.Synopsis Creates a new note .DESCRIPTION Long description .EXAMPLE Example of how to use this cmdlet .EXAMPLE Another example of how to use this cmdlet .INPUTS Inputs to this cmdlet (if any) .OUTPUTS Output from this cmdlet (if any) .NOTES General notes .LINK https://api-docs.affinity.co/#create-a-new-note #> function New-AffinityNote { [CmdletBinding(PositionalBinding = $true, DefaultParameterSetName = 'Content')] [OutputType([System.Management.Automation.PSObject])] Param ( # Affinity Note Content [Parameter(Mandatory = $true, Position = 0, ParameterSetName = 'Content')] [ValidateNotNullOrEmpty()] [string] $NoteContent, # Affinity gmail_id [Parameter(Mandatory = $true, Position = 0, ParameterSetName = 'GmailID')] [ValidateNotNullOrEmpty()] [string] $GmailID, # Affinity person_ids [Parameter(Mandatory = $false, Position = 1)] [long[]] $PersonIDs, # Affinity organization_ids [Parameter(Mandatory = $false, Position = 2)] [long[]] $OrganizationIDs, # Affinity opportunity_ids [Parameter(Mandatory = $false, Position = 3)] [long[]] $OpportunityIDs, # Affinity creator_id [Parameter(Mandatory = $false, Position = 4)] [long] $CreatorID, # Affinity created_at [Parameter(Mandatory = $false, Position = 5)] [datetime] $CreatedAt ) Process { # Add mandatory parameters switch ($PSCmdlet.ParameterSetName) { 'Content' { $Content = @{ 'content' = $NoteContent } } 'GmailID' { $Content = @{ 'gmail_id' = $GmailID } } Default { throw [System.NotSupportedException] "ParameterSet not developed" } } # Add optional parameters if ($PersonIDs) { $Content.Add( 'person_ids', $PersonIDs ) } if ($OrganizationIDs) { $Content.Add( 'organization_ids', $OrganizationIDs ) } if ($OpportunityIDs) { $Content.Add( 'opportunity_ids', $OpportunityIDs ) } if ($CreatorID) { $Content.Add( 'creator_id', $CreatorID ) } if ($CreatedAt) { $Content.Add( 'created_at', $CreatedAt.ToString('o') ) } Invoke-AffinityAPIRequest -Method Post -Fragment "notes" -Content $Content } } |