StepMetadataCatalog.psd1

# StepMetadataCatalog.psd1 - IdLE.Steps.Mailbox
#
# Data-only metadata catalog for mailbox step types.
# This file is loaded by Get-IdleStepMetadataCatalog and must remain data-only (no ScriptBlocks).
#
# Each entry maps a Step.Type to a metadata hashtable containing:
# RequiredCapabilities - capability identifiers the step requires from providers
# WithSchema - declares the With key contract for plan-time validation:
# RequiredKeys - keys that MUST be present in With
# OptionalKeys - keys that MAY be present in With
#
@{
    # IdLE.Step.Mailbox.GetInfo - reads mailbox details for an identity
    'IdLE.Step.Mailbox.GetInfo'          = @{
        RequiredCapabilities = @('IdLE.Mailbox.Info.Read')
        WithSchema           = @{
            RequiredKeys = @('IdentityKey')
            OptionalKeys = @('Provider', 'AuthSessionName', 'AuthSessionOptions')
        }
    }

    # IdLE.Step.Mailbox.EnsureType - idempotently converts a mailbox to the specified type
    # MailboxType accepts: User, Shared, Room, Equipment
    'IdLE.Step.Mailbox.EnsureType'       = @{
        RequiredCapabilities = @('IdLE.Mailbox.Info.Read', 'IdLE.Mailbox.Type.Ensure')
        WithSchema           = @{
            RequiredKeys = @('IdentityKey', 'MailboxType')
            OptionalKeys = @('Provider', 'AuthSessionName', 'AuthSessionOptions')
        }
    }

    # IdLE.Step.Mailbox.EnsureOutOfOffice - idempotently configures out-of-office settings
    # Config accepts: Mode (required), Start/End (required when Mode=Scheduled),
    # InternalMessage, ExternalMessage, ExternalAudience, MessageFormat (optional)
    'IdLE.Step.Mailbox.EnsureOutOfOffice' = @{
        RequiredCapabilities = @('IdLE.Mailbox.Info.Read', 'IdLE.Mailbox.OutOfOffice.Ensure')
        WithSchema           = @{
            RequiredKeys = @('IdentityKey', 'Config')
            OptionalKeys = @('Provider', 'AuthSessionName', 'AuthSessionOptions')
        }
    }

    # IdLE.Step.Mailbox.EnsurePermissions - idempotently manages delegate permissions
    # Permissions is an array of hashtables with: AssignedUser, Right, Ensure
    'IdLE.Step.Mailbox.EnsurePermissions' = @{
        RequiredCapabilities = @('IdLE.Mailbox.Info.Read', 'IdLE.Mailbox.Permissions.Ensure')
        WithSchema           = @{
            RequiredKeys = @('IdentityKey', 'Permissions')
            OptionalKeys = @('Provider', 'AuthSessionName', 'AuthSessionOptions')
        }
    }
}