Search code examples
pythondjangosudsservicenow

How to filter by __encoded_query using suds?


How can I filter results with __encoded_query using SUDS api?

I have it, but doesnt work:

client = Client(WSDL_URL, username=USERNAME, password=PASSWORD)
records = client.service.getRecords(__limit = 100, __encoded_query='incident_state=3')

Solution

  • One way to filter results is using __inject:

       msg = \
              """<?xml version="1.0" encoding="UTF-8"?>
              <SOAP-ENV:Envelope xmlns:ns0="http://www.service-now.com/incident" 
                  xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" 
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
              <SOAP-ENV:Header/>
                  <ns1:Body>
                      <ns0:getRecords>
                          <ns0:__encoded_query>status=0</ns0:__encoded_query>
                      </ns0:getRecords>
                  </ns1:Body>
              </SOAP-ENV:Envelope>
                """
    
        records = client.service.getRecords(__inject = {'msg' : msg})