Team O'clock API
This document descibes the Team O’clock REST APIv2.
The base URL of the API is:
https://www.teamoclock.com/api/v2/
Authentication
Authentication is performed using HTTP Basic Authentication, with the following credentials:
-
Username: Organization slug
-
Password: Secret API key
Credentials can be found under the Organization settings page.
Curl example:
curl --user 'jenious-inc:skey-abcd'
https://www.teamoclock.com/api/v2/teams
Browser example:
https://jenious-inc:skey-abcd@www.teamoclock.com/api/v2/teams
Basic usage
The REST API supports the GET, POST, PATCH and DELETE operations for getting, creating, updating and deleting resources.
The request and response payloads are in JSON format.
Example:
curl --user 'jenious-inc:skey-abcd'
-X POST
-d '{"name": "My team", "slug": "my-team"}'
-H "Content-Type: application/json"
https://www.teamoclock.com/api/v2/teams
Members collection ¶
Members related resources.
Members ¶
List all membersGET/members
Returns a list of organization members.
Example URI
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"username": "joe",
"first_name": "Joe",
"last_name": "Doe",
"avatar": "me.jpg",
"email": "joedoe@acme.inc",
"role": "administrator",
"links": {
"self": "https://www.teamoclock.com/api/v2/members/joe"
}
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "array"
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Create a memberPOST/members
Creates a new member.
Example URI
Headers
Content-Type: application/jsonBody
{
"data": {
"username": "joe",
"first_name": "Joe",
"last_name": "Doe",
"avatar": "me.jpg",
"email": "joedoe@acme.inc",
"role": "administrator"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"avatar": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"administrator",
"manager",
"member"
],
"default": "member"
}
}
}
}
}201Headers
Content-Type: application/jsonBody
{
"data": {
"username": "joe",
"first_name": "Joe",
"last_name": "Doe",
"avatar": "me.jpg",
"email": "joedoe@acme.inc",
"role": "administrator",
"links": {
"self": "https://www.teamoclock.com/api/v2/members/joe"
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"avatar": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"administrator",
"manager",
"member"
],
"default": "member"
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string"
}
}
}
}
}
}
}400Headers
Content-Type: application/jsonBody
{
"error": {
"status": 400,
"code": "bad request",
"title": "Invalid request",
"detail": "Enter a valid json body"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Member ¶
Get a memberGET/members/{username}
Gets member details by username.
Example URI
- username
string(required) Example: joeMember username
200Headers
Content-Type: application/jsonBody
{
"data": {
"username": "joe",
"first_name": "Joe",
"last_name": "Doe",
"avatar": "me.jpg",
"email": "joedoe@acme.inc",
"role": "administrator"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"avatar": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"administrator",
"manager",
"member"
],
"default": "member"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Update a memberPATCH/members/{username}
Modify a member by username.
Example URI
- username
string(required) Example: joeMember username
Headers
Content-Type: application/jsonBody
{
"data": {
"username": "joe",
"first_name": "Joe",
"last_name": "Doe",
"avatar": "me.jpg",
"email": "joedoe@acme.inc",
"role": "administrator"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"avatar": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"administrator",
"manager",
"member"
],
"default": "member"
}
}
}
}
}200Headers
Content-Type: application/jsonBody
{
"data": {
"username": "joe",
"first_name": "Joe",
"last_name": "Doe",
"avatar": "me.jpg",
"email": "joedoe@acme.inc",
"role": "administrator"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"avatar": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"administrator",
"manager",
"member"
],
"default": "member"
}
}
}
}
}400Headers
Content-Type: application/jsonBody
{
"error": {
"status": 400,
"code": "bad request",
"title": "Invalid request",
"detail": "Enter a valid json body"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Delete a memberDELETE/members/{username}
Deletes a member by username.
Example URI
- username
string(required) Example: joeMember username
204401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Teams collection ¶
Teams related resources.
Teams ¶
List all teamsGET/teams
Returns a list of organization teams.
Example URI
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"name": "Acme",
"slug": "acme",
"video_url": "https://jitsi.org/acme",
"mood_enabled": true,
"links": {
"self": "https://www.teamoclock.com/api/v2/teams/acme"
}
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "array"
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Create a teamPOST/teams
Creates a new team.
Example URI
Headers
Content-Type: application/jsonBody
{
"data": {
"name": "Acme",
"slug": "acme",
"video_url": "https://jitsi.org/acme",
"mood_enabled": true
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"video_url": {
"type": "string"
},
"mood_enabled": {
"type": "boolean"
}
}
}
}
}201Headers
Content-Type: application/jsonBody
{
"data": {
"name": "Acme",
"slug": "acme",
"video_url": "https://jitsi.org/acme",
"mood_enabled": true,
"links": {
"self": "https://www.teamoclock.com/api/v2/teams/acme"
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"video_url": {
"type": "string"
},
"mood_enabled": {
"type": "boolean"
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string"
}
}
}
}
}
}
}400Headers
Content-Type: application/jsonBody
{
"error": {
"status": 400,
"code": "bad request",
"title": "Invalid request",
"detail": "Enter a valid json body"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Team ¶
Get a teamGET/teams/{slug}
Gets teams details by slug.
Example URI
- slug
string(required) Example: acmeTeam slug
200Headers
Content-Type: application/jsonBody
{
"data": {
"name": "Acme",
"slug": "acme",
"video_url": "https://jitsi.org/acme",
"mood_enabled": true
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"video_url": {
"type": "string"
},
"mood_enabled": {
"type": "boolean"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Update a teamPATCH/teams/{slug}
Modify a team by slug.
Example URI
- slug
string(required) Example: acmeTeam slug
Headers
Content-Type: application/jsonBody
{
"data": {
"name": "Acme",
"slug": "acme",
"video_url": "https://jitsi.org/acme",
"mood_enabled": true
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"video_url": {
"type": "string"
},
"mood_enabled": {
"type": "boolean"
}
}
}
}
}200Headers
Content-Type: application/jsonBody
{
"data": {
"name": "Acme",
"slug": "acme",
"video_url": "https://jitsi.org/acme",
"mood_enabled": true
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"video_url": {
"type": "string"
},
"mood_enabled": {
"type": "boolean"
}
}
}
}
}400Headers
Content-Type: application/jsonBody
{
"error": {
"status": 400,
"code": "bad request",
"title": "Invalid request",
"detail": "Enter a valid json body"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Delete a teamDELETE/teams/{slug}
Deletes a team by slug.
Example URI
- slug
string(required) Example: acmeTeam slug
204401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Team members ¶
Get team membersGET/teams/{slug}/members
Gets team members by team slug.
Example URI
- slug
string(required) Example: acmeTeam slug
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"username": "joe",
"first_name": "Joe",
"last_name": "Doe",
"avatar": "me.jpg",
"email": "joedoe@acme.inc",
"role": "administrator",
"links": {
"self": "https://www.teamoclock.com/api/v2/members/joe"
}
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "array"
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Add team membersPOST/teams/{slug}/members
Add members to team by team slug.
Example URI
- slug
string(required) Example: acmeTeam slug
Headers
Content-Type: application/jsonBody
{
"data": [
{
"username": "joe"
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "array"
}
}
}204400Headers
Content-Type: application/jsonBody
{
"error": {
"status": 400,
"code": "bad request",
"title": "Invalid request",
"detail": "Enter a valid json body"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Remove team membersDELETE/teams/{slug}/members
Remove members from team.
Example URI
- slug
string(required) Example: acmeTeam slug
Headers
Content-Type: application/jsonBody
{
"data": [
{
"username": "joe"
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "array"
}
}
}204401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Standup collection ¶
Standup related resources.
Standup meetings ¶
List active standupsGET/standup?filter[team]={team_slug}
Returns all active team standups.
Each team can have only one active standup.
Example URI
- team_slug
string(optional) Example: acmeTeam slug
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": "acme",
"name": "Acme standup",
"date": "2020-12-10T14:09:39.971Z",
"url": "https://www.teamoclock.com/jenious/standup/acme",
"links": {
"self": "https://www.teamoclock.com/api/v2/standup/acme"
},
"team": {
"name": "Acme",
"slug": "acme"
}
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "array"
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Standup creation ¶
Create a standupPOST/standup
Creates a new team standup.
There can be only one active standup per team. If a standup already exists the response status code is 200. If a new standup was created, the response code is 201.
Example URI
Headers
Content-Type: application/jsonBody
{
"data": {
"team": {
"slug": "acme"
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"team": {
"type": "object",
"properties": {
"slug": {
"type": "string"
}
}
}
}
}
}
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": "acme",
"name": "Acme standup",
"date": "2020-12-10T14:09:39.971Z",
"url": "https://www.teamoclock.com/jenious/standup/acme",
"links": {
"self": "https://www.teamoclock.com/api/v2/standup/acme"
},
"team": {
"name": "Acme",
"slug": "acme"
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"date": {
"type": "string"
},
"url": {
"type": "string"
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string"
}
}
},
"team": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
}
}
}
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": "acme",
"name": "Acme standup",
"date": "2020-12-10T14:09:39.971Z",
"url": "https://www.teamoclock.com/jenious/standup/acme",
"links": {
"self": "https://www.teamoclock.com/api/v2/standup/acme"
},
"team": {
"name": "Acme",
"slug": "acme"
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"date": {
"type": "string"
},
"url": {
"type": "string"
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string"
}
}
},
"team": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
}
}
}
}400Headers
Content-Type: application/jsonBody
{
"error": {
"status": 400,
"code": "bad request",
"title": "Invalid request",
"detail": "Enter a valid json body"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Standup ¶
Get a standupGET/standup/{id}
Gets team standup details by id.
Example URI
- id
string(required) Example: acmeStandup id
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": "acme",
"name": "Acme standup",
"date": "2020-12-10T14:09:39.971Z",
"url": "https://www.teamoclock.com/jenious/standup/acme",
"team": {
"name": "Acme",
"slug": "acme"
},
"state": {
"questions": {
"q1": "What did you do yesterday",
"q2": "What will you do todat",
"q3": "Do you have any impediments"
},
"roundup_notes": [
{
"text": "A note",
"id": 23423
}
],
"member_notes": [
{
"username": "joe",
"questions": {
"q1": "Worked on marketing site",
"q2": "Word on signup page",
"q3": "Designer is on vacations",
"q_ts": 3435232523
}
}
]
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"date": {
"type": "string"
},
"url": {
"type": "string"
},
"team": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
},
"state": {
"type": "object",
"properties": {
"questions": {
"type": "object",
"properties": {
"q1": {
"type": "string"
},
"q2": {
"type": "string"
},
"q3": {
"type": "string"
}
}
},
"roundup_notes": {
"type": "array"
},
"member_notes": {
"type": "array"
}
}
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Delete a standupDELETE/standup/{id}
Deletes a team standup by id.
Example URI
- id
string(required) Example: acmeStandup id
204401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Planning poker collection ¶
Planning poker related resources.
Planning poker meetings ¶
List active planning pokersGET/planpoker?filter[team]={team_slug}
Returns all active team planning pokers meetings.
Each team can have only one active planning poker meeting.
Example URI
- team_slug
string(optional) Example: acmeTeam slug
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": "acme",
"name": "Acme planning poker",
"date": "2020-12-10T14:09:39.971Z",
"url": "https://www.teamoclock.com/jenious/planpoker/acme",
"links": {
"self": "https://www.teamoclock.com/api/v2/planpoker/acme"
},
"team": {
"name": "Acme",
"slug": "acme"
}
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "array"
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Planning poker creation ¶
Create a planning pokerPOST/planpoker
Creates a new team planning poker meeting.
There can be only one active planning poker per team. If a meeting already exists the response status code is 200. If a new planning poker session was created, the response code is 201.
Each session should have a facilitator. If the facilitator request payload is omitted, then a random team member is assigned by default.
Example URI
Headers
Content-Type: application/jsonBody
{
"data": {
"team": {
"slug": "acme"
},
"facilitator": {
"username": "joe"
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"team": {
"type": "object",
"properties": {
"slug": {
"type": "string"
}
}
},
"facilitator": {
"type": "object",
"properties": {
"username": {
"type": "string"
}
}
}
}
}
}
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": "acme",
"name": "Acme planning poker",
"date": "2020-12-10T14:09:39.971Z",
"url": "https://www.teamoclock.com/jenious/planpoker/acme",
"links": {
"self": "https://www.teamoclock.com/api/v2/planpoker/acme"
},
"team": {
"name": "Acme",
"slug": "acme"
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"date": {
"type": "string"
},
"url": {
"type": "string"
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string"
}
}
},
"team": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
}
}
}
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": "acme",
"name": "Acme planning poker",
"date": "2020-12-10T14:09:39.971Z",
"url": "https://www.teamoclock.com/jenious/planpoker/acme",
"links": {
"self": "https://www.teamoclock.com/api/v2/planpoker/acme"
},
"team": {
"name": "Acme",
"slug": "acme"
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"date": {
"type": "string"
},
"url": {
"type": "string"
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string"
}
}
},
"team": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
}
}
}
}400Headers
Content-Type: application/jsonBody
{
"error": {
"status": 400,
"code": "bad request",
"title": "Invalid request",
"detail": "Enter a valid json body"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Planning poker ¶
Get a planning pokerGET/planpoker/{id}
Gets team planning poker meeting details by id.
Example URI
- id
string(required) Example: acmePlanning poker id
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": "acme",
"name": "Acme planning poker",
"date": "2020-12-10T14:09:39.971Z",
"url": "https://www.teamoclock.com/jenious/planpoker/acme",
"team": {
"name": "Acme",
"slug": "acme"
},
"state": {
"value_mapping": {},
"facilitator": {
"username": "joe"
},
"tasks": [
{
"id": "abcd",
"status": "active",
"text": "As a user I would like...",
"links": {
"jira": "https://acme.atlassian.net/browse/ACME",
"self": "https://www.teamoclock.com/jenious/planpoker/acme/tasks/abcd"
},
"avg_vote": 5,
"voters": [
{
"username": "joe",
"vote": 5
}
]
}
]
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"date": {
"type": "string"
},
"url": {
"type": "string"
},
"team": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
},
"state": {
"type": "object",
"properties": {
"value_mapping": {
"type": "object",
"properties": {}
},
"facilitator": {
"type": "object",
"properties": {
"username": {
"type": "string"
}
}
},
"tasks": {
"type": "array"
}
}
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Delete a planning pokerDELETE/planpoker/{id}
Deletes a team planning poker meeting by id.
Example URI
- id
string(required) Example: acmePlanning poker id
204401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Planning poker tasks ¶
List planning poker tasksGET/planpoker/{id}/tasks
Returns all planning poker meeting tasks.
Example URI
- id
string(required) Example: acmePlanning poker id
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": "abcd",
"status": "active",
"text": "As a user I would like...",
"links": {
"jira": "https://acme.atlassian.net/browse/ACME",
"self": "https://www.teamoclock.com/jenious/planpoker/acme/tasks/abcd"
},
"avg_vote": 5,
"voters": [
{
"username": "joe",
"vote": 5
}
]
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "array"
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Planning poker task creation ¶
Create a planning poker taskPOST/planpoker/{id}/tasks
Creates a new planning poker task for estimation.
Example URI
- id
string(required) Example: acmePlanning poker id
Headers
Content-Type: application/jsonBody
{
"data": {
"text": "A story to estimate"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"text": {
"type": "string"
}
}
}
}
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": "abcd",
"status": "active",
"text": "As a user I would like...",
"links": {
"jira": "https://acme.atlassian.net/browse/ACME",
"self": "https://www.teamoclock.com/jenious/planpoker/acme/tasks/abcd"
},
"avg_vote": 5,
"voters": [
{
"username": "joe",
"vote": 5
}
]
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"active",
"completed"
]
},
"text": {
"type": "string"
},
"links": {
"type": "object",
"properties": {
"jira": {
"type": "string",
"description": "18 (string)"
},
"self": {
"type": "string"
}
}
},
"avg_vote": {
"type": "number"
},
"voters": {
"type": "array"
}
}
}
}
}400Headers
Content-Type: application/jsonBody
{
"error": {
"status": 400,
"code": "bad request",
"title": "Invalid request",
"detail": "Enter a valid json body"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Planning poker task ¶
Get a planning poker taskGET/planpoker/{id}/tasks/{task_id}
Gets planning poker task details by id.
Example URI
- id
string(required) Example: acmePlanning poker id
- task_id
string(required) Example: abcdTask id
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": "abcd",
"status": "active",
"text": "As a user I would like...",
"links": {
"jira": "https://acme.atlassian.net/browse/ACME"
},
"avg_vote": 5,
"voters": [
{
"username": "joe",
"vote": 5
}
]
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"active",
"completed"
]
},
"text": {
"type": "string"
},
"links": {
"type": "object",
"properties": {
"jira": {
"type": "string",
"description": "18 (string)"
}
}
},
"avg_vote": {
"type": "number"
},
"voters": {
"type": "array"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Delete a planning poker taskDELETE/planpoker/{id}/tasks/{task_id}
Deletes a planning poker task by id.
Example URI
- id
string(required) Example: acmePlanning poker id
- task_id
string(required) Example: abcdTask id
204401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Retrospective collection ¶
Retrospective related resources.
Retrospective meetings ¶
List active retrospectivesGET/retro?filter[team]={team_slug}
Returns all active retrospectives.
Example URI
- team_slug
string(optional) Example: acmeTeam slug
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": "r204c36ysi7z7x",
"name": "Acme retrospective",
"date": "2020-12-10T14:09:39.971Z",
"url": "https://www.teamoclock.com/jenious/retro/r204c36ysi7z7x",
"links": {
"self": "https://www.teamoclock.com/api/v2/retro/r204c36ysi7z7x"
},
"team": {
"name": "Acme",
"slug": "acme"
}
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "array"
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Retrospective creation ¶
Create a retrospectivePOST/retro
Creates a new retrospective meeting.
Each session should have a facilitator. If the facilitator request payload is omitted, then a random team member is assigned by default.
Example URI
Headers
Content-Type: application/jsonBody
{
"data": {
"team": {
"slug": "acme"
},
"facilitator": {
"username": "joe"
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"team": {
"type": "object",
"properties": {
"slug": {
"type": "string"
}
}
},
"facilitator": {
"type": "object",
"properties": {
"username": {
"type": "string"
}
}
}
}
}
}
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": "r204c36ysi7z7x",
"name": "Acme retrospective",
"date": "2020-12-10T14:09:39.971Z",
"url": "https://www.teamoclock.com/jenious/retro/r204c36ysi7z7x",
"links": {
"self": "https://www.teamoclock.com/api/v2/retro/r204c36ysi7z7x"
},
"team": {
"name": "Acme",
"slug": "acme"
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"date": {
"type": "string"
},
"url": {
"type": "string"
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string"
}
}
},
"team": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
}
}
}
}400Headers
Content-Type: application/jsonBody
{
"error": {
"status": 400,
"code": "bad request",
"title": "Invalid request",
"detail": "Enter a valid json body"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Retrospective ¶
Get a retrospectiveGET/retro/{id}
Gets retrospective meeting details by id.
Example URI
- id
string(required) Example: acmeRetrospective id
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": "r204c36ysi7z7x",
"name": "Acme retrospective",
"date": "2020-12-10T14:09:39.971Z",
"url": "https://www.teamoclock.com/jenious/retro/r204c36ysi7z7x",
"team": {
"name": "Acme",
"slug": "acme"
},
"state": {
"stage": "gather",
"max_votes": 5,
"public_voting": false,
"anonymous_notes": false,
"hide_im_actionitems": false,
"facilitator": {
"username": "joe"
},
"columns": [
{
"id": "c_id",
"name": "Went well",
"description": "What went well"
}
],
"notes": [
{
"id": "abcd",
"text": "A note",
"edits": [],
"group": "",
"votes": 4,
"author": "joe",
"column": "c_id",
"voters": []
}
],
"action_items": [
{
"id": "ai_id",
"text": "Rewrite everything"
}
]
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"date": {
"type": "string"
},
"url": {
"type": "string"
},
"team": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
},
"state": {
"type": "object",
"properties": {
"stage": {
"type": "string",
"enum": [
"gather",
"groom",
"vote",
"discuss",
"complete"
]
},
"max_votes": {
"type": "number"
},
"public_voting": {
"type": "boolean"
},
"anonymous_notes": {
"type": "boolean"
},
"hide_im_actionitems": {
"type": "boolean"
},
"facilitator": {
"type": "object",
"properties": {
"username": {
"type": "string"
}
}
},
"columns": {
"type": "array"
},
"notes": {
"type": "array"
},
"action_items": {
"type": "array"
}
}
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Delete a retrospectiveDELETE/retro/{id}
Deletes a retrospective meeting by id.
Example URI
- id
string(required) Example: acmeRetrospective id
204401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Action Items collection ¶
Action item related resources.
ActionItems ¶
List all action itemsGET/actionitems?filter[team]={team_slug}&filter[status]={status}
Returns a list of action items from recent to older.
Response is paginated with a fixed 100 items per page for best performance.
Next page is available as a URL in the links section of the response payload.
Example URI
- team_slug
string(optional) Example: acmeTeam slug
- status
string(optional) Example: openResolution status (open, resolved)
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": "A242",
"text": "A new action item",
"resolved": false,
"links": {
"jira": "https://acme.atlassian.net/browse/ACME"
},
"team": {
"name": "Acme",
"slug": "acme"
}
}
],
"links": {
"self": "https://www.teamoclock.com/api/v2/actionitems",
"next": "https://www.teamoclock.com/api/v2/actionitems?cursor=121"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "array"
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string"
},
"next": {
"type": "string"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Create an action itemPOST/actionitems?filter[team]=&filter[status]=
Creates a new action item.
Example URI
Headers
Content-Type: application/jsonBody
{
"data": {
"text": "A new action item",
"resolved": false,
"team": {
"slug": "acme"
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"resolved": {
"type": "boolean"
},
"team": {
"type": "object",
"properties": {
"slug": {
"type": "string"
}
}
}
}
}
}
}201Headers
Content-Type: application/jsonBody
{
"data": {
"id": "A242",
"text": "A new action item",
"resolved": false,
"links": {
"jira": "https://acme.atlassian.net/browse/ACME"
},
"team": {
"name": "Acme",
"slug": "acme"
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"resolved": {
"type": "boolean"
},
"links": {
"type": "object",
"properties": {
"jira": {
"type": "string",
"description": "18 (string)"
}
}
},
"team": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
}
}
}
}400Headers
Content-Type: application/jsonBody
{
"error": {
"status": 400,
"code": "bad request",
"title": "Invalid request",
"detail": "Enter a valid json body"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Action item ¶
Get an action itemGET/actionitems/{id}
Gets action item details by id.
Example URI
- id
string(required) Example: A56Action item id
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": "A242",
"text": "A new action item",
"resolved": false,
"links": {
"jira": "https://acme.atlassian.net/browse/ACME"
},
"team": {
"name": "Acme",
"slug": "acme"
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"resolved": {
"type": "boolean"
},
"links": {
"type": "object",
"properties": {
"jira": {
"type": "string",
"description": "18 (string)"
}
}
},
"team": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Update an action itemPATCH/actionitems/{id}
Modify an action item by id.
Example URI
- id
string(required) Example: A56Action item id
Headers
Content-Type: application/jsonBody
{
"data": {
"text": "A new action item",
"resolved": false
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"resolved": {
"type": "boolean"
}
}
}
}
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": "A242",
"text": "A new action item",
"resolved": false,
"links": {
"jira": "https://acme.atlassian.net/browse/ACME"
},
"team": {
"name": "Acme",
"slug": "acme"
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"resolved": {
"type": "boolean"
},
"links": {
"type": "object",
"properties": {
"jira": {
"type": "string",
"description": "18 (string)"
}
}
},
"team": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
}
}
}
}400Headers
Content-Type: application/jsonBody
{
"error": {
"status": 400,
"code": "bad request",
"title": "Invalid request",
"detail": "Enter a valid json body"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Delete an action itemDELETE/actionitems/{id}
Deletes an action item by id.
Example URI
- id
string(required) Example: A56Action item id
204401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Timeline collection ¶
Timeline related resources.
Timeline records ¶
List timeline recordsGET/timeline?filter[since]={since}&filter[type]={type}
Returns a list of timeline records from recent to older.
Response is paginated with a fixed 100 items per page for best performance.
Next page is available as a URL in the links section of the response payload.
Example URI
- since
datetime(optional) Default: UTC Now Example: 2021-01-20Starting datetime (UTC format)
- type
string(optional) Example: retroRecord type (standup, planpoker, retro)
200Headers
Content-Type: application/jsonBody
{
"data": [
{
"id": "R23",
"type": "retro",
"date": "2020-12-10T14:09:39.971Z",
"links": {
"self": "https://www.teamoclock.com/api/v2/timeline/R23"
},
"team": {
"name": "Acme",
"slug": "acme"
}
}
],
"links": {
"self": "https://www.teamoclock.com/api/v2/timeline",
"next": "https://www.teamoclock.com/api/v2/timeline?cursor=121"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "array"
},
"links": {
"type": "object",
"properties": {
"self": {
"type": "string"
},
"next": {
"type": "string"
}
}
}
}
}400Headers
Content-Type: application/jsonBody
{
"error": {
"status": 400,
"code": "bad request",
"title": "Invalid request",
"detail": "Enter a valid json body"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Timeline record ¶
Get a timeline recordGET/timeline/{id}
Get a timeline record details by id.
Example URI
- id
string(required) Example: R34Timeline id
200Headers
Content-Type: application/jsonBody
{
"data": {
"id": "S33",
"type": "standup",
"date": "2020-12-10T14:09:39.971Z",
"async": true,
"questions": {
"q1": "What did you do yesterday",
"q2": "What will you do today",
"q3": "Do you have any impediments"
},
"origin": "window",
"team": {
"slug": "acme",
"name": "Acme"
},
"sync_notes": [
"Hello, world!"
],
"async_notes": [
{
"username": "joe",
"text": "A note",
"question": "q1"
}
]
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"date": {
"type": "string"
},
"async": {
"type": "boolean"
},
"questions": {
"type": "object",
"properties": {
"q1": {
"type": "string"
},
"q2": {
"type": "string"
},
"q3": {
"type": "string"
}
}
},
"origin": {
"type": "string",
"enum": [
"window",
"slack",
"msteams"
]
},
"team": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"sync_notes": {
"type": "array"
},
"async_notes": {
"type": "array"
}
}
}
}
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": "R33",
"type": "retro",
"date": "2020-12-10T14:09:39.971Z",
"name": "Acme retrospective",
"columns": [
{
"id": "c_id",
"name": "Went well",
"description": "What went well"
}
],
"team": {
"slug": "acme",
"name": "Acme"
},
"notes": [
{
"text": "A note",
"votes": 2,
"column": "c_id",
}
],
"action_items": [
{
"id": "A242",
"text": "A new action item",
"resolved": false,
"links": {
"jira": "https://acme.atlassian.net/browse/ACME"
}
}
]
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"date": {
"type": "string"
},
"name": {
"type": "string"
},
"columns": {
"type": "array"
},
"team": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"notes": {
"type": "array"
},
"action_items": {
"type": "array"
}
}
}
}
}200Headers
Content-Type: application/jsonBody
{
"data": {
"id": "P33",
"type": "planpoker",
"date": "2020-12-10T14:09:39.971Z",
"task": "Create a landing page",
"avg_vote": "8",
"team": {
"slug": "acme",
"name": "Acme"
},
"links": {
"jira": "https://acme.atlassian.net/browse/ACME"
},
"votes": [
{
"vote": "5",
"username": "joe"
}
]
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"date": {
"type": "string"
},
"task": {
"type": "string"
},
"avg_vote": {
"type": "string"
},
"team": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"links": {
"type": "object",
"properties": {
"jira": {
"type": "string",
"description": "18 (string)"
}
}
},
"votes": {
"type": "array"
}
}
}
}
}401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}Delete a timeline recordDELETE/timeline/{id}
Deletes a timeline record by id.
Example URI
- id
string(required) Example: R34Timeline id
204401Headers
Content-Type: application/jsonBody
{
"error": {
"status": 401,
"code": "unauthorized",
"title": "Unauthorized",
"detail": "Please verify your credentials"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}404Headers
Content-Type: application/jsonBody
{
"error": {
"status": 404,
"code": "not found",
"title": "Object not found",
"detail": "Object not found. It may have been deleted or not been created yet"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"status": {
"type": "number"
},
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
}
}