Skip to content

Latest commit

 

History

History
1589 lines (1532 loc) · 49.8 KB

webhooks.adoc

File metadata and controls

1589 lines (1532 loc) · 49.8 KB

Taiga: Webhooks

Taiga webhooks notify changes on milestones, user stories, tasks, issues and wiki pages sending POST requests signed with a private key, to the configured urls.

Each project can have any number of webhooks configured on it.

1. Configuration

To activate webhooks you must configure taiga-back local settings file ~/taiga-back/settings/local.py adding the WEBHOOKS_ENABLED = True.

Moreover there is another setting to disallow webhooks access to reserved and private address, see [IANA IPv4 Special-Purpose Address](https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml) and [IANA IPv6 Special-Purpose Address](https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml). To activate add also to your settings file WEBHOOKS_BLOCK_PRIVATE_ADDRESS = True.

2. Request

The request made by the Taiga webhooks can be synchronous or asynchronous (it depends on the Taiga configuration, for example tree.taiga.io is async). In asynchronous mode those requests to your configured url can have a delay of some seconds.

All request send to the URL are POST with header Content-Type equals to application/json and a signature of the message in the X-TAIGA-WEBHOOK-SIGNATURE HTTP header.

The body of the POST request is just a JSON with the corresponding payload.

3. Verify signature

Every request have a header called X-TAIGA-WEBHOOK-SIGNATURE that contains the signature generated with [HMAC](http://en.wikipedia.org/wiki/Hash-based_message_authentication_code) using sha1 hash.

An example of signature verification in python:

def verify_signature(key, data, signature):
    mac = hmac.new(key.encode("utf-8"), msg=data, digestmod=hashlib.sha1)
    return mac.hexdigest() == signature

in php:

<?php
    function verify_signature($key, $data, $signature) {
        return hash_hmac("sha1", $data , $key) == $signature
    }
?>

4. Payloads

The sended request depends on the object type and the kind of change, all payloads have the same base structure

{
    "action": "",
    "type": "",
    "by": {}
    "date": ""
    "data": {},
    "change": {}
}
  • The action field contains notification type with values: "create", "delete", "change" or "test".

  • The type field contains the type of object with values: "milestone", "userstory", "task", "issue", "wikipage" or "test".

  • The by field contains the information of the user thast generate the notification.

  • The date field contains the date and time of thwe current notification.

  • The data field contains the current object information.

  • The change field (only present on change notifications) contains the information about the changes made.

4.1. Test payload

{
    "type": "test",
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    },
    "date": "2016-04-12T12:00:56.335Z",
    "action": "test",
    "data": {
        "test": "test"
    }
}

4.2. Milestone payloads

4.2.1. Create

{
    "type": "milestone",
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    },
    "date": "2016-04-12T12:08:18.309Z",
    "action": "create",
    "data": {
        "permalink": "http://localhost:9001/project/project-0/taskboard/sprint-4",
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "id": 13,
        "name": "Sprint 4",
        "slug": "sprint-4",
        "estimated_start": "2016-03-02",
        "estimated_finish": "2016-03-16",
        "created_date": "2016-04-12T12:08:18+0000",
        "modified_date": "2016-04-12T12:08:18+0000",
        "closed": false,
        "disponibility": 0.0
    }
}

4.2.2. Delete

{
    "type": "milestone",
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    },
    "date": "2016-04-12T12:13:47.873Z",
    "action": "delete",
    "data": {
        "permalink": "http://localhost:9001/project/project-0/taskboard/sprint-4",
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "id": 13,
        "name": "Sprint 4",
        "slug": "sprint-4",
        "estimated_start": "2016-03-02",
        "estimated_finish": "2016-03-24",
        "created_date": "2016-04-12T12:08:18+0000",
        "modified_date": "2016-04-12T12:09:42+0000",
        "closed": false,
        "disponibility": 0.0
    }
}

4.2.3. Change

