Commit 68d146b4a692357354e25d0c0f93edf861b37e8c

Authored by Dmitriy Zaporozhets
1 parent b05600f2

Improve api docs

app/controllers/help_controller.rb
1 1 class HelpController < ApplicationController
2 2 def index
3 3 end
  4 +
  5 + def api
  6 + @category = params[:category]
  7 + @category = "README" if @category.blank?
  8 +
  9 + if File.exists?(Rails.root.join('doc', 'api', @category + '.md'))
  10 + render 'api'
  11 + else
  12 + not_found!
  13 + end
  14 + end
4 15 end
... ...
app/views/help/_api_layout.html.haml 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +.row
  2 + .span3
  3 + = link_to help_path, class: 'btn append-bottom-20 btn-small' do
  4 + %i.icon-angle-left
  5 + Back to help
  6 + %br
  7 + %ul.nav.nav-pills.nav-stacked
  8 + - %w(README projects project_snippets repositories deploy_keys users session issues milestones notes system_hooks).each do |file|
  9 + %li{class: file == @category ? 'active' : nil}
  10 + = link_to file.titleize, help_api_file_path(file)
  11 +
  12 + .span9.pull-right
  13 + = yield
... ...
app/views/help/api.html.haml
1   -= render layout: 'help/layout' do
2   - %h3.page_title API
  1 += render layout: 'help/api_layout' do
  2 + %h3.page_title
  3 + %span.light API
  4 + %span
  5 + \/
  6 + = @category.titleize
3 7 %br
4 8  
5   - %ul.nav.nav-tabs.log-tabs.nav-small-tabs
6   - %li.active
7   - = link_to "README", "#README", 'data-toggle' => 'tab'
8   - %li
9   - = link_to "Projects", "#projects", 'data-toggle' => 'tab'
10   - %li
11   - = link_to "Snippets", "#snippets", 'data-toggle' => 'tab'
12   - %li
13   - = link_to "Repositories", "#repositories", 'data-toggle' => 'tab'
14   - %li
15   - = link_to "Users", "#users", 'data-toggle' => 'tab'
16   - %li
17   - = link_to "Session", "#session", 'data-toggle' => 'tab'
18   - %li
19   - = link_to "Issues", "#issues", 'data-toggle' => 'tab'
20   - %li
21   - = link_to "Milestones", "#milestones", 'data-toggle' => 'tab'
22   - %li
23   - = link_to "Notes", "#notes", 'data-toggle' => 'tab'
24   - %li
25   - = link_to "System Hooks", "#system_hooks", 'data-toggle' => 'tab'
26   -
27   - .tab-content
28   - .tab-pane.active#README
29   - .file_holder
30   - .file_title
31   - %i.icon-file
32   - README
33   - .file_content.wiki
34   - = preserve do
35   - = markdown File.read(Rails.root.join("doc", "api", "README.md"))
36   -
37   - .tab-pane#projects
38   - .file_holder
39   - .file_title
40   - %i.icon-file
41   - Projects
42   - .file_content.wiki
43   - = preserve do
44   - = markdown File.read(Rails.root.join("doc", "api", "projects.md"))
45   -
46   - .tab-pane#snippets
47   - .file_holder
48   - .file_title
49   - %i.icon-file
50   - Projects Snippets
51   - .file_content.wiki
52   - = preserve do
53   - = markdown File.read(Rails.root.join("doc", "api", "snippets.md"))
54   -
55   - .tab-pane#repositories
56   - .file_holder
57   - .file_title
58   - %i.icon-file
59   - Projects
60   - .file_content.wiki
61   - = preserve do
62   - = markdown File.read(Rails.root.join("doc", "api", "repositories.md"))
63   -
64   - .tab-pane#users
65   - .file_holder
66   - .file_title
67   - %i.icon-file
68   - Users
69   - .file_content.wiki
70   - = preserve do
71   - = markdown File.read(Rails.root.join("doc", "api", "users.md"))
72   -
73   - .tab-pane#session
74   - .file_holder
75   - .file_title
76   - %i.icon-file
77   - Session
78   - .file_content.wiki
79   - = preserve do
80   - = markdown File.read(Rails.root.join("doc", "api", "session.md"))
81   -
82   - .tab-pane#issues
83   - .file_holder
84   - .file_title
85   - %i.icon-file
86   - Issues
87   - .file_content.wiki
88   - = preserve do
89   - = markdown File.read(Rails.root.join("doc", "api", "issues.md"))
90   -
91   - .tab-pane#milestones
92   - .file_holder
93   - .file_title
94   - %i.icon-file
95   - Milestones
96   - .file_content.wiki
97   - = preserve do
98   - = markdown File.read(Rails.root.join("doc", "api", "milestones.md"))
99   -
100   - .tab-pane#notes
101   - .file_holder
102   - .file_title
103   - %i.icon-file
104   - Notes
105   - .file_content.wiki
106   - = preserve do
107   - = markdown File.read(Rails.root.join("doc", "api", "notes.md"))
108   -
109   - .tab-pane#system_hooks
110   - .file_holder
111   - .file_title
112   - %i.icon-file
113   - System Hooks
114   - .file_content.wiki
115   - = preserve do
116   - = markdown File.read(Rails.root.join("doc", "api", "system_hooks.md"))
  9 + .file_holder
  10 + .file_title
  11 + %i.icon-file
  12 + = @category
  13 + .file_content.wiki
  14 + = preserve do
  15 + = markdown File.read(Rails.root.join("doc", "api", "#{@category}.md"))
