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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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/json
Body
{
"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"
}
}
}
}
}
201
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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/json
Body
{
"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"
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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
204
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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/json
Body
{
"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"
}
}
}
}
}
201
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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/json
Body
{
"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"
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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
204
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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/json
Body
{
"data": [
{
"username": "joe"
}
]
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "array"
}
}
}
204
400
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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/json
Body
{
"data": [
{
"username": "joe"
}
]
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"data": {
"type": "array"
}
}
}
204
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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/json
Body
{
"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"
}
}
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
}
}
201
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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
204
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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/json
Body
{
"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"
}
}
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
}
}
201
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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
204
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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/json
Body
{
"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"
}
}
}
}
}
201
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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
204
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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/json
Body
{
"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"
}
}
}
}
}
}
}
201
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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
204
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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)
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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/json
Body
{
"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"
}
}
}
}
}
}
}
201
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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/json
Body
{
"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"
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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
204
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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)
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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
204
401
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}
404
Headers
Content-Type: application/json
Body
{
"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"
}
}
}
}
}