Skip to end of metadata
Go to start of metadata

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:

ElementData TypeRequired?DefaultDescriptionSample Data
RequestIdInt32No
Click here for more information
1
SessionTicketString (50)Yes
Click here for more information
ATAj5CRx7eosFAdLjFCVyg==
ClientIdentitiesPwsClientRef [1..100]Yes
These are the identities of the clients to be fetched.

Request Usage Example(s)


PwsGetClientRq
<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 Format


PwsGetClientRs


Response Elements


ElementData TypeDescriptionSample Data
MessagesPwsMessage[]

The web service response status and message. Click here for more information.


ResponseIdInt32Click here for more information1
StatusRequestStatusClick here for more informationOk
ServerTimestampUtcDateTimeClick here for more information
2023-11-06T18:17:57.6501708Z
ClientsPwsClientElement [0..100]Details of the clients that were fetched


Response Usage Example(s)


PwsGetClientRs
<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

ErrorNumberErrorCodeErrorText
11038NoClientsSpecifiedNo clients were specified for retrieval by this request.
11040MaximumClientIdentitiesExceededPlease specify between 1 and 100 client identities for retrieval.
50045ViewPermissionDeniedYou do not have permission to view this item.
57631ClientNotSpecifiedA specified client identity was incomplete. Each client identity must specify either a client id, client uid or client number.
57634UnexpectedErrorRetrievingClientsThere was an unexpected error while trying to retrieve a client.
  • No labels