AppSource/Get-AppSourceSubmission.ps1
<#
.Synopsis Get information about a submission of an AppSource product from the authenticated account .Description Returns a PSCustomObject with submission details .Parameter authContext Authentication Context from New-BcAuthContext .Parameter productId Id of the product for which you want to get a submission .Parameter submissionId Id of the submission for which you want to get information or leave empty for latest submission .Parameter includeWorkflowDetails Include this switch if you want to include workflow details for the submission .Parameter silent Include this switch if you do not want the method to display URLs etc. .Example Get-AppSourceSubmission -authContext $authcontext -productId $productId -includeWorkflowDetails GET https://api.partner.microsoft.com/v1.0/ingestion/products/5fbe0803-a545-4504-b41a-d9d158112360/submissions GET https://api.partner.microsoft.com/v1.0/ingestion/products/5fbe0803-a545-4504-b41a-d9d158112360/submissions/1152921505695125040 GET https://api.partner.microsoft.com/v1.0/ingestion/products/5fbe0803-a545-4504-b41a-d9d158112360/submissions/1152921505695125040/workflowdetails resourceType : Submission state : Published substate : InStore targets : {@{type=Scope; value=Preview}} resources : {@{type=Availability; value=4b8c7499-1cb3-acf6-9b5b-c45d2a7040e2}, @{type=Listing; value=0202f16e-e12b-a657-124e-27ed76542ad5}, @{type=Package; value=2d212b32-f3f4-4d43-ac9b-5783f7a6099f}, @{type=Property; value=ae0f3f9e-b893-bbde-4dd1-3ac0b50496ef}...} publishedTimeInUtc : 2022-08-04T13:53:31.2590809Z pendingUpdateInfo : @{updateType=Create; status=Completed} releaseNumber : 28 friendlyName : Submission 28 areResourcesReady : True id : 1152921505695125040 WorkflowDetails : {@{type=Push; state=Success; targetEnvironment=Preview; workflowSteps=System.Object[]; startDateTimeInUtc=2022-08-04T10:37:37.4038218; completeDateTimeInUtc=2022-08-04T10:51:26.8132496}, @{type=Push; state=Success; targetEnvironment=Live; workflowSteps=System.Object[]; startDateTimeInUtc=2022-08-04T10:51:57.0499235; completeDateTimeInUtc=2022-08-04T13:53:30.8277395}} .Example Get-AppSourceSubmission -authContext $authcontext -productId $productId -submissionid '1152921505695125040' -silent resourceType : Submission state : Published substate : InStore targets : {@{type=Scope; value=Preview}} resources : {@{type=Availability; value=4b8c7499-1cb3-acf6-9b5b-c45d2a7040e2}, @{type=Listing; value=0202f16e-e12b-a657-124e-27ed76542ad5}, @{type=Package; value=2d212b32-f3f4-4d43-ac9b-5783f7a6099f}, @{type=Property; value=ae0f3f9e-b893-bbde-4dd1-3ac0b50496ef}...} publishedTimeInUtc : 2022-08-04T13:53:31.2590809Z pendingUpdateInfo : @{updateType=Create; status=Completed} releaseNumber : 28 friendlyName : Submission 28 areResourcesReady : True id : 1152921505695125040 #> function Get-AppSourceSubmission { Param( [Parameter(Mandatory=$true)] [HashTable] $authContext, [Parameter(Mandatory=$true)] [string] $productId, [Parameter(Mandatory=$false)] [string] $submissionId = '', [switch] $includeWorkflowDetails, [switch] $silent ) $telemetryScope = InitTelemetryScope -name $MyInvocation.InvocationName -parameterValues $PSBoundParameters -includeParameters @() try { if (-not $submissionId) { $submissions = @(Invoke-IngestionApiGetCollection -authContext $authContext -path "/products/$productId/submissions" -silent:($silent.IsPresent)) if ($submissions.Count -eq 0) { return } $submissionId = ($submissions | Select-Object -Last 1).Id } $submission = Invoke-IngestionApiGet -authContext $authContext -path "/products/$productId/submissions/$submissionId" -silent:($silent.IsPresent) if (!$submission) { throw "Submission with ID $submissionId cannot be found" } if ($includeWorkflowDetails) { $submission | Add-Member -MemberType NoteProperty -Name "WorkflowDetails" -Value @(Invoke-IngestionApiGetCollection -authContext $authContext -path "/products/$($productId)/submissions/$($submission.id)/workflowdetails" -silent:($silent.IsPresent)) } $submission } catch { TrackException -telemetryScope $telemetryScope -errorRecord $_ throw } finally { TrackTrace -telemetryScope $telemetryScope } } Export-ModuleMember -Function Get-AppSourceSubmission |