... ...
config/routes.rb
... ... @@ -29,6 +29,7 @@ Gitlab::Application.routes.draw do
29 29 #
30 30 get 'help' => 'help#index'
31 31 get 'help/api' => 'help#api'
  32 + get 'help/api/:category' => 'help#api', as: 'help_api_file'
32 33 get 'help/markdown' => 'help#markdown'
33 34 get 'help/permissions' => 'help#permissions'
34 35 get 'help/public_access' => 'help#public_access'
... ...
doc/api/deploy_keys.md 0 → 100644
... ... @@ -0,0 +1,87 @@
  1 +## Deploy Keys
  2 +
  3 +### List deploy keys
  4 +
  5 +Get a list of a project's deploy keys.
  6 +
  7 +```
  8 +GET /projects/:id/keys
  9 +```
  10 +
  11 +Parameters:
  12 +
  13 ++ `id` (required) - The ID of the project
  14 +
  15 +```json
  16 +[
  17 + {
  18 + "id": 1,
  19 + "title" : "Public key"
  20 + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4
  21 + 596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4
  22 + soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
  23 + },
  24 + {
  25 + "id": 3,
  26 + "title" : "Another Public key"
  27 + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4
  28 + 596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4
  29 + soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0="
  30 + }
  31 +]
  32 +```
  33 +
  34 +
  35 +### Single deploy key
  36 +
  37 +Get a single key.
  38 +
  39 +```
  40 +GET /projects/:id/keys/:key_id
  41 +```
  42 +
  43 +Parameters:
  44 +
  45 ++ `id` (required) - The ID of the project
  46 ++ `key_id` (required) - The ID of the deploy key
  47 +
  48 +```json
  49 +{
  50 + "id": 1,
  51 + "title" : "Public key"
  52 + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4
  53 + 596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4
  54 + soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0="
  55 +}
  56 +```
  57 +
  58 +
  59 +### Add deploy key
  60 +
  61 +Creates a new deploy key for a project.
  62 +If deploy key already exists in another project - it will be joined to project but only if original one was is accessible by same user
  63 +
  64 +```
  65 +POST /projects/:id/keys
  66 +```
  67 +
  68 +Parameters:
  69 +
  70 ++ `id` (required) - The ID of the project
  71 ++ `title` (required) - New deploy key's title
  72 ++ `key` (required) - New deploy key
  73 +
  74 +
  75 +### Delete deploy key
  76 +
  77 +Delete a deploy key from a project
  78 +
  79 +```
  80 +DELETE /projects/:id/keys/:key_id
  81 +```
  82 +
  83 +Parameters:
  84 +
  85 ++ `id` (required) - The ID of the project
  86 ++ `key_id` (required) - The ID of the deploy key
  87 +
