NAV
shell

Introduction

Welcome to the SciNote V1 API! You can use our API to access SciNote API endpoints.

This API documentation page was created with Slate.

By accessing or using SciNote API, you agree to SciNote API Terms.

Authentication

SciNote uses JWT tokens to allow access to the API and OAuth 2 protocol for token generation using authorization code flow.

First, authorization code needs to be retrieved at the following endpoint: GET /oauth/authorize, please see example of such request.

To get an authorization code, use this code:

curl https://<server-name>/oauth/authorize?client_id=<client-id>&redirect_uri=<redirect-uri>&response_type=code

Where <client-id> is your application registration id, <redirect-uri> your application redirect URI.

The above command redirects back to your application with authorization code

Now you can get a new access token at POST /oauth/token request. Once it expires, use refresh token to get new access token.

Post here with authorization code for authorization_code grant type or refresh_token for refresh token type. This corresponds to the token endpoint, section 3.2 of the OAuth 2 RFC.

To get an access token, use this code:

curl -F grant_type=authorization_code \
-F client_id=<client-app-id> \
-F client_secret=<client-app-secret> \
-F code=<authorization-code> \
-F redirect_uri=<client-app-redirect-url> \
-X POST https://<server-name>/oauth/token

The above command returns JSON structured like this:

{
    "access_token":"qwerty123456...",
    "token_type":"bearer",
    "expires_in":7200,
    "refresh_token":"qwerty123456..."}
}

And for renewal, use this code:

curl -F grant_type=refresh_token \
-F client_id=<client-app-id> \
-F client_secret=<client-app-secret> \
-F refresh_token=<refresh-token> \
-F redirect_uri=<client-app-redirect-url> \
-X POST https://<server-name>/oauth/token

SciNote expects for the API access token to be included in all API requests to the server in a header that looks like the following:

Authorization: Bearer qwerty123456...

You can also check a basic python code example on our Github. Make sure you check the README first.

JWT payload claims

By default tokens include such set of claims:

Claim Description
iss Text identifier of the token issuer
exp Token expiration time
sub The ID of the current authenticated user

Alternative: API Key authenticaton

If your instance has the API key functionality enabled, you can generate the API key in your user profile settings in SciNote (/users/edit). To authenticate via API key, add the following header to all requests:

Api-Key: qwerty123456...

The API key expires after one year. You can revoke the API key at any time in your user profile settings.

Pagination

SciNote API uses pagination as specified here JSON API

Default page size is 10.

Pagination Parameters

Parameter Default Description
page[number] 1 Number of requested page.
page[size] 10 Number of items returned per page.

How to make sure you retrieve all of the pages

API response includes the 'links' sections, which you can check to see if there is a next_page connected to current result. The following code example is looping through pages and retrieving all of the tasks. // pseudocoude tasks = [] next_url = 'https://SCINOTEURL/api/v1/teams/1/projects/1/experiments/1/tasks?page[number]=1&page[size]=100' while(next_url) { response = http_request(next_url) // you would want to do some error handling here json = json_parse(response) // and here tasks.push(json['data']) next_url = json['links']['next'] } // After the loop is done, you have the whole list of taks tasks[] array.

Teams

Get All Teams

curl "https://<server-name>/api/v1/teams"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "teams",
      "attributes": {
        "name": "Team 1",
        "description": "This is team 1",
        "space_taken": 805809574
      },
      "relationships": {
        "created_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    },
    {
      "id": "2",
      "type": "teams",
      "attributes": {
        "name": "Team 2",
        "description": "This is team 2",
        "space_taken": 24370008357
      },
      "relationships": {
        "created_by": {
          "data": {
            "id": "2",
            "type": "users"
          }
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all teams user is member of.

HTTP Request

GET https://<server-name>/api/v1/teams(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

Parameter Description
FROM If present will filter teams corresponding timestamp above or equals value
TO If present will filter teams corresponding timestamp below or equals value

Get a Specific Team

curl "https://<server-name>/api/v1/teams/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
    "data": {
        "id": "1",
        "type": "teams",
        "attributes": {
            "name": "Team 1",
            "description": "This is team 1",
            "space_taken": 805809574
        }
    },
    "relationships": {
        "created_by": {
            "data": {
                "id": "1",
                "type": "users"
            }
        }
    },
    "included": [
        {
            "id": "1",
            "type": "users",
            "attributes": {
                <user-attributes>
            }
        }
    ]
}

This endpoint retrieves a specific team.

HTTP Request

GET https://<server-name>/api/v1/teams/<ID>

URL Parameters

Parameter Description
ID The ID of the team to retrieve

Users

Get Users

curl "https://<server-name>/api/v1/teams/1/users"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "data": {
        "id": "1",
        "type": "users",
        "attributes": {
          "full_name": "Sample User",
          "initials": "SU",
          "email": "sample@example.com",
          "avatar_url": "http://example.com/avatar.png",
          "avatar_file_size": 16181,
          "avatar_file_name": "avatar.png"
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/users?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/users?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/users?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all users from a specific team.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/users(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve users from
FROM If present will filter team users corresponding timestamp above or equals value
TO If present will filter team users corresponding timestamp below or equals value

Get a Specific User

curl "https://<server-name>/api/v1/users/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "users",
    "attributes": {
      "full_name": "Sample User",
      "initials": "SU",
      "email": "sample@example.com",
      "avatar_url": "http://example.com/avatar.png",
      "avatar_file_size": 16181,
      "avatar_file_name": "avatar.png"
    }
  }
}

This endpoint retrieves a specific user. Only users who are members of the same teams as current user can be read.

HTTP Request

GET https://<server-name>/api/v1/users/<ID>

URL Parameters

Parameter Description
ID The ID of the user to retrieve

User Identities

Get User Identities

curl "https://<server-name>/api/v1/users/1/identities"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "user_identities",
      "attributes": {
        "provider": "sample",
        "uid": "abcde123"
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/users/1/identities?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/users/1/identities?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/users/1/identities?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all identity mappings for the specified user.

HTTP Request

GET https://<server-name>/api/v1/users/<USER_ID>/identities(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
USER_ID The ID of the user to retrieve identities from
FROM If present will filter experiments corresponding timestamp above or equals value
TO If present will filter experiments corresponding timestamp below or equals value

Get User Identity

curl "https://<server-name>/api/v1/users/1/identities/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "user_identities",
    "attributes": {
      "provider": "sample",
      "uid": "abcde123"
    }
  }
}

This endpoint retrieves a specific user identity mapping.

HTTP Request

GET https://<server-name>/api/v1/users/<USER_ID>/identities/<ID>

URL Parameters

Parameter Description
USER_ID The ID of the user to retrieve identity from
ID The ID of the user identity mapping

Create User Identity

curl -X POST \
  https://<server-name>/api/v1/users/1/identities \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "user_identities",
        "attributes": {
            "provider": "sample1",
            "uid": "abcde123"
        }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "user_identities",
    "attributes": {
      "provider": "sample1",
      "uid": "abcde123"
    }
  }
}

This endpoint creates new user identity mapping for specific user.

HTTP Request

POST https://<server-name>/api/v1/users/<USER_ID>/identities

URL Parameters

Parameter Description
USER_ID The ID of the user

Request body

{
  "data": {
    "type": "user_identities",
    "attributes": {
      "provider": "sample1",
      "uid": "abcde123"
    }
  }
}

Identity attributes

Attribute Mandatory Description
provider yes name of the external identity provider
uid yes uid of the user from external identity provider

Update User Identity

curl -X PATCH \
  https://<server-name>/api/v1/users/1/identities/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
      "data": {
          "type": "user_identities",
          "id": 1,
          "attributes": {
              "provider": "sample2",
              "uid": "abcde1234"
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "user_identities",
    "attributes": {
      "provider": "sample2",
      "uid": "abcde1234"
    }
  }
}

This endpoint updates existing identity mapping for the selected user. If submitted attributes are the same and no changes are made for the identity mapping, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/users/<USER_ID>/identities/<ID>

URL Parameters

Parameter Description
USER_ID The ID of the user
ID The ID of the user identity mapping

Request body

{
  "data": {
    "type": "user_identities",
    "id": "1",
    "attributes": {
      "provider": "sample2",
      "uid": "abcde1234"
    }
  }
}

User identity attributes

Attribute Mandatory Description
provider no name of the external identity provider
uid no uid of the user from external identity provider

Delete User Identity

curl -X DELETE \
  https://<server-name>/api/v1/users/1/identities/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific user identity mapping.

HTTP Request

DELETE https://<server-name>/api/v1/users/<USER_ID>/identities/<ID>

URL Parameters

Parameter Description
USER_ID The ID of the user to retrieve identity mapping from
ID The ID of the identity mapping

User Roles

Get User Roles

curl "https://<server-name>/api/v1/user_roles"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
    "data": [
        {
            "id": "1",
            "type": "user_roles",
            "attributes": {
                "name": "Owner",
                "permissions": ["project_read", "experiment_read", "task_read"]
            }
        },
        {
            "id": "2",
            "type": "user_roles",
            "attributes": {
                "name": "User",
                "permissions": ["project_read", "experiment_read", "task_read"]
            }
        }
    ],
    "links": {
        "self": "https://<server-name>/api/v1/user_roles?page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "first": "https://<server-name>/api/v1/user_roles?page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "prev": null,
        "next": null,
        "last": "https://<server-name>/api/v1/user_roles?page%5Bnumber%5D=1&page%5Bsize%5D=10"
    }
}

This endpoint retrieves all user roles in the system.

HTTP Request

GET https://<server-name>/api/v1/user_roles

Projects

Get Projects

curl "http://<server-name>/api/v1/teams/1/projects"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "projects",
      "attributes": {
        "name": "Demo project - qPCR",
        "visibility": "hidden",
        "start_date": null,
        "archived": false
      },
      "relationships": {
        "project_folder": {
          "data": null
        }
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v1/teams/1/projects/?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/projects/?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v1/teams/1/projects/?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all projects from the specified team. If ?include=comments PATH parameter is provided, the project comments are also included.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects(?include=<INCLUDES>&filter%5Barchived%5D=<ARCHIVED>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve projects from
INCLUDES if set to comments, project comments are also included
ARCHIVED If set to true return only archived projects. If set to false return only active projects.

Get Project

curl "http://<server-name>/api/v1/teams/1/projects/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "projects",
    "attributes": {
      "name": "Demo project - qPCR",
      "visibility": "hidden",
      "start_date": null,
      "archived": false
    },
    "relationships": {
      "project_folder": {
        "data": null
      }
    }
  }
}

This endpoint retrieves a specific project from a specific team. If ?include=comments PATH parameter is provided, the project comments are also included.

HTTP Request

GET http://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>(?include=<INCLUDES>&filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve
INCLUDES if set to comments, project comments are also included
FROM If present will filter projects corresponding timestamp above or equals value
TO If present will filter projects corresponding timestamp below or equals value

Create Project

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
      "type": "projects",
      "attributes": {
        "name": "My project 1",
        "visibility": "visible",
        "archived": false,
        "project_folder_id": 1
      }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "projects",
    "attributes": {
      "name": "My project 1",
      "visibility": "visible",
      "start_date": "01/01/2020 10:30",
      "archived": false
    },
    "relationships": {
      "project_folder": {
        "data": {
          "id": "1",
          "type": "project_folders"
        }
      }
    }
  }
}

This endpoint creates a new project in the team.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/projects

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve projects from

Request body

{
  "data": {
    "type": "projects",
    "attributes": {
      "name": "My project 1",
      "visibility": "visible",
      "archived": false,
      "project_folder_id": 1
    }
  }
}

Project attributes

Attribute Mandatory Description
name yes Name of the project
visibility no Visibility of the project
archived no Archived flag
project_folder_id no Reference to project folder, if null it is on root level

Update Project

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/projects/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
      "id": "1",
      "type": "projects",
      "attributes": {
        "name": "Project 2",
        "visibility": "hidden",
        "archived": true,
        "project_folder_id": 5
      }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "projects",
    "attributes": {
      "name": "Project 2",
      "visibility": "hidden",
      "start_date": "01/01/2020 10:30",
      "archived": true
    },
    "relationships": {
      "project_folder": {
        "data": {
          "type": "project_folders",
          "id": "5"
        }
      }
    }
  }
}

This endpoint updates existing project in the selected team. If submitted attributes are the same and no changes are made for the project, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
ID The ID of the project

Request body

{
  "data": {
    "id": "1",
    "type": "projects",
    "attributes": {
      "name": "Project 2",
      "visibility": "hidden",
      "archived": true,
      "project_folder_id": 5
    }
  }
}

Project attributes

Attribute Mandatory Description
name yes Name of the project
visibility no Visibility of the project
archived no Archived flag
project_folder_id no Reference to project folder, if null it is on root level

Project Users Assignments

Get Project User Assignments

curl "https://<server-name>/api/v1/teams/1/projects/1/users"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "user_assignments",
      "attributes": {
        "created_at": "2021-11-11T13:25:53.910Z",
        "updated_at": "2021-11-15T10:30:33.415Z"
      },
      "relationships": {
        "user": {
          "data": {
            "id": "1",
            "type": "users"
          }
        },
        "user_role": {
          "data": {
            "id": "1",
            "type": "user_roles"
          }
        },
        "assignable": {
          "data": {
            "id": "1",
            "type": "projects"
          }
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/projects/1/users?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/projects/1/users?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/projects/1/users?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all users who are members of the specified project.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/users(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve users from
INCLUDES can include user, user_roles, and assignable (on this endpoint assignable is a project)
FROM If present will filter project members corresponding timestamp above or equals value
TO If present will filter project members corresponding timestamp below or equals value

Get Project User

curl "https://<server-name>/api/v1/teams/1/projects/1/users/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "user_assignments",
    "attributes": {
      "created_at": "2021-11-11T13:25:53.910Z",
      "updated_at": "2021-11-15T10:30:33.415Z"
    },
    "relationships": {
      "user": {
        "data": {
          "id": "1",
          "type": "users"
        }
      },
      "user_role": {
        "data": {
          "id": "1",
          "type": "user_roles"
        }
      },
      "assignable": {
        "data": {
          "id": "1",
          "type": "projects"
        }
      }
    }
  }
}

This endpoint retrieves a specific user who is a member of the specified project.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/users/<USER_ASSIGMENT_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve user from
USER_ASSIGNMENT_ID The ID of the user assignment to retrieve
INCLUDES can include user, user_role, and assignable (on this endpoint assignable is a project)

Create Project User assignment

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects/1/users \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
      "type": "user_assignments",
      "attributes": {
        "user_id": "1",
        "user_role_id": "1"
      }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "user_assignments",
    "attributes": {
      "created_at": "2021-11-11T13:25:53.910Z",
      "updated_at": "2021-11-15T10:30:33.415Z"
    },
    "relationships": {
      "user": {
        "data": {
          "id": "1",
          "type": "users"
        }
      },
      "user_role": {
        "data": {
          "id": "1",
          "type": "user_roles"
        }
      },
      "assignable": {
        "data": {
          "id": "1",
          "type": "projects"
        }
      }
    }
  }
}

This endpoint creates a new user assignment in the project. Please note that we will create the user assignments for the project child experiment and tasks asynchronous.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/users

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to assign user to

Request body

{
  "data": {
    "type": "user_assignments",
    "attributes": {
      "user_id": "1",
      "user_role_id": "1"
    }
  }
}

Project User Assignment attributes

Attribute Mandatory Description
user_id yes ID of the user
user_role_id yes ID of the UserRole on the project

Update Project User Assignment attributes

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/projects/1/users/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "type": "user_assignments",
          "attributes": {
            "user_role_id": "2"
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "user_assignments",
    "attributes": {
      "created_at": "2021-11-11T13:25:53.910Z",
      "updated_at": "2021-11-15T10:30:33.415Z"
    },
    "relationships": {
      "user": {
        "data": {
          "id": "1",
          "type": "users"
        }
      },
      "user_role": {
        "data": {
          "id": "2",
          "type": "user_roles"
        }
      },
      "assignable": {
        "data": {
          "id": "1",
          "type": "projects"
        }
      }
    }
  }
}

This endpoint updates existing user assignment in the project. If submitted attributes are the same and no changes are made for the user assignment, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/users/<USER_ASSIGMENT_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve user assignment from
USER_ASSIGNMENT_ID The ID of the user assignment

Request body

{
  "data": {
    "type": "user_assignments",
    "attributes": {
      "user_role_id": "2"
    }
  }
}

Project User Assignments attributes

Attribute Mandatory Description
user_role_id yes Role on the project

Delete Project User Assignment

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/projects/1/users/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific user assignment from the project. Please note that we will delete the user assignments for the project child experiment and tasks asynchronous.

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/users/<USER_ASSIGMENT_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve user assignment from
USER_ASSIGNMENT_ID The ID of the user assignment

Project Activities

Get Project Activities

curl "http://<server-name>/api/v1/teams/1/projects/1/activities"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "activities",
      "attributes": {
        "type_of": "create_module",
        "message": "<p>Admin created task New task.</p>"
      },
      "relationships": {
        "project": {
          "data": {
            "id": "1",
            "type": "projects"
          }
        },
        "subject": {
          "data": {
            "id": "10",
            "type": "tasks"
          }
        },
        "user": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    },
    {
      "id": "2",
      "type": "activities",
      "attributes": {
        "type_of": "update_protocol_in_task_from_repository",
        "message": "<p>Admin updated protocol on task New Task with version from Protocol repository Main Repository.</p>"
      },
      "relationships": {
        "project": {
          "data": {
            "id": "1",
            "type": "projects"
          }
        },
        "subject": {
          "data": {
            "id": "11",
            "type": "protocols"
          }
        },
        "user": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v1/teams/1/projects/1/activities?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/projects/1/activities?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": "http://<server-name>/api/v1/teams/1/projects/1/activities?page%5Bnumber%5D=2&page%5Bsize%5D=10",
    "last": "http://<server-name>/api/v1/teams/1/projects/1/activities?page%5Bnumber%5D=8&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all activities from specific project.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/activities(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve activities from
FROM If present will filter project activities corresponding timestamp above or equals value
TO If present will filter project activities corresponding timestamp below or equals value

Project Comments

Get Project Comments

curl "http://<server-name>/api/v1/teams/1/projects/1/comments"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "comments",
      "attributes": {
        "message": "I've created a demo project"
      },
      "relationships": {
        "user": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v1/teams/1/projects/1/comments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/projects/1/comments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v1/teams/1/projects/1/comments?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all comments from specific project.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/comments(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve comments from
FROM If present will filter project comments corresponding timestamp above or equals value
TO If present will filter project comments corresponding timestamp below or equals value

Get Project Comment

curl "http://<server-name>/api/v1/teams/1/projects/1/comments/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "comments",
    "attributes": {
      "message": "I've created a demo project"
    },
    "relationships": {
      "user": {
        "data": {
          "id": "1",
          "type": "users"
        }
      }
    }
  },
  "included": [
    {
      "id": "1",
      "type": "users",
      "attributes": {
        "full_name": "Admin",
        "initials": "A",
        "email": "admin@scinote.net",
        "avatar_url": "http://example.com/avatar.png",
        "avatar_file_size": 16181,
        "avatar_file_name": "avatar.png"
      }
    }
  ]
}

This endpoint retrieves a specific comment from specific project.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/comments/<COMMENT_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve comment from
COMMENT_ID The ID of the comment to retrieve

Project Folders

Get Project Folders

curl "http://<server-name>/api/v1/teams/1/project_folders"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "project_folders",
      "attributes": {
        "name": "2020 Projects"
      },
      "relationships": {
        "team": {
          "data": {
            "id": "1",
            "type": "teams"
          }
        },
        "parent_folder": {
          "data": null
        },
        "projects": {
          "data": []
        },
        "project_folders": {
          "data": []
        }
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v1/teams/1/project_folders/?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/project_folders/?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v1/teams/1/project_folders/?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all project folders from the specified team.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/project_folders(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project folders from
FROM If present will filter project folders corresponding timestamp above or equals value
TO If present will filter project folders corresponding timestamp below or equals value

Get Project Folder

curl "http://<server-name>/api/v1/teams/1/project_folders/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "project_folders",
    "attributes": {
      "name": "2020 Projects"
    },
    "relationships": {
      "team": {
        "data": {
          "id": "1",
          "type": "teams"
        }
      },
      "parent_folder": {
        "data": null
      },
      "projects": {
        "data": []
      },
      "project_folders": {
        "data": []
      }
    }
  }
}

This endpoint retrieves a specific project folder from a specific team.

HTTP Request

GET http://<server-name>/api/v1/teams/<TEAM_ID>/project_folders/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project folders from
ID The ID of the project folder to retrieve

Create Project Folder

curl -X POST \
  https://<server-name>/api/v1/teams/1/project_folders \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
      "type": "project_folders",
      "attributes": {
        "name": "My new Folder",
        "parent_folder_id": 1
      }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "2",
    "type": "project_folders",
    "attributes": {
      "name": "My new Folder"
    },
    "relationships": {
      "team": {
        "data": {
          "id": "1",
          "type": "teams"
        }
      },
      "parent_folder": {
        "data": {
          "id": "1",
          "type": "project_folders"
        }
      },
      "projects": {
        "data": []
      },
      "project_folders": {
        "data": []
      }
    }
  }
}

This endpoint creates a new project folder in the team.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/project_folders

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project folders from

Request body

{
  "data": {
    "type": "project_folders",
    "attributes": {
      "name": "My new Folder",
      "parent_folder_id": 1
    }
  }
}

Project folder attributes

Attribute Mandatory Description
name yes Name of the project folder
parent_folder_id no Reference to parent folder, if null it is on root level

Update Project Folder

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/project_folders/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
      "type": "project_folders",
      "attributes": {
        "name": "My updated Folder",
        "parent_folder_id": 3
      }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "type": "project_folders",
    "attributes": {
      "name": "My updated Folder"
    },
    "relationships": {
      "team": {
        "data": {
          "id": "1",
          "type": "teams"
        }
      },
      "parent_folder": {
        "data": {
          "type": "project_folders",
          "id": 3
        }
      },
      "projects": {
        "data": []
      },
      "project_folders": {
        "data": []
      }
    }
  }
}

This endpoint updates existing project folder in the selected team. If submitted attributes are the same and no changes are made for the project, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/project_folders/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project folder from
ID The ID of the project folder

Request body

{
  "data": {
    "type": "project_folders",
    "attributes": {
      "name": "My updated Folder",
      "parent_folder_id": 3
    }
  }
}

Project folder attributes

Attribute Mandatory Description
name yes Name of the project folder
parent_folder_id no Reference to parent folder, if null it is on root level

Experiments

Get Experiments

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "experiments",
      "attributes": {
        "name": "My first experiment",
        "description": "This is my very first experiment",
        "archived": false
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v1/teams/1/projects/1/experiments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/projects/1/experiments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v1/teams/1/projects/1/experiments?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all experiments from the specified project.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments(?filter%5Barchived%5D=<ARCHIVED>&filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiments from
ARCHIVED If set to true return only archived experiments. If set to false return only active experiments.
FROM If present will filter experiments corresponding timestamp above or equals value
TO If present will filter experiments corresponding timestamp below or equals value

Get Experiment

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "experiments",
    "attributes": {
      "name": "My first experiment",
      "description": "This is my very first experiment",
      "archived": false
    }
  }
}

This endpoint retrieves a specific experiment from the specified project.

HTTP Request

GET http://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve

Create Experiment

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects/1/experiments \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
      "type": "experiments",
      "attributes": {
        "name": "My experiment 1",
        "description": "This is my very first experiment",
        "archived": false
      }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "experiments",
    "attributes": {
      "name": "My first experiment",
      "description": "This is my very first experiment",
      "archived": false
    }
  }
}

This endpoint creates a new experiment in the team. Please note that we will create the user assignments for this experiment asynchronous.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve projects from
PROJECT_ID The ID of the project to retrieve experiment from

Request body

{
  "data": {
    "type": "experiments",
    "attributes": {
      "name": "My first experiment",
      "description": "This is my very first experiment",
      "archived": false
    }
  }
}

Experiment attributes

Attribute Mandatory Description
name yes Name of the experiment
description no Description of the experiment
archived no Archived flag

Update Experiment

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "experiments",
          "attributes": {
            "name": "Experiment 2",
            "description": "New description",
            "archived": true
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "experiments",
    "attributes": {
      "name": "Experiment 2",
      "description": "New description",
      "archived": true
    }
  }
}

This endpoint updates existing experiment in the selected project. If submitted attributes are the same and no changes are made for the experiment, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
ID The ID of the experiment

Request body

{
  "data": {
    "id": "1",
    "type": "experiments",
    "attributes": {
      "name": "Experiment 2",
      "description": "New description",
      "archived": true
    }
  }
}

Experiment attributes

Attribute Mandatory Description
name yes Name of the experiment
description no Description of the experiment
archived no Archived flag

Experiment Users Assignments

Get Experiment User Assignments

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/user_assignments"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data":[
    {
      "id": "1",
      "type": "user_assignments",
      "attributes":{
        "created_at": "2021-11-11T13:25:53.910Z",
        "updated_at": "2021-11-15T10:30:33.415Z"
      },
      "relationships":{
        "user":{
          "data":{
            "id": "1",
            "type": "users"
          }
        },
        "user_role": {
          "data": {
            "id": "1",
            "type": "user_roles"
          }
        },
        "assignable": {
          "data": {
            "id": "1",
            "type": "experiments"
          }
        }
      }
    }
  ],,
  "links":{
    "self": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/user_assignments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/user_assignments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/user_assignments?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all users who are members of the specified experiment.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/user_assignments(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve users from
EXPERIMENT_ID The ID of the experiment to retrieve users from
INCLUDES can include user, user_roles, and assignable (on this endpoint assignable is an experiment)
FROM If present will filter experiment members corresponding timestamp above or equals value
TO If present will filter experiment members corresponding timestamp below or equals value

Get Experiment User Assignment

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/user_assignments/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "user_assignments",
      "attributes": {
        "created_at": "2021-11-11T13:25:53.910Z",
        "updated_at": "2021-11-15T10:30:33.415Z"
      },
      "relationships": {
        "user": {
          "data": {
            "id": "1",
            "type": "users"
          }
        },
        "user_role": {
          "data": {
            "id": "1",
            "type": "user_roles"
          }
        },
        "assignable": {
          "data": {
            "id": "1",
            "type": "experiments"
          }
        }
      }
    }
  ]
}

This endpoint retrieves a specific user who is a member of the specified experiment.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/user_assignments/<USER_ASSIGNMENT_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve user from
EXPERIMENT_ID The ID of the experiment to retrieve user from
USER_ASSIGNMENT_ID The ID of the user assignment to retrieve
INCLUDES can include user, user_roles, and assignable (on this endpoint assignable is an experiment)

Update Experiment User Assignment attributes

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/user_assignment/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "type": "user_assignments",
          "attributes": {
            "user_role_id": "2"
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "user_assignments",
      "attributes": {
        "created_at": "2021-11-11T13:25:53.910Z",
        "updated_at": "2021-11-15T10:30:33.415Z"
      },
      "relationships": {
        "user": {
          "data": {
            "id": "1",
            "type": "users"
          }
        },
        "user_role": {
          "data": {
            "id": "1",
            "type": "user_roles"
          }
        },
        "assignable": {
          "data": {
            "id": "1",
            "type": "experiments"
          }
        }
      }
    }
  ]
}

This endpoint updates existing user assignment in the experiment. If submitted attributes are the same and no changes are made for the user assignment, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/user_assignments/<USER_ASSIGNMENT_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve user assignment from
EXPERIMENT_ID The ID of the experiment to retrieve user from
USER_ASSIGNMENT_ID The ID of the user assignment

Request body

{
  "data": {
    "type": "user_assignments",
    "attributes": {
      "user_role_id": "2"
    }
  }
}

Experiment User Assignment attributes

Attribute Mandatory Description
user_role_id yes Role on the experiment

Connections

