1.Introduction
Codeline REST API provides some basic functionality such as creating project and tasks, adding comments to task, fetching projects, tasks and comments, developer list etc. All API requests use the content type “application/json”.
API base url is
https://app.codeline.io/api/
2.Authentication
Codeline REST API uses JWT (Json Web Token) to authenticate users. This token can be obtained by your username and password. After you obtained your token, you need to send it in your further API request Authorization
header.
Obtaining Token
Parameters
- email [required]
- password [required]
Endpoint
POST /auth/token
Response Example:
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjM2OCwiaXNzIjoiaHRaaDovL2dpdGVtYW5hZ2UudGVzdC9hcGkvdG9rZW4iLCJpYXQiOjE1NDQwOTI4MTgsImV4cCI6MTU0NTM4ODgxOCwibmJmIjoxNTQ0MDkyODE4LCJqdGkiOiJkRG52T3JHcEx1WENhcGhkIn0.JvCvmyzBT1AQNFOTeB9QWJ9u6GKbERP2S0r4Fud7SBs"
}
Failed Response Example:
{
"error": "invalid_credentials"
}
Using Token
Requests requiring user authentication should have JWT token inside the HTTP request header as follows.
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjM2OCwiaXNzIjoiaHRaaDovL2dpdGVtYW5hZ2UudGVzdC9hcGkvdG9rZW4iLCJpYXQiOjE1NDQwOTI4MTgsImV4cCI6MTU0NTM4ODgxOCwibmJmIjoxNTQ0MDkyODE4LCJqdGkiOiJkRG52T3JHcEx1WENhcGhkIn0.JvCvmyzBT1AQNFOTeB9QWJ9u6GKbERP2S0r4Fud7SBs
3.Endpoints
In this section, each available endpoint in the Codeline API is explained with examples.
3.1.Projects Endpoint
Get Projects
Returns the list of all projects accessible by authenticated user
Endpoint
GET /projects
Response Example:
[
{
"star_order": null,
"id": 589,
"name": "Two Good",
"negativebalance": false,
"is_workable": true
},
{
"star_order": 5,
"id": 402,
"name": "Markets Portal",
"negativebalance": false,
"is_workable": true
},
{
"star_order": 1,
"id": 1109,
"name": "Fleetwood Urban",
"negativebalance": false,
"is_workable": true
},
{
"star_order": null,
"id": 90,
"name": "Arent & Pyke",
"negativebalance": false,
"is_workable": true
},
{
"star_order": 2,
"id": 603,
"name": "Iris Vineyards"
"negativebalance": false,
"is_workable": true
},
]
Create Project
Creates a new project
Endpoint
POST /projects
Parameters
- name [required]
- description [required]
Response Example:
{
"client_id": 81,
"manager_id": 155,
"name": "Test Project",
"description": "Lorem ipsum dolor amet.",
"updated_at": "2018-12-06 13:54:23",
"created_at": "2018-12-06 13:54:23",
"id": 1582,
"negativebalance": false,
"is_workable": true
}
3.2.Tasks Endpoint
Get tasks
Returns the list of tasks for given filters
Endpoint
GET /tasks
Parameters
Sent as query string parameters
- project_id [optional]: if sent, tasks under given project, if not sent, only tasks assigned to current user is returned.
- completed: [required]: send 0 for incomplete tasks, 1 for completed tasks
Response Example:
[
{
"id": 6405,
"project_id": 391,
"user_id": 81,
"assignee_id": 81,
"name": "Provide Github Access",
"description": null,
"completed": 1,
"priority": 0,
"order": 22,
"due_at": null,
"created_at": "2017-11-22 13:51:18",
"updated_at": "2017-11-27 01:02:43",
"deleted_at": null,
"archived_at": null,
"estimate": null,
"estimate_draft": null,
"requires_estimate": 0,
"estimate_approved": 0,
"last_estimated_at": null,
"developer_queue_order": null,
"developer_queue_order_natural": 0,
"work_starts_at": null,
"work_finishes_at": null,
"hearts": {
"users": [],
"count": 0
},
"is_section": 0,
"is_bug": 0,
"next_action_party": null,
"requires_re_estimate": 0,
"metafields": null,
"status": 1,
"due_timestamp": null,
"project": {
"id": 391,
"name": "Test Project",
"client_id": 81,
"manager_id": 155,
"negativebalance": true,
"is_workable": false
},
"assignee": {
"id": 81,
"name": "John White",
"avatar_file_name": "tmp_upload_58261fdd26c65.jpg",
"title": "client",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/medium/tmp_upload_58261fdd26c65.jpg",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg"
}
},
{
"id": 7177,
"project_id": 391,
"user_id": 81,
"assignee_id": 81,
"name": "Provide panel access",
"description": null,
"completed": 1,
"priority": 2,
"order": 12,
"due_at": null,
"created_at": "2017-12-04 08:49:24",
"updated_at": "2017-12-05 10:55:06",
"deleted_at": null,
"archived_at": null,
"estimate": null,
"estimate_draft": null,
"requires_estimate": 0,
"estimate_approved": 0,
"last_estimated_at": null,
"developer_queue_order": null,
"developer_queue_order_natural": 0,
"work_starts_at": null,
"work_finishes_at": null,
"hearts": {
"users": [],
"count": 0
},
"is_section": 0,
"is_bug": 0,
"next_action_party": null,
"requires_re_estimate": 0,
"metafields": null,
"status": 1,
"due_timestamp": null,
"project": {
"id": 391,
"name": "Test Project",
"client_id": 81,
"manager_id": 155,
"negativebalance": true,
"is_workable": false
},
"assignee": {
"id": 81,
"name": "John White",
"avatar_file_name": "tmp_upload_58261fdd26c65.jpg",
"title": "client",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/medium/tmp_upload_58261fdd26c65.jpg",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg"
}
}
]
Create a task in a projec
Endpoint
POST /tasks
Parameters
- project_id [required]:
- name [required]:
- description [required]:
Response Example:
{
"id": 17366,
"project_id": 391,
"user_id": 81,
"assignee_id": null,
"name": "Api Test Task ",
"description": "Lorem ipsum dolor amet.",
"completed": 0,
"priority": 0,
"order": 0,
"due_at": null,
"created_at": "2018-12-06 14:14:57",
"updated_at": "2018-12-06 14:14:57",
"deleted_at": null,
"archived_at": null,
"estimate": null,
"estimate_draft": null,
"requires_estimate": 0,
"estimate_approved": 0,
"last_estimated_at": null,
"developer_queue_order": null,
"developer_queue_order_natural": null,
"work_starts_at": null,
"work_finishes_at": null,
"hearts": {
"users": [],
"count": 0
},
"is_section": 0,
"is_bug": 0,
"next_action_party": null,
"requires_re_estimate": 0,
"metafields": null,
"status": 0,
"due_timestamp": null,
"project": {
"id": 391,
"name": "Markets Home Page",
"client_id": 81,
"manager_id": 155,
"negativebalance": true,
"is_workable": false
}
}
Get single task
Endpoint
GET /tasks/{id}
Response Example:
{
"id": 7204,
"project_id": 391,
"user_id": 81,
"assignee_id": 81,
"name": "Implement User Login",
"description": null,
"completed": 1,
"priority": 2,
"order": 15,
"due_at": null,
"created_at": "2017-12-05 05:50:55",
"updated_at": "2017-12-06 00:22:45",
"deleted_at": null,
"archived_at": null,
"estimate": null,
"estimate_draft": null,
"requires_estimate": 0,
"estimate_approved": 0,
"last_estimated_at": null,
"developer_queue_order": null,
"developer_queue_order_natural": 0,
"work_starts_at": null,
"work_finishes_at": null,
"hearts": {
"users": [],
"count": 0
},
"is_section": 0,
"is_bug": 0,
"next_action_party": null,
"requires_re_estimate": 0,
"metafields": null,
"attachments": [],
"status": 1,
"due_timestamp": null,
"total_duration": 24,
"effective_estimate_minutes": 156,
"project": {
"id": 391,
"name": "Markets Home Page",
"client_id": 81,
"manager_id": 155,
"negativebalance": true,
"is_workable": false
},
"assignee": {
"id": 81,
"name": "John White",
"avatar_file_name": "tmp_upload_58261fdd26c65.jpg",
"title": "client",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/medium/tmp_upload_58261fdd26c65.jpg",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg"
},
"timers_after_last_estimate": {
"hours": 0.4,
"minutes": 24
}
}
3.3.Stories and Comments
Get stories of a task
Stories are the action log of a task. Each update and comment in a task is a story.
Endpoint
/tasks/{task_id}/stories?mode={mode}
Parameters
task_id [required]: id of the task that stories belongs to
mode: [required]: all or latest values can be sent. When mode is latest, only the stories containing upto 3 last comments are returned.
Response Example:
{
"older_comment_count": 0,
"stories": [
{
"id": 54268,
"user_id": 81,
"task_id": 7204,
"type": "system",
"action": "created",
"text": "created task",
"html_text": null,
"reference_id": null,
"payload": null,
"public": 1,
"hearts": {
"users": [],
"count": 0
},
"created_at": "2017-12-05 05:50:55",
"updated_at": "2017-12-05 05:50:55",
"mpw": 0,
"is_info": 0,
"formatted_date": "05 Dec",
"formatted_time": "05 Dec 05:50",
"title": "created task",
"is_image": false,
"file_url": null,
"user": {
"id": 81,
"name": "John White",
"avatar_file_name": "tmp_upload_58261fdd26c65.jpg",
"title": "client",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/medium/tmp_upload_58261fdd26c65.jpg",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg"
}
},
{
"id": 54269,
"user_id": 81,
"task_id": 7204,
"type": "system",
"action": "void",
"text": "changed task order",
"html_text": null,
"reference_id": null,
"payload": null,
"public": 1,
"hearts": {
"users": [],
"count": 0
},
"created_at": "2017-12-05 05:50:56",
"updated_at": "2017-12-05 05:50:56",
"mpw": 0,
"is_info": 0,
"formatted_date": "05 Dec",
"formatted_time": "05 Dec 05:50",
"title": "changed task order",
"is_image": false,
"file_url": null,
"user": {
"id": 81,
"name": "John White",
"avatar_file_name": "tmp_upload_58261fdd26c65.jpg",
"title": "client",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/medium/tmp_upload_58261fdd26c65.jpg",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg"
}
},
{
"id": 54270,
"user_id": 81,
"task_id": 7204,
"type": "changed_attribute",
"action": "updated",
"text": "updated task name",
"html_text": null,
"reference_id": null,
"payload": {
"old_attribute": null,
"modified_attribute": "Implement Weglot"
},
"public": 1,
"hearts": {
"users": [],
"count": 0
},
"created_at": "2017-12-05 05:51:01",
"updated_at": "2017-12-05 05:51:01",
"mpw": 0,
"is_info": 0,
"formatted_date": "05 Dec",
"formatted_time": "05 Dec 05:51",
"title": "updated task name",
"is_image": false,
"file_url": null,
"user": {
"id": 81,
"name": "John White",
"avatar_file_name": "tmp_upload_58261fdd26c65.jpg",
"title": "client",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/medium/tmp_upload_58261fdd26c65.jpg",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg"
}
},
{
"id": 54271,
"user_id": 81,
"task_id": 7204,
"type": "system",
"action": "updated",
"text": "assigned to Ashish Patel",
"html_text": null,
"reference_id": null,
"payload": null,
"public": 1,
"hearts": {
"users": [],
"count": 0
},
"created_at": "2017-12-05 05:51:03",
"updated_at": "2017-12-05 05:51:03",
"mpw": 0,
"is_info": 0,
"formatted_date": "05 Dec",
"formatted_time": "05 Dec 05:51",
"title": "assigned to Ashish Patel",
"is_image": false,
"file_url": null,
"user": {
"id": 81,
"name": "John White",
"avatar_file_name": "tmp_upload_58261fdd26c65.jpg",
"title": "client",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/medium/tmp_upload_58261fdd26c65.jpg",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg"
}
},
{
"id": 54272,
"user_id": 81,
"task_id": 7204,
"type": "changed_attribute",
"action": "updated",
"text": "set priority to High",
"html_text": null,
"reference_id": null,
"payload": null,
"public": 1,
"hearts": {
"users": [],
"count": 0
},
"created_at": "2017-12-05 05:51:07",
"updated_at": "2017-12-05 05:51:07",
"mpw": 0,
"is_info": 0,
"formatted_date": "05 Dec",
"formatted_time": "05 Dec 05:51",
"title": "set priority to High",
"is_image": false,
"file_url": null,
"user": {
"id": 81,
"name": "John White",
"avatar_file_name": "tmp_upload_58261fdd26c65.jpg",
"title": "client",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/medium/tmp_upload_58261fdd26c65.jpg",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg"
}
},
{
"id": 54273,
"user_id": 1,
"task_id": 7204,
"type": "system",
"action": "updated",
"text": "assigned to Giray Temel",
"html_text": null,
"reference_id": null,
"payload": null,
"public": 1,
"hearts": {
"users": [],
"count": 0
},
"created_at": "2017-12-05 06:10:55",
"updated_at": "2017-12-05 06:10:55",
"mpw": 0,
"is_info": 0,
"formatted_date": "05 Dec",
"formatted_time": "05 Dec 06:10",
"title": "assigned to Giray Temel",
"is_image": false,
"file_url": null,
"user": {
"id": 1,
"name": "Giray Temel",
"avatar_file_name": "tmp_upload_574487bb8abb5.png",
"title": "ceo",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/001/medium/tmp_upload_574487bb8abb5.png",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/001/thumb/tmp_upload_574487bb8abb5.png",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/001/thumb/tmp_upload_574487bb8abb5.png"
}
},
{
"id": 54430,
"user_id": 1,
"task_id": 7204,
"type": "comment",
"action": "updated",
"text": "Hello Paul,<div><br></div><div>Weglot is already implemented. If you mean the missing translations, they should be added from to weglot website. You can also list here the texts and their translations for language so we can add.</div><div><br></div><div><br></div>",
"html_text": "Hello Paul,<div><br></div><div>Weglot is already implemented. If you mean the missing translations, they should be added from to weglot website. You can also list here the texts and their translations for language so we can add.</div><div><br></div><div><br></div>",
"reference_id": null,
"payload": null,
"public": 1,
"hearts": {
"users": [],
"count": 0
},
"created_at": "2017-12-05 22:44:50",
"updated_at": "2017-12-05 22:44:50",
"mpw": 0,
"is_info": 0,
"formatted_date": "05 Dec",
"formatted_time": "05 Dec 22:44",
"title": "commented on this task",
"is_image": false,
"file_url": null,
"user": {
"id": 1,
"name": "Giray Temel",
"avatar_file_name": "tmp_upload_574487bb8abb5.png",
"title": "ceo",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/001/medium/tmp_upload_574487bb8abb5.png",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/001/thumb/tmp_upload_574487bb8abb5.png",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/001/thumb/tmp_upload_574487bb8abb5.png"
}
},
{
"id": 54431,
"user_id": 1,
"task_id": 7204,
"type": "system",
"action": "updated",
"text": "assigned to John White",
"html_text": null,
"reference_id": null,
"payload": null,
"public": 1,
"hearts": {
"users": [],
"count": 0
},
"created_at": "2017-12-05 22:44:54",
"updated_at": "2017-12-05 22:44:54",
"mpw": 0,
"is_info": 0,
"formatted_date": "05 Dec",
"formatted_time": "05 Dec 22:44",
"title": "assigned to John White",
"is_image": false,
"file_url": null,
"user": {
"id": 1,
"name": "Giray Temel",
"avatar_file_name": "tmp_upload_574487bb8abb5.png",
"title": "ceo",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/001/medium/tmp_upload_574487bb8abb5.png",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/001/thumb/tmp_upload_574487bb8abb5.png",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/001/thumb/tmp_upload_574487bb8abb5.png"
}
},
{
"id": 54434,
"user_id": 81,
"task_id": 7204,
"type": "system",
"action": "updated",
"text": "completed this task",
"html_text": null,
"reference_id": null,
"payload": null,
"public": 1,
"hearts": {
"users": [],
"count": 0
},
"created_at": "2017-12-06 00:22:45",
"updated_at": "2017-12-06 00:22:45",
"mpw": 0,
"is_info": 0,
"formatted_date": "06 Dec",
"formatted_time": "06 Dec 00:22",
"title": "completed this task",
"is_image": false,
"file_url": null,
"user": {
"id": 81,
"name": "John White",
"avatar_file_name": "tmp_upload_58261fdd26c65.jpg",
"title": "client",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/medium/tmp_upload_58261fdd26c65.jpg",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg"
}
}
],
"task_id": 7204
}
Add a comment to a task
Endpoint
/tasks/{task_id}/comments
Parameters
task_id [required]: id of the task that comment belongs to
comment: [required]: comment text
Response Example:
{
"user_id": 81,
"type": "comment",
"action": "updated",
"public": true,
"task_id": 17366,
"text": "Hello world!",
"html_text": "Hello world!",
"is_info": false,
"updated_at": "2018-12-06 16:05:30",
"created_at": "2018-12-06 16:05:30",
"id": 119386,
"formatted_date": "06 Dec",
"formatted_time": "06 Dec 16:05",
"title": "commented on this task",
"is_image": false,
"file_url": null,
"user": {
"id": 81,
"name": "John White",
"avatar_file_name": "tmp_upload_58261fdd26c65.jpg",
"title": "client",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/medium/tmp_upload_58261fdd26c65.jpg",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/081/thumb/tmp_upload_58261fdd26c65.jpg",
},
"task": {
"id": 17366,
"project_id": 391,
"user_id": 81,
"assignee_id": null,
"name": "Api Test Task ",
"description": "Lorem ipsum dolor amet.",
"completed": 0,
"dev_completed": 0,
"priority": 0,
"order": 0,
"due_at": null,
"created_at": "2018-12-06 14:14:57",
"updated_at": "2018-12-06 14:14:57",
"deleted_at": null,
"archived_at": null,
"estimate": null,
"estimate_draft": null,
"requires_estimate": 0,
"estimate_approved": 0,
"last_estimated_at": null,
"developer_queue_order": null,
"developer_queue_order_natural": null,
"work_starts_at": null,
"work_finishes_at": null,
"hearts": {
"users": [],
"count": 0
},
"is_section": 0,
"is_bug": 0,
"next_action_party": null,
"requires_re_estimate": 0,
"metafields": null,
"status": 0,
"due_timestamp": null,
"project": {
"id": 391,
"name": "Markets Home Page",
"client_id": 81,
"manager_id": 155,
"negativebalance": true,
"is_workable": false
}
}
}
3.4.Developers Endpoint
Get list of developers
Returns the list of developers with their tech stack skill tree.
Endpoint
GET /team/{slug}
Parameters
slug [optional]: Can be sent as second uri segment. If sent, only the skills under the category with that slug is returned.
skill_id [optional]: Can be sent in query string. If sent, only developers having those skills are returned. Multiple values can be sent as comma separated list
Response Example:
[
{
"id": 1,
"name": "Giray Temel",
"title": "ceo",
"avatar_file_name": "tmp_upload_574487bb8abb5.png",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/001/medium/tmp_upload_574487bb8abb5.png",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/001/thumb/tmp_upload_574487bb8abb5.png",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/001/thumb/tmp_upload_574487bb8abb5.png",
"skills": [
{
"id": 1,
"parent_id": null,
"is_leaf": 0,
"name": "Platform",
"slug": "platform",
"children": [
{
"id": 3,
"parent_id": 1,
"is_leaf": 0,
"name": "Web",
"slug": "web",
"children": [
{
"id": 6,
"parent_id": 3,
"is_leaf": 0,
"name": "PHP",
"slug": "php",
"children": [
{
"id": 9,
"parent_id": 6,
"is_leaf": 0,
"name": "CMS",
"slug": "cms",
"children": [
{
"id": 55,
"parent_id": 9,
"is_leaf": 1,
"name": "Drupal",
"slug": "drupal"
},
{
"id": 54,
"parent_id": 9,
"is_leaf": 1,
"name": "Joomla",
"slug": "joomla"
},
{
"id": 56,
"parent_id": 9,
"is_leaf": 1,
"name": "Magento",
"slug": "magento"
},
{
"id": 57,
"parent_id": 9,
"is_leaf": 1,
"name": "Opencart",
"slug": "opencart"
},
{
"id": 90,
"parent_id": 9,
"is_leaf": 1,
"name": "Prestashop",
"slug": "prestashop"
},
{
"id": 53,
"parent_id": 9,
"is_leaf": 1,
"name": "Wordpress",
"slug": "wordpress"
}
]
},
{
"id": 10,
"parent_id": 6,
"is_leaf": 0,
"name": "Frameworks",
"slug": "frameworks",
"children": [
{
"id": 88,
"parent_id": 10,
"is_leaf": 1,
"name": "CakePHP",
"slug": "cakephp"
},
{
"id": 77,
"parent_id": 10,
"is_leaf": 1,
"name": "CodeIgniter",
"slug": "codeigniter"
},
{
"id": 76,
"parent_id": 10,
"is_leaf": 1,
"name": "Laravel",
"slug": "laravel"
},
{
"id": 93,
"parent_id": 10,
"is_leaf": 1,
"name": "Lumen",
"slug": "lumen"
},
{
"id": 78,
"parent_id": 10,
"is_leaf": 1,
"name": "Yii",
"slug": "yii"
},
{
"id": 91,
"parent_id": 10,
"is_leaf": 1,
"name": "Zend Framework",
"slug": "zend-framework"
}
]
}
]
},
{
"id": 7,
"parent_id": 3,
"is_leaf": 0,
"name": "Ruby",
"slug": "ruby",
"children": [
{
"id": 11,
"parent_id": 7,
"is_leaf": 0,
"name": "Frameworks",
"slug": "frameworks",
"children": [
{
"id": 13,
"parent_id": 11,
"is_leaf": 1,
"name": "Ruby On Rails",
"slug": "ruby-on-rails"
}
]
}
]
},
{
"id": 8,
"parent_id": 3,
"is_leaf": 0,
"name": "Frontend",
"slug": "frontend",
"children": [
{
"id": 59,
"parent_id": 8,
"is_leaf": 1,
"name": "Angular",
"slug": "angular"
},
{
"id": 58,
"parent_id": 8,
"is_leaf": 1,
"name": "Aurelia",
"slug": "aurelia"
},
{
"id": 92,
"parent_id": 8,
"is_leaf": 1,
"name": "Bootstrap",
"slug": "bootstrap"
},
{
"id": 72,
"parent_id": 8,
"is_leaf": 1,
"name": "Gulp",
"slug": "gulp"
},
{
"id": 66,
"parent_id": 8,
"is_leaf": 1,
"name": "jQuery",
"slug": "jquery"
},
{
"id": 60,
"parent_id": 8,
"is_leaf": 1,
"name": "NodeJS",
"slug": "nodejs"
},
{
"id": 62,
"parent_id": 8,
"is_leaf": 1,
"name": "Pusher",
"slug": "pusher"
},
{
"id": 63,
"parent_id": 8,
"is_leaf": 1,
"name": "Socket.io",
"slug": "socketio"
},
{
"id": 87,
"parent_id": 8,
"is_leaf": 1,
"name": "VueJS",
"slug": "vuejs"
},
{
"id": 71,
"parent_id": 8,
"is_leaf": 1,
"name": "Webpack",
"slug": "webpack"
}
]
},
{
"id": 24,
"parent_id": 3,
"is_leaf": 0,
"name": ".NET",
"slug": "net",
"children": [
{
"id": 27,
"parent_id": 24,
"is_leaf": 0,
"name": "Frameworks",
"slug": "frameworks",
"children": [
{
"id": 37,
"parent_id": 27,
"is_leaf": 1,
"name": "Entity Framework",
"slug": "entity-framework"
}
]
},
{
"id": 28,
"parent_id": 24,
"is_leaf": 0,
"name": "CMS",
"slug": "cms",
"children": [
{
"id": 38,
"parent_id": 28,
"is_leaf": 1,
"name": "Umbraco",
"slug": "umbraco"
}
]
}
]
}
]
},
{
"id": 4,
"parent_id": 1,
"is_leaf": 0,
"name": "Desktop",
"slug": "desktop",
"children": [
{
"id": 51,
"parent_id": 4,
"is_leaf": 1,
"name": "Delphi",
"slug": "delphi"
},
{
"id": 52,
"parent_id": 4,
"is_leaf": 1,
"name": "Python",
"slug": "python"
}
]
},
{
"id": 5,
"parent_id": 1,
"is_leaf": 0,
"name": "Mobile",
"slug": "mobile",
"children": [
{
"id": 45,
"parent_id": 5,
"is_leaf": 1,
"name": "iOS",
"slug": "ios"
},
{
"id": 47,
"parent_id": 5,
"is_leaf": 1,
"name": "Xamarin",
"slug": "xamarin"
}
]
}
]
},
{
"id": 2,
"parent_id": null,
"is_leaf": 0,
"name": "Services",
"slug": "services",
"children": [
{
"id": 467,
"parent_id": 2,
"is_leaf": 1,
"name": "Bitbucket",
"slug": "bitbucket"
},
{
"id": 466,
"parent_id": 2,
"is_leaf": 1,
"name": "GitHub",
"slug": "github"
},
{
"id": 468,
"parent_id": 2,
"is_leaf": 1,
"name": "Laravel Forge",
"slug": "laravel-forge"
},
{
"id": 25,
"parent_id": 2,
"is_leaf": 1,
"name": "Mailgun",
"slug": "mailgun"
}
]
},
{
"id": 582,
"parent_id": null,
"is_leaf": 0,
"name": "Databases",
"slug": "databases",
"children": [
{
"id": 594,
"parent_id": 582,
"is_leaf": 1,
"name": "Microsoft SQL Server",
"slug": "microsoft-sql-server"
},
{
"id": 593,
"parent_id": 582,
"is_leaf": 1,
"name": "MongoDB",
"slug": "mongodb"
},
{
"id": 597,
"parent_id": 582,
"is_leaf": 1,
"name": "MySQL",
"slug": "mysql"
},
{
"id": 596,
"parent_id": 582,
"is_leaf": 1,
"name": "PostgreSQL",
"slug": "postgresql"
},
{
"id": 592,
"parent_id": 582,
"is_leaf": 1,
"name": "Redis",
"slug": "redis"
},
{
"id": 595,
"parent_id": 582,
"is_leaf": 1,
"name": "SQLite",
"slug": "sqlite"
}
]
}
]
},
{
"id": 98,
"name": "Ashish Patel",
"title": "developer",
"avatar_file_name": "tmp_upload_5bfa02782d56f.jpg",
"medium_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/098/medium/tmp_upload_5bfa02782d56f.jpg",
"mini_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/098/thumb/tmp_upload_5bfa02782d56f.jpg",
"thumb_photo": "https://app.codeline.io/uploads/App/Models/User/avatars/000/000/098/thumb/tmp_upload_5bfa02782d56f.jpg",
"skills": [
{
"id": 1,
"parent_id": null,
"is_leaf": 0,
"name": "Platform",
"slug": "platform",
"children": [
{
"id": 3,
"parent_id": 1,
"is_leaf": 0,
"name": "Web",
"slug": "web",
"children": [
{
"id": 6,
"parent_id": 3,
"is_leaf": 0,
"name": "PHP",
"slug": "php",
"children": [
{
"id": 9,
"parent_id": 6,
"is_leaf": 0,
"name": "CMS",
"slug": "cms",
"children": [
{
"id": 53,
"parent_id": 9,
"is_leaf": 1,
"name": "Wordpress",
"slug": "wordpress"
}
]
}
]
},
{
"id": 8,
"parent_id": 3,
"is_leaf": 0,
"name": "Frontend",
"slug": "frontend",
"children": [
{
"id": 59,
"parent_id": 8,
"is_leaf": 1,
"name": "Angular",
"slug": "angular"
},
{
"id": 64,
"parent_id": 8,
"is_leaf": 1,
"name": "Backbone",
"slug": "backbone"
},
{
"id": 92,
"parent_id": 8,
"is_leaf": 1,
"name": "Bootstrap",
"slug": "bootstrap"
},
{
"id": 86,
"parent_id": 8,
"is_leaf": 1,
"name": "CSS",
"slug": "css"
},
{
"id": 68,
"parent_id": 8,
"is_leaf": 1,
"name": "CSS3",
"slug": "css3"
},
{
"id": 85,
"parent_id": 8,
"is_leaf": 1,
"name": "HTML",
"slug": "html"
},
{
"id": 67,
"parent_id": 8,
"is_leaf": 1,
"name": "HTML5",
"slug": "html5"
},
{
"id": 70,
"parent_id": 8,
"is_leaf": 1,
"name": "Less",
"slug": "less"
}
]
}
]
},
{
"id": 5,
"parent_id": 1,
"is_leaf": 0,
"name": "Mobile",
"slug": "mobile",
"children": [
{
"id": 46,
"parent_id": 5,
"is_leaf": 1,
"name": "Android",
"slug": "android"
}
]
}
]
}
]
}
]