@@ -290,6 +290,32 @@ def complex_filter(left_operand, logical_operator, right_operand):
290
290
}
291
291
292
292
293
+ def search_filter_for_rest_call (search_filter ):
294
+ if 'LeftOperand' in search_filter : # Complex Filter
295
+ left_operand = search_filter_for_rest_call (search_filter ['LeftOperand' ])
296
+ logical_operator = search_filter ['LogicalOperator' ]
297
+ right_operand = search_filter_for_rest_call (search_filter ['RightOperand' ])
298
+ return "{}%20{}%20{}" .format (left_operand , logical_operator , right_operand )
299
+ else : # Simple Filter
300
+ prop = search_filter ['Property' ]
301
+ operator = operator_for_rest_call (search_filter ['SimpleOperator' ])
302
+ value = search_filter .get ('Value' , search_filter .get ('DateValue' ))
303
+ return "{}%20{}%20'{}'" .format (prop , operator , value )
304
+
305
+
306
+ def operator_for_rest_call (operator ):
307
+ operators = {
308
+ 'equals' : 'eq' ,
309
+ 'notEquals' : 'neq' ,
310
+ 'greaterThan' : 'gt' ,
311
+ 'greaterThanOrEqual' : 'gte' ,
312
+ 'lessThan' : 'lt' ,
313
+ 'lessThanOrEqual' : 'lte' ,
314
+ 'like' : 'like'
315
+ }
316
+ return operators [operator ]
317
+
318
+
293
319
class ET_API :
294
320
295
321
client = None
@@ -422,6 +448,36 @@ def get_data_extension_columns(self, customer_key, property_list=None):
422
448
def get_list_subscriber (self , search_filter = None , property_list = None ):
423
449
return self .get_objects (ObjectType .LIST_SUBSCRIBER , search_filter , property_list )
424
450
451
+ def get_data_extension_rows_rest (self , customer_key , search_filter = None , property_list = None , order_by = None , page_size = None , page = None ):
452
+ headers = {'content-type' : 'application/json' , 'Authorization' : 'Bearer {}' .format (self .client .authToken )}
453
+ endpoint = "{}data/v1/customobjectdata/key/{}/rowset?" .format (self .client .base_api_url , customer_key )
454
+
455
+ if search_filter :
456
+ endpoint += "&$filter={}" .format (search_filter_for_rest_call (search_filter ))
457
+
458
+ if property_list :
459
+ endpoint += "&$fields={}" .format ("," .join (property_list ))
460
+
461
+ if order_by :
462
+ endpoint += "&$orderBy={}" .format (order_by )
463
+
464
+ if page_size :
465
+ endpoint += "&$pagesize={}" .format (page_size )
466
+
467
+ if page :
468
+ endpoint += "&$page={}" .format (page )
469
+
470
+ result = []
471
+ r = requests .get (endpoint , headers = headers )
472
+ if r .status_code == 200 and r .json ()['count' ]:
473
+ result = r .json ()['items' ]
474
+ while 'next' in r .json ()['links' ]:
475
+ endpoint = '{}data{}' .format (self .client .base_api_url , r .json ()['links' ]['next' ])
476
+ r = requests .get (endpoint , headers = headers )
477
+ if r .status_code == 200 and r .json ()['count' ]:
478
+ result += r .json ()['items' ]
479
+ return result
480
+
425
481
def get_data_extension_rows (self , customer_key , search_filter = None , property_list = None ):
426
482
de_row = FuelSDK .ET_DataExtension_Row ()
427
483
de_row .auth_stub = self .get_client ()
0 commit comments