Get connections

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/connections"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "connections",
      "relationships": {
        "from": {
          "data": {
            "id": "1",
            "type": "tasks"
          }
        },
        "to": {
          "data": {
            "id": "2",
            "type": "tasks"
          }
        }
      }
    },
    {
      "id": "2",
      "type": "connections",
      "relationships": {
        "from": {
          "data": {
            "id": "2",
            "type": "tasks"
          }
        },
        "to": {
          "data": {
            "id": "3",
            "type": "tasks"
          }
        }
      }
    }
  ],
  "links": {
    "self": "http://<server-name></server-name>/api/v1/teams/43/projects/399/experiments/1204/connections?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/43/projects/399/experiments/1204/connections?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v1/teams/43/projects/399/experiments/1204/connections?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all connections from a specific experiment. Connection to/from can be included as relationships.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/connections(?include=<INCLUDES>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve connections from
INCLUDES if set to to and/or from, connection input or output tasks are also included

Get connection

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/connections/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "connections",
    "relationships": {
      "from": {
        "data": {
          "id": "1",
          "type": "tasks"
        }
      },
      "to": {
        "data": {
          "id": "2",
          "type": "tasks"
        }
      }
    }
  }
}

This endpoint retrieves a specific connection from a specific experiment. Connection to/from can be included as relationships.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/connections/<connection_ID>(?include=<INCLUDES>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve connection from.
connection_ID The ID of the connection to retrieve
INCLUDES if set to to and/or from, connection input or output tasks are also included

Create connection

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/connections \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
      "type": "connections",
      "attributes": {
        "output_id": 1,
        "input_id": 2
      }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "7354",
    "type": "connections",
    "relationships": {
      "from": {
        "data": {
          "id": "1",
          "type": "tasks"
        }
      },
      "to": {
        "data": {
          "id": "2",
          "type": "tasks"
        }
      }
    }
  }
}

This endpoint creates new connection in the experiment.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/connections

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve projects from
PROJECT_ID The ID of the project to retrieve experiments from
EXPERIMENT_ID The ID of the experiment

Request body

{
  "data": {
    "type": "connections",
    "attributes": {
      "output_id": 1,
      "input_id": 2
    }
  }
}

Connection attributes

Attribute Mandatory Description
output_id yes Output task id
input_id yes Input task id

Delete connection

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/connections/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  }'

This endpoint deletes a specific connection from the experiment.

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/connections/1

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve projects from
PROJECT_ID The ID of the project to retrieve experiments from
EXPERIMENT_ID The ID of the experiment

Task Groups

Get Task Groups

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/task_groups"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "task_groups",
      "relationships": {
        "tasks": {
          "data": [
            {
              "id": "1",
              "type": "tasks"
            },
            {
              "id": "2",
              "type": "tasks"
            },
            {
              "id": "3",
              "type": "tasks"
            }
          ]
        }
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/task_groups?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/task_groups?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/task_groups?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves task groups from specific experiment.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/task_groups(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task groups from
FROM If present will filter task groups corresponding timestamp above or equals value
TO If present will filter task groups corresponding timestamp below or equals value

Get Task Group

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/task_groups/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "task_groups",
    "relationships": {
      "tasks": {
        "data": [
          {
            "id": "1",
            "type": "tasks"
          },
          {
            "id": "2",
            "type": "tasks"
          },
          {
            "id": "3",
            "type": "tasks"
          }
        ]
      }
    }
  },
  "included": [
    {
      "id": "1",
      "type": "tasks",
      "attributes": {
        "name": "Experiment design",
        "due_date": "2018-10-25T13:30:54.315Z",
        "description": null,
        "state": "uncompleted",
        "archived": false
      }
    },
    {
      "id": "2",
      "type": "tasks",
      "attributes": {
        "name": "Sampling biological material",
        "due_date": "2018-11-08T13:30:54.520Z",
        "description": null,
        "state": "uncompleted",
        "archived": false
      }
    },
    {
      "id": "3",
      "type": "tasks",
      "attributes": {
        "name": "RNA isolation",
        "due_date": "2018-11-22T13:30:54.594Z",
        "description": null,
        "state": "uncompleted",
        "archived": false
      }
    }
  ]
}

This endpoint retrieves a specific task group from a specific experiment.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/task_groups/<GROUP_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task group from
GROUP_ID The ID of the task group to retrieve

Task Connections

Get Task Connections

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/connections"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data":[
    {
      "id": "1",
      "type": "connections",
      "relationships":{
        "input_task":{
          "data":{
            "id": "1",
            "type": "tasks"
          }
        },
        "output_task":{
          "data":{
            "id": "2",
            "type": "tasks"
          }
        }
      }
    },
    {
      "id": "2",
      "type": "connections",
      "relationships":{
        "input_task":{
          "data":{
            "id": "2",
            "type": "tasks"
          }
        },
        "output_task":{
          "data":{
            "id": "3",
            "type": "tasks"
          }
        }
      }
    }
  ],
  "links":{
    "self": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/connections?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/connections?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/connections?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all connections between tasks from specific experiment.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/connections

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve connection from

Get Task Connection

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/connections/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data":{
    "id": "1",
    "type": "connections",
    "relationships":{
      "input_task":{
        "data":{
          "id": "1",
          "type": "tasks"
        }
      },
      "output_task":{
        "data":{
          "id": "2",
          "type": "tasks"
        }
      }
    }
  },
  "included":[
    {
      "id": "1",
      "type": "tasks",
      "attributes":{
        "name": "Experiment design",
        "due_date": "2018-10-25T13:30:54.315Z",
        "description": null,
        "state": "uncompleted",
        "archived": false
      }
    },
    {
      "id": "2",
      "type": "tasks",
      "attributes":{
        "name": "Sampling biological material",
        "due_date": "2018-11-08T13:30:54.520Z",
        "description": null,
        "state": "uncompleted",
        "archived": false
      }
    }
  ]
}

This endpoint retrieves a specific connection between tasks from specific experiment.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/connections/<CONNECTION_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve connection from
CONNECTION_ID The ID of the connection to retrieve

Tasks

Get Tasks

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "tasks",
      "attributes": {
        "name": "Experiment design",
        "started_on": null,
        "due_date": "2018-10-25T13:30:54.315Z",
        "description": null,
        "state": "uncompleted",
        "archived": false,
        "status_id": 2,
        "status_name": "In progress",
        "prev_status_id": 1,
        "prev_status_name": "Backlog",
        "next_status_id": 3,
        "next_status_name": "Completed"
      },
      "relationships": {
        "outputs": {
          "data": [
            {
              "id": "2",
              "type": "tasks"
            }
          ]
        }
      }
    },
    {
      "id": "2",
      "type": "tasks",
      "attributes": {
        "name": "Sampling biological material",
        "started_on": null,
        "due_date": "2018-11-08T13:30:54.520Z",
        "description": null,
        "state": "uncompleted",
        "archived": false,
        "status_id": 3,
        "status_name": "Completed",
        "prev_status_id": 2,
        "prev_status_name": "Backlog",
        "next_status_id": 4,
        "next_status_name": "In review"
      },
      "relationships": {
        "outputs": {
          "data": [
            {
              "id": "3",
              "type": "tasks"
            }
          ]
        },
        "inputs": {
          "data": [
            {
              "id": "1",
              "type": "tasks"
            }
          ]
        }
      }
    },
    {
      "id": "3",
      "type": "tasks",
      "attributes": {
        "name": "RNA isolation",
        "started_on": null,
        "due_date": "2018-11-22T13:30:54.594Z",
        "description": null,
        "state": "uncompleted",
        "archived": false,
        "status_id": 2,
        "status_name": "In progress",
        "prev_status_id": 1,
        "prev_status_name": "Backlog",
        "next_status_id": 3,
        "next_status_name": "Completed"
      },
      "relationships": {
        "inputs": {
          "data": [
            {
              "id": "2",
              "type": "tasks"
            }
          ]
        }
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all tasks from a specific experiment. Task inputs/outputs can be included as relationships. Optional URL parameter 'render_rte=true' can be added in order to request rendering of RTE fields(embedded images, smart annotations). If ?include=comments PATH parameter is provided, task comments are also included.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks(?include=<INCLUDES>&filter%5Barchived%5D=<ARCHIVED>&filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve tasks from
INCLUDES if set to comments, task comments are also included
ARCHIVED If set to true return only archived tasks. If set to false return only active tasks.
FROM If present will filter experiment tasks corresponding timestamp above or equals value
TO If present will filter experiment tasks corresponding timestamp below or equals value

Get Task

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "tasks",
    "attributes": {
      "name": "Experiment design",
      "started_on": null,
      "due_date": "2018-10-25T13:30:54.315Z",
      "description": null,
      "state": "uncompleted",
      "archived": false,
      "status_id": 2,
      "status_name": "In progress",
      "prev_status_id": 1,
      "prev_status_name": "Backlog",
      "next_status_id": 3,
      "next_status_name": "Completed"
    },
    "relationships": {
      "outputs": {
        "data": [
          {
            "id": "2",
            "type": "tasks"
          }
        ]
      }
    }
  }
}

This endpoint retrieves a specific task from a specific experiment. Task inputs/outputs can be included as relationships. Optional URL parameter 'render_rte=true' can be added in order to request rendering of RTE fields(embedded images, smart annotations). If ?include=comments PATH parameter is provided, task comments are also included.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>(?include=<INCLUDES>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from.
TASK_ID The ID of the task to retrieve
INCLUDES if set to comments, task comments are also included

Create Task

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
      "type": "tasks",
      "attributes": {
        "name": "My task 1",
        "description": "Description of the task",
        "x": 1,
        "y": 8
      }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "tasks",
    "attributes": {
      "name": "My task 1",
      "started_on": null,
      "due_date": null,
      "description": "Description of the task",
      "state": "uncompleted",
      "archived": false
    },
    "relationships": {
      "outputs": {
        "data": []
      },
      "inputs": {
        "data": []
      }
    }
  }
}

This endpoint creates new task in the experiment. Please note that we will create the user assignments for this task asynchronous.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve projects from
PROJECT_ID The ID of the project to retrieve experiments from
EXPERIMENT_ID The ID of the experiment

Request body

{
  "data": {
    "type": "tasks",
    "attributes": {
      "name": "My task 1",
      "description": "Description of the task",
      "x": 1,
      "y": 8
    }
  }
}

Task attributes

Attribute Mandatory Description
name yes Name of the task
description no Description of the task
x yes x position on canvas
y yes y position on canvas

Update Task

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "tasks",
          "attributes": {
            "name": "Task 2",
            "description": "Task 2 description",
            "my_module_status_id": "2"
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "tasks",
    "attributes": {
      "name": "Task 2",
      "started_on": null,
      "due_date": null,
      "description": "Task 2 description",
      "state": "completed",
      "archived": false,
      "status_id": 2,
      "status_name": "in progress",
      "prev_status_id": 1,
      "prev_status_name": "backlog",
      "next_status_id": 3,
      "next_status_name": "review"
    },
    "relationships": {
      "outputs": {
        "data": []
      },
      "inputs": {
        "data": []
      }
    }
  }
}

This endpoint updates existing task in the selected experiment. If submitted attributes are the same and no changes are made for the task, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
ID The ID of the task

Request body

{
  "data": {
    "id": "1",
    "type": "tasks",
    "attributes": {
      "name": "Task 2",
      "description": "Task 2 description",
      "my_module_status_id": "2"
    }
  }
}

Task attributes

Attribute Mandatory Description
name yes Name of the task
description no Description of the task
x no x position on canvas
y no y position on canvas
my_module_status_id no New status ID

Protocols

Get Protocols

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "protocols",
      "attributes": {
        "name": null,
        "authors": null,
        "description": null,
        "protocol_type": "unlinked"
      }
    }
  ],
  "links": {
    "self": "http://localhost:3000/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://localhost:3000/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://localhost:3000/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves protocols that are assigned to a specific task.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocols from
FROM If present will filter task assigned protocols corresponding timestamp above or equals value
TO If present will filter task assigned protocols corresponding timestamp below or equals value

Protocol Steps V1(Deprecated)

Get Steps (Deprecated)

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "4196",
      "type": "steps",
      "attributes": {
        "name": "Step name",
        "description": "Description about step",
        "position": 32,
        "completed": true,
        "completed_on": "2019-09-16T13:47:22.069Z"
      },
      "relationships": {
        "protocol": {
          "data": {
            "id": "1",
            "type": "protocols"
          }
        },
        "assets": {
          "data": []
        },
        "checklists": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "comments": {
          "data": []
        }
      }
    },
    {
      "id": "4195",
      "type": "steps",
      "attributes": {
        "name": "Step name",
        "description": "Description about step",
        "position": 31,
        "completed": false
      },
      "relationships": {
        "protocol": {
          "data": {
            "id": "1",
            "type": "protocols"
          }
        },
        "assets": {
          "data": []
        },
        "checklists": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "comments": {
          "data": []
        }
      }
    },
    {
      "id": "4194",
      "type": "steps",
      "attributes": {
        "name": "Step name",
        "description": "Description about step",
        "position": 30,
        "completed": false
      },
      "relationships": {
        "protocol": {
          "data": {
            "id": "1",
            "type": "protocols"
          }
        },
        "assets": {
          "data": []
        },
        "checklists": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "comments": {
          "data": []
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps?page%5Bnumber%5D=2&page%5Bsize%5D=10",
    "last": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps?page%5Bnumber%5D=4&page%5Bsize%5D=10"
  }
}

This endpoint retrieves steps from specific protocol. It also supports inclusion of these elements: tables, assets, checklists, checklists.checklist_items, comments. Optional URL parameter 'render_rte=true' can be added in order to request rendering of RTE fields(embedded images, smart annotations). If ?include=comments PATH parameter is provided, step comments are also included.

NOTE REGARDING STEP DESCRIPTION:

After the step editing revamp, the step description is fetched from, and written to the first step_text element of the protocol step, and as such only exists as a virtual attribute. Usage of the step_texts endpoints should be preferred instead.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps(?include=<INCLUDES>&filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
INCLUDES if set to comments, step comments are also included
FROM If present will filter protocol steps corresponding timestamp above or equals value
TO If present will filter protocol steps corresponding timestamp below or equals value

Get Step (Deprecated)

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "steps",
    "attributes": {
      "name": "Step name",
      "description": "Description about step",
      "position": 1,
      "completed": true,
      "completed_on": "2019-09-16T13:47:22.069Z"
    },
    "relationships": {
      "protocol": {
        "data": {
          "id": "1",
          "type": "protocols"
        }
      },
      "assets": {
        "data": []
      },
      "checklists": {
        "data": []
      },
      "tables": {
        "data": []
      },
      "comments": {
        "data": []
      }
    }
  }
}

This endpoint retrieves specific step from the protocol. It also supports inclusion of these elements: tables, assets, checklists, checklists.checklist_items, comments. Optional URL parameter 'render_rte=true' can be added in order to request rendering of RTE fields(embedded images, smart annotations). If ?include=comments PATH parameter is provided, step comments are also included.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<ID>(?include=<INCLUDES>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
ID The ID of the step
INCLUDES if set to comments, step comments are also included

Create Step (Deprecated)

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "steps",
        "attributes": {
            "name": "Step name",
            "description": "Description about step"
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "steps",
    "attributes": {
      "name": "Step name",
      "description": "Description about step",
      "position": 1,
      "completed": false
    },
    "relationships": {
      "protocol": {
        "data": {
          "id": "1",
          "type": "protocols"
        }
      },
      "assets": {
        "data": []
      },
      "checklists": {
        "data": []
      },
      "tables": {
        "data": []
      },
      "comments": {
        "data": []
      }
    }
  }
}

This endpoint creates new step in the protocol.

HTTP Request

POST https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from

Request body

{
  "data": {
    "type": "steps",
    "attributes": {
      "name": "Step name",
      "description": "Description about step"
    }
  }
}

Step attributes

Attribute Mandatory Description
name yes Name of the step
description no Description of the step
completed no Step completion flag

Update Step (Deprecated)

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "steps",
          "attributes": {
            "name": "Step 2",
            "description": "Step 2 description",
            "completed": true
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "steps",
    "attributes": {
      "name": "Step 2",
      "description": "Step 2 description",
      "position": 1,
      "completed": true,
      "completed_on": "2020-07-06T10:00:18.866Z"
    },
    "relationships": {
      "protocol": {
        "data": {
          "id": "1",
          "type": "protocols"
        }
      },
      "assets": {
        "data": []
      },
      "checklists": {
        "data": []
      },
      "tables": {
        "data": []
      },
      "comments": {
        "data": []
      }
    }
  }
}

This endpoint updates existing step in the selected protocol. If submitted attributes are the same and no changes are made for the step, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
ID The ID of the step

Request body

{
  "data": {
    "id": "1",
    "type": "steps",
    "attributes": {
      "name": "Step 2",
      "description": "Step 2 description",
      "completed": true
    }
  }
}

Step attributes

Attribute Mandatory Description
name yes Name of the step
description no Description of the step
completed no Step completion flag

Delete Step (Deprecated)

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific step from the protocol.

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
ID The ID of the step

Reorder step elements (Deprecated)

curl -X POST \
  https://<server-name>/api/service/teams/1/steps/1/reorder_elements \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "step_element_order": [
        { "id": 29570, "position": 0 },
        { "id": 29290, "position": 1 }
    ]
}'

HTTP Request

POST https://<server-name>/api/service/teams/1/steps/1/reorder_elements

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from

Request body

{
  "step_element_order": [
    { "id": 29570, "position": 0 },
    { "id": 29290, "position": 1 }
  ]
}

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "29290",
      "type": "step_orderable_elements",
      "attributes": {
        "position": 1,
        "element": {
          "id": 6854,
          "name": "Checklist 1",
          "created_at": "2022-05-12T11:58:58.163Z",
          "updated_at": "2022-05-12T11:58:58.163Z",
          "checklist_items": [
            {
              "id": 26930,
              "text": "one",
              "checked": true,
              "position": 1,
              "created_at": "2022-05-12T11:59:02.285Z",
              "updated_at": "2022-05-12T11:59:20.223Z"
            },
            {
              "id": 26931,
              "text": "two",
              "checked": true,
              "position": 2,
              "created_at": "2022-05-12T11:59:03.042Z",
              "updated_at": "2022-05-12T11:59:21.131Z"
            },
            {
              "id": 26929,
              "text": "three",
              "checked": false,
              "position": 3,
              "created_at": "2022-05-12T11:59:01.380Z",
              "updated_at": "2022-05-12T11:59:01.380Z"
            }
          ]
        }
      }
    },
    {
      "id": "29570",
      "type": "step_orderable_elements",
      "attributes": {
        "position": 0,
        "element": {
          "id": 19968,
          "text": "<div>Some text.</div>",
          "created_at": "2022-06-27T09:12:36.703Z",
          "updated_at": "2022-06-27T09:12:45.714Z"
        }
      }
    }
  ]
}

This endpoint is used for changing the order of step elements.

Reorder steps (Deprecated)

curl -X POST \
  https://<server-name>/api/service/teams/1/protocols/1/reorder_steps \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "step_order": [
        { "id": 21803, "position": 1 },
        { "id": 21802, "position": 0 },
        { "id": 21801, "position": 2 }
    ]
}'

HTTP Request

POST https://<server-name>/api/service/teams/1/protocols/1/reorder_steps

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from

Request body

{
  "step_order": [
    { "id": 21803, "position": 1 },
    { "id": 21802, "position": 0 },
    { "id": 21801, "position": 2 }
  ]
}

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "21802",
      "type": "steps",
      "attributes": {
        "name": "Step 2",
        "description": null,
        "position": 0,
        "completed": false,
        "created_at": "2022-05-11T14:21:13.984Z",
        "updated_at": "2022-05-11T14:21:16.501Z"
      },
      "relationships": {
        "user": {
          "data": {
            "id": "9",
            "type": "users"
          }
        },
        "protocol": {
          "data": {
            "id": "11200",
            "type": "protocols"
          }
        },
        "assets": {
          "data": []
        },
        "checklists": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "step_texts": {
          "data": []
        },
        "comments": {
          "data": []
        },
        "step_elements": {
          "data": [
            {
              "id": "29289",
              "type": "step_orderable_elements"
            }
          ]
        }
      }
    },
    {
      "id": "21803",
      "type": "steps",
      "attributes": {
        "name": "Step 1",
        "description": null,
        "position": 0,
        "completed": false,
        "created_at": "2022-05-11T14:21:13.984Z",
        "updated_at": "2022-05-11T14:21:16.501Z"
      },
      "relationships": {
        "user": {
          "data": {
            "id": "9",
            "type": "users"
          }
        },
        "protocol": {
          "data": {
            "id": "11200",
            "type": "protocols"
          }
        },
        "assets": {
          "data": []
        },
        "checklists": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "step_texts": {
          "data": []
        },
        "comments": {
          "data": []
        },
        "step_elements": {
          "data": [
            {
              "id": "29289",
              "type": "step_orderable_elements"
            }
          ]
        }
      }
    },
    {
      "id": "21801",
      "type": "steps",
      "attributes": {
        "name": "Step 3",
        "description": null,
        "position": 0,
        "completed": false,
        "created_at": "2022-05-11T14:21:13.984Z",
        "updated_at": "2022-05-11T14:21:16.501Z"
      },
      "relationships": {
        "user": {
          "data": {
            "id": "9",
            "type": "users"
          }
        },
        "protocol": {
          "data": {
            "id": "11200",
            "type": "protocols"
          }
        },
        "assets": {
          "data": []
        },
        "checklists": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "step_texts": {
          "data": []
        },
        "comments": {
          "data": []
        },
        "step_elements": {
          "data": []
        }
      }
    }
  ]
}

This endpoint is used for changing the order of steps.

Protocol Steps V2

Get Steps

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "4196",
      "type": "steps",
      "attributes": {
        "name": "Step name",
        "position": 32,
        "completed": true,
        "completed_on": "2019-09-16T13:47:22.069Z"
      },
      "relationships": {
        "protocol": {
          "data": {
            "id": "1",
            "type": "protocols"
          }
        },
        "assets": {
          "data": []
        },
        "checklists": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "step_texts": {
          "data": []
        },
        "comments": {
          "data": []
        }
      }
    },
    {
      "id": "4195",
      "type": "steps",
      "attributes": {
        "name": "Step name",
        "position": 31,
        "completed": false
      },
      "relationships": {
        "protocol": {
          "data": {
            "id": "1",
            "type": "protocols"
          }
        },
        "assets": {
          "data": []
        },
        "checklists": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "step_texts": {
          "data": []
        },
        "comments": {
          "data": []
        }
      }
    },
    {
      "id": "4194",
      "type": "steps",
      "attributes": {
        "name": "Step name",
        "position": 30,
        "completed": false
      },
      "relationships": {
        "protocol": {
          "data": {
            "id": "1",
            "type": "protocols"
          }
        },
        "assets": {
          "data": []
        },
        "checklists": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "step_texts": {
          "data": []
        },
        "comments": {
          "data": []
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps?page%5Bnumber%5D=2&page%5Bsize%5D=10",
    "last": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps?page%5Bnumber%5D=4&page%5Bsize%5D=10"
  }
}

This endpoint retrieves steps from specific protocol. It also supports inclusion of these elements: tables, step_texts, assets, checklists, checklists.checklist_items, comments. Optional URL parameter 'render_rte=true' can be added in order to request rendering of RTE fields(embedded images, smart annotations). If ?include=comments PATH parameter is provided, step comments are also included.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps(?include=<INCLUDES>&filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
INCLUDES if set to comments, step comments are also included
FROM If present will filter protocol steps corresponding timestamp above or equals value
TO If present will filter protocol steps corresponding timestamp below or equals value

Get Step

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "steps",
    "attributes": {
      "name": "Step name",
      "position": 1,
      "completed": true,
      "completed_on": "2019-09-16T13:47:22.069Z"
    },
    "relationships": {
      "protocol": {
        "data": {
          "id": "1",
          "type": "protocols"
        }
      },
      "assets": {
        "data": []
      },
      "checklists": {
        "data": []
      },
      "tables": {
        "data": []
      },
      "step_texts": {
        "data": []
      },
      "comments": {
        "data": []
      }
    }
  }
}

This endpoint retrieves specific step from the protocol. It also supports inclusion of these elements: tables, step_texts, assets, checklists, checklists.checklist_items, comments. Optional URL parameter 'render_rte=true' can be added in order to request rendering of RTE fields(embedded images, smart annotations). If ?include=comments PATH parameter is provided, step comments are also included.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<ID>(?include=<INCLUDES>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
ID The ID of the step
INCLUDES if set to comments, step comments are also included

Create Step

curl -X POST \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "steps",
        "attributes": {
            "name": "Step name"
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "steps",
    "attributes": {
      "name": "Step name",
      "position": 1,
      "completed": false
    },
    "relationships": {
      "protocol": {
        "data": {
          "id": "1",
          "type": "protocols"
        }
      },
      "assets": {
        "data": []
      },
      "checklists": {
        "data": []
      },
      "tables": {
        "data": []
      },
      "step_texts": {
        "data": []
      },
      "comments": {
        "data": []
      }
    }
  }
}

This endpoint creates new step in the protocol.

HTTP Request

POST https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from

Request body

{
  "data": {
    "type": "steps",
    "attributes": {
      "name": "Step name"
    }
  }
}

Step attributes

Attribute Mandatory Description
name yes Name of the step
completed no Step completion flag

Update Step

curl -X PATCH \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "steps",
          "attributes": {
            "name": "Step 2",
            "completed": true
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "steps",
    "attributes": {
      "name": "Step 2",
      "position": 1,
      "completed": true,
      "completed_on": "2020-07-06T10:00:18.866Z"
    },
    "relationships": {
      "protocol": {
        "data": {
          "id": "1",
          "type": "protocols"
        }
      },
      "assets": {
        "data": []
      },
      "checklists": {
        "data": []
      },
      "tables": {
        "data": []
      },
      "step_texts": {
        "data": []
      },
      "comments": {
        "data": []
      }
    }
  }
}

This endpoint updates existing step in the selected protocol. If submitted attributes are the same and no changes are made for the step, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
ID The ID of the step

Request body

{
  "data": {
    "id": "1",
    "type": "steps",
    "attributes": {
      "name": "Step 2",
      "completed": true
    }
  }
}

Step attributes

Attribute Mandatory Description
name yes Name of the step
completed no Step completion flag

Delete Step

curl -X DELETE \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific step from the protocol.

HTTP Request

DELETE https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
ID The ID of the step

Reorder step elements

curl -X POST \
  https://<server-name>/api/service/teams/1/steps/1/reorder_elements \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "step_element_order": [
        { "id": 29570, "position": 0 },
        { "id": 29290, "position": 1 }
    ]
}'

HTTP Request

POST https://<server-name>/api/service/teams/1/steps/1/reorder_elements

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from

Request body

{
  "step_element_order": [
    { "id": 29570, "position": 0 },
    { "id": 29290, "position": 1 }
  ]
}

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "29290",
      "type": "step_orderable_elements",
      "attributes": {
        "position": 1,
        "element": {
          "id": 6854,
          "name": "Checklist 1",
          "created_at": "2022-05-12T11:58:58.163Z",
          "updated_at": "2022-05-12T11:58:58.163Z",
          "checklist_items": [
            {
              "id": 26930,
              "text": "one",
              "checked": true,
              "position": 1,
              "created_at": "2022-05-12T11:59:02.285Z",
              "updated_at": "2022-05-12T11:59:20.223Z"
            },
            {
              "id": 26931,
              "text": "two",
              "checked": true,
              "position": 2,
              "created_at": "2022-05-12T11:59:03.042Z",
              "updated_at": "2022-05-12T11:59:21.131Z"
            },
            {
              "id": 26929,
              "text": "three",
              "checked": false,
              "position": 3,
              "created_at": "2022-05-12T11:59:01.380Z",
              "updated_at": "2022-05-12T11:59:01.380Z"
            }
          ]
        }
      }
    },
    {
      "id": "29570",
      "type": "step_orderable_elements",
      "attributes": {
        "position": 0,
        "element": {
          "id": 19968,
          "text": "<div>Some text.</div>",
          "created_at": "2022-06-27T09:12:36.703Z",
          "updated_at": "2022-06-27T09:12:45.714Z"
        }
      }
    }
  ]
}

This endpoint is used for changing the order of step elements.

Reorder steps

curl -X POST \
  https://<server-name>/api/service/teams/1/protocols/1/reorder_steps \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "step_order": [
        { "id": 21803, "position": 1 },
        { "id": 21802, "position": 0 },
        { "id": 21801, "position": 2 }
    ]
}'

HTTP Request

POST https://<server-name>/api/service/teams/1/protocols/1/reorder_steps

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from

