Thanks, that clears things up for me, & thanks for taking the time to reply to my many inquires, it'll make actually implementing it a lot easier :)

        -- Chris

On Jul 15, 2008, at 1:32 AM, John Panzer wrote:

John Panzer (http://abstractioneer.org)

On Mon, Jul 14, 2008 at 4:15 PM, Chris Chabot <[EMAIL PROTECTED]> wrote:

No wonder i was confused.

Section 6.1 says:
"Friends may be added by POSTing to the appropriate collection (e.g.,
/people/{guid}/@friends). Containers MAY require a dual opt-in process before the friend record appears in the collection, and in this case SHOULD return a 202 Accepted response, indicating that the request is 'in flight'
and may or may not be ultimately successful."

While in the batching example this is adding a friend:
POST /people/@me/@all HTTP/1.1
Host: api.example.org
Content-Type: application/json

...representation of new Person elided...

So to add a friend you do a ....

POST to /people/{guid}/@friends
OR
POST to /people/@me/@all

Which is it? Both? Neither? Pick one and pray it works? :)


Typo! Since you're adding a friend specifically, it should be @friends. (The {guid}/@me is just a red herring here. Though if you're a third party
server trusted to add friends willy-nilly, you can do this.)



Besides, the 'representation of a new Person', would insinuate a complete person object representation, not an Person ID of a person you want to
befriend ... right? Why would you want to post a complete person
representation to make a friend, that makes no sense to me (a waste of bandwidth and require an extra round trip in some situations), when just an
ID would suffice? And if the latter is correct (just the ID) what
representation would be correct for that?


It says representation, not 'complete representation' :). The idea is to cover the existing functionality offered by things like social networks (at
least) by letting the client supply the best information it has:
1. If you have the ID, use it.
2. If you have another unique key, like email, use that.
3. If you have something else, like IM address, use that.
4. If you have some combination of data that's sufficiently unique, or may
be, give it a shot.

In cases where you have an unambiguous identifier (ID, email address, etc.) then you use it. A container can also let you try to add a friend given sufficient information (city, organization, and name for example might work for some SNs; obviously this is getting into container-specific territory
but the syntax is uniform).

But to get back to brass tacks, if you have the ID somehow then you just supply it: {"id" : "example.org:34KJDCSKJN2HHF0DW20394"}. The container
accepts that representation of a Person and hands back to you either a
fuller representation when you ask for it (GET) or it tells you 'wait a bit,
let me see if this is ok' with a 202.




      -- Chris


On Jul 15, 2008, at 12:24 AM, John Panzer wrote:

There's a spec diff proposal floating around on opensocial-and- gadgethat I
think explains the intent here: "Clarification on RESTful People API,
connections vs. contact records, and invitation workflow" (thread

http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/2d542afdaf412c04
).
The example above was about how to make a link to a person, or start the workflow to make a link, not about how to create a new account in the SN. (Which actually would be an interesting operation to define, particularly for sites which have trusted partners who want to provision new accounts,
but it's clearly a P2 spec feature.)




Reply via email to