summaryrefslogtreecommitdiff
path: root/doc/api/snippets.md
blob: 61dbb5e454b4b7efe832f8a78244efcf9598dbc6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
## List snippets

Get a list of project snippets.

```
GET /projects/:id/snippets
```

Parameters:

+ `id` (required) - The ID of a project

Return values:

+ `200 Ok` on success and a list of project snippets
+ `401 Unauthorized` if user is not authenticated


## Single snippet

Get a single project snippet.

```
GET /projects/:id/snippets/:snippet_id
```

Parameters:

+ `id` (required) - The ID 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,
    "username": "john_smith",
    "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"
}
```

Return values:

+ `200 Ok` on success and the project snippet
+ `401 Unauthorized` if user is not authenticated
+ `404 Not Found` if snippet ID not found


## Create new snippet

Creates a new project snippet.

```
POST /projects/:id/snippets
```

Parameters:

+ `id` (required) - The ID 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

Return values:

+ `201 Created` if snippet was successfully created and the snippet as JSON payload
+ `400 Bad Request` if one of the required attributes is not given
+ `401 Unauthorized` if user is not authenticated
+ `404 Not Found` if project ID not found


## Edit snippet

Updates an existing project snippet.

```
PUT /projects/:id/snippets/:snippet_id
```

Parameters:

+ `id` (required) - The ID 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

Return values:

+ `200 Ok` on success and the updated project snippet
+ `401 Unauthorized` if user is not authenticated
+ `404 Not Found` if project ID not found


## Delete snippet

Deletes an existing project snippet. This is an idempotent function and deleting a non-existent
snippet still returns a `200 Ok` status code.

```
DELETE /projects/:id/snippets/:snippet_id
```

Parameters:

+ `id` (required) - The ID of a project
+ `snippet_id` (required) - The ID of a project's snippet

Return values:

+ `200 Ok` on success and if the snippet was deleted its content
+ `401 Unauthorized` if user is not authenticated
+ `404 Not Found` if project ID not found


## Snippet content

Get a raw project snippet.

```
GET /projects/:id/snippets/:snippet_id/raw
```

Parameters:

+ `id` (required) - The ID of a project
+ `snippet_id` (required) - The ID of a project's snippet

Return values:

+ `200 Ok` on success and the raw snippet
+ `401 Unauthorized` if user is not authenticated
+ `404 Not Found` if project ID or snippet ID is not found