Request body

{
  "step_order": [
    { "id": 21803, "position": 1 },
    { "id": 21802, "position": 0 },
    { "id": 21801, "position": 2 }
  ]
}

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "21802",
      "type": "steps",
      "attributes": {
        "name": "Step 2",
        "position": 0,
        "completed": false,
        "created_at": "2022-05-11T14:21:13.984Z",
        "updated_at": "2022-05-11T14:21:16.501Z"
      },
      "relationships": {
        "user": {
          "data": {
            "id": "9",
            "type": "users"
          }
        },
        "protocol": {
          "data": {
            "id": "11200",
            "type": "protocols"
          }
        },
        "assets": {
          "data": []
        },
        "checklists": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "step_texts": {
          "data": []
        },
        "comments": {
          "data": []
        },
        "step_elements": {
          "data": [
            {
              "id": "29289",
              "type": "step_orderable_elements"
            }
          ]
        }
      }
    },
    {
      "id": "21803",
      "type": "steps",
      "attributes": {
        "name": "Step 1",
        "position": 0,
        "completed": false,
        "created_at": "2022-05-11T14:21:13.984Z",
        "updated_at": "2022-05-11T14:21:16.501Z"
      },
      "relationships": {
        "user": {
          "data": {
            "id": "9",
            "type": "users"
          }
        },
        "protocol": {
          "data": {
            "id": "11200",
            "type": "protocols"
          }
        },
        "assets": {
          "data": []
        },
        "checklists": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "step_texts": {
          "data": []
        },
        "comments": {
          "data": []
        },
        "step_elements": {
          "data": [
            {
              "id": "29289",
              "type": "step_orderable_elements"
            }
          ]
        }
      }
    },
    {
      "id": "21801",
      "type": "steps",
      "attributes": {
        "name": "Step 3",
        "position": 0,
        "completed": false,
        "created_at": "2022-05-11T14:21:13.984Z",
        "updated_at": "2022-05-11T14:21:16.501Z"
      },
      "relationships": {
        "user": {
          "data": {
            "id": "9",
            "type": "users"
          }
        },
        "protocol": {
          "data": {
            "id": "11200",
            "type": "protocols"
          }
        },
        "assets": {
          "data": []
        },
        "checklists": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "step_texts": {
          "data": []
        },
        "comments": {
          "data": []
        },
        "step_elements": {
          "data": []
        }
      }
    }
  ]
}

This endpoint is used for changing the order of steps.

Step checklists V1(Deprecated)

Get Checklists (Deprecated)

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "checklists",
      "attributes": {
        "name": "Checklist 1",
        "position": 0
      },
      "relationships": {
        "checklist_items": {
          "data": []
        }
      }
    },
    {
      "id": "2",
      "type": "checklists",
      "attributes": {
        "name": "Checklist 2",
        "position": 1
      },
      "relationships": {
        "checklist_items": {
          "data": []
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves checklists from specific step. It also supports inclusion of these elements: checklist_items.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve step from
STEP_ID The ID of the step to retrieve checklists from
FROM If present will filter checklists corresponding timestamp above or equals value
TO If present will filter checklists corresponding timestamp below or equals value

Get Checklist (Deprecated)

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "checklists",
    "attributes": {
      "name": "Checklist 1",
      "position": 0
    },
    "relationships": {
      "checklist_items": {
        "data": []
      }
    }
  }
}

This endpoint retrieves specific checklist from the step. It also supports inclusion of these elements: checklist_items.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve checklist from
ID The ID of the checklist

Create Checklist (Deprecated)

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "checklists",
        "attributes": {
            "name": "New checklist"
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "3",
    "type": "checklists",
    "attributes": {
      "name": "Checklist 3",
      "position": 0
    },
    "relationships": {
      "checklist_items": {
        "data": []
      }
    }
  }
}

This endpoint creates new checklist in the step.

HTTP Request

POST https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to create checklist in

Request body

{
  "data": {
    "type": "checklists",
    "attributes": {
      "name": "New checklist",
      "position": 0
    }
  }
}

Checklist attributes

Attribute Mandatory Description
name yes Name of the checklist

Update Checklist (Deprecated)

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "checklists",
          "attributes": {
            "name": "Checklist 2"
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "checklists",
    "attributes": {
      "name": "Checklist 2",
      "position": 0
    }
  }
}

This endpoint updates existing checklist in the selected step. If submitted attributes are the same and no changes are made for the checklist, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve checklist from
ID The ID of the checklist

Request body

{
  "data": {
    "id": "1",
    "type": "checklists",
    "attributes": {
      "name": "Checklist 2"
    }
  }
}

Checklist attributes

Attribute Mandatory Description
name yes Name of the checklist

Delete Checklist (Deprecated)

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific checklist from the step.

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve checklists from
ID The ID of the checklist

Step checklists V2

Get Checklists

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "checklists",
      "attributes": {
        "name": "Checklist 1",
        "position": 0
      },
      "relationships": {
        "checklist_items": {
          "data": []
        }
      }
    },
    {
      "id": "2",
      "type": "checklists",
      "attributes": {
        "name": "Checklist 2",
        "position": 1
      },
      "relationships": {
        "checklist_items": {
          "data": []
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves checklists from specific step. It also supports inclusion of these elements: checklist_items.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve step from
STEP_ID The ID of the step to retrieve checklists from
FROM If present will filter checklists corresponding timestamp above or equals value
TO If present will filter checklists corresponding timestamp below or equals value

Get Checklist

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "checklists",
    "attributes": {
      "name": "Checklist 1",
      "position": 0
    },
    "relationships": {
      "checklist_items": {
        "data": []
      }
    }
  }
}

This endpoint retrieves specific checklist from the step. It also supports inclusion of these elements: checklist_items.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve checklist from
ID The ID of the checklist

Create Checklist

curl -X POST \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "checklists",
        "attributes": {
            "name": "New checklist"
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "3",
    "type": "checklists",
    "attributes": {
      "name": "Checklist 3",
      "position": 0
    },
    "relationships": {
      "checklist_items": {
        "data": []
      }
    }
  }
}

This endpoint creates new checklist in the step.

HTTP Request

POST https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to create checklist in

Request body

{
  "data": {
    "type": "checklists",
    "attributes": {
      "name": "New checklist",
      "position": 0
    }
  }
}

Checklist attributes

Attribute Mandatory Description
name yes Name of the checklist

Update Checklist

curl -X PATCH \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "checklists",
          "attributes": {
            "name": "Checklist 2"
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "checklists",
    "attributes": {
      "name": "Checklist 2",
      "position": 0
    }
  }
}

This endpoint updates existing checklist in the selected step. If submitted attributes are the same and no changes are made for the checklist, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve checklist from
ID The ID of the checklist

Request body

{
  "data": {
    "id": "1",
    "type": "checklists",
    "attributes": {
      "name": "Checklist 2"
    }
  }
}

Checklist attributes

Attribute Mandatory Description
name yes Name of the checklist

Delete Checklist

curl -X DELETE \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific checklist from the step.

HTTP Request

DELETE https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve checklists from
ID The ID of the checklist

Step checklist items V1(Deprecated)

Get Checklist Items (Deprecated)

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/items"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "checklist_items",
      "attributes": {
        "text": "Item 1",
        "checked": false,
        "position": 0
      }
    },
    {
      "id": "2",
      "type": "checklist_items",
      "attributes": {
        "text": "Item 2",
        "checked": false,
        "position": 1
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/item?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/item?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/items?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves items from the specific checklist.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists/<CHECKLIST_ID>/items(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve step from
STEP_ID The ID of the step to retrieve checklists from
CHECKLIST_ID The ID of the checklist to retrieve items from
FROM If present will filter checklist items corresponding timestamp above or equals value
TO If present will filter checklist items corresponding timestamp below or equals value

Get Checklist Item (Deprecated)

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/items/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "checklist_items",
    "attributes": {
      "text": "Item 1",
      "checked": false,
      "position": 0
    }
  }
}

This endpoint retrieves specific item from the checklist.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists/<CHECKLIST_ID>/items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve checklist from
CHECKLIST_ID The ID of the checklist to retrieve item from
ID The ID of the checklist

Create Checklist Item (Deprecated)

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/items \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "checklist_items",
        "attributes": {
      "text": "Item 3",
      "checked": false,
      "position": 2
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "3",
    "type": "checklist_items",
    "attributes": {
      "text": "Item 3",
      "checked": false,
      "position": 2
    }
  }
}

This endpoint creates new item in the checklist.

HTTP Request

POST https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/items

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve checklist from
CHECKLIST_ID The ID of the checklist to create item in

Request body

{
  "data": {
    "type": "checklist_items",
    "attributes": {
      "text": "Item 3",
      "checked": false,
      "position": 2
    }
  }
}

Checklist item attributes

Attribute Mandatory Description
text yes Label text of the item
checked no Item checked or unchecked
position no Position of the item in the checklist

Update Checklist Item (Deprecated)

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "checklist_items",
          "attributes": {
            "text": "Item 2",
            "checked": true
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "checklist_items",
    "attributes": {
      "text": "Item 2",
      "checked": true,
      "position": 0
    }
  }
}

This endpoint updates existing item in the selected checklist. If submitted attributes are the same and no changes are made for the item, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists/<CHECKLIST_ID>/items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve checklist from
CHECKLIST_ID The ID of the checklist to retrieve item from
ID The ID of the checklist

Request body

{
  "data": {
    "id": "1",
    "type": "checklist_items",
    "attributes": {
      "text": "Item 2",
      "checked": true
    }
  }
}

Checklist item attributes

Attribute Mandatory Description
text no Label text of the item
checked no Item checked or unchecked
position no Position of the item in the checklist

Delete Checklist Item (Deprecated)

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/items/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific item from the checklist.

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists/<CHECKLIST_ID>/items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve checklists from
CHECKLIST_ID The ID of the checklist to retrieve items from
ID The ID of the checklist item

Step checklist items V2

Get Checklist Items

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/checklist_items"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "checklist_items",
      "attributes": {
        "text": "Item 1",
        "checked": false,
        "position": 0
      }
    },
    {
      "id": "2",
      "type": "checklist_items",
      "attributes": {
        "text": "Item 2",
        "checked": false,
        "position": 1
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/checklist_items?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/checklist_items?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/checklist_items?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves items from the specific checklist.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists/<CHECKLIST_ID>/checklist_items(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve step from
STEP_ID The ID of the step to retrieve checklists from
CHECKLIST_ID The ID of the checklist to retrieve items from
FROM If present will filter checklist items corresponding timestamp above or equals value
TO If present will filter checklist items corresponding timestamp below or equals value

Get Checklist Item

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/checklist_items/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "checklist_items",
    "attributes": {
      "text": "Item 1",
      "checked": false,
      "position": 0
    }
  }
}

This endpoint retrieves specific item from the checklist.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists/<CHECKLIST_ID>/checklist_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve checklist from
CHECKLIST_ID The ID of the checklist to retrieve item from
ID The ID of the checklist item

Create Checklist Item

curl -X POST \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/checklist_items \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "checklist_items",
        "attributes": {
      "text": "Item 3",
      "checked": false,
      "position": 2
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "3",
    "type": "checklist_items",
    "attributes": {
      "text": "Item 3",
      "checked": false,
      "position": 2
    }
  }
}

This endpoint creates new item in the checklist.

HTTP Request

POST https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/checklist_items

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve checklist from
CHECKLIST_ID The ID of the checklist to create item in

Request body

{
  "data": {
    "type": "checklist_items",
    "attributes": {
      "text": "Item 3",
      "checked": false,
      "position": 2
    }
  }
}

Checklist item attributes

Attribute Mandatory Description
text yes Label text of the item
checked no Item checked or unchecked
position no Position of the item in the checklist

Update Checklist Item

curl -X PATCH \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklist_items/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "checklist_items",
          "attributes": {
            "text": "Item 2",
            "checked": true
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "checklist_items",
    "attributes": {
      "text": "Item 2",
      "checked": true,
      "position": 0
    }
  }
}

This endpoint updates existing item in the selected checklist. If submitted attributes are the same and no changes are made for the item, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists/<CHECKLIST_ID>/checklist_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve checklist from
CHECKLIST_ID The ID of the checklist to retrieve item from
ID The ID of the checklist item

Request body

{
  "data": {
    "id": "1",
    "type": "checklist_items",
    "attributes": {
      "text": "Item 2",
      "checked": true
    }
  }
}

Checklist item attributes

Attribute Mandatory Description
text no Label text of the item
checked no Item checked or unchecked
position no Position of the item in the checklist

Delete Checklist Item

curl -X DELETE \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists/1/checklist_items/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific item from the checklist.

HTTP Request

DELETE https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/checklists/<CHECKLIST_ID>/checklist_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve checklists from
CHECKLIST_ID The ID of the checklist to retrieve items from
ID The ID of the checklist item

Step tables V1(Deprecated)

Get Tables (Deprecated)

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "tables",
      "attributes": {
        "name": "Table 1",
        "position": 0,
        "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
        "metadata": {
          "cells": [{"col": 0, "row": 0, "className": "htCenter"},
                    {"col": 0, "row": 1, "className": "htRight"},
                    {"col": 1, "row": 0, "className": "htLeft"},
                    {"col": 1, "row": 1, "className": "htJustify"}
                    {"col": 2, "row": 0, "className": "htMiddle htRight"},
                    {"col": 2, "row": 1, "className": "htBottom"}],
          "plateTemplate": true
        }
      }
    },
    {
      "id": "2",
      "type": "tables",
      "attributes": {
        "name": "Table 2",
        "position": 1,
        "contents": "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
        "metadata": {
          "cells": [{"col": 0, "row": 0, "className": "htCenter"},
                    {"col": 0, "row": 1, "className": "htRight"},
                    {"col": 1, "row": 0, "className": "htLeft"},
                    {"col": 1, "row": 1, "className": "htJustify"}
                    {"col": 2, "row": 0, "className": "htMiddle htRight"},
                    {"col": 2, "row": 1, "className": "htBottom"}]
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves tables from specific step.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/tables(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve step from
STEP_ID The ID of the step to retrieve tables from
FROM If present will filter step tables corresponding timestamp above or equals value
TO If present will filter step tables corresponding timestamp below or equals value

Get Table (Deprecated)

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "tables",
    "attributes": {
      "name": "Table 1",
      "position": 0,
      "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": "htCenter"},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": "htLeft"},
                  {"col": 1, "row": 1, "className": "htJustify"}
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
    }
  }
}

This endpoint retrieves specific table from the step.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/tables/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve table from
ID The ID of the table

Create Table (Deprecated)

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "tables",
        "attributes": {
            "name": "New table",
            "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": ""},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": ""},
                  {"col": 1, "row": 1, "className": "htJustify"},
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "3",
    "type": "tables",
    "attributes": {
      "name": "New table",
      "position": 0,
      "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": ""},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": ""},
                  {"col": 1, "row": 1, "className": "htJustify"}
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
    }
  }
}

This endpoint creates new table in the step.

HTTP Request

POST https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to create table in

Request body

{
  "data": {
    "type": "tables",
    "attributes": {
      "name": "New table",
            "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": ""},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": ""},
                  {"col": 1, "row": 1, "className": "htJustify"}
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
    }
  }
}

Table attributes

Attribute Mandatory Description
name yes Name of the table
contents no Serialized JSON representation of the table data
metadata no JSON representation of the table metadata. cells represent the alignment of the specific table cell. Available className are htCenter, htRight, htLeft, htJustify for horizontal alignment, and htTop, htMiddle, htBottom for vertical alignment. plateTemplate field mark if table is a plate template

Update Table (Deprecated)

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "tables",
          "attributes": {
            "name": "Table 2",
            "contents":  "{\"data\":[[\"6\",\"5\",\"4\"],[\"3\",\"2\",\"1\"]]}",
            "metadata": {
              "cells": [{"col": 0, "row": 0, "className": ""},
                        {"col": 0, "row": 1, "className": "htRight"},
                        {"col": 1, "row": 0, "className": ""},
                        {"col": 1, "row": 1, "className": "htJustify"}
                        {"col": 2, "row": 0, "className": "htMiddle htRight"},
                        {"col": 2, "row": 1, "className": "htBottom"}],
              "plateTemplate": true
            }
          }
      }
  }'

The above command returns JSON structured like this:

{
    "data": {
      "id": "1",
      "type": "tables",
      "attributes": {
        "name": "Table 2",
        "position": 0,
        "contents":  "{\"data\":[[\"6\",\"5\",\"4\"],[\"3\",\"2\",\"1\"]]}",
        "metadata": {
          "cells": [{"col": 0, "row": 0, "className": ""},
                    {"col": 0, "row": 1, "className": "htRight"},
                    {"col": 1, "row": 0, "className": ""},
                    {"col": 1, "row": 1, "className": "htJustify"}
                    {"col": 2, "row": 0, "className": "htMiddle htRight"},
                    {"col": 2, "row": 1, "className": "htBottom"}],
          "plateTemplate": true
        }
      }
    }
}

This endpoint updates existing table in the selected step. If submitted attributes are the same and no changes are made for the table, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/tables/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve table from
ID The ID of the table

Request body

{
  "data": {
    "id": "1",
    "type": "tables",
    "attributes": {
      "name": "Table 2",
      "contents":  "{\"data\":[[\"6\",\"5\",\"4\"],[\"3\",\"2\",\"1\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": ""},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": ""},
                  {"col": 1, "row": 1, "className": "htJustify"}
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
    }
  }
}

Table attributes

Attribute Mandatory Description
name no Name of the table
contents no Serialized JSON representation of the table data
metadata no JSON representation of the table metadata. cells represent the alignment of the specific table cell. Available className are htCenter, htRight, htLeft, htJustify for horizontal alignment, and htTop, htMiddle, htBottom for vertical alignment. plateTemplate field mark if table is a plate template

Delete Table (Deprecated)

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific table from the step.

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/tables/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve tables from
ID The ID of the table

Step tables V2

Get Tables

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "tables",
      "attributes": {
        "name": "Table 1",
        "position": 0,
        "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
        "metadata": {
          "cells": [{"col": 0, "row": 0, "className": "htCenter"},
                    {"col": 0, "row": 1, "className": "htRight"},
                    {"col": 1, "row": 0, "className": "htLeft"},
                    {"col": 1, "row": 1, "className": "htJustify"}
                    {"col": 2, "row": 0, "className": "htMiddle htRight"},
                    {"col": 2, "row": 1, "className": "htBottom"}],
          "plateTemplate": true
        }
      }
    },
    {
      "id": "2",
      "type": "tables",
      "attributes": {
        "name": "Table 2",
        "position": 1,
        "contents": "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
        "metadata": {
          "cells": [{"col": 0, "row": 0, "className": "htCenter"},
                    {"col": 0, "row": 1, "className": "htRight"},
                    {"col": 1, "row": 0, "className": "htLeft"},
                    {"col": 1, "row": 1, "className": "htJustify"}
                    {"col": 2, "row": 0, "className": "htMiddle htRight"},
                    {"col": 2, "row": 1, "className": "htBottom"}]
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves tables from specific step.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/tables(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve step from
STEP_ID The ID of the step to retrieve tables from
FROM If present will filter step tables corresponding timestamp above or equals value
TO If present will filter step tables corresponding timestamp below or equals value

Get Table

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "tables",
    "attributes": {
      "name": "Table 1",
      "position": 0,
      "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": "htCenter"},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": "htLeft"},
                  {"col": 1, "row": 1, "className": "htJustify"}
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
    }
  }
}

This endpoint retrieves specific table from the step.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/tables/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve table from
ID The ID of the table

Create Table

curl -X POST \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "tables",
        "attributes": {
            "name": "New table",
            "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": ""},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": ""},
                  {"col": 1, "row": 1, "className": "htJustify"},
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "3",
    "type": "tables",
    "attributes": {
      "name": "New table",
      "position": 0,
      "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": ""},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": ""},
                  {"col": 1, "row": 1, "className": "htJustify"}
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
    }
  }
}

This endpoint creates new table in the step.

HTTP Request

POST https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to create table in

Request body

{
  "data": {
    "type": "tables",
    "attributes": {
      "name": "New table",
            "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": ""},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": ""},
                  {"col": 1, "row": 1, "className": "htJustify"}
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
    }
  }
}

Table attributes

Attribute Mandatory Description
name yes Name of the table
contents no Serialized JSON representation of the table data
metadata no JSON representation of the table metadata. cells represent the alignment of the specific table cell. Available className are htCenter, htRight, htLeft, htJustify for horizontal alignment, and htTop, htMiddle, htBottom for vertical alignment. plateTemplate field mark if table is a plate template

Update Table

curl -X PATCH \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "tables",
          "attributes": {
            "name": "Table 2",
            "contents":  "{\"data\":[[\"6\",\"5\",\"4\"],[\"3\",\"2\",\"1\"]]}",
            "metadata": {
              "cells": [{"col": 0, "row": 0, "className": ""},
                        {"col": 0, "row": 1, "className": "htRight"},
                        {"col": 1, "row": 0, "className": ""},
                        {"col": 1, "row": 1, "className": "htJustify"}
                        {"col": 2, "row": 0, "className": "htMiddle htRight"},
                        {"col": 2, "row": 1, "className": "htBottom"}],
              "plateTemplate": true
            }
          }
      }
  }'

The above command returns JSON structured like this:

{
    "data": {
      "id": "1",
      "type": "tables",
      "attributes": {
        "name": "Table 2",
        "position": 0,
        "contents":  "{\"data\":[[\"6\",\"5\",\"4\"],[\"3\",\"2\",\"1\"]]}",
        "metadata": {
          "cells": [{"col": 0, "row": 0, "className": ""},
                    {"col": 0, "row": 1, "className": "htRight"},
                    {"col": 1, "row": 0, "className": ""},
                    {"col": 1, "row": 1, "className": "htJustify"}
                    {"col": 2, "row": 0, "className": "htMiddle htRight"},
                    {"col": 2, "row": 1, "className": "htBottom"}],
          "plateTemplate": true
        }
      }
    }
}

This endpoint updates existing table in the selected step. If submitted attributes are the same and no changes are made for the table, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/tables/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve table from
ID The ID of the table

Request body

{
  "data": {
    "id": "1",
    "type": "tables",
    "attributes": {
      "name": "Table 2",
      "contents":  "{\"data\":[[\"6\",\"5\",\"4\"],[\"3\",\"2\",\"1\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": ""},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": ""},
                  {"col": 1, "row": 1, "className": "htJustify"}
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
    }
  }
}

Table attributes

Attribute Mandatory Description
name no Name of the table
contents no Serialized JSON representation of the table data
metadata no JSON representation of the table metadata. cells represent the alignment of the specific table cell. Available className are htCenter, htRight, htLeft, htJustify for horizontal alignment, and htTop, htMiddle, htBottom for vertical alignment. plateTemplate field mark if table is a plate template

Delete Table

curl -X DELETE \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/tables/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific table from the step.

HTTP Request

DELETE https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/tables/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve tables from
ID The ID of the table

Step texts V1(Deprecated)

Get step_texts (Deprecated)

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/step_texts"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "step_texts",
      "attributes": {
        "text": "<p>Some text.</p>",
        "position": 0
      }
    },
    {
      "id": "2",
      "type": "step_texts",
      "attributes": {
        "text": "<p>Some text.</p>",
        "position": 1
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/step_texts?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/step_texts?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/step_texts?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves step_texts from specific step.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/step_texts(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve step from
STEP_ID The ID of the step to retrieve step_texts from
FROM If present will filter steps' step_text, corresponding timestamp above or equals value
TO If present will filter steps' step_text, corresponding timestamp below or equals value

Get step_text (Deprecated)

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/step_texts/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "step_texts",
    "attributes": {
      "text": "<p>Some text.</p>",
      "position": 0
    }
  }
}

This endpoint retrieves specific step_text from the step.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/step_texts/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve step_text from
ID The ID of the step_text

Create step_text (Deprecated)

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/step_texts \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "step_texts",
        "attributes": {
            "text": "<p>Some text.</p>"
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "3",
    "type": "step_texts",
    "attributes": {
      "text": "<p>Some text.</p>",
      "position": 0
    }
  }
}

This endpoint creates new step_text in the step.

HTTP Request

POST https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/step_texts

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to create step_text in

Request body

{
  "data": {
    "type": "step_texts",
    "attributes": {
      "text": "<p>Some text.</p>"
    }
  }
}

Step_text attributes

Attribute Mandatory Description
text yes String representation of the step_text data

Update step_text (Deprecated)

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/step_texts/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "step_texts",
          "attributes": {
            "text":  "<p>Some text.</p>"
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "step_texts",
    "attributes": {
      "text": "<p>Some text.</p>",
      "position": 0
    }
  }
}

This endpoint updates existing step_Text in the selected step. If submitted attributes are the same and no changes are made for the step_text, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/step_texts/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve step_text from
ID The ID of the step_text

Request body

{
  "data": {
    "id": "1",
    "type": "step_texts",
    "attributes": {
      "text": "<p>Some text.</p>"
    }
  }
}

Step_text attributes

Attribute Mandatory Description
text yes String representation of the step_text data

Delete step_text (Deprecated)

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/step_texts/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific step_text from the step.

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/step_texts/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve step_texts from
ID The ID of the step_text

Step texts V2

Get step texts

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/texts"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "step_texts",
      "attributes": {
        "text": "<p>Some text.</p>",
        "position": 0
      }
    },
    {
      "id": "2",
      "type": "step_texts",
      "attributes": {
        "text": "<p>Some text.</p>",
        "position": 1
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/texts?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/texts?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/texts?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves step_texts from specific step.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/texts(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve step from
STEP_ID The ID of the step to retrieve step_texts from
FROM If present will filter steps' step_text, corresponding timestamp above or equals value
TO If present will filter steps' step_text, corresponding timestamp below or equals value

Get step_text

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/texts/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "step_texts",
    "attributes": {
      "text": "<p>Some text.</p>",
      "position": 0
    }
  }
}

This endpoint retrieves specific step_text from the step.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/texts/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve step_text from
ID The ID of the step_text

Create step_text

curl -X POST \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/texts \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "step_texts",
        "attributes": {
            "text": "<p>Some text.</p>"
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "3",
    "type": "step_texts",
    "attributes": {
      "text": "<p>Some text.</p>",
      "position": 0
    }
  }
}

This endpoint creates new step_text in the step.

HTTP Request

POST https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/texts

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to create step_text in

Request body

{
  "data": {
    "type": "step_texts",
    "attributes": {
      "text": "<p>Some text.</p>"
    }
  }
}

Step_text attributes

Attribute Mandatory Description
text yes String representation of the step_text data

Update step_text

curl -X PATCH \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/texts/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "step_texts",
          "attributes": {
            "text":  "<p>Some text.</p>"
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "step_texts",
    "attributes": {
      "text": "<p>Some text.</p>",
      "position": 0
    }
  }
}

This endpoint updates existing step_Text in the selected step. If submitted attributes are the same and no changes are made for the step_text, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/texts/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve step_text from
ID The ID of the step_text

Request body

{
  "data": {
    "id": "1",
    "type": "step_texts",
    "attributes": {
      "text": "<p>Some text.</p>"
    }
  }
}

Step_text attributes

Attribute Mandatory Description
text yes String representation of the step_text data

Delete step_text

curl -X DELETE \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/texts/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific step_text from the step.

HTTP Request

DELETE https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/texts/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve step_texts from
ID The ID of the step_text

Attachments V1(Deprecated)

Get Attachments (Deprecated)

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/attachments"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "attachments",
      "attributes": {
        "file_name": "my_image1.png",
        "file_size": 132441,
        "file_type": "image/png",
        "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>"
      },
      "relationships": {
        "step": {
          "data": {
            "id": "1",
            "type": "steps"
          }
        }
      }
    },
    {
      "id": "2",
      "type": "attachments",
      "attributes": {
        "file_name": "my_image2.png",
        "file_size": 270369,
        "file_type": "image/png",
        "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>/my_image2?disposition=attachment"
      },
      "relationships": {
        "step": {
          "data": {
            "id": "1",
            "type": "steps"
          }
        }
      }
    },
    {
      "id": "3",
      "type": "attachments",
      "attributes": {
        "file_name": "my_image3.png",
        "file_size": 91435,
        "file_type": "image/png",
        "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>/my_image3?disposition=attachment"
      },
      "relationships": {
        "step": {
          "data": {
            "id": "1",
            "type": "steps"
          }
        }
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/attachments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/attachments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/attachments?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves attachments from specific step.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/attachments

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve attachments from

Get Attachment (Deprecated)

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/attachments/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "attachments",
    "attributes": {
      "file_name": "my_image1",
      "file_size": 35038,
      "file_type": "image/png",
      "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>/my_image1?disposition=attachment"
    },
    "relationships": {
      "step": {
        "data": {
          "id": "1",
          "type": "steps"
        }
      }
    }
  }
}