{
    "type": "milestone",
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    },
    "action": "change",
    "data": {
        "permalink": "http://localhost:9001/project/project-0/taskboard/sprint-4",
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "id": 13,
        "name": "Sprint 4",
        "slug": "sprint-4",
        "estimated_start": "2016-03-02",
        "estimated_finish": "2016-03-24",
        "created_date": "2016-04-12T12:08:18+0000",
        "modified_date": "2016-04-12T12:09:42+0000",
        "closed": false,
        "disponibility": 0.0
    },
    "date": "2016-04-12T12:09:42.527Z",
    "change": {
        "diff": {
            "estimated_start": {
                "to": "2016-03-02",
                "from": "2016-03-02"
            },
            "estimated_finish": {
                "to": "2016-03-24",
                "from": "2016-03-16"
            }
        },
        "comment": "",
        "comment_html": "",
        "delete_comment_date": null
    }
}

4.3. User story data information

4.3.1. Create

{
    "type": "userstory",
    "date": "2016-04-12T12:17:20.486Z",
    "action": "create",
    "data": {
        "custom_attributes_values": {},
        "watchers": [],
        "permalink": "http://localhost:9001/project/project-0/us/72",
        "tags": [
            "dolorum",
            "adipisci",
            "ipsa"
        ],
        "external_reference": null,
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "assigned_to": null,
        "points": [
            {
                "role": "UX",
                "name": "5",
                "value": 5.0
            },
            {
                "role": "Design",
                "name": "1",
                "value": 1.0
            },
            {
                "role": "Front",
                "name": "3",
                "value": 3.0
            },
            {
                "role": "Back",
                "name": "40",
                "value": 40.0
            }
        ],
        "status": {
            "id": 1,
            "name": "New",
            "slug": "new",
            "color": "#999999",
            "is_closed": false,
            "is_archived": false
        },
        "milestone": null,
        "id": 139,
        "is_blocked": true,
        "blocked_note": "Blocked test message",
        "ref": 72,
        "is_closed": false,
        "created_date": "2016-04-12T12:17:19+0000",
        "modified_date": "2016-04-12T12:17:19+0000",
        "finish_date": null,
        "subject": "test user story 5",
        "description": "this is a test description",
        "client_requirement": false,
        "team_requirement": true,
        "generated_from_issue": null,
        "tribe_gig": null
    },
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    }
}

4.3.2. Delete

{
    "type": "userstory",
    "date": "2016-04-12T12:19:19.433Z",
    "action": "delete",
    "data": {
        "custom_attributes_values": null,
        "watchers": [],
        "permalink": "http://localhost:9001/project/project-0/us/72",
        "tags": [
            "dolorum",
            "adipisci",
            "ipsa"
        ],
        "external_reference": null,
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "assigned_to": null,
        "points": [],
        "status": {
            "id": 1,
            "name": "New",
            "slug": "new",
            "color": "#999999",
            "is_closed": false,
            "is_archived": false
        },
        "milestone": {
            "permalink": "http://localhost:9001/project/project-0/taskboard/sprint-2016-2-16",
            "project": {
                "id": 1,
                "permalink": "http://localhost:9001/project/project-0",
                "name": "Project Example 0",
                "logo_big_url": null
            },
            "owner": {
                "id": 4,
                "permalink": "http://localhost:9001/profile/admin",
                "username": "admin",
                "full_name": "Administrator",
                "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
                "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
            },
            "id": 1,
            "name": "Sprint 2016-2-16",
            "slug": "sprint-2016-2-16",
            "estimated_start": "2016-02-16",
            "estimated_finish": "2016-03-02",
            "created_date": "2016-02-16T13:15:03+0000",
            "modified_date": "2016-04-11T13:15:03+0000",
            "closed": false,
            "disponibility": 0.0
        },
        "id": 139,
        "is_blocked": true,
        "blocked_note": "Blocked test message",
        "ref": 72,
        "is_closed": false,
        "created_date": "2016-04-12T12:17:19+0000",
        "modified_date": "2016-04-12T12:18:19+0000",
        "finish_date": null,
        "subject": "test user story 5",
        "description": "this is a test description",
        "client_requirement": false,
        "team_requirement": true,
        "generated_from_issue": null,
        "tribe_gig": null
    },
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    }
}

