Repository navigation
feat: add 825 REST cmdlets - #482
DeterminedExecution wants to merge 67 commits into
Conversation
New-TssSession sets platform (-PlatformUrl -Credential: Platform service user, client credentials grant at identity/api/oauth2/token/xpmplatform, scope xpmheadless, X-CENTRIFY-NATIVE-CLIENT header) and platformToken (-PlatformUrl -AccessToken, validated with the vault broker). The vault comes from GET vaultbroker/api/vaults (active vault: -VaultId, else global default, default, first) or -SecretServer, and must pass a trust check (https, Secret Server Cloud host, the Platform host, or -AllowedVaultHost) before any token is sent to it. Existing parameter sets, positions, the nts alias and the output type are unchanged. Refs thycotic-ps#481. TssSession: AuthProvider, PlatformUrl, VaultId, VaultType, IsPlatformToken, AutoRefresh. SessionRefresh re-grants a Platform token only with -AutoRefresh (client secret held as a private SecureString, thycotic-ps#455). SessionExpire skips oauth-expiration for Platform tokens; Close-TssSession returns False with a verbose note. New cmdlets: Get-TssPlatformVault (GET vaultbroker/api/vaults), Test-TssPlatformIntegration (GET platform/test-integration), Get-TssPlatformCompatibilityLevel (GET platform/compatibility-level). Docs: command and type pages, Delinea Platform section on the authentication page. Also squashed in: - test: add Platform auth shape tests - fix: keep secrets out of verbose output, report an unreachable Platform as unreachable Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Read the Unlimited Admin Mode state (GET configuration/unlimited-admin) and its audit log (GET configuration/unlimited-admin/audit). New class Thycotic.PowerShell.Configuration.UnlimitedAdminAudit; Get-TssUnlimitedAdmin reuses the existing UnlimitedAdmin class. Also squashed in: - test: add shape tests for Get-TssUnlimitedAdmin and Get-TssUnlimitedAdminAudit Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Get-TssListAudit reads a list's audit trail (GET lists/{id}/audits). New-TssListOption adds options with an optional category: many in one request (POST lists/{id}/options), one request per value with -Single (options/single), or from a file with -Path (options/file). Update-TssListOption updates options from Get-TssListOption objects (PUT lists/{id}/options), one option with -Single (options/single), or replaces all options with -Replace (options/replace). New class Thycotic.PowerShell.Lists.Audit; option output reuses Thycotic.PowerShell.Lists.Item.
Also squashed in:
- test: add shape tests for Get-TssListAudit, New-TssListOption and Update-TssListOption
- fix: Update-TssListOption -Category help matches server behavior
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Update-TssReport replaces a report definition (PUT reports/{id}); piping Get-TssReport keeps current values. Restore-TssReport undeletes a system report (PUT reports/{id}/undelete).
Search-TssReportAudit reads report audit entries, all or per report (GET reports/audits, reports/{id}/audits).
New-TssReportCategory and Set-TssReportCategory create and rename report categories (POST reports/categories, PATCH reports/categories/{id}).
Search-TssReportCategoryPermission and Search-TssReportPermission read category and report permissions, or the grantable role permissions with -Options (GET reports/categories/{id}/permissions, reports/categories/permissions/options, reports/{id}/permissions, reports/permissions/options).
Set-TssReportCategoryPermission and Set-TssReportPermission replace or clear explicit permissions; Set-TssReportPermission also toggles inheritance (PATCH reports/categories/{id}/permissions, reports/{id}/permissions).
Get-TssReportCategoryPermissionDefault reads the permissions a category passes down (GET reports/{id}/permissions-from-category).
Search-TssReportChartType lists chart types (GET reports/charttypes). Send-TssReportEmail emails a report (POST reports/{id}/email).
Set-TssReportSchedule changes a schedule's format, parameter values and schedule (PATCH reports/schedules/{id}); Restore-TssReportSchedule undeletes one (PUT reports/schedules/{id}/undelete); Get-TssReportScheduleStub returns a new-schedule stub (GET reports/schedules/stub/{id}).
Search-TssReportScheduleHistory lists a schedule's stored runs or returns one run (GET reports/schedules/{id}/history/search, reports/schedules/{id}/history); Save-TssReportScheduleHistory saves a run's report file (POST reports/schedules/{id}/history/download).
Export-TssReport gains a -Download parameter set that streams CSV (GET reports/download-csv); existing parameter sets unchanged.
New classes in Thycotic.PowerShell.Reports: Audit, ChartType, Permission, PermissionOption, ScheduleHistory, ScheduleHistorySummary. Schedule output reuses ReportSchedule, report output reuses Report.
Also squashed in:
- fix: type Reports.Permission Group and RolePermission as PSObject
- test: add shape tests for the report audit, category, permission and schedule cmdlets
- fix: Update-TssReport requires Description; Set-TssReportPermission help on inheritance
- fix: Export-TssReport export set and Get-TssReportCategory -Id and -All
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Get-TssProxyAudit: GET v1/proxy/audit
Get-TssProxyEndpointNotification: GET v1/proxy/endpoints/notification
Get-TssProxyExplanation: GET v1/proxy/explanation
Get-TssProxyRdpConfiguration: GET v1/proxy/rdp/config
Get-TssProxyRdpNotification: GET v1/proxy/rdp/notification
Get-TssProxySshClientHistory: GET v1/proxy/ssh/clienthistory
Get-TssProxySshConfiguration: GET v1/proxy/ssh/config
Get-TssProxySshNotification: GET v1/proxy/ssh/notification
Get-TssProxyState: GET v1/proxy/state
New-TssProxyRdpCertificate: POST v1/proxy/rdp/generate-certificate
New-TssProxySshClientOverride: POST v1/proxy/ssh/client-overrides
New-TssProxySshKey: POST v1/proxy/ssh/generate-key
Remove-TssProxySshClientOverride: DELETE v1/proxy/ssh/client-overrides/{clientOverrideId}
Search-TssProxyEndpoint: GET v1/proxy/endpoints
Search-TssProxySshClient: GET v1/proxy/ssh/clients
Search-TssProxySshClientOverride: GET v1/proxy/ssh/client-overrides
Set-TssProxyEndpointEngine: PATCH v1/proxy/endpoints/engines/{id}
Set-TssProxyEndpointNode: PATCH v1/proxy/endpoints/nodes/{id}
Set-TssProxyEndpointSite: PATCH v1/proxy/endpoints/sites/{id}
Set-TssProxyRdpConfiguration: PATCH v1/proxy/rdp/config
Set-TssProxySshClient: PATCH v1/proxy/ssh/clients/{clientId}
Set-TssProxySshClientOverride: PATCH v1/proxy/ssh/client-overrides/{clientOverrideId}
Set-TssProxySshConfiguration: PATCH v1/proxy/ssh/config
Set-TssProxyEndpointSite sends the current RDP proxy certificate secret back when the parameter is omitted, because the API clears it otherwise.
Also squashed in:
- test: add shape tests for proxy core cmdlets
- fix: proxy notification text and SSH client history filters
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copy-TssSecretTemplate: POST secret-templates/{id}/copy
Export-TssSecretTemplate: GET secret-templates/{id}/export
Import-TssSecretTemplate: POST secret-templates/import
Update-TssSecretTemplate: PATCH v2 secret-templates/{id}
Get-TssSecretTemplate: new -Detail switch, GET v2 secret-templates/{id}
Add-TssSecretTemplateField: new Name parameter set, POST secret-templates/{id}/fields
Get-TssSecretTemplateField: GET secret-templates/fields/{id}, GET secret-templates/fields/basic/{templateId}
Get-TssSecretTemplateFieldStub: GET secret-templates/fields/stub
Search-TssSecretTemplateField: GET secret-templates/fields/search, GET secret-templates/fields/search-basic
Set-TssSecretTemplateField: PATCH secret-templates/fields/{id}
Remove-TssSecretTemplateField: DELETE secret-templates/fields/{id}
Set-TssSecretTemplateFieldOrder: POST secret-templates/{id}/fields/sort
Get-TssSecretTemplateLauncher: GET secret-templates/{id}/launchers/{launcherTypeId}
Get-TssSecretTemplateLauncherStub: GET secret-templates/{id}/launchers/{launcherTypeId}/stub
New-TssSecretTemplateLauncher: POST secret-templates/{id}/launchers/{launcherTypeId}
Set-TssSecretTemplateLauncher: PATCH secret-templates/{id}/launchers/{launcherTypeId}
Remove-TssSecretTemplateLauncher: DELETE secret-templates/{id}/launchers/{launcherTypeId}
Search-TssSecretTemplateLauncher: GET secret-templates/launchers, GET secret-templates/launcher-types
Get-TssSecretTemplatePasswordType: GET secret-templates/{id}/password-type
Set-TssSecretTemplatePasswordType: PATCH secret-templates/{id}/password-type
Update-TssSecretTemplatePasswordType: PUT secret-templates/password-type/{id}
Search-TssSecretTemplateSimple: GET secret-templates-list
Search-TssSecretTemplatePermission: GET secret-template-permissions
Get-TssSecretTemplatePermissionGrouped: GET secret-template-permissions/grouped
Search-TssSecretTemplatePermissionRole: GET secret-template-permissions/roles
Update-TssSecretTemplatePermission: PUT secret-template-permissions, PUT secret-template-permissions/{id}
Also squashed in:
- test: add shape tests for the secret template editing cmdlets
- fix: correct secret template editing cmdlets found in QA
- test: pin Copy-TssSecretTemplate -Name as mandatory
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Clear-TssUpgradeInProgress: POST diagnostics/clear-upgrade-in-progress Complete-TssManualUpgrade: POST configuration/finish-manual-upgrade Confirm-TssManualUpgradeStaging: POST upgrade/manual/staging-test-successful Get-TssManualUpgradeState: GET upgrade/manual/state Get-TssUpgradeState: GET upgrade/state Get-TssUpgradeStatus: GET upgrade/upgrade-status Install-TssUpgrade: POST upgrade/install (ConfirmImpact High) New-TssManualUpgradeAppZip: POST upgrade/manual/generate-application-zip New-TssManualUpgradeSqlScript: POST upgrade/manual/generate-sql-script Save-TssManualUpgradePackage: GET v2 upgrade/manual/download, -Base64 uses GET v1 upgrade/manual/download Search-TssManualUpgradeNode: GET upgrade/manual/nodes Set-TssUpgradeIgnoreVersionMismatch: POST configuration/set-ignore-version-mismatch-on-upgrade Start-TssUpgrade: download (optional), install and poll to completion, PATCH configuration/read-only-mode (ConfirmImpact High) Start-TssUpgradeDownload: POST upgrade/download Stop-TssManualUpgrade: POST upgrade/manual/cancel Test-TssManualUpgradeSqlDelta: POST upgrade/manual/verify-sql-deltas All on-premises only. Impersonation account is a -ImpersonationCredential PSCredential. Also squashed in: - test: add shape tests for upgrade and manual upgrade cmdlets - fix: Start-TssUpgrade fast failure and v2 URL in Save-TssManualUpgradePackage - fix: Start-TssUpgrade ignores a stale failed status from another node Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…enerated password cmdlets
Get-TssExtendedFieldRegex: GET extended-fields/regex/{secretId}
Get-TssPasswordDictionary: GET secret-templates/password-requirements/password-dictionaries/{id}
Get-TssSecretTemplateExtendedMapping: GET secret-templates/{secretTemplateId}/extended-mappings/{extendedTypeId}
Get-TssSecretTemplateExtendedMappingStub: GET secret-templates/{secretTemplateId}/extended-mappings/{extendedTypeId}/stub
New-TssGeneratedPassword: POST secret-templates/generate-password/{secretfieldId}
New-TssPasswordDictionary: POST secret-templates/password-requirements/password-dictionaries
New-TssSecretTemplateExtendedMapping: POST secret-templates/{secretTemplateId}/extended-mappings/{extendedTypeId}
Remove-TssPasswordDictionary: DELETE secret-templates/password-requirements/password-dictionaries/{id}
Remove-TssSecretTemplateExtendedMapping: DELETE secret-templates/{secretTemplateId}/extended-mappings/{extendedTypeId}
Search-TssPasswordDictionary: GET secret-templates/password-requirements/password-dictionaries
Search-TssSecretTemplateExtendedMapping: GET secret-templates/extended-mappings
Search-TssSecretTemplateExtendedType: GET secret-templates/extended-types
Set-TssSecretTemplateExtendedMapping: PATCH secret-templates/{secretTemplateId}/extended-mappings/{extendedTypeId}
Update-TssPasswordDictionary: PUT secret-templates/password-requirements/password-dictionaries
New classes: ExtendedFields.Regex, SecretTemplates.ExtendedMapping, ExtendedMappingSummary, ExtendedMappingDelete, ExtendedType, PasswordDictionary, PasswordDictionaryDelete. Command and type doc pages included.
Also squashed in:
- test: add shape tests for the template extended mapping, password dictionary and generated password cmdlets
- fix: Get-TssPasswordDictionary help states the server returns items sorted, not in file order
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ts, menus, cipher suites)
- Get-TssJumpboxRoute: GET v1/jumpbox-route/{id}
- Get-TssJumpboxRouteAudit: GET v1/jumpbox-route/{id}/audit
- Get-TssJumpboxRouteLevel: GET v1/jumpbox-route/{id}/level
- Get-TssJumpboxRouteUser: GET v1/jumpbox-route/user
- New-TssJumpboxRoute: POST v1/jumpbox-route
- New-TssJumpboxRouteLevel: POST v1/jumpbox-route/{id}/level
- Remove-TssJumpboxRouteLevel: DELETE v1/jumpbox-route/{id}/level/{order}
- Search-TssJumpboxRoute: GET v1/jumpbox-route/search
- Set-TssJumpboxRoute: PATCH v1/jumpbox-route/{id}
- Set-TssJumpboxRouteLevel: PATCH v1/jumpbox-route/{id}/level/{order}
- Get-TssSshCipherSuite: GET v1/ssh-cipher-suite/{id}
- Get-TssSshCipherSuiteAudit: GET v1/ssh-cipher-suite/{id}/audit
- Search-TssSshCipherSuite: GET v1/ssh-cipher-suite/search
- Set-TssSshCipherSuite: PATCH v1/ssh-cipher-suite/{id}
- Search-TssSshCipher: GET v1/ssh-ciphers/search
- Get-TssSshCommand: GET v1/ssh-command/{id}
- Get-TssSshCommandStub: GET v1/ssh-command/stub
- New-TssSshCommand: POST v1/ssh-command
- Search-TssSshCommand: GET v1/ssh-command/list
- Set-TssSshCommand: PATCH v1/ssh-command/{sshCommandId}
- Get-TssSshCommandBlocklist: GET v1/ssh-command-blocklist/{id}
- Get-TssSshCommandBlocklistPolicy: GET v1/ssh-command-blocklist/policies
- Get-TssSshCommandBlocklistStub: GET v1/ssh-command-blocklist/stub
- New-TssSshCommandBlocklist: POST v1/ssh-command-blocklist
- Search-TssSshCommandBlocklist: GET v1/ssh-command-blocklist/list
- Set-TssSshCommandBlocklist: PATCH v1/ssh-command-blocklist/{sshCommandBlocklistId}
- Get-TssSshCommandItemAudit: GET v1/ssh-command-item/audit/search
- Get-TssSshCommandMenu: GET v1/ssh-command-menu/{sshCommandMenuId}
- Get-TssSshCommandMenuAudit: GET v1/ssh-command-menu/audit/search
- Get-TssSshCommandMenuState: GET v1/ssh-command-menu/state
- New-TssSshCommandMenu: POST v1/ssh-command-menu
- Search-TssSshCommandMenu: GET v1/ssh-command-menu/search
- Set-TssSshCommandMenu: PATCH v1/ssh-command-menu/{sshCommandMenuId}
Also squashed in:
- test: add shape tests for the SSH adjunct cmdlets
- fix: SSH adjunct searches honor their documented filter defaults
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…extension cmdlets
Export-TssBundle: POST v1/bundle/export
Get-TssEnterpriseSearchRequest: GET v1/enterprise/search-request/{requestId}
New-TssEnterpriseSearchRequest: POST v1/enterprise/search-request
Get-TssSecretEraseRequest: GET v1/secret-erase-requests/{id}
Get-TssSecretEraseRequestHistory: GET v1/secret-erase-requests/{id}/history
Get-TssSecretEraseRequestInbox: GET v1/secret-erase-requests/inbox
New-TssSecretEraseRequest: POST v1/secret-erase-requests
Search-TssSecretEraseRequest: GET v1/secret-erase-requests/search
Search-TssSecretEraseSecret: GET v1/secret-erase-requests/secrets
Start-TssSecretErase: GET v1/secret-erase-requests/run-now
Update-TssSecretEraseRequest: PUT v1/secret-erase-requests
Get-TssSecretExtensionAutofillValue: POST v1/secret-extensions/autofill-values
Search-TssSecretExtensionAd: POST v1/secret-extensions/search-ad-secrets-by-domain
Search-TssSecretExtensionWindowsAccount: POST v1/secret-extensions/search-windows-account-secrets-by-computer-name
Enable-TssSecret: PUT v3/secrets/{id}/activate
Export-TssSecretBulk: POST v1/secrets/export, v2/secrets/export/job
Get-TssSecretAssociatedSecret: GET v1/secrets/{secretId}/launchers/{id}/associated-secrets
Get-TssSecretBulkExport: GET v2/secrets/export, v2/secrets/export/{jobId}/details, v2/secrets/export/job/{jobId}
Get-TssSecretConvertInfo: POST v1/secrets/get-convert-info
Get-TssSecretDetail: GET v1/secrets/secret-detail/{id}/general
Import-TssSecretCsv: POST v1/secrets/import-csv-process, v1/secrets/import-csv-verify
Invoke-TssSecretCheckout: POST v1/secrets/{id}/check-out
Invoke-TssSecretExtendCheckout: POST v1/secrets/{id}/extend-check-out
Search-TssSecretExtended: POST v1/secrets/extended-search-details
Search-TssSecretFavorite: GET v1/secrets/favorite
Set-TssSecretFavorite: POST v1/secrets/{secretId}/favorite
Update-TssSecretAssociatedSecret: PUT v1/secrets/{secretId}/launchers/{id}/associated-secrets
Get-TssSecretAttachment: new -OutFile parameter set, GET v1/secrets/{id}/fields/{slug}; existing sets unchanged
Also squashed in:
- test: add shape tests for the secrets area cmdlets
- fix: secrets area cmdlets return the live response shapes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New cmdlets:
Approve-TssSecretForceCheckout: POST v1/secrets/{id}/approve-force-check-out-request
Convert-TssSecretTemplate: POST v1/secrets/convert-template
Get-TssSecretFieldListDetail: GET v1/secrets/{id}/fields/{slug}/listdetails
Get-TssSecretForceCheckoutDetail: GET v1/secrets/get-force-checkout-request-details/{secretId}/{requesterId}
Get-TssSecretHasAny: GET v2/secrets/has-any
Get-TssSecretHealthExposure: GET v1/secrethealth/exposure
Get-TssSecretImportConfiguration: GET v1/secrets/import-configuration
Get-TssSecretMfa: GET v1/secrets/{id}/mfa
Get-TssSecretPreview: GET v1/secrets/{id}/preview
Get-TssSecretSearchTotal: GET v2/secrets/search-total
Get-TssSecretTransitionHistory: GET v1/secrets/{secretId}/transition-history
Import-TssSecretXml: POST v1/secrets/import-xml-process
Remove-TssSecretFieldListDetail: DELETE v1/secrets/{id}/fields/{slug}/listdetails
Request-TssSecretForceCheckout: POST v1/secrets/{id}/request-force-check-out
Search-TssSecretField: GET v1/secrets/{id}/fields/{slug}/list
Search-TssSecretIds: GET v1/secrets/search-for-ids
Search-TssSecretSshRestrictedCommand: GET v1/secrets/{id}/ssh-restricted-commands
Set-TssSecretSecurityMfa: PATCH v1/secrets/{id}/security-multifactor-authentication
Set-TssSecretShare: PATCH v1/secrets/{secretId}/share
Update-TssSecretFieldListDetail: PUT v1/secrets/{id}/fields/{slug}/listdetails
Update-TssSecretJumpboxRouteSelection: PUT v1/secret-detail/{secretId}/jumpbox-route-selection
Update-TssSecretSecurityApproval: PUT v3/secrets/{id}/security-approval
Update-TssSecretSshRestrictedCommand: PUT v1/secrets/{secretId}/update-ssh-restricted-commands
Extended additively (new parameter sets, existing sets unchanged):
Get-TssSecretField: checkout set, GET v1/secrets/{id}/fields/{slug} with autoCheckout, autoCheckIn, autoComment
Get-TssSecretState: flags and flagsV2 sets, GET v1/secrets/{id}/state/flags, GET v2/secrets/{id}/state/flags
Also squashed in:
- test: add shape tests for the secret search, state, security and list field cmdlets
- fix: correct SSH restriction and approval type help
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ctivity cmdlets
Add-TssUserOwner: POST v1/users/{id}/owners
Add-TssUserRole: POST v1/users/{id}/roles
Disable-TssUserSshKey: PATCH v1/users/public-ssh-keys/{id}
Find-TssApplicationAccount: GET v1/application-accounts/lookup
Get-TssCurrentUserSummary: GET v1/users/current-summary
Get-TssUserPreference: GET v1/users/preference
Get-TssUserSecretActivity: GET v1/users/{userId}/secret-activity
Get-TssUserStub: GET v1/users/stub
Get-TssUserTotpStatus: GET v1/users/totp-status
Invoke-TssExpireUserSecretActivity: POST v1/users/{userId}/secret-activity/expire
Invoke-TssForgotPassword: POST v1/users/forgot-password
New-TssUserSshKey: POST v1/users/public-ssh-keys
Remove-TssUser: DELETE v1/users/{id}
Remove-TssUserGroup: DELETE v1/users/{id}/groups
Remove-TssUserOwner: DELETE v1/users/{id}/owners/{ownerId}
Remove-TssUserRole: DELETE v1/users/{id}/roles
Reset-TssUserTwoFactor: POST v1/users/{userId}/reset-two-factor
Search-TssUserSession: GET v1/users/sessions
Search-TssUserSshKey: GET v1/users/public-ssh-keys
Search-TssUserTeam: GET v1/users/{userId}/teams
Set-TssUserOwner: PATCH v1/users/{id}/owners
Stop-TssUserSession: POST v1/users/sessions/terminate
Test-TssCurrentUserPassword: POST v1/users/verify-password
Update-TssDefaultAppSettings: PUT v1/users/set-default-app-settings
Update-TssDoubleLockPassword: PUT v1/users/doublelock-password
Get-TssUserAudit: new action set, GET v1/users/action/audit
Get-TssUserOwner: new owner set, GET v1/users/{id}/owners/{ownerId}
Lock-TssUser: new lockout set, POST v1/users/{userId}/lock-out
Also squashed in:
- test: add shape tests for the user cmdlets
- fix: Get-TssUserPreference reads named preferences; Update-TssDoubleLockPassword help
- fix: Update-TssDoubleLockPassword help says the unlock is per user
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Get-TssTeam: GET teams/{id}
Get-TssTeamStub: GET teams/stub
New-TssTeam: POST teams
Search-TssTeam: GET teams
Update-TssTeam: PUT teams/{id}
Get-TssTeamAudit: GET teams/{id}/audits
Add-TssTeamList: POST teams/{id}/lists, keeps existing lists unless -Replace
Search-TssTeamList: GET teams/{id}/lists, GET teams/lists with -SearchText
Add-TssTeamMember: POST v2 teams/{id}/members, POST v1 with -Replace
Get-TssTeamMember: GET teams/{id}/members
Search-TssTeamMember: GET teams/{id}/members/search
Remove-TssTeamMember: DELETE teams/{id}/members
Add-TssTeamSite: POST teams/{id}/sites, keeps existing sites unless -Replace
Search-TssTeamSite: GET teams/{id}/sites
Also squashed in:
- test: add shape tests for the team cmdlets
- fix: team list restriction kept, team site and member search help
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…audit)
Remove-TssGroup: DELETE groups/{id} (disables the group)
Set-TssGroup: PATCH groups/{groupId}
Update-TssGroup: PUT groups/{id}
Get-TssGroupAudit: GET groups/audit
Get-TssGroupPlatform: GET groups/platform/{adGuid}
Get-TssGroupStub: GET groups/stub
Add-TssGroupRole: POST groups/{id}/roles
Remove-TssGroupRole: DELETE groups/{id}/roles
Update-TssGroupRole: PUT v2 groups/{id}/roles
Set-TssGroupMember: PATCH groups/{id}/users
Search-TssGroupUser: GET groups/{id}/users/search
Find-TssGroupUser: GET groups/{id}/users-lookup
New classes: Groups.Audit, Groups.MemberChangeStatus, Groups.MemberSummary,
Groups.RoleChangeStatus. Group-returning cmdlets reuse Groups.Group with the
Get-TssGroup owner projection.
Also squashed in:
- test: add shape tests for the group cmdlets
- fix: Update-TssGroupRole only swaps the trailing api/v1 for api/v2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Get-TssRole: GET roles/{id}
Get-TssRoleStub: GET roles/stub
Get-TssRoleUnassignedPermission: GET rolepermissions/unassigned, one string per permission name
New-TssRole: POST roles, -Enabled switch, created disabled when omitted
Set-TssRole: PATCH roles/{id}, sends only the fields passed
Search-TssRoleAudit: GET role-audits, always sends filter.auditType (default All) and a dateRecorded sort because the server returns 500 without either
Search-TssRoleGroup: GET roles/{id}/groups
Set-TssRoleGroup: PATCH roles/{roleId}/groups, -GroupIdToAdd and -GroupIdToRemove
Search-TssRolePermission: GET roles/{id}/permissions, -Eligible and -Unassigned switch sets for the eligible and unassigned routes
Update-TssRolePermission: PUT roles/{id}/permissions, replaces the full set, empty list allowed
New classes: Roles.Audit, Roles.Group, Roles.Permission, Roles.UpdateResult. Command and type doc pages included.
Also squashed in:
- test: add shape tests for the role cmdlets
- fix: correct role group and unassigned permission help
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lder stub cmdlets
Add-TssFolderTemplate: POST folders/{id}/templates
Get-TssFolderPinned: GET folders/pinned
Get-TssFolderStub: GET folders/stub
Remove-TssFolderPinned: DELETE folder/{id}/pinned
Set-TssFolderPermission: PATCH folder/{folderId}/permissions
Set-TssFolderPinned: PATCH folder/{id}/pinned
New classes: Folders.ActionResult, Folders.Pinned, Folders.TemplateAssociation. Get-TssFolderStub reuses Folders.Folder. Command and type doc pages included.
Also squashed in:
- test: add shape tests for the folder pin, permission and template cmdlets
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er check and platform permission cmdlets
Get-TssFolderPermissionStub: GET v1/folder-permissions/stub
Get-TssSecretPermissionDetail: GET v1/secret-permissions/{id}
Get-TssSecretPermissionRoleOption: GET v1/secret-permissions/role-options
Get-TssSecretPermissionStub: GET v1/secret-permissions/stub
Get-TssSecretPlatformPermission: GET v1/secret-permissions/platform-permission
Set-TssSecretPlatformPermission: POST v1/secret-permissions/platform-permission
Test-TssSecretOwner: POST v1/secret-permissions/is-current-user-secret-owner
Also squashed in:
- test: add shape tests for the secret and folder permission cmdlets
- fix: secret permission stub and platform permission errors on unreachable secrets; help corrections
- fix: remove Get-TssSecretPlatformPermission, its GET route always returns 500
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…dependency changer cmdlets
Start-TssConfigurationRpc: POST v1/configuration/rpc/run-now
Get-TssDependencyChanger: GET v1/dependency-changers/dependency-changer/{id}
New-TssDependencyChanger: POST v1/dependency-changers/dependency-changer
Search-TssDependencyChanger: GET v1/dependency-changers/dependency-changers
Search-TssDependencyChangerScript: GET v1/dependency-changers/dependency-changer-scripts
Search-TssDependencyChangerSetting: GET v1/dependency-changers/dependency-changer-settings
Search-TssDependencyScanField: GET v1/dependency-changers/scan-fields
Set-TssDependencyChanger: PATCH v1/dependency-changers/dependency-changer/{id}
New-TssCustomCommand: POST v1/remote-password-changing/custom-commands
Remove-TssCustomCommand: DELETE v1/remote-password-changing/custom-commands/{id}
Save-TssCustomCommand: POST v1/remote-password-changing/custom-commands/{id}
Search-TssCustomCommand: GET v1/remote-password-changing/custom-commands/{id}
Test-TssCustomCommand: POST v1/remote-password-changing/custom-command/test
Update-TssCustomCommand: PUT v1/remote-password-changing/custom-commands/{id}
New-TssPasswordType: POST v1/remote-password-changing/password-types
Remove-TssPasswordType: DELETE v1/remote-password-changing/password-types/{id}
Update-TssPasswordType: PUT v1 and v2 remote-password-changing/password-types/{id}
Also squashed in:
- test: add shape tests for the custom command, password type, dependency changer and RPC run-now cmdlets
- fix: password type v2 URL and password type, dependency changer help defects
- fix: Set-TssDependencyChanger help, password change slot cannot be removed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, scan fields, RPC scripts)
Get-TssPasswordTypeAuth: GET remote-password-changing/password-type-auth/{id}
New-TssPasswordTypeAuth: POST remote-password-changing/password-type-auth/{id}
Set-TssPasswordTypeAuth: PATCH remote-password-changing/password-type-auth/{id}
Get-TssPasswordTypeUsage: GET remote-password-changing/password-type-usage
Get-TssRpcLdapSettings: GET remote-password-changing/ldap-settings/{id}
Set-TssRpcLdapSettings: PATCH remote-password-changing/ldap-settings/{id}
Get-TssRpcScanTemplate: GET remote-password-changing/scan-templates
Set-TssRpcScanTemplateField: PATCH remote-password-changing/scan-templates-fields/{id}
Update-TssSecretDependency: PUT secret-dependencies/{id}
Update-TssSecretDependencyGroup: PUT secret-dependencies/groups/{secretId}
Remove-TssSecretDependencyGroup: DELETE secret-dependencies/groups/{id}
Invoke-TssSecretChangePassword: POST secrets/{id}/change-password
Get-TssSecretRpcScript: GET v3 secrets/{id}/rpc-script-secrets
Update-TssSecretRpcScript: PUT v3 and v2 secrets/{id}/rpc-script-secrets
Get-TssSecretPasswordStatus: new -RestApi switch for GET secrets/secret-detail/{id}/password-status
New classes: Rpc.PasswordTypeAuth, Rpc.PasswordTypeUsage, Rpc.LdapSettings,
Rpc.ScanTemplate, Rpc.ScanTemplateField, Secrets.RpcDetail. Command and
type pages added; the Get-TssSecretPasswordStatus shape test knows -RestApi.
Also squashed in:
- test: add shape tests for RPC and secret dependency cmdlets
- fix: Get/Update-TssSecretRpcScript keep the server host in v2/v3 URLs; Get-TssSecretPasswordStatus -RestApi writes no internal endpoint note
- fix: New-TssSecretDependency sends unset optional secret ids as null
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Start-TssHeartbeat: POST configuration/heartbeat/run-now, returns the success flag Get-TssHeartbeatLog: GET diagnostics/heartbeat-logs, parses the server CSV text into entries (on-prem only) Get-TssHeartbeatStatusOverview: GET remote-password-changing/heartbeat-status-overview New classes: Diagnostics.HeartbeatLog, Rpc.HeartbeatStatusOverview, Rpc.HeartbeatStatusCount. Command and type doc pages included. Also squashed in: - test: add shape tests for the heartbeat cmdlets - fix: correct Start-TssHeartbeat help on per-secret run now Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r node cmdlets
Get-TssDistributedEngineSettings: GET distributed-engine/engine-settings/{engineId}, GET distributed-engine/engine-settings/site/{siteId}
Set-TssDistributedEngineSettings: PATCH distributed-engine/engine-settings/{engineSettingsId}, PATCH distributed-engine/engine-settings/engine/{engineId}
Set-TssDistributedEngineLatestVersion: PATCH distributed-engine/configuration/engine-latest-version
Move-TssDistributedEngine: POST distributed-engine/engine/{engineId}/migrate
Search-TssDistributedEngineAudit: GET distributed-engine/site/{siteId}/engine-audits
Get-TssDistributedEngineSiteAudit: GET distributed-engine/site/{id}/audit
Search-TssDistributedEngineSiteLog: GET distributed-engine/site/{id}/logs
Get-TssDistributedEngineSiteStub: GET distributed-engine/site/stub
Move-TssDistributedEngineSiteSecret: POST distributed-engine/site/{id}/reassign
Test-TssDistributedEngineSiteConnectivity: POST distributed-engine/site/{siteId}/validate-connectivity
Get-TssDistributedEngineSiteConnectorStub: GET distributed-engine/site-connector/stub
Get-TssDistributedEngineSiteConnectorDownload: GET distributed-engine/site-connector/{id}/download-memorymq
Get-TssServerNode: GET nodes/{nodeId}
Get-TssServerNodeAudit: GET nodes/audit
Set-TssServerNodeConfiguration: POST nodes/{nodeId}/configuration
Get-TssServerNodeState: GET nodes-state
Set-TssServerNodeState: PATCH nodes-state
New classes: DistributedEngines.EngineAudit, EngineLatestVersion, EngineMigration, EngineSetting, EngineSettings, SiteAudit, SiteConnectivity, SiteLog; ServerNodes.Audit, Node, State, StateUpdate. Site and SiteConnector reused. SiteConnectorQueueType gains RabbitMqQuorum. Command and type doc pages included.
Also squashed in:
- test: add shape tests for the distributed engine, site and server node cmdlets
- fix: correct distributed engine and server node help to match server behavior
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Find-TssLauncher: GET launchers/lookup
Get-TssLauncher: GET launchers/{id}
Search-TssLauncher: GET launchers
Get-TssLauncherType: GET launchers/types/{launcherTypeId}
New-TssLauncherType: POST launchers/types
Set-TssLauncherType: PATCH launchers/types/{launcherTypeId}
Set-TssLauncherTypeFileAttachment: POST launchers/types/file-attachments
Get-TssLauncherAgent: GET launcheragents/{id}
Search-TssLauncherAgent: GET launcheragents
Search-TssLauncherAgentIssue: GET launcheragents/issues
Update-TssLauncherAgent: PUT launcheragents/{id} (reads the agent first, omitted values kept)
Get-TssLauncherAgentAudit: GET launcheragents/audit, launcheragents/{id}/audit
Get-TssLauncherAgentCollection: GET launcheragents/collections/{id}
Get-TssLauncherAgentCollectionStub: GET launcheragents/collections/stub
New-TssLauncherAgentCollection: POST launcheragents/collections
Search-TssLauncherAgentCollection: GET launcheragents/collections
Update-TssLauncherAgentCollection: PUT launcheragents/collections/{id} (reads the collection first, omitted values kept)
Get-TssLauncherAgentCollectionAudit: GET launcheragents/collections/audit, launcheragents/collections/{id}/audit
Get-TssLauncherAgentConfigurationState: GET launcheragents/configuration-state
Get-TssConnectionManagerSettings: GET connection-manager-settings
Set-TssLauncherSettings: PATCH configuration/launcher-settings
Set-TssProtocolHandlerSettings: PATCH configuration/protocol-handler-settings
Set-TssRdsSessionConnector: PATCH configuration/rds-session-connector (-Enabled required by the server)
Search-TssSecretLauncherSession: GET secrets/launcher-sessions
Set-TssSecretLauncherSession: PATCH secrets/launcher-sessions
Update-TssSecretWebLauncher: PUT secrets/{id}/web-launcher-settings
New classes under Launchers, LauncherAgents, ConnectionManager, Configuration and Secrets, with command and type doc pages.
Also squashed in:
- test: add shape tests for the launcher, launcher agent and launcher settings cmdlets
- fix: launcher agent audit, launcher session and launcher help defects
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New-TssEventPipeline: POST event-pipeline
Update-TssEventPipeline: PUT event-pipeline/{id}
Update-TssEventPipelineOrder: PUT event-pipeline/{id}/order
Get-TssEventPipelineTrigger: GET event-pipeline/{id}/trigger
Get-TssEventPipelineTriggerOption: GET event-pipeline/trigger/options
Get-TssEventPipelineTriggerStub: GET event-pipeline/trigger/stub
Get-TssEventPipelineStub: GET event-pipeline/stub
Search-TssEventPipeline -Detailed: GET event-pipeline/list
Search-TssEventPipelineAudit: GET event-pipeline-audit
Get-TssEventPipelineFilterOption: GET event-pipeline-settings/filter/options
Get-TssEventPipelineFilterSetting: GET event-pipeline-settings/filter-settings/list/{id}
Get-TssEventPipelineTaskOption: GET event-pipeline-settings/tasks/options
Get-TssEventPipelineTaskSetting: GET event-pipeline-settings/task-settings/list/{id}
Search-TssEventPipelineTask: GET event-pipeline-settings/task/list
New-TssEventPipelinePolicy: POST event-pipeline-policy
Update-TssEventPipelinePolicy: PUT event-pipeline-policy/{id}
Update-TssEventPipelinePolicyOrder: PUT event-pipeline-policy/{id}/order
Copy-TssEventPipelinePolicy: POST event-pipeline-policy/duplicate
Export-TssEventPipelinePolicy: GET event-pipeline-policy/export/{id}
Import-TssEventPipelinePolicy: POST event-pipeline-policy/import
Search-TssEventPipelinePolicyFolder: GET event-pipeline-policy/{id}/folders
Update-TssEventPipelinePolicyFolder: PUT event-pipeline-policy/{id}/folders
Get-TssEventPipelinePolicyFolderChild: GET event-pipeline-policy/{id}/folders/{folderId}/childdata
Search-TssEventPipelinePolicyGroup: GET event-pipeline-policy/{id}/groups
Update-TssEventPipelinePolicyGroup: PUT event-pipeline-policy/{id}/groups
Get-TssEventPipelinePolicyGroupCount: GET event-pipeline-policy/{id}/groups/count
Search-TssEventPipelinePolicyRun: GET event-pipeline-policy/runs
Search-TssEventPipelinePolicySecretPolicy: GET event-pipeline-policy/{id}/secretpolicies
Search-TssEventPipeline gains a -Detailed parameter set; its existing parameters and summary output are unchanged. Update-TssEventPipeline sends unbound triggers, tasks and filters as not dirty so the server keeps them. New classes under EventPipeline and EventPipelinePolicy with type pages; command pages included.
Also squashed in:
- test: add shape tests for the event pipeline and event pipeline policy cmdlets
- fix: event pipeline task, trigger and filter lists; policy filter on Search-TssEventPipeline; drop no-op audit policy filter
Integration: the command pages live in the existing docs/commands/event-pipelines and event-pipeline-policies folders (plural since 0.62.0, Search-TssEventPipeline keeps its redirect), and the new cmdlets' docs links point there.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Get-TssCharacterSet: GET character-sets/{id}
Search-TssCharacterSet: GET character-sets, -Status Active, Inactive or All
New-TssCharacterSet: POST character-sets, -Active switch, created inactive when omitted
Set-TssCharacterSet: PATCH character-sets/{id}, sends only the fields passed
Get-TssCharacterSetAudit: GET character-sets/{id}/audit
Get-TssPasswordRequirement: GET password-requirements/{id}
Search-TssPasswordRequirement: GET password-requirements
New-TssPasswordRequirement: POST password-requirements, -Rule takes hashtables or rule objects from Get-TssPasswordRequirement
Set-TssPasswordRequirement: PATCH password-requirements/{id}, sends only the fields passed
Get-TssPasswordRequirementAudit: GET password-requirements/{id}/audit
Update-TssPasswordRequirementRule: PUT password-requirements/{id}/rules, replaces the full rule set, empty list allowed
New classes: CharacterSets.CharacterSet, CharacterSets.Audit, PasswordRequirements.PasswordRequirement, PasswordRequirements.PasswordRequirementItem, PasswordRequirements.Audit. Command and type doc pages included.
Also squashed in:
- test: add shape tests for the character set and password requirement cmdlets
- fix: require AllowedCharacterSetId on New-TssPasswordRequirement, correct audit help
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New cmdlets:
Get-TssSecretPolicyAudit: GET v1/secret-policy/{id}/audit
Get-TssSecretPolicyStatus: GET v1/secret-policy/{id}/status
Also squashed in:
- test: add shape tests for the secret policy audit and status cmdlets
- fix: pass -IncludeInactive in the secret policy audit and status pipeline examples
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New-TssMetadataFieldSection: POST metadata/field-sections
Set-TssMetadataField: PATCH metadata/fields/{id} (rename or disable)
Remove-TssMetadataField: DELETE metadata/fields/{id} (disables the field)
Remove-TssMetadataFieldSection: DELETE metadata/field-sections/{id} (disables the section)
New-TssMetadataField: new parameter set field for POST metadata/fields; existing sets unchanged
Metadata.FieldSummary and Metadata.FieldSectionSummary gain Enabled
Also squashed in:
- test: add shape tests for metadata field and field section cmdlets
- fix: metadata disable help says values stay on items
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New cmdlets:
Get-TssIpRestriction: GET v1/ipaddress-restrictions/{id}
Get-TssIpRestrictionConfiguration: GET v1/ipaddress-restrictions/configuration
Update-TssIpRestrictionConfiguration: PUT v1/ipaddress-restrictions/configuration (Secret Server Cloud only)
Also squashed in:
- test: add shape tests for the IP restriction get and configuration cmdlets
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ories)
Get-TssUserScript: GET v2/userscripts/{scriptId}, includes body and type settings
New-TssUserScript: POST v2/userscripts, typed -PasswordChangerId and -UsePowerShellCore
Set-TssUserScript: PATCH v1/userscripts/{scriptId}, sends only the fields passed
Update-TssUserScriptParameter: PUT v1/userscripts/{scriptId}/parameters, powershell/sql/ssh sets, full replace
Get-TssUserScriptAudit: GET v1/userscripts/audit
Get-TssUserScriptHistory: GET v2/userscripts/history/{scriptHistoryId}
Get-TssUserScriptUsage: GET v1/userscripts/usage
Search-TssUserScriptCategory: GET v1/userscripts/categories
Existing New-TssScript is unchanged. New classes: Scripts.ScriptItem, UserScriptAudit, UserScriptHistory, UserScriptUsage, UserScriptCategory. Command and type doc pages included.
Also squashed in:
- test: add shape tests for the user script cmdlets
- fix: user script Get cmdlets: unknown id errors, help matches server behaviour
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… login policy, database, backup, UI/UX)
New-TssAdvancedConfigurationSetting: POST advanced-config-settings
Search-TssAdvancedConfigurationSetting: GET advanced-config-settings
Update-TssAdvancedConfigurationSetting: PUT advanced-config-settings
Remove-TssAdvancedConfigurationSetting: DELETE advanced-config-settings/{id}
Get-TssAppState: GET app-state
Clear-TssConfigurationAdCredential: POST configuration/login/clear-ad-credentials
Test-TssConfigurationRadius: POST configuration/login/radius/test, takes -Credential
Get-TssConfigurationLoginPolicy: GET configuration/login-policy
Set-TssConfigurationLoginPolicy: PATCH configuration/login-policy
Get-TssConfigurationSettingsMenu: GET configuration/settings-menu
Get-TssConfigurationState: GET configuration/state
Get-TssDatabaseConfiguration: GET configuration/database (on-prem only)
Set-TssDatabaseConfiguration: PATCH configuration/database (on-prem only, ConfirmImpact High)
Get-TssDcm: GET configuration/dcm/{type}, -CurrentUser GET configuration/dcm/current-user, -Mobile GET configuration/dcmmobile/current-user
Set-TssDcm: PATCH configuration/dcm
Invoke-TssDpapiDecrypt: POST configuration/dpapi/decrypt (on-prem only, ConfirmImpact High)
Search-TssAutoExportAudit: GET configuration/auto-export-audits
Search-TssAutoExportLog: GET configuration/auto-export-logs
Start-TssAutoExport: POST configuration/auto-export/run-now, returns the boolean
Set-TssBackupConfiguration: PATCH configuration/backup
Set-TssConfigurationApplication: PATCH configuration/application-settings
Set-TssConfigurationPermissionOption: PATCH v2 configuration/permission-options
Set-TssConfigurationUserExperience: PATCH configuration/user-experience
Set-TssConfigurationUserInterface: PATCH v2 configuration/user-interface
Search-TssAutoExportStorage: new optional -ConfigurationId (GET configuration/auto-export-storage/{id}); calls without it are unchanged, existing test knows the new parameter.
New classes: AdvancedConfigSettings.Setting, AdvancedConfigSettings.Summary, AppState.Status, Configuration.AdCredentialClearResult, AutoExportLog, ConfigurationLoginPolicy, ConfigurationPermissionOptions, ConfigurationUserExperience, ConfigurationUserInterface, DatabaseConfiguration, Dcm, DcmCurrentUser, DcmMobile, DpapiState, RadiusTestResult, SettingsMenu, State, StateSection. Command and type doc pages included.
Also squashed in:
- test: add shape tests for configuration and settings cmdlets
- fix: config cmdlets keep the server host in v2 URLs, New-TssAdvancedConfigurationSetting outputs nothing, DCM and auto export help match the server
- fix: Start-TssAutoExport help states the cloud error text for a disabled automatic export
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ation cmdlets
Invoke-TssDpapiEncrypt: POST configuration/dpapi/encrypt
Get-TssDpapiState: GET configuration/dpapi/state
Set-TssEmailConfiguration: PATCH configuration/email
Test-TssEmailConfiguration: POST configuration/email/test
New-TssEmailHeader: POST configuration/email/email-message-header
Remove-TssEmailHeader: DELETE configuration/email/email-message-header/{id}
Search-TssEmailHeader: GET configuration/email/email-message-header
Set-TssEmailHeader: PATCH configuration/email/email-message-header/{id}
Get-TssFeatureFlag: GET featureflag/{key}
Set-TssFolderConfiguration: PATCH configuration/folder
Get-TssFolderSyncConfiguration: GET configuration/folder-synchronization
Set-TssFolderSyncConfiguration: PATCH configuration/folder-synchronization
Get-TssHealthCheck: GET healthcheck
Get-TssIcon: GET icon/{id}
Get-TssInternalSiteConnectorConfiguration: GET configuration/internal-site-connector
Set-TssInternalSiteConnectorConfiguration: PATCH configuration/internal-site-connector
Get-TssMdiIntegrationAudit: GET configuration/mdi-integration-audits
Get-TssMdiIntegrationConfiguration: GET configuration/mdi-integration
Set-TssMdiIntegrationConfiguration: PATCH configuration/mdi-integration
Start-TssMdiSynchronization: POST mdi-integration/synchronize-now
Get-TssMdiSynchronization: GET mdi-integration/synchronization
Search-TssMfaProfile: GET configuration/mfa/get-auth-profiles
Update-TssMfaProfile: PUT configuration/mfa/set-auth-profile
Get-TssMobileConfiguration: GET mobile-configuration
Get-TssPlatformConfiguration: GET configuration/platform
Set-TssPlatformConfiguration: PATCH configuration/platform
Also squashed in:
- test: add shape tests for the email, folder, platform, MDI, MFA, DPAPI and other configuration cmdlets
- fix: drop read-only platform settings from Set-TssPlatformConfiguration, return nothing from Get-TssMdiSynchronization before the first sync
- fix: say Set-TssPlatformConfiguration clears the vault and tenant Id while OpenID Connect is off
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Get-TssTicketSystem: GET v2/ticket-systems/{id}, -Legacy GET v1/ticket-systems/{id}
Search-TssTicketSystem: GET v3/ticket-systems, -V2 GET v2/ticket-systems, -Legacy GET v1/ticket-systems
New-TssTicketSystem: POST v1/ticket-systems
Set-TssTicketSystem: PATCH v1/ticket-systems/{id}
Test-TssTicketSystem: POST v1/ticket-systems/{ticketSystemId}/test
Search-TssTicketSystemOverride: GET v1/ticket-systems/overrides
Get-TssTicketSystemOverride: GET v1/ticket-systems/overrides/{ticketSystemOverrideId}
Get-TssTicketSystemOverrideStatus: GET v1/ticket-systems/override/{ticketSystemOverrideId}
Classes: Thycotic.PowerShell.TicketSystems TicketSystem, Summary, TestResult, Override, OverrideSummary, OverrideStatus
Also squashed in:
- test: add shape tests for ticket system cmdlets
- fix: Get-TssTicketSystemOverrideStatus reports a pending request as empty, not False
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Test-TssLicenseForConnectionManager: GET license/validforconnectionmanager Also squashed in: - test: shape test for Test-TssLicenseForConnectionManager Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Get-TssBulkOperation: GET bulk-operations/{id}
Search-TssBulkOperation: GET bulk-operations
Stop-TssBulkOperation: PUT bulk-operations/{taskId}/stop
Get-TssBulkOperationAudit: GET bulk-operations/{id}/audits
Get-TssBulkOperationProgress: GET bulk-operations/{taskId}/progress
Enable-TssBulkPasswordChanger: POST bulk-password-changer-operations/enable
Disable-TssBulkPasswordChanger: POST bulk-password-changer-operations/disable
Invoke-TssBulkSecretAction: POST bulk-secret-operations/{action}, 14 id-only actions
Move-TssSecret: POST bulk-secret-operations/move-to-folder
Invoke-TssBulkUserAction: POST bulk-user-operations/{action}, 9 actions
Set-TssUserTwoFactor: POST bulk-user-operations two-factor routes, 12 actions
Also squashed in:
- test: add shape tests for bulk operation cmdlets
- fix: Search-TssBulkOperation help says when -StartUserId applies
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…command folders CHANGELOG: new 0.63.0 -- unreleased section (New Stuff grouped by command folder, General Updates, Bug Fixes, Tests) from the per-area notes. compatibility.md: one Function List row and link reference per new cmdlet, plus rows for the existing cmdlets that gained a parameter set and had none (Get-TssSecretState and New-TssMetadataField already had rows, left as is). Version = the Secret Server version verified on; SSC-only cmdlets say so. Command folder readme pages: nav_order 34 onward, in title order, after Proxy (33). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
UpdateManifest output of the Debug build: FunctionsToExport now lists 1099 functions (was 259). ModuleVersion stays 0.62.1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… ends the unlock Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pgrade status Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Request: split the Platform authentication commit into its own PRCould you move WhyPlatform sign-in is the foundation for Platform support, and it needs to be reviewed and live-tested on its own before the REST coverage builds on it. For v1 of Platform support we need service-user and interactive-user sign-in to work reliably, plus token refresh and unification detection (see #481). That's easier to get right in a small PR than inside a 3,652-file one. It splits cleanly
What the new PR needs on top of the commit
OrderMerge the authentication PR first, then rebase this PR onto it with Items for the authentication PR
|
Review findingsThese are on top of the split request above. Each one is checked against the PR head ( Shared pattern for dangerous operations (findings 2 to 5)None of the cmdlets in findings 2 to 5 has a Please add one private helper (for example [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')]
param(
# ...
[switch] $Force
)
# ...
Write-Warning $dangerMessage
if ($Force -or $PSCmdlet.ShouldContinue($dangerMessage, 'OK to proceed?')) {
if ($PSCmdlet.ShouldProcess($target, $action)) {
# send the request
}
}
1. Directory services: duplicates and naming
Ask:
2. Advanced configuration settings are support-onlyCmdlets: Ask: every change writes this warning, word for word, and then requires "OK to proceed" or
3. Database configuration is per nodeCmdlet: Ask:
4. Platform configuration and related Platform changes are dangerousChanges here can cause you to lose access to the Delinea Platform. Ask: use the shared pattern, with a warning that says this, on:
5. Secret key rotation, key management and MEK rotation are dangerousAsk: use the shared pattern (approval or
6. PBA is deprecatedAsk: remove the 9
Also drop the 7. Unanchored versioned URL rewrites
Added by this PR:
Ask:
The two pre-existing sites are tracked in #483. 8.
|
The Delinea Platform login for New-TssSession moves to its own change, per review. New-TssSession, Close-TssSession and TssSession are back to their dev versions: no platform or platformToken parameter sets, no Platform session members, no Platform refresh or expire paths. Removed with them: the vault host trust part, Get-TssPlatformVault with its Vault type, shape test and docs pages, the Delinea Platform section of the authentication page, and their CHANGELOG, compatibility and manifest rows. Test-TssPlatformIntegration and Get-TssPlatformCompatibilityLevel stay; their examples now pass a Platform access token with -AccessToken. The verbose redaction in Get-TssInvocation stays, it covers parameters of other new cmdlets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Removed per review: Clear-TssPbaChallenge, Confirm-TssPbaPair, Get-TssPbaConfiguration, Get-TssPbaImportStatus, Import-TssPbaHistory, Search-TssPbaChallenge, Sync-TssPbaMetadata, Test-TssPbaConnection and Update-TssPbaConfiguration. Removed with them: the PbaConfiguration classes and type pages, the command pages, the shape tests, the CHANGELOG and compatibility rows and the manifest entries. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ryService noun Removed per review: New-TssActiveDirectoryDomain, Search-TssActiveDirectoryDomain and Start-TssActiveDirectorySync, with the ActiveDirectory classes, type pages, command pages, shape tests, CHANGELOG and compatibility rows and manifest entries. New-TssDirectoryService, Search-TssDirectoryServiceDomain and Start-TssDirectoryServiceSync cover the same operations on the directory-services routes. What the legacy routes offered beyond the existing cmdlets moves onto them: Search-TssDirectoryServiceDomain gets parameter set searchText (-SearchText, GET v1/active-directory/domains), which matches the friendly name as well as the domain name; DirectoryServices.DomainSummary gains DistinguishedName and SiteId for it. The default set, now named filter, is unchanged. Start-TssDirectoryServiceSync gets -PassThru to output the Boolean the server returns; its help links now point at directory-services. The POST active-directory/domains body has no field that DomainCreateModel lacks, so New-TssDirectoryService is unchanged. Renamed: Set-TssDirectoryDomain to Set-TssDirectoryServiceDomain, Get-TssDirectoryDomainStub to Get-TssDirectoryServiceDomainStub, Get-TssDirectoryConfiguration to Get-TssDirectoryServiceConfiguration, Set-TssDirectoryConfiguration to Set-TssDirectoryServiceConfiguration, Get-TssDirectoryConfigurationAudit to Get-TssDirectoryServiceConfigurationAudit and Search-TssDirectorySyncLog to Search-TssDirectoryServiceSyncLog, and the DirectoryServices.DirectoryDomain class to DirectoryServiceDomain, with their tests, docs, CHANGELOG and compatibility rows and manifest entries. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
$TssSession.ApiUrl -replace 'v1','v2' rewrites every v1 in the URL, so a host or install path containing v1 sent the request and its token elsewhere. The 17 v2 and 3 v3 rewrites this change added now use -replace '/api/v1$','/api/v2' (or /api/v3), the form the other new cmdlets already use. New tests/Module.ApiUrlRewrite.Tests.ps1 fails on any ApiUrl -replace whose pattern is not anchored at /api/v1$. The two pre-existing sites, Search-TssConfigurationBackupLog and Search-TssSystemLog, are on an allowlist in the test and are left for a separate fix; a second test fails once they are anchored, so the allowlist cannot go stale. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The published route GET v1/secrets/secret-detail/{id}/password-status is now the only route. The internal route internals/secret-detail/{id}/password-status is gone, and so is the -RestApi switch this change had added to choose between them; parameters and output are back to the dev shape.
Recorded under Breaking Changes in the CHANGELOG and in the command help: the default route changes, and the internal endpoint verbose note is no longer written.
New request test checks the route, the absence of the internal note and the PasswordStatus output. It runs the command through tests/_helperscripts/NoHostRunspace.ps1: a runspace whose host cannot prompt, with Invoke-TssApi replaced in the module scope by a recorder that answers 200, so nothing is sent.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…-Force New-, Update- and Remove-TssAdvancedConfigurationSetting now write "These settings are only to be updated by Delinea Support. Modifying them will have a major impact on Secret Server" and ask OK to proceed? before they send anything. New -Force skips the question for unattended runs, ConfirmImpact is High, and -WhatIf still shows the request without sending it. Help says why the settings are dangerous and what -Force does. The pattern lives in one new private cmdlet, Confirm-TssDangerousOperation (cmdlets/private, next to Write-TssInternalNote), which the later dangerous cmdlets reuse. It takes the caller's PSCmdlet, a danger name that selects the warning text, and the ShouldProcess target and action: -WhatIf (bound or $WhatIfPreference): ShouldProcess only, so nothing is sent and nothing prompts. No -Force: the warning, ShouldContinue (OK to proceed?), then ShouldProcess. -Confirm:$false or $ConfirmPreference = 'None' no longer skips the question. -Force: the warning, no prompt, unless -Confirm is passed explicitly. tests/Module.DangerousOperation.Tests.ps1 runs the helper and each command that uses it in a runspace whose host cannot prompt, with Invoke-TssApi recorded instead of sent, and checks each case above plus -Force, ConfirmImpact High and help on every command. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The database configuration is set per web node, so through a load-balanced address the change lands on whichever node answers. Set-TssDatabaseConfiguration now warns that the change applies only to the node that receives the request and that the session must point directly at that node, then asks OK to proceed? through Confirm-TssDangerousOperation. New -Force skips the question; ConfirmImpact stays High and -WhatIf sends nothing. Get-TssDatabaseConfiguration help now says the result comes from the node that answered. Not done: comparing the session host with the web nodes to refuse a load-balanced address. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…-TssPlatformProvision Set-TssPlatformConfiguration, Enable-TssUnifiedMode, Set-TssUnifiedModeStatus, Reset-TssPlatformUserMapping and Set-TssPlatformUserMapping now warn that the change can cause loss of access to the Delinea Platform and ask OK to proceed? through Confirm-TssDangerousOperation. New -Force skips the question, ConfirmImpact is High on all five (was Medium on Set-TssPlatformConfiguration, Set-TssUnifiedModeStatus and Set-TssPlatformUserMapping), and -WhatIf sends nothing. Help says why each is dangerous. Invoke-TssPlatformProvision is removed with its command page, shape test, CHANGELOG and compatibility rows and manifest entry. The ProvisionStatus class stays: Get-TssPlatformProvisionStatus returns it. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…Force Start-TssSecretKeyRotation, Stop-TssSecretKeyRotation, Update-TssKeyManagement, Start-TssMekRotation and Restart-TssMekRotation now warn that a wrong or interrupted change to how Secret Server encrypts its data can leave Secret Server or its secrets unreadable, and ask OK to proceed? through Confirm-TssDangerousOperation. New -Force skips the question, ConfirmImpact is High on all five (was Medium on Stop-TssSecretKeyRotation), and -WhatIf sends nothing. Help says why each is dangerous. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
A dev build of this PR is published for validation as 0.63.0-alpha1, built from 766602b with a version stamp on top (5c3a965).
Install-Module Thycotic.SecretServer -RequiredVersion 0.63.0-alpha1 -AllowPrerelease -Scope CurrentUserA plain Please post validation results here: the Secret Server version, on-premises or Cloud, the command, and 🤖 Generated with Claude Code |
…d-status is an update Search-TssDirectoryServiceDomain output gains DistinguishedName and SiteId in every parameter set, not only -SearchText; the default set returns them empty. Lead the 0.63.0 section with that entry and correct the claim that the default output is unchanged. Get-TssSecretPasswordStatus keeps its parameters and output, so the route change moves from Breaking Changes to General Updates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…out 1 s (thycotic-ps#486) The psm1 dot-sources every file under functions at import. With 1,084 function files that takes about 26 s on a cold import; nearly all of it is per-file overhead, not parsing. build.functions.ps1 adds Merge-ModuleFunction, which build.ps1 and build-release-only.ps1 call while staging. It replaces the Import Functions loader in the staged psm1 with each function file wrapped in #region functions/<path> markers, in loader order, and removes the staged functions folder. src keeps its per-file layout. The merged text is parsed once and rejected, leaving the stage unchanged, if any file holds #requires, using, script-level blocks or other top-level code, more than one function or a function not named after its file, or $PSScriptRoot, $PSCommandPath or MyCommand.Path. Measured on the staged build: 1,087 commands with an identical parameter signature hash, cold import 1.1 s against 25.9 s from src. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
I pushed two commits to this branch after A/B testing the 0.63.0-alpha1 build against 0.62.1 and 0.62.0 with the SecretServer-Internal scripts on a 12.3 lab.
This branch is 3 commits behind Not from this PR, but found in the same testing: since 0.62.1, |
|
0.63.0-rc1 is out as a prerelease on GitHub (https://github.com/thycotic-ps/thycotic.secretserver/releases/tag/v0.63.0-rc1) and the PowerShell Gallery ( It's built from this PR's head (f57c3d5) plus these commits on
Could you pull these into the PR so it matches what ships as 0.63.0? I tested the |
Review changes
Your 2026-10-19 review, one commit per finding (69c4d8f to 766602b):
The 14 guarded cmdlets share one private helper, Confirm-TssDangerousOperation. Each has Pester tests for -Force, -WhatIf, the prompt, and nothing sent without -Force. The guard, -SearchText and -PassThru have Pester coverage only, no live runs yet.
Added after review
Per area
Live cells = cmdlet x target (12.3 on-prem, Secret Server Cloud, Platform-connected vault). 62 not-applicable cells not counted.
OWED 412: no test environment, license, server-wide state with no safe undo, cloud-only, sign-in or account step declined, other. The 13 removed cmdlets (9 PBA, 3 ActiveDirectory, Invoke-TssPlatformProvision) are not in the counts.
Start-TssUpgrade (area-6) was dropped after QA (multi-node wait defect) and is not counted.
Backward compatibility
Coverage
Evidence
Scrubbed excerpts from the live QA runs on 12.3 on-prem.
<ss-url>= the instance, ids replaced.Search-TssInboxMessage (inbox): only type 9 returned, equal to raw REST; same on Secret Server Cloud and a Platform vault.
Search-TssUserTeam (users): equal to raw REST; -IncludeGroupMemberships adds the team held through a group.
Set-TssDirectoryConfiguration (directory services, now Set-TssDirectoryServiceConfiguration): no request sent, stored config unchanged.
Install-TssUpgrade (upgrade): no request sent, request body kept out of the What if text.
Closes #486
Refs #481
-- Claude Code