I work on a piece of software that connects to a number of different Infusionsoft databases via the xml api. About last week, across the board our these different instances of software started getting intermittent No Field Found errors retrieving objects from Infusionsoft (Contacts, Companies etc.).
I have struggled to reproduce in a dev environment as it happens only intermittently and for legitimate fields (legit as in they do exist).
Did something change in the API that anyone knows about?
This can happen if someone deletes a field and/or recreates it. The internal name will then have a number tacked on to the end of it and you need the exact internal name to reference it. so in your example error message, _ConsultScheduledTime may have changed to _ConsultScheduledTime0 (or 1 or so on). You would have to either have access to the app to view the db names or you would have to pull the new name using the DataFormField table.
That’s helping to give me some ideas. The behavior we are seeing is actually that the same field will return No Field Found and later not return an error. As well, all of these fields names are coming straight from the DataFormField table in the first place, so none of them should be Not Found.
However, I think the intermittent behavior we’ve been seeing might be misleading. If we toss that out, it could simply be that these fields were deleted, and for some other reason our dynamic schema (generated from DataFormField table) is not updating accordingly.
I’m following up on that theory now as I’ve found a case where the error is being returned consistently, but I don’t have direct access (at this moment) to the response from the DataFormField query, so I’m communication with the database owner directly to find out if this field has been deleted or not.
One more thing that might help to be aware of is if you are getting this error on a write method and you’re using addWithDupCheck, custom fields added to that list can be problematic. It’s one of the items we call “api gotcha’s”. So my solution in such cases has been to run the addWithDupCheck for just the standard contact fields, get the contact id back and then call dsUpdate to update the custom fields afterwards.