Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

REST API woocommerce - Not showing all customers on GET/customers

Problem summary

I am trying to fetch all customers with POSTMAN using the latest woocommerce API (v3):

GET/customers 

Yet only a small segment is returned. The number of customers returned is 28 (X-WP-Total) which is much less than the 150+ customers I have in the system.

Do you guys have any ideas on why only a subset of all customers are being returned instead of all? Does this have anything to do with how I configure woocommerce? Or am I just using the API incorrectly?

What i have tried

My goal is to create a small application to look up a customer by phone/email and then fetch the orders he had made.

Calling

GET/customers 

Only returns a small subset of all customers and the rest is omitted.

Any customers omitted from the GET/customers will also return an empty array when i for example use

GET/customers?email=...
GET/customers?search=...

The requests returns an empty array on the omitted customers but works on customers that was not omitted from:

GET/customers 

Yet, given a known omitted customer ID, it is possible to look up that customer by sending a request to

GET/customer/{ID} 

which does not make sense at all.

like image 518
Dennis Thinh Tan Nguyen Avatar asked Dec 22 '22 23:12

Dennis Thinh Tan Nguyen


1 Answers

The solution is to set:

GET/customers?role=all

I figured that GET/customers only return by default customers whose role is 'customer'.

However, since I also make use of memberships/subscriptions, a customer would automatically get a new role assigned ('subscriber') whenever they opt-in for a membership. That customer would therefore not be included in the response since his role is no longer 'customer'.

Hope this helps anyone who stumbles upon the same problem.

like image 95
Dennis Thinh Tan Nguyen Avatar answered May 16 '23 08:05

Dennis Thinh Tan Nguyen