Ciph4.psd1

@{
    ModuleVersion     = '1.3.0'
    GUID              = '7ba3e5b3-6909-4255-987d-f32b86a9ba84'
    Author            = 'CIPH4 Inc.'
    CompanyName       = 'CIPH4 Inc.'
    Copyright         = '(c) 2026 CIPH4 Inc. All rights reserved.'
    Description       = 'CIPH4 PowerShell Module — zero-knowledge AES-256-GCM secret sharing plus a comprehensive wrapper of the CIPH4 management API (drops, orgs, compliance, reports, threats, IP rules, webhooks, audit, GDPR).'
    PowerShellVersion = '7.0'
    RootModule        = 'Ciph4.psm1'
    FunctionsToExport = @(
        # Configuration
        'Set-Ciph4ApiKey', 'Set-Ciph4BaseUrl',
        # Drops
        'Send-Ciph4Text', 'Send-Ciph4File',
        # Multi-file drops (tier.multiFileDrops, Teams+) — closes the
        # SDK gap surfaced by Phase B OpenAPI work 2026-05-11.
        'Send-Ciph4MultiFileDrop',
        'Get-Ciph4Drop', 'Get-Ciph4Drops',
        'Revoke-Ciph4Drop', 'Invoke-Ciph4DropArchive', 'Invoke-Ciph4DropClone',
        'Get-Ciph4DropReceipt',
        # Drop signed-URL family + recipient-side metadata
        # (Audit SDK-2026-05-08 #04 B2: were exported by psm1 but not
        # declared in psd1 — PowerShellGet discovery missed them.)
        'Get-Ciph4DropMeta',
        # SDK Audit 2026-05-27 C1 + H1: Invoke-Ciph4DropDownload,
        # Invoke-Ciph4TrackDownload, and Invoke-Ciph4RecipientMagic
        # removed. C1 was hitting a deleted endpoint (404 since the
        # 2026-05-19 unify pass). H1: track-download + recipient-magic
        # read session/delivery cookies not the SDK Bearer; from an
        # admin SDK they either 401 or no-op. A future
        # `ciph4.recipient.*` namespace can ship these if a real public-
        # flow PS shim becomes a customer ask.
        'Get-Ciph4DropUploadUrl', 'Get-Ciph4DropDownloadUrl',
        # PATCH / bulk / send cmdlets — audit #04 H-COV-6/7/8.
        # SDK Audit 2026-05-27 H3: Update-Ciph4DropBulk added (PATCH
        # variant of /api/dead-drops/bulk; Python's `drops.bulk_update`
        # equivalent).
        'Update-Ciph4Drop', 'Invoke-Ciph4DropBulk', 'Update-Ciph4DropBulk',
        'Send-Ciph4DropEmail',
        # User profile
        'Get-Ciph4Profile', 'Set-Ciph4Profile', 'Set-Ciph4Password', 'Get-Ciph4Plan',
        # Sessions
        'Get-Ciph4Session', 'Remove-Ciph4Session',
        # API keys
        'Get-Ciph4ApiKeyItem', 'New-Ciph4ApiKeyItem', 'Remove-Ciph4ApiKeyItem',
        # MFA
        'Get-Ciph4MfaStatus', 'Start-Ciph4MfaEnroll', 'Confirm-Ciph4MfaEnroll',
        'Disable-Ciph4Mfa', 'Get-Ciph4MfaBackupCode',
        # Account deletion
        'Request-Ciph4AccountDeletion', 'Confirm-Ciph4AccountDeletion',
        'Stop-Ciph4AccountDeletion', 'Get-Ciph4AccountDeletionStatus',
        # Notifications + dashboard settings (#04 B2 manifest sync)
        'Get-Ciph4Notification', 'Set-Ciph4Notification',
        'Get-Ciph4DashboardSettings', 'Set-Ciph4DashboardSettings',
        # File requests
        'Get-Ciph4FileRequest', 'New-Ciph4FileRequest', 'Set-Ciph4FileRequest',
        'Remove-Ciph4FileRequest',
        # Memberships (Issue F home/manager rule) — audit follow-up
        # 2026-05-10: was exported by psm1 but missing from psd1.
        'Get-Ciph4Membership', 'Set-Ciph4HomeOrg',
        # Deletion receipts listing
        'Get-Ciph4DeletionReceipts',
        # Tags, SavedViews, Tickets, Insights — audit follow-up:
        # psm1 exports these; psd1 was missing them too.
        'Get-Ciph4Tag', 'New-Ciph4Tag', 'Remove-Ciph4Tag',
        'Get-Ciph4SavedView', 'New-Ciph4SavedView', 'Remove-Ciph4SavedView',
        'Get-Ciph4Ticket', 'New-Ciph4Ticket', 'Add-Ciph4TicketComment',
        'Get-Ciph4Insight',
        # Orgs
        'Get-Ciph4Org', 'New-Ciph4Org', 'Set-Ciph4Org', 'Remove-Ciph4Org',
        # SDK Audit 2026-05-27 H2: Add-Ciph4OrgMemberBulk added (bulk
        # /api/orgs/{orgId}/members/bulk POST; Python's
        # `orgs.members.bulk` equivalent).
        'Get-Ciph4OrgMember', 'Add-Ciph4OrgMember', 'Add-Ciph4OrgMemberBulk',
        'Remove-Ciph4OrgMember',
        'Get-Ciph4OrgInvite', 'New-Ciph4OrgInvite', 'Invoke-Ciph4OrgInviteResend',
        'Invoke-Ciph4OrgInviteAccept',
        'Get-Ciph4OrgStorage',
        # Security & policies
        'Get-Ciph4OrgSecurityPolicies', 'Set-Ciph4OrgSecurityPolicies',
        'Get-Ciph4OrgMfaPolicy', 'Set-Ciph4OrgMfaPolicy',
        # Threats & IP rules
        'Get-Ciph4Threat', 'Invoke-Ciph4ThreatExport', 'Invoke-Ciph4ThreatBulk',
        'Get-Ciph4IpRule', 'New-Ciph4IpRule', 'Remove-Ciph4IpRule',
        # Compliance
        'Get-Ciph4ComplianceControl', 'Set-Ciph4ComplianceControl',
        'Get-Ciph4CompliancePolicy', 'Confirm-Ciph4CompliancePolicy',
        'Get-Ciph4ComplianceRisk', 'New-Ciph4ComplianceRisk',
        'Get-Ciph4ComplianceVendor', 'New-Ciph4ComplianceVendor',
        'Get-Ciph4ComplianceEvidence', 'Get-Ciph4ComplianceChangelog',
        # Reports
        'Get-Ciph4Report', 'New-Ciph4Report', 'Get-Ciph4ReportDownload',
        'Get-Ciph4ReportTemplate', 'Get-Ciph4ReportScheduled',
        # Audit
        'Get-Ciph4Audit', 'Test-Ciph4AuditChain',
        # Receipts (Test-Ciph4ReceiptOffline pulled in audit follow-up
        # 2026-05-10: the prototype shipped in commit 96aeeb20 had four
        # distinct bugs that made it always return False. Honest behavior
        # is to NOT export a non-functional verifier — operators relying
        # on it would assume forged receipts are invalid when in fact
        # legitimate receipts also returned False. Use the Python SDK's
        # verify_offline() until the PS implementation lands properly.)
        'Test-Ciph4Receipt', 'Get-Ciph4ReceiptJwks',
        # Webhooks
        'Get-Ciph4Webhook', 'New-Ciph4Webhook', 'Remove-Ciph4Webhook',
        'Test-Ciph4WebhookSignature'
    )
    CmdletsToExport   = @()
    VariablesToExport = @()
    AliasesToExport   = @()
    PrivateData       = @{
        PSData = @{
            Tags         = @('security', 'encryption', 'secret-sharing', 'zero-knowledge', 'ciph4', 'compliance', 'audit', 'api-client')
            ProjectUri   = 'https://ciph4.com/docs'
            LicenseUri   = 'https://ciph4.com/terms'
            ReleaseNotes = 'v1.3.0 — SDK Audit 2026-05-27 (BREAKING for recipient-flow cmdlets). Removed: Invoke-Ciph4DropDownload (called the deleted /api/dead-drops/:id/download endpoint — 404 since 2026-05-19), Invoke-Ciph4TrackDownload + Invoke-Ciph4RecipientMagic (recipient-flow endpoints that ignore the admin Bearer and require session/delivery cookies the SDK does not carry). Added: Update-Ciph4DropBulk (PATCH variant of /api/dead-drops/bulk; bulk maxViews/expiresAt/recipientEmail/tagsJson updates), Add-Ciph4OrgMemberBulk (POST /api/orgs/{orgId}/members/bulk; up to 100 emails with shared role). Update-Ciph4Drop: -ExpiresIn / -ExpiryDate replaced with -ExpiresAt (ISO 8601); -DrmEnabled removed (not in server PATCH schema); added -Passphrase / -RecipientEmail / -TagsJson / -RequireRecipientIdentity. Set-Ciph4FileRequest: added -Passphrase / -RecipientEmail / -RecipientName / -MaxFileSize / -Archive to match the full FileRequestPatchSchema. New-Ciph4FileRequest: MaxFileSize ValidateRange raised from 5 MB to 1 GB (Enterprise ceiling). Invoke-Ciph4DropBulk: id count cap raised from 200 to 500 (matches server BulkArchiveSchema). v1.2.0 — Multi-file drops + recipient-side cmdlets (2026-05-11). v1.1.1 — SDK functional audit close (2026-05-08).'
        }
    }
}