This endpoint retrieves specific attachment from the step.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/attachments/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve attachments from
ID The ID of the attachment

Create Attachment (Deprecated)

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/attachments \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/json' \
  -d'{
    "data": {
      "attributes": {
        "file_name": "my_file.png",
        "file_type": "image/png",
        "file_data": "Base64EncodedData"
      },
      "type": "attachments"
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "attachments",
    "attributes": {
      "file_name": "my_image1.png",
      "file_size": 35038,
      "file_type": "image/png",
      "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>/my_image1.png?disposition=attachment"
    },
    "relationships": {
      "step": {
        "data": {
          "id": "1",
          "type": "steps"
        }
      }
    }
  }
}

This endpoint uploads new attachment to the step.

HTTP Request

POST https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/attachments

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve attachments from

Request body

{
  "data": {
    "type": "attachments",
    "attributes": {
      "file_name": "my_file.png",
      "file_type": "image/png",
      "file_data": "Base64EncodedData"
    }
  }
}

Attachment attributes

Attribute Mandatory Description
file_name yes File name
file_type yes MIME content type
file_data yes Base64 Encoded data

Attachments V2

Get Attachments

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/attachments"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "attachments",
      "attributes": {
        "file_name": "my_image1.png",
        "file_size": 132441,
        "file_type": "image/png",
        "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>/my_image1?disposition=attachment"
      },
      "relationships": {
        "step": {
          "data": {
            "id": "1",
            "type": "steps"
          }
        }
      }
    },
    {
      "id": "2",
      "type": "attachments",
      "attributes": {
        "file_name": "my_image2.png",
        "file_size": 270369,
        "file_type": "image/png",
        "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>/my_image2?disposition=attachment"
      },
      "relationships": {
        "step": {
          "data": {
            "id": "1",
            "type": "steps"
          }
        }
      }
    },
    {
      "id": "3",
      "type": "attachments",
      "attributes": {
        "file_name": "my_image3.png",
        "file_size": 91435,
        "file_type": "image/png",
        "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>/my_image3?disposition=attachment"
      },
      "relationships": {
        "step": {
          "data": {
            "id": "1",
            "type": "steps"
          }
        }
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/attachments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/attachments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/attachments?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves attachments from specific step.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/attachments

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve attachments from

Get Attachment

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/attachments/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "attachments",
    "attributes": {
      "file_name": "my_image1",
      "file_size": 35038,
      "file_type": "image/png",
      "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>/my_image1?disposition=attachment"
    },
    "relationships": {
      "step": {
        "data": {
          "id": "1",
          "type": "steps"
        }
      }
    }
  }
}

This endpoint retrieves specific attachment from the step.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/attachments/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve attachments from
ID The ID of the attachment

Create Attachment

curl -X POST \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/attachments \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/json' \
  -d'{
    "data": {
      "attributes": {
        "file_name": "my_file.png",
        "file_type": "image/png",
        "file_data": "Base64EncodedData"
      },
      "type": "attachments"
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "attachments",
    "attributes": {
      "file_name": "my_image1.png",
      "file_size": 35038,
      "file_type": "image/png",
      "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>/my_image1.png?disposition=attachment"
    },
    "relationships": {
      "step": {
        "data": {
          "id": "1",
          "type": "steps"
        }
      }
    }
  }
}

This endpoint uploads new attachment to the step.

HTTP Request

POST https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/protocols/<PROTOCOL_ID>/steps/<STEP_ID>/attachments

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
PROTOCOL_ID The ID of the protocol to retrieve steps from
STEP_ID The ID of the step to retrieve attachments from

Request body

{
  "data": {
    "type": "attachments",
    "attributes": {
      "file_name": "my_file.png",
      "file_type": "image/png",
      "file_data": "Base64EncodedData"
    }
  }
}

Attachment attributes

Attribute Mandatory Description
file_name yes File name
file_type yes MIME content type
file_data yes Base64 Encoded data

Task Users

Get Task Users

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/users"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "users",
      "attributes": {
        "full_name": "Admin",
        "initials": "A",
        "email": "admin@scinote.net",
        "avatar_url": "http://example.com/avatar.png",
        "avatar_file_size": 16181,
        "avatar_file_name": "avatar.png"
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/users?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/users?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/users?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all users that are assigned to a specified task.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/users(?created_at[from]=<FROM>&created_at[to]=<TO>]&updated_at[from]=<FROM>&updated_at[to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve users from
FROM If present will filter task assigned users corresponding timestamp above or equals value
TO If present will filter task assigned users corresponding timestamp below or equals value

Get Task User

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/users/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "users",
    "attributes": {
      "full_name": "Admin",
      "initials": "A",
      "email": "admin@scinote.net",
      "avatar_url": "http://example.com/avatar.png",
      "avatar_file_size": 16181,
      "avatar_file_name": "avatar.png"
    }
  }
}

This endpoint retrieves a specific user that is assigned to a specified task.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/users/<USER_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve user from
USER_ID The ID of the user to retrieve

Task Activities

Get Task Activities

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/activities"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "3",
      "type": "activities",
      "attributes": {
        "type_of": "export_protocol_from_task",
        "message": "<p>Admin exported protocol from task Sampling biological material</p>"
      },
      "relationships": {
        "project": {
          "data": {
            "id": "1",
            "type": "projects"
          }
        },
        "subject": {
          "data": {
            "id": "2",
            "type": "tasks"
          }
        },
        "user": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    },
    {
      "id": "4",
      "type": "activities",
      "attributes": {
        "type_of": "add_result",
        "message": "<p>Admin added file result (example.png).</p>"
      },
      "relationships": {
        "project": {
          "data": {
            "id": "1",
            "type": "projects"
          }
        },
        "subject": {
          "data": {
            "id": "12",
            "type": "results"
          }
        },
        "user": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/activities?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/activities?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/activities?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all activities from specific task.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/activities(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve activities from
FROM If present will filter task activities corresponding timestamp above or equals value
TO If present will filter task activities corresponding timestamp below or equals value

Task Tags

Get Task Tags

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/tags"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "tags",
      "attributes": {
        "name": "Drylab",
        "color": "#15369E"
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/tags?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/tags?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/tags?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all tags, that are assigned to the specific task.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/tags(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve task tags from
FROM If present will filter task assigned tags corresponding timestamp above or equals value
TO If present will filter task assigned tags corresponding timestamp below or equals value

Get Task Tag

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/tags/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "tags",
    "attributes": {
      "name": "Drylab",
      "color": "#15369E"
    }
  }
}

This endpoint retrieves a specific tag, that is assigned to a specific task.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/tags/<TAG_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve tag from
TAG_ID The ID of the tag to retrieve

Task Inventory Items

Get Task Inventory Items

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/2/items"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "inventory_items",
      "attributes": {
        "name": "BOX/1",
        "archived": false,
        "created_at": "2021-03-12T19:44:10.627Z",
        "updated_at": "2022-03-24T13:33:21.291Z",
        "stock_consumption": "130.0" // present if item contains a stock cell
      },
      "relationships": {
        "inventory_cells": {
          "data": [
            {
              "id": "1",
              "type": "inventory_cells"
            },
            {
              "id": "2",
              "type": "inventory_cells"
            }
          ]
        },
        "inventory": {
          "data": {
            "id": "1",
            "type": "inventories"
          }
        }
      }
    },
    {
      "id": "2",
      "type": "inventory_items",
      "attributes": {
        "name": "BOX/2"
      },
      "relationships": {
        "inventory_cells": {
          "data": [
            {
              "id": "3",
              "type": "inventory_cells"
            },
            {
              "id": "4",
              "type": "inventory_cells"
            }
          ]
        },
        "inventory": {
          "data": {
            "id": "1",
            "type": "inventories"
          }
        }
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/2/items?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/2/items?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/2/items?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all Inventory Items, that are assigned to the specified task.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/items(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve inventory items from
FROM If present will filter task assigned inventory items corresponding timestamp above or equals value
TO If present will filter task assigned inventory items corresponding timestamp below or equals value

Get Task Inventory Item

curl "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/2/items/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_items",
    "attributes": {
      "name": "BOX/1",
      "archived": false,
      "created_at": "2021-03-12T19:44:10.627Z",
      "updated_at": "2022-03-24T13:33:21.291Z",
      "stock_consumption": "130.0" // present if item contains a stock cell
    },
    "relationships": {
      "inventory_cells": {
        "data": [
          {
            "id": "1",
            "type": "inventory_cells"
          },
          {
            "id": "2",
            "type": "inventory_cells"
          }
        ]
      },
      "inventory": {
        "data": {
          "id": "1",
          "type": "inventories"
        }
      }
    }
  },
  "included": [
    {
      "id": "1",
      "type": "inventory_cells",
      "attributes": {
        "value_type": "list",
        "value": {
          "inventory_list_item_id": 1,
          "inventory_list_item_name": "Potato leaves"
        },
        "column_id": 1
      }
    },
    {
      "id": "2",
      "type": "inventory_cells",
      "attributes": {
        "value_type": "list",
        "value": {
          "inventory_list_item_id": 6,
          "inventory_list_item_name": "Seed"
        },
        "column_id": 2
      }
    },
    {
      "id": "1",
      "type": "inventories",
      "attributes": {
        "name": "Samples"
      },
      "relationships": {
        "created_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    }
  ]
}

This endpoint retrieves a specific inventory item, that is assigned to the specific task.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/items/<ITEM_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve inventory item from
ITEM_ID The ID of the inventory item to retrieve

Update Task Inventory Item

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/protocols/1/steps/1/checklists \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "inventory_items",
        "attributes": {
            "stock_consumption": 100.0,
      "stock_consumption_comment": "Some comment"
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_items",
    "attributes": {
      "name": "BOX/1",
      "archived": false,
      "created_at": "2021-03-12T19:44:10.627Z",
      "updated_at": "2022-03-24T13:33:21.291Z",
      "stock_consumption": "100.0"
    },
    "relationships": {
      "inventory_cells": {
        "data": [
          {
            "id": "1",
            "type": "inventory_cells"
          },
          {
            "id": "2",
            "type": "inventory_cells"
          }
        ]
      },
      "inventory": {
        "data": {
          "id": "1",
          "type": "inventories"
        }
      }
    }
  },
  "included": [
    {
      "id": "1",
      "type": "inventory_cells",
      "attributes": {
        "value_type": "list",
        "value": {
          "inventory_list_item_id": 1,
          "inventory_list_item_name": "Potato leaves"
        },
        "column_id": 1
      }
    },
    {
      "id": "2",
      "type": "inventory_cells",
      "attributes": {
        "value_type": "list",
        "value": {
          "inventory_list_item_id": 6,
          "inventory_list_item_name": "Seed"
        },
        "column_id": 2
      }
    },
    {
      "id": "1",
      "type": "inventories",
      "attributes": {
        "name": "Samples"
      },
      "relationships": {
        "created_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    }
  ]
}

This endpoint updates a specific inventory item, that is assigned to the specific task.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/items/<ITEM_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve inventory item from
ITEM_ID The ID of the inventory item to retrieve

Request body

{
  "data": {
    "type": "inventory_items",
    "attributes": {
      "stock_consumption": 100.0,
      "stock_consumption_comment": "Some comment"
    }
  }
}

Checklist attributes

Attribute Mandatory Description
stock_consumption yes Stock consumption to be set on the item.
stock_consumption_comment no Stock consumption comment to be set on the item. This will be recorded in the ledger

Task Users Assignments

Get Task User Assignments

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/user_assignments"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "user_assignments",
      "attributes": {
        "created_at": "2021-11-11T13:25:53.910Z",
        "updated_at": "2021-11-15T10:30:33.415Z"
      },
      "relationships": {
        "user": {
          "data": {
            "id": "1",
            "type": "users"
          }
        },
        "user_role": {
          "data": {
            "id": "1",
            "type": "user_roles"
          }
        },
        "assignable": {
          "data": {
            "id": "1",
            "type": "tasks"
          }
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/user_assignments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/user_assignments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/user_assignments?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all users who are members of the specified task.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/user_assignments(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve users from
EXPERIMENT_ID The ID of the experiment to retrieve users from
TASK_ID The ID of the task to retrieve users from
INCLUDES can include user, user_roles, and assignable (on this endpoint assignable is a task)
FROM If present will filter task members corresponding timestamp above or equals value
TO If present will filter task members corresponding timestamp below or equals value

Get Task User Assignment

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/user_assignments/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "user_assignments",
      "attributes": {
        "created_at": "2021-11-11T13:25:53.910Z",
        "updated_at": "2021-11-15T10:30:33.415Z"
      },
      "relationships": {
        "user": {
          "data": {
            "id": "1",
            "type": "users"
          }
        },
        "user_role": {
          "data": {
            "id": "1",
            "type": "user_roles"
          }
        },
        "assignable": {
          "data": {
            "id": "1",
            "type": "tasks"
          }
        }
      }
    }
  ]
}

This endpoint retrieves a specific user who is a member of the specified task.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/user_assignments/<USER_ASSIGMENT_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve user from
EXPERIMENT_ID The ID of the experiment to retrieve user from
TASK_ID The ID of the task to retrieve user from
USER_ASSIGNMENT_ID The ID of the user assignment to retrieve
INCLUDES can include user, user_roles, and assignable (on this endpoint assignable is a task)

Update Task User Assignment attributes

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/user_assignment/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "type": "user_assignments",
          "attributes": {
            "user_role_id": "2"
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "user_assignments",
      "attributes": {
        "created_at": "2021-11-11T13:25:53.910Z",
        "updated_at": "2021-11-15T10:30:33.415Z"
      },
      "relationships": {
        "user": {
          "data": {
            "id": "1",
            "type": "users"
          }
        },
        "user_role": {
          "data": {
            "id": "1",
            "type": "user_roles"
          }
        },
        "assignable": {
          "data": {
            "id": "1",
            "type": "tasks"
          }
        }
      }
    }
  ]
}

This endpoint updates existing user assignment in the task. If submitted attributes are the same and no changes are made for the user assignment, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/user_assignments/<USER_ASSIGMENT_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve user assignment from
EXPERIMENT_ID The ID of the experiment to retrieve user from
TASK_ID The ID of the task to retrieve
USER_ASSIGNMENT_ID The ID of the user assignment

Request body

{
  "data": {
    "type": "user_assignments",
    "attributes": {
      "user_role_id": "2"
    }
  }
}

Task User Assignment attributes

Attribute Mandatory Description
user_role_id yes Role on the task

Task Assignment

Get Task Assignments

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/task_assignments"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "users",
      "attributes": {
        "full_name": "Sample User",
        "initials": "SU",
        "email": "sample@example.com",
        "created_at": "2022-05-26T12:47:01.586Z",
        "updated_at": "2022-05-27T08:19:54.704Z"
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/task_assignments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/task_assignments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/task_assignments?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all users who are assigned to the specified task.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/task_assignments(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve users from
EXPERIMENT_ID The ID of the experiment to retrieve users from
TASK_ID The ID of the task to retrieve users from
FROM If present will filter task assigned users corresponding timestamp above or equals value
TO If present will filter task assigned users corresponding timestamp below or equals value

Create Task Assignment

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/task_assignment/ \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "type": "task_assignments",
          "attributes": {
            "user_id": "1"
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "task_assignments",
    "attributes": {
      "created_at": "2021-11-11T13:25:53.910Z",
      "updated_at": "2021-11-15T10:30:33.415Z"
    },
    "relationships": {
      "user": {
        "data": {
          "id": "1",
          "type": "users"
        }
      },
      "tasks": {
        "data": {
          "id": "1",
          "type": "tasks"
        }
      }
    }
  }
}

This endpoint assign user to the task.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/task_assignments

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve user assignment from
EXPERIMENT_ID The ID of the experiment to retrieve user from
TASK_ID The ID of the task to retrieve

Request body

{
  "data": {
    "type": "task_assignments",
    "attributes": {
      "user_id": "2"
    }
  }
}

Task Assignment attributes

Attribute Mandatory Description
user_id yes Role on the task

Remove Task Assignment

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/task_assignment/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint unassign user from task

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/task_assignments/<USER_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve user assignment from
EXPERIMENT_ID The ID of the experiment to retrieve user from
TASK_ID The ID of the task to retrieve
USER_ID The ID of the user

Results V1(Deprecated)

Get Results (Deprecated)

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/results"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
    "data": [
        {
            "id": "1",
            "type": "results",
            "attributes": {
                "name": "Result 1",
                "archived": false
            },
            "relationships": {
                "user": {
                    "data": {
                        "id": "1",
                        "type": "users"
                    }
                },
                "text": {
                    "data": {
                        "id": "1",
                        "type": "result_texts"
                    }
                }
            }
        },
        {
            "id": "2",
            "type": "results",
            "attributes": {
                "name": "Result 2",
                "archived": false
            },
            "relationships": {
                "user": {
                    "data": {
                        "id": "1",
                        "type": "users"
                    }
                },
                "table": {
                    "data": {
                        "id": "1",
                        "type": "result_tables"
                    }
                }
            }
        },
        {
            "id": "3",
            "type": "results",
            "attributes": {
                "name": "Result 3",
                "archived": false,
            },
            "relationships": {
                "user": {
                    "data": {
                        "id": "1",
                        "type": "users"
                    }
                },
                "file": {
                    "data": {
                        "id": "1",
                        "type": "result_files"
                    }
                }
            }
        }
    ],
    "included": [
        {
            "id": "1",
            "type": "result_texts",
            "attributes": {
                "text": "Result 1 Text"
            }
        },
        {
            "id": "1",
            "type": "result_tables",
            "attributes": {
                "table_id": 1,
                "table_contents": <table-contents>,
                "metadata": {
                  "cells": [
                    {"col": 0, "row": 0, "className": ""},
                    {"col": 0, "row": 1, "className": ""}
                  ]
                }
            }
        },
        {
            "id": "1",
            "type": "result_files",
            "attributes": {
                "file_id": 1,
                "file_name": <file-name>,
                "file_size": 69,
                "url": <file-url>
            }
        }
    ],
    "links": {
        "self": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/results?page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "first": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/results?page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "prev": null,
        "next": null,
        "last": "http://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/results?page%5Bnumber%5D=1&page%5Bsize%5D=10"
    }
  }

This endpoint retrieves all results from the task. Texts, files and tables are included by default. If ?include=comments PATH parameter is provided, result comments are also included.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results(?include=<INCLUDES>&filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team
PROJECT_ID The ID of the project
EXPERIMENT_ID The ID of the experiment
TASK_ID The ID of the task
INCLUDES if set to comments, result comments are also included
FROM If present will filter task results corresponding timestamp above or equals value
TO If present will filter task results corresponding timestamp below or equals value

Get Result (Deprecated)

curl "https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/results/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "results",
    "attributes": {
      "name": "Result 1",
      "archived": false
    },
    "relationships": {
      "user": {
        "data": {
          "id": "1",
          "type": "users"
        }
      },
      "text": {
        "data": {
          "id": "1",
          "type": "result_texts"
        }
      }
    }
  },
  "included": [
    {
      "id": "1",
      "type": "result_texts",
      "attributes": {
        "text": "Result 1 Text"
      }
    }
  ]
}

This endpoint retrieves specific result. Text, file or table is included by default. If ?include=comments PATH parameter is provided, result comments are also included.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<ID>(?include=<INCLUDES>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team
PROJECT_ID The ID of the project
EXPERIMENT_ID The ID of the experiment
TASK_ID The ID of the task
ID The ID of the result
INCLUDES if set to comments, result comments are also included

Create Result (Deprecated)

with Text Result and TinyMCE images

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/results \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
      "type": "results",
      "attributes": {
        "name": "Result 1"
      }
    },
    "included": [
      {
        "type": "result_texts",
        "attributes": {
          "text": "Result text 1 [~tiny_mce_id:a1]"
        }
      },
      {
        "type": "tiny_mce_assets",
        "attributes": {
          "file_data": "data:image/png;base64,qwerty123456...",
          "file_token": "a1",
          "file_name": "test.png"
        }
      }
    ]
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "results",
    "attributes": {
      "name": "Result 1",
      "archived": false
    },
    "relationships": {
      "user": {
        "data": {
          "id": "1",
          "type": "users"
        }
      },
      "text": {
        "data": {
          "id": "1",
          "type": "result_texts"
        }
      }
    }
  },
  "included": [
    {
      "id": "1",
      "type": "result_texts",
      "attributes": {
        "text": "Result [~tiny_mce_id:1]"
      }
    }
  ]
}

This endpoint creates new result, also result text can be added inside "included" section in the same request along with TinyMCE images. Please reference to the sample request.

Images should be base64 encoded in such format: data:image/png;base64,<FILE_CONTENT>, where FILE_CONTENT is base64 encoded image file. It should be referenced inside result text with unique token using this format: [~tiny_mce_id:<TOKEN>]. Token should be string without special symbols.

with File Result

curl -X POST \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/results \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
      "attributes": {
        "name": "My Result"
      },
      "type": "results"
    },
    "included": [
      {
        "attributes": {
          "file_name": "my_file.png",
          "file_type": "image/png",
          "file_data": "Base64EncodedData"
        },
        "type": "result_files"
      }
    ]
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "results",
    "attributes": {
      "name": "My Result",
      "archived": false
    },
    "relationships": {
      "user": {
        "data": {
          "id": "1",
          "type": "users"
        }
      },
      "file": {
        "data": {
          "id": "1",
          "type": "result_files"
        }
      }
    }
  },
  "included": [
    {
      "id": "1",
      "type": "result_files",
      "attributes": {
        "file_id": "1",
        "file_name": "my_file.png",
        "file_size": "4213",
        "url": "/rails/active_storage/blobs/<asset_signed_id>/my_file?disposition=attachment"
      }
    }
  ]
}

This endpoint creates new result, also result file can be added inside "included" section in the same request. Please reference to the sample request.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results

URL Parameters

Parameter Description
TEAM_ID The ID of the team
PROJECT_ID The ID of the project
EXPERIMENT_ID The ID of the experiment
TASK_ID The ID of the task

Request body with ResultText

{
  "data": {
    "type": "results",
    "attributes": {
      "name": "Result 1"
    }
  },
  "included": [
    {
      "type": "result_texts",
      "attributes": {
        "text": "Result [~tiny_mce_id:a1]..."
      }
    },
    {
      "type": "tiny_mce_assets",
      "attributes": {
        "file_data": "data:image/png;base64,qwerty123456...",
        "file_token": "a1",
        "file_name": "test.png"
      }
    }
  ]
}

Request body with ResultFile

{
  "data": {
    "attributes": {
      "name": "Result1"
    },
    "type": "results"
  },
  "included": [
    {
      "attributes": {
        "file_name": "my_file.png",
        "file_type": "image/png",
        "file_data": "Base64EncodedData"
      },
      "type": "result_files"
    }
  ]
}

Result attributes

Attribute Mandatory Description
name yes Name of the result

Result text attributes

Attribute Mandatory Description
text yes Text of result

TinyMCE attributes

Attribute Mandatory Description
file_data yes Image file encoded in the string, "data:image/png;base64,"
file_token yes Unique token used for referencing inside result text
file_name yes Name of the file

Result file attributes

Attribute Mandatory Description
file_name yes File name
file_type yes MIME content type
file_data yes Base64 Encoded data

Update Result (Deprecated)

with File Result

curl -X PUT \
  https://<server-name>/api/v1/teams/1/projects/1/experiments/1/tasks/1/results/1 \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
      "data": {
        "attributes": {
          "name": "Result with new name"
        },
        "type": "results"
      },
      "included": [
        {
          "attributes": {
            "file_name": "new_file.png",
            "file_type": "image/png",
            "file_data": "Base64EncodedData"
          },
          "type": "result_files"
        }
      ]
    }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "results",
    "attributes": {
      "name": "Result with new name",
      "archived": false
    },
    "relationships": {
      "user": {
        "data": {
          "id": "1",
          "type": "users"
        }
      },
      "file": {
        "data": {
          "id": "1",
          "type": "result_files"
        }
      }
    }
  },
  "included": [
    {
      "id": "1",
      "type": "result_files",
      "attributes": {
        "file_id": "1",
        "file_name": "new_file.png",
        "file_size": "4213",
        "url": "/rails/active_storage/blobs/<asset_signed_id>/my_file?disposition=attachment"
      }
    }
  ]
}

This endpoint updates result, also result file can be added inside "included" section in the same request. Please reference to the sample request.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team
PROJECT_ID The ID of the project
EXPERIMENT_ID The ID of the experiment
TASK_ID The ID of the task
ID The ID of the result

Request body

{
  "data": {
    "attributes": {
      "name": "Result with ne name"
    },
    "type": "results"
  },
  "included": [
    {
      "attributes": {
        "file_name": "new_file.png",
        "file_type": "image/png",
        "file_data": "Base64EncodedData"
      },
      "type": "result_files"
    }
  ]
}

Result attributes

Attribute Mandatory Description
name yes Name of the result

Result file attributes

Attribute Mandatory Description
file_name yes File name
file_type yes MIME content type
file_data yes Base64 Encoded data

Task Results V2

Get Results

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "4196",
      "type": "results",
      "attributes": {
        "name": "Result name",
        "archived": false
      },
      "relationships": {
        "assets": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "result_texts": {
          "data": []
        },
        "comments": {
          "data": []
        }
      }
    },
    {
      "id": "4195",
      "type": "results",
      "attributes": {
        "name": "Result name",
        "archived": false
      },
      "relationships": {
        "assets": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "result_texts": {
          "data": []
        },
        "comments": {
          "data": []
        }
      }
    },
    {
      "id": "4194",
      "type": "results",
      "attributes": {
        "name": "Result name",
        "archived": false
      },
      "relationships": {
        "assets": {
          "data": []
        },
        "tables": {
          "data": []
        },
        "result_texts": {
          "data": []
        },
        "comments": {
          "data": []
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results?page%5Bnumber%5D=2&page%5Bsize%5D=10",
    "last": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results?page%5Bnumber%5D=4&page%5Bsize%5D=10"
  }
}

This endpoint retrieves results from specific task. It also supports inclusion of these elements: tables, result_texts, assets, comments. If ?include=comments PATH parameter is provided, result comments are also included.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results(?include=<INCLUDES>&filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team
PROJECT_ID The ID of the project
EXPERIMENT_ID The ID of the experiment
TASK_ID The ID of the task
INCLUDES if set to comments, result comments are also included
FROM If present will filter task results corresponding timestamp above or equals value
TO If present will filter task results corresponding timestamp below or equals value

Get Result

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "results",
    "attributes": {
      "name": "Result name",
      "archived": false
    },
    "relationships": {
      "assets": {
        "data": []
      },
      "tables": {
        "data": []
      },
      "result_texts": {
        "data": []
      },
      "comments": {
        "data": []
      }
    }
  }
}

This endpoint retrieves specific result from the task. It also supports inclusion of these elements: tables, result_texts, assets, comments. If ?include=comments PATH parameter is provided, result comments are also included.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<ID>(?include=<INCLUDES>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team
PROJECT_ID The ID of the project
EXPERIMENT_ID The ID of the experiment
TASK_ID The ID of the task
ID The ID of the result
INCLUDES if set to comments, result comments are also included

Create Result

curl -X POST \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "results",
        "attributes": {
            "name": "Result name"
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "results",
    "attributes": {
      "name": "Result name",
      "archived": false
    },
    "relationships": {
      "assets": {
        "data": []
      },
      "tables": {
        "data": []
      },
      "result_texts": {
        "data": []
      },
      "comments": {
        "data": []
      }
    }
  }
}

This endpoint creates new result in the task.

HTTP Request

POST https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve result from

Request body

{
  "data": {
    "type": "results",
    "attributes": {
      "name": "Result name"
    }
  }
}

