summaryrefslogtreecommitdiff
path: root/docs/api-usage.rst
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain.pocentek@objectif-libre.com>2016-01-03 17:48:26 +0100
committerGauvain Pocentek <gauvain.pocentek@objectif-libre.com>2016-01-03 17:48:26 +0100
commit2237d854f3c83f176b03392debf9785c53b0738b (patch)
tree029e1923fdb2ebb8721935cb99c040988acef5b8 /docs/api-usage.rst
parent64d635676c410648906be963fd1521c4baf17f25 (diff)
downloadgitlab-2237d854f3c83f176b03392debf9785c53b0738b.tar.gz
Provide a getting started doc for the API
Diffstat (limited to 'docs/api-usage.rst')
-rw-r--r--docs/api-usage.rst119
1 files changed, 119 insertions, 0 deletions
diff --git a/docs/api-usage.rst b/docs/api-usage.rst
new file mode 100644
index 0000000..85e4b1f
--- /dev/null
+++ b/docs/api-usage.rst
@@ -0,0 +1,119 @@
+############################
+Getting started with the API
+############################
+
+The ``gitlab`` package provides 3 basic types:
+
+* ``gitlab.Gitlab`` is the primary class, handling the HTTP requests. It holds
+ the GitLab URL and authentication information.
+* ``gitlab.GitlabObject`` is the base class for all the GitLab objects. These
+ objects provide an abstraction for GitLab resources (projects, groups, and so
+ on).
+* ``gitlab.BaseManager`` is the base class for objects managers, providing the
+ API to manipulate the resources and their attributes.
+
+``gitlab.Gitlab`` class
+=======================
+
+To connect to a GitLab server, create a ``gitlab.Gitlab`` object:
+
+.. code-block:: python
+
+ import gitlab
+
+ # private token authentication
+ gl = gitlab.Gitlab('http://10.0.0.1', 'JVNSESs8EwWRx5yDxM5q')
+
+ # or username/password authentication
+ gl = gitlab.Gitlab('http://10.0.0.1', email='jdoe', password='s3cr3t')
+
+ # make an API request to create the gl.user object. This is mandatory if you
+ # use the username/password authentication.
+ gl.auth()
+
+You can also use configuration files to create ``gitlab.Gitlab`` objects:
+
+.. code-block:: python
+
+ gl = gitlab.Gitlab.from_config('somewhere', ['/tmp/gl.cfg'])
+
+See the :ref:`cli_configuration` section for more information about
+configuration files.
+
+
+Managers
+========
+
+The ``gitlab.Gitlab`` class provides managers to access the GitLab resources.
+Each manager provides a set of methods to act on the resources. The available
+methods depend on the resource type. Resources are represented as
+``gitlab.GitlabObject``-derived objects.
+
+Examples:
+
+.. code-block:: python
+
+ # list all the projects
+ projects = gl.projects.list()
+ for project in projects:
+ print(project)
+
+ # get the group with id == 2
+ group = gl.groups.get(2)
+ for group in groups:
+ print()
+
+ # create a new user
+ user_data = {'email': 'jen@foo.com', 'username': 'jen', 'name': 'Jen'}
+ user = gl.users.create(user_data)
+ print(user)
+
+Some ``gitlab.GitlabObject`` classes also provide managers to access related
+GitLab resources:
+
+.. code-block:: python
+
+ # list the issues for a project
+ project = gl.projects.get(1)
+ issues = project.issues.list()
+
+Gitlab Objects
+==============
+
+You can update or delete an object when it exists as a ``GitlabObject`` object:
+
+.. code-block:: python
+
+ # update the attributes of a resource
+ project = gl.projects.get(1)
+ project.wall_enabled = False
+ # don't forget to apply your changes on the server:
+ project.save()
+
+ # delete the resource
+ project.delete()
+
+
+Some ``GitlabObject``-derived classes provide additional methods, allowing more
+actions on the GitLab resources. For example:
+
+.. code-block:: python
+
+ # get a tarball of the git repository
+ project = gl.projects.get(1)
+ project.archive()
+
+Pagination
+==========
+
+You can use pagination to go throught long lists:
+
+.. code-block:: python
+
+ ten_first_groups = gl.groups.list(page=0, per_page=10)
+
+Use the ``all`` parameter to get all the items:
+
+.. code-block:: python
+
+ all_groups = gl.groups.list(all=True)