4.3.3. Change

{
    "type": "userstory",
    "date": "2016-04-12T12:18:19.685Z",
    "change": {
        "diff": {
            "milestone": {
                "to": "Sprint 2016-2-16",
                "from": null
            }
        },
        "comment": "",
        "comment_html": "",
        "delete_comment_date": null
    },
    "action": "change",
    "data": {
        "custom_attributes_values": {},
        "watchers": [],
        "permalink": "http://localhost:9001/project/project-0/us/72",
        "tags": [
            "dolorum",
            "adipisci",
            "ipsa"
        ],
        "external_reference": null,
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "assigned_to": null,
        "points": [
            {
                "role": "UX",
                "name": "5",
                "value": 5.0
            },
            {
                "role": "Design",
                "name": "1",
                "value": 1.0
            },
            {
                "role": "Front",
                "name": "3",
                "value": 3.0
            },
            {
                "role": "Back",
                "name": "40",
                "value": 40.0
            }
        ],
        "status": {
            "id": 1,
            "name": "New",
            "slug": "new",
            "color": "#999999",
            "is_closed": false,
            "is_archived": false
        },
        "milestone": {
            "permalink": "http://localhost:9001/project/project-0/taskboard/sprint-2016-2-16",
            "project": {
                "id": 1,
                "permalink": "http://localhost:9001/project/project-0",
                "name": "Project Example 0",
                "logo_big_url": null
            },
            "owner": {
                "id": 4,
                "permalink": "http://localhost:9001/profile/admin",
                "username": "admin",
                "full_name": "Administrator",
                "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
                "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
            },
            "id": 1,
            "name": "Sprint 2016-2-16",
            "slug": "sprint-2016-2-16",
            "estimated_start": "2016-02-16",
            "estimated_finish": "2016-03-02",
            "created_date": "2016-02-16T13:15:03+0000",
            "modified_date": "2016-04-11T13:15:03+0000",
            "closed": false,
            "disponibility": 0.0
        },
        "id": 139,
        "is_blocked": true,
        "blocked_note": "Blocked test message",
        "ref": 72,
        "is_closed": false,
        "created_date": "2016-04-12T12:17:19+0000",
        "modified_date": "2016-04-12T12:18:19+0000",
        "finish_date": null,
        "subject": "test user story 5",
        "description": "this is a test description",
        "client_requirement": false,
        "team_requirement": true,
        "generated_from_issue": null,
        "tribe_gig": null
    },
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    }
}

4.4. Task data information

4.4.1. Create

