Thanks for leaning in Anthony. Alas, your pointer has not yielded a solution yet. Specifically, I looked at the powershell script and include the following relevant portion:
#region: POST - Add vCloud Org
"`nCreate vCloud Org..."
[String] $URL = $Proto + "://" + $Server + ":" + $Port + "/api/vCloud/orgConfigs"
$VCloudOrganizationConfigCreate = @{uri = $URL;
Method = 'POST';
Headers = @{'X-RestSvcSessionId' = $AuthXML.Headers['X-RestSvcSessionId'];
'Content-Type' = 'application/xml'}
Body = @"
<VCloudOrganizationConfigCreateSpec xmlns="
http://www.veeam.com/ent/v1.0" xmlns:xsd="
http://www.w3.org/2001/XMLSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance">
<OrganizationName>$org</OrganizationName>
<BackupServerUid>$BRServerUID</BackupServerUid>
<RepositoryUid>$BRRepoUID</RepositoryUid>
<QuotaGb>$Quota</QuotaGb>
<TemplateJobUid>$BRJobUID</TemplateJobUid>
<JobSchedulerType>Full</JobSchedulerType>
</VCloudOrganizationConfigCreateSpec>
"@
}
$VCloudOrganizationConfigCreateXML = Invoke-RestMethod @VCloudOrganizationConfigCreate -ErrorAction Stop
#endregion
Which is remarkably close to my own construction. The two obvious differences for me are:
1. I was not including the header 'Content-Type'.
2. I was not including the TemplateJobUid tag in my XML
So I adjusted my code to add the Content-type. The XML does not require the TemplateJobUid (according to the documentation), but I added that tag anyway.
Alas the results were identical: <Error Message=\"Specify VCloudOrganizationConfigCreateSpecType\"
I can add that I'm using API v1.3. I don't know the differences between this and 1.2. However, if I switch to 1.2 I can't even authenticate against the API with the same credentials. So I'd prefer not to go down to figure out the differences in the API from 1.2 to 1.3