exports/ProxyCmdletDefinitions.ps1


# ----------------------------------------------------------------------------------
# Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.8.4, generator: @autorest/powershell@3.0.486)
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# ----------------------------------------------------------------------------------

<#
.Synopsis
Enables the multiplayer server feature for a title.
.Description
Enables the multiplayer server feature for a title.
.Example
PS C:\> {{ Add code here }}
 
{{ Add output here }}
.Example
PS C:\> {{ Add code here }}
 
{{ Add output here }}
 
.Inputs
PlayFab.Multiplayer.Models.IEnableMultiplayerServersForTitleRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents1Lop7EgResponsesEnablemultiplayerserversfortitleresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
ENABLEMULTIPLAYERSERVERSFORTITLEREQUEST <IEnableMultiplayerServersForTitleRequest>: Enables the multiplayer server feature for a title and returns the enabled status. The enabled status can be Initializing, Enabled, and Disabled. It can up to 20 minutes or more for the title to be enabled for the feature. On average, it can take up to 20 minutes for the title to be enabled for the feature.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/enable-pfmultiplayerserver
#>

function Enable-PfMultiplayerServer {
[OutputType([PlayFab.Multiplayer.Models.IComponents1Lop7EgResponsesEnablemultiplayerserversfortitleresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='EnableExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Enable', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IEnableMultiplayerServersForTitleRequest]
    # Enables the multiplayer server feature for a title and returns the enabled status.
    # The enabled status can be Initializing, Enabled, and Disabled.
    # It can up to 20 minutes or more for the title to be enabled for the feature.
    # On average, it can take up to 20 minutes for the title to be enabled for the feature.
    # To construct, see NOTES section for ENABLEMULTIPLAYERSERVERSFORTITLEREQUEST properties and create a hash table.
    ${EnableMultiplayerServersForTitleRequest},

    [Parameter(ParameterSetName='EnableExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Enable = 'PlayFabMultiplayerApi.private\Enable-PfMultiplayerServer_Enable';
            EnableExpanded = 'PlayFabMultiplayerApi.private\Enable-PfMultiplayerServer_EnableExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Lists archived multiplayer server sessions for a build.
.Description
Lists archived multiplayer server sessions for a build.
.Example
PS C:\> Get-PfArchivedMultiplayerServer -BuildId 9968f71f-f3ec-49df-82d7-d00b12c92e12 -Region AustraliaEast | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "MultiplayerServerSummaries": [
      {
        "ConnectedPlayers": [],
        "LastStateTransitionTime": "2021-02-12T21:33:11.198Z",
        "Region": "AustraliaEast",
        "ServerId": "d9dae82c5be383bcba9d2c5faaee4fa2961bbdcb5ca858302b4aa03e74d373b0",
        "SessionId": null,
        "State": "Terminated",
        "VMId": "xcloudeau4u4yyxj4xymu:AustraliaEast:1E03_976a4cde-cb5a-4423-975f-d8e22e5815ce:tvmps_f12e69e1d9bd29bd0dc0a8ba65e251f0eb739c93c541baee571fd289bcb1a1f2_d"
      },
      {
        "ConnectedPlayers": [],
        "LastStateTransitionTime": "2021-02-08T22:30:54.261Z",
        "Region": "AustraliaEast",
        "ServerId": "19339cb1cff398dc3f5ec9f517a8bf7b12d506fe06348e7642b7ec31ada4b3fd",
        "SessionId": "0352cf0f-2e7a-4aee-801d-7f27f8344c77",
        "State": "Terminated",
        "VMId": "xcloudeau4u4yyxj4xymu:AustraliaEast:1E03_976a4cde-cb5a-4423-975f-d8e22e5815ce:tvmps_f12e69e1d9bd29bd0dc0a8ba65e251f0eb739c93c541baee571fd289bcb1a1f2_d"
      }
    ],
    "PageSize": 2.0,
    "SkipToken": null
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IListMultiplayerServersRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents12QgathResponsesListmultiplayerserversresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
LISTMULTIPLAYERSERVERSREQUEST <IListMultiplayerServersRequest>: Returns a list of multiplayer servers for a build in a specific region.
  BuildId <String>: The guid string build ID of the multiplayer servers to list.
  Region <String>: The region the multiplayer servers to list.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [PageSize <Single?>]: The page size for the request.
  [SkipToken <String>]: The skip token for the paged request.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfarchivedmultiplayerserver
#>

function Get-PfArchivedMultiplayerServer {
[OutputType([PlayFab.Multiplayer.Models.IComponents12QgathResponsesListmultiplayerserversresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='ListExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='List', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IListMultiplayerServersRequest]
    # Returns a list of multiplayer servers for a build in a specific region.
    # To construct, see NOTES section for LISTMULTIPLAYERSERVERSREQUEST properties and create a hash table.
    ${ListMultiplayerServersRequest},

    [Parameter(ParameterSetName='ListExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string build ID of the multiplayer servers to list.
    ${BuildId},

    [Parameter(ParameterSetName='ListExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The region the multiplayer servers to list.
    ${Region},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Single]
    # The page size for the request.
    ${PageSize},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The skip token for the paged request.
    ${SkipToken},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            List = 'PlayFabMultiplayerApi.private\Get-PfArchivedMultiplayerServer_List';
            ListExpanded = 'PlayFabMultiplayerApi.private\Get-PfArchivedMultiplayerServer_ListExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Gets a URL that can be used to download the specified asset.
A sample pre-authenticated url - https://sampleStorageAccount.blob.core.windows.net/gameassets/gameserver.zip?sv=2015-04-05&ss=b&srt=sco&sp=rw&st=startDate&se=endDate&spr=https&sig=sampleSig&api-version=2017-07-29
.Description
Gets a URL that can be used to download the specified asset.
A sample pre-authenticated url - https://sampleStorageAccount.blob.core.windows.net/gameassets/gameserver.zip?sv=2015-04-05&ss=b&srt=sco&sp=rw&st=startDate&se=endDate&spr=https&sig=sampleSig&api-version=2017-07-29
.Example
PS C:\> {{ Add code here }}
 
{{ Add output here }}
.Example
PS C:\> {{ Add code here }}
 
{{ Add output here }}
 
.Inputs
PlayFab.Multiplayer.Models.IGetAssetDownloadUrlRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsC35LhoResponsesGetassetdownloadurlresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
GETASSETDOWNLOADURLREQUEST <IGetAssetDownloadUrlRequest>: Gets a URL that can be used to download the specified asset.
  FileName <String>: The asset's file name to get the download URL for.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfassetdownloadurl
#>

function Get-PfAssetDownloadUrl {
[OutputType([PlayFab.Multiplayer.Models.IComponentsC35LhoResponsesGetassetdownloadurlresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='GetExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Get', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGetAssetDownloadUrlRequest]
    # Gets a URL that can be used to download the specified asset.
    # To construct, see NOTES section for GETASSETDOWNLOADURLREQUEST properties and create a hash table.
    ${GetAssetDownloadUrlRequest},

    [Parameter(ParameterSetName='GetExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The asset's file name to get the download URL for.
    ${FileName},

    [Parameter(ParameterSetName='GetExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'PlayFabMultiplayerApi.private\Get-PfAssetDownloadUrl_Get';
            GetExpanded = 'PlayFabMultiplayerApi.private\Get-PfAssetDownloadUrl_GetExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Lists multiplayer server game assets for a title.
.Description
Lists multiplayer server game assets for a title.
.Example
PS C:\>Get-PfAssetSummary | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "AssetSummaries": [
      {
        "FileName": "123.zip",
        "Metadata": {}
      },
      {
        "FileName": "BlockyBall-0.0.5.zip",
        "Metadata": {}
      }
    ],
    "PageSize": 2.0,
    "SkipToken": null
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IListAssetSummariesRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents73Gb1RResponsesListassetsummariesresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
LISTASSETSUMMARIESREQUEST <IListAssetSummariesRequest>: Returns a list of multiplayer server game asset summaries for a title.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [PageSize <Single?>]: The page size for the request.
  [SkipToken <String>]: The skip token for the paged request.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfassetsummary
#>

function Get-PfAssetSummary {
[OutputType([PlayFab.Multiplayer.Models.IComponents73Gb1RResponsesListassetsummariesresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='ListExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='List', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IListAssetSummariesRequest]
    # Returns a list of multiplayer server game asset summaries for a title.
    # To construct, see NOTES section for LISTASSETSUMMARIESREQUEST properties and create a hash table.
    ${ListAssetSummariesRequest},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Single]
    # The page size for the request.
    ${PageSize},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The skip token for the paged request.
    ${SkipToken},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            List = 'PlayFabMultiplayerApi.private\Get-PfAssetSummary_List';
            ListExpanded = 'PlayFabMultiplayerApi.private\Get-PfAssetSummary_ListExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Gets the URL to upload assets to.
A sample pre-authenticated url - https://sampleStorageAccount.blob.core.windows.net/gameassets/gameserver.zip?sv=2015-04-05&ss=b&srt=sco&sp=rw&st=startDate&se=endDate&spr=https&sig=sampleSig&api-version=2017-07-29
.Description
Gets the URL to upload assets to.
A sample pre-authenticated url - https://sampleStorageAccount.blob.core.windows.net/gameassets/gameserver.zip?sv=2015-04-05&ss=b&srt=sco&sp=rw&st=startDate&se=endDate&spr=https&sig=sampleSig&api-version=2017-07-29
.Example
PS C:\> Get-PfAssetUploadUrl -FileName assetName.zip | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "AssetUploadUrl": "https://example.blob.core.windows.net/gameassets/assetName5.zip?sv=2015-04-05&ss=b&srt=sco&sp=rw&st=2021-02-16T17%3A50%3A54.1522880Z&se=2021-02-16T23%3A50%3A54.1522869Z&spr=https&sig=06dW11txp76vFjq%2BV9IiXwCSfyQYGHk%2FrKbtiUlbitM%3D&api-version=2018-03-28",
    "FileName": "assetName.zip"
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IGetAssetUploadUrlRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsHvu8TvResponsesGetassetuploadurlresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
GETASSETUPLOADURLREQUEST <IGetAssetUploadUrlRequest>: Gets the URL to upload assets to.
  FileName <String>: The asset's file name to get the upload URL for.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfassetuploadurl
#>

function Get-PfAssetUploadUrl {
[OutputType([PlayFab.Multiplayer.Models.IComponentsHvu8TvResponsesGetassetuploadurlresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='GetExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Get', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGetAssetUploadUrlRequest]
    # Gets the URL to upload assets to.
    # To construct, see NOTES section for GETASSETUPLOADURLREQUEST properties and create a hash table.
    ${GetAssetUploadUrlRequest},

    [Parameter(ParameterSetName='GetExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The asset's file name to get the upload URL for.
    ${FileName},

    [Parameter(ParameterSetName='GetExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'PlayFabMultiplayerApi.private\Get-PfAssetUploadUrl_Get';
            GetExpanded = 'PlayFabMultiplayerApi.private\Get-PfAssetUploadUrl_GetExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Gets a multiplayer server build alias.
.Description
Gets a multiplayer server build alias.
.Example
PS C:\> Get-PfBuildAlias | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "BuildAliases": [
      {
        "AliasId": "2aa2c62f-b571-42c6-9d44-895990136d0d",
        "AliasName": "AliasName",
        "BuildSelectionCriteria": [
          {
            "BuildWeightDistribution": {
              "9968f71f-f3ec-49df-82d7-d00b12c92e12": 1
            }
          }
        ],
        "PageSize": 0.0,
        "SkipToken": null
      },
      {
        "AliasId": "b3903983-8f1e-417b-8370-dd108cccc6b2",
        "AliasName": "NewAliasName",
        "BuildSelectionCriteria": [
          {
            "BuildWeightDistribution": {
              "9968f71f-f3ec-49df-82d7-d00b12c92e12": 2,
              "0efadb18-8c62-42da-a7f9-4deec9bf47fd": 3
            }
          }
        ],
        "PageSize": 0.0,
        "SkipToken": null
      }
    ]
  },
  "Status": "OK"
}
.Example
PS C:\> Get-PfBuildAlias -AliasId eebd660c-2c4e-4ec3-abd7-d639bb329ad0 | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "AliasId": "eebd660c-2c4e-4ec3-abd7-d639bb329ad0",
    "AliasName": "NewAliasName",
    "BuildSelectionCriteria": [
      {
        "BuildWeightDistribution": {
          "9968f71f-f3ec-49df-82d7-d00b12c92e12": 2,
          "0efadb18-8c62-42da-a7f9-4deec9bf47fd": 3
        }
      }
    ],
    "PageSize": 0.0,
    "SkipToken": null
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IGetBuildAliasRequest
.Inputs
PlayFab.Multiplayer.Models.IListBuildAliasesRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents1Ola4KgResponsesBuildaliasdetailsresponseContentApplicationJsonSchema
.Outputs
PlayFab.Multiplayer.Models.IComponentsAf3SjfResponsesListbuildaliasesresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
GETBUILDALIASREQUEST <IGetBuildAliasRequest>: Returns the details about a multiplayer server build alias.
  AliasId <String>: The guid string alias ID of the alias to perform the action on.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
 
LISTBUILDALIASESREQUEST <IListBuildAliasesRequest>: Returns a list of summarized details of all multiplayer server builds for a title.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [PageSize <Single?>]: The page size for the request.
  [SkipToken <String>]: The skip token for the paged request.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfbuildalias
#>

function Get-PfBuildAlias {
[OutputType([PlayFab.Multiplayer.Models.IComponents1Ola4KgResponsesBuildaliasdetailsresponseContentApplicationJsonSchema], [PlayFab.Multiplayer.Models.IComponentsAf3SjfResponsesListbuildaliasesresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='ListExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Get', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGetBuildAliasRequest]
    # Returns the details about a multiplayer server build alias.
    # To construct, see NOTES section for GETBUILDALIASREQUEST properties and create a hash table.
    ${GetBuildAliasRequest},

    [Parameter(ParameterSetName='GetExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string alias ID of the alias to perform the action on.
    ${AliasId},

    [Parameter(ParameterSetName='GetExpanded')]
    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='List', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IListBuildAliasesRequest]
    # Returns a list of summarized details of all multiplayer server builds for a title.
    # To construct, see NOTES section for LISTBUILDALIASESREQUEST properties and create a hash table.
    ${ListBuildAliasesRequest},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Single]
    # The page size for the request.
    ${PageSize},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The skip token for the paged request.
    ${SkipToken},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'PlayFabMultiplayerApi.private\Get-PfBuildAlias_Get';
            GetExpanded = 'PlayFabMultiplayerApi.private\Get-PfBuildAlias_GetExpanded';
            List = 'PlayFabMultiplayerApi.private\Get-PfBuildAlias_List';
            ListExpanded = 'PlayFabMultiplayerApi.private\Get-PfBuildAlias_ListExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Gets a multiplayer server build.
.Description
Gets a multiplayer server build.
.Example
PS C:\> Get-PfBuild | ConvertTo-Json -depth 7
 
{
  "Code": 200,
  "Data": {
    "BuildSummaries": [
      {
        "BuildId": "5861f6fe-bad6-40a2-87b6-9867bd0d6862",
        "BuildName": "testLinuxBuildWithPerfMetrics3",
        "CreationTime": "2020-07-22T00:12:53.674Z",
        "Metadata": {},
        "RegionConfigurations": [
          {
            "CurrentServerStats": {
              "Active": 0.0,
              "Propping": 0.0,
              "StandingBy": 3.0,
              "Total": 3.0
            },
            "DynamicStandbySettings": {
              "DynamicFloorMultiplierThresholds": null,
              "IsEnabled": false,
              "RampDownSeconds": null
            },
            "MaxServers": 1.0,
            "Region": "WestUs",
            "ScheduledStandbySettings": {
              "IsEnabled": false,
              "ScheduleList": null
            },
            "StandbyServers": 1.0,
            "Status": "Deployed"
          }
        ]
      },
      {
        "BuildId": "9968f71f-f3ec-49df-82d7-d00b12c92e12",
        "BuildName": "UpdatedBuildname",
        "CreationTime": "2020-11-17T23:25:02.492Z",
        "Metadata": {},
        "RegionConfigurations": [
          {
            "CurrentServerStats": {
              "Active": 0.0,
              "Propping": 0.0,
              "StandingBy": 1.0,
              "Total": 1.0
            },
            "DynamicStandbySettings": {
              "DynamicFloorMultiplierThresholds": null,
              "IsEnabled": false,
              "RampDownSeconds": null
            },
            "MaxServers": 2.0,
            "Region": "WestUs",
            "ScheduledStandbySettings": {
              "IsEnabled": false,
              "ScheduleList": null
            },
            "StandbyServers": 1.0,
            "Status": "Deployed"
          },
          {
            "CurrentServerStats": {
              "Active": 0.0,
              "Propping": 0.0,
              "StandingBy": 1.0,
              "Total": 1.0
            },
            "DynamicStandbySettings": {
              "DynamicFloorMultiplierThresholds": null,
              "IsEnabled": false,
              "RampDownSeconds": null
            },
            "MaxServers": 2.0,
            "Region": "AustraliaEast",
            "ScheduledStandbySettings": {
              "IsEnabled": false,
              "ScheduleList": null
            },
            "StandbyServers": 1.0,
            "Status": "Deployed"
          }
        ]
      }
    ]
    "PageSize": 2.0,
    "SkipToken": null
  },
  "Status": "OK"
}
.Example
PS C:\> Get-PfBuild -BuildId 9968f71f-f3ec-49df-82d7-d00b12c92e12 | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "AreAssetsReadonly": false,
    "BuildId": "9968f71f-f3ec-49df-82d7-d00b12c92e12",
    "BuildName": "UpdatedBuildname",
    "BuildStatus": "Deployed",
    "ContainerFlavor": "CustomLinux",
    "ContainerRunCommand": "",
    "CreationTime": "2020-11-17T23:25:02.492Z",
    "CustomGameContainerImage": {
      "ImageName": "openarena",
      "Tag": "0.1"
    },
    "GameAssetReferences": [],
    "GameCertificateReferences": [],
    "InstrumentationConfiguration": {
      "ProcessesToMonitor": null
    },
    "Metadata": {},
    "MultiplayerServerCountPerVM": 1.0,
    "OSPlatform": "Linux",
    "Ports": [
      {
        "Name": "udp",
        "Num": 27960.0,
        "Protocol": "UDP"
      }
    ],
    "RegionConfigurations": [
      {
        "CurrentServerStats": {
          "Active": 0.0,
          "Propping": 0.0,
          "StandingBy": 1.0,
          "Total": 1.0
        },
        "DynamicStandbySettings": {
          "DynamicFloorMultiplierThresholds": null,
          "IsEnabled": false,
          "RampDownSeconds": null
        },
        "MaxServers": 2.0,
        "Region": "WestUs",
        "ScheduledStandbySettings": {
          "IsEnabled": false,
          "ScheduleList": null
        },
        "StandbyServers": 1.0,
        "Status": "Deployed"
      },
      {
        "CurrentServerStats": {
          "Active": 0.0,
          "Propping": 0.0,
          "StandingBy": 1.0,
          "Total": 1.0
        },
        "DynamicStandbySettings": {
          "DynamicFloorMultiplierThresholds": null,
          "IsEnabled": false,
          "RampDownSeconds": null
        },
        "MaxServers": 2.0,
        "Region": "AustraliaEast",
        "ScheduledStandbySettings": {
          "IsEnabled": false,
          "ScheduleList": null
        },
        "StandbyServers": 1.0,
        "Status": "Deployed"
      }
    ],
    "ServerType": "Container",
    "StartMultiplayerServerCommand": null,
    "UseStreamingForAssetDownloads": false,
    "VMSize": "Standard_D2_v2"
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IGetBuildRequest
.Inputs
PlayFab.Multiplayer.Models.IListBuildSummariesRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents1Ss7K7IResponsesGetbuildresponseContentApplicationJsonSchema
.Outputs
PlayFab.Multiplayer.Models.IComponents5B91ZxResponsesListbuildsummariesresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
GETBUILDREQUEST <IGetBuildRequest>: Returns the details about a multiplayer server build.
  BuildId <String>: The guid string build ID of the build to get.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
 
LISTBUILDSUMMARIESREQUEST <IListBuildSummariesRequest>: Returns a list of summarized details of all multiplayer server builds for a title.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [PageSize <Single?>]: The page size for the request.
  [SkipToken <String>]: The skip token for the paged request.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfbuild
#>

function Get-PfBuild {
[OutputType([PlayFab.Multiplayer.Models.IComponents1Ss7K7IResponsesGetbuildresponseContentApplicationJsonSchema], [PlayFab.Multiplayer.Models.IComponents5B91ZxResponsesListbuildsummariesresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='ListExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Get', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGetBuildRequest]
    # Returns the details about a multiplayer server build.
    # To construct, see NOTES section for GETBUILDREQUEST properties and create a hash table.
    ${GetBuildRequest},

    [Parameter(ParameterSetName='GetExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string build ID of the build to get.
    ${BuildId},

    [Parameter(ParameterSetName='GetExpanded')]
    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='List', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IListBuildSummariesRequest]
    # Returns a list of summarized details of all multiplayer server builds for a title.
    # To construct, see NOTES section for LISTBUILDSUMMARIESREQUEST properties and create a hash table.
    ${ListBuildSummariesRequest},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Single]
    # The page size for the request.
    ${PageSize},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The skip token for the paged request.
    ${SkipToken},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'PlayFabMultiplayerApi.private\Get-PfBuild_Get';
            GetExpanded = 'PlayFabMultiplayerApi.private\Get-PfBuild_GetExpanded';
            List = 'PlayFabMultiplayerApi.private\Get-PfBuild_List';
            ListExpanded = 'PlayFabMultiplayerApi.private\Get-PfBuild_ListExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Lists multiplayer server game certificates for a title.
.Description
Lists multiplayer server game certificates for a title.
.Example
PS C:\> Get-PfCertificateSummary | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "CertificateSummaries": [
      {
        "Name": "BLionRelayCert",
        "Thumbprint": "04B4B4CDBCD92FDD1114C43C666713B101D10883"
      },
      {
        "Name": "BumblelionRelayCert",
        "Thumbprint": "04B4B4CDBCD92FDD1114C43C666713B101D10883"
      },
      {
        "Name": "BumblelionRelayCertTest",
        "Thumbprint": "10A883F359B421AEDA1C94780D68B61BF3BCB332"
      },
      {
        "Name": "BumblelionRelayTemp2c",
        "Thumbprint": "6F3F3888D01099F2D74D82BEFD4F1CC44627CA7B"
      },
      {
        "Name": "BumblelionRelayTemp2d",
        "Thumbprint": "BEA12A7C730C1CC7B579A45AB43BA43E752EE3B0"
      },
      {
        "Name": "xcloudpasswordtest",
        "Thumbprint": "C6B0FF39BB838B7CC00733E02CFEEE1826CB1434"
      }
    ],
    "PageSize": 6.0,
    "SkipToken": null
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IListCertificateSummariesRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsZfufn7ResponsesListcertificatesummariesresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
LISTCERTIFICATESUMMARIESREQUEST <IListCertificateSummariesRequest>: Returns a list of multiplayer server game certificates for a title.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [PageSize <Single?>]: The page size for the request.
  [SkipToken <String>]: The skip token for the paged request.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfcertificatesummary
#>

function Get-PfCertificateSummary {
[OutputType([PlayFab.Multiplayer.Models.IComponentsZfufn7ResponsesListcertificatesummariesresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='ListExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='List', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IListCertificateSummariesRequest]
    # Returns a list of multiplayer server game certificates for a title.
    # To construct, see NOTES section for LISTCERTIFICATESUMMARIESREQUEST properties and create a hash table.
    ${ListCertificateSummariesRequest},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Single]
    # The page size for the request.
    ${PageSize},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The skip token for the paged request.
    ${SkipToken},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            List = 'PlayFabMultiplayerApi.private\Get-PfCertificateSummary_List';
            ListExpanded = 'PlayFabMultiplayerApi.private\Get-PfCertificateSummary_ListExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Lists the tags for a custom container image.
.Description
Lists the tags for a custom container image.
.Example
PS C:\> Get-PfContainerImageTag -ImageName exampleContainer | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "Tags": [
      "0.1",
      "0.2",
      "0.3",
      "0.4"
    ]
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IListContainerImageTagsRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents1Y9Ri2TResponsesListcontainerimagetagsresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
LISTCONTAINERIMAGETAGSREQUEST <IListContainerImageTagsRequest>: Returns a list of the tags for a particular container image that exists in the container registry for a title.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [ImageName <String>]: The container images we want to list tags for.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfcontainerimagetag
#>

function Get-PfContainerImageTag {
[OutputType([PlayFab.Multiplayer.Models.IComponents1Y9Ri2TResponsesListcontainerimagetagsresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='ListExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='List', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IListContainerImageTagsRequest]
    # Returns a list of the tags for a particular container image that exists in the container registry for a title.
    # To construct, see NOTES section for LISTCONTAINERIMAGETAGSREQUEST properties and create a hash table.
    ${ListContainerImageTagsRequest},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The container images we want to list tags for.
    ${ImageName},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            List = 'PlayFabMultiplayerApi.private\Get-PfContainerImageTag_List';
            ListExpanded = 'PlayFabMultiplayerApi.private\Get-PfContainerImageTag_ListExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Lists custom container images for a title.
.Description
Lists custom container images for a title.
.Example
PS C:\> Get-PfContainerImage | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "Images": [
      "openarena",
      "sago007/openarena"
    ],
    "PageSize": 2.0,
    "SkipToken": null
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IListContainerImagesRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents10N9Lc5ResponsesListcontainerimagesresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
LISTCONTAINERIMAGESREQUEST <IListContainerImagesRequest>: Returns a list of the container images that have been uploaded to the container registry for a title.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [PageSize <Single?>]: The page size for the request.
  [SkipToken <String>]: The skip token for the paged request.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfcontainerimage
#>

function Get-PfContainerImage {
[OutputType([PlayFab.Multiplayer.Models.IComponents10N9Lc5ResponsesListcontainerimagesresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='ListExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='List', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IListContainerImagesRequest]
    # Returns a list of the container images that have been uploaded to the container registry for a title.
    # To construct, see NOTES section for LISTCONTAINERIMAGESREQUEST properties and create a hash table.
    ${ListContainerImagesRequest},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Single]
    # The page size for the request.
    ${PageSize},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The skip token for the paged request.
    ${SkipToken},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            List = 'PlayFabMultiplayerApi.private\Get-PfContainerImage_List';
            ListExpanded = 'PlayFabMultiplayerApi.private\Get-PfContainerImage_ListExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Gets the credentials to the container registry.
.Description
Gets the credentials to the container registry.
.Example
PS C:\> Get-PfContainerRegistryCredentials | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "DnsName": "example.azurecr.io",
    "Password": "password",
    "Username": "exampleUsername"
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IGetContainerRegistryCredentialsRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents14N65SuResponsesGetcontainerregistrycredentialsresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
GETCONTAINERREGISTRYCREDENTIALSREQUEST <IGetContainerRegistryCredentialsRequest>: Gets credentials to the container registry where game developers can upload custom container images to before creating a new build.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfcontainerregistrycredentials
#>

function Get-PfContainerRegistryCredentials {
[OutputType([PlayFab.Multiplayer.Models.IComponents14N65SuResponsesGetcontainerregistrycredentialsresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='GetExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Get', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGetContainerRegistryCredentialsRequest]
    # Gets credentials to the container registry where game developers can upload custom container images to before creating a new build.
    # To construct, see NOTES section for GETCONTAINERREGISTRYCREDENTIALSREQUEST properties and create a hash table.
    ${GetContainerRegistryCredentialsRequest},

    [Parameter(ParameterSetName='GetExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'PlayFabMultiplayerApi.private\Get-PfContainerRegistryCredentials_Get';
            GetExpanded = 'PlayFabMultiplayerApi.private\Get-PfContainerRegistryCredentials_GetExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Gets multiplayer server logs after a server has terminated.
.Description
Gets multiplayer server logs after a server has terminated.
.Example
PS C:\> Get-PfMultiplayerServerLog -ServerId ad1be2a22073d5eafe58e01fdb4ff0833147adc118aaa4aef35086bb08b95d6c | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "LogDownloadUrl": "https://example.blob.core.windows.net/gamelogs/example"
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IGetMultiplayerServerLogsRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsZjlt10ResponsesGetmultiplayerserverlogsresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
GETMULTIPLAYERSERVERLOGSREQUEST <IGetMultiplayerServerLogsRequest>: Gets multiplayer server logs for a specific server id in a region. The logs are available only after a server has terminated.
  ServerId <String>: The server ID of multiplayer server to get logs for.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfmultiplayerserverlog
#>

function Get-PfMultiplayerServerLog {
[OutputType([PlayFab.Multiplayer.Models.IComponentsZjlt10ResponsesGetmultiplayerserverlogsresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='GetExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Get', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGetMultiplayerServerLogsRequest]
    # Gets multiplayer server logs for a specific server id in a region.
    # The logs are available only after a server has terminated.
    # To construct, see NOTES section for GETMULTIPLAYERSERVERLOGSREQUEST properties and create a hash table.
    ${GetMultiplayerServerLogsRequest},

    [Parameter(ParameterSetName='GetExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The server ID of multiplayer server to get logs for.
    ${ServerId},

    [Parameter(ParameterSetName='GetExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'PlayFabMultiplayerApi.private\Get-PfMultiplayerServerLog_Get';
            GetExpanded = 'PlayFabMultiplayerApi.private\Get-PfMultiplayerServerLog_GetExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Gets multiplayer server session details for a build.
.Description
Gets multiplayer server session details for a build.
.Example
PS C:\> Get-PfMultiplayerServer -BuildId 9968f71f-f3ec-49df-82d7-d00b12c92e12 -Region AustraliaEast | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "MultiplayerServerSummaries": [
      {
        "ConnectedPlayers": [],
        "LastStateTransitionTime": "2021-02-12T15:25:17.395Z",
        "Region": "AustraliaEast",
        "ServerId": "02246a097e116ff57bea1ab4f182be8fa4920e4f950742b1919c78a3d011a7a0",
        "SessionId": null,
        "State": "StandingBy",
        "VMId": "xcloudeau4u4yyxj4xymu:AustraliaEast:1E03_976a4cde-cb5a-4423-975f-d8e22e5815ce:tvmps_811b1b0c219bc46f14d5ded077063e2e4b4096072238c3649f2642aa7a9d32ff_d"
      },
      {
      "ConnectedPlayers": [],
      "LastStateTransitionTime": "2021-02-08T22:30:54.261Z",
      "Region": "AustraliaEast",
      "ServerId": "19339cb1cff398dc3f5ec9f517a8bf7b12d506fe06348e7642b7ec31ada4b3fd",
      "SessionId": "0352cf0f-2e7a-4aee-801d-7f27f8344c77",
      "State": "Active",
      "VMId": "xcloudeau4u4yyxj4xymu:AustraliaEast:1E03_976a4cde-cb5a-4423-975f-d8e22e5815ce:tvmps_f12e69e1d9bd29bd0dc0a8ba65e251f0eb739c93c541baee571fd289bcb1a1f2_d"
    }
    ],
    "PageSize": 1.0,
    "SkipToken": null
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IGetMultiplayerServerDetailsRequest
.Inputs
PlayFab.Multiplayer.Models.IListMultiplayerServersRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents12QgathResponsesListmultiplayerserversresponseContentApplicationJsonSchema
.Outputs
PlayFab.Multiplayer.Models.IComponents1P1Mp4RResponsesGetmultiplayerserverdetailsresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
GETMULTIPLAYERSERVERDETAILSREQUEST <IGetMultiplayerServerDetailsRequest>: Gets multiplayer server session details for a build in a specific region.
  SessionId <String>: The title generated guid string session ID of the multiplayer server to get details for. This is to keep track of multiplayer server sessions.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
 
LISTMULTIPLAYERSERVERSREQUEST <IListMultiplayerServersRequest>: Returns a list of multiplayer servers for a build in a specific region.
  BuildId <String>: The guid string build ID of the multiplayer servers to list.
  Region <String>: The region the multiplayer servers to list.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [PageSize <Single?>]: The page size for the request.
  [SkipToken <String>]: The skip token for the paged request.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfmultiplayerserver
#>

function Get-PfMultiplayerServer {
[OutputType([PlayFab.Multiplayer.Models.IComponents1P1Mp4RResponsesGetmultiplayerserverdetailsresponseContentApplicationJsonSchema], [PlayFab.Multiplayer.Models.IComponents12QgathResponsesListmultiplayerserversresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='GetExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Get', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGetMultiplayerServerDetailsRequest]
    # Gets multiplayer server session details for a build in a specific region.
    # To construct, see NOTES section for GETMULTIPLAYERSERVERDETAILSREQUEST properties and create a hash table.
    ${GetMultiplayerServerDetailsRequest},

    [Parameter(ParameterSetName='GetExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The title generated guid string session ID of the multiplayer server to get details for.
    # This is to keep track of multiplayer server sessions.
    ${SessionId},

    [Parameter(ParameterSetName='GetExpanded')]
    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='List', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IListMultiplayerServersRequest]
    # Returns a list of multiplayer servers for a build in a specific region.
    # To construct, see NOTES section for LISTMULTIPLAYERSERVERSREQUEST properties and create a hash table.
    ${ListMultiplayerServersRequest},

    [Parameter(ParameterSetName='ListExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string build ID of the multiplayer servers to list.
    ${BuildId},

    [Parameter(ParameterSetName='ListExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The region the multiplayer servers to list.
    ${Region},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Single]
    # The page size for the request.
    ${PageSize},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The skip token for the paged request.
    ${SkipToken},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'PlayFabMultiplayerApi.private\Get-PfMultiplayerServer_Get';
            GetExpanded = 'PlayFabMultiplayerApi.private\Get-PfMultiplayerServer_GetExpanded';
            List = 'PlayFabMultiplayerApi.private\Get-PfMultiplayerServer_List';
            ListExpanded = 'PlayFabMultiplayerApi.private\Get-PfMultiplayerServer_ListExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Gets multiplayer server logs after a server has terminated.
.Description
Gets multiplayer server logs after a server has terminated.
.Example
PS C:\> Get-PfMultiplayerSessionLog -SessionId 02bdef0e-e01e-4b29-8efe-ff9f47a06d8c | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "LogDownloadUrl": "https://example.blob.core.windows.net/gamelogs/example"
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IGetMultiplayerSessionLogsBySessionIdRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsZjlt10ResponsesGetmultiplayerserverlogsresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
GETMULTIPLAYERSESSIONLOGSBYSESSIONIDREQUEST <IGetMultiplayerSessionLogsBySessionIdRequest>: Gets multiplayer server logs for a specific server id in a region. The logs are available only after a server has terminated.
  SessionId <String>: The server ID of multiplayer server to get logs for.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfmultiplayersessionlog
#>

function Get-PfMultiplayerSessionLog {
[OutputType([PlayFab.Multiplayer.Models.IComponentsZjlt10ResponsesGetmultiplayerserverlogsresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='GetExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Get', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGetMultiplayerSessionLogsBySessionIdRequest]
    # Gets multiplayer server logs for a specific server id in a region.
    # The logs are available only after a server has terminated.
    # To construct, see NOTES section for GETMULTIPLAYERSESSIONLOGSBYSESSIONIDREQUEST properties and create a hash table.
    ${GetMultiplayerSessionLogsBySessionIdRequest},

    [Parameter(ParameterSetName='GetExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The server ID of multiplayer server to get logs for.
    ${SessionId},

    [Parameter(ParameterSetName='GetExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'PlayFabMultiplayerApi.private\Get-PfMultiplayerSessionLog_Get';
            GetExpanded = 'PlayFabMultiplayerApi.private\Get-PfMultiplayerSessionLog_GetExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Lists quality of service servers for party.
.Description
Lists quality of service servers for party.
.Example
PS C:\> Get-PfPartyQosServer | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "PageSize": 6.0,
    "QosServers": [
      {
        "Region": "WestUs",
        "ServerUrl": "pfmsqosprod.westus.cloudapp.azure.com"
      },
      {
        "Region": "SouthCentralUs",
        "ServerUrl": "xblcxplatqos-scus-9-18-2-0.cloudapp.net"
      },
      {
        "Region": "CentralUs",
        "ServerUrl": "xblcxplatqos-cus-9-18-2-0.cloudapp.net"
      },
      {
        "Region": "NorthCentralUs",
        "ServerUrl": "pfmsqosprod.northcentralus.cloudapp.azure.com"
      },
      {
        "Region": "EastUs",
        "ServerUrl": "xblcxplatqos-eus-9-18-2-0.cloudapp.net"
      },
      {
        "Region": "EastUs2",
        "ServerUrl": "pfmsqosprod.eastus2.cloudapp.azure.com"
      }
    ],
    "SkipToken": null
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IListPartyQosServersRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsAwzw9QResponsesListpartyqosserversresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
LISTPARTYQOSSERVERSREQUEST <IListPartyQosServersRequest>: Returns a list of quality of service servers for party.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfpartyqosserver
#>

function Get-PfPartyQosServer {
[OutputType([PlayFab.Multiplayer.Models.IComponentsAwzw9QResponsesListpartyqosserversresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='ListExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='List', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IListPartyQosServersRequest]
    # Returns a list of quality of service servers for party.
    # To construct, see NOTES section for LISTPARTYQOSSERVERSREQUEST properties and create a hash table.
    ${ListPartyQosServersRequest},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            List = 'PlayFabMultiplayerApi.private\Get-PfPartyQosServer_List';
            ListExpanded = 'PlayFabMultiplayerApi.private\Get-PfPartyQosServer_ListExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Lists quality of service servers for the title.
By default, servers are only returned for regions where a Multiplayer Servers build has been deployed.
.Description
Lists quality of service servers for the title.
By default, servers are only returned for regions where a Multiplayer Servers build has been deployed.
.Example
PS C:\> Get-PfQosServer | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "PageSize": 3.0,
    "QosServers": [
      {
        "Region": "SouthCentralUs",
        "ServerUrl": "xblcxplatqos-scus-9-18-2-0.cloudapp.net"
      },
      {
        "Region": "WestUs",
        "ServerUrl": "pfmsqosprod.westus.cloudapp.azure.com"
      },
      {
        "Region": "AustraliaEast",
        "ServerUrl": "pfmsqosprod.australiaeast.cloudapp.azure.com"
      }
    ],
    "SkipToken": null
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IListQosServersForTitleRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents1FqnmfdResponsesListqosserversfortitleresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
LISTQOSSERVERSFORTITLEREQUEST <IListQosServersForTitleRequest>: Returns a list of quality of service servers for a title.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [IncludeAllRegions <Boolean?>]: Indicates that the response should contain Qos servers for all regions, including those where there are no builds deployed for the title.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfqosserver
#>

function Get-PfQosServer {
[OutputType([PlayFab.Multiplayer.Models.IComponents1FqnmfdResponsesListqosserversfortitleresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='ListExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='List', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IListQosServersForTitleRequest]
    # Returns a list of quality of service servers for a title.
    # To construct, see NOTES section for LISTQOSSERVERSFORTITLEREQUEST properties and create a hash table.
    ${ListQosServersForTitleRequest},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Indicates that the response should contain Qos servers for all regions, including those where there are no builds deployed for the title.
    ${IncludeAllRegions},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            List = 'PlayFabMultiplayerApi.private\Get-PfQosServer_List';
            ListExpanded = 'PlayFabMultiplayerApi.private\Get-PfQosServer_ListExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Gets a remote login endpoint to a VM that is hosting a multiplayer server build.
.Description
Gets a remote login endpoint to a VM that is hosting a multiplayer server build.
.Example
PS C:\> Get-PfRemoteLoginEndpoint -BuildId 9968f71f-f3ec-49df-82d7-d00b12c92e12 -Region AustraliaEast -VMId xcloudeau4u4yyxj4xymu:AustraliaEast:1E03_976a4cde-cb5a-4423-975f-d8e22e5815ce:tvmps_f12e69e1d9bd29bd0dc0a8ba65e251f0eb739c93c541baee571fd289bcb1a1f2_d | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "Ipv4Address": "20.53.71.180",
    "Port": 50000.0
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IGetRemoteLoginEndpointRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsVicviwResponsesGetremoteloginendpointresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
GETREMOTELOGINENDPOINTREQUEST <IGetRemoteLoginEndpointRequest>: Gets a remote login endpoint to a VM that is hosting a multiplayer server build in a specific region.
  BuildId <String>: The guid string build ID of the multiplayer server to get remote login information for.
  Region <String>: The region of the multiplayer server to get remote login information for.
  VMId <String>: The virtual machine ID the multiplayer server is located on.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfremoteloginendpoint
#>

function Get-PfRemoteLoginEndpoint {
[OutputType([PlayFab.Multiplayer.Models.IComponentsVicviwResponsesGetremoteloginendpointresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='GetExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Get', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGetRemoteLoginEndpointRequest]
    # Gets a remote login endpoint to a VM that is hosting a multiplayer server build in a specific region.
    # To construct, see NOTES section for GETREMOTELOGINENDPOINTREQUEST properties and create a hash table.
    ${GetRemoteLoginEndpointRequest},

    [Parameter(ParameterSetName='GetExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string build ID of the multiplayer server to get remote login information for.
    ${BuildId},

    [Parameter(ParameterSetName='GetExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The region of the multiplayer server to get remote login information for.
    ${Region},

    [Parameter(ParameterSetName='GetExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The virtual machine ID the multiplayer server is located on.
    ${VMId},

    [Parameter(ParameterSetName='GetExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'PlayFabMultiplayerApi.private\Get-PfRemoteLoginEndpoint_Get';
            GetExpanded = 'PlayFabMultiplayerApi.private\Get-PfRemoteLoginEndpoint_GetExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Gets the status of whether a title is enabled for the multiplayer server feature.
.Description
Gets the status of whether a title is enabled for the multiplayer server feature.
.Example
PS C:\> Get-PfTitleEnabled | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "Status": "Enabled"
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IGetTitleEnabledForMultiplayerServersStatusRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents1J8KyqoResponsesGettitleenabledformultiplayerserversstatusresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
GETTITLEENABLEDFORMULTIPLAYERSERVERSSTATUSREQUEST <IGetTitleEnabledForMultiplayerServersStatusRequest>: Gets the status of whether a title is enabled for the multiplayer server feature. The enabled status can be Initializing, Enabled, and Disabled.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pftitleenabled
#>

function Get-PfTitleEnabled {
[OutputType([PlayFab.Multiplayer.Models.IComponents1J8KyqoResponsesGettitleenabledformultiplayerserversstatusresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='GetExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Get', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGetTitleEnabledForMultiplayerServersStatusRequest]
    # Gets the status of whether a title is enabled for the multiplayer server feature.
    # The enabled status can be Initializing, Enabled, and Disabled.
    # To construct, see NOTES section for GETTITLEENABLEDFORMULTIPLAYERSERVERSSTATUSREQUEST properties and create a hash table.
    ${GetTitleEnabledForMultiplayerServersStatusRequest},

    [Parameter(ParameterSetName='GetExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'PlayFabMultiplayerApi.private\Get-PfTitleEnabled_Get';
            GetExpanded = 'PlayFabMultiplayerApi.private\Get-PfTitleEnabled_GetExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Gets a title's server quota change request.
.Description
Gets a title's server quota change request.
.Example
PS C:\> {{ Add code here }}
 
{{ Add output here }}
.Example
PS C:\> {{ Add code here }}
 
{{ Add output here }}
 
.Inputs
PlayFab.Multiplayer.Models.IGetTitleMultiplayerServersQuotaChangeRequest
.Inputs
PlayFab.Multiplayer.Models.IListTitleMultiplayerServersQuotaChangesRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents1Pfedf1ResponsesGettitlemultiplayerserversquotachangeresponseContentApplicationJsonSchema
.Outputs
PlayFab.Multiplayer.Models.IComponents1Up6CpyResponsesListtitlemultiplayerserversquotachangesresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
GETTITLEMULTIPLAYERSERVERSQUOTACHANGEREQUEST <IGetTitleMultiplayerServersQuotaChangeRequest>: Gets a title's server quota change request.
  RequestId <String>: Id of the change request to get.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
 
LISTTITLEMULTIPLAYERSERVERSQUOTACHANGESREQUEST <IListTitleMultiplayerServersQuotaChangesRequest>: List all server quota change requests for a title.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pftitlemultiplayerserverquotachange
#>

function Get-PfTitleMultiplayerServerQuotaChange {
[OutputType([PlayFab.Multiplayer.Models.IComponents1Pfedf1ResponsesGettitlemultiplayerserversquotachangeresponseContentApplicationJsonSchema], [PlayFab.Multiplayer.Models.IComponents1Up6CpyResponsesListtitlemultiplayerserversquotachangesresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='ListExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Get', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGetTitleMultiplayerServersQuotaChangeRequest]
    # Gets a title's server quota change request.
    # To construct, see NOTES section for GETTITLEMULTIPLAYERSERVERSQUOTACHANGEREQUEST properties and create a hash table.
    ${GetTitleMultiplayerServersQuotaChangeRequest},

    [Parameter(ParameterSetName='GetExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # Id of the change request to get.
    ${RequestId},

    [Parameter(ParameterSetName='GetExpanded')]
    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='List', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IListTitleMultiplayerServersQuotaChangesRequest]
    # List all server quota change requests for a title.
    # To construct, see NOTES section for LISTTITLEMULTIPLAYERSERVERSQUOTACHANGESREQUEST properties and create a hash table.
    ${ListTitleMultiplayerServersQuotaChangesRequest},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'PlayFabMultiplayerApi.private\Get-PfTitleMultiplayerServerQuotaChange_Get';
            GetExpanded = 'PlayFabMultiplayerApi.private\Get-PfTitleMultiplayerServerQuotaChange_GetExpanded';
            List = 'PlayFabMultiplayerApi.private\Get-PfTitleMultiplayerServerQuotaChange_List';
            ListExpanded = 'PlayFabMultiplayerApi.private\Get-PfTitleMultiplayerServerQuotaChange_ListExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Gets the quotas for a title in relation to multiplayer servers.
.Description
Gets the quotas for a title in relation to multiplayer servers.
.Example
PS C:\> Get-PfTitleMultiplayerServerQuota | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "Quota": {
      "CoreCapacities": [
        {
          "Available": 64.0,
          "Region": "EastUs",
          "Total": 64.0,
          "VMFamily": "Av2"
        },
        {
          "Available": 1024.0,
          "Region": "NorthCentralUs",
          "Total": 1024.0,
          "VMFamily": "Dv2"
        },
        {
          "Available": 64.0,
          "Region": "WestEurope",
          "Total": 64.0,
          "VMFamily": "F"
        },
        {
          "Available": 16.0,
          "Region": "WestEurope",
          "Total": 16.0,
          "VMFamily": "Fsv2"
        },
        {
          "Available": 598.0,
          "Region": "WestUs",
          "Total": 600.0,
          "VMFamily": "Dasv4"
        }
      ]
    }
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IGetTitleMultiplayerServersQuotasRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents1Vit3ZResponsesGettitlemultiplayerserversquotasresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
GETTITLEMULTIPLAYERSERVERSQUOTASREQUEST <IGetTitleMultiplayerServersQuotasRequest>: Gets the quotas for a title in relation to multiplayer servers.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pftitlemultiplayerserverquota
#>

function Get-PfTitleMultiplayerServerQuota {
[OutputType([PlayFab.Multiplayer.Models.IComponents1Vit3ZResponsesGettitlemultiplayerserversquotasresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='GetExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Get', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGetTitleMultiplayerServersQuotasRequest]
    # Gets the quotas for a title in relation to multiplayer servers.
    # To construct, see NOTES section for GETTITLEMULTIPLAYERSERVERSQUOTASREQUEST properties and create a hash table.
    ${GetTitleMultiplayerServersQuotasRequest},

    [Parameter(ParameterSetName='GetExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Get = 'PlayFabMultiplayerApi.private\Get-PfTitleMultiplayerServerQuota_Get';
            GetExpanded = 'PlayFabMultiplayerApi.private\Get-PfTitleMultiplayerServerQuota_GetExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Lists virtual machines for a title.
.Description
Lists virtual machines for a title.
.Example
PS C:\> Get-PfVirtualMachineSummary -BuildId 9968f71f-f3ec-49df-82d7-d00b12c92e12 -Region AustraliaEast | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "PageSize": 2.0,
    "SkipToken": null,
    "VirtualMachines": [
      {
        "HealthStatus": "Healthy",
        "State": "Running",
        "VMId": "xcloudeau4u4yyxj4xymu:AustraliaEast:1E03_976a4cde-cb5a-4423-975f-d8e22e5815ce:tvmps_811b1b0c219bc46f14d5ded077063e2e4b4096072238c3649f2642aa7a9d32ff_d"
      },
      {
        "HealthStatus": "Healthy",
        "State": "Running",
        "VMId": "xcloudeau4u4yyxj4xymu:AustraliaEast:1E03_976a4cde-cb5a-4423-975f-d8e22e5815ce:tvmps_f12e69e1d9bd29bd0dc0a8ba65e251f0eb739c93c541baee571fd289bcb1a1f2_d"
      }
    ]
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IListVirtualMachineSummariesRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents1Oxvs1QResponsesListvirtualmachinesummariesresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
LISTVIRTUALMACHINESUMMARIESREQUEST <IListVirtualMachineSummariesRequest>: Returns a list of virtual machines for a title.
  BuildId <String>: The guid string build ID of the virtual machines to list.
  Region <String>: The region of the virtual machines to list.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [PageSize <Single?>]: The page size for the request.
  [SkipToken <String>]: The skip token for the paged request.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/get-pfvirtualmachinesummary
#>

function Get-PfVirtualMachineSummary {
[OutputType([PlayFab.Multiplayer.Models.IComponents1Oxvs1QResponsesListvirtualmachinesummariesresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='ListExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='List', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IListVirtualMachineSummariesRequest]
    # Returns a list of virtual machines for a title.
    # To construct, see NOTES section for LISTVIRTUALMACHINESUMMARIESREQUEST properties and create a hash table.
    ${ListVirtualMachineSummariesRequest},

    [Parameter(ParameterSetName='ListExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string build ID of the virtual machines to list.
    ${BuildId},

    [Parameter(ParameterSetName='ListExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The region of the virtual machines to list.
    ${Region},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Single]
    # The page size for the request.
    ${PageSize},

    [Parameter(ParameterSetName='ListExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The skip token for the paged request.
    ${SkipToken},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            List = 'PlayFabMultiplayerApi.private\Get-PfVirtualMachineSummary_List';
            ListExpanded = 'PlayFabMultiplayerApi.private\Get-PfVirtualMachineSummary_ListExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Untags a container image.
.Description
Untags a container image.
.Example
PS C:\> Invoke-PfImageUntagContainer -ImageName exampleContainerImage -Tag 0.1 | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {},
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IUntagContainerImageRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
UNTAGCONTAINERIMAGEREQUEST <IUntagContainerImageRequest>: Removes the specified tag from the image. After this operation, a 'docker pull' will fail for the specified image and tag combination. Morever, ListContainerImageTags will not return the specified tag.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [ImageName <String>]: The container image which tag we want to remove.
  [Tag <String>]: The tag we want to remove.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/invoke-pfimageuntagcontainer
#>

function Invoke-PfImageUntagContainer {
[OutputType([PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='ImageExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Image', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IUntagContainerImageRequest]
    # Removes the specified tag from the image.
    # After this operation, a 'docker pull' will fail for the specified image and tag combination.
    # Morever, ListContainerImageTags will not return the specified tag.
    # To construct, see NOTES section for UNTAGCONTAINERIMAGEREQUEST properties and create a hash table.
    ${UntagContainerImageRequest},

    [Parameter(ParameterSetName='ImageExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='ImageExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The container image which tag we want to remove.
    ${ImageName},

    [Parameter(ParameterSetName='ImageExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The tag we want to remove.
    ${Tag},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Image = 'PlayFabMultiplayerApi.private\Invoke-PfImageUntagContainer_Image';
            ImageExpanded = 'PlayFabMultiplayerApi.private\Invoke-PfImageUntagContainer_ImageExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Rolls over the credentials to the container registry.
.Description
Rolls over the credentials to the container registry.
.Example
PS C:\> Invoke-PfRolloverContainerRegistryCredentials | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "DnsName": "example.azurecr.io",
    "Password": "newPassword",
    "Username": "newUsername"
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IRolloverContainerRegistryCredentialsRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents1Xbtl3TResponsesRollovercontainerregistrycredentialsresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
ROLLOVERCONTAINERREGISTRYCREDENTIALSREQUEST <IRolloverContainerRegistryCredentialsRequest>: Gets new credentials to the container registry where game developers can upload custom container images to before creating a new build.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/invoke-pfrollovercontainerregistrycredentials
#>

function Invoke-PfRolloverContainerRegistryCredentials {
[OutputType([PlayFab.Multiplayer.Models.IComponents1Xbtl3TResponsesRollovercontainerregistrycredentialsresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='RolloverExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Rollover', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IRolloverContainerRegistryCredentialsRequest]
    # Gets new credentials to the container registry where game developers can upload custom container images to before creating a new build.
    # To construct, see NOTES section for ROLLOVERCONTAINERREGISTRYCREDENTIALSREQUEST properties and create a hash table.
    ${RolloverContainerRegistryCredentialsRequest},

    [Parameter(ParameterSetName='RolloverExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Rollover = 'PlayFabMultiplayerApi.private\Invoke-PfRolloverContainerRegistryCredentials_Rollover';
            RolloverExpanded = 'PlayFabMultiplayerApi.private\Invoke-PfRolloverContainerRegistryCredentials_RolloverExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Uploads a multiplayer server game certificate.
.Description
Uploads a multiplayer server game certificate.
.Example
PS C:\> $base64string = [Convert]::ToBase64String([IO.File]::ReadAllBytes('.\certificate.pfx'))
PS C:\> $gameCertificate = @{ Name = "MyCert"; Base64EncodedValue = $base64string; Password = "password" }
PS C:\> Invoke-PfUploadCertificate -GameCertificate $gameCertificate | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {},
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IUploadCertificateRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
GAMECERTIFICATE <ICertificate>: The game certificate to upload.
  Base64EncodedValue <String>: Base64 encoded string contents of the certificate.
  Name <String>: A name for the certificate. This is used to reference certificates in build configurations.
  [Password <String>]: If required for your PFX certificate, use this field to provide a password that will be used to install the certificate on the container.
 
UPLOADCERTIFICATEREQUEST <IUploadCertificateRequest>: Uploads a multiplayer server game certificate.
  GameCertificate <ICertificate>: The game certificate to upload.
    Base64EncodedValue <String>: Base64 encoded string contents of the certificate.
    Name <String>: A name for the certificate. This is used to reference certificates in build configurations.
    [Password <String>]: If required for your PFX certificate, use this field to provide a password that will be used to install the certificate on the container.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/invoke-pfuploadcertificate
#>

function Invoke-PfUploadCertificate {
[OutputType([PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='Upload', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Upload', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IUploadCertificateRequest]
    # Uploads a multiplayer server game certificate.
    # To construct, see NOTES section for UPLOADCERTIFICATEREQUEST properties and create a hash table.
    ${UploadCertificateRequest},

    [Parameter(ParameterSetName='UploadExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.ICertificate]
    # The game certificate to upload.
    # To construct, see NOTES section for GAMECERTIFICATE properties and create a hash table.
    ${GameCertificate},

    [Parameter(ParameterSetName='UploadExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Upload = 'PlayFabMultiplayerApi.private\Invoke-PfUploadCertificate_Upload';
            UploadExpanded = 'PlayFabMultiplayerApi.private\Invoke-PfUploadCertificate_UploadExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Creates a multiplayer server build alias.
.Description
Creates a multiplayer server build alias.
.Example
PS C:\> $buildWeightDistribution = @{ "9968f71f-f3ec-49df-82d7-d00b12c92e12" = 2; "0efadb18-8c62-42da-a7f9-4deec9bf47fd" = 3 }
PS C:\> New-PfBuildAlias -AliasName NewAliasName -BuildSelectionCriteria @(@{ "BuildWeightDistribution" = $buildWeightDistribution}) | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "AliasId": "38be54ef-a3e1-442e-8c3c-bbd2e8aa4503",
    "AliasName": "NewAliasName",
    "BuildSelectionCriteria": [
      {
        "BuildWeightDistribution": {
          "9968f71f-f3ec-49df-82d7-d00b12c92e12": 2,
          "0efadb18-8c62-42da-a7f9-4deec9bf47fd": 3
        }
      }
    ],
    "PageSize": 0.0,
    "SkipToken": null
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.ICreateBuildAliasRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents1Ola4KgResponsesBuildaliasdetailsresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BUILDSELECTIONCRITERIA <IBuildSelectionCriterion[]>: Array of build selection criteria.
  [BuildWeightDistribution <IAny>]: Dictionary of build ids and their respective weights for distribution of allocation requests.
 
CREATEBUILDALIASREQUEST <ICreateBuildAliasRequest>: Creates a multiplayer server build alias and returns the created alias.
  AliasName <String>: The alias name.
  [BuildSelectionCriteria <IBuildSelectionCriterion[]>]: Array of build selection criteria.
    [BuildWeightDistribution <IAny>]: Dictionary of build ids and their respective weights for distribution of allocation requests.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/new-pfbuildalias
#>

function New-PfBuildAlias {
[OutputType([PlayFab.Multiplayer.Models.IComponents1Ola4KgResponsesBuildaliasdetailsresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='CreateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Create', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.ICreateBuildAliasRequest]
    # Creates a multiplayer server build alias and returns the created alias.
    # To construct, see NOTES section for CREATEBUILDALIASREQUEST properties and create a hash table.
    ${CreateBuildAliasRequest},

    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The alias name.
    ${AliasName},

    [Parameter(ParameterSetName='CreateExpanded')]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IBuildSelectionCriterion[]]
    # Array of build selection criteria.
    # To construct, see NOTES section for BUILDSELECTIONCRITERIA properties and create a hash table.
    ${BuildSelectionCriteria},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Create = 'PlayFabMultiplayerApi.private\New-PfBuildAlias_Create';
            CreateExpanded = 'PlayFabMultiplayerApi.private\New-PfBuildAlias_CreateExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Creates a multiplayer server build with a custom container.
.Description
Creates a multiplayer server build with a custom container.
.Example
PS C:\> $ports = @( @{ Name = 'tcp_port'; Num = 8080; Protocol = 'TCP' }, @{ Name = 'udp_port'; Num = 8081; Protocol = 'UDP' } )
PS C:\> $regions = @( @{ 'MaxServers' = 20; 'Region' = 'AustraliaEast'; StandbyServers = 2; 'ScheduledStandbySettings' = $NULL } )
PS C:\> $containerImageReference = @{ ImageName = "openarena"; Tag = "0.2" }
PS C:\> New-PfBuildWithCustomContainer -BuildName ExampleBuild -ContainerFlavor CustomLinux -ContainerImageReference $containerImageReference -VMSize Standard_D2as_v4 -MultiplayerServerCountPerVM 2 -Ports $ports -RegionConfigurations $regions | ConvertTo-Json -depth 10
 
.Inputs
PlayFab.Multiplayer.Models.ICreateBuildWithCustomContainerRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsXnbwy4ResponsesCreatebuildwithcustomcontainerresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
CONTAINERIMAGEREFERENCE <IContainerImageReference>: The container reference, consisting of the image name and tag.
  ImageName <String>: The container image name.
  [Tag <String>]: The container tag.
 
CREATEBUILDWITHCUSTOMCONTAINERREQUEST <ICreateBuildWithCustomContainerRequest>: Creates a multiplayer server build with a custom container and returns information about the build creation request.
  BuildName <String>: The build name.
  MultiplayerServerCountPerVM <Single>: The number of multiplayer servers to host on a single VM.
  Ports <IPort[]>: The ports to map the build on.
    Name <String>: The name for the port.
    Num <Single>: The number for the port.
    Protocol <String>: The protocol for the port.
  RegionConfigurations <IBuildRegionParams[]>: The region configurations for the build.
    MaxServers <Single>: The maximum number of multiplayer servers for the region.
    Region <String>: The build region.
    StandbyServers <Single>: The number of standby multiplayer servers for the region.
    [DynamicStandbySettings <IDynamicStandbySettings>]: Optional settings to control dynamic adjustment of standby target. If not specified, dynamic standby is disabled
      IsEnabled <Boolean>: When true, dynamic standby will be enabled
      [DynamicFloorMultiplierThresholds <IDynamicStandbyThreshold[]>]: List of auto standing by trigger values and corresponding standing by multiplier. Defaults to 1.5X at 50%, 3X at 25%, and 4X at 5%
        Multiplier <Single>: When the trigger threshold is reached, multiply by this value
        TriggerThresholdPercentage <Single>: The multiplier will be applied when the actual standby divided by target standby floor is less than this value
      [RampDownSeconds <Single?>]: The time it takes to reduce target standing by to configured floor value after an increase. Defaults to 30 minutes
    [MultiplayerServerCountPerVM <Single?>]: Regional override for the number of multiplayer servers to host on a single VM of the build.
    [ScheduledStandbySettings <IScheduledStandbySettings>]: Optional settings to set the standby target to specified values during the supplied schedules
      IsEnabled <Boolean>: When true, scheduled standby will be enabled
      [ScheduleList <ISchedule[]>]: A list of non-overlapping schedules
        EndTime <String>: The date and time in UTC at which the schedule ends. If IsRecurringWeekly is true, this schedule will keep renewing for future weeks until disabled or removed.
        IsDisabled <Boolean>: Disables the schedule.
        IsRecurringWeekly <Boolean>: If true, the StartTime and EndTime will get renewed every week.
        StartTime <String>: The date and time in UTC at which the schedule starts.
        TargetStandby <Single>: The standby target to maintain for the duration of the schedule.
        [Description <String>]: A short description about this schedule. For example, "Game launch on July 15th".
    [VMSize <String>]: Regional override for the VM size the build was created on.
  [AreAssetsReadonly <Boolean?>]: When true, assets will not be copied for each server inside the VM. All serverswill run from the same set of assets, or will have the same assets mounted in the container.
  [ContainerFlavor <String>]: The flavor of container to create a build from.
  [ContainerImageReference <IContainerImageReference>]: The container reference, consisting of the image name and tag.
    ImageName <String>: The container image name.
    [Tag <String>]: The container tag.
  [ContainerRunCommand <String>]: The container command to run when the multiplayer server has been allocated, including any arguments.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [GameAssetReferences <IAssetReferenceParams[]>]: The list of game assets related to the build.
    FileName <String>: The asset's file name.
    [MountPath <String>]: The asset's mount path.
  [GameCertificateReferences <IGameCertificateReferenceParams[]>]: The game certificates for the build.
    GsdkAlias <String>: An alias for the game certificate. The game server will reference this alias via GSDK config to retrieve the game certificate. This alias is used as an identifier in game server code to allow a new certificate with different Name field to be uploaded without the need to change any game server code to reference the new Name.
    Name <String>: The name of the game certificate. This name should match the name of a certificate that was previously uploaded to this title.
  [LinuxInstrumentationConfiguration <ILinuxInstrumentationConfiguration>]: The Linux instrumentation configuration for the build.
    IsEnabled <Boolean>: Designates whether Linux instrumentation configuration will be enabled for this Build
  [Metadata <IAny>]: Metadata to tag the build. The keys are case insensitive. The build metadata is made available to the server through Game Server SDK (GSDK).Constraints: Maximum number of keys: 30, Maximum key length: 50, Maximum value length: 100
  [MonitoringApplicationConfiguration <IMonitoringApplicationConfigurationParams>]: The configuration for the monitoring application on the build
    AssetReference <IAssetReferenceParams>: Asset which contains the monitoring application files and scripts.
    ExecutionScriptName <String>: Execution script name, this will be the main executable for the monitoring application.
    [InstallationScriptName <String>]: Installation script name, this will be run before the ExecutionScript.
    [OnStartRuntimeInMinutes <Single?>]: Timespan the monitoring application will be kept alive when running from the start of the VM
  [ServerResourceConstraints <IServerResourceConstraintParams>]: The resource constraints to apply to each server on the VM (EXPERIMENTAL API)
    CpuLimit <Single>: The maximum number of cores that each server is allowed to use.
    MemoryLimitGb <Single>: The maximum number of GiB of memory that each server is allowed to use. WARNING: After exceeding this limit, the server will be killed
  [VMSize <String>]: The VM size to create the build on.
  [VMStartupScriptConfiguration <IVMStartupScriptParams>]: The configuration for the VmStartupScript for the build
    VMStartupScriptAssetReference <IAssetReferenceParams>: Asset which contains the VmStartupScript script and any other required files.
    [PortRequests <IVMStartupScriptPortRequestParams[]>]: Optional port requests (name/protocol) that will be used by the VmStartupScript. Max of 5 requests.
      Name <String>: The name for the port.
      Protocol <String>: The protocol for the port.
 
GAMEASSETREFERENCES <IAssetReferenceParams[]>: The list of game assets related to the build.
  FileName <String>: The asset's file name.
  [MountPath <String>]: The asset's mount path.
 
GAMECERTIFICATEREFERENCES <IGameCertificateReferenceParams[]>: The game certificates for the build.
  GsdkAlias <String>: An alias for the game certificate. The game server will reference this alias via GSDK config to retrieve the game certificate. This alias is used as an identifier in game server code to allow a new certificate with different Name field to be uploaded without the need to change any game server code to reference the new Name.
  Name <String>: The name of the game certificate. This name should match the name of a certificate that was previously uploaded to this title.
 
LINUXINSTRUMENTATIONCONFIGURATION <ILinuxInstrumentationConfiguration>: The Linux instrumentation configuration for the build.
  IsEnabled <Boolean>: Designates whether Linux instrumentation configuration will be enabled for this Build
 
MONITORINGAPPLICATIONCONFIGURATION <IMonitoringApplicationConfigurationParams>: The configuration for the monitoring application on the build
  AssetReference <IAssetReferenceParams>: Asset which contains the monitoring application files and scripts.
    FileName <String>: The asset's file name.
    [MountPath <String>]: The asset's mount path.
  ExecutionScriptName <String>: Execution script name, this will be the main executable for the monitoring application.
  [InstallationScriptName <String>]: Installation script name, this will be run before the ExecutionScript.
  [OnStartRuntimeInMinutes <Single?>]: Timespan the monitoring application will be kept alive when running from the start of the VM
 
PORTS <IPort[]>: The ports to map the build on.
  Name <String>: The name for the port.
  Num <Single>: The number for the port.
  Protocol <String>: The protocol for the port.
 
REGIONCONFIGURATIONS <IBuildRegionParams[]>: The region configurations for the build.
  MaxServers <Single>: The maximum number of multiplayer servers for the region.
  Region <String>: The build region.
  StandbyServers <Single>: The number of standby multiplayer servers for the region.
  [DynamicStandbySettings <IDynamicStandbySettings>]: Optional settings to control dynamic adjustment of standby target. If not specified, dynamic standby is disabled
    IsEnabled <Boolean>: When true, dynamic standby will be enabled
    [DynamicFloorMultiplierThresholds <IDynamicStandbyThreshold[]>]: List of auto standing by trigger values and corresponding standing by multiplier. Defaults to 1.5X at 50%, 3X at 25%, and 4X at 5%
      Multiplier <Single>: When the trigger threshold is reached, multiply by this value
      TriggerThresholdPercentage <Single>: The multiplier will be applied when the actual standby divided by target standby floor is less than this value
    [RampDownSeconds <Single?>]: The time it takes to reduce target standing by to configured floor value after an increase. Defaults to 30 minutes
  [MultiplayerServerCountPerVM <Single?>]: Regional override for the number of multiplayer servers to host on a single VM of the build.
  [ScheduledStandbySettings <IScheduledStandbySettings>]: Optional settings to set the standby target to specified values during the supplied schedules
    IsEnabled <Boolean>: When true, scheduled standby will be enabled
    [ScheduleList <ISchedule[]>]: A list of non-overlapping schedules
      EndTime <String>: The date and time in UTC at which the schedule ends. If IsRecurringWeekly is true, this schedule will keep renewing for future weeks until disabled or removed.
      IsDisabled <Boolean>: Disables the schedule.
      IsRecurringWeekly <Boolean>: If true, the StartTime and EndTime will get renewed every week.
      StartTime <String>: The date and time in UTC at which the schedule starts.
      TargetStandby <Single>: The standby target to maintain for the duration of the schedule.
      [Description <String>]: A short description about this schedule. For example, "Game launch on July 15th".
  [VMSize <String>]: Regional override for the VM size the build was created on.
 
SERVERRESOURCECONSTRAINTS <IServerResourceConstraintParams>: The resource constraints to apply to each server on the VM (EXPERIMENTAL API)
  CpuLimit <Single>: The maximum number of cores that each server is allowed to use.
  MemoryLimitGb <Single>: The maximum number of GiB of memory that each server is allowed to use. WARNING: After exceeding this limit, the server will be killed
 
VMSTARTUPSCRIPTCONFIGURATION <IVMStartupScriptParams>: The configuration for the VmStartupScript for the build
  VMStartupScriptAssetReference <IAssetReferenceParams>: Asset which contains the VmStartupScript script and any other required files.
    FileName <String>: The asset's file name.
    [MountPath <String>]: The asset's mount path.
  [PortRequests <IVMStartupScriptPortRequestParams[]>]: Optional port requests (name/protocol) that will be used by the VmStartupScript. Max of 5 requests.
    Name <String>: The name for the port.
    Protocol <String>: The protocol for the port.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/new-pfbuildwithcustomcontainer
#>

function New-PfBuildWithCustomContainer {
[OutputType([PlayFab.Multiplayer.Models.IComponentsXnbwy4ResponsesCreatebuildwithcustomcontainerresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='Create', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Create', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.ICreateBuildWithCustomContainerRequest]
    # Creates a multiplayer server build with a custom container and returns information about the build creation request.
    # To construct, see NOTES section for CREATEBUILDWITHCUSTOMCONTAINERREQUEST properties and create a hash table.
    ${CreateBuildWithCustomContainerRequest},

    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The build name.
    ${BuildName},

    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Single]
    # The number of multiplayer servers to host on a single VM.
    ${MultiplayerServerCountPerVM},

    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IPort[]]
    # The ports to map the build on.
    # To construct, see NOTES section for PORTS properties and create a hash table.
    ${Ports},

    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IBuildRegionParams[]]
    # The region configurations for the build.
    # To construct, see NOTES section for REGIONCONFIGURATIONS properties and create a hash table.
    ${RegionConfigurations},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # When true, assets will not be copied for each server inside the VM.
    # All serverswill run from the same set of assets, or will have the same assets mounted in the container.
    ${AreAssetsReadonly},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The flavor of container to create a build from.
    ${ContainerFlavor},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IContainerImageReference]
    # The container reference, consisting of the image name and tag.
    # To construct, see NOTES section for CONTAINERIMAGEREFERENCE properties and create a hash table.
    ${ContainerImageReference},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The container command to run when the multiplayer server has been allocated, including any arguments.
    ${ContainerRunCommand},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='CreateExpanded')]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAssetReferenceParams[]]
    # The list of game assets related to the build.
    # To construct, see NOTES section for GAMEASSETREFERENCES properties and create a hash table.
    ${GameAssetReferences},

    [Parameter(ParameterSetName='CreateExpanded')]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGameCertificateReferenceParams[]]
    # The game certificates for the build.
    # To construct, see NOTES section for GAMECERTIFICATEREFERENCES properties and create a hash table.
    ${GameCertificateReferences},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.ILinuxInstrumentationConfiguration]
    # The Linux instrumentation configuration for the build.
    # To construct, see NOTES section for LINUXINSTRUMENTATIONCONFIGURATION properties and create a hash table.
    ${LinuxInstrumentationConfiguration},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # Metadata to tag the build.
    # The keys are case insensitive.
    # The build metadata is made available to the server through Game Server SDK (GSDK).Constraints: Maximum number of keys: 30, Maximum key length: 50, Maximum value length: 100
    ${Metadata},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IMonitoringApplicationConfigurationParams]
    # The configuration for the monitoring application on the build
    # To construct, see NOTES section for MONITORINGAPPLICATIONCONFIGURATION properties and create a hash table.
    ${MonitoringApplicationConfiguration},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IServerResourceConstraintParams]
    # The resource constraints to apply to each server on the VM (EXPERIMENTAL API)
    # To construct, see NOTES section for SERVERRESOURCECONSTRAINTS properties and create a hash table.
    ${ServerResourceConstraints},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The VM size to create the build on.
    ${VMSize},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IVMStartupScriptParams]
    # The configuration for the VmStartupScript for the build
    # To construct, see NOTES section for VMSTARTUPSCRIPTCONFIGURATION properties and create a hash table.
    ${VMStartupScriptConfiguration},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Create = 'PlayFabMultiplayerApi.private\New-PfBuildWithCustomContainer_Create';
            CreateExpanded = 'PlayFabMultiplayerApi.private\New-PfBuildWithCustomContainer_CreateExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Creates a multiplayer server build with a managed container.
.Description
Creates a multiplayer server build with a managed container.
.Example
PS C:\> $ports = @( @{ Name = 'tcp_port'; Num = 8080; Protocol = 'TCP' }, @{ Name = 'udp_port'; Num = 8081; Protocol = 'UDP' } )
PS C:\> $regions = @( @{ 'MaxServers' = 20; 'Region' = 'AustraliaEast'; StandbyServers = 2; 'ScheduledStandbySettings' = $NULL } )
PS C:\> $gameAssets = @( @{ FileName = '123.zip'; MountPath = 'C:\Assets' } )
PS C:\> New-PfBuildWithManagedContainer -BuildName ExampleBuild -StartMultiplayerServerCommand 'C:\Assets\customServer.exe' -GameAssetReferences $gameAssets -VMSize Standard_D2as_v4 -MultiplayerServerCountPerVM 2 -Ports $ports -RegionConfigurations $regions | ConvertTo-Json -depth 10
 
.Inputs
PlayFab.Multiplayer.Models.ICreateBuildWithManagedContainerRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsJeulq8ResponsesCreatebuildwithmanagedcontainerresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
CREATEBUILDWITHMANAGEDCONTAINERREQUEST <ICreateBuildWithManagedContainerRequest>: Creates a multiplayer server build with a managed container and returns information about the build creation request.
  BuildName <String>: The build name.
  GameAssetReferences <IAssetReferenceParams[]>: The list of game assets related to the build.
    FileName <String>: The asset's file name.
    [MountPath <String>]: The asset's mount path.
  MultiplayerServerCountPerVM <Single>: The number of multiplayer servers to host on a single VM.
  Ports <IPort[]>: The ports to map the build on.
    Name <String>: The name for the port.
    Num <Single>: The number for the port.
    Protocol <String>: The protocol for the port.
  RegionConfigurations <IBuildRegionParams[]>: The region configurations for the build.
    MaxServers <Single>: The maximum number of multiplayer servers for the region.
    Region <String>: The build region.
    StandbyServers <Single>: The number of standby multiplayer servers for the region.
    [DynamicStandbySettings <IDynamicStandbySettings>]: Optional settings to control dynamic adjustment of standby target. If not specified, dynamic standby is disabled
      IsEnabled <Boolean>: When true, dynamic standby will be enabled
      [DynamicFloorMultiplierThresholds <IDynamicStandbyThreshold[]>]: List of auto standing by trigger values and corresponding standing by multiplier. Defaults to 1.5X at 50%, 3X at 25%, and 4X at 5%
        Multiplier <Single>: When the trigger threshold is reached, multiply by this value
        TriggerThresholdPercentage <Single>: The multiplier will be applied when the actual standby divided by target standby floor is less than this value
      [RampDownSeconds <Single?>]: The time it takes to reduce target standing by to configured floor value after an increase. Defaults to 30 minutes
    [MultiplayerServerCountPerVM <Single?>]: Regional override for the number of multiplayer servers to host on a single VM of the build.
    [ScheduledStandbySettings <IScheduledStandbySettings>]: Optional settings to set the standby target to specified values during the supplied schedules
      IsEnabled <Boolean>: When true, scheduled standby will be enabled
      [ScheduleList <ISchedule[]>]: A list of non-overlapping schedules
        EndTime <String>: The date and time in UTC at which the schedule ends. If IsRecurringWeekly is true, this schedule will keep renewing for future weeks until disabled or removed.
        IsDisabled <Boolean>: Disables the schedule.
        IsRecurringWeekly <Boolean>: If true, the StartTime and EndTime will get renewed every week.
        StartTime <String>: The date and time in UTC at which the schedule starts.
        TargetStandby <Single>: The standby target to maintain for the duration of the schedule.
        [Description <String>]: A short description about this schedule. For example, "Game launch on July 15th".
    [VMSize <String>]: Regional override for the VM size the build was created on.
  StartMultiplayerServerCommand <String>: The command to run when the multiplayer server is started, including any arguments.
  [AreAssetsReadonly <Boolean?>]: When true, assets will not be copied for each server inside the VM. All serverswill run from the same set of assets, or will have the same assets mounted in the container.
  [ContainerFlavor <String>]: The flavor of container to create a build from.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [GameCertificateReferences <IGameCertificateReferenceParams[]>]: The game certificates for the build.
    GsdkAlias <String>: An alias for the game certificate. The game server will reference this alias via GSDK config to retrieve the game certificate. This alias is used as an identifier in game server code to allow a new certificate with different Name field to be uploaded without the need to change any game server code to reference the new Name.
    Name <String>: The name of the game certificate. This name should match the name of a certificate that was previously uploaded to this title.
  [GameWorkingDirectory <String>]: The directory containing the game executable. This would be the start path of the game assets that contain the main game server executable. If not provided, a best effort will be made to extract it from the start game command.
  [InstrumentationConfiguration <IInstrumentationConfiguration>]: The instrumentation configuration for the build.
    [IsEnabled <Boolean?>]: Designates whether windows instrumentation configuration will be enabled for this Build
    [ProcessesToMonitor <String[]>]: This property is deprecated, use IsEnabled. The list of processes to be monitored on a VM for this build. Providing processes will turn on performance metrics collection for this build. Process names should not include extensions. If the game server process is: GameServer.exe; then, ProcessesToMonitor = [ GameServer ]
  [Metadata <IAny>]: Metadata to tag the build. The keys are case insensitive. The build metadata is made available to the server through Game Server SDK (GSDK).Constraints: Maximum number of keys: 30, Maximum key length: 50, Maximum value length: 100
  [MonitoringApplicationConfiguration <IMonitoringApplicationConfigurationParams>]: The configuration for the monitoring application on the build
    AssetReference <IAssetReferenceParams>: Asset which contains the monitoring application files and scripts.
    ExecutionScriptName <String>: Execution script name, this will be the main executable for the monitoring application.
    [InstallationScriptName <String>]: Installation script name, this will be run before the ExecutionScript.
    [OnStartRuntimeInMinutes <Single?>]: Timespan the monitoring application will be kept alive when running from the start of the VM
  [ServerResourceConstraints <IServerResourceConstraintParams>]: The resource constraints to apply to each server on the VM (EXPERIMENTAL API)
    CpuLimit <Single>: The maximum number of cores that each server is allowed to use.
    MemoryLimitGb <Single>: The maximum number of GiB of memory that each server is allowed to use. WARNING: After exceeding this limit, the server will be killed
  [VMSize <String>]: The VM size to create the build on.
  [VMStartupScriptConfiguration <IVMStartupScriptParams>]: The configuration for the VmStartupScript for the build
    VMStartupScriptAssetReference <IAssetReferenceParams>: Asset which contains the VmStartupScript script and any other required files.
    [PortRequests <IVMStartupScriptPortRequestParams[]>]: Optional port requests (name/protocol) that will be used by the VmStartupScript. Max of 5 requests.
      Name <String>: The name for the port.
      Protocol <String>: The protocol for the port.
  [WindowsCrashDumpConfiguration <IWindowsCrashDumpConfiguration>]: The crash dump configuration for the build.
    IsEnabled <Boolean>: Designates whether automatic crash dump capturing will be enabled for this Build.
    [CustomDumpFlags <Single?>]: See https://docs.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps for valid values.
    [DumpType <Single?>]: See https://docs.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps for valid values.
 
GAMEASSETREFERENCES <IAssetReferenceParams[]>: The list of game assets related to the build.
  FileName <String>: The asset's file name.
  [MountPath <String>]: The asset's mount path.
 
GAMECERTIFICATEREFERENCES <IGameCertificateReferenceParams[]>: The game certificates for the build.
  GsdkAlias <String>: An alias for the game certificate. The game server will reference this alias via GSDK config to retrieve the game certificate. This alias is used as an identifier in game server code to allow a new certificate with different Name field to be uploaded without the need to change any game server code to reference the new Name.
  Name <String>: The name of the game certificate. This name should match the name of a certificate that was previously uploaded to this title.
 
INSTRUMENTATIONCONFIGURATION <IInstrumentationConfiguration>: The instrumentation configuration for the build.
  [IsEnabled <Boolean?>]: Designates whether windows instrumentation configuration will be enabled for this Build
  [ProcessesToMonitor <String[]>]: This property is deprecated, use IsEnabled. The list of processes to be monitored on a VM for this build. Providing processes will turn on performance metrics collection for this build. Process names should not include extensions. If the game server process is: GameServer.exe; then, ProcessesToMonitor = [ GameServer ]
 
MONITORINGAPPLICATIONCONFIGURATION <IMonitoringApplicationConfigurationParams>: The configuration for the monitoring application on the build
  AssetReference <IAssetReferenceParams>: Asset which contains the monitoring application files and scripts.
    FileName <String>: The asset's file name.
    [MountPath <String>]: The asset's mount path.
  ExecutionScriptName <String>: Execution script name, this will be the main executable for the monitoring application.
  [InstallationScriptName <String>]: Installation script name, this will be run before the ExecutionScript.
  [OnStartRuntimeInMinutes <Single?>]: Timespan the monitoring application will be kept alive when running from the start of the VM
 
PORTS <IPort[]>: The ports to map the build on.
  Name <String>: The name for the port.
  Num <Single>: The number for the port.
  Protocol <String>: The protocol for the port.
 
REGIONCONFIGURATIONS <IBuildRegionParams[]>: The region configurations for the build.
  MaxServers <Single>: The maximum number of multiplayer servers for the region.
  Region <String>: The build region.
  StandbyServers <Single>: The number of standby multiplayer servers for the region.
  [DynamicStandbySettings <IDynamicStandbySettings>]: Optional settings to control dynamic adjustment of standby target. If not specified, dynamic standby is disabled
    IsEnabled <Boolean>: When true, dynamic standby will be enabled
    [DynamicFloorMultiplierThresholds <IDynamicStandbyThreshold[]>]: List of auto standing by trigger values and corresponding standing by multiplier. Defaults to 1.5X at 50%, 3X at 25%, and 4X at 5%
      Multiplier <Single>: When the trigger threshold is reached, multiply by this value
      TriggerThresholdPercentage <Single>: The multiplier will be applied when the actual standby divided by target standby floor is less than this value
    [RampDownSeconds <Single?>]: The time it takes to reduce target standing by to configured floor value after an increase. Defaults to 30 minutes
  [MultiplayerServerCountPerVM <Single?>]: Regional override for the number of multiplayer servers to host on a single VM of the build.
  [ScheduledStandbySettings <IScheduledStandbySettings>]: Optional settings to set the standby target to specified values during the supplied schedules
    IsEnabled <Boolean>: When true, scheduled standby will be enabled
    [ScheduleList <ISchedule[]>]: A list of non-overlapping schedules
      EndTime <String>: The date and time in UTC at which the schedule ends. If IsRecurringWeekly is true, this schedule will keep renewing for future weeks until disabled or removed.
      IsDisabled <Boolean>: Disables the schedule.
      IsRecurringWeekly <Boolean>: If true, the StartTime and EndTime will get renewed every week.
      StartTime <String>: The date and time in UTC at which the schedule starts.
      TargetStandby <Single>: The standby target to maintain for the duration of the schedule.
      [Description <String>]: A short description about this schedule. For example, "Game launch on July 15th".
  [VMSize <String>]: Regional override for the VM size the build was created on.
 
SERVERRESOURCECONSTRAINTS <IServerResourceConstraintParams>: The resource constraints to apply to each server on the VM (EXPERIMENTAL API)
  CpuLimit <Single>: The maximum number of cores that each server is allowed to use.
  MemoryLimitGb <Single>: The maximum number of GiB of memory that each server is allowed to use. WARNING: After exceeding this limit, the server will be killed
 
VMSTARTUPSCRIPTCONFIGURATION <IVMStartupScriptParams>: The configuration for the VmStartupScript for the build
  VMStartupScriptAssetReference <IAssetReferenceParams>: Asset which contains the VmStartupScript script and any other required files.
    FileName <String>: The asset's file name.
    [MountPath <String>]: The asset's mount path.
  [PortRequests <IVMStartupScriptPortRequestParams[]>]: Optional port requests (name/protocol) that will be used by the VmStartupScript. Max of 5 requests.
    Name <String>: The name for the port.
    Protocol <String>: The protocol for the port.
 
WINDOWSCRASHDUMPCONFIGURATION <IWindowsCrashDumpConfiguration>: The crash dump configuration for the build.
  IsEnabled <Boolean>: Designates whether automatic crash dump capturing will be enabled for this Build.
  [CustomDumpFlags <Single?>]: See https://docs.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps for valid values.
  [DumpType <Single?>]: See https://docs.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps for valid values.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/new-pfbuildwithmanagedcontainer
#>

function New-PfBuildWithManagedContainer {
[OutputType([PlayFab.Multiplayer.Models.IComponentsJeulq8ResponsesCreatebuildwithmanagedcontainerresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='Create1', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Create1', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.ICreateBuildWithManagedContainerRequest]
    # Creates a multiplayer server build with a managed container and returns information about the build creation request.
    # To construct, see NOTES section for CREATEBUILDWITHMANAGEDCONTAINERREQUEST properties and create a hash table.
    ${CreateBuildWithManagedContainerRequest},

    [Parameter(ParameterSetName='CreateExpanded1', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The build name.
    ${BuildName},

    [Parameter(ParameterSetName='CreateExpanded1', Mandatory)]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAssetReferenceParams[]]
    # The list of game assets related to the build.
    # To construct, see NOTES section for GAMEASSETREFERENCES properties and create a hash table.
    ${GameAssetReferences},

    [Parameter(ParameterSetName='CreateExpanded1', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Single]
    # The number of multiplayer servers to host on a single VM.
    ${MultiplayerServerCountPerVM},

    [Parameter(ParameterSetName='CreateExpanded1', Mandatory)]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IPort[]]
    # The ports to map the build on.
    # To construct, see NOTES section for PORTS properties and create a hash table.
    ${Ports},

    [Parameter(ParameterSetName='CreateExpanded1', Mandatory)]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IBuildRegionParams[]]
    # The region configurations for the build.
    # To construct, see NOTES section for REGIONCONFIGURATIONS properties and create a hash table.
    ${RegionConfigurations},

    [Parameter(ParameterSetName='CreateExpanded1', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The command to run when the multiplayer server is started, including any arguments.
    ${StartMultiplayerServerCommand},

    [Parameter(ParameterSetName='CreateExpanded1')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # When true, assets will not be copied for each server inside the VM.
    # All serverswill run from the same set of assets, or will have the same assets mounted in the container.
    ${AreAssetsReadonly},

    [Parameter(ParameterSetName='CreateExpanded1')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The flavor of container to create a build from.
    ${ContainerFlavor},

    [Parameter(ParameterSetName='CreateExpanded1')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='CreateExpanded1')]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGameCertificateReferenceParams[]]
    # The game certificates for the build.
    # To construct, see NOTES section for GAMECERTIFICATEREFERENCES properties and create a hash table.
    ${GameCertificateReferences},

    [Parameter(ParameterSetName='CreateExpanded1')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The directory containing the game executable.
    # This would be the start path of the game assets that contain the main game server executable.
    # If not provided, a best effort will be made to extract it from the start game command.
    ${GameWorkingDirectory},

    [Parameter(ParameterSetName='CreateExpanded1')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IInstrumentationConfiguration]
    # The instrumentation configuration for the build.
    # To construct, see NOTES section for INSTRUMENTATIONCONFIGURATION properties and create a hash table.
    ${InstrumentationConfiguration},

    [Parameter(ParameterSetName='CreateExpanded1')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # Metadata to tag the build.
    # The keys are case insensitive.
    # The build metadata is made available to the server through Game Server SDK (GSDK).Constraints: Maximum number of keys: 30, Maximum key length: 50, Maximum value length: 100
    ${Metadata},

    [Parameter(ParameterSetName='CreateExpanded1')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IMonitoringApplicationConfigurationParams]
    # The configuration for the monitoring application on the build
    # To construct, see NOTES section for MONITORINGAPPLICATIONCONFIGURATION properties and create a hash table.
    ${MonitoringApplicationConfiguration},

    [Parameter(ParameterSetName='CreateExpanded1')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IServerResourceConstraintParams]
    # The resource constraints to apply to each server on the VM (EXPERIMENTAL API)
    # To construct, see NOTES section for SERVERRESOURCECONSTRAINTS properties and create a hash table.
    ${ServerResourceConstraints},

    [Parameter(ParameterSetName='CreateExpanded1')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The VM size to create the build on.
    ${VMSize},

    [Parameter(ParameterSetName='CreateExpanded1')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IVMStartupScriptParams]
    # The configuration for the VmStartupScript for the build
    # To construct, see NOTES section for VMSTARTUPSCRIPTCONFIGURATION properties and create a hash table.
    ${VMStartupScriptConfiguration},

    [Parameter(ParameterSetName='CreateExpanded1')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IWindowsCrashDumpConfiguration]
    # The crash dump configuration for the build.
    # To construct, see NOTES section for WINDOWSCRASHDUMPCONFIGURATION properties and create a hash table.
    ${WindowsCrashDumpConfiguration},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Create1 = 'PlayFabMultiplayerApi.private\New-PfBuildWithManagedContainer_Create1';
            CreateExpanded1 = 'PlayFabMultiplayerApi.private\New-PfBuildWithManagedContainer_CreateExpanded1';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Creates a multiplayer server build with the server running as a process.
.Description
Creates a multiplayer server build with the server running as a process.
.Example
PS C:\> $ports = @( @{ Name = 'tcp_port'; Num = 8080; Protocol = 'TCP' }, @{ Name = 'udp_port'; Num = 8081; Protocol = 'UDP' } )
PS C:\> $regions = @( @{ 'MaxServers' = 20; 'Region' = 'AustraliaEast'; StandbyServers = 2; 'ScheduledStandbySettings' = $NULL } )
PS C:\> $gameAssets = @( @{ FileName = '123.zip'; } )
PS C:\> New-PfBuildWithProcess -BuildName ExampleBuild -StartMultiplayerServerCommand 'customServer.exe' -GameAssetReferences $gameAssets -VMSize Standard_Das2_v4 -MultiplayerServerCountPerVM 2 -Ports $ports -RegionConfigurations $regions | ConvertTo-Json -depth 10
 
.Inputs
PlayFab.Multiplayer.Models.ICreateBuildWithProcessBasedServerRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsTqyqe4ResponsesCreatebuildwithprocessbasedserverresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
CREATEBUILDWITHPROCESSBASEDSERVERREQUEST <ICreateBuildWithProcessBasedServerRequest>: Creates a multiplayer server build with the game server running as a process and returns information about the build creation request.
  BuildName <String>: The build name.
  GameAssetReferences <IAssetReferenceParams[]>: The list of game assets related to the build.
    FileName <String>: The asset's file name.
    [MountPath <String>]: The asset's mount path.
  MultiplayerServerCountPerVM <Single>: The number of multiplayer servers to host on a single VM.
  Ports <IPort[]>: The ports to map the build on.
    Name <String>: The name for the port.
    Num <Single>: The number for the port.
    Protocol <String>: The protocol for the port.
  RegionConfigurations <IBuildRegionParams[]>: The region configurations for the build.
    MaxServers <Single>: The maximum number of multiplayer servers for the region.
    Region <String>: The build region.
    StandbyServers <Single>: The number of standby multiplayer servers for the region.
    [DynamicStandbySettings <IDynamicStandbySettings>]: Optional settings to control dynamic adjustment of standby target. If not specified, dynamic standby is disabled
      IsEnabled <Boolean>: When true, dynamic standby will be enabled
      [DynamicFloorMultiplierThresholds <IDynamicStandbyThreshold[]>]: List of auto standing by trigger values and corresponding standing by multiplier. Defaults to 1.5X at 50%, 3X at 25%, and 4X at 5%
        Multiplier <Single>: When the trigger threshold is reached, multiply by this value
        TriggerThresholdPercentage <Single>: The multiplier will be applied when the actual standby divided by target standby floor is less than this value
      [RampDownSeconds <Single?>]: The time it takes to reduce target standing by to configured floor value after an increase. Defaults to 30 minutes
    [MultiplayerServerCountPerVM <Single?>]: Regional override for the number of multiplayer servers to host on a single VM of the build.
    [ScheduledStandbySettings <IScheduledStandbySettings>]: Optional settings to set the standby target to specified values during the supplied schedules
      IsEnabled <Boolean>: When true, scheduled standby will be enabled
      [ScheduleList <ISchedule[]>]: A list of non-overlapping schedules
        EndTime <String>: The date and time in UTC at which the schedule ends. If IsRecurringWeekly is true, this schedule will keep renewing for future weeks until disabled or removed.
        IsDisabled <Boolean>: Disables the schedule.
        IsRecurringWeekly <Boolean>: If true, the StartTime and EndTime will get renewed every week.
        StartTime <String>: The date and time in UTC at which the schedule starts.
        TargetStandby <Single>: The standby target to maintain for the duration of the schedule.
        [Description <String>]: A short description about this schedule. For example, "Game launch on July 15th".
    [VMSize <String>]: Regional override for the VM size the build was created on.
  StartMultiplayerServerCommand <String>: The command to run when the multiplayer server is started, including any arguments. The path to any executable should be relative to the root asset folder when unzipped.
  [AreAssetsReadonly <Boolean?>]: When true, assets will not be copied for each server inside the VM. All serverswill run from the same set of assets, or will have the same assets mounted in the container.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [GameCertificateReferences <IGameCertificateReferenceParams[]>]: The game certificates for the build.
    GsdkAlias <String>: An alias for the game certificate. The game server will reference this alias via GSDK config to retrieve the game certificate. This alias is used as an identifier in game server code to allow a new certificate with different Name field to be uploaded without the need to change any game server code to reference the new Name.
    Name <String>: The name of the game certificate. This name should match the name of a certificate that was previously uploaded to this title.
  [GameWorkingDirectory <String>]: The working directory for the game process. If this is not provided, the working directory will be set based on the mount path of the game server executable.
  [InstrumentationConfiguration <IInstrumentationConfiguration>]: The instrumentation configuration for the build.
    [IsEnabled <Boolean?>]: Designates whether windows instrumentation configuration will be enabled for this Build
    [ProcessesToMonitor <String[]>]: This property is deprecated, use IsEnabled. The list of processes to be monitored on a VM for this build. Providing processes will turn on performance metrics collection for this build. Process names should not include extensions. If the game server process is: GameServer.exe; then, ProcessesToMonitor = [ GameServer ]
  [IsOSPreview <Boolean?>]: Indicates whether this build will be created using the OS Preview versionPreview OS is recommended for dev builds to detect any breaking changes before they are released to retail. Retail builds should set this value to false.
  [Metadata <IAny>]: Metadata to tag the build. The keys are case insensitive. The build metadata is made available to the server through Game Server SDK (GSDK).Constraints: Maximum number of keys: 30, Maximum key length: 50, Maximum value length: 100
  [MonitoringApplicationConfiguration <IMonitoringApplicationConfigurationParams>]: The configuration for the monitoring application on the build
    AssetReference <IAssetReferenceParams>: Asset which contains the monitoring application files and scripts.
    ExecutionScriptName <String>: Execution script name, this will be the main executable for the monitoring application.
    [InstallationScriptName <String>]: Installation script name, this will be run before the ExecutionScript.
    [OnStartRuntimeInMinutes <Single?>]: Timespan the monitoring application will be kept alive when running from the start of the VM
  [OSPlatform <String>]: The OS platform used for running the game process.
  [VMSize <String>]: The VM size to create the build on.
  [VMStartupScriptConfiguration <IVMStartupScriptParams>]: The configuration for the VmStartupScript for the build
    VMStartupScriptAssetReference <IAssetReferenceParams>: Asset which contains the VmStartupScript script and any other required files.
    [PortRequests <IVMStartupScriptPortRequestParams[]>]: Optional port requests (name/protocol) that will be used by the VmStartupScript. Max of 5 requests.
      Name <String>: The name for the port.
      Protocol <String>: The protocol for the port.
 
GAMEASSETREFERENCES <IAssetReferenceParams[]>: The list of game assets related to the build.
  FileName <String>: The asset's file name.
  [MountPath <String>]: The asset's mount path.
 
GAMECERTIFICATEREFERENCES <IGameCertificateReferenceParams[]>: The game certificates for the build.
  GsdkAlias <String>: An alias for the game certificate. The game server will reference this alias via GSDK config to retrieve the game certificate. This alias is used as an identifier in game server code to allow a new certificate with different Name field to be uploaded without the need to change any game server code to reference the new Name.
  Name <String>: The name of the game certificate. This name should match the name of a certificate that was previously uploaded to this title.
 
INSTRUMENTATIONCONFIGURATION <IInstrumentationConfiguration>: The instrumentation configuration for the build.
  [IsEnabled <Boolean?>]: Designates whether windows instrumentation configuration will be enabled for this Build
  [ProcessesToMonitor <String[]>]: This property is deprecated, use IsEnabled. The list of processes to be monitored on a VM for this build. Providing processes will turn on performance metrics collection for this build. Process names should not include extensions. If the game server process is: GameServer.exe; then, ProcessesToMonitor = [ GameServer ]
 
MONITORINGAPPLICATIONCONFIGURATION <IMonitoringApplicationConfigurationParams>: The configuration for the monitoring application on the build
  AssetReference <IAssetReferenceParams>: Asset which contains the monitoring application files and scripts.
    FileName <String>: The asset's file name.
    [MountPath <String>]: The asset's mount path.
  ExecutionScriptName <String>: Execution script name, this will be the main executable for the monitoring application.
  [InstallationScriptName <String>]: Installation script name, this will be run before the ExecutionScript.
  [OnStartRuntimeInMinutes <Single?>]: Timespan the monitoring application will be kept alive when running from the start of the VM
 
PORTS <IPort[]>: The ports to map the build on.
  Name <String>: The name for the port.
  Num <Single>: The number for the port.
  Protocol <String>: The protocol for the port.
 
REGIONCONFIGURATIONS <IBuildRegionParams[]>: The region configurations for the build.
  MaxServers <Single>: The maximum number of multiplayer servers for the region.
  Region <String>: The build region.
  StandbyServers <Single>: The number of standby multiplayer servers for the region.
  [DynamicStandbySettings <IDynamicStandbySettings>]: Optional settings to control dynamic adjustment of standby target. If not specified, dynamic standby is disabled
    IsEnabled <Boolean>: When true, dynamic standby will be enabled
    [DynamicFloorMultiplierThresholds <IDynamicStandbyThreshold[]>]: List of auto standing by trigger values and corresponding standing by multiplier. Defaults to 1.5X at 50%, 3X at 25%, and 4X at 5%
      Multiplier <Single>: When the trigger threshold is reached, multiply by this value
      TriggerThresholdPercentage <Single>: The multiplier will be applied when the actual standby divided by target standby floor is less than this value
    [RampDownSeconds <Single?>]: The time it takes to reduce target standing by to configured floor value after an increase. Defaults to 30 minutes
  [MultiplayerServerCountPerVM <Single?>]: Regional override for the number of multiplayer servers to host on a single VM of the build.
  [ScheduledStandbySettings <IScheduledStandbySettings>]: Optional settings to set the standby target to specified values during the supplied schedules
    IsEnabled <Boolean>: When true, scheduled standby will be enabled
    [ScheduleList <ISchedule[]>]: A list of non-overlapping schedules
      EndTime <String>: The date and time in UTC at which the schedule ends. If IsRecurringWeekly is true, this schedule will keep renewing for future weeks until disabled or removed.
      IsDisabled <Boolean>: Disables the schedule.
      IsRecurringWeekly <Boolean>: If true, the StartTime and EndTime will get renewed every week.
      StartTime <String>: The date and time in UTC at which the schedule starts.
      TargetStandby <Single>: The standby target to maintain for the duration of the schedule.
      [Description <String>]: A short description about this schedule. For example, "Game launch on July 15th".
  [VMSize <String>]: Regional override for the VM size the build was created on.
 
VMSTARTUPSCRIPTCONFIGURATION <IVMStartupScriptParams>: The configuration for the VmStartupScript for the build
  VMStartupScriptAssetReference <IAssetReferenceParams>: Asset which contains the VmStartupScript script and any other required files.
    FileName <String>: The asset's file name.
    [MountPath <String>]: The asset's mount path.
  [PortRequests <IVMStartupScriptPortRequestParams[]>]: Optional port requests (name/protocol) that will be used by the VmStartupScript. Max of 5 requests.
    Name <String>: The name for the port.
    Protocol <String>: The protocol for the port.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/new-pfbuildwithprocess
#>

function New-PfBuildWithProcess {
[OutputType([PlayFab.Multiplayer.Models.IComponentsTqyqe4ResponsesCreatebuildwithprocessbasedserverresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='Create2', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Create2', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.ICreateBuildWithProcessBasedServerRequest]
    # Creates a multiplayer server build with the game server running as a process and returns information about the build creation request.
    # To construct, see NOTES section for CREATEBUILDWITHPROCESSBASEDSERVERREQUEST properties and create a hash table.
    ${CreateBuildWithProcessBasedServerRequest},

    [Parameter(ParameterSetName='CreateExpanded2', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The build name.
    ${BuildName},

    [Parameter(ParameterSetName='CreateExpanded2', Mandatory)]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAssetReferenceParams[]]
    # The list of game assets related to the build.
    # To construct, see NOTES section for GAMEASSETREFERENCES properties and create a hash table.
    ${GameAssetReferences},

    [Parameter(ParameterSetName='CreateExpanded2', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Single]
    # The number of multiplayer servers to host on a single VM.
    ${MultiplayerServerCountPerVM},

    [Parameter(ParameterSetName='CreateExpanded2', Mandatory)]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IPort[]]
    # The ports to map the build on.
    # To construct, see NOTES section for PORTS properties and create a hash table.
    ${Ports},

    [Parameter(ParameterSetName='CreateExpanded2', Mandatory)]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IBuildRegionParams[]]
    # The region configurations for the build.
    # To construct, see NOTES section for REGIONCONFIGURATIONS properties and create a hash table.
    ${RegionConfigurations},

    [Parameter(ParameterSetName='CreateExpanded2', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The command to run when the multiplayer server is started, including any arguments.
    # The path to any executable should be relative to the root asset folder when unzipped.
    ${StartMultiplayerServerCommand},

    [Parameter(ParameterSetName='CreateExpanded2')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # When true, assets will not be copied for each server inside the VM.
    # All serverswill run from the same set of assets, or will have the same assets mounted in the container.
    ${AreAssetsReadonly},

    [Parameter(ParameterSetName='CreateExpanded2')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='CreateExpanded2')]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IGameCertificateReferenceParams[]]
    # The game certificates for the build.
    # To construct, see NOTES section for GAMECERTIFICATEREFERENCES properties and create a hash table.
    ${GameCertificateReferences},

    [Parameter(ParameterSetName='CreateExpanded2')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The working directory for the game process.
    # If this is not provided, the working directory will be set based on the mount path of the game server executable.
    ${GameWorkingDirectory},

    [Parameter(ParameterSetName='CreateExpanded2')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IInstrumentationConfiguration]
    # The instrumentation configuration for the build.
    # To construct, see NOTES section for INSTRUMENTATIONCONFIGURATION properties and create a hash table.
    ${InstrumentationConfiguration},

    [Parameter(ParameterSetName='CreateExpanded2')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Management.Automation.SwitchParameter]
    # Indicates whether this build will be created using the OS Preview versionPreview OS is recommended for dev builds to detect any breaking changes before they are released to retail.
    # Retail builds should set this value to false.
    ${IsOSPreview},

    [Parameter(ParameterSetName='CreateExpanded2')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # Metadata to tag the build.
    # The keys are case insensitive.
    # The build metadata is made available to the server through Game Server SDK (GSDK).Constraints: Maximum number of keys: 30, Maximum key length: 50, Maximum value length: 100
    ${Metadata},

    [Parameter(ParameterSetName='CreateExpanded2')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IMonitoringApplicationConfigurationParams]
    # The configuration for the monitoring application on the build
    # To construct, see NOTES section for MONITORINGAPPLICATIONCONFIGURATION properties and create a hash table.
    ${MonitoringApplicationConfiguration},

    [Parameter(ParameterSetName='CreateExpanded2')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The OS platform used for running the game process.
    ${OSPlatform},

    [Parameter(ParameterSetName='CreateExpanded2')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The VM size to create the build on.
    ${VMSize},

    [Parameter(ParameterSetName='CreateExpanded2')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IVMStartupScriptParams]
    # The configuration for the VmStartupScript for the build
    # To construct, see NOTES section for VMSTARTUPSCRIPTCONFIGURATION properties and create a hash table.
    ${VMStartupScriptConfiguration},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Create2 = 'PlayFabMultiplayerApi.private\New-PfBuildWithProcess_Create2';
            CreateExpanded2 = 'PlayFabMultiplayerApi.private\New-PfBuildWithProcess_CreateExpanded2';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Creates a remote user to log on to a VM for a multiplayer server build.
.Description
Creates a remote user to log on to a VM for a multiplayer server build.
.Example
PS C:\> New-PfRemoteUser -BuildId a7d19066-cea0-42ce-a324-0bad473d3798 -Region AustraliaEast -Username example -VMId xcloudeau4u4yyxj4xymu:AustraliaEast:1E03_d63a680f-7513-4220-a4b9-5d47e26abd35:tvmps_2d52b58380bc02b08d3509ef77c241cff3b41063a8f8052028ac6df1ad2cc271_d | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "ExpirationTime": "2021-02-13T20:02:01.022Z",
    "Password": "3GmY+VnuDTZnHoP&ZC)VhUH#),wnlSMzm9ABSBqZYwW6!17zUR5kCQPn!o*0p09Y6q0x.dgob6#Y'A'+V$GIMr#JydCtJqzXn#!N1OLGAV9kT8+",
    "Username": "example"
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.ICreateRemoteUserRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents1Lwh4J6ResponsesCreateremoteuserresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
CREATEREMOTEUSERREQUEST <ICreateRemoteUserRequest>: Creates a remote user to log on to a VM for a multiplayer server build in a specific region. Returns user credential information necessary to log on.
  BuildId <String>: The guid string build ID of to create the remote user for.
  Region <String>: The region of virtual machine to create the remote user for.
  Username <String>: The username to create the remote user with.
  VMId <String>: The virtual machine ID the multiplayer server is located on.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [ExpirationTime <String>]: The expiration time for the remote user created. Defaults to expiring in one day if not specified.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/new-pfremoteuser
#>

function New-PfRemoteUser {
[OutputType([PlayFab.Multiplayer.Models.IComponents1Lwh4J6ResponsesCreateremoteuserresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='CreateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Create', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.ICreateRemoteUserRequest]
    # Creates a remote user to log on to a VM for a multiplayer server build in a specific region.
    # Returns user credential information necessary to log on.
    # To construct, see NOTES section for CREATEREMOTEUSERREQUEST properties and create a hash table.
    ${CreateRemoteUserRequest},

    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string build ID of to create the remote user for.
    ${BuildId},

    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The region of virtual machine to create the remote user for.
    ${Region},

    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The username to create the remote user with.
    ${Username},

    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The virtual machine ID the multiplayer server is located on.
    ${VMId},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The expiration time for the remote user created.
    # Defaults to expiring in one day if not specified.
    ${ExpirationTime},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Create = 'PlayFabMultiplayerApi.private\New-PfRemoteUser_Create';
            CreateExpanded = 'PlayFabMultiplayerApi.private\New-PfRemoteUser_CreateExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Creates a request to change a title's multiplayer server quotas.
.Description
Creates a request to change a title's multiplayer server quotas.
.Example
PS C:\> {{ Add code here }}
 
{{ Add output here }}
.Example
PS C:\> {{ Add code here }}
 
{{ Add output here }}
 
.Inputs
PlayFab.Multiplayer.Models.ICreateTitleMultiplayerServersQuotaChangeRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents1Sy6ReyResponsesCreatetitlemultiplayerserversquotachangeresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
CHANGES <ICoreCapacityChange[]>: Changes to make to the titles cores quota.
  NewCoreLimit <Single>: New quota core limit for the given vm family/region.
  Region <String>: Region to change.
  VMFamily <String>: Virtual machine family to change.
 
CREATETITLEMULTIPLAYERSERVERSQUOTACHANGEREQUEST <ICreateTitleMultiplayerServersQuotaChangeRequest>: Creates a request to change a title's multiplayer server quotas.
  Changes <ICoreCapacityChange[]>: Changes to make to the titles cores quota.
    NewCoreLimit <Single>: New quota core limit for the given vm family/region.
    Region <String>: Region to change.
    VMFamily <String>: Virtual machine family to change.
  [ChangeDescription <String>]: A brief description of the requested changes.
  [ContactEmail <String>]: Email to be contacted by our team about this request. Only required when a request is not approved.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [Notes <String>]: Additional information about this request that our team can use to better understand the requirements.
  [StartDate <String>]: When these changes would need to be in effect. Only required when a request is not approved.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/new-pftitlemultiplayerserverquotachange
#>

function New-PfTitleMultiplayerServerQuotaChange {
[OutputType([PlayFab.Multiplayer.Models.IComponents1Sy6ReyResponsesCreatetitlemultiplayerserversquotachangeresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='Create', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Create', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.ICreateTitleMultiplayerServersQuotaChangeRequest]
    # Creates a request to change a title's multiplayer server quotas.
    # To construct, see NOTES section for CREATETITLEMULTIPLAYERSERVERSQUOTACHANGEREQUEST properties and create a hash table.
    ${CreateTitleMultiplayerServersQuotaChangeRequest},

    [Parameter(ParameterSetName='CreateExpanded', Mandatory)]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.ICoreCapacityChange[]]
    # Changes to make to the titles cores quota.
    # To construct, see NOTES section for CHANGES properties and create a hash table.
    ${Changes},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # A brief description of the requested changes.
    ${ChangeDescription},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # Email to be contacted by our team about this request.
    # Only required when a request is not approved.
    ${ContactEmail},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # Additional information about this request that our team can use to better understand the requirements.
    ${Notes},

    [Parameter(ParameterSetName='CreateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # When these changes would need to be in effect.
    # Only required when a request is not approved.
    ${StartDate},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Create = 'PlayFabMultiplayerApi.private\New-PfTitleMultiplayerServerQuotaChange_Create';
            CreateExpanded = 'PlayFabMultiplayerApi.private\New-PfTitleMultiplayerServerQuotaChange_CreateExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Deletes a multiplayer server game asset for a title.
.Description
Deletes a multiplayer server game asset for a title.
.Example
PS C:\> Remove-PfAsset -FileName "19402022-v2.zip" | ConvertTo-Json
 
{
  "Code": 200,
  "Data": {},
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IDeleteAssetRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
DELETEASSETREQUEST <IDeleteAssetRequest>: Deletes a multiplayer server game asset for a title.
  FileName <String>: The filename of the asset to delete.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/remove-pfasset
#>

function Remove-PfAsset {
[OutputType([PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='DeleteExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Delete', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IDeleteAssetRequest]
    # Deletes a multiplayer server game asset for a title.
    # To construct, see NOTES section for DELETEASSETREQUEST properties and create a hash table.
    ${DeleteAssetRequest},

    [Parameter(ParameterSetName='DeleteExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The filename of the asset to delete.
    ${FileName},

    [Parameter(ParameterSetName='DeleteExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Delete = 'PlayFabMultiplayerApi.private\Remove-PfAsset_Delete';
            DeleteExpanded = 'PlayFabMultiplayerApi.private\Remove-PfAsset_DeleteExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Deletes a multiplayer server build alias.
.Description
Deletes a multiplayer server build alias.
.Example
PS C:\> Remove-PfBuildAlias -AliasId 0500ae06-224f-45a9-a982-bc79c758aa0d | ConvertTo-Json
 
{
  "Code": 200,
  "Data": {},
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IDeleteBuildAliasRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
DELETEBUILDALIASREQUEST <IDeleteBuildAliasRequest>: Deletes a multiplayer server build alias.
  AliasId <String>: The guid string alias ID of the alias to perform the action on.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/remove-pfbuildalias
#>

function Remove-PfBuildAlias {
[OutputType([PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='DeleteExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Delete', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IDeleteBuildAliasRequest]
    # Deletes a multiplayer server build alias.
    # To construct, see NOTES section for DELETEBUILDALIASREQUEST properties and create a hash table.
    ${DeleteBuildAliasRequest},

    [Parameter(ParameterSetName='DeleteExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string alias ID of the alias to perform the action on.
    ${AliasId},

    [Parameter(ParameterSetName='DeleteExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Delete = 'PlayFabMultiplayerApi.private\Remove-PfBuildAlias_Delete';
            DeleteExpanded = 'PlayFabMultiplayerApi.private\Remove-PfBuildAlias_DeleteExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Removes a multiplayer server build's region.
.Description
Removes a multiplayer server build's region.
.Example
PS C:\> Remove-PfBuildRegion -BuildId a024dc36-d922-4ae0-aeda-bae450aa4d8b -Region AustraliaEast | ConvertTo-Json
 
{
  "Code": 200,
  "Data": {},
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IDeleteBuildRegionRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
DELETEBUILDREGIONREQUEST <IDeleteBuildRegionRequest>: Removes a multiplayer server build's region.
  BuildId <String>: The guid string ID of the build we want to update regions for.
  Region <String>: The build region to delete.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/remove-pfbuildregion
#>

function Remove-PfBuildRegion {
[OutputType([PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='DeleteExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Delete', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IDeleteBuildRegionRequest]
    # Removes a multiplayer server build's region.
    # To construct, see NOTES section for DELETEBUILDREGIONREQUEST properties and create a hash table.
    ${DeleteBuildRegionRequest},

    [Parameter(ParameterSetName='DeleteExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string ID of the build we want to update regions for.
    ${BuildId},

    [Parameter(ParameterSetName='DeleteExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The build region to delete.
    ${Region},

    [Parameter(ParameterSetName='DeleteExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Delete = 'PlayFabMultiplayerApi.private\Remove-PfBuildRegion_Delete';
            DeleteExpanded = 'PlayFabMultiplayerApi.private\Remove-PfBuildRegion_DeleteExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Deletes a multiplayer server build.
.Description
Deletes a multiplayer server build.
.Example
PS C:\> Remove-PfBuild -BuildId 24ed06cc-59f0-4e72-b6a0-cb2ae2b9ddd3 | ConvertTo-Json
 
{
  "Code": 200,
  "Data": {},
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IDeleteBuildRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
DELETEBUILDREQUEST <IDeleteBuildRequest>: Deletes a multiplayer server build.
  BuildId <String>: The guid string build ID of the build to delete.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/remove-pfbuild
#>

function Remove-PfBuild {
[OutputType([PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='DeleteExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Delete', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IDeleteBuildRequest]
    # Deletes a multiplayer server build.
    # To construct, see NOTES section for DELETEBUILDREQUEST properties and create a hash table.
    ${DeleteBuildRequest},

    [Parameter(ParameterSetName='DeleteExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string build ID of the build to delete.
    ${BuildId},

    [Parameter(ParameterSetName='DeleteExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Delete = 'PlayFabMultiplayerApi.private\Remove-PfBuild_Delete';
            DeleteExpanded = 'PlayFabMultiplayerApi.private\Remove-PfBuild_DeleteExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Deletes a multiplayer server game certificate.
.Description
Deletes a multiplayer server game certificate.
.Example
PS C:\> Remove-PfCertificate -Name MyCert | ConvertTo-Json
 
{
  "Code": 200,
  "Data": {},
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IDeleteCertificateRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
DELETECERTIFICATEREQUEST <IDeleteCertificateRequest>: Deletes a multiplayer server game certificate.
  Name <String>: The name of the certificate.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/remove-pfcertificate
#>

function Remove-PfCertificate {
[OutputType([PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='DeleteExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Delete', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IDeleteCertificateRequest]
    # Deletes a multiplayer server game certificate.
    # To construct, see NOTES section for DELETECERTIFICATEREQUEST properties and create a hash table.
    ${DeleteCertificateRequest},

    [Parameter(ParameterSetName='DeleteExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The name of the certificate.
    ${Name},

    [Parameter(ParameterSetName='DeleteExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Delete = 'PlayFabMultiplayerApi.private\Remove-PfCertificate_Delete';
            DeleteExpanded = 'PlayFabMultiplayerApi.private\Remove-PfCertificate_DeleteExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Deletes a container image repository.
.Description
Deletes a container image repository.
.Example
PS C:\> Remove-PfContainerImageRepository -ImageName myContainerImage | ConvertTo-Json
 
{
  "Code": 200,
  "Data": {},
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IDeleteContainerImageRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
DELETECONTAINERIMAGEREQUEST <IDeleteContainerImageRequest>: Removes the specified container image repository. After this operation, a 'docker pull' will fail for all the tags of the specified image. Morever, ListContainerImages will not return the specified image.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [ImageName <String>]: The container image repository we want to delete.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/remove-pfcontainerimagerepository
#>

function Remove-PfContainerImageRepository {
[OutputType([PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='DeleteExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Delete', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IDeleteContainerImageRequest]
    # Removes the specified container image repository.
    # After this operation, a 'docker pull' will fail for all the tags of the specified image.
    # Morever, ListContainerImages will not return the specified image.
    # To construct, see NOTES section for DELETECONTAINERIMAGEREQUEST properties and create a hash table.
    ${DeleteContainerImageRequest},

    [Parameter(ParameterSetName='DeleteExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='DeleteExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The container image repository we want to delete.
    ${ImageName},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Delete = 'PlayFabMultiplayerApi.private\Remove-PfContainerImageRepository_Delete';
            DeleteExpanded = 'PlayFabMultiplayerApi.private\Remove-PfContainerImageRepository_DeleteExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Deletes a remote user to log on to a VM for a multiplayer server build.
.Description
Deletes a remote user to log on to a VM for a multiplayer server build.
.Example
PS C:\> New-PfRemoteUser -BuildId a7d19066-cea0-42ce-a324-0bad473d3798 -Region AustraliaEast -Username example -VMId xcloudeau4u4yyxj4xymu:AustraliaEast:1E03_d63a680f-7513-4220-a4b9-5d47e26abd35:tvmps_2d52b58380bc02b08d3509ef77c241cff3b41063a8f8052028ac6df1ad2cc271_d | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {},
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IDeleteRemoteUserRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
DELETEREMOTEUSERREQUEST <IDeleteRemoteUserRequest>: Deletes a remote user to log on to a VM for a multiplayer server build in a specific region. Returns user credential information necessary to log on.
  BuildId <String>: The guid string build ID of the multiplayer server where the remote user is to delete.
  Region <String>: The region of the multiplayer server where the remote user is to delete.
  Username <String>: The username of the remote user to delete.
  VMId <String>: The virtual machine ID the multiplayer server is located on.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/remove-pfremoteuser
#>

function Remove-PfRemoteUser {
[OutputType([PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='DeleteExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Delete', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IDeleteRemoteUserRequest]
    # Deletes a remote user to log on to a VM for a multiplayer server build in a specific region.
    # Returns user credential information necessary to log on.
    # To construct, see NOTES section for DELETEREMOTEUSERREQUEST properties and create a hash table.
    ${DeleteRemoteUserRequest},

    [Parameter(ParameterSetName='DeleteExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string build ID of the multiplayer server where the remote user is to delete.
    ${BuildId},

    [Parameter(ParameterSetName='DeleteExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The region of the multiplayer server where the remote user is to delete.
    ${Region},

    [Parameter(ParameterSetName='DeleteExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The username of the remote user to delete.
    ${Username},

    [Parameter(ParameterSetName='DeleteExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The virtual machine ID the multiplayer server is located on.
    ${VMId},

    [Parameter(ParameterSetName='DeleteExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Delete = 'PlayFabMultiplayerApi.private\Remove-PfRemoteUser_Delete';
            DeleteExpanded = 'PlayFabMultiplayerApi.private\Remove-PfRemoteUser_DeleteExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Request a multiplayer server session.
Accepts tokens for title and if game client access is enabled, allows game client to request a server with player entity token.
.Description
Request a multiplayer server session.
Accepts tokens for title and if game client access is enabled, allows game client to request a server with player entity token.
.Example
PS C:\> Request-PfMultiplayerServer -PreferredRegions @('AustraliaEast', 'WestEurope') -SessionId 0352cf0f-2e7a-4aee-801d-7f27f8344c77 -BuildId 9968f71f-f3ec-49df-82d7-d00b12c92e12 | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "ConnectedPlayers": [],
    "Fqdn": "dnsefebd26e-bd3e-4e77-9460-b95ced4023aa-azurebatch-cloudservice.australiaeast.cloudapp.azure.com",
    "Ipv4Address": "20.193.28.131",
    "LastStateTransitionTime": "2021-02-16T21:15:42.935Z",
    "Ports": [
      {
        "Name": "udp",
        "Num": 30000.0,
        "Protocol": "UDP"
      }
    ],
    "Region": "AustraliaEast",
    "ServerId": "99d2022ae82600fab857fd356917697ca116054e185cd2c5f05d31397529e333",
    "SessionId": "0352cf0f-2e7a-4aee-801d-7f27f8344c77",
    "State": "Active",
    "VMId": "xcloudeau4u4yyxj4xymu:AustraliaEast:1E03_909ab8a8-7597-4518-b38b-e431c004fcef:tvmps_64b21aec66cb890adfb4bacd1ccfe5a2d79abd2378e31896ffab49c9eb88cd72_d"
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IRequestMultiplayerServerRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsGlu3TjResponsesRequestmultiplayerserverresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BUILDALIASPARAMS <IBuildAliasParams>: The identifiers of the build alias to use for the request.
  AliasId <String>: The guid string alias ID to use for the request.
 
REQUESTMULTIPLAYERSERVERREQUEST <IRequestMultiplayerServerRequest>: Requests a multiplayer server session from a particular build in any of the given preferred regions.
  PreferredRegions <String[]>: The preferred regions to request a multiplayer server from. The Multiplayer Service will iterate through the regions in the specified order and allocate a server from the first one that has servers available.
  SessionId <String>: A guid string session ID created track the multiplayer server session over its life.
  [BuildAliasParams <IBuildAliasParams>]: The identifiers of the build alias to use for the request.
    AliasId <String>: The guid string alias ID to use for the request.
  [BuildId <String>]: The guid string build ID of the multiplayer server to request.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
  [InitialPlayers <String[]>]: Initial list of players (potentially matchmade) allowed to connect to the game. This list is passed to the game server when requested (via GSDK) and can be used to validate players connecting to it.
  [SessionCookie <String>]: Data encoded as a string that is passed to the game server when requested. This can be used to to communicate information such as game mode or map through the request flow.
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/request-pfmultiplayerserver
#>

function Request-PfMultiplayerServer {
[OutputType([PlayFab.Multiplayer.Models.IComponentsGlu3TjResponsesRequestmultiplayerserverresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='RequestExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Request', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IRequestMultiplayerServerRequest]
    # Requests a multiplayer server session from a particular build in any of the given preferred regions.
    # To construct, see NOTES section for REQUESTMULTIPLAYERSERVERREQUEST properties and create a hash table.
    ${RequestMultiplayerServerRequest},

    [Parameter(ParameterSetName='RequestExpanded', Mandatory)]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String[]]
    # The preferred regions to request a multiplayer server from.
    # The Multiplayer Service will iterate through the regions in the specified order and allocate a server from the first one that has servers available.
    ${PreferredRegions},

    [Parameter(ParameterSetName='RequestExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # A guid string session ID created track the multiplayer server session over its life.
    ${SessionId},

    [Parameter(ParameterSetName='RequestExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IBuildAliasParams]
    # The identifiers of the build alias to use for the request.
    # To construct, see NOTES section for BUILDALIASPARAMS properties and create a hash table.
    ${BuildAliasParams},

    [Parameter(ParameterSetName='RequestExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string build ID of the multiplayer server to request.
    ${BuildId},

    [Parameter(ParameterSetName='RequestExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='RequestExpanded')]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String[]]
    # Initial list of players (potentially matchmade) allowed to connect to the game.
    # This list is passed to the game server when requested (via GSDK) and can be used to validate players connecting to it.
    ${InitialPlayers},

    [Parameter(ParameterSetName='RequestExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # Data encoded as a string that is passed to the game server when requested.
    # This can be used to to communicate information such as game mode or map through the request flow.
    ${SessionCookie},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Request = 'PlayFabMultiplayerApi.private\Request-PfMultiplayerServer_Request';
            RequestExpanded = 'PlayFabMultiplayerApi.private\Request-PfMultiplayerServer_RequestExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Shuts down a multiplayer server session.
.Description
Shuts down a multiplayer server session.
.Example
PS C:\> Stop-PfMultiplayerServer -BuildId 9968f71f-f3ec-49df-82d7-d00b12c92e12 -Region AustraliaEast -SessionId 0352cf0f-2e7a-4aee-801d-7f27f8344c77 | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {},
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IShutdownMultiplayerServerRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
SHUTDOWNMULTIPLAYERSERVERREQUEST <IShutdownMultiplayerServerRequest>: Executes the shutdown callback from the GSDK and terminates the multiplayer server session. The callback in the GSDK will allow for graceful shutdown with a 15 minute timeoutIf graceful shutdown has not been completed before 15 minutes have elapsed, the multiplayer server session will be forcefully terminated on it's own.
  SessionId <String>: A guid string session ID of the multiplayer server to shut down.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/stop-pfmultiplayerserver
#>

function Stop-PfMultiplayerServer {
[OutputType([PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='ShutdownExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Shutdown', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IShutdownMultiplayerServerRequest]
    # Executes the shutdown callback from the GSDK and terminates the multiplayer server session.
    # The callback in the GSDK will allow for graceful shutdown with a 15 minute timeoutIf graceful shutdown has not been completed before 15 minutes have elapsed, the multiplayer server session will be forcefully terminated on it's own.
    # To construct, see NOTES section for SHUTDOWNMULTIPLAYERSERVERREQUEST properties and create a hash table.
    ${ShutdownMultiplayerServerRequest},

    [Parameter(ParameterSetName='ShutdownExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # A guid string session ID of the multiplayer server to shut down.
    ${SessionId},

    [Parameter(ParameterSetName='ShutdownExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Shutdown = 'PlayFabMultiplayerApi.private\Stop-PfMultiplayerServer_Shutdown';
            ShutdownExpanded = 'PlayFabMultiplayerApi.private\Stop-PfMultiplayerServer_ShutdownExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Creates a multiplayer server build alias.
.Description
Creates a multiplayer server build alias.
.Example
PS C:\> $buildWeightDistribution = @{ "9968f71f-f3ec-49df-82d7-d00b12c92e12" = 2; "0efadb18-8c62-42da-a7f9-4deec9bf47fd" = 3 }
PS C:\> Update-PfBuildAlias -AliasId 0731d3ec-79f7-4aef-a0c3-ebaaf13e00c6 -AliasName UpdatedName -BuildSelectionCriteria @(@{ "BuildWeightDistribution" = $buildWeightDistribution}) | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {
    "AliasId": "0731d3ec-79f7-4aef-a0c3-ebaaf13e00c6",
    "AliasName": "UpdatedName",
    "BuildSelectionCriteria": [
      {
        "BuildWeightDistribution": {
          "9968f71f-f3ec-49df-82d7-d00b12c92e12": 2,
          "0efadb18-8c62-42da-a7f9-4deec9bf47fd": 3
        }
      }
    ],
    "PageSize": 0.0,
    "SkipToken": null
  },
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IUpdateBuildAliasRequest
.Outputs
PlayFab.Multiplayer.Models.IComponents1Ola4KgResponsesBuildaliasdetailsresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BUILDSELECTIONCRITERIA <IBuildSelectionCriterion[]>: Array of build selection criteria.
  [BuildWeightDistribution <IAny>]: Dictionary of build ids and their respective weights for distribution of allocation requests.
 
UPDATEBUILDALIASREQUEST <IUpdateBuildAliasRequest>: Creates a multiplayer server build alias and returns the created alias.
  AliasId <String>: The guid string alias Id of the alias to be updated.
  [AliasName <String>]: The alias name.
  [BuildSelectionCriteria <IBuildSelectionCriterion[]>]: Array of build selection criteria.
    [BuildWeightDistribution <IAny>]: Dictionary of build ids and their respective weights for distribution of allocation requests.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/update-pfbuildalias
#>

function Update-PfBuildAlias {
[OutputType([PlayFab.Multiplayer.Models.IComponents1Ola4KgResponsesBuildaliasdetailsresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='UpdateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Update', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IUpdateBuildAliasRequest]
    # Creates a multiplayer server build alias and returns the created alias.
    # To construct, see NOTES section for UPDATEBUILDALIASREQUEST properties and create a hash table.
    ${UpdateBuildAliasRequest},

    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string alias Id of the alias to be updated.
    ${AliasId},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The alias name.
    ${AliasName},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IBuildSelectionCriterion[]]
    # Array of build selection criteria.
    # To construct, see NOTES section for BUILDSELECTIONCRITERIA properties and create a hash table.
    ${BuildSelectionCriteria},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Update = 'PlayFabMultiplayerApi.private\Update-PfBuildAlias_Update';
            UpdateExpanded = 'PlayFabMultiplayerApi.private\Update-PfBuildAlias_UpdateExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Updates a multiplayer server build's name.
.Description
Updates a multiplayer server build's name.
.Example
PS C:\> Update-PfBuildName -BuildId 9968f71f-f3ec-49df-82d7-d00b12c92e12 -BuildName UpdatedBuildName | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {},
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IUpdateBuildNameRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
UPDATEBUILDNAMEREQUEST <IUpdateBuildNameRequest>: Updates a multiplayer server build's name.
  BuildId <String>: The guid string ID of the build we want to update the name of.
  BuildName <String>: The build name.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/update-pfbuildname
#>

function Update-PfBuildName {
[OutputType([PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='UpdateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Update', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IUpdateBuildNameRequest]
    # Updates a multiplayer server build's name.
    # To construct, see NOTES section for UPDATEBUILDNAMEREQUEST properties and create a hash table.
    ${UpdateBuildNameRequest},

    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string ID of the build we want to update the name of.
    ${BuildId},

    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The build name.
    ${BuildName},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Update = 'PlayFabMultiplayerApi.private\Update-PfBuildName_Update';
            UpdateExpanded = 'PlayFabMultiplayerApi.private\Update-PfBuildName_UpdateExpanded';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Updates a multiplayer server build's region.
If the region is not yet created, it will be created
.Description
Updates a multiplayer server build's region.
If the region is not yet created, it will be created
.Example
PS C:\> Update-PfBuildRegion -BuildId 9968f71f-f3ec-49df-82d7-d00b12c92e12 -BuildRegionMaxServers 2 -BuildRegionRegion AustraliaEast -BuildRegionStandbyServers 1 | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {},
  "Status": "OK"
}
.Example
PS C:\> $buildRegions = @( @{ "MaxServers" = 2; "Region" = "AustraliaEast"; "StandbyServers" = 1; "ScheduledStandbySettings" = @{ "ScheduleList" = @() } }, @{ "MaxServers" = 2; "Region" = "WestUs"; "StandbyServers" = 1; "ScheduledStandbySettings" = @{ "ScheduleList" = @() } } )
PS C:\> Update-PfBuildRegion -BuildId 9968f71f-f3ec-49df-82d7-d00b12c92e12 -BuildRegions $buildRegions | ConvertTo-Json -depth 5
 
{
  "Code": 200,
  "Data": {},
  "Status": "OK"
}
 
.Inputs
PlayFab.Multiplayer.Models.IUpdateBuildRegionRequest
.Inputs
PlayFab.Multiplayer.Models.IUpdateBuildRegionsRequest
.Outputs
PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema
.Notes
COMPLEX PARAMETER PROPERTIES
 
To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.
 
BUILDREGION <IBuildRegionParams>: The updated region configuration that should be applied to the specified build.
  MaxServers <Single>: The maximum number of multiplayer servers for the region.
  Region <String>: The build region.
  StandbyServers <Single>: The number of standby multiplayer servers for the region.
  [DynamicStandbySettings <IDynamicStandbySettings>]: Optional settings to control dynamic adjustment of standby target. If not specified, dynamic standby is disabled
    IsEnabled <Boolean>: When true, dynamic standby will be enabled
    [DynamicFloorMultiplierThresholds <IDynamicStandbyThreshold[]>]: List of auto standing by trigger values and corresponding standing by multiplier. Defaults to 1.5X at 50%, 3X at 25%, and 4X at 5%
      Multiplier <Single>: When the trigger threshold is reached, multiply by this value
      TriggerThresholdPercentage <Single>: The multiplier will be applied when the actual standby divided by target standby floor is less than this value
    [RampDownSeconds <Single?>]: The time it takes to reduce target standing by to configured floor value after an increase. Defaults to 30 minutes
  [MultiplayerServerCountPerVM <Single?>]: Regional override for the number of multiplayer servers to host on a single VM of the build.
  [ScheduledStandbySettings <IScheduledStandbySettings>]: Optional settings to set the standby target to specified values during the supplied schedules
    IsEnabled <Boolean>: When true, scheduled standby will be enabled
    [ScheduleList <ISchedule[]>]: A list of non-overlapping schedules
      EndTime <String>: The date and time in UTC at which the schedule ends. If IsRecurringWeekly is true, this schedule will keep renewing for future weeks until disabled or removed.
      IsDisabled <Boolean>: Disables the schedule.
      IsRecurringWeekly <Boolean>: If true, the StartTime and EndTime will get renewed every week.
      StartTime <String>: The date and time in UTC at which the schedule starts.
      TargetStandby <Single>: The standby target to maintain for the duration of the schedule.
      [Description <String>]: A short description about this schedule. For example, "Game launch on July 15th".
  [VMSize <String>]: Regional override for the VM size the build was created on.
 
BUILDREGIONS <IBuildRegionParams[]>: The updated region configuration that should be applied to the specified build.
  MaxServers <Single>: The maximum number of multiplayer servers for the region.
  Region <String>: The build region.
  StandbyServers <Single>: The number of standby multiplayer servers for the region.
  [DynamicStandbySettings <IDynamicStandbySettings>]: Optional settings to control dynamic adjustment of standby target. If not specified, dynamic standby is disabled
    IsEnabled <Boolean>: When true, dynamic standby will be enabled
    [DynamicFloorMultiplierThresholds <IDynamicStandbyThreshold[]>]: List of auto standing by trigger values and corresponding standing by multiplier. Defaults to 1.5X at 50%, 3X at 25%, and 4X at 5%
      Multiplier <Single>: When the trigger threshold is reached, multiply by this value
      TriggerThresholdPercentage <Single>: The multiplier will be applied when the actual standby divided by target standby floor is less than this value
    [RampDownSeconds <Single?>]: The time it takes to reduce target standing by to configured floor value after an increase. Defaults to 30 minutes
  [MultiplayerServerCountPerVM <Single?>]: Regional override for the number of multiplayer servers to host on a single VM of the build.
  [ScheduledStandbySettings <IScheduledStandbySettings>]: Optional settings to set the standby target to specified values during the supplied schedules
    IsEnabled <Boolean>: When true, scheduled standby will be enabled
    [ScheduleList <ISchedule[]>]: A list of non-overlapping schedules
      EndTime <String>: The date and time in UTC at which the schedule ends. If IsRecurringWeekly is true, this schedule will keep renewing for future weeks until disabled or removed.
      IsDisabled <Boolean>: Disables the schedule.
      IsRecurringWeekly <Boolean>: If true, the StartTime and EndTime will get renewed every week.
      StartTime <String>: The date and time in UTC at which the schedule starts.
      TargetStandby <Single>: The standby target to maintain for the duration of the schedule.
      [Description <String>]: A short description about this schedule. For example, "Game launch on July 15th".
  [VMSize <String>]: Regional override for the VM size the build was created on.
 
UPDATEBUILDREGIONREQUEST <IUpdateBuildRegionRequest>: Updates a multiplayer server build's region.
  BuildId <String>: The guid string ID of the build we want to update regions for.
  BuildRegion <IBuildRegionParams>: The updated region configuration that should be applied to the specified build.
    MaxServers <Single>: The maximum number of multiplayer servers for the region.
    Region <String>: The build region.
    StandbyServers <Single>: The number of standby multiplayer servers for the region.
    [DynamicStandbySettings <IDynamicStandbySettings>]: Optional settings to control dynamic adjustment of standby target. If not specified, dynamic standby is disabled
      IsEnabled <Boolean>: When true, dynamic standby will be enabled
      [DynamicFloorMultiplierThresholds <IDynamicStandbyThreshold[]>]: List of auto standing by trigger values and corresponding standing by multiplier. Defaults to 1.5X at 50%, 3X at 25%, and 4X at 5%
        Multiplier <Single>: When the trigger threshold is reached, multiply by this value
        TriggerThresholdPercentage <Single>: The multiplier will be applied when the actual standby divided by target standby floor is less than this value
      [RampDownSeconds <Single?>]: The time it takes to reduce target standing by to configured floor value after an increase. Defaults to 30 minutes
    [MultiplayerServerCountPerVM <Single?>]: Regional override for the number of multiplayer servers to host on a single VM of the build.
    [ScheduledStandbySettings <IScheduledStandbySettings>]: Optional settings to set the standby target to specified values during the supplied schedules
      IsEnabled <Boolean>: When true, scheduled standby will be enabled
      [ScheduleList <ISchedule[]>]: A list of non-overlapping schedules
        EndTime <String>: The date and time in UTC at which the schedule ends. If IsRecurringWeekly is true, this schedule will keep renewing for future weeks until disabled or removed.
        IsDisabled <Boolean>: Disables the schedule.
        IsRecurringWeekly <Boolean>: If true, the StartTime and EndTime will get renewed every week.
        StartTime <String>: The date and time in UTC at which the schedule starts.
        TargetStandby <Single>: The standby target to maintain for the duration of the schedule.
        [Description <String>]: A short description about this schedule. For example, "Game launch on July 15th".
    [VMSize <String>]: Regional override for the VM size the build was created on.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
 
UPDATEBUILDREGIONSREQUEST <IUpdateBuildRegionsRequest>: Updates a multiplayer server build's regions.
  BuildId <String>: The guid string ID of the build we want to update regions for.
  BuildRegions <IBuildRegionParams[]>: The updated region configuration that should be applied to the specified build.
    MaxServers <Single>: The maximum number of multiplayer servers for the region.
    Region <String>: The build region.
    StandbyServers <Single>: The number of standby multiplayer servers for the region.
    [DynamicStandbySettings <IDynamicStandbySettings>]: Optional settings to control dynamic adjustment of standby target. If not specified, dynamic standby is disabled
      IsEnabled <Boolean>: When true, dynamic standby will be enabled
      [DynamicFloorMultiplierThresholds <IDynamicStandbyThreshold[]>]: List of auto standing by trigger values and corresponding standing by multiplier. Defaults to 1.5X at 50%, 3X at 25%, and 4X at 5%
        Multiplier <Single>: When the trigger threshold is reached, multiply by this value
        TriggerThresholdPercentage <Single>: The multiplier will be applied when the actual standby divided by target standby floor is less than this value
      [RampDownSeconds <Single?>]: The time it takes to reduce target standing by to configured floor value after an increase. Defaults to 30 minutes
    [MultiplayerServerCountPerVM <Single?>]: Regional override for the number of multiplayer servers to host on a single VM of the build.
    [ScheduledStandbySettings <IScheduledStandbySettings>]: Optional settings to set the standby target to specified values during the supplied schedules
      IsEnabled <Boolean>: When true, scheduled standby will be enabled
      [ScheduleList <ISchedule[]>]: A list of non-overlapping schedules
        EndTime <String>: The date and time in UTC at which the schedule ends. If IsRecurringWeekly is true, this schedule will keep renewing for future weeks until disabled or removed.
        IsDisabled <Boolean>: Disables the schedule.
        IsRecurringWeekly <Boolean>: If true, the StartTime and EndTime will get renewed every week.
        StartTime <String>: The date and time in UTC at which the schedule starts.
        TargetStandby <Single>: The standby target to maintain for the duration of the schedule.
        [Description <String>]: A short description about this schedule. For example, "Game launch on July 15th".
    [VMSize <String>]: Regional override for the VM size the build was created on.
  [CustomTags <IAny>]: The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/update-pfbuildregion
#>

function Update-PfBuildRegion {
[OutputType([PlayFab.Multiplayer.Models.IComponentsSiuvakResponsesEmptyresponseContentApplicationJsonSchema])]
[CmdletBinding(DefaultParameterSetName='Update', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')]
param(
    [Parameter(ParameterSetName='Update', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IUpdateBuildRegionRequest]
    # Updates a multiplayer server build's region.
    # To construct, see NOTES section for UPDATEBUILDREGIONREQUEST properties and create a hash table.
    ${UpdateBuildRegionRequest},

    [Parameter(ParameterSetName='Update1', Mandatory, ValueFromPipeline)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IUpdateBuildRegionsRequest]
    # Updates a multiplayer server build's regions.
    # To construct, see NOTES section for UPDATEBUILDREGIONSREQUEST properties and create a hash table.
    ${UpdateBuildRegionsRequest},

    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [Parameter(ParameterSetName='UpdateExpanded1', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The guid string ID of the build we want to update regions for.
    ${BuildId},

    [Parameter(ParameterSetName='UpdateExpanded', Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IBuildRegionParams]
    # The updated region configuration that should be applied to the specified build.
    # To construct, see NOTES section for BUILDREGION properties and create a hash table.
    ${BuildRegion},

    [Parameter(ParameterSetName='UpdateExpanded')]
    [Parameter(ParameterSetName='UpdateExpanded1')]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IAny]
    # The optional custom tags associated with the request (e.g.
    # build number, external trace identifiers, etc.).
    ${CustomTags},

    [Parameter(ParameterSetName='UpdateExpanded1', Mandatory)]
    [AllowEmptyCollection()]
    [PlayFab.Multiplayer.Category('Body')]
    [PlayFab.Multiplayer.Models.IBuildRegionParams[]]
    # The updated region configuration that should be applied to the specified build.
    # To construct, see NOTES section for BUILDREGIONS properties and create a hash table.
    ${BuildRegions},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [PlayFab.Multiplayer.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy},

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential},

    [Parameter(DontShow)]
    [PlayFab.Multiplayer.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            Update = 'PlayFabMultiplayerApi.private\Update-PfBuildRegion_Update';
            Update1 = 'PlayFabMultiplayerApi.private\Update-PfBuildRegion_Update1';
            UpdateExpanded = 'PlayFabMultiplayerApi.private\Update-PfBuildRegion_UpdateExpanded';
            UpdateExpanded1 = 'PlayFabMultiplayerApi.private\Update-PfBuildRegion_UpdateExpanded1';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Uploads an asset.
.Description
Uploads an asset.
.Example
PS C:\> New-PfAsset -FilePath C:\example.zip -AssetName example.zip
 
Version : 1.1
Content : System.Net.Http.StreamContent
StatusCode : Created
ReasonPhrase : Created
Headers : {[x-ms-request-id, System.String[]], [x-ms-version, System.String[]], [x-ms-request-server-encrypted,
                      System.String[]], [Date, System.String[]]...}
RequestMessage : Method: PUT, RequestUri: 'https://example.blob.core.windows.net/gameassets/example.zip?sv=2015-
                      04-05&ss=b&srt=sco&sp=rw&st=2021-05-07T16:17:02.6110864Z&se=2021-05-07T22:17:02.6110856Z&spr=https&sig=YOf
                      bOYfU5Po5Bu/Wpxx3VVPJPYsFAHRgflH4UCR9J7U=&api-version=2018-03-28&comp=blocklist', Version: 1.1, Content:
                      System.Net.Http.StringContent, Headers:
                      {
                        Content-Type: text/plain; charset=utf-8
                        Content-Length: 116
                      }
IsSuccessStatusCode : True
 
.Outputs
PlayFab.Multiplayer.Models.IApiErrorWrapper
.Outputs
PlayFab.Multiplayer.Models.IComponentsHvu8TvResponsesGetassetuploadurlresponseContentApplicationJsonSchema
.Outputs
System.Net.Http.HttpResponseMessage
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/new-pfasset
#>

function New-PfAsset {
[OutputType([PlayFab.Multiplayer.Models.IComponentsHvu8TvResponsesGetassetuploadurlresponseContentApplicationJsonSchema], [PlayFab.Multiplayer.Models.IApiErrorWrapper], [System.Net.Http.HttpResponseMessage])]
[CmdletBinding(PositionalBinding=$false)]
param(
    [Parameter(Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The path to the local file to upload.
    ${FilePath},

    [Parameter(Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The name of the asset to upload.
    ${AssetName},

    [Parameter()]
    [PlayFab.Multiplayer.Category('Body')]
    [System.Int32]
    # The size of the buffer used for uploading (in bytes).
    ${BufferSize}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            __AllParameterSets = 'PlayFabMultiplayerApi.custom\New-PfAsset';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}

<#
.Synopsis
Requests a Title EntityToken and sets it to an environment variable that is used in future MPS requests.
.Description
Requests a Title EntityToken and sets it to an environment variable that is used in future MPS requests.
.Example
PS C:\> Set-PfTitle -TitleId 1E03 -SecretKey CE5DM4156UQRMEK38I4QDG83EXMEJCFT7JXFAU78K1HOQ5HOCY | ConvertTo-Json -depth 5
 
{
  "code": 200,
  "status": "OK",
  "data": {
    "EntityToken": "M3x7ImkiOiIyMDIxLTAyLTE2VDIxOjQwOjQxLjczOTM2ODNaIiwiaWRwIjoiVW5rbm93biIsImUiOiIyMDIxLTAyLTE3VDIxOjQwOjQxLjczOTM2ODNaIiwiaCI6IjQ2RjJGRkNDOTFDRDdBQzciLCJzIjoiSGRBWGJFY3FFUXl1elhDUWRGanExQ2Y5NHpSY2JVRmRURGlZcHN3UVhyQT0iLCJlYyI6InRpdGxlITVGRUM4RTc3QjRENjIzRi8xRTAzLyIsImVpIjoiMUUwMyIsImV0IjoidGl0bGUifQ==",
    "TokenExpiration": "2021-02-17T21:40:41.739Z",
    "Entity": {
      "Id": "1E03",
      "Type": "title",
      "TypeString": "title"
    }
  }
}
 
.Outputs
System.Management.Automation.PSObject
.Link
https://docs.microsoft.com/en-us/powershell/module/playfabmultiplayerapi/set-pftitle
#>

function Set-PfTitle {
[OutputType([System.Management.Automation.PSObject])]
[CmdletBinding(PositionalBinding=$false)]
param(
    [Parameter(Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The PlayFab TitleId
    ${TitleId},

    [Parameter(Mandatory)]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The SecretKey for the title.
    ${SecretKey},

    [Parameter()]
    [PlayFab.Multiplayer.Category('Body')]
    [System.String]
    # The hostname to use for requests.
    # Defaults to "playfabapi.com".
    ${PlayFabApiHostName}
)

begin {
    try {
        $outBuffer = $null
        if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {
            $PSBoundParameters['OutBuffer'] = 1
        }
        $parameterSet = $PSCmdlet.ParameterSetName

        $mapping = @{
            __AllParameterSets = 'PlayFabMultiplayerApi.custom\Set-PfTitle';
        }
        $cmdInfo = Get-Command -Name $mapping[$parameterSet]
        [PlayFab.Multiplayer.Runtime.MessageAttributeHelper]::ProcessCustomAttributesAtRuntime($cmdInfo, $MyInvocation, $parameterSet, $PSCmdlet)
        $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet)
        $scriptCmd = {& $wrappedCmd @PSBoundParameters}
        $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin)
        $steppablePipeline.Begin($PSCmdlet)
    } catch {

        throw
    }
}

process {
    try {
        $steppablePipeline.Process($_)
    } catch {

        throw
    }

}
end {
    try {
        $steppablePipeline.End()

    } catch {

        throw
    }
} 
}