{
    "type": "task",
    "date": "2016-04-12T12:20:54.758Z",
    "action": "create",
    "data": {
        "custom_attributes_values": {},
        "watchers": [],
        "permalink": "http://localhost:9001/project/project-0/task/73",
        "tags": [
            "dolorem"
        ],
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "assigned_to": {
            "id": 10,
            "permalink": "http://localhost:9001/profile/user5",
            "username": "user5",
            "full_name": "Alicia Flores",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "status": {
            "id": 2,
            "name": "In progress",
            "slug": "in-progress",
            "color": "#ff9900",
            "is_closed": false
        },
        "user_story": {
            "custom_attributes_values": {
                "eius vero facere": "repellat"
            },
            "watchers": [
                1
            ],
            "permalink": "http://localhost:9001/project/project-0/us/6",
            "tags": [
                "quam",
                "nulla"
            ],
            "external_reference": null,
            "project": {
                "id": 1,
                "permalink": "http://localhost:9001/project/project-0",
                "name": "Project Example 0",
                "logo_big_url": null
            },
            "owner": {
                "id": 8,
                "permalink": "http://localhost:9001/profile/user3",
                "username": "user3",
                "full_name": "Concepcion Garrido",
                "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
                "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
            },
            "assigned_to": {
                "id": 13,
                "permalink": "http://localhost:9001/profile/user8",
                "username": "user8",
                "full_name": "Lourdes Aguilar",
                "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
                "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
            },
            "points": [
                {
                    "role": "UX",
                    "name": "8",
                    "value": 8.0
                },
                {
                    "role": "Design",
                    "name": "10",
                    "value": 10.0
                },
                {
                    "role": "Front",
                    "name": "0",
                    "value": 0.0
                },
                {
                    "role": "Back",
                    "name": "40",
                    "value": 40.0
                }
            ],
            "status": {
                "id": 4,
                "name": "Ready for test",
                "slug": "ready-for-test",
                "color": "#fcc000",
                "is_closed": false,
                "is_archived": false
            },
            "milestone": {
                "permalink": "http://localhost:9001/project/project-0/taskboard/sprint-2016-2-16",
                "project": {
                    "id": 1,
                    "permalink": "http://localhost:9001/project/project-0",
                    "name": "Project Example 0",
                    "logo_big_url": null
                },
                "owner": {
                    "id": 4,
                    "permalink": "http://localhost:9001/profile/admin",
                    "username": "admin",
                    "full_name": "Administrator",
                    "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
                    "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
                },
                "id": 1,
                "name": "Sprint 2016-2-16",
                "slug": "sprint-2016-2-16",
                "estimated_start": "2016-02-16",
                "estimated_finish": "2016-03-02",
                "created_date": "2016-02-16T13:15:03+0000",
                "modified_date": "2016-04-11T13:15:03+0000",
                "closed": false,
                "disponibility": 0.0
            },
            "id": 2,
            "is_blocked": false,
            "blocked_note": "",
            "ref": 6,
            "is_closed": false,
            "created_date": "2016-04-11T13:15:04+0000",
            "modified_date": "2016-04-11T13:15:04+0000",
            "finish_date": null,
            "subject": "Implement the form",
            "description": "Voluptas odio a minus ipsam blanditiis rem, blanditiis...",
            "client_requirement": false,
            "team_requirement": false,
            "generated_from_issue": null,
            "tribe_gig": null
        },
        "milestone": {
            "permalink": "http://localhost:9001/project/project-0/taskboard/sprint-2016-2-16",
            "project": {
                "id": 1,
                "permalink": "http://localhost:9001/project/project-0",
                "name": "Project Example 0",
                "logo_big_url": null
            },
            "owner": {
                "id": 4,
                "permalink": "http://localhost:9001/profile/admin",
                "username": "admin",
                "full_name": "Administrator",
                "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
                "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
            },
            "id": 1,
            "name": "Sprint 2016-2-16",
            "slug": "sprint-2016-2-16",
            "estimated_start": "2016-02-16",
            "estimated_finish": "2016-03-02",
            "created_date": "2016-02-16T13:15:03+0000",
            "modified_date": "2016-04-11T13:15:03+0000",
            "closed": false,
            "disponibility": 0.0
        },
        "id": 163,
        "is_blocked": true,
        "blocked_note": "blocked note message",
        "ref": 73,
        "created_date": "2016-04-12T12:20:54+0000",
        "modified_date": "2016-04-12T12:20:54+0000",
        "finished_date": null,
        "subject": "test task",
        "us_order": 1,
        "taskboard_order": 1,
        "description": "Task description example",
        "is_iocaine": true,
        "external_reference": null
    },
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    }
}

4.4.2. Delete

