You are viewing an old version of this page. View the current version.
Compare with Current
View Version History
Version 1
Next »
In order to protect our servers from inadvertent service overuse or intentional attack, and to fairly distribute services to all our customers, we have implemented a rate limiting algorithm. When fully deployed, this new algorithm will cause services to either succeed with new warnings or fail with new errors when services are consumed at too high a rate. Programs that consume Projector services should be enhanced to handle rate limiting errors so that they can continue functioning properly. All Service Suites will be subject to Rate Limiting: PWS Services, Legacy Services, and Reporting Services.
This new mechanism for Rate Limiting will augment our existing throttling behavior, and will not replace it.
Best practices for programmatically handling rate limit errors is to pause all attempts to invoke Projector Services for a period of time after a rate limit error is raised, and then to retry failed invocations after that pause. If you specify a pause that is less than the rolling window size (currently 60 seconds), you may want to iteratively use your handling until 60 seconds have elapsed since the first failure. Please consider pausing for at least five seconds before any retries.
Request Usage Example(s)
ALGORITHM DESCRIPTION:
Element | Data Type | Required? | Default | Description | Sample Data |
---|
RequestId | Int32 | No |
| Click here for more information | 1 |
SessionTicket | String (50) | Yes |
| Click here for more information | ATAj5CRx7eosFAdLjFCVyg== |
ClientIdentities | PwsClientRef [1..100] | Yes |
| These are the identities of the clients to be fetched. |
|
Request Usage Example(s)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pws="http://projectorpsa.com/PwsProjectorServices/" xmlns:req="http://projectorpsa.com/DataContracts/Requests/" xmlns:com="http://projectorpsa.com/DataContracts/Shared/Common/">
<soapenv:Header/>
<soapenv:Body>
<pws:PwsGetClient>
<pws:serviceRequest>
<req:RequestId>1</req:RequestId>
<req:SessionTicket>ATAj5CRx7eosFAdLjFCVyg==</req:SessionTicket>
<req:ClientIdentities>
<com:PwsClientRef>
<com:ClientNumber>C000158</com:ClientNumber>
</com:PwsClientRef>
</req:ClientIdentities>
</pws:serviceRequest>
</pws:PwsGetClient>
</soapenv:Body>
</soapenv:Envelope>
Response Elements
Response Usage Example(s)
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<PwsGetClientResponse xmlns="http://projectorpsa.com/PwsProjectorServices/">
<PwsGetClientResult xmlns:a="http://projectorpsa.com/DataContracts/Responses/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Messages xmlns="http://projectorpsa.com/CommonServices/" xmlns:b="http://projectorpsa.com/DataContracts/Shared/Common/">
<b:PwsMessage>
<b:AdditionalErrorText>Message 136: This request was executed against the QA [appqa.projectorpsa.com] environment.</b:AdditionalErrorText>
<b:ErrorCode>NonProductionEnvironment</b:ErrorCode>
<b:ErrorNumber>136</b:ErrorNumber>
<b:ErrorText>This web service request was executed against a non-production instance of Projector.</b:ErrorText>
<b:Type>Information</b:Type>
<b:ReferenceId1 i:nil="true"/>
<b:ReferenceId2 i:nil="true"/>
</b:PwsMessage>
</Messages>
<ResponseId xmlns="http://projectorpsa.com/CommonServices/">1</ResponseId>
<Status xmlns="http://projectorpsa.com/CommonServices/">Ok</Status>
<ServerTimestampUtc xmlns="http://projectorpsa.com/CommonServices/">2023-11-06T18:17:57.6501708Z</ServerTimestampUtc>
<a:Clients xmlns:b="http://projectorpsa.com/DataContracts/Shared/Common/">
<b:PwsClientElement>
<b:ClientDetail>
<b:ClientId i:nil="true"/>
<b:ClientNumber>C000158</b:ClientNumber>
<b:ClientUid>1152921504607017770</b:ClientUid>
<b:ClientName>Projector PSA</b:ClientName>
<b:InactiveFlag>false</b:InactiveFlag>
<b:ParentClientIdentity i:nil="true"/>
<b:Address>
<b:AddressLine1>98 N Washington Street</b:AddressLine1>
<b:AddressLine2 i:nil="true"/>
<b:Attention i:nil="true"/>
<b:City>Boston</b:City>
<b:CompanyName>Projector PSA</b:CompanyName>
<b:Country>United States</b:Country>
<b:StateOrProvince>MA</b:StateOrProvince>
<b:ZipOrPostalCode>02114</b:ZipOrPostalCode>
</b:Address>
<b:BillingCycleIdentity>
<b:BillingCycleId i:nil="true"/>
<b:BillingCycleName>Monthly</b:BillingCycleName>
<b:BillingCycleUid>1152921504606853180</b:BillingCycleUid>
</b:BillingCycleIdentity>
<b:BillingInstructions i:nil="true"/>
<b:ClientMessage i:nil="true"/>
<b:ClientMessagePlain i:nil="true"/>
<b:InheritAddressFlag>false</b:InheritAddressFlag>
<b:InheritBillingCycleFlag>false</b:InheritBillingCycleFlag>
<b:InheritBillingInstructionsFlag>false</b:InheritBillingInstructionsFlag>
<b:InheritClientMessageFlag>false</b:InheritClientMessageFlag>
<b:InheritInvoiceContentFlag>false</b:InheritInvoiceContentFlag>
<b:InheritInvoiceScopeFlag>false</b:InheritInvoiceScopeFlag>
<b:InheritInvoiceTemplateFlag>false</b:InheritInvoiceTemplateFlag>
<b:InheritPaymentTermFlag>false</b:InheritPaymentTermFlag>
<b:InheritPurchaseOrderNumberFlag>false</b:InheritPurchaseOrderNumberFlag>
<b:InheritStandardRatesFlag>true</b:InheritStandardRatesFlag>
<b:InheritTimeBillingTypeFlag>false</b:InheritTimeBillingTypeFlag>
<b:InvoiceContent>B</b:InvoiceContent>
<b:InvoiceScope>E</b:InvoiceScope>
<b:InvoiceTemplateIdentity i:nil="true"/>
<b:NewClientNumber i:nil="true"/>
<b:PaymentTermIdentity>
<b:PaymentTermId i:nil="true"/>
<b:PaymentTermName>Net 30</b:PaymentTermName>
<b:PaymentTermUid>1152921504606856054</b:PaymentTermUid>
</b:PaymentTermIdentity>
<b:PurchaseOrderNumber i:nil="true"/>
<b:StandardBillingAdjustedDiscountPercent i:nil="true"/>
<b:StandardContractDiscountPercent i:nil="true"/>
<b:StandardRateCardIdentity i:nil="true"/>
<b:TimeBillingType>H</b:TimeBillingType>
<b:Timestamp>AAAAADI328g=</b:Timestamp>
<b:UserDefinedFields/>
<b:InheritInvoiceEmailSettingsFlag>false</b:InheritInvoiceEmailSettingsFlag>
<b:InvoiceEmailSettings>
<b:EmailFromUserIdentity i:nil="true"/>
<b:EmailInvoiceTemplateIdentity i:nil="true"/>
<b:InvoiceEmailEnabledFlag>false</b:InvoiceEmailEnabledFlag>
<b:InvoiceEmailType i:nil="true"/>
<b:Recipients/>
</b:InvoiceEmailSettings>
<b:InheritRenderReceiptsFlag>false</b:InheritRenderReceiptsFlag>
<b:RenderReceiptsFlag>false</b:RenderReceiptsFlag>
<b:AutoApplyAvailableBalanceFlag>false</b:AutoApplyAvailableBalanceFlag>
<b:InheritAutoApplyAvailableBalanceFlag>false</b:InheritAutoApplyAvailableBalanceFlag>
<b:InheritTaxTypesFlag>true</b:InheritTaxTypesFlag>
<b:TaxType1Identity i:nil="true"/>
<b:TaxType2Identity i:nil="true"/>
<b:TaxType3Identity i:nil="true"/>
<b:InheritRenderedInvoiceFormatFlag>false</b:InheritRenderedInvoiceFormatFlag>
<b:RenderedInvoiceFormat>P</b:RenderedInvoiceFormat>
<b:Prefix>PPSA</b:Prefix>
</b:ClientDetail>
<b:InvoiceRecipients/>
<b:NumClientLevels>4</b:NumClientLevels>
</b:PwsClientElement>
</a:Clients>
</PwsGetClientResult>
</PwsGetClientResponse>
</s:Body>
</s:Envelope>
PwsGetClient - Common Errors and Warnings
ErrorNumber | ErrorCode | ErrorText |
---|
11038 | NoClientsSpecified | No clients were specified for retrieval by this request.
|
11040 | MaximumClientIdentitiesExceeded | Please specify between 1 and 100 client identities for retrieval.
|
50045 | ViewPermissionDenied | You do not have permission to view this item.
|
57631 | ClientNotSpecified | A specified client identity was incomplete. Each client identity must specify either a client id, client uid or client number.
|
57634 | UnexpectedErrorRetrievingClients | There was an unexpected error while trying to retrieve a client.
|