UiPathOrch.psd1

#
# Module manifest for module 'UiPathOrch'
#
# Generated by: Yoshifumi Tsuda
#
# Generated on: 2023/08/28
#

@{

# Script module or binary module file associated with this manifest.
RootModule = 'UiPathOrch.dll'

# Version number of this module.
ModuleVersion = '1.4.2'

# Supported PSEditions
CompatiblePSEditions = @('Core')

# ID used to uniquely identify this module
GUID = '7098583d-d092-4fe9-bf36-a652e7a51efb'

# Author of this module
Author = 'Yoshifumi Tsuda'

# Company or vendor of this module
CompanyName = 'UiPath'

# Copyright statement for this module
Copyright = 'Copyright 2023-2026 UiPath'

# Description of the functionality provided by this module
Description = 'Open-source PSDrives and cmdlets for managing UiPath Orchestrator. Not an official abbreviation of, or part of, the Orchestrator product. 💡 First time? Run: Get-OrchHelp'

# Minimum version of the PowerShell engine required by this module
PowerShellVersion = '7.4.2'

# Name of the PowerShell host required by this module
# PowerShellHostName = ''

# Minimum version of the PowerShell host required by this module
# PowerShellHostVersion = ''

# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# DotNetFrameworkVersion = ''

# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# ClrVersion = ''

# Processor architecture (None, X86, Amd64) required by this module
# ProcessorArchitecture = ''

# Modules that must be imported into the global environment prior to importing this module
# RequiredModules = @()

# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()

# Script files (.ps1) that are run in the caller's environment prior to importing this module.
# ScriptsToProcess = @()

# Type files (.ps1xml) to be loaded when importing this module
# TypesToProcess = @()

# Format files (.ps1xml) to be loaded when importing this module
FormatsToProcess = @('UiPathOrch.Format.ps1xml')

# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
NestedModules = @('UiPathOrch.psm1')

# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
FunctionsToExport = @(
'Enable-OrchUserAttended',
'Disable-OrchUserAttended',
'Enable-OrchPersonalWorkspace',
'Disable-OrchPersonalWorkspace',
'Find-OrchFolderNoUserAssigned',
'Get-OrchJobVideo',
'Format-OrchQueueItem',
'Format-OrchTestDataQueueItem'
)

# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
CmdletsToExport = @(
'Import-OrchConfig',
'New-OrchPSDrive',
'Invoke-OrchApi',
'Switch-OrchCurrentUser',
'Get-OrchPSDrive',
'Get-OrchProductVersion',

'Get-OrchLibrary',
'Get-OrchLibraryVersion',
'Remove-OrchLibrary',
'Import-OrchLibrary',
'Export-OrchLibrary',
'Copy-OrchLibrary',

'Get-OrchPackage',
'Copy-OrchPackage',
'Get-OrchPackageVersion',
'Remove-OrchPackage',
'Import-OrchPackage',
'Export-OrchPackage',

'Get-OrchJob',
'Start-OrchJob',
'Stop-OrchJob',
'Restart-OrchJob',
'Resume-OrchJob',
'Open-OrchJob',

'Get-OrchLog',
'Get-OrchAuditLog',

'Get-OrchJobMedia',
'Export-OrchJobMedia',
'Remove-OrchJobMedia',

'Get-OrchProcess',
'Get-OrchProcessDetail',
'New-OrchProcess',
'Update-OrchProcess',
'Copy-OrchProcess',
'Remove-OrchProcess',
'Edit-OrchProcess',
'Update-OrchProcessVersion',
'Reset-OrchProcessVersion',
'Get-OrchProcessRequirement',

'Get-OrchRobot',

'Get-OrchUser',
'Get-OrchUserDetail',
'Get-OrchUserPrivilege',
'Add-OrchUser',
'Update-OrchUser',
'Copy-OrchUser',
'Remove-OrchUser',
'Remove-OrchRoleFromUser',
'Get-OrchCurrentUser',
'Update-OrchCurrentUserURPassword',

'Get-OrchLicenseNamedUser',
'Get-OrchLicenseRuntime',
'Enable-OrchLicenseRuntime',
'Disable-OrchLicenseRuntime',

'Get-PmAuditLog',
'Get-PmAuthenticationSetting',

'Get-PmLicense',
'Get-PmLicenseAllocation',
'Get-PmLicenseInventory',
'Get-PmLicenseContract',
'Get-PmLicensedUser',

'Get-PmLicensedGroup',
'Remove-PmLicensedGroup',
'Add-PmLicenseToPmLicensedGroup',
'Remove-PmAllocationFromPmLicensedGroup',
'Remove-PmLicenseFromPmLicensedGroup',

'Get-OrchClassicRobot',
'Get-OrchClassicEnvironment',

'Get-OrchUserSession',
'Get-OrchMachineSession',
'Get-OrchUnattendedSession',
'Clear-OrchInactiveSession',

'Get-OrchTask',
'Get-OrchTaskAcrossFolder',
'Set-OrchTask',
'Remove-OrchTask',

'Enable-OrchMaintenanceMode',
'Disable-OrchMaintenanceMode',

'Get-OrchJobStats',
'Get-OrchLicenseStats',

'Get-OrchRole',
'Set-OrchRole',
'Remove-OrchRole',
'Copy-OrchRole',

'Get-OrchCalendar',
'Remove-OrchCalendar',
'Copy-OrchCalendar',

'Get-OrchCalendarDate',
'Add-OrchCalendarDate',
'Remove-OrchCalendarDate',

'Get-OrchPersonalWorkspace',
'Remove-OrchPersonalWorkspace',
'Get-OrchFolderUsage',

'Get-OrchFolderUser',
'Add-OrchFolderUser',
'Copy-OrchFolderUser',
'Move-OrchFolderUser',
'Remove-OrchFolderUser',

'Add-OrchRoleToFolderUser',
'Remove-OrchRoleFromFolderUser',

'Get-OrchMachine',
'Update-OrchMachine',
'New-OrchMachine',
'Remove-OrchMachine',
'Copy-OrchMachine',
'Get-OrchMachineClientSecretId',
'Add-OrchMachineClientSecret',
'Remove-OrchMachineClientSecret',

'Get-OrchFolderMachine',
'Add-OrchFolderMachine',
'Copy-OrchFolderMachine',
'Remove-OrchFolderMachine',
'Enable-OrchFolderMachineInherit',
'Disable-OrchFolderMachineInherit',

'Get-OrchFolderMachineAccountMapping',
'Enable-OrchFolderMachineAccountMapping',
'Disable-OrchFolderMachineAccountMapping',

'Get-OrchAsset',
'Set-OrchAsset',
'Copy-OrchAsset',
'Remove-OrchAsset',

'Set-OrchCredentialAsset',
'Get-OrchCredentialAsset',

'Set-OrchSecretAsset',
'Get-OrchSecretAsset',

'Remove-OrchAssetUserValue',

'Get-OrchCredentialStore',
'Copy-OrchCredentialStore',
'Update-OrchCredentialStore',
'Remove-OrchCredentialStore',

'Get-OrchAssetLink',
'Add-OrchAssetLink',
'Remove-OrchAssetLink',

'Get-OrchBucketLink',
'Add-OrchBucketLink',
'Remove-OrchBucketLink',

'Get-OrchQueueLink',
'Add-OrchQueueLink',
'Remove-OrchQueueLink',

'Get-OrchTrigger',
'Get-OrchTriggerDetail',
'New-OrchTrigger',
'Update-OrchTrigger',
'Remove-OrchTrigger',
'Copy-OrchTrigger',
'Enable-OrchTrigger',
'Disable-OrchTrigger',
'Test-OrchTrigger',

'Get-OrchApiTrigger',
'Remove-OrchApiTrigger',
'Copy-OrchApiTrigger',
'Enable-OrchApiTrigger',
'Disable-OrchApiTrigger',

'Get-OrchEventTrigger',
'Remove-OrchEventTrigger',
'Enable-OrchEventTrigger',
'Disable-OrchEventTrigger',

'Get-OrchQueue',
'New-OrchQueue',
'Update-OrchQueue',
'Copy-OrchQueue',
'Remove-OrchQueue',

'Get-OrchQueueItem',
'Import-OrchQueueItem',
'Redo-OrchQueueItem',
'Copy-OrchQueueItem',
'Remove-OrchQueueItem',

'Get-OrchTestSet',
'Copy-OrchTestSet',
'Remove-OrchTestSet',
'Start-OrchTestSet',

'Get-OrchTestCase',
'Get-OrchTestCaseExecution',
'Get-OrchTestCaseAssertion',
'Remove-OrchTestCase',

'Get-OrchTestSetExecution',
'Stop-OrchTestSetExecution',

'Get-OrchTestSetSchedule',
'Copy-OrchTestSetSchedule',
'Remove-OrchTestSetSchedule',
'Enable-OrchTestSetSchedule',
'Disable-OrchTestSetSchedule',

'Get-OrchTestDataQueue',
'Copy-OrchTestDataQueue',
'Remove-OrchTestDataQueue',

'Get-OrchTestDataQueueItem',
'Reset-OrchTestDataQueueItem',

'Get-OrchAlert',

'Get-OrchBucket',
'New-OrchBucket',
'Copy-OrchBucket',
'Update-OrchBucket',
'Remove-OrchBucket',

'Get-OrchBucketItem',
'Export-OrchBucketItem',
'Import-OrchBucketItem',
'Remove-OrchBucketItem',

'Get-OrchWebhook',
'Copy-OrchWebhook',
'Update-OrchWebhook',
'Remove-OrchWebhook',
'Enable-OrchWebhook',
'Disable-OrchWebhook',
'Get-OrchWebhookEventType',
'Test-OrchWebhook',

'Get-OrchSetting',
'Set-OrchSetting',
'Get-OrchExecutionSetting',
'Get-OrchWebSetting',
'Get-OrchAuthenticationSetting',
'Get-OrchActivitySetting',
'Get-OrchConnectionString',
'Get-OrchLicense',
'Get-OrchUpdateSetting',

'Get-OrchActionCatalog',
'Copy-OrchActionCatalog',
'Remove-OrchActionCatalog',

'Search-OrchDirectory',
'Search-PmDirectory',
'Resolve-PmDirectoryNameBulk',

'Get-PmUser',
'Update-PmUser',
'Remove-PmUser',
'New-PmUser',
'Copy-PmUser',

'Get-PmRobotAccount',
'Set-PmRobotAccount',
'Copy-PmRobotAccount',
'Remove-PmRobotAccount',

'Get-PmGroup',
'New-PmGroup',
'Copy-PmGroup',
'Remove-PmGroup',

'Get-PmGroupMember',
'Add-PmGroupMember',
'Move-PmGroupMember',
'Remove-PmGroupMember',

'Get-PmExternalApiResource',
'Get-PmExternalApplication',
'Copy-PmExternalApplication',
'Remove-PmExternalApplication',

'Get-PmAccessAllowedMember',

'Get-DuRole',
'Get-DuDocumentType',
'Get-DuClassifier',
'Get-DuExtractor',

'Get-DuUser',
'Add-DuUser',
'Remove-DuRoleFromDuUser',

'Get-TmConfiguration',
'Get-TmProjectSetting',
'Get-TmProjectPermission',
'Get-TmServerInfo',

'Get-TmRequirement',
'Remove-TmRequirement',

'Get-TmTestCase',
'Remove-TmTestCase',

'Get-TmTestSet',
'Remove-TmTestSet',

'Get-TmTestExecution',

'Get-OrchHelp',
'Clear-OrchCache',
'Get-OrchConfigPath',
'Edit-OrchConfig',
'Set-OrchLocation',
'Get-OrchLogLocation',
'Open-OrchLogLocation',

'New-OrchUserMappingCsv',
'Test-OrchUserMappingCsv'
)

# Variables to export from this module
VariablesToExport = @()

# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
AliasesToExport = @('!Show-OrchGuide')

# DSC resources to export from this module
# DscResourcesToExport = @()

# List of all modules packaged with this module
# ModuleList = @()

# List of all files packaged with this module
# FileList = @()

# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
PrivateData = @{

    PSData = @{

        # Tags applied to this module. These help with module discovery in online galleries.
        Tags = @('UiPath', 'Orchestrator', 'RPA', 'Automation', 'PSDrive', 'PSProvider', 'Cloud', 'OnPremises')

        # A URL to the license for this module.
        LicenseUri = 'https://github.com/UiPath-Services/UiPathOrch/blob/master/LICENSE'

        # A URL to the main website for this project.
        ProjectUri = 'https://github.com/UiPath-Services/UiPathOrch'

        # A URL to an icon representing this module.
        # IconUri = ''

        # ReleaseNotes of this module.
        # Single-quoted here-string (@'...'@) so apostrophes (e.g. "task's") inside the
        # body don't have to be doubled. The closing '@ MUST be at column 0 (no leading
        # whitespace) — that's the only termination rule.
        ReleaseNotes = @'
Patch release. Two pipeline-input bug fixes in helper functions, three raw `_dic*` caches retired in favor of small focused cache classes, and the cmdlet-redesign-plan-p3 doc closes out (raw `_dic*` accumulator pattern eliminated except for `_dicFolders` itself).
 
## Bug Fixes
- **`Enable-/Disable-OrchPersonalWorkspace` and `Enable-/Disable-OrchUserAttended` lost all but the last input when piped to.** These functions declared `[Parameter(ValueFromPipelineByPropertyName)]` but had no explicit `process` block, so `Get-OrchUser | Disable-OrchUserAttended` silently disabled only the last user. Direct invocation (`-UserName a,b,c`) was unaffected and remains unchanged.
- **`Logging.Enabled` now defaults to `true` when the `Logging` section is present but `Enabled` is unspecified.** Previously a config with only `Logging.Level` set produced no log output at all — the log folder was created but stayed empty, with no signal why; a frequent support trap when diagnosing auth issues. An explicit `Logging.Enabled: false` is still respected; absent `Logging` section still means no logging.
- **Auth-diagnostics / HTTP log was lost when a sign-in hung or failed (e.g. PKCE `#219`).** `AsyncLogWriter`'s time-based flush was only re-evaluated when the next entry was dequeued, so a lone buffered entry with no follow-up (the pre-auth diagnostics block written just before a PKCE listener that then blocks on a callback that never comes) was never written — log folder created, file empty. Together with the `Logging.Enabled` fix this closes the "log folder exists but is empty when diagnosing an auth failure" trap. The interval flush is now a real deadline, so a single buffered entry is persisted within `flushIntervalMs` even while the producer is idle or blocked; batch flush and graceful-dispose drain are unchanged. Restores log capture during a failed sign-in; does not change authentication behaviour itself.
- **PM records could carry another drive's per-drive `Path`** — when results were retained (a variable, or queried across same-org drives) every element showed the *last* drive's `Path`. The 1.4.0 fix had attached `Path` via a per-`WriteObject` PSObject `NoteProperty`, which didn't hold (PowerShell binds PSObject members to the shared cached base object). `Path` is a plain DTO property again, Shallow-cloned per emit before it's stamped — independent per drive, the rest still shared with the singleton, and safe under the now-parallel `Get-Pm*`.
- **Cloud sign-in failed with `#219` "user has not accepted the invitation" for Entra-ID-federated organizations.** The Cloud Identity URL was auto-derived org-scoped (`https://cloud.uipath.com/{org}/identity_`); that authorize endpoint resolves a federated user into an org membership/invitation check that returns errorCode 219 (local UiPath accounts unaffected, which is why it shipped unnoticed). Introduced in v0.9.15.5 (commit d57c287); pinned by a customer release bisection (v0.9.15.4 OK → v0.9.15.5 NG). Cloud now auto-derives host-level `https://cloud.uipath.com/identity_` (same form as Automation Suite), verified end-to-end. An explicit `IdentityUrl` still overrides for non-default Identity Servers.
 
## Changed
- **PM audit log cache (`_dicPmAuditLogs`) migrated to `IncrementalCachePerTenant`.** Uses the entity as its own key, so the previous `HashSet<PmAuditLog>` structural-dedup semantic is preserved while the cache joins the standard `Get-OrchAuditLog`-style lifecycle (`Fetch` / `GetCache` / `ClearCache` / per-tenant exception cache).
- **PM bulk-resolve cache (`_dicPmBulkResolveByName`) migrated to a concrete `PmGroupMembersCache`.** Static storage keyed by `(partitionGlobalId, kind, name)`, so all drive instances pointing at the same org share one cache — bulk resolution (e.g. during `Add-OrchFolderUser`) of the same name across multiple drives no longer re-pays the API call. Negative caching preserved: the API returns `null` for unresolved names and that null is kept so the next lookup is a cache hit.
- **Robot log cache (`_dicRobotLogs`) migrated to a concrete `RobotLogsCache`.** Per-folder `ConcurrentBag<Log>` accumulator (the API returns `Log.Id == 0` so per-id dedup isn't possible), `IFolderCacheClearable`-registered, so `Clear-OrchCache -Path <folder>` now flushes the right slice without manual null-out.
 
## Internal
- `Find-OrchFolderNoUserAssigned` now emits a `Write-Verbose` line for the folders it silently skips, so `-Verbose` reveals which folders failed to resolve.
- ScriptAnalyzer Warnings reduced from 23 → 11 in `Staging/`; the remaining 11 are all intentional `Write-Host` in `Staging/Examples/*.ps1` sample scripts.
- `design/cmdlet-redesign-plan-p3.md` Group F closes out (0 bespoke caches remaining outside of `_dicFolders` itself, which carries its own multi-phase fetch + lock-and-publish design from 1.4.1).
'@


        # Prerelease string of this module
        # Prerelease = ''

        # Flag to indicate whether the module requires explicit user acceptance for install/update/save
        # RequireLicenseAcceptance = $false

        # External dependent modules of this module
        # ExternalModuleDependencies = @()

    } # End of PSData hashtable

} # End of PrivateData hashtable

# HelpInfo URI of this module
# HelpInfoURI = ''

# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
# DefaultCommandPrefix = ''

}