{
    "data": {
        "custom_attributes_values": null,
        "watchers": [],
        "permalink": "http://localhost:9001/project/project-0/task/73",
        "tags": [
            "dolorem"
        ],
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "assigned_to": {
            "id": 4,
            "permalink": "http://localhost:9001/profile/admin",
            "username": "admin",
            "full_name": "Administrator",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
"gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "status": {
            "id": 2,
            "name": "In progress",
            "slug": "in-progress",
            "color": "#ff9900",
            "is_closed": false
        },
        "user_story": {
            "custom_attributes_values": {
                "eius vero facere": "repellat"
            },
            "watchers": [
                1
            ],
            "permalink": "http://localhost:9001/project/project-0/us/6",
            "tags": [
                "quam",
                "nulla"
            ],
            "external_reference": null,
            "project": {
                "id": 1,
                "permalink": "http://localhost:9001/project/project-0",
                "name": "Project Example 0",
                "logo_big_url": null
            },
            "owner": {
                "id": 8,
                "permalink": "http://localhost:9001/profile/user3",
                "username": "user3",
                "full_name": "Concepcion Garrido",
                "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
                "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
            },
            "assigned_to": {
                "id": 13,
                "permalink": "http://localhost:9001/profile/user8",
                "username": "user8",
                "full_name": "Lourdes Aguilar",
                "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
                "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
            },
            "points": [
                {
                    "role": "UX",
                    "name": "8",
                    "value": 8.0
                },
                {
                    "role": "Design",
                    "name": "10",
                    "value": 10.0
                },
                {
                    "role": "Front",
                    "name": "0",
                    "value": 0.0
                },
                {
                    "role": "Back",
                    "name": "40",
                    "value": 40.0
                }
            ],
            "status": {
                "id": 4,
                "name": "Ready for test",
                "slug": "ready-for-test",
                "color": "#fcc000",
                "is_closed": false,
                "is_archived": false
            },
            "milestone": {
                "permalink": "http://localhost:9001/project/project-0/taskboard/sprint-2016-2-16",
                "project": {
                    "id": 1,
                    "permalink": "http://localhost:9001/project/project-0",
                    "name": "Project Example 0",
                    "logo_big_url": null
                },
                "owner": {
                    "id": 4,
                    "permalink": "http://localhost:9001/profile/admin",
                    "username": "admin",
                    "full_name": "Administrator",
                    "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
                    "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
                },
                "id": 1,
                "name": "Sprint 2016-2-16",
                "slug": "sprint-2016-2-16",
                "estimated_start": "2016-02-16",
                "estimated_finish": "2016-03-02",
                "created_date": "2016-02-16T13:15:03+0000",
                "modified_date": "2016-04-11T13:15:03+0000",
                "closed": false,
                "disponibility": 0.0
            },
            "id": 2,
            "is_blocked": false,
            "blocked_note": "",
            "ref": 6,
            "is_closed": false,
            "created_date": "2016-04-11T13:15:04+0000",
            "modified_date": "2016-04-11T13:15:04+0000",
            "finish_date": null,
            "subject": "Implement the form",
            "description": "Voluptas odio a minus ipsam blanditiis rem, blanditiis corrupti odio expedita nihil consequuntur possimus sequi, quia eos obcaecati hic molestias quam similique ratione neque, ex eveniet hic ipsam minus animi cumque beatae deserunt fugit eos, mollitia aut veritatis quisquam delectus ipsum ex in?",
            "client_requirement": false,
            "team_requirement": false,
            "generated_from_issue": null,
            "tribe_gig": null
        },
        "milestone": {
            "permalink": "http://localhost:9001/project/project-0/taskboard/sprint-2016-2-16",
            "project": {
                "id": 1,
                "permalink": "http://localhost:9001/project/project-0",
                "name": "Project Example 0",
                "logo_big_url": null
            },
            "owner": {
                "id": 4,
                "permalink": "http://localhost:9001/profile/admin",
                "username": "admin",
                "full_name": "Administrator",
                "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
"gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
            },
            "id": 1,
            "name": "Sprint 2016-2-16",
            "slug": "sprint-2016-2-16",
            "estimated_start": "2016-02-16",
            "estimated_finish": "2016-03-02",
            "created_date": "2016-02-16T13:15:03+0000",
            "modified_date": "2016-04-11T13:15:03+0000",
            "closed": false,
            "disponibility": 0.0
        },
        "id": 163,
        "is_blocked": true,
        "blocked_note": "blocked note message",
        "ref": 73,
        "created_date": "2016-04-12T12:20:54+0000",
        "modified_date": "2016-04-12T12:21:40+0000",
        "finished_date": null,
        "subject": "test task",
        "us_order": 1,
        "taskboard_order": 1,
        "description": "Task description example",
        "is_iocaine": true,
        "external_reference": null
    },
    "type": "task",
    "action": "delete",
    "date": "2016-04-12T12:28:18.750Z",
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    }
}

