Clean up documentation and add documentation on activities
This commit is contained in:
parent
7eac1e6d6b
commit
90b78c4a28
186
docs/source/api/activities.rst
Normal file
186
docs/source/api/activities.rst
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
.. MediaGoblin Documentation
|
||||||
|
|
||||||
|
Written in 2011, 2012 by MediaGoblin contributors
|
||||||
|
|
||||||
|
To the extent possible under law, the author(s) have dedicated all
|
||||||
|
copyright and related and neighboring rights to this software to
|
||||||
|
the public domain worldwide. This software is distributed without
|
||||||
|
any warranty.
|
||||||
|
|
||||||
|
You should have received a copy of the CC0 Public Domain
|
||||||
|
Dedication along with this software. If not, see
|
||||||
|
<http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
==========
|
||||||
|
Activities
|
||||||
|
==========
|
||||||
|
|
||||||
|
.. contents:: Sections
|
||||||
|
:local:
|
||||||
|
|
||||||
|
GNU MediaGoblin uses `Activity Streams 1.0 <http://activitystrea.ms>`_ JSON
|
||||||
|
format to represent activities or events that happen. There are several
|
||||||
|
components to Activity Streams.
|
||||||
|
|
||||||
|
Objects
|
||||||
|
-------
|
||||||
|
These represent "things" in MediaGoblin such as types of media, comments, collections
|
||||||
|
of other objects, etc. There are attributes all objects have and some attributes which
|
||||||
|
are specific to certain objects.
|
||||||
|
|
||||||
|
Example
|
||||||
|
^^^^^^^
|
||||||
|
a representation of an image object::
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "https://gmg.server.tld/api/image/someidhere",
|
||||||
|
"objectType": "image",
|
||||||
|
"content": "My lovely image",
|
||||||
|
"image": {
|
||||||
|
"url": "https://gmg.server.tld/mgoblin_media/media_entries/23/some_image.jpg",
|
||||||
|
"height": 1000,
|
||||||
|
"width": 500
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"id": "acct:someone@gmg.server.tld"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
This has both attributes which are on all objects (e.g. ``objectType`` and ``id``)
|
||||||
|
and attributes which are on only images (e.g. ``image``).
|
||||||
|
|
||||||
|
Activities
|
||||||
|
----------
|
||||||
|
This is something which happens such as: commenting on an image, uploading an image, etc.
|
||||||
|
these always have a ``verb`` which describes what kind of activity it is and they always have
|
||||||
|
an ``object`` associated with them.
|
||||||
|
|
||||||
|
Example
|
||||||
|
^^^^^^^
|
||||||
|
A activity which describes the event of posting a new image::
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "https://gmg.server.tld/api/activity/someidhere",
|
||||||
|
"verb": "post",
|
||||||
|
"object": {
|
||||||
|
"id": "https://gmg.server.tld/api/comment/someid",
|
||||||
|
"objectType": "comment",
|
||||||
|
"content": "What a wonderful picture you have there!",
|
||||||
|
"inReplyTo": {
|
||||||
|
"id": "https://gmg.server.tld/api/image/someidhere"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"id": "acct:someone@gmg.server.tld"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections
|
||||||
|
-----------
|
||||||
|
These are ordered lists which contain objects. Currently in GNU MediaGoblin they are used
|
||||||
|
to represent "albums" or collections of media however they can represent anything. They will
|
||||||
|
be used in the future to represent lists/groups of users which you can send activities to.
|
||||||
|
|
||||||
|
Example
|
||||||
|
^^^^^^^
|
||||||
|
A collection which contains two images::
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "https://gmg.server.tld/api/collection/someidhere",
|
||||||
|
"totalItems": 2,
|
||||||
|
"url": "http://gmg.server.tld/u/someone/collection/cool-album/",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"id": "https://gmg.server.tld/api/image/someidhere",
|
||||||
|
"objectType": "image",
|
||||||
|
"content": "My lovely image",
|
||||||
|
"image": {
|
||||||
|
"url": "https://gmg.server.tld/mgoblin_media/media_entries/23/some_image.jpg",
|
||||||
|
"height": 1000,
|
||||||
|
"width": 500
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"id": "acct:someone@gmg.server.tld"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "https://gmg.server.tld/api/image/someother",
|
||||||
|
"objectType": "image",
|
||||||
|
"content": "Another image for you",
|
||||||
|
"image": {
|
||||||
|
"url": "https://gmg.server.tld/mgoblin_media/media_entries/24/some_other_image.jpg",
|
||||||
|
"height": 1000,
|
||||||
|
"width": 500
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"id": "acct:someone@gmg.server.tld"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
Feeds
|
||||||
|
=====
|
||||||
|
|
||||||
|
There are several feeds which can be read and posted to as part of the API. Some
|
||||||
|
of the feeds are still a work in progress however a lot of them are present for
|
||||||
|
compatibility.
|
||||||
|
|
||||||
|
Inbox
|
||||||
|
-----
|
||||||
|
|
||||||
|
**Endpoint:** `/api/user/<username>/inbox`
|
||||||
|
|
||||||
|
This feed can be read by user to see what media has been sent to them.
|
||||||
|
MediaGoblin currently doesn't have the ability to sent media to anyone
|
||||||
|
as all media is public, all media on that instance should show up in the
|
||||||
|
users inbox.
|
||||||
|
|
||||||
|
There are also subsets of the inbox which are:
|
||||||
|
|
||||||
|
Major
|
||||||
|
^^^^^
|
||||||
|
**Endpoint:** ``/api/user/<username>/inbox/major``
|
||||||
|
|
||||||
|
This contains all major changes such as new objects being posted. Currently
|
||||||
|
comments exist in this feed, in the future they will be moved to the minor feed.
|
||||||
|
|
||||||
|
Minor
|
||||||
|
^^^^^
|
||||||
|
**Endpoint:** ``/api/user/<username>/inbox/minor``
|
||||||
|
|
||||||
|
This contains minor changes such as objects being updated or deleted. This feed
|
||||||
|
should have comments in it, currently they are listed under major, in the future
|
||||||
|
they will exist in this endpoint.
|
||||||
|
|
||||||
|
Direct
|
||||||
|
^^^^^^
|
||||||
|
**Endpoint:** ``/api/user/<username>/inbox/direct``
|
||||||
|
|
||||||
|
Currently this is just a mirror of the regular inbox for compatibility with
|
||||||
|
pump.io. In the future this will contain all objects specifically addressed to
|
||||||
|
the user.
|
||||||
|
|
||||||
|
Direct major
|
||||||
|
^^^^^^^^^^^^
|
||||||
|
**Endpoint:** ``/api/user/<username>/inbox/direct/major``
|
||||||
|
|
||||||
|
Currently this is just a mirror of the major inbox for compatibility with
|
||||||
|
pump.io. In the future this will contain all major activities which are
|
||||||
|
specifically addressed to the user.
|
||||||
|
|
||||||
|
Direct minor
|
||||||
|
^^^^^^^^^^^^
|
||||||
|
**Endpoint:** ``/api/user/<username>/inbox/direct/minor``
|
||||||
|
|
||||||
|
Currently this is just a mirror of the minor inbox for compatibility with
|
||||||
|
pump.io. In the future this will contain all minor activities which are
|
||||||
|
specifically addressed to the user.
|
||||||
|
|
||||||
|
Feed (outbox)
|
||||||
|
-------------
|
||||||
|
**Endpoint:** ``/api/user/<username>/feed``
|
||||||
|
|
||||||
|
This is where the client should post new activities. It can be read by the
|
||||||
|
user to see what they have posted. This will only contain content they have
|
||||||
|
authored or shared (sharing will come in the future).
|
@ -11,7 +11,13 @@
|
|||||||
Dedication along with this software. If not, see
|
Dedication along with this software. If not, see
|
||||||
<http://creativecommons.org/publicdomain/zero/1.0/>.
|
<http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
====================
|
==================
|
||||||
|
API Authentication
|
||||||
|
==================
|
||||||
|
|
||||||
|
.. contents:: Sections
|
||||||
|
:local:
|
||||||
|
|
||||||
Registering a Client
|
Registering a Client
|
||||||
====================
|
====================
|
||||||
|
|
||||||
@ -31,7 +37,7 @@ client_secret
|
|||||||
**update only** - This should only be used updating client information, this is the client_secret given when you register
|
**update only** - This should only be used updating client information, this is the client_secret given when you register
|
||||||
|
|
||||||
contacts
|
contacts
|
||||||
**optional** - This a space seporated list of email addresses to contact of people responsible for the client
|
**optional** - This a space separated list of email addresses to contact of people responsible for the client
|
||||||
|
|
||||||
application_type
|
application_type
|
||||||
**required** - This is the type of client you are making, this must be either *web* or *native*
|
**required** - This is the type of client you are making, this must be either *web* or *native*
|
||||||
@ -43,11 +49,11 @@ logo_uri
|
|||||||
**optional** - This is a URI of the logo image for your client
|
**optional** - This is a URI of the logo image for your client
|
||||||
|
|
||||||
redirect_uri
|
redirect_uri
|
||||||
**optional** - This is a space seporated list of pre-registered URLs for use at the Authorization Server
|
**optional** - This is a space separated list of pre-registered URLs for use at the Authentication Server
|
||||||
|
|
||||||
|
|
||||||
Response
|
Response
|
||||||
--------
|
^^^^^^^^
|
||||||
|
|
||||||
You will get back a response:
|
You will get back a response:
|
||||||
|
|
||||||
@ -60,12 +66,11 @@ client_secret
|
|||||||
expires_at
|
expires_at
|
||||||
This is time that the client credentials expire. If this is 0 the client registration does not expire.
|
This is time that the client credentials expire. If this is 0 the client registration does not expire.
|
||||||
|
|
||||||
=======
|
Examples
|
||||||
Example
|
--------
|
||||||
=======
|
|
||||||
|
|
||||||
Register Client
|
Register Client
|
||||||
---------------
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
To register a client for the first time, this is the minimum you must supply::
|
To register a client for the first time, this is the minimum you must supply::
|
||||||
|
|
||||||
@ -84,7 +89,7 @@ A Response will look like::
|
|||||||
|
|
||||||
|
|
||||||
Updating Client
|
Updating Client
|
||||||
---------------
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Using the response we got above we can update the information and add new information we may have opted not to supply::
|
Using the response we got above we can update the information and add new information we may have opted not to supply::
|
||||||
|
|
||||||
@ -107,9 +112,8 @@ The response will just return back the client_id and client_secret you sent::
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
======
|
Possible Registration Errors
|
||||||
Errors
|
----------------------------
|
||||||
======
|
|
||||||
|
|
||||||
There are a number of errors you could get back, This explains what could cause some of them:
|
There are a number of errors you could get back, This explains what could cause some of them:
|
||||||
|
|
||||||
@ -129,7 +133,7 @@ client_id is required to update.
|
|||||||
When you try and update you need to specify the client_id, this will be what you were given when you initially registered the client.
|
When you try and update you need to specify the client_id, this will be what you were given when you initially registered the client.
|
||||||
|
|
||||||
client_secret is required to update.
|
client_secret is required to update.
|
||||||
When you try to update you need to specify the client_secrer, this will be what you were given when you initially register the client.
|
When you try to update you need to specify the client_secret, this will be what you were given when you initially register the client.
|
||||||
|
|
||||||
Unauthorized.
|
Unauthorized.
|
||||||
This is when you are trying to update however the client_id and/or client_secret you have submitted are incorrect.
|
This is when you are trying to update however the client_id and/or client_secret you have submitted are incorrect.
|
||||||
@ -144,14 +148,34 @@ Logo URL <url> is not a valid URL
|
|||||||
This is when the URL specified did not meet the validation.
|
This is when the URL specified did not meet the validation.
|
||||||
|
|
||||||
contacts must be a string of space-separated email addresses.
|
contacts must be a string of space-separated email addresses.
|
||||||
``contacts`` should be a string (not a list), ensure each email is seporated by a space
|
``contacts`` should be a string (not a list), ensure each email is separated by a space
|
||||||
|
|
||||||
Email <email> is not a valid email
|
Email <email> is not a valid email
|
||||||
This is when you have submitted an invalid email address
|
This is when you have submitted an invalid email address
|
||||||
|
|
||||||
redirect_uris must be space-separated URLs.
|
redirect_uris must be space-separated URLs.
|
||||||
``redirect_uris`` should be a string (not a list), ensure each URL is seporated by a space
|
``redirect_uris`` should be a string (not a list), ensure each URL is separated by a space
|
||||||
|
|
||||||
URI <URI> is not a valid URI
|
URI <URI> is not a valid URI
|
||||||
This is when your URI is invalid.
|
This is when your URI is invalid.
|
||||||
|
|
||||||
|
OAuth
|
||||||
|
=====
|
||||||
|
|
||||||
|
GNU MediaGoblin uses OAuth1 to authenticate requests to the API. There are many
|
||||||
|
libraries out there for OAuth1, you're likely not going to have to do much. There
|
||||||
|
is a library for the GNU MediaGoblin called `PyPump <https://github.com/xray7224/PyPump>`_.
|
||||||
|
We are not using OAuth2 as we want to stay completely compatible with pump.io.
|
||||||
|
|
||||||
|
|
||||||
|
Endpoints
|
||||||
|
---------
|
||||||
|
|
||||||
|
These are the endpoints you need to use for the oauth requests:
|
||||||
|
|
||||||
|
`/oauth/request_token` is for getting the request token.
|
||||||
|
|
||||||
|
`/oauth/authorize` is to send the user to to authorize your application.
|
||||||
|
|
||||||
|
`/oauth/access_token` is for getting the access token to use in requests.
|
||||||
|
|
@ -13,19 +13,19 @@
|
|||||||
|
|
||||||
.. info:: Currently only image uploading is supported.
|
.. info:: Currently only image uploading is supported.
|
||||||
|
|
||||||
===============
|
=====
|
||||||
Uploading Media
|
Media
|
||||||
===============
|
=====
|
||||||
|
|
||||||
To use any the APIs mentioned in this document you will required :doc:`oauth`
|
To use any the APIs mentioned in this document you will required :doc:`oauth`
|
||||||
|
|
||||||
Uploading and posting an media requiest you to make two to three requests:
|
Uploading and posting an media request you to make two to three requests:
|
||||||
|
|
||||||
1) Uploads the data to the server
|
1) Uploads the data to the server
|
||||||
2) Post media to feed
|
2) Post media to feed
|
||||||
3) Update media to have title, description, license, etc. (optional)
|
3) Update media to have title, description, license, etc. (optional)
|
||||||
|
|
||||||
These steps could be condenced in the future however currently this is how the
|
These steps could be recondensed in the future however currently this is how the
|
||||||
pump.io API works. There is currently an issue open, if you would like to change
|
pump.io API works. There is currently an issue open, if you would like to change
|
||||||
how this works please contribute upstream: https://github.com/e14n/pump.io/issues/657
|
how this works please contribute upstream: https://github.com/e14n/pump.io/issues/657
|
||||||
|
|
||||||
@ -41,7 +41,7 @@ A POST request should be made to the media upload URI submitting at least two he
|
|||||||
* `Content-Length` - size in bytes of the media.
|
* `Content-Length` - size in bytes of the media.
|
||||||
|
|
||||||
The media data should be submitted as POST data to the image upload URI.
|
The media data should be submitted as POST data to the image upload URI.
|
||||||
You will get back a JSON encoded response which will look similiar to::
|
You will get back a JSON encoded response which will look similar to::
|
||||||
|
|
||||||
{
|
{
|
||||||
"updated": "2014-01-11T09:45:48Z",
|
"updated": "2014-01-11T09:45:48Z",
|
||||||
@ -139,7 +139,7 @@ and update request to the endpoint, the following attributes can be submitted:
|
|||||||
.. note:: license attribute is mediagoblin specific, pump.io does not support this attribute
|
.. note:: license attribute is mediagoblin specific, pump.io does not support this attribute
|
||||||
|
|
||||||
|
|
||||||
The update request should look something similiar to::
|
The update request should look something similar to::
|
||||||
|
|
||||||
{
|
{
|
||||||
"verb": "update",
|
"verb": "update",
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<http://creativecommons.org/publicdomain/zero/1.0/>.
|
<http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
Pump.io supports a number of different interactions that can happen against
|
Pump.io supports a number of different interactions that can happen against
|
||||||
media. Theser are commenting, liking/favoriting and (re-)sharing. Currently
|
media. These are commenting, liking/favoriting and (re-)sharing. Currently
|
||||||
MediaGoblin supports just commenting although other interactions will come at
|
MediaGoblin supports just commenting although other interactions will come at
|
||||||
a later date.
|
a later date.
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ How to comment
|
|||||||
.. warning:: Commenting on a comment currently is NOT supported.
|
.. warning:: Commenting on a comment currently is NOT supported.
|
||||||
|
|
||||||
Commenting is done by posting a comment activity to the users feed. The
|
Commenting is done by posting a comment activity to the users feed. The
|
||||||
activity should look similiar to::
|
activity should look similar to::
|
||||||
|
|
||||||
{
|
{
|
||||||
"verb": "post",
|
"verb": "post",
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
.. MediaGoblin Documentation
|
|
||||||
|
|
||||||
Written in 2011, 2012 by MediaGoblin contributors
|
|
||||||
|
|
||||||
To the extent possible under law, the author(s) have dedicated all
|
|
||||||
copyright and related and neighboring rights to this software to
|
|
||||||
the public domain worldwide. This software is distributed without
|
|
||||||
any warranty.
|
|
||||||
|
|
||||||
You should have received a copy of the CC0 Public Domain
|
|
||||||
Dedication along with this software. If not, see
|
|
||||||
<http://creativecommons.org/publicdomain/zero/1.0/>.
|
|
||||||
|
|
||||||
==============
|
|
||||||
Authentication
|
|
||||||
==============
|
|
||||||
|
|
||||||
GNU MediaGoblin uses OAuth1 to authenticate requests to the API. There are many
|
|
||||||
libraries out there for OAuth1, you're likely not going to have to do much. There
|
|
||||||
is a library for the GNU MediaGoblin called `PyPump <https://github.com/xray7224/PyPump>`_.
|
|
||||||
We are not using OAuth2 as we want to stay completely compatable with GNU MediaGoblin.
|
|
||||||
|
|
||||||
|
|
||||||
We use :doc:`client_register` to get the client ID and secret.
|
|
||||||
|
|
||||||
Endpoints
|
|
||||||
---------
|
|
||||||
|
|
||||||
These are the endpoints you need to use for the oauth requests:
|
|
||||||
|
|
||||||
`/oauth/request_token` is for getting the request token.
|
|
||||||
|
|
||||||
`/oauth/authorize` is to send the user to to authorize your application.
|
|
||||||
|
|
||||||
`/oauth/access_token` is for getting the access token to use in requests.
|
|
||||||
|
|
@ -105,13 +105,13 @@ This chapter covers MediaGoblin's `Pump API
|
|||||||
work in progress; full federation is not supported at the moment, but
|
work in progress; full federation is not supported at the moment, but
|
||||||
media uploading works! You can use something like
|
media uploading works! You can use something like
|
||||||
`PyPump <http://pypump.org>`_
|
`PyPump <http://pypump.org>`_
|
||||||
to write MediaGoblin uploadable applications.)
|
to write MediaGoblin applications.)
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
api/client_register
|
api/authentication
|
||||||
api/oauth
|
api/activities
|
||||||
api/media
|
api/media
|
||||||
api/media_interaction
|
api/media_interaction
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user