Public/System/Members/New-CWMMember.ps1

function New-CWMMember {
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSShouldProcess', '', Justification = 'Used by sub-function')]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPlainTextForPassword', '', Justification = 'Required for API')]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingUsernameAndPasswordParams', '', Justification = 'Required for API')]
    [CmdletBinding(SupportsShouldProcess, ConfirmImpact='Medium')]
    param(
        [int]$id,
        [ValidateLength(1,15)]
        [Parameter(Mandatory=$true)]
        [string]$identifier,
        [ValidateLength(1,60)]
        [string]$password,
        [ValidateLength(1,30)]
        [Parameter(Mandatory=$true)]
        [string]$firstName,
        [ValidateLength(1,1)]
        [string]$middleInitial,
        [ValidateLength(1,30)]
        [Parameter(Mandatory=$true)]
        [string]$lastName,
        [ValidateLength(1,50)]
        [string]$title,
        [hashtable]$reportCard,
        [Parameter(Mandatory=$true)]
        [ValidateSet('F','A','C','X')]
        [string]$licenseClass,
        [boolean]$disableOnlineFlag,
        [boolean]$enableMobileFlag,
        [hashtable]$type,
        [ValidateLength(1,10)]
        [string]$employeeIdentifer,
        [string]$vendorNumber,
        [string]$notes,
        [hashtable]$timeZone,
        [hashtable]$TimeZoneSetupReference,
        [hashtable]$country,
        [int[]]$serviceBoardTeamIds,
        [boolean]$enableMobileGpsFlag,
        [string]$inactiveDate,
        [boolean]$inactiveFlag,
        [string]$lastLogin,
        [hashtable]$photo,
        [boolean]$partnerPortalFlag,
        [string]$clientId,
        [string]$stsUserAdminUrl,
        [string]$token,
        [boolean]$toastNotificationFlag,
        [int[]]$memberPersonas,
        [hashtable]$office365,
        [ValidateLength(1,250)]
        [string]$officeEmail,
        [ValidateLength(1,15)]
        [string]$officePhone,
        [ValidateLength(1,10)]
        [string]$officeExtension,
        [ValidateLength(1,250)]
        [string]$mobileEmail,
        [ValidateLength(1,15)]
        [string]$mobilePhone,
        [ValidateLength(1,10)]
        [string]$mobileExtension,
        [ValidateLength(1,250)]
        [string]$homeEmail,
        [ValidateLength(1,15)]
        [string]$homePhone,
        [ValidateLength(1,10)]
        [string]$homeExtension,
        [Parameter(Mandatory=$true)]
        [ValidateSet('Office','Mobile','Home')]
        [string]$defaultEmail,
        [ValidateLength(1,250)]
        [string]$primaryEmail,
        [Parameter(Mandatory=$true)]
        [ValidateSet('Office','Mobile','Home')]
        [string]$defaultPhone,
        [hashtable]$securityRole,
        [boolean]$adminFlag,
        [hashtable]$structureLevel,
        [hashtable]$securityLocation,
        [hashtable]$defaultLocation,
        [hashtable]$defaultDepartment,
        [hashtable]$reportsTo,
        [boolean]$restrictLocationFlag,
        [boolean]$restrictDepartmentFlag,
        [hashtable]$workRole,
        [hashtable]$workType,
        [hashtable]$timeApprover,
        [hashtable]$expenseApprover,
        [double]$billableForecast,
        [double]$dailyCapacity,
        [double]$hourlyCost,
        [double]$hourlyRate,
        [boolean]$includeInUtilizationReportingFlag,
        [boolean]$requireExpenseEntryFlag,
        [boolean]$requireTimeSheetEntryFlag,
        [boolean]$requireStartAndEndTimeOnTimeEntryFlag,
        [boolean]$allowInCellEntryOnTimeSheet,
        [boolean]$enterTimeAgainstCompanyFlag,
        [boolean]$allowExpensesEnteredAgainstCompaniesFlag,
        [boolean]$timeReminderEmailFlag,
        [int]$daysTolerance,
        [double]$minimumHours,
        [string]$timeSheetStartDate,
        [Parameter(Mandatory=$true)]
        [string]$hireDate,
        [hashtable]$serviceDefaultLocation,
        [hashtable]$serviceDefaultDepartment,
        [hashtable]$serviceDefaultBoard,
        [boolean]$restrictServiceDefaultLocationFlag,
        [boolean]$restrictServiceDefaultDepartmentFlag,
        [int[]]$excludedServiceBoardIds,
        [hashtable]$projectDefaultLocation,
        [hashtable]$projectDefaultDepartment,
        [hashtable]$projectDefaultBoard,
        [boolean]$restrictProjectDefaultLocationFlag,
        [boolean]$restrictProjectDefaultDepartmentFlag,
        [int[]]$excludedProjectBoardIds,
        [hashtable]$scheduleDefaultLocation,
        [hashtable]$scheduleDefaultDepartment,
        [double]$scheduleCapacity,
        [hashtable]$serviceLocation,
        [boolean]$restrictScheduleFlag,
        [boolean]$hideMemberInDispatchPortalFlag,
        [hashtable]$calendar,
        [hashtable]$salesDefaultLocation,
        [boolean]$restrictDefaultSalesTerritoryFlag,
        [hashtable]$warehouse,
        [hashtable]$warehouseBin,
        [boolean]$restrictDefaultWarehouseFlag,
        [boolean]$restrictDefaultWarehouseBinFlag,
        [string]$mapiName,
        [boolean]$calendarSyncIntegrationFlag,
        [boolean]$enableLdapAuthenticationFlag,
        [hashtable]$ldapConfiguration,
        [ValidateLength(1,50)]
        [string]$ldapUserName,
        [Parameter(Mandatory=$true)]
        [ValidateSet('SummaryList','DetailList')]
        [string]$companyActivityTabFormat,
        [Parameter(Mandatory=$true)]
        [ValidateSet('SummaryList','DetailList')]
        [string]$invoiceTimeTabFormat,
        [Parameter(Mandatory=$true)]
        [ValidateSet('ShowInvoicingTab','ShowAgreementInvoicingTab')]
        [string]$invoiceScreenDefaultTabFormat,
        [Parameter(Mandatory=$true)]
        [ValidateSet('RemainOnInvoicingScreen','ShowRecentInvoices')]
        [string]$invoicingDisplayOptions,
        [Parameter(Mandatory=$true)]
        [ValidateSet('RemainOnInvoicingScreen','ShowRecentInvoices')]
        [string]$agreementInvoicingDisplayOptions,
        [ValidateSet('LogMeIn','NTR')]
        [string]$remotePackage,
        [ValidateLength(1,250)]
        [string]$remotePackagePlatform,
        [ValidateLength(1,50)]
        [string]$remotePackageUserName,
        [ValidateLength(1,50)]
        [SecureString]$remotePackagePassword,
        [ValidateLength(1,250)]
        [string]$remotePackageAccount,
        [ValidateSet('AuthAnvil','GoogleAuthenticator')]
        [string]$authenticationServiceType,
        [boolean]$timebasedOneTimePasswordActivated,
        [hashtable]$ssoSettings,
        [boolean]$autoStartStopwatch,
        [boolean]$autoPopupQuickNotesWithStopwatch,
        [string]$signature,
        [ValidateSet('OpenRecords','ClosedRecords','AllRecords')]
        [string]$globalSearchDefaultTicketFilter,
        [ValidateSet('None','LastUpdatedDesc','LastUpdatedAsc','CreatedDesc','CreatedAsc')]
        [string]$globalSearchDefaultSort,
        [string]$phoneSource,
        [ValidateSet('TAPI','SKYPE','NONE')]
        [string]$phoneIntegrationType,
        [hashtable]$_info,
        [boolean]$copyPodLayouts,
        [boolean]$copySharedDefaultViews,
        [boolean]$copyColumnLayoutsAndFilters,
        [int]$fromMemberRecId,
        [hashtable[]]$customFields
    )

    $Endpoint = '/system/members'
    Invoke-CWMNewMaster -Arguments $PsBoundParameters -Endpoint $Endpoint
}