4.4.3. Change

{
    "action": "change",
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    },
    "type": "task",
    "data": {
        "custom_attributes_values": {},
        "watchers": [],
        "permalink": "http://localhost:9001/project/project-0/task/73",
        "tags": [
            "dolorem"
        ],
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "assigned_to": {
            "id": 4,
            "permalink": "http://localhost:9001/profile/admin",
            "username": "admin",
            "full_name": "Administrator",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "status": {
            "id": 2,
            "name": "In progress",
            "slug": "in-progress",
            "color": "#ff9900",
            "is_closed": false
        },
        "user_story": {
            "custom_attributes_values": {
                "eius vero facere": "repellat"
            },
            "watchers": [
                1
            ],
            "permalink": "http://localhost:9001/project/project-0/us/6",
            "tags": [
                "quam",
                "nulla"
            ],
            "external_reference": null,
            "project": {
                "id": 1,
                "permalink": "http://localhost:9001/project/project-0",
                "name": "Project Example 0",
                "logo_big_url": null
            },
            "owner": {
                "id": 8,
                "permalink": "http://localhost:9001/profile/user3",
                "username": "user3",
                "full_name": "Concepcion Garrido",
                "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
                "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
            },
            "assigned_to": {
                "id": 13,
                "permalink": "http://localhost:9001/profile/user8",
                "username": "user8",
                "full_name": "Lourdes Aguilar",
                "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
                "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
            },
            "points": [
                {
                    "role": "UX",
                    "name": "8",
                    "value": 8.0
                },
                {
                    "role": "Design",
                    "name": "10",
                    "value": 10.0
                },
                {
                    "role": "Front",
                    "name": "0",
                    "value": 0.0
                },
                {
                    "role": "Back",
                    "name": "40",
                    "value": 40.0
                }
            ],
            "status": {
                "id": 4,
                "name": "Ready for test",
                "slug": "ready-for-test",
                "color": "#fcc000",
                "is_closed": false,
                "is_archived": false
            },
            "milestone": {
                "permalink": "http://localhost:9001/project/project-0/taskboard/sprint-2016-2-16",
                "project": {
                    "id": 1,
                    "permalink": "http://localhost:9001/project/project-0",
                    "name": "Project Example 0",
                    "logo_big_url": null
                },
                "owner": {
                    "id": 4,
                    "permalink": "http://localhost:9001/profile/admin",
                    "username": "admin",
                    "full_name": "Administrator",
                    "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
"gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
                },
                "id": 1,
                "name": "Sprint 2016-2-16",
                "slug": "sprint-2016-2-16",
                "estimated_start": "2016-02-16",
                "estimated_finish": "2016-03-02",
                "created_date": "2016-02-16T13:15:03+0000",
                "modified_date": "2016-04-11T13:15:03+0000",
                "closed": false,
                "disponibility": 0.0
            },
            "id": 2,
            "is_blocked": false,
            "blocked_note": "",
            "ref": 6,
            "is_closed": false,
            "created_date": "2016-04-11T13:15:04+0000",
            "modified_date": "2016-04-11T13:15:04+0000",
            "finish_date": null,
            "subject": "Implement the form",
            "description": "Voluptas odio a minus ipsam blanditiis rem, blanditiis...",
            "client_requirement": false,
            "team_requirement": false,
            "generated_from_issue": null,
            "tribe_gig": null
        },
        "milestone": {
            "permalink": "http://localhost:9001/project/project-0/taskboard/sprint-2016-2-16",
            "project": {
                "id": 1,
                "permalink": "http://localhost:9001/project/project-0",
                "name": "Project Example 0",
                "logo_big_url": null
            },
            "owner": {
                "id": 4,
                "permalink": "http://localhost:9001/profile/admin",
                "username": "admin",
                "full_name": "Administrator",
                "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
"gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
            },
            "id": 1,
            "name": "Sprint 2016-2-16",
            "slug": "sprint-2016-2-16",
            "estimated_start": "2016-02-16",
            "estimated_finish": "2016-03-02",
            "created_date": "2016-02-16T13:15:03+0000",
            "modified_date": "2016-04-11T13:15:03+0000",
            "closed": false,
            "disponibility": 0.0
        },
        "id": 163,
        "is_blocked": true,
        "blocked_note": "blocked note message",
        "ref": 73,
        "created_date": "2016-04-12T12:20:54+0000",
        "modified_date": "2016-04-12T12:21:40+0000",
        "finished_date": null,
        "subject": "test task",
        "us_order": 1,
        "taskboard_order": 1,
        "description": "Task description example",
        "is_iocaine": true,
        "external_reference": null
    },
    "date": "2016-04-12T12:21:40.603Z",
    "change": {
        "diff": {
            "assigned_to": {
                "from": "Alicia Flores",
                "to": "Administrator"
            }
        },
        "comment": "",
        "comment_html": "",
        "delete_comment_date": null
    }
}

