Versions

Personas in this Story: Default, Member.

First version of the note that name "Version 1" and body "Vrsion 1 is awesome":

Response: HTTP 200, application/json (Hide)
POST /projects/1/notes

Payload:

1
2
3
4
{
    "name": "Version 1",
    "body": "Vrsion 1 is awesome"
}

Response:

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
{
    "single": {
        "id": 1,
        "class": "Note",
        "url_path": "\/projects\/1\/notes\/1",
        "name": "Version 1",
        "comments_count": 0,
        "attachments": [],
        "is_trashed": false,
        "trashed_on": null,
        "trashed_by_id": 0,
        "project_id": 1,
        "is_hidden_from_clients": false,
        "body": "Vrsion 1 is awesome",
        "body_formatted": "Vrsion 1 is awesome",
        "body_plain_text": "Vrsion 1 is awesome",
        "created_on": 1430164249,
        "created_by_id": 1,
        "updated_on": 1430164249,
        "updated_by_id": 1,
        "note_id": 0,
        "is_subnote": false,
        "subnotes_count": 0,
        "is_in_collection": false,
        "position": 0,
        "contributor_ids": [
            1
        ]
    },
    "subscribers": [
        1
    ],
    "comments": [],
    "subnotes": []
}

Oh, we made a mistake here. Lets correct it:

Response: HTTP 200, application/json (Hide)
PUT /projects/1/notes/1 (as Member)

Payload:

1
2
3
{
    "body": "Version 1 is awesome"
}

Response:

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
{
    "single": {
        "id": 1,
        "class": "Note",
        "url_path": "\/projects\/1\/notes\/1",
        "name": "Version 1",
        "comments_count": 0,
        "attachments": [],
        "is_trashed": false,
        "trashed_on": null,
        "trashed_by_id": 0,
        "project_id": 1,
        "is_hidden_from_clients": false,
        "body": "Version 1 is awesome",
        "body_formatted": "Version 1 is awesome",
        "body_plain_text": "Version 1 is awesome",
        "created_on": 1430164249,
        "created_by_id": 1,
        "updated_on": 1430164250,
        "updated_by_id": 2,
        "note_id": 0,
        "is_subnote": false,
        "subnotes_count": 0,
        "is_in_collection": false,
        "position": 0,
        "contributor_ids": [
            1,
            2
        ]
    },
    "subscribers": [
        1
    ],
    "comments": [],
    "subnotes": []
}

This will make version two look like this: name "Version 1", body: "Version 1 is awesome". Lets do one update that will create a history entry, but that will not create a new version:

Response: HTTP 200, application/json (Hide)
PUT /projects/1/notes/1

Payload:

1
2
3
{
    "is_hidden_from_clients": true
}

Response:

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
{
    "single": {
        "id": 1,
        "class": "Note",
        "url_path": "\/projects\/1\/notes\/1",
        "name": "Version 1",
        "comments_count": 0,
        "attachments": [],
        "is_trashed": false,
        "trashed_on": null,
        "trashed_by_id": 0,
        "project_id": 1,
        "is_hidden_from_clients": true,
        "body": "Version 1 is awesome",
        "body_formatted": "Version 1 is awesome",
        "body_plain_text": "Version 1 is awesome",
        "created_on": 1430164249,
        "created_by_id": 1,
        "updated_on": 1430164250,
        "updated_by_id": 1,
        "note_id": 0,
        "is_subnote": false,
        "subnotes_count": 0,
        "is_in_collection": false,
        "position": 0,
        "contributor_ids": [
            1,
            2
        ]
    },
    "subscribers": [
        1
    ],
    "comments": [],
    "subnotes": []
}

Lets create a version #3:

Response: HTTP 200, application/json (Hide)
PUT /projects/1/notes/1

Payload:

1
2
3
4
{
    "name": "Version 3",
    "body": "Version 3 is much better"
}

Response:

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
{
    "single": {
        "id": 1,
        "class": "Note",
        "url_path": "\/projects\/1\/notes\/1",
        "name": "Version 3",
        "comments_count": 0,
        "attachments": [],
        "is_trashed": false,
        "trashed_on": null,
        "trashed_by_id": 0,
        "project_id": 1,
        "is_hidden_from_clients": true,
        "body": "Version 3 is much better",
        "body_formatted": "Version 3 is much better",
        "body_plain_text": "Version 3 is much better",
        "created_on": 1430164249,
        "created_by_id": 1,
        "updated_on": 1430164250,
        "updated_by_id": 1,
        "note_id": 0,
        "is_subnote": false,
        "subnotes_count": 0,
        "is_in_collection": false,
        "position": 0,
        "contributor_ids": [
            1,
            2
        ]
    },
    "subscribers": [
        1
    ],
    "comments": [],
    "subnotes": []
}

and v4 that does not update both fields:

Response: HTTP 200, application/json (Hide)
PUT /projects/1/notes/1 (as Member)

Payload:

1
2
3
{
    "name": "Maybe we should go with v4?"
}

Response:

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
{
    "single": {
        "id": 1,
        "class": "Note",
        "url_path": "\/projects\/1\/notes\/1",
        "name": "Maybe we should go with v4?",
        "comments_count": 0,
        "attachments": [],
        "is_trashed": false,
        "trashed_on": null,
        "trashed_by_id": 0,
        "project_id": 1,
        "is_hidden_from_clients": true,
        "body": "Version 3 is much better",
        "body_formatted": "Version 3 is much better",
        "body_plain_text": "Version 3 is much better",
        "created_on": 1430164249,
        "created_by_id": 1,
        "updated_on": 1430164250,
        "updated_by_id": 2,
        "note_id": 0,
        "is_subnote": false,
        "subnotes_count": 0,
        "is_in_collection": false,
        "position": 0,
        "contributor_ids": [
            1,
            2
        ]
    },
    "subscribers": [
        1
    ],
    "comments": [],
    "subnotes": []
}

Lets check how this looks like:

Response: HTTP 200, application/json (Hide)
GET /projects/1/notes/1/versions

Response:

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
{
    "1": {
        "created_on": 1430164249,
        "created_by_id": 1,
        "name": "Version 1",
        "body": "Vrsion 1 is awesome",
        "modification_id": 0
    },
    "2": {
        "created_on": 1430164250,
        "created_by_id": 2,
        "name": "Version 1",
        "body": "Version 1 is awesome",
        "modification_id": 1
    },
    "3": {
        "created_on": 1430164250,
        "created_by_id": 1,
        "name": "Version 3",
        "body": "Version 3 is much better",
        "modification_id": 3
    },
    "4": {
        "created_on": 1430164250,
        "created_by_id": 2,
        "name": "Maybe we should go with v4?",
        "body": "Version 3 is much better",
        "modification_id": 4
    }
}