I don't think it is the customer's misunderstanding, rather maybe it is Digium's misunderstanding? What we want is an accurate method to pull all CDR records from Switchvox with the option to do so as near to the records being written to the database as possible. So we don't want realtime nor current call information but we want historical CDR as soon as we can get it without missing records. I am fine using Extend API if it does what we need.
How do you recommend we programmatically export the call log to an external system? The customer would like all calls be written to their external database within minutes of the call being written to the Switchvox CDR database. But I don't think that the Extend API favors this. Perhaps we'll have to be one day late? Or maybe export longer durations much later than desired? But I still think we'll miss records.
For example, let's say my script runs every hour and pulls all calls from the previous hour. Two consecutive runs might look like this:
1st run: time right now (script run time): 2012-06-06 10:00:01
<start_date>2012-06-06 09:00:00</start_date>
<end_date>2012-06-06 09:59:59</end_date>
2nd run: time right now (script run time): 2012-06-06 11:00:01
<start_date>2012-06-06 10:00:00</start_date>
<end_date>2012-06-06 10:59:59</end_date>
What happens if a call with start_date = 2012-06-06 09:10:00 and a call end_date 2012-06-06 10:05:00? Thus the call duration was 55 minutes and 1 second but it started within the first call start_date time and ended in the second call end_date time. Or what if another call start_date = 2012-06-06 09:55:00 and a call end_date 2012-06-06 10:05:00? Will these calls never be pulled by my script? If so then the only way to not miss calls is to have a start_date and end_date that is greater than the longest call possible (which theoretically is infinite

.
I guess I just need to know exactly what to expect from callLogs.search so that we can design around it or conclude that we can't reliably export CDR the way the customer wants.