Result attributes

Attribute Mandatory Description
name yes Name of the step

Update Result

curl -X PATCH \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "results",
          "attributes": {
            "name": "Result 2"
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "results",
    "attributes": {
      "name": "Result 2",
      "archived": false
    },
    "relationships": {
      "assets": {
        "data": []
      },
      "tables": {
        "data": []
      },
      "result_texts": {
        "data": []
      },
      "comments": {
        "data": []
      }
    }
  }
}

This endpoint updates existing result in the selected task. If submitted attributes are the same and no changes are made for the result, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve result from
ID The ID of the result

Request body

{
  "data": {
    "id": "1",
    "type": "results",
    "attributes": {
      "name": "Result 2"
    }
  }
}

Result attributes

Attribute Mandatory Description
name yes Name of the step

Delete Result

curl -X DELETE \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific result from the task. Only archived results can be deleted.

HTTP Request

DELETE https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve result from
ID The ID of the result

Result Attachments V2

Get Attachments

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/attachments"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "attachments",
      "attributes": {
        "file_name": "my_image1.png",
        "file_size": 132441,
        "file_type": "image/png",
        "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>/my_image1?disposition=attachment"
      },
      "relationships": {
        "result": {
          "data": {
            "id": "1",
            "type": "results"
          }
        }
      }
    },
    {
      "id": "2",
      "type": "attachments",
      "attributes": {
        "file_name": "my_image2.png",
        "file_size": 270369,
        "file_type": "image/png",
        "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>/my_image2?disposition=attachment"
      },
      "relationships": {
        "result": {
          "data": {
            "id": "1",
            "type": "results"
          }
        }
      }
    },
    {
      "id": "3",
      "type": "attachments",
      "attributes": {
        "file_name": "my_image3.png",
        "file_size": 91435,
        "file_type": "image/png",
        "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>/my_image3?disposition=attachment"
      },
      "relationships": {
        "result": {
          "data": {
            "id": "1",
            "type": "results"
          }
        }
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/attachments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/attachments?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/attachments?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves attachments from specific result.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<RESULT_ID>/attachments

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
RESULT_ID The ID of the result to retrieve attachments from

Get Attachment

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/attachments/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "attachments",
    "attributes": {
      "file_name": "my_image1",
      "file_size": 35038,
      "file_type": "image/png",
      "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>/my_image1?disposition=attachment"
    },
    "relationships": {
      "result": {
        "data": {
          "id": "1",
          "type": "results"
        }
      }
    }
  }
}

This endpoint retrieves specific attachment from the result.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<RESULT_ID>/attachments/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
RESULT_ID The ID of the result to retrieve attachment from
ID The ID of the attachment

Create Attachment

curl -X POST \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/attachments \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/json' \
  -d'{
    "data": {
      "attributes": {
        "file_name": "my_file.png",
        "file_type": "image/png",
        "file_data": "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAE0lEQVQIHWP8//8/AwMDExADAQAkBgMBOOSShwAAAABJRU5ErkJggg=='\''"
      },
      "type": "attachments"
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "attachments",
    "attributes": {
      "file_name": "my_image1.png",
      "file_size": 35038,
      "file_type": "image/png",
      "file_url": "http://<server-name>/rails/active_storage/blobs/<asset_signed_id>/my_image1.png?disposition=attachment"
    },
    "relationships": {
      "result": {
        "data": {
          "id": "1",
          "type": "results"
        }
      }
    }
  }
}

This endpoint uploads new attachment to the result.

HTTP Request

POST https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<RESULT_ID>/attachments

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
RESULT_ID The ID of the result to create attachment for

Request body

{
  "data": {
    "type": "attachments",
    "attributes": {
      "file_name": "my_file.png",
      "file_type": "image/png",
      "file_data": "Base64EncodedData"
    }
  }
}

Attachment attributes

Attribute Mandatory Description
file_name yes File name
file_type yes MIME content type
file_data yes Base64 Encoded data

Result tables V2

Get Tables

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/tables"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "tables",
      "attributes": {
        "name": "Table 1",
        "position": 0,
        "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
        "metadata": {
          "cells": [{"col": 0, "row": 0, "className": "htCenter"},
                    {"col": 0, "row": 1, "className": "htRight"},
                    {"col": 1, "row": 0, "className": "htLeft"},
                    {"col": 1, "row": 1, "className": "htJustify"}
                    {"col": 2, "row": 0, "className": "htMiddle htRight"},
                    {"col": 2, "row": 1, "className": "htBottom"}],
          "plateTemplate": true
        }
      }
    },
    {
      "id": "2",
      "type": "tables",
      "attributes": {
        "name": "Table 2",
        "position": 1,
        "contents": "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
        "metadata": {
          "cells": [{"col": 0, "row": 0, "className": "htCenter"},
                    {"col": 0, "row": 1, "className": "htRight"},
                    {"col": 1, "row": 0, "className": "htLeft"},
                    {"col": 1, "row": 1, "className": "htJustify"}
                    {"col": 2, "row": 0, "className": "htMiddle htRight"},
                    {"col": 2, "row": 1, "className": "htBottom"}]
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/tables?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/tables?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/tables?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves tables from specific result.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<RESULT_ID>/tables(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
RESULT_ID The ID of the result to retrieve tables from
FROM If present will filter result tables corresponding timestamp above or equals value
TO If present will filter result tables corresponding timestamp below or equals value

Get Table

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/tables/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "tables",
    "attributes": {
      "name": "Table 1",
      "position": 0,
      "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": "htCenter"},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": "htLeft"},
                  {"col": 1, "row": 1, "className": "htJustify"}
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
    }
  }
}

This endpoint retrieves specific table from the result.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<RESULT_ID>/tables/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
RESULT_ID The ID of the result to retrieve table from
ID The ID of the table

Create Table

curl -X POST \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/tables \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "tables",
        "attributes": {
            "name": "New table",
            "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": ""},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": ""},
                  {"col": 1, "row": 1, "className": "htJustify"},
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "3",
    "type": "tables",
    "attributes": {
      "name": "New table",
      "position": 0,
      "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": ""},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": ""},
                  {"col": 1, "row": 1, "className": "htJustify"}
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
    }
  }
}

This endpoint creates new table in the result.

HTTP Request

POST https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<RESULT_ID>/tables

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
RESULT_ID The ID of the result to create table for

Request body

{
  "data": {
    "type": "tables",
    "attributes": {
      "name": "New table",
            "contents":  "{\"data\":[[\"1\",\"2\",\"3\"],[\"4\",\"5\",\"6\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": ""},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": ""},
                  {"col": 1, "row": 1, "className": "htJustify"}
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
    }
  }
}

Table attributes

Attribute Mandatory Description
name yes Name of the table
contents no Serialized JSON representation of the table data
metadata no JSON representation of the table metadata. cells represent the alignment of the specific table cell. Available className are htCenter, htRight, htLeft, htJustify for horizontal alignment, and htTop, htMiddle, htBottom for vertical alignment. plateTemplate field mark if table is a plate template

Update Table

curl -X PATCH \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/tables/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "tables",
          "attributes": {
            "name": "Table 2",
            "contents":  "{\"data\":[[\"6\",\"5\",\"4\"],[\"3\",\"2\",\"1\"]]}",
            "metadata": {
              "cells": [{"col": 0, "row": 0, "className": ""},
                        {"col": 0, "row": 1, "className": "htRight"},
                        {"col": 1, "row": 0, "className": ""},
                        {"col": 1, "row": 1, "className": "htJustify"}
                        {"col": 2, "row": 0, "className": "htMiddle htRight"},
                        {"col": 2, "row": 1, "className": "htBottom"}],
              "plateTemplate": true
            }
          }
      }
  }'

The above command returns JSON structured like this:

{
    "data": {
      "id": "1",
      "type": "tables",
      "attributes": {
        "name": "Table 2",
        "position": 0,
        "contents":  "{\"data\":[[\"6\",\"5\",\"4\"],[\"3\",\"2\",\"1\"]]}",
        "metadata": {
          "cells": [{"col": 0, "row": 0, "className": ""},
                    {"col": 0, "row": 1, "className": "htRight"},
                    {"col": 1, "row": 0, "className": ""},
                    {"col": 1, "row": 1, "className": "htJustify"}
                    {"col": 2, "row": 0, "className": "htMiddle htRight"},
                    {"col": 2, "row": 1, "className": "htBottom"}],
          "plateTemplate": true
        }
      }
    }
}

This endpoint updates existing table in the selected result. If submitted attributes are the same and no changes are made for the table, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<RESULT_ID>/tables/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
RESULT_ID The ID of the result to retrieve table from
ID The ID of the table

Request body

{
  "data": {
    "id": "1",
    "type": "tables",
    "attributes": {
      "name": "Table 2",
      "contents":  "{\"data\":[[\"6\",\"5\",\"4\"],[\"3\",\"2\",\"1\"]]}",
      "metadata": {
        "cells": [{"col": 0, "row": 0, "className": ""},
                  {"col": 0, "row": 1, "className": "htRight"},
                  {"col": 1, "row": 0, "className": ""},
                  {"col": 1, "row": 1, "className": "htJustify"}
                  {"col": 2, "row": 0, "className": "htMiddle htRight"},
                  {"col": 2, "row": 1, "className": "htBottom"}],
        "plateTemplate": true
      }
    }
  }
}

Table attributes

Attribute Mandatory Description
name no Name of the table
contents no Serialized JSON representation of the table data
metadata no JSON representation of the table metadata. cells represent the alignment of the specific table cell. Available className are htCenter, htRight, htLeft, htJustify for horizontal alignment, and htTop, htMiddle, htBottom for vertical alignment. plateTemplate field mark if table is a plate template

Delete Table

curl -X DELETE \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/tables/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific table from the result.

HTTP Request

DELETE https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<RESULT_ID>/tables/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
RESULT_ID The ID of the result to retrieve table from
ID The ID of the table

Result texts V2

Get texts

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/texts"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "result_texts",
      "attributes": {
        "text": "<p>Some text.</p>"
      }
    },
    {
      "id": "2",
      "type": "result_texts",
      "attributes": {
        "text": "<p>Some text.</p>"
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/texts?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/texts?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/texts?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves texts from specific result.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<RESULT_ID>/texts(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
RESULT_ID The ID of the result to retrieve texts from
FROM If present will filter results' text, corresponding timestamp above or equals value
TO If present will filter results' text, corresponding timestamp below or equals value

Get result text

curl "https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/texts/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "result_texts",
    "attributes": {
      "text": "<p>Some text.</p>"
    }
  }
}

This endpoint retrieves specific text from the result.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<RESULT_ID>/texts/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
RESULT_ID The ID of the result to retrieve texts from
ID The ID of the text

Create result text

curl -X POST \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/texts \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "result_texts",
        "attributes": {
            "text": "<p>Some text.</p>"
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "3",
    "type": "result_texts",
    "attributes": {
      "text": "<p>Some text.</p>"
    }
  }
}

This endpoint creates new text in the result.

HTTP Request

POST https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<RESULT_ID>/texts/

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
RESULT_ID The ID of the result to create texts in

Request body

{
  "data": {
    "type": "result_texts",
    "attributes": {
      "text": "<p>Some text.</p>"
    }
  }
}

Result text attributes

Attribute Mandatory Description
text yes String representation of the text data

Update result text

curl -X PATCH \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/texts/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
        "data": {
          "id": "1",
          "type": "result_texts",
          "attributes": {
            "text":  "<p>Some text.</p>"
          }
      }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "result_texts",
    "attributes": {
      "text": "<p>Some text.</p>"
    }
  }
}

This endpoint updates existing Text in the selected result. If submitted attributes are the same and no changes are made for the text, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<RESULT_ID>/texts/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
RESULT_ID The ID of the result to retrieve texts from
ID The ID of the text

Request body

{
  "data": {
    "id": "1",
    "type": "result_texts",
    "attributes": {
      "text": "<p>Some text.</p>"
    }
  }
}

Result text attributes

Attribute Mandatory Description
text yes String representation of the text data

Delete result text

curl -X DELETE \
  https://<server-name>/api/v2/teams/1/projects/1/experiments/1/tasks/1/results/1/texts/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific text from the result.

HTTP Request

DELETE https://<server-name>/api/v2/teams/<TEAM_ID>/projects/<PROJECT_ID>/experiments/<EXPERIMENT_ID>/tasks/<TASK_ID>/results/<RESULT_ID>/texts/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve experiment from
EXPERIMENT_ID The ID of the experiment to retrieve task from
TASK_ID The ID of the task to retrieve protocol from
RESULT_ID The ID of the result to retrieve texts from
ID The ID of the text

Reports

Get Reports

curl "http://<server-name>/api/v1/teams/1/projects/1/reports"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "reports",
      "attributes": {
        "name": "Report 1",
        "description": "My report",
        "pdf_file_size": 1234,
        "pdf_file_url": "http://example.com/report.pdf",
        "docx_file_size": 1234,
        "docx_file_url": "http://example.com/report.docx"
      },
      "relationships": {
        "user": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v1/teams/1/projects/1/reports?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/projects/1/reports?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "http://<server-name>/api/v1/teams/1/projects/1/reports?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves reports from specific project. PDF and DOCX attributes will be included only if files are generated.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/reports(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve reports from
FROM If present will filter project reports corresponding timestamp above or equals value
TO If present will filter project reports corresponding timestamp below or equals value

Get Report

curl "http://<server-name>/api/v1/teams/1/projects/1/reports/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "reports",
    "attributes": {
      "name": "Report 1",
      "description": "My report",
      "pdf_file_size": 1234,
      "pdf_file_url": "http://example.com/report.pdf",
      "docx_file_size": 1234,
      "docx_file_url": "http://example.com/report.docx"
    },
    "relationships": {
      "user": {
        "data": {
          "id": "1",
          "type": "users"
        }
      }
    }
  },
  "included": [
    {
      "id": "1",
      "type": "users",
      "attributes": {
        "full_name": "Admin",
        "initials": "A",
        "email": "admin@scinote.net",
        "avatar_url": "http://example.com/avatar.png",
        "avatar_file_size": 16181,
        "avatar_file_name": "avatar.png"
      }
    }
  ]
}

This endpoint retrieves a specific report from specific project. PDF and DOCX attributes will be included only if files are generated.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/projects/<PROJECT_ID>/reports/<REPORT_ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
PROJECT_ID The ID of the project to retrieve report from
REPORT_ID The ID of the report to retrieve

Protocol templates

Get Protocol templates

curl "https://<server-name>/api/v1/teams/1/protocol_templates"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "2",
      "type": "protocols",
      "attributes": {
        "name": "Protocol name",
        "authors": null,
        "description": null,
        "protocol_type": "in_repository_published_version",
        "created_at": "2023-03-27T12:32:41.387Z",
        "updated_at": "2023-03-27T12:33:23.481Z",
        "version_number": 1,
        "version_comment": "",
        "published_on": "2023-03-22T13:48:58.226Z",
        "archived": false
      },
      "relationships": {
        "parent": {
          "data": {
            "id": "1",
            "type": "protocols"
          }
        },
        "linked_tasks": {
          "data": [
            {
              "id": "1",
              "type": "tasks"
            }
          ]
        },
        "published_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    }
  ],
  "links": {
    "self": "http://<server-name>/api/v1/teams/1/protocol_templates/?page%5Bnumber%5D=1\u0026page%5Bsize%5D=10",
    "first": "http://<server-name>/api/v1/teams/1/protocol_templates/?page%5Bnumber%5D=1\u0026page%5Bsize%5D=10",
    "prev": null,
    "next": "http://<server-name>/api/v1/teams/1/protocol_templates/?page%5Bnumber%5D=2\u0026page%5Bsize%5D=10",
    "last": "http://<server-name>/api/v1/teams/1/protocol_templates/?page%5Bnumber%5D=3\u0026page%5Bsize%5D=10"
  }
}

This endpoint retrieves all latest protocol templates versions from the specified team.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/protocol_templates(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
FROM If present will filter protocol templates corresponding timestamp above or equals value
TO If present will filter protocol templates corresponding timestamp below or equals value

Get Protocol template

curl "https://<server-name>/api/v1/teams/1/protocol_templates/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "2",
    "type": "protocols",
    "attributes": {
      "name": "Protocol name",
      "authors": null,
      "description": null,
      "protocol_type": "in_repository_published_version",
      "created_at": "2023-03-27T12:32:41.387Z",
      "updated_at": "2023-03-27T12:33:23.481Z",
      "version_number": 1,
      "version_comment": "",
      "published_on": "2023-03-22T13:48:58.226Z",
      "archived": false
    },
    "relationships": {
      "parent": {
        "data": {
          "id": "1",
          "type": "protocols"
        }
      },
      "linked_tasks": {
        "data": [
          {
            "id": "1",
            "type": "tasks"
          }
        ]
      },
      "published_by": {
        "data": {
          "id": "1",
          "type": "users"
        }
      }
    }
  }
}

This endpoint retrieves specific protocol template from the specified team.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/protocol_templates/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve project from
ID The ID of the protocol template

Linked tasks are visible in the response only for a specific version of a protocol template. In order to get linked tasks you must use the ID of the version to which the tasks are linked to.

Inventories

Get Inventories

curl "https://<server-name>/api/v1/teams/1/inventories"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "inventories",
      "attributes": {
        "name": "Inventory 1"
      },
      "relationships": {
        "created_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    },
    {
      "id": "2",
      "type": "inventories",
      "attributes": {
        "name": "Inventory 2"
      },
      "relationships": {
        "created_by": {
          "data": {
            "id": "2",
            "type": "users"
          }
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/inventories?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/inventories?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/inventories?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all active inventories from the specified team.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/inventories(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventories from
FROM If present will filter inventories corresponding timestamp above or equals value
TO If present will filter inventories corresponding timestamp below or equals value

Get Inventory

curl "https://<server-name>/api/v1/teams/1/inventories/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
    "data": {
        "id": "1",
        "type": "inventories",
        "attributes": {
            "name": "Inventory 1"
        },
        "relationships": {
            "created_by": {
                "data": {
                    "id": "1",
                    "type": "users"
                }
            }
        }
    },
    "included": [
        {
            "id": "1",
            "type": "users",
            "attributes": {
                <user-attributes>
            }
        }
    ]
}

This endpoint retrieves a specific inventory.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
ID The ID of the inventory to retrieve

Create Inventory

curl -X POST \
  https://<server-name>/api/v1/teams/1/inventories \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "inventories",
        "attributes": {
            "name": "Samples"
        }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventories",
    "attributes": {
      "name": "Samples"
    }
  },
  "relationships": {
    "created_by": {
      "data": {
        "id": "1",
        "type": "users"
      }
    }
  }
}

This endpoint creates new inventory in the team.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/inventories

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from

Request body

{
  "data": {
    "type": "inventories",
    "attributes": {
      "name": "Samples"
    }
  }
}

Inventory attributes

Attribute Mandatory Description
name yes Name of the column

Update Inventory

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/inventories/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "id": "1",
        "type": "inventories",
        "attributes": {
            "name": "Samples 2"
        }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventories",
    "attributes": {
      "name": "Samples 2"
    },
    "relationships": {
      "created_by": {
        "data": {
          "id": "1",
          "type": "users"
        }
      }
    }
  }
}

This endpoint updates existing inventory in the selected team. If submitted attributes are the same and no changes are made for the inventory, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
ID The ID of the inventory

Request body

{
  "data": {
    "id": "1",
    "type": "inventories",
    "attributes": {
      "name": "Samples 2"
    }
  }
}

Inventory attributes

Attribute Mandatory Description
name yes Name of the inventory

Delete Inventory

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/inventories/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific inventory.

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
ID The ID of the inventory

Inventory Columns

Get Columns

curl "https://<server-name>/api/v1/teams/1/inventories/1/columns"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "inventory_columns",
      "attributes": {
        "name": "Text Column",
        "data_type": "text"
      }
    },
    {
      "id": "2",
      "type": "inventory_columns",
      "attributes": {
        "name": "File Column",
        "data_type": "file"
      }
    },
    {
      "id": "3",
      "type": "inventory_columns",
      "attributes": {
        "name": "List Column",
        "data_type": "list"
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/inventories/1/columns?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/inventories/1/columns?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/inventories/1/columns?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves columns from specific inventory.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
FROM If present will filter inventory columns corresponding timestamp above or equals value
TO If present will filter inventory columns corresponding timestamp below or equals value

Get Column

curl "https://<server-name>/api/v1/teams/1/inventories/1/columns/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_columns",
    "attributes": {
      "name": "Sample type",
      "data_type": "list"
    },
    "relationships": {
      "inventory_list_items": {
        "data": [
          {
            "id": "1",
            "type": "inventory_list_items"
          },
          {
            "id": "2",
            "type": "inventory_list_items"
          }
        ]
      }
    }
  },
  "included": [
    {
      "id": "1",
      "type": "inventory_list_items",
      "attributes": {
        "data": "ASF"
      }
    },
    {
      "id": "2",
      "type": "inventory_list_items",
      "attributes": {
        "data": "GDD"
      }
    }
  ]
}

This endpoint retrieves specific column from inventory. For list type columns (list), related list items are also included.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
ID The ID of the column

Create Column

curl -X POST \
  https://<server-name>/api/v1/teams/1/inventories/1/columns \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "inventory_columns",
        "attributes": {
            "name": "Sample",
            "data_type": "number",
            "metadata": {
                "decimals": "2"
            }
        }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_columns",
    "attributes": {
      "name": "Sample",
      "data_type": "number",
      "metadata": {
        "decimals": "2"
      }
    }
  }
}

This endpoint creates new column in the inventory.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from

Request body

{
  "data": {
    "type": "inventory_columns",
    "attributes": {
      "name": "Sample",
      "data_type": "text"
    }
  }
}

Inventory column attributes

Attribute Mandatory Description
name yes Name of the column
data_type yes Data type of the column - one of the following: text, number, file, list, checklist, status, date, time, stock, date_time, date_range, time_range, date_time_range
metadata no Metadata for specific data type (now available only for number and stock data_type)

Inventory column metadata attribute for number data_type

Attribute Mandatory Description
decimals no Number of decimals (only for number and stock data_type)

Update Column

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/inventories/1/columns/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "id": "1",
        "type": "inventory_columns",
        "attributes": {
            "name": "Sample 2",
            "metadata": {
                "decimals": "2"
            }
        }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_columns",
    "attributes": {
      "name": "Sample 2",
      "data_type": "number"
    }
  }
}

This endpoint updates existing list item in selected inventory column. Updating of data_type attribute is not permitted. If submitted attributes are the same and no changes are made for the item, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
ID The ID of the column

Request body

{
  "data": {
    "id": "1",
    "type": "inventory_columns",
    "attributes": {
      "name": "Sample 2"
    }
  }
}

Inventory column attributes

Attribute Mandatory Description
name no Name of the column
metadata no Metadata for specific data type (now available only for number and stock data_type)

Inventory column metadata attribute for number data_type

Attribute Mandatory Description
decimals no Number of decimals (only for number and stock data_type)

Delete Column

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/inventories/1/columns/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific column from the inventory.

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
ID The ID of the column

Inventory Column List Items

Get List Items

curl "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/list_items"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "inventory_list_items",
      "attributes": {
        "data": "Item 1"
      }
    },
    {
      "id": "2",
      "type": "inventory_list_items",
      "attributes": {
        "data": "Item 2"
      }
    },
    {
      "id": "3",
      "type": "inventory_list_items",
      "attributes": {
        "data": "Item 3"
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/list_items?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/list_items?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/list_items?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves list items from specific inventory column, only valid for columns with 'list' data type.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/list_items

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with list data type) in specified inventory to retrieve list items from
FROM If present will filter inventory column list items corresponding timestamp above or equals value
TO If present will filter inventory column list items corresponding timestamp below or equals value

Get List Item

curl "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/list_items/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_list_items",
    "attributes": {
      "data": "Item 1"
    }
  }
}

This endpoint retrieves specific list item from inventory column, only valid for columns with 'list' data type.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/list_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with list data type) in specified inventory to retrieve list items from
ID The ID of the list item

Create List Item

curl -X POST \
  https://<server-name>/api/v1/teams/1/inventories/1/columns/1/list_items \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "inventory_list_items",
        "attributes": {
            "data": "Item 1"
        }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_list_items",
    "attributes": {
      "data": "Item 1"
    }
  }
}

This endpoint creates new list item in selected inventory column, only valid for columns with 'list' data type.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/list_items

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with list data type) in specified inventory to retrieve list items from

Request body

{ "data": { "type": "inventory_list_items", "attributes": { "data": "Item 1" } } }

Attribute Mandatory Description
data yes Text value of the list item

Update List Item

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/inventories/1/columns/1/list_items/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "id": "1",
        "type": "inventory_list_items",
        "attributes": {
            "data": "Item 2"
        }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_list_items",
    "attributes": {
      "data": "Item 2"
    }
  }
}

This endpoint updates existing list item in selected inventory column. If submitted attributes are the same and no changes are made for the item, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/list_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with list data type) in specified inventory to retrieve list items from
ID The ID of the list item

Request body

{ "data": { "id": "1", "type": "inventory_list_items", "attributes": { "data": "Item 2" } } }

Attribute Mandatory Description
data yes Text value of the list item

Delete List Item

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/inventories/1/columns/1/list_items/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific list item from inventory column.

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/list_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with list data type) in specified inventory to retrieve list items from
ID The ID of the list item

Inventory Column Status Items

Get Status Items

curl "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/status_items"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "inventory_status_items",
      "attributes": {
        "status": "status 1",
        "icon": "icon 1"
      }
    },
    {
      "id": "2",
      "type": "inventory_status_items",
      "attributes": {
        "status": "status 2",
        "icon": "icon 2"
      }
    },
    {
      "id": "3",
      "type": "inventory_status_items",
      "attributes": {
        "status": "status 3",
        "icon": "icon 3"
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/status_items?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/status_items?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/status_items?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves status items from specific inventory column, only valid for columns with 'status' data type.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/status_items(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with status data type) in specified inventory to retrieve status items from
FROM If present will filter inventory column status items corresponding timestamp above or equals value
TO If present will filter inventory column status items corresponding timestamp below or equals value

Get Status Item

curl "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/status_items/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_status_items",
    "attributes": {
      "data": "status 1",
      "icon": "icon 1"
    }
  }
}

This endpoint retrieves specific status item from inventory column, only valid for columns with 'status' data type.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/status_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with status data type) in specified inventory to retrieve status items from
ID The ID of the status item

Create Status Item

curl -X POST \
  https://<server-name>/api/v1/teams/1/inventories/1/columns/1/status_items \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "inventory_status_items",
        "attributes": {
            "status": "status 1",
            "icon": "icon"
        }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_status_items",
    "attributes": {
      "status": "status 1",
      "icon": "icon"
    }
  }
}

This endpoint creates new status item in selected inventory column, only valid for columns with 'status' data type.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/status_items

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with status data type) in specified inventory to retrieve status items from

Request body

{ "data": { "type": "inventory_status_items", "attributes": { "status": "status 1", "icon": "icon" } } }

Attribute Mandatory Description
status yes Name of the status item
icon yes Icon of the status item

Update Status Item

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/inventories/1/columns/1/status_items/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "id": "1",
        "type": "inventory_status_items",
        "attributes": {
            "status": "status 2"
        }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_status_items",
    "attributes": {
      "status": "status 2",
      "icon": "icon"
    }
  }
}

This endpoint updates existing status item in selected inventory column. If submitted attributes are the same and no changes are made for the item, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/status_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with status data type) in specified inventory to retrieve status items from
ID The ID of the status item

Request body

{ "data": { "id": "1", "type": "inventory_status_items", "attributes": { "status": "status 2" } } }

Attribute Mandatory Description
status yes Name of the status item

Delete Status Item

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/inventories/1/columns/1/status_items/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific status item from inventory column.

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/status_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with status data type) in specified inventory to retrieve status items from
ID The ID of the status item

Inventory Column Checklist Items

Get Checklist Items