4.5. Issue data information

4.5.1. Create

{
    "data": {
        "custom_attributes_values": {},
        "watchers": [],
        "permalink": "http://localhost:9001/project/project-0/issue/75",
        "tags": [
            "officia",
            "delectus"
        ],
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "milestone": null,
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "assigned_to": null,
        "status": {
            "id": 1,
            "name": "New",
            "slug": "new",
            "color": "#8C2318",
            "is_closed": false
        },
        "type": {
            "id": 1,
            "name": "Bug",
            "color": "#89BAB4"
        },
        "priority": {
            "id": 1,
            "name": "Low",
            "color": "#666666"
        },
        "severity": {
            "id": 4,
            "name": "Important",
            "color": "#FFA500"
        },
        "id": 95,
        "is_blocked": false,
        "blocked_note": "",
        "ref": 75,
        "created_date": "2016-04-12T12:48:12+0000",
        "modified_date": "2016-04-12T12:48:12+0000",
        "finished_date": null,
        "subject": "Test issue 3",
        "description": "Test issue description",
        "external_reference": null
    },
    "type": "issue",
    "action": "create",
    "date": "2016-04-12T12:48:13.089Z",
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    }
}

4.5.2. Delete

{
    "data": {
        "custom_attributes_values": null,
        "watchers": [],
        "permalink": "http://localhost:9001/project/project-0/issue/75",
        "tags": [
            "officia",
            "delectus"
        ],
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "milestone": null,
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "assigned_to": null,
        "status": {
            "id": 3,
            "name": "Ready for test",
            "slug": "ready-for-test",
            "color": "#88A65E",
            "is_closed": true
        },
        "type": {
            "id": 1,
            "name": "Bug",
            "color": "#89BAB4"
        },
        "priority": {
            "id": 1,
            "name": "Low",
            "color": "#666666"
        },
        "severity": {
            "id": 4,
            "name": "Important",
            "color": "#FFA500"
        },
        "id": 95,
        "is_blocked": false,
        "blocked_note": "",
        "ref": 75,
        "created_date": "2016-04-12T12:48:12+0000",
        "modified_date": "2016-04-12T12:49:13+0000",
        "finished_date": "2016-04-12T12:49:13+0000",
        "subject": "Test issue 3",
        "description": "Test issue description",
        "external_reference": null
    },
    "type": "issue",
    "action": "delete",
    "date": "2016-04-12T12:50:23.488Z",
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    }
}

4.5.3. Change

