|My initial comments, in no particular order, and based on myown personal goals for the API, are:
1. I want the API to start out focussing on an individual developer: you. The API (initially) is not something to allow members to trawl through thousands, or millions, of member records. It should, instead, provide information relevant to you, and to your profile and your experience on CodeProject.com.
2. I will be leveraging our Object References system which relies on an ObjectType ID / Object ID pair. Eg a member is ObjectTypeID = 1, so member #1 is identified uniquely across all objects using (1,1).
3. IsMVP should in fact be "MemberTypes" since a member could be Mentor, MVP, SubEditor etc.
4. You've made no mention of ratings, yet this is one of the things I see being a focus of many CP scrapers. I will be adding something along the lines of
GetVotes(int ObjectTypeID, int ObjectID, DateTime startDate). This allows you to get all votes for all your items, filtered by ObjectType (eg articles, messages etc), a single object, or all votes past a given date. Vote info will be date, score and weight.
5. Do you really want GetXByY methods, or GetX(sortMethod) methods? My preference, in order to keep the API small and extendable, is the latter.
6. In your Article structure you have a list of member IDs. I would prefer to return usable objects (say, name, ID, profile URL) to save an expected followup lookup.
7. Protocol. You mention using Windows WebServices. I was thinking of starting with JSON data initially with XML to follow immediately afterwards.
The Code Project | Co-founder
Microsoft C++ MVP