curl "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/checklist_items"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "inventory_checklist_items",
      "attributes": {
        "data": "Item 1"
      }
    },
    {
      "id": "2",
      "type": "inventory_checklist_items",
      "attributes": {
        "data": "Item 2"
      }
    },
    {
      "id": "3",
      "type": "inventory_checklist_items",
      "attributes": {
        "data": "Item 3"
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/checklist_items?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/checklist_items?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/checklist_items?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves checklist items from specific inventory column, only valid for columns with 'checklist' data type.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/checklist_items(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with checklist data type) in specified inventory to retrieve checklist items from
FROM If present will filter inventory column checklist items corresponding timestamp above or equals value
TO If present will filter inventory column checklist items corresponding timestamp below or equals value

Get Checklist Item

curl "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/checklist_items/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_checklist_items",
    "attributes": {
      "data": "Item 1"
    }
  }
}

This endpoint retrieves specific checklist item from inventory column, only valid for columns with 'checklist' data type.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/checklist_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with checklist data type) in specified inventory to retrieve checklist items from
ID The ID of the checklist item

Create Checklist Item

curl -X POST \
  https://<server-name>/api/v1/teams/1/inventories/1/columns/1/checklist_items \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "inventory_checklist_items",
        "attributes": {
            "data": "Item 1"
        }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_checklist_items",
    "attributes": {
      "data": "Item 1"
    }
  }
}

This endpoint creates new checklist item in selected inventory column, only valid for columns with 'checklist' data type.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/checklist_items

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with checklist data type) in specified inventory to retrieve checklist items from

Request body

{ "data": { "type": "inventory_checklist_items", "attributes": { "data": "Item 1" } } }

Attribute Mandatory Description
data yes Text value of the checklist item

Update Checklist Item

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/inventories/1/columns/1/checklist_items/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "id": "1",
        "type": "inventory_checklist_items",
        "attributes": {
            "data": "Item 2"
        }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_checklist_items",
    "attributes": {
      "data": "Item 2"
    }
  }
}

This endpoint updates existing checklist item in selected inventory column. If submitted attributes are the same and no changes are made for the item, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/checklist_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with checklist data type) in specified inventory to retrieve checklist items from
ID The ID of the checklist item

Request body

{ "data": { "id": "1", "type": "inventory_checklist_items", "attributes": { "data": "Item 2" } } }

Attribute Mandatory Description
data yes Text value of the checklist item

Delete Checklist Item

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/inventories/1/columns/1/checklist_items/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific checklist item from inventory column.

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/checklist_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with checklist data type) in specified inventory to retrieve checklist items from
ID The ID of the checklist item

Inventory Column Stock Unit Items

Get Stock Unit Items

curl "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/stock_unit_items"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "inventory_stock_unit_items",
      "attributes": {
        "data": "Item 1"
      }
    },
    {
      "id": "2",
      "type": "inventory_stock_unit_items",
      "attributes": {
        "data": "Item 2"
      }
    },
    {
      "id": "3",
      "type": "inventory_stock_unit_items",
      "attributes": {
        "data": "Item 3"
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/stock_unit_items?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/stock_unit_items?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/stock_unit_items?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves stock unit items from specific inventory column, only valid for columns with 'stock' data type.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/stock_unit_items(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with stock data type) in specified inventory to retrieve stock unit items from
FROM If present will filter inventory column stock unit items corresponding timestamp above or equals value
TO If present will filter inventory column stock unit items corresponding timestamp below or equals value

Get Stock Unit Item

curl "https://<server-name>/api/v1/teams/1/inventories/1/columns/1/stock_unit_items/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_stock_unit_items",
    "attributes": {
      "data": "Item 1"
    }
  }
}

This endpoint retrieves specific stock unit item from inventory column, only valid for columns with 'stock' data type.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/stock_unit_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with stock data type) in specified inventory to retrieve stock unit items from
ID The ID of the stock unit item

Create Stock Unit Item

curl -X POST \
  https://<server-name>/api/v1/teams/1/inventories/1/columns/1/stock_unit_items \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "type": "inventory_stock_unit_items",
        "attributes": {
            "data": "Item 1"
        }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_stock_unit_items",
    "attributes": {
      "data": "Item 1"
    }
  }
}

This endpoint creates new stock unit item in selected inventory column, only valid for columns with 'stock' data type.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/stock_unit_items

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with stock data type) in specified inventory to retrieve stock unit items from

Request body

{ "data": { "type": "inventory_stock_unit_items", "attributes": { "data": "Item 1" } } }

Attribute Mandatory Description
data yes Text value of the stock unit item

Update Stock Unit Item

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/inventories/1/columns/1/stock_unit_items/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "id": "1",
        "type": "inventory_stock_unit_items",
        "attributes": {
            "data": "Item 2"
        }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_stock_unit_items",
    "attributes": {
      "data": "Item 2"
    }
  }
}

This endpoint updates existing stock unit item in selected inventory column. If submitted attributes are the same and no changes are made for the item, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/stock_unit_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with stock data type) in specified inventory to retrieve stock unit items from
ID The ID of the stock unit item

Request body

{ "data": { "id": "1", "type": "inventory_stock_unit_items", "attributes": { "data": "Item 2" } } }

Attribute Mandatory Description
data yes Text value of the stock unit item

Delete Stock Unit Item

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/inventories/1/columns/1/stock_unit_items/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific stock unit item from inventory column.

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/columns/<COLUMN_ID>/stock_unit_items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve column from
COLUMN_ID The ID of the column(with stock data type) in specified inventory to retrieve stock unit items from
ID The ID of the stock unit item

Inventory Items

Get Items

curl "https://<server-name>/api/v1/teams/1/inventories/1/items"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
    "data": [
        {
            "id": "1",
            "type": "inventory_items",
            "attributes": {
                "name": "Item 1"
            }
        },
        {
            "id": "2",
            "type": "inventory_items",
            "attributes": {
                "name": "Item 2"
            },
            "relationships": {
                "inventory_cells": {
                    "data": [
                        {
                            "id": "1",
                            "type": "inventory_cells"
                        },
                        {
                            "id": "2",
                            "type": "inventory_cells"
                        }
                    ]
                }
            }
        }
    ]
    "links": {
        "self": "http://<server-name>/api/v1/teams/1/inventories/1/items?page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "first": "http://<server-name>/api/v1/teams/1/inventories/1/items?page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "prev": null,
        "next": "http://<server-name>/api/v1/teams/1/inventories/1/items?page%5Bnumber%5D=2&page%5Bsize%5D=10",
        "last": "http://<server-name>/api/v1/teams/1/inventories/1/items?page%5Bnumber%5D=2&page%5Bsize%5D=10"
    }
}

This endpoint retrieves active items from specific inventory. If ?include=inventory_cells PATH parameter is provided, the inventory cells of the items are also included; otherwise, they are ignored.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items(?include=<INCLUDE_CELLS>&filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve items from
INCLUDE_CELLS if set to inventory_cells, inventory cells of the items are also included
FROM If present will filter inventory items corresponding timestamp above or equals value
TO If present will filter inventory items corresponding timestamp below or equals value

Get Item

curl "https://<server-name>/api/v1/teams/1/inventories/1/items/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
    "data": {
        "id": "1",
        "type": "inventory_items",
        "attributes": {
            "name": "POY/3"
        },
        "relationships": {
            "inventory_cells": {
                "data": [
                    {
                        "id": "1",
                        "type": "inventory_cells"
                    },
                    {
                        "id": "2",
                        "type": "inventory_cells"
                    },
                    {
                        "id": "3",
                        "type": "inventory_cells"
                    }
                }
                ]
            }
        }
    },
    "included": [
        {
            "id": "1",
            "type": "inventory_cells",
            "attributes": {
                "value_type": "list",
                "value": {
                    "inventory_list_item_id": 1,
                    "inventory_list_item_name": "Potato leaves"
                },
                "column_id": 1
            }
        },
        {
            "id": "2",
            "type": "inventory_cells",
            "attributes": {
                "value_type": "text",
                "value": {
                    "text": "#6C159E"
                },
                "column_id": 2
            }
        },
        {
            "id": "3",
            "type": "inventory_cells",
            "attributes": {
                "value_type": "file",
                "value": {
                    "file_id": 1,
                    "file_name": <file-name>,
                    "file_size": 38157,
                    "url": <file-url>
                },
                "column_id": 3
            }
        }
    ]
}

This endpoint retrieves specific item from the inventory. Cells are included by default.

HTTP Request

GET https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve item from
ID The ID of the item

Create Item

curl -X POST \
  https://<server-name>/api/v1/teams/1/inventories/1/items \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
   "data": {
       "type": "inventory_items",
       "attributes": {
           "name": "POY/3"
       }
   },
   "included": [
       {
           "type": "inventory_cells",
           "attributes": {
               "value": 1,
               "column_id": 1
           }
       },
       {
           "type": "inventory_cells",
           "attributes": {
               "value": "#6C159E",
               "column_id": 2
           }
       }
   ]
 }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_items",
    "attributes": {
      "name": "POY/3"
    },
    "relationships": {
      "inventory_cells": {
        "data": [
          {
            "id": "1",
            "type": "inventory_cells"
          },
          {
            "id": "2",
            "type": "inventory_cells"
          }
        ]
      }
    }
  },
  "included": [
    {
      "id": "1",
      "type": "inventory_cells",
      "attributes": {
        "value_type": "list",
        "value": {
          "inventory_list_item_id": 1,
          "inventory_list_item_name": "Potato leaves"
        },
        "column_id": 1
      }
    },
    {
      "id": "2",
      "type": "inventory_cells",
      "attributes": {
        "value_type": "text",
        "value": {
          "text": "#6C159E"
        },
        "column_id": 2
      }
    }
  ]
}

This endpoint creates new item in the inventory, cells can be also added in 'included' section.

HTTP Request

POST https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory

Request body

{
  "data": {
    "type": "inventory_items",
    "attributes": {
      "name": "POY/3"
    }
  },
  "included": [
    {
      "type": "inventory_cells",
      "attributes": {
        "value": 1,
        "column_id": 1
      }
    },
    {
      "type": "inventory_cells",
      "attributes": {
        "value": "#6C159E",
        "column_id": 2
      }
    }
  ]
}

Inventory item attributes

Attribute Mandatory Description
name yes Name of the item

Inventory cell attributes

Attribute Mandatory Description
value yes Content of the cell, depends on column type
column_id yes ID of the column

Update Item

curl -X PATCH \
  https://<server-name>/api/v1/teams/1/inventories/1/items/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "id": "1",
        "type": "inventory_items",
        "attributes": {
            "name": "POY/4"
        }
    },
    "included": [
        {
            "id": "1",
            "type": "inventory_cells",
            "attributes": {
                "value": 2,
                "column_id": 1
            }
        },
        {
            "id": "2",
            "type": "inventory_cells",
            "attributes": {
                "value": "#6C159D",
                "column_id": 2
            }
        }
    ]
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_items",
    "attributes": {
      "name": "POY/4"
    },
    "relationships": {
      "inventory_cells": {
        "data": [
          {
            "id": "1",
            "type": "inventory_cells"
          },
          {
            "id": "2",
            "type": "inventory_cells"
          }
        ]
      }
    }
  },
  "included": [
    {
      "id": "1",
      "type": "inventory_cells",
      "attributes": {
        "value_type": "list",
        "value": {
          "inventory_list_item_id": 2,
          "inventory_list_item_name": "Tea leaves (1)"
        },
        "column_id": 1
      }
    },
    {
      "id": "2",
      "type": "inventory_cells",
      "attributes": {
        "value_type": "text",
        "value": {
          "text": "#6C159D"
        },
        "column_id": 2
      }
    }
  ]
}

This endpoint updates existing item in selected inventory. Also existing cells can be updated by adding them to 'included' section. If submitted attributes are the same and no changes are made for the item, server returns empty body with response code 204.

HTTP Request

PATCH https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve item from
ID The ID of the item

Request body

{
  "data": {
    "id": "1",
    "type": "inventory_items",
    "attributes": {
      "name": "POY/4"
    }
  },
  "included": [
    {
      "id": "1",
      "type": "inventory_cells",
      "attributes": {
        "value": 2,
        "column_id": 1
      }
    },
    {
      "id": "2",
      "type": "inventory_cells",
      "attributes": {
        "value": "#6C159D",
        "column_id": 2
      }
    }
  ]
}

Inventory item attributes

Attribute Mandatory Description
name no Name of the item

Inventory cell attributes

Attribute Mandatory Description
value yes Content of the cell, depends on column type
column_id yes ID of the column

Delete Item

curl -X DELETE \
  https://<server-name>/api/v1/teams/1/inventories/1/items/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific item from the inventory.

HTTP Request

DELETE https://<server-name>/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve item from
ID The ID of the item

Inventory Item Child Relationships

Get Inventory Item Child Relationships

curl \
  https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/child_relationships \
  -H 'Authorization: Bearer your_token_here' \
  -H 'Content-Type: application/json'

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "inventory_item_relationships",
      "relationships": {
        "parent": {
          "data": {
            "id": "1",
            "type": "inventory_items"
          }
        },
        "child": {
          "data": {
            "id": "2",
            "type": "inventory_items"
          }
        },
        "created_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        },
        "last_modified_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    },
    {
      "id": "2",
      "type": "inventory_item_relationships",
      "relationships": {
        "parent": {
          "data": {
            "id": "2",
            "type": "inventory_items"
          }
        },
        "child": {
          "data": {
            "id": "1",
            "type": "inventory_items"
          }
        },
        "created_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        },
        "last_modified_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/inventories/1/items/1/child_relationships?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/inventories/1/items/1/child_relationships?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/inventories/1/items/1/child_relationships?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all child relationships from the specified inventory item.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/child_relationships

URL Parameters

Parameter Description
TEAM_ID The ID of the team
INVENTORY_ID The ID of the inventory containing the item
ITEM_ID The ID of the item for which to delete the relationship

Get Inventory Item Child Relationship

curl \
  https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/child_relationships/<ID> \
  -H 'Authorization: Bearer your_token_here' \
  -H 'Content-Type: application/json'

The above command returns JSON structured like this:

{
    "data": {
      "id": "1",
      "type": "inventory_item_relationships",
      "relationships": {
        "parent": {
          "data": {
            "id": "1",
            "type": "inventory_items"
          }
        },
        "child": {
          "data": {
            "id": "2",
            "type": "inventory_items"
          }
        },
        "created_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        },
        "last_modified_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    }
}

This endpoint retrieves a specific child relationship from the specified inventory item.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/child_relationships/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team
INVENTORY_ID The ID of the inventory containing the item
ITEM_ID The ID of the item for which to delete the relationship
ID The ID of the relationship to show

Create Inventory Item Child Relationship

curl -X POST \
  https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/child_relationships \
  -H 'Authorization: Bearer your_token_here' \
  -H 'Content-Type: application/json' \
  -d '{
    "data": {
      "type": "inventory_item_relationships",
      "attributes": {
        "child_id": <CHILD_ID>
      }
    }
  }'

The above command returns JSON structured like this:

{
  {
    "data": {
      "id": "49",
      "type": "inventory_item_relationships",
      "relationships": {
        "parent": {
          "data": {
            "id": "1",
            "type": "inventory_items"
          }
        },
        "child": {
          "data": {
            "id": "2",
            "type": "inventory_items"
          }
        },
        "created_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        },
        "last_modified_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    }
  }
}

This endpoint creates a new child relationship with selected inventory item, identified by CHILD_ID attribute.

HTTP Request

POST https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/child_relationships

URL Parameters

Parameter Description
TEAM_ID The ID of the team
INVENTORY_ID The ID of the inventory containing the item
ITEM_ID The ID of the item for which to create the relationship

Request Body

{ "data": { "type": "inventory_item_relationships", "attributes": { "child_id": <CHILD_ID> } } }

Responses

Delete Inventory Item Relationship

curl -X DELETE \
  https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/child_relationships/<ID> \
  -H 'Authorization: Bearer your_token_here' \
  -H 'Content-Type: application/json'

The above command returns an empty body with status code 200

This endpoint deletes an existing relationship between inventory items.

HTTP Request

DELETE https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/child_relationships/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team
INVENTORY_ID The ID of the inventory containing the item
ITEM_ID The ID of the item for which to delete the relationship
ID The ID of the relationship to delete

Responses

Note: Replace server_name, TEAM_ID, INVENTORY_ID, ITEM_ID, CHILD_ID, and ID with actual values.

Inventory Item Parent Relationships

Get Inventory Item Parent Relationships

curl \
  https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/parent_relationships \
  -H 'Authorization: Bearer your_token_here' \
  -H 'Content-Type: application/json'

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "inventory_item_relationships",
      "relationships": {
        "parent": {
          "data": {
            "id": "1",
            "type": "inventory_items"
          }
        },
        "child": {
          "data": {
            "id": "2",
            "type": "inventory_items"
          }
        },
        "created_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        },
        "last_modified_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    },
    {
      "id": "2",
      "type": "inventory_item_relationships",
      "relationships": {
        "parent": {
          "data": {
            "id": "2",
            "type": "inventory_items"
          }
        },
        "child": {
          "data": {
            "id": "1",
            "type": "inventory_items"
          }
        },
        "created_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        },
        "last_modified_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    }
  ],
  "links": {
    "self": "https://<server-name>/api/v1/teams/1/inventories/1/items/1/parent_relationships?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://<server-name>/api/v1/teams/1/inventories/1/items/1/parent_relationships?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://<server-name>/api/v1/teams/1/inventories/1/items/1/parent_relationships?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves all parent relationships from the specified inventory item.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/parent_relationships

URL Parameters

Parameter Description
TEAM_ID The ID of the team
INVENTORY_ID The ID of the inventory containing the item
ITEM_ID The ID of the item for which to delete the relationship

Get Inventory Item Parent Relationship

curl \
  https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/parent_relationships/<ID> \
  -H 'Authorization: Bearer your_token_here' \
  -H 'Content-Type: application/json'

The above command returns JSON structured like this:

{
    "data": {
      "id": "1",
      "type": "inventory_item_relationships",
      "relationships": {
        "parent": {
          "data": {
            "id": "1",
            "type": "inventory_items"
          }
        },
        "child": {
          "data": {
            "id": "2",
            "type": "inventory_items"
          }
        },
        "created_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        },
        "last_modified_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    }
}

This endpoint retrieves a specific parent relationship from the specified inventory item.

HTTP Request

GET https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/parent_relationships/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team
INVENTORY_ID The ID of the inventory containing the item
ITEM_ID The ID of the item for which to delete the relationship
ID The ID of the relationship to show

Create Inventory Item Parent Relationship

curl -X POST \
  https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/parent_relationships \
  -H 'Authorization: Bearer your_token_here' \
  -H 'Content-Type: application/json' \
  -d '{
    "data": {
      "type": "inventory_item_relationships",
      "attributes": {
        "parent_id": <PARENT_ID>
      }
    }
  }'

The above command returns JSON structured like this:

{
  {
    "data": {
      "id": "49",
      "type": "inventory_item_relationships",
      "relationships": {
        "parent": {
          "data": {
            "id": "1",
            "type": "inventory_items"
          }
        },
        "child": {
          "data": {
            "id": "2",
            "type": "inventory_items"
          }
        },
        "created_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        },
        "last_modified_by": {
          "data": {
            "id": "1",
            "type": "users"
          }
        }
      }
    }
  }
}

This endpoint creates a new parent relationship with selected inventory item, identified by PARENT_ID attribute.

HTTP Request

POST https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/parent_relationships

URL Parameters

Parameter Description
TEAM_ID The ID of the team
INVENTORY_ID The ID of the inventory containing the item
ITEM_ID The ID of the item for which to create the relationship

Request Body

{ "data": { "type": "inventory_item_relationships", "attributes": { "parent_id": <PARENT_ID> } } }

Responses

Delete Inventory Item Relationship

curl -X DELETE \
  https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/parent_relationships/<ID> \
  -H 'Authorization: Bearer your_token_here' \
  -H 'Content-Type: application/json'

The above command returns an empty body with status code 200

This endpoint deletes an existing relationship between inventory items.

HTTP Request

DELETE https://<server-name>/api/v2/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/parent_relationships/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team
INVENTORY_ID The ID of the inventory containing the item
ITEM_ID The ID of the item for which to delete the relationship
ID The ID of the relationship to delete

Responses

Note: Replace server_name, TEAM_ID, INVENTORY_ID, ITEM_ID, PARENT_ID, and ID with actual values.

Inventory Cells

Get Cells

curl "https://server-name/api/v1/teams/1/inventories/1/items/1/cells"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "inventory_cells",
      "attributes": {
        "value_type": "list",
        "value": {
          "inventory_list_item_id": 1,
          "inventory_list_item_name": "Potato bug (2)"
        },
        "column_id": 1
      }
    },
    {
      "id": "2",
      "type": "inventory_cells",
      "attributes": {
        "value_type": "text",
        "value": {
          "text": "new text"
        },
        "column_id": 2
      }
    }
  ],
  "links": {
    "self": "https://server-name/api/v1/teams/1/inventories/1/items/1/cells?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "first": "https://server-name/api/v1/teams/1/inventories/1/items/1/cells?page%5Bnumber%5D=1&page%5Bsize%5D=10",
    "prev": null,
    "next": null,
    "last": "https://server-name/api/v1/teams/1/inventories/1/items/1/cells?page%5Bnumber%5D=1&page%5Bsize%5D=10"
  }
}

This endpoint retrieves cells from specific inventory. Cells can have such types: text, list, file.

HTTP Request

GET https://server-name/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/cells(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory
ITEM_ID The ID of the inventory item
FROM If present will filter inventory cells corresponding timestamp above or equals value
TO If present will filter inventory cells corresponding timestamp below or equals value

Get Cell

curl "https://server-name/api/v1/teams/1/inventories/1/items/1/cells/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_cells",
    "attributes": {
      "value_type": "list",
      "value": {
        "inventory_list_item_id": 1,
        "inventory_list_item_name": "Potato bug (2)"
      },
      "column_id": 1
    }
  }
}

This endpoint retrieves specific cell from the inventory item.

HTTP Request

GET https://server-name/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/cells/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory
ITEM_ID The ID of the inventory item
ID The ID of the cell

Create Cell

curl -X POST \
  https://server-name/api/v1/teams/1/inventories/1/items/1/cells \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
   "data": {
     "type": "inventory_cells",
       "attributes": {
           "value": "new text 1",
           "column_id": 1
       }
    }
  }'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_cells",
    "attributes": {
      "value_type": "text",
      "value": {
        "text": "new text 1"
      },
      "column_id": 1
    }
  }
}

This endpoint creates new cell in the inventory item.

HTTP Request

POST https://server-name/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/cells

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory
ITEM_ID The ID of the inventory item

Request body

{
  "data": {
    "type": "inventory_cells",
    "attributes": {
      "value": "new text 1",
      "column_id": 1
    }
  }
}

Inventory cell attributes

Attribute Mandatory Description
value yes value of the cell, type depends on the column.
column_id yes ID of the column

Inventory cell value attribute format

Column data type Format of the value
text string containing textual value
number string containing number value
list id of the inventory list item from the selected column
checklist an array of ids of the inventory checklist items from the selected column
status id of the status item from the selected column
file hash containing 2 attributes: file_name and file_data. File data is base64 encoded file content in such format: "data:text/plain;base64,dGVzdAo=", mime type should match file content.
date string containing date in the format "DD.MM.YYYY".
time string containing time in the format "HH:mm".
date_time string containing date and time in the format "DD.MM.YYYY HH:mm".
date_range hash containing 2 attributes: start_time and end_time. Start_time and end_time are strings containing date in the format "DD.MM.YYYY".
time_range hash containing 2 attributes: start_time and end_time. Start_time and end_time are strings containing time in the format "HH:mm".
date_time_range hash containing 2 attributes: start_time and end_time. Start_time and end_time are strings containing date and time in the format "DD.MM.YYY HH:mm".
stock hash containing 3 attributes: amount, unit_item_id and low_stock_threshold. Unit_item_id present stock unit id.

Update Cell

curl -X PATCH \
  https://server-name/api/v1/teams/1/inventories/1/items/1/cells/1 \
  -H 'Authorization: Bearer qwerty123456...' \
  -H 'Content-Type: application/vnd.api+json' \
  -d '{
    "data": {
        "id": 1,
        "type": "inventory_cells",
        "attributes": {
            "value": "new text 2",
            "column_id": 1
        }
    }
}'

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "inventory_cells",
    "attributes": {
      "value_type": "text",
      "value": {
        "text": "new text 2"
      },
      "column_id": 1
    }
  }
}

This endpoint updates existing cell in selected inventory item. If submitted attributes are the same and no changes are made for the cell, server returns empty body with response code 204.

HTTP Request

PATCH https://server-name/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/cells/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory
ITEM_ID The ID of the inventory item
ID The ID of the cell

Request body

{
  "data": {
    "id": 1,
    "type": "inventory_cells",
    "attributes": {
      "value": "new text 2",
      "column_id": 1
    }
  }
}

Inventory cell attributes

Attribute Mandatory Description
value yes value of the cell, type depends on the column.
column_id yes ID of the column

Inventory cell value attribute format

Column data type Format of the value
text string containing textual value
number string containing number value
list id of the inventory list item from the selected column
checklist an array of ids of the inventory checklist items from the selected column
status id of the status item from the selected column
file hash containing 2 attributes: file_name and file_data. File data is base64 encoded file content in such format: "data:text/plain;base64,dGVzdAo=", mime type should match file content.
date string containing date in the format "DD.MM.YYYY".
time string containing time in the format "HH:mm".
date_time string containing date and time in the format "DD.MM.YYYY HH:mm".
date_range hash containing 2 attributes: start_time and end_time. Start_time and end_time are strings containing date in the format "DD.MM.YYYY".
time_range hash containing 2 attributes: start_time and end_time. Start_time and end_time are strings containing time in the format "HH:mm".
date_time_range hash containing 2 attributes: start_time and end_time. Start_time and end_time are strings containing date and time in the format "DD.MM.YYY HH:mm".
stock hash containing 3 attributes: amount, unit_item_id and low_stock_threshold. Unit_item_id present stock unit id.

Delete Cell

curl -X DELETE \
  https://server-name/api/v1/teams/1/inventories/1/items/1/cells/1 \
  -H "Authorization: Bearer qwerty123456..."

The above command returns empty body with status code 200

This endpoint deletes specific cell from the inventory item.

HTTP Request

DELETE https://server-name/api/v1/teams/<TEAM_ID>/inventories/<INVENTORY_ID>/items/<ITEM_ID>/cells/<ID>

URL Parameters

Parameter Description
TEAM_ID The ID of the team to retrieve inventory from
INVENTORY_ID The ID of the inventory to retrieve item from
ITEM_ID The ID of the item
ID The ID of the cell

Workflows

Get Workflows

curl "http://<server-name>/api/v1/workflows"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "workflows",
      "attributes": {
        "name": "Default workflow",
        "description": "Default SciNote workflow",
        "visibility": "global",
        "team_id": null
      }
    }
  ]
}

This endpoint retrieves all wrokflows from instance.

HTTP Request

GET https://<server-name>/api/v1/workflows(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

Parameter Description
FROM If present will filter experiments corresponding timestamp above or equals value
TO If present will filter experiments corresponding timestamp below or equals value

Get Workflow

This endpoint retrieves a specific workflow.

curl "http://<server-name>/api/v1/workflows/1"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": {
    "id": "1",
    "type": "workflows",
    "attributes": {
      "name": "Default workflow",
      "description": "Default SciNote workflow",
      "visibility": "global",
      "team_id": null
    }
  }
}

HTTP Request

GET https://<server-name>/api/v1/workflows/<WORKFLOW_ID>

URL Parameters

Parameter Description
WORKFLOW_ID The ID of the workflow to retrieve

Workflow statuses

Get Workflow statuses

curl "http://<server-name>/api/v1/workflows/1/statuses"
  -H "Authorization: Bearer qwerty123456..."

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": "1",
      "type": "workflow_statuses",
      "attributes": {
        "name": "Backlog",
        "description": null,
        "color": "#42f557",
        "previous_status_id": null
      }
    },
    {
      "id": "2",
      "type": "workflow_statuses",
      "attributes": {
        "name": "In progress",
        "description": null,
        "color": "#b9f542",
        "previous_status_id": 1
      }
    },
    {
      "id": "3",
      "type": "workflow_statuses",
      "attributes": {
        "name": "Completed",
        "description": null,
        "color": "#f5e342",
        "previous_status_id": 2
      }
    },
    {
      "id": "4",
      "type": "workflow_statuses",
      "attributes": {
        "name": "In review",
        "description": null,
        "color": "#f59c42",
        "previous_status_id": 3
      }
    },
    {
      "id": "5",
      "type": "workflow_statuses",
      "attributes": {
        "name": "Done",
        "description": null,
        "color": "#f59c42",
        "previous_status_id": 4
      }
    }
  ]
}