{
    "change": {
        "diff": {
            "status": {
                "to": "Ready for test",
                "from": "New"
            }
        },
        "comment": "",
        "comment_html": "",
        "delete_comment_date": null
    },
    "data": {
        "custom_attributes_values": {},
        "watchers": [],
        "permalink": "http://localhost:9001/project/project-0/issue/75",
        "tags": [
            "officia",
            "delectus"
        ],
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "milestone": null,
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "assigned_to": null,
        "status": {
            "id": 3,
            "name": "Ready for test",
            "slug": "ready-for-test",
            "color": "#88A65E",
            "is_closed": true
        },
        "type": {
            "id": 1,
            "name": "Bug",
            "color": "#89BAB4"
        },
        "priority": {
            "id": 1,
            "name": "Low",
            "color": "#666666"
        },
        "severity": {
            "id": 4,
            "name": "Important",
            "color": "#FFA500"
        },
        "id": 95,
        "is_blocked": false,
        "blocked_note": "",
        "ref": 75,
        "created_date": "2016-04-12T12:48:12+0000",
        "modified_date": "2016-04-12T12:49:13+0000",
        "finished_date": "2016-04-12T12:49:13+0000",
        "subject": "Test issue 3",
        "description": "Test issue description",
        "external_reference": null
    },
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    },
    "type": "issue",
    "action": "change",
    "date": "2016-04-12T12:49:13.188Z"
}

4.6. Wiki page data information

4.6.1. Create

{
    "data": {
        "permalink": "http://localhost:9001/project/project-0/wiki/test-wiki-page",
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "last_modifier": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "id": 6,
        "slug": "test-wiki-page",
        "content": "this is a test content",
        "created_date": "2016-04-12T12:29:32+0000",
        "modified_date": "2016-04-12T12:29:32+0000"
    },
    "type": "wikipage",
    "action": "create",
    "date": "2016-04-12T12:29:32.535Z",
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    }
}

4.6.2. Delete

{
    "data": {
        "permalink": "http://localhost:9001/project/project-0/wiki/test-wiki-page",
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "last_modifier": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "id": 6,
        "slug": "test-wiki-page",
        "content": "This is other test content",
        "created_date": "2016-04-12T12:29:32+0000",
        "modified_date": "2016-04-12T12:30:29+0000"
    },
    "type": "wikipage",
    "action": "delete",
    "date": "2016-04-12T12:31:19.281Z",
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    }
}

4.6.3. Change

{
    "change": {
        "diff": {
            "content_html": {
                "to": "<p>This is other test content</p>",
                "from": "<p>this is a test content</p>"
            },
            "content_diff": {
                "to": "<del style=\"background:#ffe6e6;\">t</del><ins style=\"background:#e6ffe6;\">T</ins><span>his is </span><del style=\"background:#ffe6e6;\">a</del><ins style=\"background:#e6ffe6;\">other</ins><span> test content</span>",
                "from": null
            }
        },
        "comment": "",
        "comment_html": "",
        "delete_comment_date": null
    },
    "data": {
        "permalink": "http://localhost:9001/project/project-0/wiki/test-wiki-page",
        "project": {
            "id": 1,
            "permalink": "http://localhost:9001/project/project-0",
            "name": "Project Example 0",
            "logo_big_url": null
        },
        "owner": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "last_modifier": {
            "id": 6,
            "permalink": "http://localhost:9001/profile/user1",
            "username": "user1",
            "full_name": "Purificacion Montero",
            "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
            "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
        },
        "id": 6,
        "slug": "test-wiki-page",
        "content": "This is other test content",
        "created_date": "2016-04-12T12:29:32+0000",
        "modified_date": "2016-04-12T12:30:29+0000"
    },
    "by": {
        "id": 6,
        "permalink": "http://localhost:9001/profile/user1",
        "username": "user1",
        "full_name": "Purificacion Montero",
        "photo": "//media.taiga.io/avatar.80x80_q85_crop.png",
        "gravatar_id": "464bb6d514c3ecece1b87136ceeda1da"
    },
    "type": "wikipage",
    "action": "change",
    "date": "2016-04-12T12:30:29.870Z"
}