OSDN Git Service

add docs for existing API
authorNihad Abbasov <narkoz.2008@gmail.com>
Thu, 5 Jul 2012 13:57:45 +0000 (06:57 -0700)
committerNihad Abbasov <narkoz.2008@gmail.com>
Thu, 5 Jul 2012 13:57:45 +0000 (06:57 -0700)
doc/api/README.md [new file with mode: 0644]
doc/api/projects.md [new file with mode: 0644]
doc/api/users.md [new file with mode: 0644]

diff --git a/doc/api/README.md b/doc/api/README.md
new file mode 100644 (file)
index 0000000..dcf75af
--- /dev/null
@@ -0,0 +1,29 @@
+# Gitlab API
+
+All API requests require authentication. You need to pass `private_token` parameter to authenticate.
+
+To get or reset your token visit your profile.
+
+If no or invalid `private_token` provided error message will be returned with status code 401:
+
+```json
+{
+  "message": "401 Unauthorized"
+}
+```
+
+API requests should be prefixed with `api` and the API version.
+API version is equal to Gitlab major version number and defined in `lib/api.rb`.
+
+Example of valid API request:
+
+```
+GET http://example.com/api/v2/projects?private_token=QVy1PB7sTxfy4pqfZM1U
+```
+
+The API uses JSON to serialize data. You don't need to specify `.json` at the end of API URL.
+
+## Contents
+
++ [Users](https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/users.md)
++ [Projects](https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/projects.md)
diff --git a/doc/api/projects.md b/doc/api/projects.md
new file mode 100644 (file)
index 0000000..465868d
--- /dev/null
@@ -0,0 +1,270 @@
+## List projects
+
+Get a list of authenticated users' projects.
+
+```
+GET /projects
+```
+
+```json
+[
+  {
+    "id": 3,
+    "code": "rails",
+    "name": "rails",
+    "description": null,
+    "path": "rails",
+    "default_branch": "master",
+    "owner": {
+      "id": 1,
+      "email": "john@example.com",
+      "name": "John Smith",
+      "blocked": false,
+      "created_at": "2012-05-23T08:00:58Z"
+    },
+    "private": true,
+    "issues_enabled": false,
+    "merge_requests_enabled": false,
+    "wall_enabled": true,
+    "wiki_enabled": true,
+    "created_at": "2012-05-23T08:05:02Z"
+  },
+  {
+    "id": 5,
+    "code": "gitlab",
+    "name": "gitlab",
+    "description": null,
+    "path": "gitlab",
+    "default_branch": "api",
+    "owner": {
+      "id": 1,
+      "email": "john@example.com",
+      "name": "John Smith",
+      "blocked": false,
+      "created_at": "2012-05-23T08:00:58Z"
+    },
+    "private": true,
+    "issues_enabled": true,
+    "merge_requests_enabled": true,
+    "wall_enabled": true,
+    "wiki_enabled": true,
+    "created_at": "2012-05-30T12:49:20Z"
+  }
+]
+```
+
+## Single project
+
+Get an authenticated user's project.
+
+```
+GET /projects/:id
+```
+
+Parameters:
+
++ `id` (required) - The code name of a project
+
+```json
+{
+  "id": 5,
+  "code": "gitlab",
+  "name": "gitlab",
+  "description": null,
+  "path": "gitlab",
+  "default_branch": "api",
+  "owner": {
+    "id": 1,
+    "email": "john@example.com",
+    "name": "John Smith",
+    "blocked": false,
+    "created_at": "2012-05-23T08:00:58Z"
+  },
+  "private": true,
+  "issues_enabled": true,
+  "merge_requests_enabled": true,
+  "wall_enabled": true,
+  "wiki_enabled": true,
+  "created_at": "2012-05-30T12:49:20Z"
+}
+```
+
+## Project repository branches
+
+Get a list of project repository branches.
+
+```
+GET /projects/:id/repository/branches
+```
+
+Parameters:
+
++ `id` (required) - The code name of a project
+
+```json
+[
+  {
+    "name": "master",
+    "commit": {
+      "id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
+      "parents": [
+        {
+          "id": "4ad91d3c1144c406e50c7b33bae684bd6837faf8"
+        }
+      ],
+      "tree": "46e82de44b1061621357f24c05515327f2795a95",
+      "message": "add projects API",
+      "author": {
+        "name": "John Smith",
+        "email": "john@example.com"
+      },
+      "committer": {
+        "name": "John Smith",
+        "email": "john@example.com"
+      },
+      "authored_date": "2012-06-27T05:51:39-07:00",
+      "committed_date": "2012-06-28T03:44:20-07:00"
+    }
+  }
+]
+```
+
+## Project repository tags
+
+Get a list of project repository tags.
+
+```
+GET /projects/:id/repository/tags
+```
+
+Parameters:
+
++ `id` (required) - The code name of a project
+
+```json
+[
+  {
+    "name": "v1.0.0",
+    "commit": {
+      "id": "2695effb5807a22ff3d138d593fd856244e155e7",
+      "parents": [
+
+      ],
+      "tree": "38017f2f189336fe4497e9d230c5bb1bf873f08d",
+      "message": "Initial commit",
+      "author": {
+        "name": "John Smith",
+        "email": "john@example.com"
+      },
+      "committer": {
+        "name": "Jack Smith",
+        "email": "jack@example.com"
+      },
+      "authored_date": "2012-05-28T04:42:42-07:00",
+      "committed_date": "2012-05-28T04:42:42-07:00"
+    }
+  }
+]
+```
+
+# Project Snippets
+
+## List snippets
+
+Not implemented.
+
+## Single snippet
+
+Get a project snippet.
+
+```
+GET /projects/:id/snippets/:snippet_id
+```
+
+Parameters:
+
++ `id` (required) - The code name of a project
++ `snippet_id` (required) - The ID of a project's snippet
+
+```json
+{
+  "id": 1,
+  "title": "test",
+  "file_name": "add.rb",
+  "author": {
+    "id": 1,
+    "email": "john@example.com",
+    "name": "John Smith",
+    "blocked": false,
+    "created_at": "2012-05-23T08:00:58Z"
+  },
+  "expires_at": null,
+  "updated_at": "2012-06-28T10:52:04Z",
+  "created_at": "2012-06-28T10:52:04Z"
+}
+```
+
+## Snippet content
+
+Get a raw project snippet.
+
+```
+GET /projects/:id/snippets/:snippet_id/raw
+```
+
+Parameters:
+
++ `id` (required) - The code name of a project
++ `snippet_id` (required) - The ID of a project's snippet
+
+## New snippet
+
+Create a new project snippet.
+
+```
+POST /projects/:id/snippets
+```
+
+Parameters:
+
++ `id` (required) - The code name of a project
++ `title` (required) - The title of a snippet
++ `file_name` (required) - The name of a snippet file
++ `lifetime` (optional) - The expiration date of a snippet
++ `code` (required) - The content of a snippet
+
+Will return created snippet with status `201 Created` on success, or `404 Not found` on fail.
+
+## Edit snippet
+
+Update an existing project snippet.
+
+```
+PUT /projects/:id/snippets/:snippet_id
+```
+
+Parameters:
+
++ `id` (required) - The code name of a project
++ `snippet_id` (required) - The ID of a project's snippet
++ `title` (optional) - The title of a snippet
++ `file_name` (optional) - The name of a snippet file
++ `lifetime` (optional) - The expiration date of a snippet
++ `code` (optional) - The content of a snippet
+
+Will return updated snippet with status `200 OK` on success, or `404 Not found` on fail.
+
+## Delete snippet
+
+Update an existing project snippet.
+
+```
+DELETE /projects/:id/snippets/:snippet_id
+```
+
+Parameters:
+
++ `id` (required) - The code name of a project
++ `snippet_id` (required) - The ID of a project's snippet
+
+Status code `200` will be returned on success.
diff --git a/doc/api/users.md b/doc/api/users.md
new file mode 100644 (file)
index 0000000..b9b04dc
--- /dev/null
@@ -0,0 +1,90 @@
+## List users
+
+Get a list of users.
+
+```
+GET /users
+```
+
+```json
+[
+  {
+    "id": 1,
+    "email": "john@example.com",
+    "name": "John Smith",
+    "blocked": false,
+    "created_at": "2012-05-23T08:00:58Z",
+    "bio": null,
+    "skype": "",
+    "linkedin": "",
+    "twitter": "",
+    "dark_scheme": false,
+    "theme_id": 1
+  },
+  {
+    "id": 2,
+    "email": "jack@example.com",
+    "name": "Jack Smith",
+    "blocked": false,
+    "created_at": "2012-05-23T08:01:01Z",
+    "bio": null,
+    "skype": "",
+    "linkedin": "",
+    "twitter": "",
+    "dark_scheme": true,
+    "theme_id": 1
+  }
+]
+```
+
+## Single user
+
+Get a single user.
+
+```
+GET /users/:id
+```
+
+Parameters:
+
++ `id` (required) - The ID of a user
+
+```json
+{
+  "id": 1,
+  "email": "john@example.com",
+  "name": "John Smith",
+  "blocked": false,
+  "created_at": "2012-05-23T08:00:58Z",
+  "bio": null,
+  "skype": "",
+  "linkedin": "",
+  "twitter": "",
+  "dark_scheme": false,
+  "theme_id": 1
+}
+```
+
+## Current user
+
+Get currently authenticated user.
+
+```
+GET /user
+```
+
+```json
+{
+  "id": 1,
+  "email": "john@example.com",
+  "name": "John Smith",
+  "blocked": false,
+  "created_at": "2012-05-23T08:00:58Z",
+  "bio": null,
+  "skype": "",
+  "linkedin": "",
+  "twitter": "",
+  "dark_scheme": false,
+  "theme_id": 1
+}
+```