I think I understand that a webhook "Callback" is itself comprised of several "Callback Events", each of which may have its own changeAgent property, a string with a comma-separated list of change agents. Further I understand how I may append my own changeAgent designator in the SmartsheetChangeAgent header of any API I invoke to Create, Update, or Delete something in Smartsheet, so that I can investigate a callback and avoid infinite loops.
I can completely see that if all the events in the callback have my changeAgent designator, I can ignore the callback.
But.... if I am not ignoring the callback, my code may make many changes to the Smartsheet (as part of my syncronization process) that may involve bulk operations that involve some entities in the Callback Events, maybe some entities that are NOT in the Callback Events, and and some that may have some other 3rd party webhook designations that may differ from others..... of course I can place my own agent designation on all API calls, but it doesn't seem deterministically clear to me how to figure out what OTHER agent designations to keep on that 512 character string.
For example, say I receive a callback with three events, each of which lists three different change agents. Now say I am going to do a single bulk update of all three of the entities that led to the Callback Events, but that bulk update will ALSO include other entities that are NOT part of the event. If I am playing nicely, how should I set the SmartsheetChangeAgent? Is it OK to set it JUST to my changeAgent, and strip out all the others (seems unfair). But if I include all the others, that seems also problematic because some other webhook not in my control may get that event about a change that I made, but is now marked with THEIR changeagent designator.
It is hard to find the words to make this question clear.... I hope this is sufficient!