... ...
doc/api/project_snippets.md 0 → 100644
... ... @@ -0,0 +1,108 @@
  1 +## List snippets
  2 +
  3 +Get a list of project snippets.
  4 +
  5 +```
  6 +GET /projects/:id/snippets
  7 +```
  8 +
  9 +Parameters:
  10 +
  11 ++ `id` (required) - The ID of a project
  12 +
  13 +
  14 +## Single snippet
  15 +
  16 +Get a single project snippet.
  17 +
  18 +```
  19 +GET /projects/:id/snippets/:snippet_id
  20 +```
  21 +
  22 +Parameters:
  23 +
  24 ++ `id` (required) - The ID of a project
  25 ++ `snippet_id` (required) - The ID of a project's snippet
  26 +
  27 +```json
  28 +{
  29 + "id": 1,
  30 + "title": "test",
  31 + "file_name": "add.rb",
  32 + "author": {
  33 + "id": 1,
  34 + "username": "john_smith",
  35 + "email": "john@example.com",
  36 + "name": "John Smith",
  37 + "blocked": false,
  38 + "created_at": "2012-05-23T08:00:58Z"
  39 + },
  40 + "expires_at": null,
  41 + "updated_at": "2012-06-28T10:52:04Z",
  42 + "created_at": "2012-06-28T10:52:04Z"
  43 +}
  44 +```
  45 +
  46 +
  47 +## Create new snippet
  48 +
  49 +Creates a new project snippet. The user must have permission to create new snippets.
  50 +
  51 +```
  52 +POST /projects/:id/snippets
  53 +```
  54 +
  55 +Parameters:
  56 +
  57 ++ `id` (required) - The ID of a project
  58 ++ `title` (required) - The title of a snippet
  59 ++ `file_name` (required) - The name of a snippet file
  60 ++ `lifetime` (optional) - The expiration date of a snippet
  61 ++ `code` (required) - The content of a snippet
  62 +
  63 +
  64 +## Update snippet
  65 +
  66 +Updates an existing project snippet. The user must have permission to change an existing snippet.
  67 +
  68 +```
  69 +PUT /projects/:id/snippets/:snippet_id
  70 +```
  71 +
  72 +Parameters:
  73 +
  74 ++ `id` (required) - The ID of a project
  75 ++ `snippet_id` (required) - The ID of a project's snippet
  76 ++ `title` (optional) - The title of a snippet
  77 ++ `file_name` (optional) - The name of a snippet file
  78 ++ `lifetime` (optional) - The expiration date of a snippet
  79 ++ `code` (optional) - The content of a snippet
  80 +
  81 +
  82 +## Delete snippet
  83 +
  84 +Deletes an existing project snippet. This is an idempotent function and deleting a non-existent
  85 +snippet still returns a `200 Ok` status code.
  86 +
  87 +```
  88 +DELETE /projects/:id/snippets/:snippet_id
  89 +```
  90 +
  91 +Parameters:
  92 +
  93 ++ `id` (required) - The ID of a project
  94 ++ `snippet_id` (required) - The ID of a project's snippet
  95 +
  96 +
  97 +## Snippet content
  98 +
  99 +Returns the raw project snippet as plain text.
  100 +
  101 +```
  102 +GET /projects/:id/snippets/:snippet_id/raw
  103 +```
  104 +
  105 +Parameters:
  106 +
  107 ++ `id` (required) - The ID of a project
  108 ++ `snippet_id` (required) - The ID of a project's snippet
