.. _quickstart_guide:
Quickstart guide
================
Authentication
--------------
The Yammer API requires you to authenticate via OAuth 2, so you'll need a
``client_id`` and ``client_secret`` which you will be given when you register
your application with Yammer here: http://www.yammer.com/client_applications
To authenticate your application:
1. Build a :class:`yampy.Authenticator` using the ``client_id`` and
``client_secret`` you were given when you registered your application::
import yampy
authenticator = yampy.Authenticator(client_id=MY_CLIENT_ID,
client_secret=MY_CLIENT_SECRET)
2. Send your user to the authorization URL where they can grant your application
access to their Yammer account. You can construct the authorization URL using
the ``Authenticator``, specifying the URL you want Yammer to return the user
to when they are finished::
redirect_uri = "http://example.com/auth/callback"
auth_url = authenticator.authorization_url(redirect_uri=redirect_uri)
3. Once the user has authorized or denied your application, they will be sent to
the ``redirect_url`` you specified. If the user has granted your application
permission, a ``code`` parameter will be given in the query string. If
something went wrong an ``error`` parameter will be passed instead. See the
`authentication section of the Yammer API documentation
`_ for more information.
Assuming everything went well, you can use the ``Authenticator`` to exchange
your ``code`` for an access token::
access_token = authenticator.fetch_access_token(code)
If you require user and network information -- for example, if you want to
store the Yammer user ID in your application's user model -- then you can use
the ``fetch_access_data`` method instead::
access_data = authenticator.fetch_access_data(code)
access_token = access_data.access_token.token
user_info = access_data.user
network_info = access_data.network
Making requests
---------------
Once you have an access token you can create a :class:`yampy.Yammer` instance
and start making requests to the API::
import yampy
yammer = yampy.Yammer(access_token=access_token)
Messages
~~~~~~~~
You can make `message-related requests
`_ using the ``messages``
property on your ``Yammer`` instance. These are just a few examples, see the
:class:`yampy.apis.MessagesAPI` class for details::
import yampy
yammer = yampy.Yammer(access_token=access_token)
# Get a list of messages
yammer.messages.all()
yammer.messages.from_my_feed()
yammer.messages.from_user(a_user)
# Post a new messages
yammer.messages.create("Hello developers", group_id=developers_group_id,
topics=["Python", "API", "Yammer"])
# Delete a message
yammer.messages.delete(a_message)
# Like messages
yammer.messages.like(a_message)
yammer.messages.unlike(a_message)
Users
~~~~~
You can make `user-related requests
`_ using the ``users``
property on your ``Yammer`` instance. These are just a few examples, see the
:class:`yampy.apis.UsersAPI` class for details::
import yampy
yammer = yampy.Yammer(access_token=access_token)
# Get a list of users
yammer.users.all()
yammer.users.in_group(a_group_id)
# Find a specific user
yammer.users.find(a_user_id)
yammer.users.find_by_email("user@example.com")
# Find the logged in user
yammer.users.find_current()
# Create a new user
yammer.users.create("user@example.org", full_name="John Doe")
# Update a user
yammer.users.update(a_user, summary="An example user")
# Suspend and delete users
yammer.users.suspend(a_user)
yammer.users.delete(a_user)
Other API endpoints
~~~~~~~~~~~~~~~~~~~
For other endpoints in the Yammer REST API, you will need to use Yampy's HTTP
API. Use the ``client`` property on your ``Yammer`` instance.
For example, to get a list of org chart relationships you would make this HTTP
request::
GET https://www.yammer.com/api/v1/relationships.json?access_token=...
You can do this easily with the Yampy client::
yammer = yampy.Yammer(access_token)
yammer.client.get("/relationships")
See the `REST API documentation `_ for a
full list of API endpoints, and the :class:`yampy.client.Client` class for details of
the Python interface.