This endpoint retrieves wrokflow statuses from selected workflow.

HTTP Request

GET https://<server-name>/api/v1/workflows/WORKFLOW_ID/statuses(?filter[created_at][from]=<FROM>&filter[created_at][to]=<TO>&filter[updated_at][from]=<FROM>&filter[updated_at][to]=<TO>)

URL Parameters

Parameter Description
WORKFLOW_ID The ID of the workflow
FROM If present will filter experiments corresponding timestamp above or equals value
TO If present will filter experiments corresponding timestamp below or equals value

Webhooks

NOTE

Webhooks are currently in the testing phase. If you would like to enable them, add ENABLE_WEBHOOKS=true to your environment variables, or, if using our cloud setup, ask SciNote support to enable it for you.

Setup

For integration purposes, SciNote offers setting up webhooks, which get triggered by certain activities. The first step is setting up an activity filter available at the global activities view (https://[YOUR-DOMAN].scinote.net/global_activities), where you need to save a filter by clicking the Save filter button in the top right corner.

Next, you will need to set up a webhook, by going to the Webhooks section in Settings (https://[YOUR-DOMAN].scinote.net/users/settings/webhooks). For each of the saved activity filters you can add multiple webhooks with the following settings:

After setting up the webhook, it will be triggered for any activity matching the saved activity filter.

Webhook request format

Depending on the type of activity, you will receive a request with a JSON payload of the following format (cURL, example for rename_project activity):

curl -X 'POST' 'https://example.com/webhook-handler' -H 'content-length: 368' -H 'host: example.com' -H 'connection: close' -H 'webhook-secret-key: s3cr3t' -H 'content-type: application/json' -d $'{"breadcrumbs":{"team":"My projects","project":"Some project 1"},"message_items":{"user":{"id":9,"type":"User","value":"Example User","value_for":"full_name"},"project":{"id":137,"type":"Project","value":"Some project 1","value_for":"name"}},"type":"rename_project","created_at":"2022-01-03T14:51:21.492+01:00","subject":{"type":"Project","id":137}}'

Authentication

The optional Secret key is sent via the webhook-secret-key header, for purposes of authentication of the request on your end.

Testing webhooks

During development you might want to test the requests and get the various webhook payloads. We suggest using an HTTP request capture tool, such as mockbin for such purposes.

Example payloads

To the right are example payloads for different types of activities:

// Change user role on experiment
{
  "message_items": {
    "experiment": {
      "type": "Experiment",
      "value": "Experiment-6",
      "id": 6,
      "value_for": "name"
    },
    "user_target": {
      "type": "User",
      "value": "admin",
      "id": 18,
      "value_for": "name"
    },
    "role": "Technician",
    "user": {
      "id": 16,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "experiment": "Experiment-6",
    "project": "My project-6",
    "team": "My team-6"
  },
  "type": "change_user_role_on_experiment",
  "created_at": "2021-12-29 11:23:14 +0000",
  "subject": {
    "type": "Experiment",
    "id": 6
  }
}
// Change user role on my module
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-6",
      "id": 6,
      "value_for": "name"
    },
    "user_target": {
      "type": "User",
      "value": "admin",
      "id": 39,
      "value_for": "name"
    },
    "role": "Technician",
    "user": {
      "id": 37,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "Task-6",
    "experiment": "Experiment-13",
    "project": "My project-13",
    "team": "My team-13"
  },
  "type": "change_user_role_on_my_module",
  "created_at": "2021-12-29 11:23:17 +0000",
  "subject": {
    "type": "MyModule",
    "id": 6
  }
}
// Edit image on step
{
  "message_items": {
    "step": {
      "type": "Step",
      "value": "Maranda Ankunding",
      "id": 3,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 3,
      "value_for": "position_plus_one"
    },
    "asset_name": {
      "type": "Asset",
      "value": "test.jpg",
      "id": 7,
      "value_for": "file_name"
    },
    "action": "editing started",
    "my_module": {
      "type": "MyModule",
      "value": "Task-11",
      "id": 11,
      "value_for": "name"
    },
    "user": {
      "id": 68,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": null,
    "my_module": "Task-11",
    "experiment": "Experiment-18",
    "project": "My project-36",
    "team": "My team-36"
  },
  "type": "edit_image_on_step",
  "created_at": "2021-12-29 11:23:22 +0000",
  "subject": {
    "type": "Protocol",
    "id": 12
  }
}
// Archive module
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-13",
      "id": 13,
      "value_for": "name"
    },
    "user": {
      "id": 70,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "Task-13",
    "experiment": "Experiment-19",
    "project": "My project-37",
    "team": "My team-37"
  },
  "type": "archive_module",
  "created_at": "2021-12-29 11:23:23 +0000",
  "subject": {
    "type": "MyModule",
    "id": 13
  }
}
// Move task
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-18",
      "id": 18,
      "value_for": "name"
    },
    "experiment_original": {
      "type": "Experiment",
      "value": "Experiment-19",
      "id": 19,
      "value_for": "name"
    },
    "experiment_new": {
      "type": "Experiment",
      "value": "Experiment-20",
      "id": 20,
      "value_for": "name"
    },
    "user": {
      "id": 70,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "Task-18",
    "experiment": "Experiment-20",
    "project": "My project-37",
    "team": "My team-37"
  },
  "type": "move_task",
  "created_at": "2021-12-29 11:23:23 +0000",
  "subject": {
    "type": "MyModule",
    "id": 18
  }
}
// Designate user to my module
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "task_new1",
      "id": 20,
      "value_for": "name"
    },
    "user_target": {
      "type": "User",
      "value": "admin",
      "id": 70,
      "value_for": "name"
    },
    "user": {
      "id": 70,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "task_new1",
    "experiment": "Experiment-19",
    "project": "My project-37",
    "team": "My team-37"
  },
  "type": "designate_user_to_my_module",
  "created_at": "2021-12-29 11:23:23 +0000",
  "subject": {
    "type": "MyModule",
    "id": 20
  }
}
// Rename task
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "RenamedTask1",
      "id": 12,
      "value_for": "name"
    },
    "user": {
      "id": 70,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "RenamedTask1",
    "experiment": "Experiment-19",
    "project": "My project-37",
    "team": "My team-37"
  },
  "type": "rename_task",
  "created_at": "2021-12-29 11:23:24 +0000",
  "subject": {
    "type": "MyModule",
    "id": 12
  }
}
// Create module
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "task_new1",
      "id": 20,
      "value_for": "name"
    },
    "user": {
      "id": 70,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "task_new1",
    "experiment": "Experiment-19",
    "project": "My project-37",
    "team": "My team-37"
  },
  "type": "create_module",
  "created_at": "2021-12-29 11:23:24 +0000",
  "subject": {
    "type": "MyModule",
    "id": 20
  }
}
// Clone module
{
  "message_items": {
    "my_module_original": {
      "type": "MyModule",
      "value": "Task-16",
      "id": 16,
      "value_for": "name"
    },
    "my_module_new": {
      "type": "MyModule",
      "value": "clone_1",
      "id": 24,
      "value_for": "name"
    },
    "user": {
      "id": 70,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "clone_1",
    "experiment": "Experiment-19",
    "project": "My project-37",
    "team": "My team-37"
  },
  "type": "clone_module",
  "created_at": "2021-12-29 11:23:24 +0000",
  "subject": {
    "type": "MyModule",
    "id": 24
  }
}
// Create experiment
{
  "message_items": {
    "experiment": {
      "type": "Experiment",
      "value": "test experiment A1",
      "id": 24,
      "value_for": "name"
    },
    "user": {
      "id": 77,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "experiment": "test experiment A1",
    "project": "My project-39",
    "team": "My team-39"
  },
  "type": "create_experiment",
  "created_at": "2021-12-29 11:23:25 +0000",
  "subject": {
    "type": "Experiment",
    "id": 24
  }
}
// Edit experiment
{
  "message_items": {
    "experiment": {
      "type": "Experiment",
      "value": "Experiment-24",
      "id": 26,
      "value_for": "name"
    },
    "user": {
      "id": 81,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "experiment": "Experiment-24",
    "project": "My project-41",
    "team": "My team-41"
  },
  "type": "edit_experiment",
  "created_at": "2021-12-29 11:23:26 +0000",
  "subject": {
    "type": "Experiment",
    "id": 26
  }
}
// Restore experiment
{
  "message_items": {
    "experiment": {
      "type": "Experiment",
      "value": "Experiment-28",
      "id": 30,
      "value_for": "name"
    },
    "user": {
      "id": 87,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "experiment": "Experiment-28",
    "project": "My project-43",
    "team": "My team-43"
  },
  "type": "restore_experiment",
  "created_at": "2021-12-29 11:23:27 +0000",
  "subject": {
    "type": "Experiment",
    "id": 30
  }
}
// Archive experiment
{
  "message_items": {
    "experiment": {
      "type": "Experiment",
      "value": "Experiment-30",
      "id": 32,
      "value_for": "name"
    },
    "user": {
      "id": 93,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "experiment": "Experiment-30",
    "project": "My project-45",
    "team": "My team-45"
  },
  "type": "archive_experiment",
  "created_at": "2021-12-29 11:23:27 +0000",
  "subject": {
    "type": "Experiment",
    "id": 32
  }
}
// Invite user to team
{
  "message_items": {
    "team": {
      "type": "Team",
      "value": "My team-66",
      "id": 66,
      "value_for": "name"
    },
    "user_invited": {
      "type": "User",
      "value": "admin",
      "id": 122,
      "value_for": "name"
    },
    "role": "Guest",
    "user": {
      "id": 120,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "team": "My team-66"
  },
  "type": "invite_user_to_team",
  "created_at": "2021-12-29 11:23:30 +0000",
  "subject": {
    "type": "Team",
    "id": 66
  }
}
// Add task tag
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-47",
      "id": 53,
      "value_for": "name"
    },
    "tag": {
      "type": "Tag",
      "value": "My tag-2",
      "id": 2,
      "value_for": "name"
    },
    "user": {
      "id": 158,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "Task-47",
    "experiment": "Experiment-50",
    "project": "My project-65",
    "team": "My team-84"
  },
  "type": "add_task_tag",
  "created_at": "2021-12-29 11:23:35 +0000",
  "subject": {
    "type": "MyModule",
    "id": 53
  }
}
// Remove task tag
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-49",
      "id": 55,
      "value_for": "name"
    },
    "tag": {
      "type": "Tag",
      "value": "My tag-4",
      "id": 4,
      "value_for": "name"
    },
    "user": {
      "id": 163,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "Task-49",
    "experiment": "Experiment-52",
    "project": "My project-68",
    "team": "My team-87"
  },
  "type": "remove_task_tag",
  "created_at": "2021-12-29 11:23:35 +0000",
  "subject": {
    "type": "MyModule",
    "id": 55
  }
}
// Change module description
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-51",
      "id": 57,
      "value_for": "name"
    },
    "user": {
      "id": 168,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "Task-51",
    "experiment": "Experiment-54",
    "project": "My project-71",
    "team": "My team-90"
  },
  "type": "change_module_description",
  "created_at": "2021-12-29 11:23:36 +0000",
  "subject": {
    "type": "MyModule",
    "id": 57
  }
}
// Set task due date
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-53",
      "id": 59,
      "value_for": "name"
    },
    "my_module_duedate": {
      "type": "Time",
      "value": 1553212740
    },
    "user": {
      "id": 172,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "Task-53",
    "experiment": "Experiment-56",
    "project": "My project-73",
    "team": "My team-92"
  },
  "type": "set_task_due_date",
  "created_at": "2021-12-29 11:23:37 +0000",
  "subject": {
    "type": "MyModule",
    "id": 59
  }
}
// Remove task due date
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-55",
      "id": 61,
      "value_for": "name"
    },
    "my_module_duedate": {
      "type": "Time",
      "value": 1641330171
    },
    "user": {
      "id": 176,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "Task-55",
    "experiment": "Experiment-58",
    "project": "My project-75",
    "team": "My team-94"
  },
  "type": "remove_task_due_date",
  "created_at": "2021-12-29 11:23:37 +0000",
  "subject": {
    "type": "MyModule",
    "id": 61
  }
}
// Change task due date
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-57",
      "id": 63,
      "value_for": "name"
    },
    "my_module_duedate": {
      "type": "Time",
      "value": 1550793540
    },
    "user": {
      "id": 180,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "Task-57",
    "experiment": "Experiment-60",
    "project": "My project-77",
    "team": "My team-96"
  },
  "type": "change_task_due_date",
  "created_at": "2021-12-29 11:23:38 +0000",
  "subject": {
    "type": "MyModule",
    "id": 63
  }
}
// Change status on task flow
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-58",
      "id": 64,
      "value_for": "name"
    },
    "my_module_status_old": {
      "type": "MyModuleStatus",
      "value": "Not started",
      "id": 1,
      "value_for": "name"
    },
    "my_module_status_new": {
      "type": "MyModuleStatus",
      "value": "In progress",
      "id": 2,
      "value_for": "name"
    },
    "user": {
      "id": 182,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "Task-58",
    "experiment": "Experiment-61",
    "project": "My project-78",
    "team": "My team-97"
  },
  "type": "change_status_on_task_flow",
  "created_at": "2021-12-29 11:23:38 +0000",
  "subject": {
    "type": "MyModule",
    "id": 64
  }
}
// Restore module
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-67",
      "id": 73,
      "value_for": "name"
    },
    "user": {
      "id": 194,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "Task-67",
    "experiment": "Experiment-67",
    "project": "My project-85",
    "team": "My team-104"
  },
  "type": "restore_module",
  "created_at": "2021-12-29 11:23:41 +0000",
  "subject": {
    "type": "MyModule",
    "id": 73
  }
}
// Add comment to project
{
  "message_items": {
    "project": {
      "type": "Project",
      "value": "My project-105",
      "id": 105,
      "value_for": "name"
    },
    "user": {
      "id": 246,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "project": "My project-105",
    "team": "My team-124"
  },
  "type": "add_comment_to_project",
  "created_at": "2021-12-29 11:23:49 +0000",
  "subject": {
    "type": "Project",
    "id": 105
  }
}
// Edit project comment
{
  "message_items": {
    "project": {
      "type": "Project",
      "value": "My project-107",
      "id": 107,
      "value_for": "name"
    },
    "user": {
      "id": 250,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "project": "My project-107",
    "team": "My team-126"
  },
  "type": "edit_project_comment",
  "created_at": "2021-12-29 11:23:49 +0000",
  "subject": {
    "type": "Project",
    "id": 107
  }
}
// Delete project comment
{
  "message_items": {
    "project": {
      "type": "Project",
      "value": "My project-109",
      "id": 109,
      "value_for": "name"
    },
    "user": {
      "id": 254,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "project": "My project-109",
    "team": "My team-128"
  },
  "type": "delete_project_comment",
  "created_at": "2021-12-29 11:23:50 +0000",
  "subject": {
    "type": "Project",
    "id": 109
  }
}
// Move project
{
  "message_items": {
    "project": {
      "type": "Project",
      "value": "test project A",
      "id": 111,
      "value_for": "name"
    },
    "project_folder_to": {
      "type": "ProjectFolder",
      "value": "test folder A",
      "id": 1,
      "value_for": "name"
    },
    "project_folder_from": {
      "type": "ProjectFolder",
      "value": null,
      "value_for": "name",
      "id": null
    },
    "user": {
      "id": 256,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "project": "test project A",
    "team": "My team-129"
  },
  "type": "move_project",
  "created_at": "2021-12-29 11:23:50 +0000",
  "subject": {
    "type": "Project",
    "id": 111
  }
}
// Move project folder
{
  "message_items": {
    "project_folder": {
      "type": "ProjectFolder",
      "value": "test folder B",
      "id": 2,
      "value_for": "name"
    },
    "project_folder_to": {
      "type": "ProjectFolder",
      "value": "test folder A",
      "id": 1,
      "value_for": "name"
    },
    "project_folder_from": {
      "type": "ProjectFolder",
      "value": null,
      "value_for": "name",
      "id": null
    },
    "user": {
      "id": 256,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "project_folder": "test folder B",
    "team": "My team-129"
  },
  "type": "move_project_folder",
  "created_at": "2021-12-29 11:23:50 +0000",
  "subject": {
    "type": "ProjectFolder",
    "id": 2
  }
}
// Create project folder
{
  "message_items": {
    "project_folder": {
      "type": "ProjectFolder",
      "value": "My Proejct Folder",
      "id": 8,
      "value_for": "name"
    },
    "user": {
      "id": 262,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "project_folder": "My Proejct Folder",
    "team": "My team-132"
  },
  "type": "create_project_folder",
  "created_at": "2021-12-29 11:23:51 +0000",
  "subject": {
    "type": "ProjectFolder",
    "id": 8
  }
}
// Rename project folder
{
  "message_items": {
    "project_folder": {
      "type": "ProjectFolder",
      "value": "new name",
      "id": 11,
      "value_for": "name"
    },
    "user": {
      "id": 268,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "project_folder": "new name",
    "team": "My team-135"
  },
  "type": "rename_project_folder",
  "created_at": "2021-12-29 11:23:52 +0000",
  "subject": {
    "type": "ProjectFolder",
    "id": 11
  }
}
// Create project
{
  "message_items": {
    "project": {
      "type": "Project",
      "value": "test project A1",
      "id": 131,
      "value_for": "name"
    },
    "user": {
      "id": 272,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "project": "test project A1",
    "team": "My team-137"
  },
  "type": "create_project",
  "created_at": "2021-12-29 11:23:53 +0000",
  "subject": {
    "type": "Project",
    "id": 131
  }
}
// Archive project
{
  "message_items": {
    "project": {
      "type": "Project",
      "value": "My project-158",
      "id": 167,
      "value_for": "name"
    },
    "user": {
      "id": 290,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "project": "My project-158",
    "team": "My team-146"
  },
  "type": "archive_project",
  "created_at": "2021-12-29 11:23:55 +0000",
  "subject": {
    "type": "Project",
    "id": 167
  }
}
// Create protocol in repository
{
  "message_items": {
    "protocol": {
      "type": "Protocol",
      "value": "protocol_name",
      "id": 132,
      "value_for": "name"
    },
    "user": {
      "id": 300,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "protocol_name",
    "team": "My team-151"
  },
  "type": "create_protocol_in_repository",
  "created_at": "2021-12-29 11:23:57 +0000",
  "subject": {
    "type": "Protocol",
    "id": 132
  }
}
// Export protocol in repository
{
  "message_items": {
    "protocol": {
      "type": "Protocol",
      "value": "Rev. Waldo Crona",
      "id": 137,
      "value_for": "name"
    },
    "user": {
      "id": 306,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "Rev. Waldo Crona",
    "team": "My team-153"
  },
  "type": "export_protocol_in_repository",
  "created_at": "2021-12-29 11:23:58 +0000",
  "subject": {
    "type": "Protocol",
    "id": 137
  }
}
// Export protocol from task
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-122",
      "id": 128,
      "value_for": "name"
    },
    "user": {
      "id": 313,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "Task-122",
    "experiment": "Experiment-109",
    "project": "My project-178",
    "team": "My team-155"
  },
  "type": "export_protocol_from_task",
  "created_at": "2021-12-29 11:23:58 +0000",
  "subject": {
    "type": "MyModule",
    "id": 128
  }
}
// Import protocol in repository
{
  "message_items": {
    "protocol": {
      "type": "Protocol",
      "value": "my_test_protocol",
      "id": 146,
      "value_for": "name"
    },
    "user": {
      "id": 318,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "my_test_protocol",
    "team": "My team-157"
  },
  "type": "import_protocol_in_repository",
  "created_at": "2021-12-29 11:23:59 +0000",
  "subject": {
    "type": "Protocol",
    "id": 146
  }
}
// Edit description in protocol repository
{
  "message_items": {
    "protocol": {
      "type": "Protocol",
      "value": "Kathyrn Bayer",
      "id": 150,
      "value_for": "name"
    },
    "user": {
      "id": 322,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "Kathyrn Bayer",
    "team": "My team-159"
  },
  "type": "edit_description_in_protocol_repository",
  "created_at": "2021-12-29 11:23:59 +0000",
  "subject": {
    "type": "Protocol",
    "id": 150
  }
}
// Edit keywords in protocol repository
{
  "message_items": {
    "protocol": {
      "type": "Protocol",
      "value": "Ossie Bode",
      "id": 154,
      "value_for": "name"
    },
    "user": {
      "id": 326,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "Ossie Bode",
    "team": "My team-161"
  },
  "type": "edit_keywords_in_protocol_repository",
  "created_at": "2021-12-29 11:24:00 +0000",
  "subject": {
    "type": "Protocol",
    "id": 154
  }
}
// Update protocol in task from repository
{
  "message_items": {
    "protocol": {
      "type": "Protocol",
      "value": "test protocol",
      "id": 160,
      "value_for": "name"
    },
    "my_module": {
      "type": "MyModule",
      "value": "Task-130",
      "id": 136,
      "value_for": "name"
    },
    "protocol_repository": {
      "type": "Protocol",
      "value": "test protocol",
      "id": 159,
      "value_for": "name"
    },
    "user": {
      "id": 330,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "test protocol",
    "my_module": "Task-130",
    "experiment": "Experiment-117",
    "project": "My project-186",
    "team": "My team-163"
  },
  "type": "update_protocol_in_task_from_repository",
  "created_at": "2021-12-29 11:24:01 +0000",
  "subject": {
    "type": "Protocol",
    "id": 160
  }
}
// Update protocol in repository from task
{
  "message_items": {
    "protocol": {
      "type": "Protocol",
      "value": "test protocol",
      "id": 166,
      "value_for": "name"
    },
    "my_module": {
      "type": "MyModule",
      "value": "Task-132",
      "id": 138,
      "value_for": "name"
    },
    "protocol_repository": {
      "type": "Protocol",
      "value": "test protocol",
      "id": 165,
      "value_for": "name"
    },
    "user": {
      "id": 334,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "test protocol",
    "my_module": "Task-132",
    "experiment": "Experiment-119",
    "project": "My project-188",
    "team": "My team-165"
  },
  "type": "update_protocol_in_repository_from_task",
  "created_at": "2021-12-29 11:24:01 +0000",
  "subject": {
    "type": "Protocol",
    "id": 166
  }
}
// Load protocol to task from repository
{
  "message_items": {
    "protocol": {
      "type": "Protocol",
      "value": "Hershel Heaney",
      "id": 172,
      "value_for": "name"
    },
    "my_module": {
      "type": "MyModule",
      "value": "Task-134",
      "id": 140,
      "value_for": "name"
    },
    "protocol_repository": {
      "type": "Protocol",
      "value": "Carson Streich",
      "id": 171,
      "value_for": "name"
    },
    "user": {
      "id": 338,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "Hershel Heaney",
    "my_module": "Task-134",
    "experiment": "Experiment-121",
    "project": "My project-190",
    "team": "My team-167"
  },
  "type": "load_protocol_to_task_from_repository",
  "created_at": "2021-12-29 11:24:02 +0000",
  "subject": {
    "type": "Protocol",
    "id": 172
  }
}
// Load protocol to task from file
{
  "message_items": {
    "protocol": {
      "type": "Protocol",
      "value": "Hugo Robel",
      "id": 176,
      "value_for": "name"
    },
    "my_module": {
      "type": "MyModule",
      "value": "Task-136",
      "id": 142,
      "value_for": "name"
    },
    "user": {
      "id": 342,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "Hugo Robel",
    "my_module": "Task-136",
    "experiment": "Experiment-123",
    "project": "My project-192",
    "team": "My team-169"
  },
  "type": "load_protocol_to_task_from_file",
  "created_at": "2021-12-29 11:24:03 +0000",
  "subject": {
    "type": "Protocol",
    "id": 176
  }
}
// Create report
{
  "message_items": {
    "report": {
      "type": "Report",
      "value": "test report created",
      "id": 2,
      "value_for": "name"
    },
    "user": {
      "id": 346,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "report": "test report created",
    "team": "My team-171"
  },
  "type": "create_report",
  "created_at": "2021-12-29 11:24:04 +0000",
  "subject": {
    "type": "Report",
    "id": 2
  }
}
// Generate pdf report
{
  "message_items": {
    "report": {
      "type": "Report",
      "value": "test report created",
      "id": 2,
      "value_for": "name"
    },
    "user": {
      "id": 346,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "report": "test report created",
    "team": "My team-171"
  },
  "type": "generate_pdf_report",
  "created_at": "2021-12-29 11:24:04 +0000",
  "subject": {
    "type": "Report",
    "id": 2
  }
}
// Edit report
{
  "message_items": {
    "report": {
      "type": "Report",
      "value": "test report update",
      "id": 4,
      "value_for": "name"
    },
    "user": {
      "id": 350,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "report": "test report update",
    "team": "My team-173"
  },
  "type": "edit_report",
  "created_at": "2021-12-29 11:24:06 +0000",
  "subject": {
    "type": "Report",
    "id": 4
  }
}
// Delete report
{
  "message_items": {
    "report": {
      "type": "Report",
      "value": "test repot A1",
      "id": 6,
      "value_for": "name"
    },
    "user": {
      "id": 354,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "report": "test repot A1",
    "team": "My team-175"
  },
  "type": "delete_report",
  "created_at": "2021-12-29 11:24:08 +0000",
  "subject": {
    "type": "Report",
    "id": 6
  }
}
// Create inventory
{
  "message_items": {
    "repository": {
      "type": "Repository",
      "value": "My Repository",
      "id": 27,
      "value_for": "name"
    },
    "user": {
      "id": 359,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My Repository",
    "team": "My team-178"
  },
  "type": "create_inventory",
  "created_at": "2021-12-29 11:24:09 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 27
  }
}
// Delete inventory
{
  "message_items": {
    "repository": {
      "type": "Repository",
      "value": "My repository-27",
      "id": 29,
      "value_for": "name"
    },
    "user": {
      "id": 362,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-27",
    "team": "My team-180"
  },
  "type": "delete_inventory",
  "created_at": "2021-12-29 11:24:09 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 29
  }
}
// Rename inventory
{
  "message_items": {
    "repository": {
      "type": "Repository",
      "value": "new_name",
      "id": 31,
      "value_for": "name"
    },
    "user": {
      "id": 366,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "new_name",
    "team": "My team-182"
  },
  "type": "rename_inventory",
  "created_at": "2021-12-29 11:24:10 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 31
  }
}
// Export inventory items
{
  "message_items": {
    "repository": {
      "type": "Repository",
      "value": "My repository-31",
      "id": 33,
      "value_for": "name"
    },
    "user": {
      "id": 372,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-31",
    "team": "My team-184"
  },
  "type": "export_inventory_items",
  "created_at": "2021-12-29 11:24:11 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 33
  }
}
// Import inventory items
{
  "message_items": {
    "repository": {
      "type": "Repository",
      "value": "My repository-33",
      "id": 35,
      "value_for": "name"
    },
    "num_of_items": "",
    "user": {
      "id": 378,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-33",
    "team": "My team-186"
  },
  "type": "import_inventory_items",
  "created_at": "2021-12-29 11:24:11 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 35
  }
}
// Copy inventory item
{
  "message_items": {
    "repository_row_new": {
      "type": "RepositoryRow",
      "value": "My row-41 (1)",
      "id": 483,
      "value_for": "name"
    },
    "repository_row_original": {
      "type": "RepositoryRow",
      "value": "My row-41",
      "id": 481,
      "value_for": "name"
    },
    "user": {
      "id": 493,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-98",
    "team": "My team-251"
  },
  "type": "copy_inventory_item",
  "created_at": "2021-12-29 11:24:26 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 100
  }
}
// Create item inventory
{
  "message_items": {
    "repository_row": {
      "type": "RepositoryRow",
      "value": "row_name",
      "id": 489,
      "value_for": "name"
    },
    "repository": {
      "type": "Repository",
      "value": "My repository-102",
      "id": 104,
      "value_for": "name"
    },
    "user": {
      "id": 497,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-102",
    "team": "My team-255"
  },
  "type": "create_item_inventory",
  "created_at": "2021-12-29 11:24:26 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 104
  }
}
// Edit item inventory
{
  "message_items": {
    "repository_row": {
      "type": "RepositoryRow",
      "value": "row_name",
      "id": 492,
      "value_for": "name"
    },
    "repository": {
      "type": "Repository",
      "value": "My repository-106",
      "id": 108,
      "value_for": "name"
    },
    "user": {
      "id": 501,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-106",
    "team": "My team-259"
  },
  "type": "edit_item_inventory",
  "created_at": "2021-12-29 11:24:27 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 108
  }
}
// Delete item inventory
{
  "message_items": {
    "repository_row": {
      "type": "RepositoryRow",
      "value": "My row-53",
      "id": 496,
      "value_for": "name"
    },
    "repository": {
      "type": "Repository",
      "value": "My repository-110",
      "id": 112,
      "value_for": "name"
    },
    "user": {
      "id": 505,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-110",
    "team": "My team-263"
  },
  "type": "delete_item_inventory",
  "created_at": "2021-12-29 11:24:27 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 112
  }
}
// Archive inventory item
{
  "message_items": {
    "repository_row": {
      "type": "RepositoryRow",
      "value": "My row-55",
      "id": 498,
      "value_for": "name"
    },
    "user": {
      "id": 507,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-112",
    "team": "My team-265"
  },
  "type": "archive_inventory_item",
  "created_at": "2021-12-29 11:24:27 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 114
  }
}
// Restore inventory item
{
  "message_items": {
    "repository_row": {
      "type": "RepositoryRow",
      "value": "My row-67",
      "id": 510,
      "value_for": "name"
    },
    "user": {
      "id": 522,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-124",
    "team": "My team-280"
  },
  "type": "restore_inventory_item",
  "created_at": "2021-12-29 11:24:29 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 126
  }
}
// Edit result
{
  "message_items": {
    "result": {
      "type": "Result",
      "value": "Prof. Rocco Funk",
      "id": 4,
      "value_for": "name"
    },
    "type_of_result": "file",
    "user": {
      "id": 541,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "result": "Prof. Rocco Funk",
    "my_module": "Task-147",
    "experiment": "Experiment-132",
    "project": "My project-201",
    "team": "My team-297"
  },
  "type": "edit_result",
  "created_at": "2021-12-29 11:24:32 +0000",
  "subject": {
    "type": "Result",
    "id": 4
  }
}
// Add comment to result
{
  "message_items": {
    "result": {
      "type": "Result",
      "value": "Prof. Dora Hahn",
      "id": 6,
      "value_for": "name"
    },
    "user": {
      "id": 545,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "result": "Prof. Dora Hahn",
    "my_module": "Task-149",
    "experiment": "Experiment-134",
    "project": "My project-203",
    "team": "My team-299"
  },
  "type": "add_comment_to_result",
  "created_at": "2021-12-29 11:24:33 +0000",
  "subject": {
    "type": "Result",
    "id": 6
  }
}
// Edit result comment
{
  "message_items": {
    "result": {
      "type": "Result",
      "value": "Irish Koelpin LLD",
      "id": 8,
      "value_for": "name"
    },
    "user": {
      "id": 549,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "result": "Irish Koelpin LLD",
    "my_module": "Task-151",
    "experiment": "Experiment-136",
    "project": "My project-205",
    "team": "My team-301"
  },
  "type": "edit_result_comment",
  "created_at": "2021-12-29 11:24:34 +0000",
  "subject": {
    "type": "Result",
    "id": 8
  }
}
// Delete result comment
{
  "message_items": {
    "result": {
      "type": "Result",
      "value": "Antonette Jast",
      "id": 10,
      "value_for": "name"
    },
    "user": {
      "id": 553,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "result": "Antonette Jast",
    "my_module": "Task-153",
    "experiment": "Experiment-138",
    "project": "My project-207",
    "team": "My team-303"
  },
  "type": "delete_result_comment",
  "created_at": "2021-12-29 11:24:34 +0000",
  "subject": {
    "type": "Result",
    "id": 10
  }
}
// Add result
{
  "message_items": {
    "result": {
      "type": "Result",
      "value": "result name created",
      "id": 12,
      "value_for": "name"
    },
    "type_of_result": "table",
    "user": {
      "id": 557,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "result": "result name created",
    "my_module": "Task-155",
    "experiment": "Experiment-140",
    "project": "My project-209",
    "team": "My team-305"
  },
  "type": "add_result",
  "created_at": "2021-12-29 11:24:35 +0000",
  "subject": {
    "type": "Result",
    "id": 12
  }
}
// Archive result
{
  "message_items": {
    "result": {
      "type": "Result",
      "value": "Fr. Kelsie Carroll",
      "id": 15,
      "value_for": "name"
    },
    "type_of_result": "table",
    "user": {
      "id": 563,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "result": "Fr. Kelsie Carroll",
    "my_module": "Task-158",
    "experiment": "Experiment-143",
    "project": "My project-212",
    "team": "My team-308"
  },
  "type": "archive_result",
  "created_at": "2021-12-29 11:24:36 +0000",
  "subject": {
    "type": "Result",
    "id": 15
  }
}
// Destroy result
{
  "message_items": {
    "result": {
      "type": "Result",
      "value": "Rudy Hand",
      "id": 22,
      "value_for": "name"
    },
    "type_of_result": "text",
    "user": {
      "id": 577,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "result": "Rudy Hand",
    "my_module": "Task-165",
    "experiment": "Experiment-150",
    "project": "My project-219",
    "team": "My team-315"
  },
  "type": "destroy_result",
  "created_at": "2021-12-29 11:24:38 +0000",
  "subject": {
    "type": "Result",
    "id": 22
  }
}
// Add comment to step
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-167",
      "id": 173,
      "value_for": "name"
    },
    "step": {
      "type": "Step",
      "value": "Brendan Legros",
      "id": 9,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 9,
      "value_for": "position_plus_one"
    },
    "user": {
      "id": 581,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": null,
    "my_module": "Task-167",
    "experiment": "Experiment-152",
    "project": "My project-221",
    "team": "My team-317"
  },
  "type": "add_comment_to_step",
  "created_at": "2021-12-29 11:24:38 +0000",
  "subject": {
    "type": "Protocol",
    "id": 207
  }
}
// Edit step comment
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-169",
      "id": 175,
      "value_for": "name"
    },
    "step": {
      "type": "Step",
      "value": "Clifton Daniel",
      "id": 11,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 11,
      "value_for": "position_plus_one"
    },
    "user": {
      "id": 585,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": null,
    "my_module": "Task-169",
    "experiment": "Experiment-154",
    "project": "My project-223",
    "team": "My team-319"
  },
  "type": "edit_step_comment",
  "created_at": "2021-12-29 11:24:39 +0000",
  "subject": {
    "type": "Protocol",
    "id": 209
  }
}
// Delete step comment
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-171",
      "id": 177,
      "value_for": "name"
    },
    "step": {
      "type": "Step",
      "value": "Remedios Jakubowski",
      "id": 13,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 13,
      "value_for": "position_plus_one"
    },
    "user": {
      "id": 589,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": null,
    "my_module": "Task-171",
    "experiment": "Experiment-156",
    "project": "My project-225",
    "team": "My team-321"
  },
  "type": "delete_step_comment",
  "created_at": "2021-12-29 11:24:40 +0000",
  "subject": {
    "type": "Protocol",
    "id": 211
  }
}
// Add step to protocol repository
{
  "message_items": {
    "step": {
      "type": "Step",
      "value": "test",
      "id": 15,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 15,
      "value_for": "position_plus_one"
    },
    "protocol": {
      "type": "Protocol",
      "value": "Tandy Abbott",
      "id": 215,
      "value_for": "name"
    },
    "user": {
      "id": 593,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "Tandy Abbott",
    "team": "My team-323"
  },
  "type": "add_step_to_protocol_repository",
  "created_at": "2021-12-29 11:24:40 +0000",
  "subject": {
    "type": "Protocol",
    "id": 215
  }
}
// Create step
{
  "message_items": {
    "step": {
      "type": "Step",
      "value": "test",
      "id": 17,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 17,
      "value_for": "position_plus_one"
    },
    "my_module": {
      "type": "MyModule",
      "value": "Task-175",
      "id": 181,
      "value_for": "name"
    },
    "user": {
      "id": 597,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": null,
    "my_module": "Task-175",
    "experiment": "Experiment-160",
    "project": "My project-229",
    "team": "My team-325"
  },
  "type": "create_step",
  "created_at": "2021-12-29 11:24:41 +0000",
  "subject": {
    "type": "Protocol",
    "id": 217
  }
}
// Edit step in protocol repository
{
  "message_items": {
    "step": {
      "type": "Step",
      "value": "updated name",
      "id": 19,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 19,
      "value_for": "position_plus_one"
    },
    "protocol": {
      "type": "Protocol",
      "value": "Brice Gislason",
      "id": 221,
      "value_for": "name"
    },
    "user": {
      "id": 602,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "Brice Gislason",
    "team": "My team-327"
  },
  "type": "edit_step_in_protocol_repository",
  "created_at": "2021-12-29 11:24:42 +0000",
  "subject": {
    "type": "Protocol",
    "id": 221
  }
}
// Edit step
{
  "message_items": {
    "step": {
      "type": "Step",
      "value": "updated name",
      "id": 21,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 21,
      "value_for": "position_plus_one"
    },
    "my_module": {
      "type": "MyModule",
      "value": "Task-179",
      "id": 185,
      "value_for": "name"
    },
    "user": {
      "id": 607,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": null,
    "my_module": "Task-179",
    "experiment": "Experiment-164",
    "project": "My project-233",
    "team": "My team-329"
  },
  "type": "edit_step",
  "created_at": "2021-12-29 11:24:42 +0000",
  "subject": {
    "type": "Protocol",
    "id": 223
  }
}
// Delete step in protocol repository
{
  "message_items": {
    "step": {
      "type": "Step",
      "value": "Alfredo Luettgen Jr.",
      "id": 23,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 23,
      "value_for": "position_plus_one"
    },
    "protocol": {
      "type": "Protocol",
      "value": "Cleo Hilll",
      "id": 227,
      "value_for": "name"
    },
    "user": {
      "id": 612,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "Cleo Hilll",
    "team": "My team-331"
  },
  "type": "delete_step_in_protocol_repository",
  "created_at": "2021-12-29 11:24:43 +0000",
  "subject": {
    "type": "Protocol",
    "id": 227
  }
}
// Destroy step
{
  "message_items": {
    "step": {
      "type": "Step",
      "value": "The Hon. Joleen Farrell",
      "id": 25,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 25,
      "value_for": "position_plus_one"
    },
    "my_module": {
      "type": "MyModule",
      "value": "Task-183",
      "id": 189,
      "value_for": "name"
    },
    "user": {
      "id": 617,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": null,
    "my_module": "Task-183",
    "experiment": "Experiment-168",
    "project": "My project-237",
    "team": "My team-333"
  },
  "type": "destroy_step",
  "created_at": "2021-12-29 11:24:44 +0000",
  "subject": {
    "type": "Protocol",
    "id": 229
  }
}
// Check step checklist item
{
  "message_items": {
    "step": {
      "type": "Step",
      "value": "Leonel Toy",
      "id": 27,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 27,
      "value_for": "position_plus_one"
    },
    "my_module": {
      "type": "MyModule",
      "value": "Task-185",
      "id": 191,
      "value_for": "name"
    },
    "checkbox": "Debitis modi neque voluptatum earum ratione sunt excepturi aut dolores.",
    "num_completed": "1",
    "num_all": "1",
    "user": {
      "id": 621,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": null,
    "my_module": "Task-185",
    "experiment": "Experiment-170",
    "project": "My project-239",
    "team": "My team-335"
  },
  "type": "check_step_checklist_item",
  "created_at": "2021-12-29 11:24:44 +0000",
  "subject": {
    "type": "Protocol",
    "id": 231
  }
}
// Uncheck step checklist item
{
  "message_items": {
    "step": {
      "type": "Step",
      "value": "Marty Jast",
      "id": 29,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 29,
      "value_for": "position_plus_one"
    },
    "my_module": {
      "type": "MyModule",
      "value": "Task-187",
      "id": 193,
      "value_for": "name"
    },
    "checkbox": "Magni et doloremque minus facilis earum officiis ea unde ut.",
    "num_completed": "0",
    "num_all": "1",
    "user": {
      "id": 625,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": null,
    "my_module": "Task-187",
    "experiment": "Experiment-172",
    "project": "My project-241",
    "team": "My team-337"
  },
  "type": "uncheck_step_checklist_item",
  "created_at": "2021-12-29 11:24:45 +0000",
  "subject": {
    "type": "Protocol",
    "id": 233
  }
}
// Complete step
{
  "message_items": {
    "step": {
      "type": "Step",
      "value": "Karl Cronin",
      "id": 31,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 31,
      "value_for": "position_plus_one"
    },
    "my_module": {
      "type": "MyModule",
      "value": "Task-189",
      "id": 195,
      "value_for": "name"
    },
    "num_completed": "1",
    "num_all": "1",
    "user": {
      "id": 629,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": null,
    "my_module": "Task-189",
    "experiment": "Experiment-174",
    "project": "My project-243",
    "team": "My team-339"
  },
  "type": "complete_step",
  "created_at": "2021-12-29 11:24:46 +0000",
  "subject": {
    "type": "Protocol",
    "id": 235
  }
}
// Uncomplete step
{
  "message_items": {
    "step": {
      "type": "Step",
      "value": "Ozzie Bergnaum",
      "id": 33,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 33,
      "value_for": "position_plus_one"
    },
    "my_module": {
      "type": "MyModule",
      "value": "Task-191",
      "id": 197,
      "value_for": "name"
    },
    "num_completed": "0",
    "num_all": "1",
    "user": {
      "id": 633,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": null,
    "my_module": "Task-191",
    "experiment": "Experiment-176",
    "project": "My project-245",
    "team": "My team-341"
  },
  "type": "uncomplete_step",
  "created_at": "2021-12-29 11:24:46 +0000",
  "subject": {
    "type": "Protocol",
    "id": 237
  }
}
// Create tag
{
  "message_items": {
    "tag": {
      "type": "Tag",
      "value": "name",
      "id": 6,
      "value_for": "name"
    },
    "project": {
      "type": "Project",
      "value": "My project-247",
      "id": 256,
      "value_for": "name"
    },
    "user": {
      "id": 642,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "project": "My project-247",
    "team": "My team-343"
  },
  "type": "create_tag",
  "created_at": "2021-12-29 11:24:48 +0000",
  "subject": {
    "type": "Project",
    "id": 256
  }
}
// Edit tag
{
  "message_items": {
    "tag": {
      "type": "Tag",
      "value": "Name2",
      "id": 8,
      "value_for": "name"
    },
    "project": {
      "type": "Project",
      "value": "My project-249",
      "id": 258,
      "value_for": "name"
    },
    "user": {
      "id": 646,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "project": "My project-249",
    "team": "My team-345"
  },
  "type": "edit_tag",
  "created_at": "2021-12-29 11:24:48 +0000",
  "subject": {
    "type": "Project",
    "id": 258
  }
}
// Delete tag
{
  "message_items": {
    "tag": {
      "type": "Tag",
      "value": "My tag-8",
      "id": 10,
      "value_for": "name"
    },
    "project": {
      "type": "Project",
      "value": "My project-251",
      "id": 260,
      "value_for": "name"
    },
    "user": {
      "id": 650,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "project": "My project-251",
    "team": "My team-347"
  },
  "type": "delete_tag",
  "created_at": "2021-12-29 11:24:49 +0000",
  "subject": {
    "type": "Project",
    "id": 260
  }
}
// Unshare inventory
{
  "message_items": {
    "repository": {
      "type": "Repository",
      "value": "My repository-136",
      "id": 138,
      "value_for": "name"
    },
    "team": {
      "type": "Team",
      "value": "My team-349",
      "id": 349,
      "value_for": "name"
    },
    "permission_level": "view-only",
    "user": {
      "id": 652,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-136",
    "team": "My team-348"
  },
  "type": "unshare_inventory",
  "created_at": "2021-12-29 11:24:49 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 138
  }
}
// Export projects
{
  "message_items": {
    "team": {
      "type": "Team",
      "value": "My team-362",
      "id": 362,
      "value_for": "name"
    },
    "projects": "My project-254, My project-255",
    "user": {
      "id": 674,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "team": "My team-362"
  },
  "type": "export_projects",
  "created_at": "2021-12-29 11:24:55 +0000",
  "subject": {
    "type": "Team",
    "id": 362
  }
}
// Undesignate user from my module
{
  "message_items": {
    "my_module": {
      "type": "MyModule",
      "value": "Task-201",
      "id": 207,
      "value_for": "name"
    },
    "user_target": {
      "type": "User",
      "value": "admin",
      "id": 681,
      "value_for": "name"
    },
    "user": {
      "id": 681,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "my_module": "Task-201",
    "experiment": "Experiment-186",
    "project": "My project-259",
    "team": "My team-366"
  },
  "type": "undesignate_user_from_my_module",
  "created_at": "2021-12-29 11:24:56 +0000",
  "subject": {
    "type": "MyModule",
    "id": 207
  }
}
// Remove user from team
{
  "message_items": {
    "team": {
      "type": "Team",
      "value": "My team-368",
      "id": 368,
      "value_for": "name"
    },
    "user_removed": {
      "type": "User",
      "value": "admin",
      "id": 686,
      "value_for": "name"
    },
    "user": {
      "id": 685,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "team": "My team-368"
  },
  "type": "remove_user_from_team",
  "created_at": "2021-12-29 11:24:56 +0000",
  "subject": {
    "type": "Team",
    "id": 368
  }
}
// User leave team
{
  "message_items": {
    "team": {
      "type": "Team",
      "value": "My team-371",
      "id": 371,
      "value_for": "name"
    },
    "user": {
      "id": 691,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "team": "My team-371"
  },
  "type": "user_leave_team",
  "created_at": "2021-12-29 11:24:57 +0000",
  "subject": {
    "type": "Team",
    "id": 371
  }
}
// Change users role on team
{
  "message_items": {
    "team": {
      "type": "Team",
      "value": "My team-373",
      "id": 373,
      "value_for": "name"
    },
    "user_changed": {
      "type": "User",
      "value": "admin",
      "id": 696,
      "value_for": "name"
    },
    "role": "Administrator",
    "user": {
      "id": 695,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "team": "My team-373"
  },
  "type": "change_users_role_on_team",
  "created_at": "2021-12-29 11:24:57 +0000",
  "subject": {
    "type": "Team",
    "id": 373
  }
}
// Edit wopi file on result
{
  "message_items": {
    "result": {
      "type": "Result",
      "value": "test result",
      "id": 24,
      "value_for": "name"
    },
    "asset_name": {
      "type": "Asset",
      "value": "test.jpg",
      "id": 12,
      "value_for": "file_name"
    },
    "action": "editing finished",
    "user": {
      "id": 707,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "result": "test result",
    "my_module": "Task-203",
    "experiment": "Experiment-188",
    "project": "My project-261",
    "team": "My team-375"
  },
  "type": "edit_wopi_file_on_result",
  "created_at": "2021-12-29 11:25:00 +0000",
  "subject": {
    "type": "Result",
    "id": 24
  }
}
// Edit wopi file on step
{
  "message_items": {
    "step": {
      "type": "Step",
      "value": "Scot Cummings",
      "id": 35,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 35,
      "value_for": "position_plus_one"
    },
    "asset_name": {
      "type": "Asset",
      "value": "test.jpg",
      "id": 14,
      "value_for": "file_name"
    },
    "action": "editing finished",
    "my_module": {
      "type": "MyModule",
      "value": "Task-205",
      "id": 211,
      "value_for": "name"
    },
    "user": {
      "id": 711,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": null,
    "my_module": "Task-205",
    "experiment": "Experiment-190",
    "project": "My project-263",
    "team": "My team-377"
  },
  "type": "edit_wopi_file_on_step",
  "created_at": "2021-12-29 11:25:01 +0000",
  "subject": {
    "type": "Protocol",
    "id": 251
  }
}
// Edit wopi file on step in repository
{
  "message_items": {
    "step": {
      "type": "Step",
      "value": "Edris DuBuque",
      "id": 37,
      "value_for": "name"
    },
    "step_position": {
      "type": "Step",
      "value": "1",
      "id": 37,
      "value_for": "position_plus_one"
    },
    "asset_name": {
      "type": "Asset",
      "value": "test.jpg",
      "id": 16,
      "value_for": "file_name"
    },
    "action": "editing finished",
    "protocol": {
      "type": "Protocol",
      "value": "Msgr. Rhoda Champlin",
      "id": 255,
      "value_for": "name"
    },
    "user": {
      "id": 716,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "Msgr. Rhoda Champlin",
    "team": "My team-379"
  },
  "type": "edit_wopi_file_on_step_in_repository",
  "created_at": "2021-12-29 11:25:02 +0000",
  "subject": {
    "type": "Protocol",
    "id": 255
  }
}
// Add comment to module
{
  "message_items": {
    "user": {
      "id": 790,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
  },
  "type": "add_comment_to_module",
  "created_at": "2021-12-29 11:25:14 +0000",
  "subject": {
    "type": "MyModule",
    "id": 19
  }
}
// Unassign user from project
{
  "message_items": {
    "project": {
      "type": "Project",
      "value": "My project-333",
      "id": 337,
      "value_for": "name"
    },
    "user_target": {
      "type": "User",
      "value": "admin",
      "id": 877,
      "value_for": "name"
    },
    "role": "Owner",
    "user": {
      "id": 877,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "project": "My project-333",
    "team": "My team-479"
  },
  "type": "unassign_user_from_project",
  "created_at": "2021-12-29 11:25:29 +0000",
  "subject": {
    "type": "Project",
    "id": 337
  }
}
// Archive protocol in repository
{
  "message_items": {
    "protocol": {
      "type": "Protocol",
      "value": "Jason Prohaska PhD",
      "id": 441,
      "value_for": "name"
    },
    "user": {
      "id": 902,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "Jason Prohaska PhD",
    "team": "My team-500"
  },
  "type": "archive_protocol_in_repository",
  "created_at": "2021-12-29 11:25:32 +0000",
  "subject": {
    "type": "Protocol",
    "id": 441
  }
}
// Restore protocol in repository
{
  "message_items": {
    "protocol": {
      "type": "Protocol",
      "value": "Rosalia Marquardt",
      "id": 443,
      "value_for": "name"
    },
    "user": {
      "id": 906,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "Rosalia Marquardt",
    "team": "My team-502"
  },
  "type": "restore_protocol_in_repository",
  "created_at": "2021-12-29 11:25:32 +0000",
  "subject": {
    "type": "Protocol",
    "id": 443
  }
}
// Move protocol in repository
{
  "message_items": {
    "protocol": {
      "type": "Protocol",
      "value": "Mrs. Roxy Kshlerin",
      "id": 445,
      "value_for": "name"
    },
    "storage": "My protocols to Team protocols",
    "user": {
      "id": 910,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "Mrs. Roxy Kshlerin",
    "team": "My team-504"
  },
  "type": "move_protocol_in_repository",
  "created_at": "2021-12-29 11:25:33 +0000",
  "subject": {
    "type": "Protocol",
    "id": 445
  }
}
// Copy protocol in repository
{
  "message_items": {
    "protocol_new": {
      "type": "Protocol",
      "value": "Katie Crooks (1)",
      "id": 451,
      "value_for": "name"
    },
    "protocol_original": {
      "type": "Protocol",
      "value": "Katie Crooks",
      "id": 450,
      "value_for": "name"
    },
    "user": {
      "id": 918,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "protocol": "Katie Crooks",
    "team": "My team-508"
  },
  "type": "copy_protocol_in_repository",
  "created_at": "2021-12-29 11:25:33 +0000",
  "subject": {
    "type": "Protocol",
    "id": 450
  }
}
// Copy inventory
{
  "message_items": {
    "repository_new": {
      "type": "Repository",
      "value": "name for copied repo",
      "id": 224,
      "value_for": "name"
    },
    "repository_original": {
      "type": "Repository",
      "value": "My repository-242",
      "id": 223,
      "value_for": "name"
    },
    "user": {
      "id": 1325,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "name for copied repo",
    "team": "My team-613"
  },
  "type": "copy_inventory",
  "created_at": "2021-12-29 11:26:08 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 224
  }
}
// Archive inventory
{
  "message_items": {
    "repository": {
      "type": "Repository",
      "value": "My repository-314",
      "id": 303,
      "value_for": "name"
    },
    "user": {
      "id": 3501,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-314",
    "team": "My team-1057"
  },
  "type": "archive_inventory",
  "created_at": "2021-12-29 11:29:53 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 303
  }
}
// Share inventory
{
  "message_items": {
    "repository": {
      "type": "Repository",
      "value": "My repository-322",
      "id": 311,
      "value_for": "name"
    },
    "team": {
      "type": "Team",
      "value": "My team-1063",
      "id": 1009,
      "value_for": "name"
    },
    "permission_level": "view-only",
    "user": {
      "id": 3529,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-322",
    "team": "My team-1062"
  },
  "type": "share_inventory",
  "created_at": "2021-12-29 11:29:55 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 311
  }
}
// Update share inventory
{
  "message_items": {
    "repository": {
      "type": "Repository",
      "value": "My repository-328",
      "id": 317,
      "value_for": "name"
    },
    "team": {
      "type": "Team",
      "value": "My team-1073",
      "id": 1019,
      "value_for": "name"
    },
    "permission_level": "view-only",
    "user": {
      "id": 3551,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-328",
    "team": "My team-1072"
  },
  "type": "update_share_inventory",
  "created_at": "2021-12-29 11:29:57 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 317
  }
}
// Share inventory with all
{
  "message_items": {
    "repository": {
      "type": "Repository",
      "value": "My repository-331",
      "id": 320,
      "value_for": "name"
    },
    "team": {
      "type": "Team",
      "value": "My team-1077",
      "id": 1023,
      "value_for": "name"
    },
    "permission_level": "edit",
    "user": {
      "id": 3562,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-331",
    "team": "My team-1077"
  },
  "type": "share_inventory_with_all",
  "created_at": "2021-12-29 11:29:58 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 320
  }
}
// Restore inventory
{
  "message_items": {
    "repository": {
      "type": "Repository",
      "value": "My repository-333",
      "id": 322,
      "value_for": "name"
    },
    "user": {
      "id": 3573,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-333",
    "team": "My team-1079"
  },
  "type": "restore_inventory",
  "created_at": "2021-12-29 11:29:58 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 322
  }
}
// Create column inventory
{
  "message_items": {
    "repository_column": {
      "type": "RepositoryColumn",
      "value": "myrepo",
      "id": 180,
      "value_for": "name"
    },
    "repository": {
      "type": "Repository",
      "value": "My repository-362",
      "id": 352,
      "value_for": "name"
    },
    "user": {
      "id": 3789,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-362",
    "team": "My team-1106"
  },
  "type": "create_column_inventory",
  "created_at": "2021-12-29 11:30:16 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 352
  }
}
// Edit column inventory
{
  "message_items": {
    "repository_column": {
      "type": "RepositoryColumn",
      "value": "my new column",
      "id": 184,
      "value_for": "name"
    },
    "repository": {
      "type": "Repository",
      "value": "My repository-370",
      "id": 360,
      "value_for": "name"
    },
    "user": {
      "id": 3817,
      "value": "admin",
      "type": "User",
      "value_for": "full_name"
    }
  },
  "breadcrumbs": {
    "repository": "My repository-370",
    "team": "My team-1117"
  },
  "type": "edit_column_inventory",
  "created_at": "2021-12-29 11:30:18 +0000",
  "subject": {
    "type": "RepositoryBase",
    "id": 360
  }
}

Errors

The API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
403 Forbidden -- You don't have permission to access it.
404 Not Found -- The specified entity could not be found.
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.

Status

Status

curl "https://<server-name>/api/status"

The above command returns JSON structured like this:

{
  "message":"Ok",
  "versions": [
    {
      "version": "v1",
      "baseUrl": "/api/v1/"
    }
  ]
}

This endpoint returns status of API and index of all running API versions.

HTTP Request

GET https://<server-name>/api/status

Health

curl "https://<server-name>/api/health"

The above command returns a plain text:

RUNNING

This endpoint returns RUNNING response along with the 200 status code if the API is running.

HTTP Request

GET https://<server-name>/api/health