... ...
doc/api/projects.md
... ... @@ -381,126 +381,3 @@ Parameters:
381 381 + `id` (required) - The ID of the project.
382 382 + `branch` (required) - The name of the branch.
383 383  
384   -
385   -### List tags
386   -
387   -Lists all tags of a project.
388   -
389   -```
390   -GET /projects/:id/repository/tags
391   -```
392   -
393   -Parameters:
394   -
395   -+ `id` (required) - The ID of the project
396   -
397   -
398   -### List commits
399   -
400   -Lists all commits with pagination. If the optional `ref_name` name is not given the commits of
401   -the default branch (usually master) are returned.
402   -
403   -```
404   -GET /projects/:id/repository/commits
405   -```
406   -
407   -Parameters:
408   -
409   -+ `id` (required) - The Id of the project
410   -+ `ref_name` (optional) - The name of a repository branch or tag
411   -+ `page` (optional) - The page of commits to return (`0` default)
412   -+ `per_page` (optional) - The number of commits per page (`20` default)
413   -
414   -Returns values:
415   -
416   -+ `200 Ok` on success and a list with commits
417   -+ `404 Not Found` if project with id or the branch with `ref_name` not found
418   -
419   -
420   -
421   -## Deploy Keys
422   -
423   -### List deploy keys
424   -
425   -Get a list of a project's deploy keys.
426   -
427   -```
428   -GET /projects/:id/keys
429   -```
430   -
431   -Parameters:
432   -
433   -+ `id` (required) - The ID of the project
434   -
435   -```json
436   -[
437   - {
438   - "id": 1,
439   - "title" : "Public key"
440   - "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4
441   - 596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4
442   - soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
443   - },
444   - {
445   - "id": 3,
446   - "title" : "Another Public key"
447   - "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4
448   - 596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4
449   - soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0="
450   - }
451   -]
452   -```
453   -
454   -
455   -### Single deploy key
456   -
457   -Get a single key.
458   -
459   -```
460   -GET /projects/:id/keys/:key_id
461   -```
462   -
463   -Parameters:
464   -
465   -+ `id` (required) - The ID of the project
466   -+ `key_id` (required) - The ID of the deploy key
467   -
468   -```json
469   -{
470   - "id": 1,
471   - "title" : "Public key"
472   - "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4
473   - 596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4
474   - soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0="
475   -}
476   -```
477   -
478   -
479   -### Add deploy key
480   -
481   -Creates a new deploy key for a project.
482   -
483   -```
484   -POST /projects/:id/keys
485   -```
486   -
487   -Parameters:
488   -
489   -+ `id` (required) - The ID of the project
490   -+ `title` (required) - New deploy key's title
491   -+ `key` (required) - New deploy key
492   -
493   -
494   -### Delete deploy key
495   -
496   -Delete a deploy key from a project
497   -
498   -```
499   -DELETE /projects/:id/keys/:key_id
500   -```
501   -
502   -Parameters:
503   -
504   -+ `id` (required) - The ID of the project
505   -+ `key_id` (required) - The ID of the deploy key
506   -
... ...
doc/api/snippets.md
... ... @@ -1,108 +0,0 @@
1   -## List snippets
2   -
3   -Get a list of project snippets.
4   -
5   -```
6   -GET /projects/:id/snippets
7   -```
8   -
9   -Parameters:
10   -
11   -+ `id` (required) - The ID of a project
12   -
13   -
14   -## Single snippet
15   -
16   -Get a single project snippet.
17   -
18   -```
19   -GET /projects/:id/snippets/:snippet_id
20   -```
21   -
22   -Parameters:
23   -
24   -+ `id` (required) - The ID of a project
25   -+ `snippet_id` (required) - The ID of a project's snippet
26   -
27   -```json
28   -{
29   - "id": 1,
30   - "title": "test",
31   - "file_name": "add.rb",
32   - "author": {
33   - "id": 1,
34   - "username": "john_smith",
35   - "email": "john@example.com",
36   - "name": "John Smith",
37   - "blocked": false,
38   - "created_at": "2012-05-23T08:00:58Z"
39   - },
40   - "expires_at": null,
41   - "updated_at": "2012-06-28T10:52:04Z",
42   - "created_at": "2012-06-28T10:52:04Z"
43   -}
44   -```
45   -
46   -
47   -## Create new snippet
48   -
49   -Creates a new project snippet. The user must have permission to create new snippets.
50   -
51   -```
52   -POST /projects/:id/snippets
53   -```
54   -
55   -Parameters:
56   -
57   -+ `id` (required) - The ID of a project
58   -+ `title` (required) - The title of a snippet
59   -+ `file_name` (required) - The name of a snippet file
60   -+ `lifetime` (optional) - The expiration date of a snippet
61   -+ `code` (required) - The content of a snippet
62   -
63   -
64   -## Update snippet
65   -
66   -Updates an existing project snippet. The user must have permission to change an existing snippet.
67   -
68   -```
69   -PUT /projects/:id/snippets/:snippet_id
70   -```
71   -
72   -Parameters:
73   -
74   -+ `id` (required) - The ID of a project
75   -+ `snippet_id` (required) - The ID of a project's snippet
76   -+ `title` (optional) - The title of a snippet
77   -+ `file_name` (optional) - The name of a snippet file
78   -+ `lifetime` (optional) - The expiration date of a snippet
79   -+ `code` (optional) - The content of a snippet
80   -
81   -
82   -## Delete snippet
83   -
84   -Deletes an existing project snippet. This is an idempotent function and deleting a non-existent
85   -snippet still returns a `200 Ok` status code.
86   -
87   -```
88   -DELETE /projects/:id/snippets/:snippet_id
89   -```
90   -
91   -Parameters:
92   -
93   -+ `id` (required) - The ID of a project
94   -+ `snippet_id` (required) - The ID of a project's snippet
95   -
96   -
97   -## Snippet content
98   -
99   -Returns the raw project snippet as plain text.
100   -
101   -```
102   -GET /projects/:id/snippets/:snippet_id/raw
103   -```
104   -
105   -Parameters:
106   -
107   -+ `id` (required) - The ID of a project
108   -+ `snippet_id` (required) - The ID of a project's snippet